C 变量被视为未初始化
在下面的C代码中(受K&R中的示例启发),变量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
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
,因为它是在循环头中无条件分配的