设为首页 加入收藏

TOP

C语言中的-1/2到底有没有定义?
2014-11-23 22:08:30 来源: 作者: 【 】 浏览:0
Tags:言中 -1/2 到底 有没有 定义

看到一个网友的签名上写的“c语言中的-1/2没有定义”,无论是表达什么意思,自己都好奇的写了几行代码测试下。写在博客上凑凑数吧,希望各位不要见笑了。应该说代码是这样的。
#include

void main(){
float a = -1/2;
printf("%s%f",a<0 "this is - ":"this is + ",a);
return;
}
我用了一个判断来验证正负值。表面上看上去代码没有任何问题,但是仔细的看或者你执行以下就知道问题大大的出来了。结果居然是"0",为什么?我们看看float a =-1/2,float a肯定可以表示负数和小数点的,但是-1/2呢?这虽然是一个数字,但是却代表的是整型数据,2个整形数据的操作结果依然是整形,等同于代码float a = (int)(-1/2),-1/2取整结果为0(0不分正负),结果自然就是this is + 0。所以说这个问题是在c中已经有说明的。如果想要自己得到的结果符合所想,那么代码应该是这样:
#include

void main(){
float a = (float)-1/(float)2;
printf("%s%f",a<0 "this is - ":"this is + ",a);
return;
}
使用c的强制性转换,将-1、2都转换成float,那么得到的结果既然也就是float了。这个时候的到底的结果就是this is - -0.5000。闪。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇c语言中的一个简单的虚拟机 下一篇SmartGUI库字体接口

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: