C语言中的sizeof()运算符的大坑!!!

今天在做学校实验室的面试题,发现有一道题是很是奇怪,就是觉得sizeof()运算符有什么我不知道的地方

上代码!!!

int i;
int main(int argc, char *argv[])
{ 
	i--;
	if (i > sizeof(i))
	{
		printf(">\n");
	}
	else
	{
		printf("<\n");
	}
	return 0; 
}

先给你几分钟时间想一想答案是什么[滑稽]

结果是输出 >

这是为什么呢?

究其原因,原来sizeof()的返回值是一个无符号整型十进制数值,即:unsigend int 型,所以两个unsigend int型的数据进行运算后其结果只能是unsigend int型的

在这里插入图片描述

遵循这样的自动转换方式,所以就输出了 >

你会了吗?[滑稽]

发布了19 篇原创文章 · 获赞 9 · 访问量 4561

猜你喜欢

转载自blog.csdn.net/qq_43777627/article/details/102944864