免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1145 | 回复: 0
打印 上一主题 下一主题

[C] int类型的提升是编译时行为,和运行时无关 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-13 17:41 |只看该作者 |倒序浏览
如果一个int一个uint相加,怎么处理? 加法器可不管是否signed/unsigned, 加法过程一样,但是作判断的时候,这两个数的和被看成uint,比较的指令结果和纯粹两个int相加就不一样了。

#include<stdio.h>
int main(void){
  int i=-2;
  unsigned j=1;
  if(j+i>1) //提升为两个uint相加
    printf("sum=%d\n",j+i);//打印的结果根据%d制定,j+i的内存值永远不变。
  return 0;
}
输出
> ./a.out
sum=-1

个人理解。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP