首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有关if(a=1)不是判断,是赋值的有关问题,

2012-05-04 
有关if(a1)不是判断,是赋值的问题,急急急C/C++ code#includestdio.hvoid main(){int a0,y10if(a0)y

有关if(a=1)不是判断,是赋值的问题,急急急

C/C++ code
#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);}

这个我个人觉得第一个if语句中不是执行了a=0了吗,就应该要执行后面的y--,然后第一个else下面的代码都不要管了,
但是输出结果是20,新手求助,详细点最好,拍砖者轻点,谢谢了,

[解决办法]
if(a=0)中a=0是赋值吧,不能判断正确,就是假的了,进入else中执行了
[解决办法]
if(a=0)——>if(a==0)
[解决办法]
应该写if(a==0),“==”才是逻辑判断,而“=”是赋值。
a=0赋值语句本身的值是0,也即false,所以后面语句不执行
[解决办法]
楼主的理解是{a=0赋值成功返true么}?
你可以printf("%d",a=0);看看a=0返回什么
[解决办法]
这应该是新手最容易犯得错误了,总是把判断写成赋值,建议以后养成习惯写成

if(0==a)

这样以后如果写成赋值马上编译出错的。
[解决办法]
0赋给a,if检查a为0,为false,则执行else后边的

if(a=1)y--;
则结果为9
[解决办法]
探讨
C/C++ code


#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);
}


这个我个人觉得第一个if语句……

[解决办法]
探讨
0赋给a,if检查a为0,为false,则执行else后边的

if(a=1)y--;
则结果为9

[解决办法]
C/C++ code
#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。
[解决办法]
楼主这个问题还是不错的
以前都没想过这个问题

热点排行