Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.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_Initialization_Integer - Fatal编程技术网

C 为什么我的兴趣在这里上下浮动?

C 为什么我的兴趣在这里上下浮动?,c,initialization,integer,C,Initialization,Integer,当打印用户输入的读取值时,数字会下溢,我不明白为什么 所以我通过ANSIC标准只是把C作为一种语言,我不明白为什么前两个值会溢出或溢出 int c; int nl, bl, tab= 0; while ((c = getchar())!= EOF){ if (c == '\n'){ ++nl; } if (c == ' '){ ++bl; } if (c == '\t'){ ++tab; } p

当打印用户输入的读取值时,数字会下溢,我不明白为什么

所以我通过ANSIC标准只是把C作为一种语言,我不明白为什么前两个值会溢出或溢出

int c; 
 int nl, bl, tab= 0; 
  while ((c = getchar())!= EOF){
    if (c == '\n'){
      ++nl;
    }
    if (c == ' '){
      ++bl;
    }
    if (c == '\t'){
      ++tab;
    }
    printf("%d\t %d\t %d\n", nl, bl, tab);
  }

我在发布lol后马上解决了这个问题,但只是把声明改成了这个

int nl=0, bl=0, tab= 0; 
这里

intnl,bl,tab=0

选项卡设置为
0
,但不以任何方式初始化
nl
bl
。因此,当它们以后增加时,这是未定义的行为。请尝试以下方法:

int nl = 0, bl = 0, tab = 0; 

当您这样使用它时:
intn1,b1,tab=0


您不初始化
n1
b1
。因此产生了意想不到的结果。
变量
n1
b1
只是保存堆栈上的一些垃圾值,在您的示例中,您正在使用这些值。

可能逗号运算符没有达到预期效果:
见:

如果要一起初始化它们,可以这样做:

intn1,b1,tab
然后:
n1=b1=tab=0

是什么让你得出结论,你的数字是“下溢”的???到底什么是“下溢”?