鱼C论坛

 找回密码
 立即注册
查看: 488|回复: 4

[已解决]C语言基础题不会

[复制链接]
发表于 2021-12-7 15:31:56 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 疯子阿海 于 2021-12-7 22:07 编辑

若以下均是整型,m=n=2,则执行 m--;m=m+(++n),m+2;
求助解析,我总算不对。
最佳答案
2021-12-7 17:05:51
本帖最后由 番杰 于 2021-12-7 17:08 编辑

分开来看,

先看第一个
(1)m--;
这里不用考虑运算和的顺序;
所以这条语句就可以直接看成:
m = m - 1;
或是
m -= 1;
说白了就是m的数值减一,已知m的初值为2;
所以执行完该语句后m的值为1.

再看第二个:
m=m+(++n),m+2;
你的疑问也主要是出在这个问题上;
这是一个“逗号表达式”,
而逗号表达式的运算优先级低于等号(赋值)的,
所以这个就相当于:
(m=m+(++n)),m+2;
另外提一嘴:++n表示先把n的数值加一再参与运算,
所以这个表达式就可以看成:
m = m + (n + 1)
带入已知的数值数值可得:m = 1 + (2+1) = 4;
所以最后的结果就是 :m = 4 ,n = 3;

你可能会问:那后面那个m +2 不用管了吗?
在这里确实是不用管,因为它并没有把这个m+2=4+2 = 6结果赋值给m,所以m的数值还是4;
这个数值6为这个逗号表达式的结果,
就比如把这个语句写成:
a =(m=m+(++n)),m+2;
那么最终a 的结果就是6.

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-7 16:00:47 From FishC Mobile | 显示全部楼层
例子:

int a;
int b = 13;
a = b++; // 这里 a = 13, b = 14

int x;
int y = 7;
x = ++y; // 这里 x = 8, y = 8

B = ++A 表示 A 先加 1,后赋值于 B
B = A++ 表示先赋值 B(A 的旧值),然后 A 才加 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-7 16:28:11 | 显示全部楼层


对,这个知识点我知道,我算出来是6,但和答案对不上,我不敢确定哪个才是对的。答案是4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-7 17:05:51 | 显示全部楼层    本楼为最佳答案   
本帖最后由 番杰 于 2021-12-7 17:08 编辑

分开来看,

先看第一个
(1)m--;
这里不用考虑运算和的顺序;
所以这条语句就可以直接看成:
m = m - 1;
或是
m -= 1;
说白了就是m的数值减一,已知m的初值为2;
所以执行完该语句后m的值为1.

再看第二个:
m=m+(++n),m+2;
你的疑问也主要是出在这个问题上;
这是一个“逗号表达式”,
而逗号表达式的运算优先级低于等号(赋值)的,
所以这个就相当于:
(m=m+(++n)),m+2;
另外提一嘴:++n表示先把n的数值加一再参与运算,
所以这个表达式就可以看成:
m = m + (n + 1)
带入已知的数值数值可得:m = 1 + (2+1) = 4;
所以最后的结果就是 :m = 4 ,n = 3;

你可能会问:那后面那个m +2 不用管了吗?
在这里确实是不用管,因为它并没有把这个m+2=4+2 = 6结果赋值给m,所以m的数值还是4;
这个数值6为这个逗号表达式的结果,
就比如把这个语句写成:
a =(m=m+(++n)),m+2;
那么最终a 的结果就是6.

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-7 22:06:08 | 显示全部楼层
番杰 发表于 2021-12-7 17:05
分开来看,

先看第一个

太感谢了,解决了我的世纪难题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 05:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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