我有以下代码:

#include <stdio.h>
#include <ctype.h>

int main(int argc, char **argv)
{
        int ch, lower, upper = 0;
        printf("Enter a line of text: \n");
        while ((ch = getchar()) != EOF) {
        if (islower(ch)) {
                ch = toupper(ch);
                ++upper;
        } else if (isupper(ch)) {
                ch = tolower(ch);

                printf("Looking at lower: %d\n", lower);
                ++lower;
                printf("Looking at lower: %d\n", lower);
        }
        putchar(ch);
        }
        printf("Hello\n");
        printf("\nRead %d characters in total. %d converted to upper-case, %d to lower-case.", upper+lower, upper, lower);
}

由于某些原因,上面的变量设置正确,但无法找出lower给出错误值的原因。例如,如果我输入“Football”,它会显示4195825已转换为小写,实际输出应为1。
我看不出哪里出错了。

最佳答案

您尚未初始化lower。它的价值是不确定的。
C11:6.7.9初始化(第10页):
如果具有自动存储持续时间的对象未显式初始化,则其值为
不确定。
初始化为0

int ch, lower = 0, upper = 0;

关于c - 变量值递增错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22923235/

10-13 02:50