C语言菜鸟求高手解答...

1、当x在[1,10]和[15,20]内为真,求在C语言中的表达式。
2、求以下程序输出结果:
main()
{ int m=5;
if(m++>5) printf("%d\n",m);
else printf("%d\n",m--);
}

希望高手给出详细过程,谢谢。

第一个问题只能说是一个判定条件,不知道你要的结果是什么。。
2.m++>5这个判定是先取值后运算,m=5>5这个是不成立的,所以结果为假,然后m自增m=6,接着运行else printf("%d\",m--);同样先取值运行,m=6所以输出6,之后再自减m=5但这是没有输出的,如果运行这个
main()
{ int m=5;
if(m++>5) printf("%d\n",m);
else printf("%d\n",m--);
printf("%d\n",m);
}
会输出6(换行)5
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-05
先给你说第二个吧 结果是6 ,m++ ,m--都是后增减操作符。if(m++>5) printf("%d\n",m);中先进行m是否大于5的判断 当然是不了。然后自加等于六了。然后到else printf("%d\n",m--);因为m--是后减操作符,所以先输出m在进行--之前的值 是6.最后进行自减操作。
至于第一个,我给你一个参考答案吧(你的提问太泛化了,没办法具体而微)
if((m>=1&&m<=10)||(m>=15&&m<=20))
{
//to do what you want to do

}追问

printf("%d",m=10/5);这个语句为什么先算了m=10/5,再输出?
第一个问题就是要写成C的表达式(m>=1&&m=15&&m<=20),那个“和”不是代表且的意思吗?

追答

先表达一下我的心情吧 我给你回答的那么具体你居然没有选为满意的,我缺一个满意回答就完成任务了啊。
printf("%d",m=10/5);先算了m=10/5是因个很正常得 问题。m++和++m对于初学者是个难点。你可以这样理解m++加号在m的后面所以在m进行完所在表达式的运算后才进行++操作。++m加号在前面,所以先进行加的操作然后再进行其他运算

不会了接着问 呵呵

追问

呀呀呀,sorry呀,下次给 你。 第二个问题呢?

追答

和在这里是或的意思啊 这是个逻辑问题 要是且的意思的话[1,10]且[15,20]这样的熟根本不存在啊

第2个回答  2012-09-05
(x>=1 && x<=10) || (x>=15 && x<=20)

开始
m=5
m++=5>5 假 这时m=6
打印m--=6 这时m=5
所以结果为6
第3个回答  2012-09-05
1 (x>=1 && x<=10) || (x>=15 && x<=20)
2 开始m = 5,接下来m++>5,先判断,后加,即m先于5判断,再++,所以m++>5为false,结束后m=6,执行printf("%d\n",m--);同样,先输出,后--,即输出6,结束后m=5。

希望有所帮助本回答被提问者采纳
相似回答