为什么控制台打印yes语句?


int a{1};
while(a--){
cout<<"yes";}

为什么控制台打印&;yes&;, while的值应该是0

变量a已初始化为值1。此外,表达式a--使用了后减操作符。所以表达式a--有两个作用:

  1. 减少a,使a的新值变为0
  2. 返回a的旧值1

因此条件为真,while块只输入一次。


另一方面,如果您要使用--a,那么while块将不会被执行,因为--a使用前缀递减运算符它返回递减的值(在您的情况下是0),而不是返回旧值。因此,条件将不满足,并且永远不会进入while块。

a--(使用后缀操作符))表示首先检查a的值,然后递减。也就是说,表达式a--的值是a的减量前的值。

因此在第一次while迭代中,它仍然是1。

如果您使用--a代替(这是使用前缀操作符调用)),你就不会看到"是";打印出来,因为--a表示先递减,然后检查结果值。

最新更新