问题描述
- 求大神帮助,c++新手提问关于while的
- 语句
int i=0x=0;
while(!x&&i<3)
{
x++;i++;
}
我的理解是这里x=0那么!x就是非0,即为真吧,那么它为什么是能循环一次,求详解。
另外我在循环里加上了cout<<x<<i,x和i输出都是1.完全不懂,求解
解决方案
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不再执行,所以该循环只执行一次。
解决方案二:
while(!x&&i<3) //第一次x=0i=0能进循环{x++;i++; //x++x变成1了i++i变成1了,第二次循环!x就是false.,while不满足,就结束while循环}
解决方案三:
x=0既x=false,所以!x=true,i<3也为true,所以第一次可进循环。
解决方案四:
第一次:初始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。
所以只执行了一遍
解决方案五:
因为循环一次以后,x=1,i=1,所以!x就是false了,循环就停止了啊
x和i都是在循环里自增,所以循环一次,输出的肯定都是1了呀
解决方案六:
第一次循环后x=1,一次!i为false;你如果想看见x++的后加行为你可以这样 int a = x++;这样a为x自增以前的值
解决方案七:
while( !x && i < 3)
执行一次循环之后
变为
while( !1 && 1 < 3)
!1 == 0 1 < 3 == 1
==>
while( 0 && 1)
解决方案八:
因为第一次循环的时候2个都是0那么是满足条件的,所以可以进去,
你输出2个都为1是因为你是在++后输出的吧
解决方案九:
第一次进去能满足条件,第二次加1后就不能进去while了,所以都打印1
解决方案十:
理解C++会把0作为false,非0值作为true就容易了。
关键是要一步步分析。最后,实际生产中不要写出一些怪异的代码,要简洁易懂。