有关全局变量和sizeof的题

#define _CRT_SECURE_NO_WARNINGS 1
#include
int i;
int main()
{
	i--;
	if (i > sizeof(i))
	{
		printf(">");
	}
	else
	{
		printf("<");
	}
	return 0;
}

这道题结果是  >

首先对于一个全局变量,当没有对其初始化时,它的默认值为0,--后变为-1。

其次,sizeof的返回值是unsigned int,而i是int类型,所以在比较之前会进行整型提升,int提升为unsigned int。

而-1在内存中为1111 1111 1111 1111 1111 1111 1111 1111,当其是无符号数时,它就是一共极大的整数

你可能感兴趣的:(c语言)