int a{1};
while(a--){
cout<<"yes";}
为什么控制台打印&;yes&;, while的值应该是0
变量a
已初始化为值1
。此外,表达式a--
使用了后减操作符。所以表达式a--
有两个作用:
- 减少
a
,使a
的新值变为0
。 - 返回
a
的旧值1
。
因此条件为真,while块只输入一次。
另一方面,如果您要使用--a
,那么while块将不会被执行,因为--a
使用前缀递减运算符它返回递减的值(在您的情况下是0
),而不是返回旧值。因此,条件将不满足,并且永远不会进入while块。
a--
(使用后缀操作符))表示首先检查a
的值,然后递减。也就是说,表达式a--
的值是a
的减量前的值。
因此在第一次while
迭代中,它仍然是1。
如果您使用--a
代替(这是使用前缀操作符调用)),你就不会看到"是";打印出来,因为--a
表示先递减,然后检查结果值。