为了账号安全,请及时绑定邮箱和手机立即绑定

while(!(--a))是什么啊?有了解的吗?

while(!(--a))是什么啊?有了解的吗?

C++ C
ABOUTYOU 2022-06-02 17:13:37
下列程序段的输出结果是 。int a=3;do { printf(“%d\n”,a-=2);} while(!(--a));A)3和0 B)死循环,没有输出 C)1和-2 D)1答案选C,我只知道1,不知道-2怎么来的。
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

while(!(--a))的意思为先计算a=a-1,再判断a的值是否为0,为0则继续执行循环语句,实例解析如下:

①如图,首先先执行a=a-2,得a=1并输出

②再执行while(!(--a)),此时先执行a=a-1,得a=0,所以!a不为0,所以此时while的逻辑判断为真,会继续执行printf(“%d”,a-=2);所以会输出-2,然后继续判断!a就为0了,此时判断逻辑假,不会继续执行循环了。

再如下图:

输出a=1后,得出a=0,逻辑为假,此时直接退出循环,所以只输出1.


查看完整回答
反对 回复 2022-06-06
?
慕容森

TA贡献1853条经验 获得超18个赞

C/C++没有所谓的“逻辑量”,而是用普通数值表示逻辑值。
其中0表示逻辑假,非0值表示逻辑真。
例题第一次循环结束时,a值为1,此时循环条件!(--a)=!0为真,因此会进入第二次循环从而输出-2。

查看完整回答
反对 回复 2022-06-06
  • 2 回答
  • 0 关注
  • 354 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信