黑马程序员技术交流社区

标题: 后面的max与C为交换为什么就不能求出最大的值了? [打印本页]

作者: 叮当    时间: 2014-9-4 20:27
标题: 后面的max与C为交换为什么就不能求出最大的值了?
本帖最后由 叮当 于 2014-9-11 20:33 编辑

后面的max与C为交换为什么就不能求出最大的值了?

屏幕快照 2014-09-04 14.35.16.png (26.16 KB, 下载次数: 111)

为什么不能那样写

为什么不能那样写

作者: 王绍明    时间: 2014-9-4 20:44
int dmx=max>c?c:max;三目运算,如果这样写,max>c是正确的则返回c,我们要求的是最大值,显然c不是最大值,int dmx=max>c?max:c;这个顺序写的话,所求的结果就对了。这应该是三目运算的书写顺序,这样写也行int dmx=c>max?c:max; 只是一个书写顺序问题!
作者: 小月格子猫    时间: 2014-9-4 21:12
1  你用的是三目运算     (条件) ?  (数值1) :(数值2);   
    1   如果条件成立,输出数值1
    2   条件不成立,输出数值2
2  int a   =100,b= 150,c = 200;
     int dmx   =   max  > c  ?  max : c   
     1  其中max > c   是条件    ,如果成立 就输出max   ,如果不成立就输出c
     2  如果max > c  ,成立的话,就说明max就比c 大了,如果你max与c调换了位置,那样就算成立了,输出c,输出的值是最大值吗??? ,把小的输出来了把

作者: ‍___________H    时间: 2014-9-7 11:45
你还没搞懂三目运算符的格式。  ?号前面条件成立 输出冒号前面的,不成立输出冒号后面的
作者: zhuiyi007    时间: 2014-9-9 09:45
max>c ? max : c 意思是max>c成立的话,输出max,否则输出c
作者: 陨石    时间: 2014-9-9 09:48
优先级不对
作者: 徐闯楠    时间: 2014-9-9 10:40
楼上都是正解啊
作者: keep_flying    时间: 2014-9-27 15:18
修改代码
int max;
a>b?max=a :max=b ;
max>c?max:max=c ;
printf("max=%d ",max );
作者: flypig    时间: 2014-9-27 15:41
注意细节,细节很重要
作者: ★彬★卍囧神    时间: 2014-9-27 17:37
三木运算




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2