C语言 语句if(a>b) printf("%d",a);else printf("%d",b);能否用条件表达式a>b?a:b取代?为什么 语句if(a>b) printf("%d",a); else...

作者&投稿:无翠 (若有异议请与网页底部的电邮联系)
不能,
if(a>b) printf("%d",a);else printf("%d",b);的意思是如果a>b则输出a,否则输出b.
而a>b?a:b;没有完成这个功能,要完成这个功能应该这样
a>b?printf("%d",a):printf("%d",b);
本来也可以这样printf("%d",a>b?a:b);但是此题要求用条件表达式,所以只能用前一个方法啦

三目运算符:表达式1?表达式2:表达式3,如果表达式1为真,结果就等于表达式2,为假等于表达式3,a>b?a:b等式求两个数的最大值,但是if(a>b) printf("%d",a);else printf("%d",b);是打印输出两个数的最大值,a>b?a:b没有打印输出,如果要替换的话要改成
printf("%d",a>b?a:b);

这一句应该改成max=(a>b)?a:b;就可以了,a>b你没加括号。

printf("%d", a>b?a:b);

这样写可以啊,已经运行测试了!

语句if(a>b) printf("%d",a); else printf("%d",b);可以用条件表达式a>b?a:b取代吗?为什么?~

?: 是一个三目运算符(据我所知貌似是唯一一个三目运算符),功能你肯定很清楚了。
准确来说它并不是一个表达式,所以你如果写一句a>b?a:b;那肯定是错的...
如楼上所说,你必须要把这个运算的结果赋给一个变量...
推荐在程序中尽可能地使用一些简化写法,因为编译器在编译时能够主动优化,增加执行效率。
。。。。。。。。查了一下书,发现我上面还说错了。。。。。。
?:的一般形式为 操作数1 ? 操作数2 : 操作数3
1必须为基本类型或指针类型、(一般为整型的)表达式,2和3 可以是其他任何类型的表达式,且类型也可不一致

可以的。
#include
main()
{
int a,b;
scanf("%d,%d",&a,&b);
printf("%d",a>b?a:b);
printf("
");
system("pause");
}
不过两者的性能不一样。