C语言错题集
2018-10-02 c语言错题集
main 是一个合法的标识符吗?
答:是,main 是函数的标识符名称。
如果有符号常量定义如下:
1 #define f(n) 2*n
那么请问代码中 f(3+2) 的值等于多少?
答:f(3+2) == 2*3+2 == 8,注意,宏定义是在程序编译时先进行的预处理,做法是直接将标识符替换为常量,并不会进行相关运算。因此,直接将 f(3+2) 替换为 2*3+2。
我们说 printf() 是一个用于格式化打印的函数,那 sizeof() 是一个函数吗?
答:不是,虽然它跟 printf() 一样后边有个小括号,并在小括号中填入“参数”,但 sizeof 其实是一个特殊的操作符。注意,它是一个运算符,一个运算符,一个运算符!(重三遍)
sizeof 运算符
sizeof 用于获得数据类型或表达式的长度,它有三种使用方式:
- sizeof(type_name); //sizeof(类型);
- sizeof(object); //sizeof(对象);
- sizeof object; //sizeof 对象;
c 标准只规定一个数据类型的具体尺寸(其他数据类型都是规定相对范围),你知道是哪个数据类型如此特殊吗?
答:char 字符型,c 标准只规定 char 类型占一个字节的空间,其他数据类型均指定相对范围,具体大小依赖于实现环境。下边摘录自 c99 原文:
3.7.1
character
single-byte character
<c> bit representation that fits in a byte
你知道为何调试程序的时候调试器总会将内存中的二进制数转换为十六进制?
——因为恰好 8 位二进制数(一个字节,1byte == 8bit)用 2 位十六进制数即可表示,非常节约空间。
上图是十六进制,下图是二进制:
鉴于二进制和十六进制之间有着密不可分的暧昧关系,你只需要记住下边这个表格即可:
按以下要求编写程序。nfquxd0z
jida4,-3y?*r>9f)`z5'm=j_+nf1(
- 要求用户输入一个十进制整数(按下回车完成输入)
- 计算出该整数值的五次方
- 打印计算结果
gcc编译时要加参数-lm
观察 ascii 字符表,请问大写字母和小写字母的 ascii 值有什么特点?
答:大写字母对应的 ascii 值第 6 位置 1 则变成对应的小写字母,反之亦然。例如:大写字母 a 的二进制 ascii 值是 0100 0001,对应的小写字母 a 的二进制则是 0110 0001。此规则适用于所有大小写字母的相互转换(在学到位操作符的时候,很有用(⊙o⊙)哦)。
在 linux 系统上如何快速查看 ascii 字符表?
答:输入命令 man ascii,一目了然。按下字母 'q' 可退出。
问题1:
写一个华氏度到摄氏度的转换程序,用户输入华氏度,程序计算并输出对应的摄氏度。
结果为:
请输入华氏度:45
45华氏度转化为摄氏度是:7.00
为什么摄氏度不是7.22?? 有哪位热心人士解答一下。