#include <stdio.h>
int i;
int main()
{
i--;
if (i > sizeof(i))
{
printf(">\n");
}
else
{
printf("<\n");
}
return 0;
}
答案:‘>’
全局变量是放在静态区的,创建的时候默认初始化为0;
局部变量是放在栈区的,创建的时候如果不初始化里面放的是随机值;
sizeof的返回类型为size_t,是一个无符号整形;
i - - 等于 - 1;
当一个负数和无符号整形做比较的时候会发生算数转换,将负数转换为无符号整形,而-1的无符号整型是非常大的,所以最后结果是‘>’。
本文解析了C语言中`if(i > sizeof(i))`条件的执行结果,探讨了全局变量和局部变量的初始化差异,以及算术转换在不同类型的比较中的作用。重点在于理解为何负数i会与无符号整型比较得出'>'的结果。
1909

被折叠的 条评论
为什么被折叠?



