C整型升级和寻常算术转换实例(4)
来源:优易学  2011-1-18 12:53:33   【优易学:中国教育考试门户网】   资料下载   IT书店
  整型提升就是char、short int和位段类型(无论signed或unsigned)以及枚举类型将被提升为int,前提是int 能够完整地容纳原先的数据,否则将被转换为unsigned int。
  ANSI C表示,如果编译器能够保证运算结果一致,也可以省略类型提升——这通常出现在表达式中存在常量操作数的时候。
  另一个会发生隐式类型转换的地方就是参数传递。
  在K&R C中,由于函数的参数也是表达式,所以也会发生类型提升;在ANSI C中,如果使用了适当的函数原型,类型提升便不会发生,否则也会发生。
  在被调用函数的内部,提升后的参数被裁减为原先声明的大小。
  这就是为什么单个的printf()格式字符串%d能适用于几个不同类型,short、char或int,而不论实际传递的是上述类型的哪一个。
  函数从堆栈中(或寄存器中)取出的参数总是int类,并在printf或其他被调用函数里按统一的格式处理。
  printf是一个可变参数函数,此时一般的参数提升始终会发生。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训