看看这个简单的C语言题目。

来源:百度知道 编辑:UC知道 时间:2024/06/27 05:23:17
本人初学C语言,希望专家不要耻笑。求学嘛,不怕丢人
程序没有格式和打印错误(假设),#include<stdio.h>
main{}
int n='c';
switch(n++)
{
default:printf("error");break;
case 'a':
case 'A':
case 'b':
case 'B':printf("good");break;
case 'c':
case 'C':printf("pass");
case'd':
case 'D':printf("warn");
}
说的是输出结果是 passwarn,我想问的是“n++”有用吗?是不是和写成“n”完全一样?
开始的main是我不小心写错的

程序是这样运行的额:
首先定义的整形变量N在程序运行时转换为Ascll码与switch中的字符相对应进行选择;接着执行语句:当switch中的变量与N相同时就执行这个语句直到break或default,这个程序中,由于N=c,与程序中的C对应,执行语句输出pass,又没有是语句趋于完结的break或default,所以继续执行 d,输出warn,但是还是没有完结语句标志,所以应该还要执行default,输出error才对哦,呵呵。
对于N++在此程序中的用处不大,也可以说没有用,因为N++先执行N在加一,所以还是选择C,不是加一后的值,完全可以用N代替
个人意见,仅供参看!!!!!!!!!

有用的。
比如说 int n=1,y=0;
现在 n是1 y是0
y=n++;

然后y是1了 n是2了
n++是先赋值 再自增的

大概就这样

因为你case 'c':后没有break;所以case 'c':下面的也执行了
n++的支持楼上的

你写的这段程序有问题..刚开始main()函数就有了。而int n='c'---这里也有。。因为int是整型数据。。但你给n的值是个字符。。所以,又错了。。而n++跟n也有差别的n是一个不会走的变量。。而n++即是一个会 走的变量。来的。所以不一样。
你运行的结果一样只是因为你的程序只运行了一次。。pass跟warn一起被输入了。

A-Z的ASCC码是65-90 a-z的ASSCC码是97-122,你的switch语句中的作为条件的是n=99,而不是n++后的值(100);从而可以已看出只有case 'c'符合条件故从这个地方开始向下执行,但你在printf("pass")后没有break语句,所以将一直向下执行,直至结束;从而执行了最后两个输出语句;

c++是先引后加,也就是先开始执行c=c,后执行c=c+1,而这里c用的是第一个式子的值,也就是说虽然的确是增加了1,但引用的是却是c=c。