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
展开全部
第二题:
题中代码等价于
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二题,else那个完全包含于第一个if,而第一个if就不执行
更多追问追答
追答
第三题同理
追问
else不是包含于最近的if吗,为什么是第一个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二题,因为最后的else是和和他最近if匹配的 所有z一直就没变
第三题 同理
懂了的话,望采纳最佳答案
第三题 同理
懂了的话,望采纳最佳答案
追问
z为什么不变,y<0,z不就是1了吗
追答
第一个if为假的,第二个if是不能运行到的 你仔细想想就知道了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询