当前位置:编程学习 > C/C++ >>

C语言中的-1/2到底有没有定义?

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

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 <stdio.h>

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语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,