为什么我的思想在这里泛滥成灾?

noo*_*mer 3 c integer initialization

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

因此,我正在通过ansi C标准来选择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);
  }
Run Code Online (Sandbox Code Playgroud)

Bla*_*aze 8

这里

int nl, bl, tab= 0;

tab0,但不初始化nlbl以任何方式。因此,当以后增加它们时,这是不确定的行为。尝试以下方法:

int nl = 0, bl = 0, tab = 0; 
Run Code Online (Sandbox Code Playgroud)