我有以下代码:
#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。
我无法看到我在这里出错的地方。
答案 0 :(得分:4)
您尚未初始化lower
。它的价值是不确定的。
如果没有显式初始化具有自动存储持续时间的对象,则其值为 不定。
将其初始化为0
。
int ch, lower = 0, upper = 0;