2 baidu 22539649 baidu_22539649 于 2015.06.15 13:27 提问

求大神帮助,c++新手提问关于while的
c++

语句
int i=0,x=0;
while(!x&&i<3)
{
x++;i++;
}
我的理解是这里x=0,那么!x就是非0,即为真吧,那么它为什么是能循环一次,求详解。
另外我在循环里加上了cout<<x<<i,x和i输出都是1.完全不懂,求解

12个回答

guwei4037
guwei4037   Ds   Rxr 2015.06.15 13:31

1、!x&&i<3 第一次x=0,x为假,所以!x为真, && 逻辑与,即!x和i<3都为真,才执行。后面的i<3为真,进入while循环体内部。
x++;i++;之后,x为1,i为1。所以cout<<x<<i,x和i都为1.
2、第二次循环,x为1(真),则!x为0(假),&&右边的i<3不再执行,所以该循环只执行一次。

danielinbiti
danielinbiti   Ds   Rxr 2015.06.15 13:32
 while(!x&&i<3)  //第一次x=0,i=0,能进循环
{
x++;i++;  //x++,x变成1了,i++,i变成1了,第二次循环!x就是false.,while不满足,就结束while循环
}
a1193561652
a1193561652   Rxr 2015.06.15 13:45

x=0既x=false,所以!x=true,i<3也为true,所以第一次可进循环。

star890124
star890124   2015.06.15 14:13

第一次:初始x=0,i=0,判定条件!x为true,i<3为true,综合为true,最后,x=1,i=1
第二次:初始x=1,i=1,判定条件i!x为false,i<3为true,综合为false

x=0时,!x为true
x不为0时,不论为几,!x都是false。

所以只执行了一遍

jianjian1992
jianjian1992   2015.06.15 13:30

因为循环一次以后,x=1,i=1,所以!x就是false了,循环就停止了啊
x和i都是在循环里自增,所以循环一次,输出的肯定都是1了呀

lyzyung
lyzyung   2015.06.15 13:33

第一次循环后x=1,一次!i为false;你如果想看见x++的后加行为你可以这样 int a = x++;这样a为x自增以前的值

baidu_28935457
baidu_28935457   2015.06.15 13:41

while( !x && i < 3)
执行一次循环之后
变为
while( !1 && 1 < 3)

!1 == 0 1 < 3 == 1
==>
while( 0 && 1)

q3733353520
q3733353520   2015.06.15 14:21

因为第一次循环的时候2个都是0,那么是满足条件的,所以可以进去,
你输出2个都为1是因为你是在++后输出的吧

ycg514230
ycg514230   Rxr 2015.06.15 16:48

第一次进去能满足条件,第二次加1后就不能进去while了,所以都打印1

zhi_ai_yaya
zhi_ai_yaya   Rxr 2015.06.15 18:25

理解C++会把0作为false,非0值作为true就容易了。

关键是要一步步分析。最后,实际生产中不要写出一些怪异的代码,要简洁易懂。

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片