davidmou 发表于 2023-10-19 14:54:26

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:}

isdkz 发表于 2023-10-19 14:57:30

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 个字节。

Mike_python小 发表于 2023-10-19 14:57:53

我理解你的需求,以下是表达式的计算结果:

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]
查看完整版本: C语言符号运算