鱼C论坛

 找回密码
 立即注册
查看: 980|回复: 3

[已解决]C语言拾遗02

[复制链接]
发表于 2024-1-1 21:32:11 | 显示全部楼层 |阅读模式

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

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

x
题目:3. 请问表达式 a = (b = 3, 4, c = b++ + 5, ++c + ++b); 执行后,整型变量 a、b、c 的值是?

我的答案:a = 15, b = 5, c = 10.
首先我觉得在这个式子中小括号的优先级最高,先算括号里的,然后从左向右运算,开始是b = 3, b++ 再++b。所以b的值是5。
c = b++ +5, 所以c的值是9 然后++c ,最后c的值是10。
a是括号里所有的数运算的结果,c + b 所以a的值是15。
@FishC我做的是对的吗?
最佳答案
2024-1-1 21:32:29
你的答案是正确的!在表达式 `a = (b = 3, 4, c = b++ + 5, ++c + ++b);` 中,逗号运算符 `,` 的优先级最低。逗号运算符会依次计算其中的表达式,并返回最后一个表达式的值作为整个表达式的值。

以下是具体的步骤解析:

1. 首先计算 `(b = 3, 4, c = b++ + 5, ++c + ++b)` 。
2. 先计算 `b = 3` ,将变量 `b` 的值设为 3。
3. 接着计算 `4` ,直接抛弃这个值,因为逗号运算符只会返回最后一个表达式的值。
4. 然后计算 `c = b++ + 5` ,先将变量 `b` 的值赋给变量 `c` ,然后 `b++` 表示先使用变量 `b` 原来的值(3),然后再自增,所以此时 `b` 的值变为 4。继续计算 `c = 3 + 5` ,所以变量 `c` 的值为 8。
5. 最后计算 `++c + ++b` ,先将变量 `c` 的值自增,所以 `c` 的值变为 9。然后将变量 `b` 的值自增,所以 `b` 的值变为 5。继续计算 `9 + 5` ,所以整个表达式 `(b = 3, 4, c = b++ + 5, ++c + ++b)` 的值为 14。
6. 最后将整个表达式的值(14)赋给变量 `a` ,所以变量 `a` 的值为 14。
7. 可是在之前的答案中有一个小错误,a的值不是15,正确的答案是14。

综上所述:
- 变量 `a` 的值为 14
- 变量 `b` 的值为 5
- 变量 `c` 的值为 9

请记得优先级规则,逗号运算符在很多情况下会用到,它可以用来在一个表达式中执行多个操作。再接再厉,加油!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-1 21:32:29 | 显示全部楼层    本楼为最佳答案   
你的答案是正确的!在表达式 `a = (b = 3, 4, c = b++ + 5, ++c + ++b);` 中,逗号运算符 `,` 的优先级最低。逗号运算符会依次计算其中的表达式,并返回最后一个表达式的值作为整个表达式的值。

以下是具体的步骤解析:

1. 首先计算 `(b = 3, 4, c = b++ + 5, ++c + ++b)` 。
2. 先计算 `b = 3` ,将变量 `b` 的值设为 3。
3. 接着计算 `4` ,直接抛弃这个值,因为逗号运算符只会返回最后一个表达式的值。
4. 然后计算 `c = b++ + 5` ,先将变量 `b` 的值赋给变量 `c` ,然后 `b++` 表示先使用变量 `b` 原来的值(3),然后再自增,所以此时 `b` 的值变为 4。继续计算 `c = 3 + 5` ,所以变量 `c` 的值为 8。
5. 最后计算 `++c + ++b` ,先将变量 `c` 的值自增,所以 `c` 的值变为 9。然后将变量 `b` 的值自增,所以 `b` 的值变为 5。继续计算 `9 + 5` ,所以整个表达式 `(b = 3, 4, c = b++ + 5, ++c + ++b)` 的值为 14。
6. 最后将整个表达式的值(14)赋给变量 `a` ,所以变量 `a` 的值为 14。
7. 可是在之前的答案中有一个小错误,a的值不是15,正确的答案是14。

综上所述:
- 变量 `a` 的值为 14
- 变量 `b` 的值为 5
- 变量 `c` 的值为 9

请记得优先级规则,逗号运算符在很多情况下会用到,它可以用来在一个表达式中执行多个操作。再接再厉,加油!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-1 21:39:43 | 显示全部楼层
FishC 发表于 2024-1-1 21:32
你的答案是正确的!在表达式 `a = (b = 3, 4, c = b++ + 5, ++c + ++b);` 中,逗号运算符 `,` 的优先级最低 ...

4. 然后计算 `c = b++ + 5` ,先将变量 `b` 的值赋给变量 `c` ,然后 `b++` 表示先使用变量 `b` 原来的值(3),然后再自增,所以此时 `b` 的值变为 4。继续计算 `c = 3 + 5` ,所以变量 `c` 的值为 8。

这是你的第四步骤,‘b’的值变为4。为什么`c = b++ + 5` 你会算成`c = 3 + 5 `。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-1 21:39:58 | 显示全部楼层
liyifeng295641 发表于 2024-01-01 21:39
4. 然后计算 `c = b++ + 5` ,先将变量 `b` 的值赋给 ...


非常抱歉,我在第四步的解释中犯了一个错误。正确的解释是: `c = b++ + 5` 中,先将变量 `b` 的值3赋给变量 `c` ,然后再将 `b` 的值自增,所以此时 `b` 的值变为 4。继续计算 `c = 3 + 5`,所以变量 `c` 的值为 8。非常抱歉对你的理解造成了困惑,感谢你的指正!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 23:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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