发布网友 发布时间:2022-04-20 13:45
共1个回答
热心网友 时间:2022-05-20 16:50
执行case2是因为在switch(x)中x=1,所以执行case1,然而case1这条语句没有break,所以switch(x)在执行了case1之后将继续往下依次执行case语句,直到碰到break就跳出switch循环。
对于“a的自加是先执行后在自加,当此程序a自加的时候没有执行其他语句啊??????”则是你没看到程序中的语句a++,b++它自加完了以后把值任然是赋值给a,b本身的,而不是赋值给其他变量例如c=a++;z=b++。如果是这样赋值给别的变量的话那么就很明确了c,z的值将和课本上说得一样都是自加以前的值。也就是说这个程序当中最后printf输出的是a,b的值,但是a,b在自加过程中值都变化了,就是说相当于语句a=a++,b=b++.
我将你的程序进行了更改,你将两个程序都运行下然后再对照着看一下就明白为什么a,b的值最后是2和1了,程序如下
#include<stdio.h>
main()
{
intx=1,y=0,a=0,b=0,c=0,z=0;
switch(x)
{case1:<br>switch(y)<br>{<br>case0:c=a++;break;<br>case1:b++;break;<br>}
case2:c=a++,z=b++;break;
case3:a++,b++;
}
printf("c=%d,z=%d
",c,z);
}
对于++i和i++有什么区别?
简单而言:++i在i存储的值上增加一并向使用它的表达式“返回”新的,增加后的值;而i++对i增加一,但返回原来的是未增加的值。