一个c语言自增自减题目不会做。。

阅读以下程序
#include <stdio.h>
void main()
{ int x;
scanf("%d",&x);
if(x--<5)printf("%d\n",x);
else printf("%d\n",x++);
}
程序运行后,如果从键盘上输入5,则输出结果是______。
5<5为假,不是直接print(x++)为6么?

以下程序运行后的输出结果是_____。
#include <stdio.h>
void main()
{ int a=1, b=3, c=5;
if (c=a+b) printf ("yes\n");
else printf ("no\n");
}
c=a+b那里没看懂。。

第1个回答  2013-06-06
if(表达式) 如果是表达式=0 为假, 表达式不等于0为真。

c=a+b ;这是赋值语句,返回最左边的值,这里是c .

x--; 后缀,先运行该语句,后自减

--x; 前缀,先自减,再运行该语句。

这里 x--<5 . 这里可以看着 ( x<5, x=x-1) 这么一个整体 所以 当输入5时 ,不运行printf("%d\n",x); 。但是x还是得自减1 ,变成 4. 再到printf("%d\n",x++); x++后是5.但是输入扔是x=x+1前的值 ,为4
第2个回答  2013-06-06
-- ++ 在变量后面的话,当时计算是改变前的值
所以x--<5之后x自减变成了4
else里面输出的时候取得是x的值,打印之后x才自加变成5
所以输出4

第二题if括号里面的表达式为c=a+b这个表达式计算后c=4,整个表达式最后的值也为4,4为true,因为所有不为0的数都是true,所以输出yes
第3个回答  2013-06-06
(1)--后置的话,先执行操作,之后再减1,所以输入5之后,先判断5 < 5,为假,运行else。
++同理, printf(x++)等价于printf(x); x = x + 1;
(2)c = a + 1是一个赋值表达式,执行成功值为1,故打印yes。如果想要比较的话,应该是 ==本回答被提问者采纳
相似回答