C陷阱与缺陷笔记
时间:2025-03-11
时间:2025-03-11
笔记
术语“符号”(token)指的是程序的一个基本组成单元,其作用相当于一个句子中的单
词。
在C语言中,符号之间的空白(包括空格符,制表符或换行符)将被忽略。 赋值运算符的优先级要低于任何一个比较运算符。
C语言中只有一维数组?(说的是本质上);
对于数组结尾之后的下一个元素,取它的地址是合法的。而试图实际读取这个元素的值,
这种做法的结果是未定义。
连接器的输入是一组目标模块和库文件,连接器的输出是一个载入模块。连接器读入目
标模块和库文件,同时生成载入模块。
Toupper() 将所有的小写字母转换为相应的大写字母。
#define T1 struct foo*:
1T1 a,b; ○a被定义为一个指向结构的指针,而b却被定义为一个结构(而不是指针) NULL指针并不指向任何对象,因此,除非是用于赋值或比较运算,出于其他任何目的
的使用NULL指针都是非法的。
在调试时强制不允许对输出进行缓冲,要做到这一点可调用setbuf(stdout, (char*)0); 格式字符串中的每个格式项都由一个%符号打头,后面接一个称为格式码的字符,格式
码指明了格式转换的类型,格式码不一定要紧跟在%符号之后,它们中间可能夹一些可选取字符。
1%d以10进制形式打印一个整数; ○
2%u打印无符号10进制整数; ○
3%o、%x和%X格式项用于打印8进制或16进制的整数; ○
4%c用于打印单个字符; ○
5%s用于打印字符串;如果与%s对应的字符并不是以空字符(’\0’)作为结束标志,○
那么printf函数将不断打印出其后的字符直到内存中某处打到一个空字符。
6%g(去掉该数值尾缀的零或四舍五入,○保留六位有效数字)、%f和%e这3个格式项用于打印浮点值。
7精度修饰符(还有几种是宽度修饰符和标志符详细请参考C陷阱与缺陷P155)包括一○
个小数点,和小数点后面的一串数字如:%.8d;
对于整数格式项%d,%o,%x和%u,精度修饰符指定了打印数字的最少位数。如果
打印的数值并不需要这么多位数的数字则在前面补上0;如:
Printf(“%.2d/%.2d/%.4d\n”, 7,14,1789);
将打印出:07/14/1789
对于%e,%f格式项,精度修饰指定了小数点后应该出现的数字位数。
修饰符:出现在%和后面的格式码之间。
宽度修饰符:出现在%和后面的格式码之间,其作用是指定它所修饰的格式项所应打印
的字符数。
精度修饰符指定的最多能输出几个字符。如:.10