C语言程序运行的结果为什么是这样的?

#include"stdio.h"
main ( )
{
int c=0,k;
for (k=1;k<3;k++)
switch (k)
{
default: c+=k;
case 2:c++;break;
case 4:c+=2;break;
}
printf("%d\n",c);
}
程序运行的结果,为什么只是一个3,而不是2和3两个数?其中的printf语句不是执行两次吗???

事实上,printf()只运行了一次。因为for循环下面只有一个switch,printf()是在循环外的。

你可以这样看
#include"stdio.h"
main ( )
{
int c=0,k;

for (k=1;k<3;k++)
switch (k) {default: c+=k; case 2:c++;break; case 4:c+=2;break;}

printf("%d\n",c);
}追问

哥早已经弄明白了,不过你是第一个回答,并且是对的,就选你了~~

温馨提示:内容为网友见解,仅供参考
无其他回答

c语言为什么是这样的结果
在C语言的printf函数中,出现"printf("%d %d ",m==n,m);"这种语句时,其结果输出为"0 1"的原因在于浮点数的表示与运算。具体分析如下:首先,变量n的计算结果是通过浮点数运算得出的,即n=(1.1*9.9-3.3*4.4)\/(1.1*5.5-2.2*4.4)。这个运算看似应得到结果1.0,但实际上,由于浮...

请问各位c语言高手以下代码为什么运行结果是这样
最终仅仅打印一个换行符,也就是输出结果仅仅换行了,没有任何字符输出。循环是判断是否为换行符,一直检测到换行符才停止循环 isalpha()是判断是否为英文字母,这几个显然都是,正常都要打印 但是由于while()后有一个分号,因此最终ch = '\\n'因此{}中的代码仅仅执行一个putchar(),其它无任何输出 ...

c语言运行结果是一个很大很大的数是什么原因造成的。能不能列举一下哪 ...
有两种原因 第一种上面都说了是没有赋初值,系统随机地址就显示出来了。第二种是你运算过程中产生了溢出,导致数值异常大。产生溢出的原因很多,比如你定义了一个整形结果是一个长整形就会溢出。一般来说是这样的错误。

C语言运行结果为什么会这样,为什么后面会多字母
由于a、b、c并没有赋值,因此执行此语句时,程序随机取数计算,而不是你输入的a、b、c的值,因为还没有读取到你的数值。

C语言运行结果为什么是这样
m=++i, i把自增之后的值赋给m, 所以m=++i之后, m和i的值是相等的;n=j++, j先把原值赋给n, 然后自增1, 所以n保存的是j原来自增之前的值,也就是6, 而j自增后变为7;

c语言这个程序输出结果为什么是24?
这是因为编译时存在字节对齐的原因,字节对齐主要是为了提高内存数据读取速度。如果你想要让结果等于实际大小,你可以设置字节对齐大小如 pragma pack(1)取消设置 pragma pack()字节对齐的规则如下:结构体的大小等于其最大成员的整数倍;结构体成员的首地址相对于结构体首地址的偏移量是其类型大小的整数倍...

这个程序为什么是这个结果呀!!
这里体现的是&&和||的“断路”特性 当进行&&运算时,如果前面的表达式结果为0,则整个运算结果一定为0,因此,C语言中就规定了,&&遇0则止,不再运行后面的表达式。同理,当运行||运算时,如果前面的表达式结果为1,则整个运算结果一定为1,因此,规定了,||遇1则止,不再运行后面的表达式。a=b=...

C语言问题:求大佬告诉我为什么会输出这样的结果。
u 是无符号十进制小数(无负数),你用的是c,所以是32位,而且-1的二进制是32个1,刚好是4294967295 用c,最好要弄清楚%x代表是什么含义

C语言 求解析为什么程序运行后输出结果为123 456
a[3],a[4],a[5]); \/\/向文件d2.dat写入了456 然后 fscanf(fp, "%d%d", &k,&n); \/\/从文件d2.dat中输入两个值到两个变量k和n中, 从文件得到的值分别是123和456,所以k=123, n=456 所以 printf("%d %d\\n", k,n); \/\/输出k和n,分别是123和456,所以结果就是123 456 ...

C语言程序 为什么此程序的运行结果为 3,5,5,3??我自己分析是5,3,6,2
void fun()功能为互换两个数,结果:3,5,main()调用fun(a,b)后,由于参数传递为值传递,单向传递,结果不能传回主调函数,所以main()内a和b之不变,结果5,3 所以,此程序的运行结果为 3,5,5,3

相似回答