使用前缀减量运算符( - ):变量是0而不是0?

时间:2014-05-16 05:58:11

标签: c operators decrement

代码

int main() {
  int cnt = 5;
  while(cnt > 0) {
    printf("cnt = %d %s\n", --cnt, (cnt == 0) ? "cnt == 0" : "cnt != 0"); 
  }
  return 0;
}

我的预期输出

cnt = 4 cnt != 0
cnt = 3 cnt != 0
cnt = 2 cnt != 0
cnt = 1 cnt != 0
cnt = 0 cnt == 0

实际输出

cnt = 4 cnt != 0
cnt = 3 cnt != 0
cnt = 2 cnt != 0
cnt = 1 cnt != 0
cnt = 0 cnt != 0

我认为当cnt = 1之后--cnt,cnt将有新值0,而测试cnt == 0将为真,但实际结果不是我所期望的,为什么?

0 个答案:

没有答案