C语言符号运算
char a = 'a';
int i = 3,j = 5,b;
float x = 3.5;
double y = 5.0,z;
1.a +i -j +x/y
2.(x + y) +i ++
3, y += i -= j* =++x
4. b = a += j%i
5.a =a + i,a +j
6.a = (a + i , a + j)
7. y = (x =,x ++,x +2)
8, i-= j* = x + y
9.(i ++) *( --j)
10. z = (i++) * (j++)
11.(int)x/(int )y + y
12.(float)l/(++j)
13.-j%i +j
14.(int)y %i%(int)(x + y)
15.i >> 2
16.i ^j
17. i << 2 & j
18.sizeof(double)
19.sizeof (3.5)
20.sizeof(i + y)
根据上图的数学公式计算给出的表达式的值,共20道题{:9_241:} 1. a + i - j + x / y 的值为 97 + 3 - 5 + 3.5 / 5.0 = 97 + 3 - 5 + 0.7 = 95.7。
2. (x + y) + i++ 的值为 (3.5 + 5.0) + 3 = 8.5 + 3 = 11.5,同时 i 的值会自增为 4。
3. y += i -= j *= ++x 的值为 y = y + (i = i - (j = j * (++x)))。
首先,++x 会使 x 的值自增为 4,然后 j = j * x,即 j = 5 * 4 = 20。
接着,i = i - j,即 i = 3 - 20 = -17。
最后,y = y + i,即 y = 5.0 + (-17) = -12.0。
4. b = a += j % i 的值为 b = (a = a + (j % i))。
首先,j % i 的值为 5 % 3 = 2。
然后,a = a + 2,即 a = 97 + 2 = 99。
最后,b = a,即 b 的值也为 99。
5. a = a + i, a + j 的值为 a = a + i 的结果(即 a = 97 + 3 = 100)。
6. a = (a + i, a + j) 的值为 a + j 的结果(即 a + j = 97 + 5 = 102)。
7. y = (x = , x++, x + 2) 的值为 y = (x = (x++, x + 2))。
首先,x++ 会使 x 的值自增为 4,然后 x + 2 的值为 4 + 2 = 6。
最后,x = 6,y = x,即 y 的值为 6。
8. i -= j *= x + y 的值为 i = i - (j = j * (x + y))。
首先,x + y 的值为 3.5 + 5.0 = 8.5。
然后,j = j * (x + y),即 j = 5 * 8.5 = 42.5。
最后,i = i - 42.5。
9. (i++) * (--j) 的值为 (i++) * (j = j - 1)。
首先,j = j - 1,即 j = 5 - 1 = 4。
然后,i++ 的值为 3,同时 i 的值会自增为 4。
最后,(i++) * (--j) 的值为 3 * 4 = 12。
10. z = (i++) * (j++) 的值为 z = (i++ * j++)。
首先,i++ 的值为 3,同时 i 的值会自增为 4。
接着,j++ 的值为 5,同时 j 的值会自增为 6。
最后,z = 3 * 5 = 15。
11. (int)x / (int)y + y 的值为 (int)x / (int)y + y。
首先,(int)x 的值为 3,(int)y 的值为 5。
接着,(int)x / (int)y 的值为 3 / 5 = 0。
最后,(int)x / (int)y + y 的值为 0 + 5 = 5。
12. (float)l / (++j) 的值为 (float)l / (++j)。
由于题目中没有给出 l 的值,无法计算结果。
13. -j % i + j 的值为 (-j % i) + j。
首先,-j % i 的值为 (-5 % 3) = -2。
接着,(-j % i) + j 的值为 -2 + 5 = 3。
14. (int)y % i % (int)(x + y) 的值为 (int)y % i % (int)(x + y)。
首先,(int)y 的值为 5,(int)(x + y) 的值为 3 + 5 = 8。
接着,(int)y % i 的值为 5 % 3 = 2。
最后,(int)y % i % (int)(x + y) 的值为 2 % 8 = 2。
15. i >> 2 的值为 i 右移 2 位。
首先,i 的值为 3,二进制表示为 0000 0011。
右移 2 位后,得到 0000 0000,即十进制的 0。
16. i ^ j 的值为 i 与 j 的按位异或运算结果。
首先,i 的值为 3,二进制表示为 0000 0011。
j 的值为 5,二进制表示为 0000 0101。
按位异或运算后,得到 0000 0110,即十进制的 6。
17. i << 2 & j 的值为 (i << 2) & j。
首先,i 的值为 3,二进制表示为 0000 0011。
左移 2 位后,得到 0000 1100,即十进制的 12。
j 的值为 5,二进制表示为 0000 0101。
按位与运算后,得到 0000 0100,即十进制的 4。
18. sizeof(double) 的值为 double 类型的字节大小。在大多数系统中,double 类型占用 8 个字节。
19. sizeof(3.5) 的值为 3.5 的字节大小。由于 3.5 是一个常量,它的字节大小在编译时就确定了,具体的大小取决于系统和编译器。
20. sizeof(i + y) 的值为 (i + y) 的字节大小。由于 i 是 int 类型,y 是 double 类型,它们进行运算后的结果类型为 double。在大多数系统中,double 类型占用 8 个字节。 我理解你的需求,以下是表达式的计算结果:
1. a + i - j + x / y
= 'a' + 3 - 5 + 3.5 / 5.0
= 97 + 3 - 5 + 0.7
= 95.7
2. (x + y) + i++
= (3.5 + 5.0) + 3++
= 8.5 + 3
= 11.5
3. y += i -= j *= ++x
先计算内部表达式:
i -= j *= ++x
= i -= (j *= (++x))
= i -= (j *= 4)(因为 x 的初始值是 4)
= i -= (j * 4)
= i -= (5 * 4)(因为 j 的初始值是 5)
= i -= 20
然后计算外部表达式:
y += i
= 5.0 += i
= 5.0 += (-15)(因为 i 的初始值是 3)
= -10.0
4. b = a += j % i
先计算内部表达式:
a += j % i
= a += (j % i)
= a += (5 % 3)(因为 j 的初始值是 5,i 的初始值是 3)
= a += 2
= 'a' += 2
= 'c'
然后计算外部表达式:
b = 'c'
= 99
5. a = a + i, a + j
先计算内部表达式:
a + i
= 'a' + 3
= 'a3'
然后计算外部表达式:
a = 'a3', 'a3' + j
= 'a3', 'a35'
注意:这里的逗号运算符会将前面的表达式结果作为整体赋值给 a。
6. a = (a + i, a + j)
先计算内部表达式:
a + i
= 'a' + 3
= 'a3'
然后计算外部表达式:
a = 'a3'
7. y = (x = , x++, x + 2)
先计算内部表达式:
x = , x++, x + 2
= x = (, x++, x + 2)
= x = (, 4, 6)(因为 x 的初始值是 4)
= x = 6
然后计算外部表达式:
y = 6
8. i -= j *= x + y
先计算内部表达式:
j *= x + y
= j *= (4 + 5.0)(因为 x 的初始值是 4,y 的初始值是 5.0)
= j *= 9.0
= j *= 9(整型变量与浮点型变量相乘,结果为浮点型)
= j *= 9(因为 j 的初始值是 5)
= j *= 9
= 45
然后计算外部表达式:
i -= 45
= 3 -= 45
= -42
9. (i++) * (--j)
先计算内部表达式:
i++
= 3++
= 3
然后计算外部表达式:
(--j)
= (--5)
= 4
最后计算整体表达式:
3 * 4
= 12
10. z = (i++) * (j++)
先计算内部表达式:
i++
= 3++
= 3
然后计算外部表达式:
j++
= 5++
= 5
最后计算整体表达式:
z = 3 * 5
= 15
11. (int)x / (int)y + y
= (int)3.5 / (int)5.0 + 5.0
= 3 / 5 + 5.0
= 0 + 5.0
= 5.0
12. (float)l / (++j)
注意:在给定表达式中并没有变量 l,假设是笔误,我将其改为 i。
先计算内部表达式:
++j
= ++5
= 6
然后计算外部表达式:
(float)i / 6
= (float)3 / 6
= 0.5
13. -j % i + j
= -(j % i) + j
= - (5 % 3) + 5
= -2 + 5
= 3
14. (int)y % i % (int)(x + y)
= (int)5.0 % 3 % (int)(3.5 + 5.0)
= 5 % 3 % (int)8.5
= 2 % 8
= 2
15. i >> 2
= 3 >> 2
= 0
16. i ^ j
= 3 ^ 5
= 6
17. i << 2 & j
= 3 << 2 & 5
= 12 & 5
= 4
18. sizeof(double)
= sizeof(double)
= 8
19. sizeof(3.5)
= sizeof(3.5)
= 4
20. sizeof(i + y)
= sizeof(3 + 5.0)
= sizeof(8.0)
= 8
希望以上回答对你有帮助。如果有任何问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页:
[1]