我有以下代码:
#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/