题目:
下面代码的结果是:
#include<stdio.h>inti;intmain(){i--;if(i>sizeof(i)){printf(">\n");}else{printf("<\n");}return0;}解析:
首先定义了一个全局变量整型变量:i没有初始化,默认为0;进入主函数,i–后i变成-1。
下面进行了一个表达式求值i > sizeof(i),我们通过表达式的求值的知识可以知道,表达式求值之前可能会进行整型提升和算术转换,我们发现i是int类型sizeof(i)本质是unsigned int类型,所以此处不需要整型提升,但是操作符两端类型不一样需要进行算术转换,int要转换为unsigned int,其值变为UINT_MAX(即0xFFFFFFFF,十进制为4294967295);
此时比较就变为4294967295 > 4,结果为真,因此会执行printf(">\n");,输出>。