有关if(a=1)不是判断,是赋值的问题,急急急
#include<stdio.h>void main(){ int a=0,y=10; if(a=0)y--; else { if(a>0) y++; else y+=y; }; printf("y=%d\n",y);}#include <stdio.h>int main(){ int a = 0, y = 10; if(a == 0) //这里应该是判断a是否等于0,如果等于0,那么为真执行if语句里的 { //像你那样直接赋值,等同于直接告诉判断语句,这句是假的. y--; //建议不管有几条语句都把花括号打上. } else //else这就是如果if判断条件不成立便执行else里的语句 { if(a > 0) { y++; } else { y += y; } }//这里不能加';'!!!! printf("y = %d\n", y);}
[解决办法]
a=0是等号表达式,这个表达式的结果是等号右边的值,也就是0,所以if(a=0),其实就是if(0),所以当然是不会执行if分支
这样的写法是菜鸟最容易出现的,同时也是各种考试面试里会碰到的
[解决办法]
lz把赋值与等号弄错了
应该是if(a==0)
你写成=的话就不是判断了
[解决办法]
你的代码有问题,那个最外面的else后的那个}后能有;吗?
还有你那句a=0就是赋值就相当于if(0)
你觉得程序流能进得去?当然是执行else里的语句了
你写代码的风格有问题
[解决办法]
补充一点,你容易将判等和赋值弄混的话,以后写成0==a,不要写成a==0,这样如果写成了0=a的话,编译器会直接给你不通过的,你就好查出来
[解决办法]
很多人误解楼主的意思了,楼主明确说了,是赋值语句,不是判断语句。
其实楼主就是犯了一个错误,他一直以为 赋值语句恒为真,其实这是错的!要看赋值后的结果。
[解决办法]
赋值语句的值就是赋给变量那个值。在这里你赋给a的是0,整个赋值语句的值就为0,也就被认为是false。
[解决办法]
楼主这个问题还是不错的
以前都没想过这个问题