以下程序运行后的输出结果是什么?简单写一下过程~

来源:百度知道 编辑:UC知道 时间:2024/09/27 10:21:53
main()
{
int a=1,b=2,c=3;
if(c=a) printf("%d\n",c);
else printf("%d\n",b);
}

如果是LZ的这个程序,不把c=a改成c==a,那么运行后是1
分析:if(c=a)//把a=1的值赋给c,表达式的值就为1啦,所以为真,则执行
printf("%d\n",c);所以输出的c值为1

如果改成if(c==a)
则运行结果为2
分析:if(c==a) a!=c所以条件为加,执行else printf("%d\n",b);
输出b的值为2

怎么能写成if(c=a)呢?
if(表达式)语句1
else 语句2
注意上面括号中的表达式,一般为逻辑表达式或关系表达式,也可以是任意的数值类型(整型、实型、字符型、指针型数据)
但是if(c=a)中,就成了一个赋值表达式,似乎不能这样用吧。。。
如果改成c==a
int a=1,b=2,c=3;
if(c==a) printf("%d\n",c);
else printf("%d\n",b);
那么关系表达式c==a为假,执行else后面的语句,输出b的值,为2.

if(c=a) 可能有问题。
比较相等用 if(c==a)

c=a表达式的值是a的值 1,第一个if成立所以程序会输出c

输出1
因为if(c=a)为真,所以输出printf("%d\n",c);

输出1