1522230514 发表于 2020-3-17 12:09:55

if与else问题求助

#include <stdio.h>
main()
{
        int x=1,y=2,z=3;
        if(x--)
        y++,z++;
        else
        y--,z--;
        printf("%d,%d,%d\n",x,y,z);

        return 0 ;
}
这样输出结果为:0,3,4.

#include <stdio.h>
main()
{
        int x=1,y=2,z=3;
        if(x--)
        y++,z++;
        else
        y--;z--;
        printf("%d,%d,%d\n",x,y,z);

        return 0 ;
}
这样输出结果为:0,3,3.


仅仅else中y后标点不同,结果便截然不同,为什么呢?
求助大神,感谢感谢!

吴敌小白 发表于 2020-3-17 12:18:25

只要有分号就是一句话,先z++跳出else后才z--的。

sunrise085 发表于 2020-3-17 12:20:44

y--,z--;   这样写,就说明这是一个语句,属于else语句块
y--;z--;这样写,就说明这是两个语句,那么第一句y--属于else语句块,第二句z--不属于else语句块。执行完if…else之后会继续执行z--

一个账号 发表于 2020-3-17 12:21:16

y-- 在 else 里面,z-- 在 else 外面,所以 z-- 是肯定会执行的。

1522230514 发表于 2020-3-17 12:33:26

吴敌小白 发表于 2020-3-17 12:18
只要有分号就是一句话,先z++跳出else后才z--的。

嗯嗯。谢谢你!

1522230514 发表于 2020-3-17 12:33:58

sunrise085 发表于 2020-3-17 12:20
y--,z--;   这样写,就说明这是一个语句,属于else语句块
y--;z--;这样写,就说明这是两个语句,那么第 ...

谢谢大佬!
页: [1]
查看完整版本: if与else问题求助