找回密码
 注册
搜索
查看: 1074|回复: 1

[讨论] C语言有符号数与无符号数运算请教

[复制链接]
发表于 2010-7-23 23:18:20 | 显示全部楼层 |阅读模式
一段代码如下:
unsigned short a = 6;
short b = -10;
(a + b > 6)?puts(">6"):puts("<=6");

理论上来说,结果应该是>6,在手机上验证也是如此。但是,为何在VC++6.0上跑结果会是<=6呢?严重不解,求高手指教。
[em13][em13]
发表于 2010-12-24 17:16:23 | 显示全部楼层
可以这么理解:vc6.0的编译工具与ads编译工具的区别,

从结果我们知道经过ads编译是在有符号和无符号变量进

行运算时编译器自动将有符号的转化为无符号的符合ANSIC

标准,而vc6.0的编译应该是支持这种有符号和无符号之

间的运算。

这些都是编译原理的知识,具体的过程还是看看编译原理

相关书籍。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-24 10:12 , Processed in 0.049185 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表