C:为什么这段代码打印出来?

时间:2016-11-15 00:18:10

标签: c while-loop char

有人可以解释为什么此代码打印5 A AAAAA而不是4 A AAAA

char 'A' - 65'B' - 66'Z' - 90

的值
#include <stdio.h>

int main() {
    char a = 'B', b = 'A';
    while (a++ < 'Z') {
        if (a % 5 == 0)
            printf("%c", b);
    }
    return 0;
}

我计算了多次,结果我得到了4个A,所以我不明白为什么正确答案是5 A

1 个答案:

答案 0 :(得分:2)

让我们“手动”遍历您的代码。

Stop condition: a < 90 ('Z')

    a = 'B' = 66
    ...
    a = 70 => 'A' printed
    ...
    a = 75 => 'A' printed
    ...
    a = 80 => 'A' printed
    ...
    a = 85 => 'A' printed
    ...
    a = 89 =>
  • 检查条件(a ++&lt; 90)并计算为true,因为你使用后缀增量运算符(a ++),变量a在比较后递增,因此,在下一个操作中“if(a%5 == 0)“,变量a现在的值为90,因此通过检查并获得第5个'A'打印

检查https://stackoverflow.com/questions/7031326/what-is-the-difference-between-prefix-and-postfix-operators