Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.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/8/variables/2.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_Variables_Initialization - Fatal编程技术网

C 变量被视为未初始化

C 变量被视为未初始化,c,variables,initialization,C,Variables,Initialization,在下面的C代码中(受K&R中的示例启发),变量nw被视为未初始化: #include <stdio.h> #define IN 1 #define OUT 0 main(){ int c,nl,nw,nc = 0; int state = OUT; while((c=getchar())!=EOF){ ++nc; if(c=='\n') ++nl; if(c==' ' || c=='\n

在下面的C代码中(受K&R中的示例启发),变量
nw
被视为未初始化:

#include <stdio.h>
#define IN 1
#define OUT 0
main(){

    int c,nl,nw,nc = 0;
    int state = OUT;
    while((c=getchar())!=EOF){
        ++nc;
        if(c=='\n')
            ++nl;
        if(c==' ' || c=='\n' || c=='\t')
            state = OUT;
        else if(state == OUT){
            state = IN;
            ++nw;
        }
    }

    printf( "%d %d %d\n" , nl, nw, nc);
}
中间的数字应该是3(
nw
=字数)

我不明白为什么会发生这种情况,因为我在一开始就显式地给它赋值

这一行:

int c,nl,nw,nc = 0;
不会做你认为它会做的事。只有
nc
设置为0

如果您还想初始化其他文件,则必须显式执行此操作:

int c = 0, nl = 0, nw = 0, nc = 0; 
这一行:

int c,nl,nw,nc = 0;
不会做你认为它会做的事。只有
nc
设置为0

如果您还想初始化其他文件,则必须显式执行此操作:

int c = 0, nl = 0, nw = 0, nc = 0; 
我不明白为什么会发生这种情况,因为我在一开始就显式地给它赋值

您没有将值分配给
nw
nc
是唯一分配的值

与数组初始化不同,在数组初始化中,可以通过从初始值设定项中省略零来为多个元素赋值,标量变量必须全部单独初始化:

int c, nl = 0, nw = 0, nc = 0;
请注意,您不需要初始化
c
,因为它是在循环头中无条件分配的

我不明白为什么会发生这种情况,因为我在一开始就显式地给它赋值

您没有将值分配给
nw
nc
是唯一分配的值

与数组初始化不同,在数组初始化中,可以通过从初始值设定项中省略零来为多个元素赋值,标量变量必须全部单独初始化:

int c, nl = 0, nw = 0, nc = 0;
请注意,您不需要初始化
c
,因为它是在循环头中无条件分配的