整数范围与类型转换

任务详情

-2147483647-1 == 2147483648U
-2147483647-1 < -2147483647
-2147483647-1 < 2147483647
(unsigned)-2147483647-1 < 2147483647
上面四个表达式成立吗?为什么?并用C语言编程测试并提交运行截图。

  • -2147483647-1 == 2147483648U 成立
    -2147483647-1是负数,转换为无符号数=2的32次(-2147483648=2147483648u
  • -2147483647-1 < -2147483647 成立
    都转换为有符号数
  • -2147483647-1 < 2147483647 成立
    负数小于正数
  • (unsigned)-2147483647-1 < 2147483647 不成立

编程测试

  • 代码
#include<stdio.h>
#include<string.h>


int checktruefalse(int a)
{
 if(a)
 {
 printf("   true\n");
 return 1;
 }
 else
 {
 printf("   false\n");
 return 0;
 }
}
int main()
{


	printf("-2147483647-1 == 2147483648u");
	checktruefalse(-2147483647-1 == 2147483648u);
	
	printf("-2147483647-1 < -2147483647");
	checktruefalse(-2147483647-1 < -2147483647);

	printf("-2147483647-1 < 2147483647");
	checktruefalse(-2147483647-1 < 2147483647);

	printf("(unsigned)-2147483647-1 < 2147483647");
	checktruefalse((unsigned)-2147483647-1 < 2147483647);

	return 0;
}
  • 运行截图
posted @ 2021-12-13 10:20  修勾  阅读(65)  评论(0编辑  收藏  举报