有人可以说明sizeof(char expression)会怎样sizeof(int)?
int main()
{
char a, b;
printf("%d\n", sizeof(a+b));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
程序打印4为输出.我期待它是,sizeof(char)即1
Yu *_*Hao 17
整数推广.
当小整型(小于int,例如char,short等)是在算术表达式,它们会自动提升到int.
C11§6.3.1.1布尔,字符和整数
如果a
int可以表示原始类型的所有值(由宽度限制,对于位字段),则该值将转换为int; 否则,它被转换为unsigned int.这些被称为整数促销.58)
并在脚注中:
58)的整数优惠只应用:如通常的算术转换的一部分,某些参数表达式,以一元的操作数
+,-以及~运营商和所述移位运算符的两个操作数,如由它们各自的小节中规定.