首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

奇怪的有关问题。

2012-02-11 
奇怪的问题。。。main(){unsignedinta6intb-20printf( %d\n ,a+b)(a+b 6)?puts( 6 ):puts( 6

奇怪的问题。。。
main()   {
unsigned   int   a=6;
int   b=-20;    
printf( "%d\n ",a+b);
(a+b> 6)?puts( "> 6 "):puts( " <6 ");
}

output:
-14
> 6

为什么?

[解决办法]
因为这句话
unsigned int a=6;
把它改成
int a=6;
就OK了!!
[解决办法]
呵呵,或许你用“%u”输出一下就不奇怪了。
printf( "%u\n ",a+b);
[解决办法]
跟运算的隐式类型转换有关,(float)1+(int)2返回的是float型的,但对于这种unsigned int 和int来说,他们的转换好像更依赖与编译器的编译方式,所以想知道结果为什么这样怕是得弄懂编译器遇到这种情况时转换成了那种格式了,最好不要写这种歧义代码,不够安全,而且错误隐藏很深,很难发觉........
[解决办法]
支持楼上的,我也是这样认为的

热点排行