Solidot 登录
[ 创建一个新帐号 ]
gcc不能区分正数和负数
bhpan 写道 "linux程序不能区分正数和负数,例如,-10和10会被认为是相等的。真的是这样吗?试试以下的C代码:
恩,我们的gcc在这里犯了一个低级错误。"
同样的C代码,在windows和unix系统中编译运行的结果是nothing special here,只有linux得到是-10==10。int main () {
int i=2;
if( -10*abs (i-1) == 10*abs(i-1) )
printf ("OMG,-10==10 in linux!\n");
else
printf ("nothing special here\n");
}
恩,我们的gcc在这里犯了一个低级错误。"
This discussion has been archived.
No new comments can be posted.
声明:
下面的评论属于其发表者所有,不代表本站的观点和立场,我们不负责他们说什么。












怎么会犯这样的错误……
(得分:1)trying...
(得分:1)( https://twitter.com/kcome )
正在测试,如果-10*和10*改成了-1和1就不会出错,但是如果任何绝对值大于1的整数,都会出现这样的毛病
另外abs里面如果没有变量,都是常量也没有问题
若为自由故·二者皆可抛
自由·科学·民主
顶多gcc的问题
(得分:3, 识见广博)温水煮不死青蛙,它只煮得死中国人。
不是Bug吧。。
(得分:1)来源?
(得分:1)It's a bug of gcc
(得分:2, 识见广博)如上
(得分:1)( 最新日志: 2010年1月27日 01时12分 星期三 )
Range bound is time box.
题外话
(得分:1)( http://gastlygem.com/ )
不用试了,上面一位不是给了么
(得分:1)温水煮不死青蛙,它只煮得死中国人。
修改一下吧,不是Linux的问题
(得分:2, 识见广博)