C 计算2的幂,每次打印0

C 计算2的幂,每次打印0,c,C,这是我的密码: int foo() { int a = 1; while(1) { a *= 2; printf("a = %d\n", a); } return a; } int main(void) { foo(); return 0; } 它只是不断打印出“a=0”。我糊涂了!我错过了一些非常简单的东西吗?它溢出到零,并停留在那里 它溢出到零,并停留在那里 它对我来说很好()WTF是,而(1)你故意从不退出循环?@iharob我怀疑这是整个实

这是我的密码:

int foo() {
  int a = 1;
  while(1) {
    a *=  2;
    printf("a = %d\n", a);
  }
  return a;
}


int main(void) {
  foo();
  return 0;
}

它只是不断打印出“a=0”。我糊涂了!我错过了一些非常简单的东西吗?

它溢出到零,并停留在那里

它溢出到零,并停留在那里

它对我来说很好()WTF是
,而(1)
你故意从不退出循环?@iharob我怀疑这是整个实际程序。这可能是一个简单的例子,旨在说明问题是什么,就像你应该发布的那样。同样,要打印二的幂,你应该学习
为什么OP没有把这个例子变成一个简单的
(…)
的例子,这让我很困扰,因为我在非常复杂的情况下看到有人故意使用
而(1)
。。。而且,使用一个简单的for-like
for(i=0;i<31;i++)
这个问题不会发生,对吗?它对我来说很好()WTF是
,而(1)
你故意从不退出循环?@iharob我怀疑这是整个实际程序。这可能是一个简单的例子,旨在说明问题是什么,就像你应该发布的那样。同样,要打印二的幂,你应该学习
为什么OP没有把这个例子变成一个简单的
(…)
的例子,这让我很困扰,因为我在非常复杂的情况下看到有人故意使用
而(1)
。。。而且,用一个简单的for-like
for(i=0;i<31;i++)
这个问题不会发生,是吗?