C专家编程--读书笔记八 为什么程序员无法分清万圣节和圣诞节

第八章
 
一、知识点
1、图标或者图形,是一种小型的位模式映射于屏幕产生的图像。一个位代表图像上的一个像素。如果一个位被设置,那么它所代表的像素就是“亮”的。(P175)
 
2、在C语言中,字符常量的类型是int,而在C++中它们的类型是char。例如:
printf("%d", sizeof 'A'); 
这行代码的输出结果是4,即int的长度;而如果在.cpp文件中输入这段代码,则结果为1,即char的长度。(P177)
 

3、值得警惕的地方是参数也会被提升。在函数的参数传递时会发生隐式类型转换。在K&R C中,由于函数的参数也是表达式,所以也会发生类型提升。在ANSI C中,如果使用了适当的函数原型,类型提升便不会发生,否则也会发生。在被调用函数的内部,提升后的参数被裁剪为原先声明的大小。(P179)
 
4、关于逐字符输入:
 

5、复杂的类型转换可以按下面的3个步骤编写:(P193)
(1)、一个对象的声明,它的类型就是想要转换的结果类型;
(2)、删去标识符(以及任何如extern之类的存储限定符),并把剩余的内容放在一对括号里;
(3)、把第2步产生的内容放在需要进行类型转换的对象的左边。
 
二、问题
1、C语言中的类型转换?
对于该问题的一个具体应用:
比如:
int a=0, b=9; 则sizeof('a' + 'b')值为多少?
答案:经检验值为4,而sizeof('a')的值为1。解释是:因为ANSI/ISO C规定:两个比int窄的类型进行加减乘除或者“位与”、“位或”运算之前,会分别自动提升为int型,且运算结果为int型。也就是说运算时char型数据必须转换成int型
 
2、在你的系统中编写一个中断驱动的输入程序?(P188)
posted on 2012-04-30 23:24  谷堆旁边  阅读(396)  评论(0编辑  收藏  举报