24小时热门版块排行榜    

CyRhmU.jpeg
查看: 783  |  回复: 2
【有奖交流】积极回复本帖子,参与交流,就有机会分得作者 jimbai 的 10 个金币

jimbai

银虫 (正式写手)

[交流] 逗号分隔计算顺序的问题

请问:
int i=8,j=10,m=0,n=0;
printf("%d,%d,%d,%d\n",i, j, m=++i, n=j++);       
这句执行完结果是:
i=9, j=11, m=9, n=10
为什么不是
i=8, j=10, m=9, n=10
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ioadong

木虫 (著名写手)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
jimbai: 金币+10 2021-05-05 09:23:32
你这个应该是函数参数表达的计算顺序问题。一般的教材都会建议不要在参数列表中对参数在不同的地方做修改,因为这种表达式的内部的各表达式计算顺序是不确定的。编译器的warning: unsequenced modification and access to 'i' 。
以科学的理性代替天然的非理性。
2楼2021-05-04 08:52:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jimbai

银虫 (正式写手)

引用回帖:
2楼: Originally posted by ioadong at 2021-05-04 08:52:33
你这个应该是函数参数表达的计算顺序问题。一般的教材都会建议不要在参数列表中对参数在不同的地方做修改,因为这种表达式的内部的各表达式计算顺序是不确定的。编译器的warning: unsequenced modification and acc ...

谢谢。
3楼2021-05-05 09:22:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 jimbai 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见