鱼C论坛

 找回密码
 立即注册
查看: 509|回复: 2

[已解决]C语言符号运算

[复制链接]
发表于 2023-10-19 14:54:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x



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道题
最佳答案
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 个字节。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 个字节。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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

希望以上回答对你有帮助。如果有任何问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 07:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表