zmLau0727 发表于 2020-3-22 14:50:28

为什么if括号里面还能进行赋值操作啊

#include<stdio.h>
int main()
{
        int x=4,y;
        if(x<0){
                y=0;
        }
        else if(x=0){
                y=0;
        }
        else{
                y=-1;
        }
        printf("%d %d",x,y);
        return 0;
}
就是这段代码,最后x的值是0,y的值成-1,实在是没看懂,也没想明白

霧之湖先森 发表于 2020-3-22 15:17:26

第一个if没进去。
第二个else if 把0赋值给了x,相当于判断条件是x,然而x是0,也就是否,那么第二个else if也没进去。
然后进else 把 -1 给 y
最后输出x是0, y是-1

time1970 发表于 2020-3-22 15:19:09

表达式可以放在条件判断里
它是将表达式的运算结果作为条件判断
if(x=0) 先对x进行赋值,然后判断x是0,为假执行else,将y赋值位-1


不过,一般没人会这么干

zmLau0727 发表于 2020-3-22 15:29:58

time1970 发表于 2020-3-22 15:19
表达式可以放在条件判断里
它是将表达式的运算结果作为条件判断
if(x=0) 先对x进行赋值,然后判断x是0, ...

好的,谢谢
页: [1]
查看完整版本: 为什么if括号里面还能进行赋值操作啊