void main ()
{
char ch='A';
while (ch <='F'){
switch (ch){
case 'A':
case 'B':
case 'C':
case 'D': ch++; continue;
case 'E';
case 'F': ch++;
}
putchar (ch);
}
我的问题是,为什么程序的输出只是FG,为什么它不打印字母E(EFG)。而且,当putchar的定义是在屏幕上只打印一个字符时,为什么putchar打印两个字符。
答案 0 :(得分:0)
说到案例E,因为没有休息;在该语句之后,它将在switch语句中执行每个case,从而执行ch ++;案件F E ++是F所以putchar会打印F 接下来,因为while语句中的条件小于或等于F,它将再次输入开关 如果是F,它将再次执行ch ++,现在ch保持G的值,putchar打印G G不小于或等于F,它退出while循环并结束。 所以你打印了F然后G。
答案 1 :(得分:-1)
关于为什么没有打印E的问题,请看一下我对你的代码所做的评论:
void main ()
{
char ch='A';
while (ch <='F'){
switch (ch){
case 'A': // ch: A=>B; continue;
case 'B': // ch: B=>C; continue;
case 'C': // ch: C=>D; continue;
case 'D': ch++; continue; // ch: D=>E; continue; | E isn't printed here "continue" is called instead.
case 'E'; // ch: E=>F; putchar(F); | E isn't printed here either F is printed because F is assigned just before "putchar" is called.
case 'F': ch++; // ch: F=>G; putchar(G);
}
putchar (ch);
}
第二个问题,为什么putchar打印两个字符: 它没有。它每次只向输出缓冲区写一个字符,但输出缓冲区在后期调用时写入屏幕。
在putchar之后使用std::cout.flush()
立即显示您的输出。
另请将case 'E';
更改为case 'E':
以使您的代码可编辑。