c语言中-1除以2为什么等于0?

其实用c语言与用java语言实现得到的结果是一样的,都是0。可是这个除以2的运算过程是怎样的呢?有人说是因为-1/2=-0.5,因为是int类型,所以“.5”被舍掉了,这种说法对不对?还有按我的理解,在计算机中,数字是以补码形式存储的,以c语言为例,-1的补码应该是FFFF,除以2不是相当与右移一位吗,那就应该还是-1,为什么在这里不等了呢?
谢谢大家的回答,这个强制类型转换的问题我已经明白了,可是后面我说的那个补码的问题怎么没有人回答呢,我主要是对这个比较迷惑啊!!

第1个回答  2007-09-28
C语言是一种强类型的语言
而JAVA不是,所以对于数据的处理方法是不一样的.

你肯定是将两个int形的数据做除法运算.
int型是整型数据,只能保存整数.

如果是两个float或者double型的数据相除,就不会这样.
会等于0.5

============================

补码的问题,那是编译器的事了,不用你管.
之所以发明高级语言,就是为了把程序员从繁琐的汇编代码中解脱出来
那是编译器的事.
第2个回答  2007-09-28
C和java都是这样滴.对于1/2取整..在我看来这两个整型变量相除.由于两个都是整型.相除之后应该不会是向占多字节数的实型转换吧.就是不会自动类型转换!
我们都知道1.0/2就会自动类型转换因此得到结果是个实型数呼0.5
我运行过一下.-1/2的结果也会是零..
第3个回答  2007-09-28
这里要说明的是
斜杠"/"是普通除
反斜杠"\"才是整除,不带小数的
你的问题是强制类型转换,
要解决这个问题,
结果应该用实型来存储,
或者修改为-1/2.0也可以
——————————————
你可以实验下,
验证我的说法
第4个回答  2007-09-28
0.5其实是四舍五入了
-0.4四舍五入后=-1
-0.5四舍五入后=0
第5个回答  2007-09-28
C语言中 / 对于整数除法来说是取整数,不带余数,取余数用 %

在计算机中数字是以二进制形式表现的。
关于补码的问题,只能正在学习语言的朋友能回答了,几年没用过C,忘光了,只记得当时学得时候,一想这些就头晕。

c语言中-1除以2为什么等于0?
C语言是一种强类型的语言 而JAVA不是,所以对于数据的处理方法是不一样的.你肯定是将两个int形的数据做除法运算.int型是整型数据,只能保存整数.如果是两个float或者double型的数据相除,就不会这样.会等于0.5 === 补码的问题,那是编译器的事了,不用你管.之所以发明高级语言,就是为了把程序员从繁...

c语言中-1\/2等于多少?
-1\/2的结果是0,

c语言中1除以2为什么等于0
c语言中1除以2等于0的原因:1默认的是int型的常量,当1除以2时,在c语言中除号即分号的含义是除数去整,当一除以二时,等于零点五,结果取整则为零,所以1除以2在c语言中为0。c语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的...

c语言中1除以2为什么等于0
因为1默认的是int型的常量,所以1\/2的输出结果为了与被除数一致就输出0(0.5进行int类型转换后就变成了0)这里需要注意的就是C语言除法中,结果的数据类型是会转换成被除数的数据类型的。比如:int a = 4;int b = 3;float d = 5;int c = a\/b; \/\/ 变量c的结果就是1,本来4\/3=1....

C语言实型变量中为什么只能用1.0\/2
除法对于整数来说是取整的,如果是1\/2,那么结果就是0了,所以最后结果也是0。变成1.0\/2之后系统就知道这是进行浮点运算,所以会有正确结果0.5

c语言中1除以2为什么等于0
1与2都是int型,两者相除,结果也是int型,所以会对结果进行取整,不进行四舍五入,直接丢掉小数部分,所以数学中的1\/2=0.5,c语言中取整后为0

c语言中1除以2为什么等于0
h> int main(){ \/\/ int全部改为float int m = 1, n = 2;int res = m \/ n;printf("RESULT: %d\\n",res); \/\/ 这里就需要把转换说明%d改为%f.\/\/ 如果没错的话,你设置的的是int整型变量 \/\/ 这里如果要得到正确答案就需要需要把int改为float或者double getch();return 0;} ...

C语言中为什么1\/2=0?
因为1\/2的结果是0。这个是C语言类型处理的问题。1\/2编译器处理的时候会认为1和2都是整数,而整数与整数相除结果还是整数,并且是向下取整的整数。虽然3.5是浮点数,但是1\/2是先计算的。如果想要1\/2结果是0.5就需要将式子转化为浮点数的除法,方法有两种:将1写成1.0,比如1.0\/2结果就是0.5...

c语言中1\/2表示用整数1除以整数2,为啥结果为0?
c语言中1\/2表示用整数1除以整数2,因为两者都是整数,其运算结果为0。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级...

在C语言中,为什么1\/2的运算结果为0;1.0\/2.0的结果为0.5谢谢了,大神帮忙...
因为除号两边都是整数,1\/2的结构是0.5,取整数以后就是0 第二个是因为除数与被除数有一个是小数结果不会取整数,就是0.5

相似回答