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

[复制链接]
查看11 | 回复1 | 2011-5-11 07:49:10 | 显示全部楼层 |阅读模式
#includestdio.h
voidmain()
{
inta=0,b=0,c=0,d=0;
if(a=2)
{
b=2;
c=4;
}
elsed=3;
printf(\"%d,%d,%d,%d\",a,b,c,d);
}
回复

使用道具 举报

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行