为了账号安全,请及时绑定邮箱和手机立即绑定

请大佬讲解一下这个程序的运行顺序

请大佬讲解一下这个程序的运行顺序

C++
慕先生9221815 2017-06-26 08:36:56
#include <stdio.h>   void main( )   { int k=4,a=3,b=2,c=1;     printf("%d\n",k<a?k:c<b?c:a);   }
查看完整描述

3 回答

?
习惯受伤

TA贡献885条经验 获得超1144个赞

式子等同于下面这样:
int k=4,a=3,b=2,c=1;
k<a?k:(c<b?c:a)
这是两个嵌套的三目运算符,先计算第一个:
1,先计算:k<a结果为false
2,取三目运算符冒号之后的结果,冒号之后也是一个三目运算符
3,c<b结果为true,取第二个三目运算符中问号后的c,所以结果应该是:1

查看完整回答
1 反对 回复 2017-06-26
?
慕数据5337628

TA贡献1条经验 获得超0个赞

表达式等价于:

if(k<a){
    return k;    
} else {
    if(c<b){
        return c;
    } else {
        return a;
    }
}

因此,输出结果应该是1

查看完整回答
反对 回复 2017-06-26
?
望远

TA贡献1017条经验 获得超1032个赞

int k=4,a=3,b=2,c=1;

k<a?k:c<b?c:a  -->k<a?k:(c<b?c:a)

先计算外层的三目运算即判断k<a是否成立?:false

即表达式的值取内层c<b?c:a表达式的值

判断c<b是否成立?true,发挥c的值

取值是后方的内层三目运算的返回值即1

输出结果1



查看完整回答
反对 回复 2017-06-26
  • 3 回答
  • 0 关注
  • 1715 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信