一个简单的if语句,大家帮忙看看

来源:百度知道 编辑:UC知道 时间:2024/09/22 01:23:46
#define<stdio.h>
main()
{intx=0,y=0,z=0;
if(x=y+z)
printf("***");
else
printf("###)";
}
这里if(x=y+z)的意思是将y+z的和赋给x么??答案应该是怎么样的啊?谢谢各位!

还有一个
#define<stdio.h>
main()
{int a ;
printf("%d\n",(a=3*5,a*4,a+5));}
这个问a的值,我觉得应该是15,答案是20,我不知道这书的答案会不会错了。。

楼上4位都在误人子弟啊。
先说printf("%d\n",(a=3*5,a*4,a+5));
这是个逗号表达式,全式最终的值是20。

---------------------华丽的参考分隔线--------------
逗号表达式

C语言中的逗号表达式的形式如下:

表达式1,表达式2,表达式3,......,表达式n

学习逗号表达式时一定要掌握它的要领:1.逗号表达式的运算过程为:从左往右逐个计算;2.逗号表达式是作为一个整体的,它的最终结果就是最后一个表达式(也即表达式n)的值;3.逗号运算符的优先级别是所有运算符中最低的。只有这样,才能真正掌握这种运算,得出正确的解答。

2001年秋季考试中有一道选择题(此题曾在1998年春季考试中出现过):

若已定义x和y为double类型,则表达式:x=1?y=x+3/2的值是:

A) 1 B) 2 C) 2.0 D) 2.5

解析:该表达式就是一个逗号表达式,所以要按照运算顺序先运算x=1,所以变量x的值为1.0,然后运算y=x+3/2,此表达式中需先计算二个整数相除3/2,结果为整数1,然后再与x相加,结果为2.0。由于逗号表达式x=1?y=x+3/2的值就是其最后一个表达式即y=x+3/2的值,此值即为2.0,所以正确的答案应该是C。

--------------------华丽的参考分隔线---------------
对于(a=3*5,a*4,a+5),先是计算a=3*5得到a=15,然后a*4但是没有赋值所以a还是15,最后a+5,一样没赋值,a依然是15,但是全式的值是a+5也就是20。

再说if(x=y+z)
先看下这个:
-------------------又一个华丽的分割线--------------
如2003年9月填空第8题:

main( )

{int a=1,b=3,c=5;