变量值递增不正确

时间:2014-04-07 21:14:42

标签: c

我有以下代码:

#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);
}

由于某种原因,正确设置了上部变量,但无法解决为什么下部变量给出错误值。例如。如果我输入足球&#39;它说4195825转换为小写,实际输出应为1。

我无法看到我在这里出错的地方。

1 个答案:

答案 0 :(得分:4)

您尚未初始化lower。它的价值是不确定的。

C11:6.7.9初始化(p10):

  

如果没有显式初始化具有自动存储持续时间的对象,则其值为   不定。

将其初始化为0

int ch, lower = 0, upper = 0;