新手求指导c++ if语句问题

#include<stdio.h>intmain(){intx=1;if(x=0){x=x+2;}printf("%d\n",x);return0;}求助……为什么这样输... #include<stdio.h>
int main()
{
int x=1;
if(x=0)
{
x=x+2;
}
printf("%d\n",x);
return 0;
}
求助……为什么这样输出的是0而不是2呢……
展开
 我来答
爱生活的翟先森
2012-11-22 · TA获得超过163个赞
知道答主
回答量:50
采纳率:0%
帮助的人:36.2万
展开全部
if后面是判断(注意是判断)if语句块是否执行的条件,而不是像你那样的赋值语句。
判断用x==0.赋值用x=0.一般写好多代码时为了避免自己犯错,大多写成0==x.

接着再说说你这个程序:到了if要判断条件,你这里x被赋值为了0,就相当于if(0),而0又相当于假,所以if语句块没执行,结果当然就不是2啦。
wanglixin1001
2012-11-22 · TA获得超过4174个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:882万
展开全部
#include<stdio.h>
int main()
{
int x=1;
if(x=0) // =是赋值语句,将x赋值为0,而if(0)是不执行x=x+2的。所以输出0
{
x=x+2;
}
printf("%d\n",x);
return 0;
}
追问
也就是说这里的if(x=0)跟if(0)是等同的……?就是不执行后面大括号语句的意思……?
追答
是的,x=0是个赋值语句,而该表达式也有值,即为执行x=0后x的值。
所以if(x=0)等价于x=0;if(x),即if(0),if(0)则不会执行{}里面的语句了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
edisonrush
2012-11-22 · TA获得超过554个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:174万
展开全部
赋值语句的值 是 等号的右边表达式的值, 而if的条件为 x=0, 所以这个表达式的值 为0,也就是
false, 所以 不执行 x = x+2; 所以为0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
brantlane
2012-11-22
知道答主
回答量:5
采纳率:0%
帮助的人:8003
展开全部
因为你用的X= 0.而不是X==0.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-11-22
展开全部
请先自行判断一下

if(x=0)

if(x==0)

有什么区别?
追问
x=0是赋值x==0是判断吧……
但是这道题里那个x=x+2不执行了么……?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式