\n"); } else { printf(" } return 0; } 作业内容 A.> B. C.不输出 D.程序有问题。c语言|作业day2020-3-29。" />

c语言|作业day2020-3-29

作业day2020-3-29 【c语言|作业day2020-3-29】作业标题
下面代码的结果是:
#include
int i;
int main()
{
i–;
if (i > sizeof(i))
{
printf(">\n");
}
else
{
printf("<\n");
}
return 0;
}
作业内容
A.>
B.<
C.不输出
D.程序有问题

C语言中,0为假,非0即为真。全局变量,没有给初始值时,编译其会默认将其初始化为0。i的初始值为0,i--结果-1,i为整形,sizeof(i)求i类型大小,32位系统下结果为4,如果程序按照64位方式编译,结果为8,按照此分析来看,结果应该选择B,但是sizeof的返回值类型实际为无符号整形,因此编译器会自动将左侧i自动转换为无符号整形的数据,-1对应的无符号整形是一个非常大的数字,超过4或者8,故实际应该选择A因此:选择A

    推荐阅读