
C++程序:while(!(--x),cout<<x);使程序变成死循环,为什么?
#include<iostream>usingnamespacestd;intmain(){intx=3;inti;do{x-=2;cout<<x;}while(!(--...
#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”后,程序就变成死循环了,为什么? 展开
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”后,程序就变成死循环了,为什么? 展开
3个回答
展开全部
楼主,cout cin这些输入流的函数自己是有返回值的
while(!(--x),cout<<x) 你这样写,那么while括号里面的循环条件就成了一个逗号表达式,这个逗号表达式的值就是cout<<x的返回值,而不是!(--x)的值,而且cout<<x的返回值不是0,所以循环条件始终为真,那就死循环了。在你的这个程序里面cout<<x的返回值是-30,你可以自己编译cout<<(cout<<x);看看他值是多少。
关于cout cin的返回值,具体就比较复杂,楼主可以在网上查查资料
while(!(--x),cout<<x) 你这样写,那么while括号里面的循环条件就成了一个逗号表达式,这个逗号表达式的值就是cout<<x的返回值,而不是!(--x)的值,而且cout<<x的返回值不是0,所以循环条件始终为真,那就死循环了。在你的这个程序里面cout<<x的返回值是-30,你可以自己编译cout<<(cout<<x);看看他值是多少。
关于cout cin的返回值,具体就比较复杂,楼主可以在网上查查资料

2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
逗号运算符返回的是它的最后一个表达式,所以!(--x), cout<<x 返回的是cout的值而!(--x)的返回值就被忽略了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
cout<<x有自己的返回值,while判断的就是cout的返回值。试着写while(cout<<x,!(--x)),这样while判断的就是--x的值了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询