C语言表达式的计算如下归纳,希望能帮到大家理解。
-
任何式子只要含有i++,即便是带有(i++)也不会影响其的运算,i++还是只是代表+1而已。如第一题。
-
逗号运算不管是带括号是覆盖前面的值,不带括号的是累加。如第二题
-
关于赋值运算,都是先计算右边的式子,一步一步回到最左边。如第三题
蓝色表示正确答案
题目:下面所有变量的定义为:int i=3,j=5,b; float x=2.5; double y=5.0; char a='a';
第一题
(X+Y)+i++
根据运算的规则,应该先算(X+Y)=7.5然后再算(X+Y)+i=10.5,最后算++,但是并不是10.5+1,而是i+1;
所以(X+Y)+i++ =10.5
第二题
a=a+i, a+j
先计算a=97+3(a的ASCII值为97)=100 然后 a=a+5=100+5=105,
所以a=a+i, a+j=105
a=(a+i,a+j)
同样也是先计算a=a+i=97+3=100,然后a=a+j=97+5=102;因为()的原因所以a的值并没有被修改。
所以a=(a+i,a+j)=102
第三题
i-=j*=x+y
值得注意的是此处有一个*号,是不是以为他的优先级会更高呢?不是这样的。正确是解法是:
x+y=7.5; j=j*7.5=37; i=i-37=3-37=-34;(这里的i=37是因为i为整形的,所以最后会舍去小数部分)。
所以i-=j*=x+y=-34