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

为什么加入cout<<x或者cout<<“x”后,程序就变成死循环了?

为什么加入cout<<x或者cout<<“x”后,程序就变成死循环了?

噜噜哒 2022-05-31 13:10:51
#include <iostream>using namespace std;int main(){int x=3;int i;do{x-=2;cout<<x;}while(!(--x),cout<<x);return 0;}在while语句中,如果写成while(!(--x));程序是可以ok的,但是加入cout<<x或者cout<<“x”后,程序就变成死循环了,为什么?
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

cout cin这些输入流的函数自己是有返回值的
while(!(--x),cout<<x) 你这样写,那么while括号里面的循环条件就成了一个逗号表达式,这个逗号表达式的值就是cout<<x的返回值,而不是!(--x)的值,而且cout<<x的返回值不是0,所以循环条件始终为真,那就死循环了。在你的这个程序里面cout<<x的返回值是-30,你可以自己编译cout<<(cout<<x);看看他值是多少。

查看完整回答
反对 回复 2022-06-06
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

逗号运算符返回的是它的最后一个表达式,所以!(--x), cout<<x 返回的是cout的值而!(--x)的返回值就被忽略了。

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

添加回答

举报

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