埃特板吊顶施工视频:关于C语言算法

来源:百度文库 编辑:神马品牌网 时间:2024/04/30 08:12:14
小北已很久没有接触C了,请问下面的语句中,
d=a>b?(a>c?a:c):(b)这个算法过程是怎样运算的??在此谢谢!
main()
{ int a=5,b=4,c=6,d;
printf("%d\n",d=a>b?(a>c?a:c):(b));
}
death_boy - 魔导师 十一级
感谢你的回复,答案是6,能不能把问号表达式与冒号表达式的运算规则告诉我呢?

如果a>b,那么d=1(true),返回true,然后在(a>c?a:c)中如果a>c那么返回a,不然是c
如果a<=b,d=0(false),返回false,然后整个表达式是返回b
从你给的例子来看,应该输出6,最后d的值是1

exp?a:b
就是先运算exp表达式,如果不是bool型的就转成bool型。是true(非0)则返回a,false(0)返回b

就是如果a大于b的话就将(a>c?:c)赋值给d,如果a小于b的话则将b赋值给d,至于(a>c?a:c)的运算结果就是和前面一样的