c语言中表达运算

来源:百度知道 编辑:UC知道 时间:2024/05/21 06:13:57
x=a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7的计算结果怎么得2.5呀?
还有当a=12时,表达式a/=a+a; a%=(n%=2),n为5情况下,这两个式子的值都为零,这是怎么算的啊?a=12/24时怎么就得0了呢?怎么12/24就为0呢?有懂的请指点一下吧,谢谢.
---------一个初涉者

%是取余运算 所以7%3=1
(int)(x+y)这里用了一个强制转换 把x+y的值转换为整型即7 1*7=7
7%2=1
/得到的结果是整数 舍去小数部分 1/4=0
0+2.5=2.5
所以答案是2.5
因为int类型的运算结果还是int类型的,所以12/24就等于0了.第二个n%=2结果是1,12/1=12没有余数,%是求余数的运算符,所以是0

强制类型转换
由于int(x+y),所以x+y的结果是7
后面的同理

x=a%3*(int)(x+y)%2/4
结果为0;
因为你没有给出x是float还是double这里有数据类型的隐式转换。
当a=12时,表达式a/=a+a; a%=(n%=2),n为5情况下这两个式子的值都为零,a=12/24时怎么就得0了呢?怎么12/24就为0呢?
这和上面一样的。你看啊a是int的但是12/24等于0.5 你要把float的或double的赋值给int的就要损失精度。就是小数点后的都舍去了,不管多少。
其实上面你给的表达式在编译的时候都会显示warning的不信你自己编译看看。