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

问题描述

求大神帮助,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就容易了。

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

时间: 2024-08-01 21:13:16

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

c语言-C语言版非递归马踏棋盘·死循环了·求大神解答·小弟新手求助

问题描述 C语言版非递归马踏棋盘·死循环了·求大神解答·小弟新手求助 这是出现死循环的代码bool solution(Move move, Pos &beginPos){ if(!move) { printf("solution Failed!"); return false; } int chessBoard[8][8] = {0}; push(move, beginPos); chessBoard[beginPos.mX][beginPos.mY] = 1; int ste

已是淘宝源,可是compass还是安装失败,求大神帮助!新手求助

问题描述 已是淘宝源,可是compass还是安装失败,求大神帮助!新手求助 机子上之前装了ruby和sass,也用的淘宝源进行安装的,可是这次自己装compass就总是失败,自己看看很多安装的帖子,博文,都说在淘宝源下就可以正常的安装,可是我装了很多次,也没有成功,想学习compass,却进行不下去,求大神指导下!!!!谢谢 解决方案 淘宝源已不能用了,推荐http://ruby.sdutlinux.org/

tomcat应用移植到websphere异常,求大神解答,新手,急求

问题描述 [13-7-164:39:03:872GMT]00000117ServletWrappeE[ServletError]-[org.apache.struts.action.ActionServlet]:java.lang.ClassNotFoundException:org.apache.struts.action.ActionServletatcom.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoade

android-求助:我是Android 新手 求大神帮助

问题描述 求助:我是Android 新手 求大神帮助 Android新手,想要请教给位大神帮助,为什么我的虚拟机一运行,上边框 就没有了 直接顶在了屏幕的左上边?没有最小化关闭按钮了,再就是,我自己用PS画了一个图标,为什么添加图标了 在RUN 一下,就显示下面的东西,菜单进不去.....求帮忙啊 解决方案 ![ 解决方案二: 换虚拟机吧,软模拟太难用了,用genymotion 解决方案三: 虚拟机可以换Genymotion,真的很快!你添加的是要显示封面的吗?是不是你的图标是中文命名的? 解决

ajax-Ajax的一个问题,求大神们回答!

问题描述 Ajax的一个问题,求大神们回答! <%@ page language=""java"" import=""java.util.*"" pageEncoding=""UTF-8""%> var xmlhttp;function verify() { var userName = document.getElementById(""username

线程-Android Studio跑程序的时候报错了 求大神指教!!

问题描述 Android Studio跑程序的时候报错了 求大神指教!! 02-29 21:27:52.770 13264-13270/com.example.cms.yibujiazai E/jdwp: Failed sending reply to debugger: Broken pipe 02-29 21:27:52.820 13264-13264/com.example.cms.yibujiazai W/dalvikvm: VFY: unable to find class refer

c# 基础知识-已知:0.37*X+1.14*Y=95927.6, X和Y是整数。求解:X=? Y=? 求大神帮忙

问题描述 已知:0.37*X+1.14*Y=95927.6, X和Y是整数.求解:X=? Y=? 求大神帮忙 本人新手一枚,用的是C#,就是得不出结果,求大神帮忙指点一下! using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _1 { class Program { static void Main(string[] args) { for (int x =

android汤姆猫怎么点击各个身体部分实现各个动作求大神解答新手

问题描述 android汤姆猫怎么点击各个身体部分实现各个动作求大神解答新手 汤姆猫怎么点击各个身体部分实现各个动作汤姆猫怎么点击各个身体部分实现各个动作汤姆猫怎么点击各个身体部分实现各个动作汤姆猫怎么点击各个身体部分实现各个动作 解决方案 根据点击的位置不同,播放不同的动画就行了

java-JAVA 我想在10到1000之间打印各个数位之和为5的数字,这样写有什么错,新手求大神指点

问题描述 JAVA 我想在10到1000之间打印各个数位之和为5的数字,这样写有什么错,新手求大神指点 public class Demo1 { public static void main(String []args){ int n=10; int t=n; int sum=0; while(t<=1000) { t++; sum=sum+t%10; t=t/10; } if(sum==5) { System.out.println(""各个数位之和为5的有:"&q