当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都行。