Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
平均字长[C]_C - Fatal编程技术网

平均字长[C]

平均字长[C],c,C,我看不出我的逻辑在代码中哪里有缺陷,出于某种原因,它在I中添加了1,即使ch不等于32 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 (

我看不出我的逻辑在代码中哪里有缺陷,出于某种原因,它在
I
中添加了1,即使ch不等于32

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

要进行比较,必须使用
=
而不是
=
。此时您正在将ch设置为32,因此返回值始终为真。

如果(ch=32)
是问题,因为您将ch设置为32。如果(ch==32)


同样,也回答了类似的问题

=
替换为
=
。完成。避免此错误的一种方法是总是说
32==ch
,而不是说你是如何得到它的。然后,如果您忘记了一个
=
,则会出现错误或警告,因为您无法将
ch
的值分配给32A正确的编译器,如果使用正确的编译器设置,则会指出此错误。@FCo:而是使用正确的编译器设置,例如使用gcc、-Wall和-Werror,这将生成一个编译时错误。@Étienne是的,您是正确的。它解决了您的问题吗?