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

#include <stdio.h>
  void main( )
  { int k=4,a=3,b=2,c=1;
    printf("%d\n",k<a?k:c<b?c:a);
  }

慕先生9221815
浏览 1725回答 3
3回答

习惯受伤

式子等同于下面这样: 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

慕数据5337628

表达式等价于:if(k<a){     return k;     } else {     if(c<b){         return c;     } else {         return a;     } }因此,输出结果应该是1

望远

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
打开App,查看更多内容
随时随地看视频慕课网APP