C语言里赋值或条件判断语句中,如何判断,从左边看还是从右边看语句是正确的?(有时候如a=3+3/2

C语言里赋值或条件判断语句中,如何判断,从左边看还是从右边看语句是正确的?(有时候如a=3+3/2,那么a=3)

赋值号的话会先计算赋值号右边的表达式,然后再赋值给左边,右边的表达式根据优先级计算,。对于上式,乘的优先级大于加,所以先计算3/2,然后计算3+3/2;最后才有a = 3+3/2 。执行完这局之后a的值为4追问

已知x, y均为double类型,x=1,y=x+3/2,y=2.0 这又怎么理解啊?

追答

先给x赋值为1,然后将x+3/2的值赋值给y,然后再给y赋值为2.0
上面代码执行完之后,x的值为1,y的值为2.注意第二次对y的赋值会覆盖掉第一次的赋值,

追问

第二次是求出的结果,不是赋值。。。

追答

没明白你的话的意思
你按c语言的语法格式把你的那句话写一遍 我看看

追问

第十二题

追答

答案是2.0,你要明白无论在哪里,3/2的结果永远都为1,因为3是一个整形数,2也是一个整形数,两个整形数相除结果肯定是整形数。先计算除法,然后才进行加法,进行除法的时候是两个整形数相除,结果为1,接下来进行加法,进行加法的时候由于x是double型的,而c语言当两个不同类型的数同时参与运算时低精度会自动向高精度转化,所以后面的1也会自动默认转换为double型,所以相加就是2.0.

追问

第九题

追答

先计算赋值号右边的表达式,算出来k+k%5 = 7+2 = 9;然后计算x % = 9; 算出来x = x%9 = 12 %9 = 3.

追问

谢谢~

那赋值一般都是从右往左计算,再赋值?

懂了

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-30
都是从左边到右边,你说那个是因为2和3都是整型相除就为零,所以a为3追问

if (a=b<0)是从右边开始判断的

追答

这个就要看运算符的优先级来判断

第2个回答  2013-12-30
3/2得一啊,a不应该为4吗
相似回答