课后练习-思考下列代码运行的结果
我要参与
课后练习-思考下列代码运行的结果
讨论题 3.1k
等21人参与
来源: 第1周 / 物联网/嵌入式工程师
int a = -10; 
unsigned int b = 6; 

if((a + b) > 0) 
{ 
    printf("a + b > 0\n"); 
}else{ 
    printf("a + b <= 0\n"); 
}


去发布

登录后即可发布作业,立即

我的作业

全部作业 209

土狗不会飞

补全代码:

#include<stdio.h>
int main()
{
   int a = -10; 
unsigned int b = 6; 

if((a + b) > 0) 
{ 
    printf("a + b > 0\n"); 
}else{ 
    printf("a + b <= 0\n"); 
}
return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
代码块
复制 预览
复制成功!

运行结果:
图片描述

思考:为什么a+b = -10+6会大于0
因为a为int型,b为unsigned int型,当进行运算的时候操作系统会发生字符的类型的强制转换
这里a的int型的位数没有b的unsigned int型的高,所以操作系统会将a的int转为unsigned int来运算。
所以运算过程如下:
a = -10的原码为:1000 0000 0000 0000 0000 0000 0000 1010
补码为:1111 1111 1111 1111 1111 1111 1111 0110
+6 0000 0000 0000 0000 0000 0000 0000 0110
结果为: 1111 1111 1111 1111 1111 1111 1111 1100 =》十进制为:4294967292
所以运算结果为a+b >0

提交于  2022-11-27 18:17:55
评论 1
讲师点评
评分:100
山行老师
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师