提问:
在程序里,++a和+a在sizeof里,明显++a没有进行运算而+a进行运算并整形提升,这是为什么?
解答:
这跟提升没有关系,这是运算优先级问题
++a,运算优先级最高,所以是先进行a的自加之后,执行sizeof(a),那么返回的依然是a自身的类型
而+a其实等同于0+a,0可以不写,这是个表达式,在运算中,所有变量会先转成最大的类型,而0是int型的常量,所以a会被转换成int型,相加的结果也是int型
在程序里,++a和+a在sizeof里,明显++a没有进行运算而+a进行运算并整形提升,这是为什么?
这跟提升没有关系,这是运算优先级问题
++a,运算优先级最高,所以是先进行a的自加之后,执行sizeof(a),那么返回的依然是a自身的类型
而+a其实等同于0+a,0可以不写,这是个表达式,在运算中,所有变量会先转成最大的类型,而0是int型的常量,所以a会被转换成int型,相加的结果也是int型