隐式转换 integral promotion

来源:互联网 发布:网络龙虎斗如何作假 编辑:程序博客网 时间:2024/06/06 04:47

对于变量 a1 OP a2

c语言有一套隐式转换的规则

如果a1 a2都为小于integer类型,如short,char

即使a1,a2都为同一类型,也会进行转换

如果你还是感觉不知所云 那么请看下面代码


#include <iostream>int main(){char c1 = 1;char c2 = 2;printf("%d", sizeof(c1 + c2));return 0;}

c1,c2都为char型,在做加法过程中,类型大小已经为4,被intergal promotion为int类型了。


至于高于int的隐式转换,则以最高位数的参数为准转换


+ - * / % > < >= <= == !=运算符都需要做Usual Arithmetic Conversion

单目运算符+ - ~只有一个操作数,移位运算符<< >>两边的操作数类型不要求一致,这些运算不需要做Usual Arithmetic Conversion,但也需要做Integer Promotion


资料:http://learn.akae.cn/media/ch15s03.html

原创粉丝点击