用putchar在屏幕上打印字符

时间:2017-11-24 07:36:52

标签: c++

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打印两个字符。

2 个答案:

答案 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':以使您的代码可编辑。