【发布时间】:2015-03-12 02:13:11
【问题描述】:
我看不出我的逻辑在代码中哪里有缺陷,出于某种原因,即使 ch 不等于 32,它也会将 1 添加到 i。
int main(void)
{
int ch;
float i, j;
printf("Enter a sentence: ");
for (i = 1, j = 0;;)
{
ch = getchar();
if (ch == '\n' || ch == EOF)
break;
if (ch != 32)
j++;
if (ch = 32)
i++;
}
printf("Average word length: %.2f", j/i);
return 0;
}
【问题讨论】:
-
将
=替换为==。完成。 -
帮助避免此错误的一种方法是始终说
32 == ch,而不是你如何拥有它。然后,如果您忘记了一个=,则会出现错误或警告,因为您无法将ch的值分配给32 -
一个适当的编译器,具有适当的编译器设置,会指出这个错误。
-
@FCo:宁可使用正确的编译器设置,例如使用 gcc、-Wall 和 -Werror,这会产生编译时错误。
-
@Étienne 是的,你是对的。
标签: c