#include <stdio.h>
int main() {
int x; int counter;
while (scanf_s("%d", &x) != 0)
{
puts("Enter the a signed number : ");
if (x % 2 == 0) { counter=counter++; }
}
printf(" %d pair numbers", counter);
}
我得到了
使用未初始化的局部变量计数器。
程序应该继续询问数字,直到它变为零并告诉我们给出的对数量。
答案 0 :(得分:0)
在尝试递增计数器之前,需要将计数器初始化为0。 counter = counter++;
也是多余的(并且未定义!)。只需使用counter++
答案 1 :(得分:-1)
您遇到的问题是由于您使用变量counter
而未初始化它。这正是编译器告诉你的。
当您第一次尝试执行counter=counter++;
时,counter
没有明确的值。您可能会认为int counter;
会使用0
进行初始化,但这在C中是错误的。
下一个问题是行counter=counter++;
本身。如果您想增加counter
,请使用counter++
。根据您使用的编译,counter=counter++
的使用应至少给您一个警告。在我使用Apple LLVM版本8.1.0(clang-802.0.42)的计算机上,我得到了
警告:对计数器&#39;进行多次无序修改[-Wunsequenced]
然后你尝试循环直到你阅读0
。但是scanf()
(使用此而不是Microsoft特定的scanf_s()
)不会返回它从stdin
读取的内容,但会分配输入项目的数量。如果匹配失败,它将返回0
。
所以这是做什么的:
counter
counter=counter++
替换为counter++
scanf()
一种方法可能如下:
#include <stdio.h>
int main() {
int x=0;
int counter=0;
do{
printf("Enter the a signed number: ");
scanf("%d", &x);
if (!(x % 2)){
counter++;
}
} while(x);
printf(" %d pair numbers\n", counter);
}