C/C++面试题1
来源:互联网 发布:乐乎lofter军人大雕 编辑:程序博客网 时间:2024/04/30 08:46
#define G_MININT8 ((gint8) 0x80)//值得注意,最小的8位数
#define G_MAXINT8 ((gint8) 0x7f)
#define G_MAXUINT8 ((guint8) 0xff)
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)?
#define
我在这想看到几件事情:
1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
4). 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。
2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个?
#define
这个测试是为下面的目的而设的:
1). 标识#define在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2). 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。
3). 懂得在宏中小心地把参数用括号括起来
4). 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?
least = MIN(*p++, b);
3. 预处理器标识#error的目的是什么?
提示预处理中的错误信息,如:
4.在编写中断服务子程序时要注意:
(1)不能有参数传递
(2)不能有返回值
__interrupt double compute_area (double radius)
{
double area = PI * radius * radius;
printf(" Area = %f", area);
return area;
}
这个就是典型的错误,此外这个程序中printf()函数还有重入的问题,这也是一个错误
5.防止头文件被重复引用的方法:
#ifndef
#define
- c面试题1
- C/C++面试题1
- 嵌入式C面试题1
- C语言面试题1
- C#_面试题1
- C/C++面试题1
- C/C++面试题-1
- obj-c面试题1
- c语言面试题1
- 嵌入式 C 面试题1
- C/C++面试题-1
- c语言面试题1
- C语言面试题1
- C语言面试题1
- C-C++面试题1
- c语言面试题1
- c/c++面试题1
- c面试题(1)
- 地球,我将成为孤儿
- C、C++内存区的区别(栈、堆等)
- 解决导入.vdi文件时报“uuid is exists”错误
- 一日一结2012.5.6
- 起死
- C/C++面试题1
- 江城春雨
- 哭着,在梦里
- 概率题目
- 中国为什么需要民主制度
- Cglib简单学习(2)
- 用FASTREPORT实现WEB应用中自定义报表
- 太阳,是我的家
- K(CD1684)