有以下程序 int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; .....

 我来答
丁亭晚史姬
2020-01-13 · TA获得超过3.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:32%
帮助的人:691万
展开全部
if(a=1)
b=1;c=2;
这一行有问题
if和else之间永远只能有一条语句,而b=1;c=2;是两条语句!
c语言一条语句可以写在多行,多条语句也可以写在一行,关键是就分号,一个分号到上一个分号(或者是{,左半花括号)之间的内容都被认为是一条语句
所以想在if和else之间执行多条语句的时候,必须用花括号{},使多条语句组成一条复合语句。
如果把b=1;c=2;改为b=1,c=2;就可以编译通过了,它的结果是1,1,2,0
原因是if(a=1)是先给a赋值,然后判断a的值,非0则执行if后紧跟的语句,若为0则执行else后跟的语句,这里给a赋值为1,非0,因此执行给b,c赋值的语句,所以结果是1,1,2,0
进一步,如果把if(a=1)改为if(a=0),程序执行流程跟刚才说的一样,但是由于a值为0,因此执行else后的语句,所以最后结果会是0,0,0,3
再进一步,如果把if(a=1)改为if(a==1),那么程序执行的时候,判断a是否等于1,若等于则给bc赋值,否则给d赋值,这里a==0,因此执行else后的语句,结果跟前一种情况一样,会是0,0,0,3
仉孝乌己
2020-01-14 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.3万
采纳率:33%
帮助的人:772万
展开全部
int
a=0,b=1,c=2;
//
不需要解释吧
++a>0
//
a成了1,然后做了次1>0的比较,结果为真
++a>0||++b>0
//
由于||之前已经为真,||之后的表达式就不执行了,b的值不变
++c;
//
if成功,执行下面的语句
你应该是没理解||和&&的估值规则吧。他们的左边是必然会被执行的,但左边执行完之后,右边就不一定了。上面是||,如果&&的话,左边为假则&&右边不执行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式