c语言第二题和第三题,求过程

 我来答
匿名用户
2015-01-05
展开全部
// 2
int x = 2, y = -1, z = 3;
if (x < y) {    // false
    if (y < 0)
        z = 1;
    else
        z++;
}
// z的值不变,仍为3

// 3
int a = 2, b = 1, c = 2;
if (a < b) { //  false
    if (b < 0)
        c = 0;
    else
        c += 1;
}
printf("%d\n", c);  // 2
濸海月明
2015-01-05 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:62
采纳率:100%
帮助的人:50万
展开全部
第二题:
题中代码等价于
if(x<y){
    if(y<0){
        z=1;
    }
    else{
        z++;
    }
}
因为x=2,y=-1,所以x<y == false,下面的代码都没有执行。z还是原来的值3.

第三题和第二题完全类似。
追问
else z++为什么也不执行
追答
因为if(x<y){
    //.....
}
如果if(x<y)不成立,{}中的代码都不会执行

如果没有{},else总是和它上面最近的if匹配,可以把if ... else ... 整个看成一个语句,也就是

if(x<y) {if(y<0) z=1; else z++;}

如果这样写 if(x<y) {if(y<0) z=1;} else z++;

z就等于4

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wbjwcy
2015-01-05
知道答主
回答量:56
采纳率:0%
帮助的人:25.2万
展开全部
第二题,else那个完全包含于第一个if,而第一个if就不执行
更多追问追答
追答
第三题同理
追问
else不是包含于最近的if吗,为什么是第一个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dongmeteor
2015-01-05 · TA获得超过235个赞
知道小有建树答主
回答量:309
采纳率:0%
帮助的人:169万
展开全部
第二题,因为最后的else是和和他最近if匹配的 所有z一直就没变
第三题 同理

懂了的话,望采纳最佳答案
追问
z为什么不变,y<0,z不就是1了吗
追答
第一个if为假的,第二个if是不能运行到的  你仔细想想就知道了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式