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

2025-01-31 00:49:42
推荐回答(5个)
回答1:

if(a=2)
{
b=2;
c=4;
}
else d=3;
这个语句没有语法错误(可能会有警告),是可以执行的。
但是这个语句永远没有机会执行else部分。
a=2赋值表达式的计算结果就是2,当这个表达式出现在if语句逻辑表达式位置上的时候,它的计算结果是被当作逻辑值处理的,在C语言中用整型数表示逻辑量,非零表示“真”,所以这是一个永真式;这个if的逻辑条件永远不会为假。
也就是说,这里所表达的逻辑条件并不是“a的内容是否等于2”,而是向变量a中送入数据2。

回答2:

if里面的表达式可以是赋值表达式(注意不是赋值语句,分号结束那叫语句),赋值表达式的结果是等号左边的那个变量,因为在C语言中非零都可以当做真,零都可以当做假,所以赋值表达式的结果只要能比较是否等于0的都可以放在if里面。

回答3:

不一定,要看给变量赋的值是否为0

*****************************************

尝试以下程序:

#include
void main()
{
int i;
if (i=0) printf("i=0");
if (i=1) printf("i=1");
}

这个程序会输出 i=1,也就是说执行了第二个if语句的执行部分。

回答4:

可以,但是无意义,所以还是新手常犯错误

回答5:

可以啊~if(a=非零) 执行if里的语句
if(a=0) 不执行if里的语句