c语言 条件运算符
#include<stdio.h>intfun(inta,intb,intc){intt;/**********found**********/t=(a>b)?(b>c?...
#include <stdio.h>
int fun(int a, int b, int c)
{
int t;
/**********found**********/
t = (a>b) ? (b>c? b :(a>c?c:a)) : ((a>c)?a : ((b>c)?c:b));
return t;
}
main()
{int a1=3, a2=5, a3=4, r;
r = fun(a1, a2, a3);
printf("\nThe middle number is : %d\n", r);
}
请问 (a>b) ? (b>c? b :(a>c?c:a)) : ((a>c)?a : ((b>c)?c:b))这段是什么意思,这么多?和:和()程序执行顺序是什么,每一个?和:和()的作用是什么,详细跟我说一下,这段程序根本不知道怎么入手 展开
int fun(int a, int b, int c)
{
int t;
/**********found**********/
t = (a>b) ? (b>c? b :(a>c?c:a)) : ((a>c)?a : ((b>c)?c:b));
return t;
}
main()
{int a1=3, a2=5, a3=4, r;
r = fun(a1, a2, a3);
printf("\nThe middle number is : %d\n", r);
}
请问 (a>b) ? (b>c? b :(a>c?c:a)) : ((a>c)?a : ((b>c)?c:b))这段是什么意思,这么多?和:和()程序执行顺序是什么,每一个?和:和()的作用是什么,详细跟我说一下,这段程序根本不知道怎么入手 展开
4个回答
展开全部
展开全部
<条件>? <表达式1>:<表达式2>
这个是三元运算符,C语言运算符的一种,运算规则是:先判断<条件>表达式是否为真,如果为真,则取<表达式1>的值,如果为假,则取<表达式2>的值。
c = (a>b)?a:b;
相当于:
if(a>b)
c = a;
else
c = b;
C语言无论什么运算符,其优先级都不可能高于括号,所以总是先计算括号内的表达式的值,再用这个值参与括号外的表达式计算。
所以你这里这句话翻译一下就是:
if(a>b)
if(b>c)
t=b;
else
if(a>c)
t=a;
else
t=c;
else
if(a>c)
t=a;
else
if(b>c)
t=c;
else
t=b;
更多追问追答
追问
(a>b) ? (b>c? b :(a>c?c:a)) : ((a>c)?a : ((b>c)?c:b))
else
if(a>c)
t=a;
else
t=c;
错了把,是不是
else
if(a>c)
t=c;
else
t=a;
追答
这是在else分支里,你再看看
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个括号对是一个,解析一下就能看明白了,以下就是解析的结果。
if (a > b){
if (b > c)return b;
else {
if (a > c)return c;
else return a;
}
}
else {
if (a > c)return a;
else {
if (b > c)return c;
else return b;
}
}
?:是三目运算符,可以和if-else进行转换,如a>b?a:b的意思就是
if(a>b)return a;
else return b;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询