72. 以下程序的运行结果是( )。麻烦会的大神详细解析下,谢谢
72. 以下程序的运行结果是( )。
void main( )
{ int n=5;
if(n++>=6)
printf("%d\n",n);
else
printf("%d\n",++n);
}
A. 4
B. 5
C. 6
D. 7 |
免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。
版权声明:作者保留权利,不代表本站立场。
|
|
|
|
|
|
|
D
if(n++>=6)//此时n++是在执行这句判断语句后再做自增操作,此时n=5,所以判断语句进入else.//进入else语句后,n自增,n=6printf("%d\n",++n);//此时++n是先执行自增操作后进行print,此时n=6,进行自增操作后,n=7.//然后执行print操作,打印出7 |
|
|
|
|
|
|
|
我假定你已经看过了我对“表达式有值”的讲解。那么在理解了这点之后,我们来看下这个代码的执行。
n 的初值为 5
在 if 语句的条件判断部分里,判断的是“n++ 表达式”和 6 的关系。还记得吧,“n++ 表达式”的值就是 n 自增前的值,也就是 5。那么 5 不大于等于 6,所以条件为否,执行流程进入 else 中。
注意,if 的条件判断结束时也是序列点,所以能够确定在进入分支时,n 肯定自增为 6 了。
else 中只有一个 printf 语句,再次注意,printf 打印的是“++n 表达式”的值。 前置自增表达式的值就是操作数自增之后的值。 那么“++n 表达式”的值就是 7。 |
|
|
|
|
|
|
|