为了账号安全,请及时绑定邮箱和手机立即绑定

114. 以下程序运行后屏幕输出为( )

114. 以下程序运行后屏幕输出为( )。
#include<stdio.h>
void f(int i)
{
int a=2;
a=i++;
printf("%d,",a);
}
main()
{
int a=1,c=3;
f(c);
a=c++;
printf("%d",a);
}
A. 4,3
B. 3,3
C. 4,5
D. 3,5

我一直分不清是先++--先后关系,本来说++在后应该先求值再++的,结果分号又跟顺序点有关,我看了其他资料,
也没理清楚这关系,实在是不懂,拜托大神帮忙解析下,谢谢


正在回答

2 回答

有冲突啊,分号前要完成副作用不就说明++要在分号之前完成啊

0 回复 有任何疑惑可以回复我~

就是++在前,先加了再赋值,在到下一行,如果是a++就是说直接将a赋值下一行,然后给a加一,

答案是B

0 回复 有任何疑惑可以回复我~
#1

包小龙虾 提问者

可是这个不是涉及副作用和顺序点的关系吗,分号是顺序点,碰上顺序点在这之前的副作用不是都要完成吗
2018-08-06 回复 有任何疑惑可以回复我~
#2

慕田峪9303960 回复 包小龙虾 提问者

是的呀!但是++语句再前再后的规则就是这样,和你这个分号要结束语句不冲突,
2018-08-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

114. 以下程序运行后屏幕输出为( )

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信