最终输出结果是1、4和1,为什么不是1、4和4?
整型提升发生的前提是参与整型运算,+和!应该都算是单目操作符吧,单目操作符算是整型运算吗?为什么第二个会提升第三个就不行?
#include<stdio.h>
int main(){
char c = 1;
printf("%u\n",sizeof(c));
printf("%u\n",sizeof(+c));
printf("%u\n",sizeof(!c));
return 0;
}
你好,我先说结果,在我的电脑上上述程序的运行结果是 1 4 4 。
c语言在进行数值运算的时候是会进行隐式转换的,char short int 这三种类型钟任意两种类型或一种类型进行数值运算时,他们的数值表达式都是会隐式转换成int的,所以运行结果会是1 4 4 ,但是如果在你的电脑上运行结果是1 4 1的话,我认为这是和编译器有关的,+ 其实是双目运算符,!才是单目运算符,你可以尝试一下你的编译在进行单目运算符运算的时候是不是都没有将其做隐式转换。