
JAVA语言中a+=a-=a*=a/=a为什么不是等于0而是等于10?
1个回答
展开全部
JAVA语言中a+=a-=a*=a/=a为什么不是等于0而是等于10? 经过验证,确定,java在进行这样的运算时,用到了临时变量,即中间的计算结果并没有存储到变量a中。
运算过程是从右向左的
先运行a/=a ; 结果为1
再运行a*=1;结果为10
再运行a-=10;结果为0
再运行a+=0;结果为10
为什么不是等于7 而是等于1?C语言
是啊,同意@m_2013同学的观点。按照语法规则,C中的除号是跟一般四则运算的除法规则一样的,即相同为正,相异为负。模运算的结果才是跟被除数的符号相同的!
java double i = 2/4 为什么不等于0.5 而是等于0
因为 2/4的结果是整形所以是0然后赋值给double类型 自动类型转换所以结果是0!想要0.5 把右边改成2/4.0 2.0/4 或者2.0/4.0都行
C语言中 a=3 a+=a-=a*a a等于多少?
负值运算是从右算起的双目运算符。
a=3
a*a=9 a=3
a=a-9 a=-6
a=a+(-6) a=-12
C语言问题:a/=a=a为什么等于0啊?(原来a等于12)
a/=a+a
等价于a=a/(a+a)
如果原来a=12
则a=12/24
等于0
就是这样的
凡是出现a+=i
a-=i
a*=i
a/=i
a%=i
都要加括号的
即a=(a%i)
(byte)300为什么等于44------java语言?
java中int是4字节,也就是32位,byte是1字节也就是8位
(byte)300,把int型的300强制转换到byte,这样就会损失精度(32位-->8位)
再看int 300的二进制表示是:100101100,前面的很多0省略了,共32位,当它被转成byte时,只能截取从右至左的低八位,也就是00101100,你算算看是不是44呢(32+8+4)?
JAVA的a=3;b=2;a/=b 为什么等于1而不是等于别的呢
a/=b,在a b是整数的时候表示a除以b取商。也就是3除以2结果商为1余数为1。取商就是1。
java语言中((8*4*2+6)/2+5)等于多少
40((8*4*2+6)/2+5)8*4*2 = 64(64+6)/2+570/2+535+540
c语言中0x10为什么等于128
0x10 是 16 进制数,化为10 进制 是 16, 不是 128.
0x100 是 16 进制数,化为10 进制 是 256, 也不是 128.
0x10 << 3 是 0x80, ( 即 0x10 左移3位运算),化为10 进制 是 128.
0x10 等于 128 / 8.
c语言中sizeof(x/1.0)为什么不等于4?
在C语言里,不特别说明的字面小数的类型默认是double
那么1.0就是个double, x/1.0也是个double
而double类型占用8个字节
所以sizeof(x/1.0) 的值是8
运算过程是从右向左的
先运行a/=a ; 结果为1
再运行a*=1;结果为10
再运行a-=10;结果为0
再运行a+=0;结果为10
为什么不是等于7 而是等于1?C语言
是啊,同意@m_2013同学的观点。按照语法规则,C中的除号是跟一般四则运算的除法规则一样的,即相同为正,相异为负。模运算的结果才是跟被除数的符号相同的!
java double i = 2/4 为什么不等于0.5 而是等于0
因为 2/4的结果是整形所以是0然后赋值给double类型 自动类型转换所以结果是0!想要0.5 把右边改成2/4.0 2.0/4 或者2.0/4.0都行
C语言中 a=3 a+=a-=a*a a等于多少?
负值运算是从右算起的双目运算符。
a=3
a*a=9 a=3
a=a-9 a=-6
a=a+(-6) a=-12
C语言问题:a/=a=a为什么等于0啊?(原来a等于12)
a/=a+a
等价于a=a/(a+a)
如果原来a=12
则a=12/24
等于0
就是这样的
凡是出现a+=i
a-=i
a*=i
a/=i
a%=i
都要加括号的
即a=(a%i)
(byte)300为什么等于44------java语言?
java中int是4字节,也就是32位,byte是1字节也就是8位
(byte)300,把int型的300强制转换到byte,这样就会损失精度(32位-->8位)
再看int 300的二进制表示是:100101100,前面的很多0省略了,共32位,当它被转成byte时,只能截取从右至左的低八位,也就是00101100,你算算看是不是44呢(32+8+4)?
JAVA的a=3;b=2;a/=b 为什么等于1而不是等于别的呢
a/=b,在a b是整数的时候表示a除以b取商。也就是3除以2结果商为1余数为1。取商就是1。
java语言中((8*4*2+6)/2+5)等于多少
40((8*4*2+6)/2+5)8*4*2 = 64(64+6)/2+570/2+535+540
c语言中0x10为什么等于128
0x10 是 16 进制数,化为10 进制 是 16, 不是 128.
0x100 是 16 进制数,化为10 进制 是 256, 也不是 128.
0x10 << 3 是 0x80, ( 即 0x10 左移3位运算),化为10 进制 是 128.
0x10 等于 128 / 8.
c语言中sizeof(x/1.0)为什么不等于4?
在C语言里,不特别说明的字面小数的类型默认是double
那么1.0就是个double, x/1.0也是个double
而double类型占用8个字节
所以sizeof(x/1.0) 的值是8
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询