当if语句的条件是赋值语句时,如何判断

当if语句中的条件为赋值语句时,实际上是将赋值后的结果与0进行比较。

比如下面的代码:

#include int main(){int a;if (a = 0) printf("hello world\n");return 0;}

它等价于:

#include int main(){int a = 0;if (a==0) printf("hello world\n");return 0;}

这个过程可以通过vc6.0的反汇编代码详细看到。 一条mov赋值指令,一条cmp比较指令,比较的对象是0和a的值。

c语言的If表达式可以有赋值语句吗

if(a=2)
{
b=2;
c=4;
}
else d=3;

这个语句没有语法错误(可能会有警告),是可以执行的。

但是这个语句永远没有机会执行else部分。

a=2赋值表达式的计算结果就是2,当这个表达式出现在if语句逻辑表达式位置上的时候,它的计算结果是被当作逻辑值处理的,在C语言中用整型数表示逻辑量,非零表示“真”,所以这是一个永真式;这个if的逻辑条件永远不会为假。

也就是说,这里所表达的逻辑条件并不是“a的内容是否等于2”,而是向变量a中送入数据2。

C语言,if(表达式)中,表达式如果是一个赋值语句,这个if就会恒真

非零即真,例如if(a=5) { b=3; c=5; }else d=3;这个语句没有语法错误(可能会有警告),是可以执行的。

但是这个语句永远没有机会执行else部分。a=5赋值表达式的计算结果就是5,当这个表达式出现在if语句逻辑表达式位置上的时候,它的计算结果是被当作逻辑值处理的,在C语言中用整型数表示逻辑量,非零表示“真”,所以这是一个永真式;这个if的逻辑条件永远不会为假。

也就是说,这里所表达的逻辑条件并不是“a的内容是否等于5”,而是向变量a中送入数据5。

问个问题,C语言的,关于if语句中条件判断是一个赋值语句问题

复制表达式x=5本身是有值的,这个值等于左值。也就是说x=5这个式子的值是x,也就是5。而x=5这个式子的值是5不为零,就是真的,还会执行k=2。

一般来说,if后面语句是禁止使用单等于号,也就是赋值号的,就是为了防止出错。

980515024 这位回答的有错误。if(x=5)编译是不会报错的。

如果是x=0,这个表达式的值就是0,也就是假的,就不执行后面的语句了。用什么软件编译无所谓,6.0还是dev还是vs08都行。