在C语言中,if括号后面的语句可以是表达式吗?

#include "stdio.h"
main()
{
if(2*2==5<2*2==4)
printf("T");
else
printf("F");
}
这个程序怎么解释啊?
结果是F

可以是表达式!
2*2==5<2*2==4
中,<优先级别比==要高。
因而实际上那个表达式与下列等同:
2*2==(5<2*2)==4
于是,你先比较4 == 0,然后把结果(0)再与4比较。0==4,因为不相等,所以表达式最终结果为0
故而输出F
你可以这样试试!
就会知道优先级别和怎么发生的啦!
printf("%d\n",2*2==5);
printf("%d\n",2*2==5<2*2);
printf("%d\n",(2*2==5)<2*2);
printf("%d\n",2*2==(5<2*2)==4);
if( 2*2==5<2*2==4 ){
printf("%d\n",2*2==5<2*2==4);
printf("T");
}
else{
printf("%d\n",2*2==5<2*2==4);
printf("F");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-13
可以,只要最后返回的是bool型

主要看运算符优先级
2*2==5<2*2==4
1. 4==5<4==4
2. 4==0==4
3.0==4
4.0

所以输出F本回答被提问者采纳
第2个回答  2011-12-13
可以的,C语言运算符优先级,*高于<高于==,执行完之后,看这个表达式是否为真,真则
输出T
否则
输出F
第3个回答  2011-12-13
if括号后面的语句可以是表达式
IF括号内表达式为假(5不大于4) 所以执行ELSE语句后的表达式 故结果为F
第4个回答  2011-12-13
运算符的优先级:*的优先级最高,其次是<,最后是==,在if语句中先计算两组2*2得出4,变成if(4==5<4==4),然后计算5<4得出0,变成if(4==0==4),0和4明显不相等,if语句输出结果为0,也就是假。
当if输出为1时,输出T
当if输出为0时,输出F
所以结果是F

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网