[此贴子已经被作者于2007-5-29 21:01:50编辑过]
#include<stdio.h>#include<conio.h> int main(){ unsigned int a=5;int b=-7;((int)a+b>5)?puts(">5"):puts("<=5");getch(); return 0;}
你运行这个试试类型问题
根据运算法则int -7先转化为unsigned int (65535-7+1) 再运算,所以无论是-7,还是-3结果都比5大,但是实际结果不是这样~结论:楼主发现BUG了~
为了证明我的正确结论,我试了不同的编译器,结果都一样,难道都有BUG?于是又做了#include<stdio.h>#include<conio.h>int main(){ unsigned int a=5, b=-7;(a+b)>a?puts(">5"):puts("<=5");
getch(); return 0;}或b=-3;结果是同上没改的结果一样,说明unsigned int 比较大小有问题~
有结果了int -7先转化为unsigned int (65535-7+1) a+b=65534 int -3先转化为unsigned int (65535-3+1) a+b=2所以楼主你结果就这样得出