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

c语言中问号和冒号的连用是什么意思?

c语言中问号和冒号的连用是什么意思?

C C# C++
qq_慕沐7060782 2016-08-21 13:58:27
查看完整描述

3 回答

已采纳
?
阿旭_

TA贡献217条经验 获得超353个赞

三目运算符,可代替if(){}else{}

因写起来比较方便(一行代码就搞定了),常用来赋值时判断用。

例:

int a;

//……

if(a<0){

     a = 0;

}else{

     a = a;//当然了,这句话写不写其实都一样,只是为了更好的理解三目运算符的变形形式

}

//使用a的值之前,a的值肯定不会是负数

==============使用三目运算符的代替方案=========

int a;

//.......

a = ( a<0 ? 0 : a ) ;//圆括号可以省略

查看完整回答
2 反对 回复 2016-08-21
  • qq_慕沐7060782
    qq_慕沐7060782
    那么这个怎么改成if else 的那种呢? a > b ? (max = a, min = b) : (max = b, min = a); max > c ? (min > c ? min = c : 1) : max = c;
?
阿旭_

TA贡献217条经验 获得超353个赞

a > b ? (max = a, min = b) : (max = b, min = a); max > c ? (min > c ? min = c : 1) : max = c;

改if形式如下

int x ;//设置a>b三目运算结果表达式的值x

if ( a>b ){

      max = a;

      min = b;

      x = min;//最后一个式子的值,即min的值

}else {

    max = b;

    min = a;

    x = min;

}

//表达式的值最终是x,但是上面的例子,并没有赋值,所以结果x没用上

//由于有分号,所以是另一个三目了,和之前无关了。

int y;//再设置一个三目max > c运算结果值变量

if( max > c){

      int z;//设置三目min运算变量

       if ( min > c ){

               min = c ;

              z = min;

       }else {

             z =   1 ;

       }

      y = z;

}else{

     max = c;

      y = max;

}

查看完整回答
2 反对 回复 2016-08-21
?
残叶听风

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

三元i f- e l s e 运算符

布尔表达式 ? 值0:值1

若“布尔表达式”的结果为true,就计算“值0”,若“布尔表达式”的结果为false,计算的就是“值1”,

而且它的结果成为最终由运算符产生的值。

当然,也可以换用普通的if-else 语句,但三元运算符更加简洁。尽

符与if-else 明确区别开。下面便是一个例子:

static int ternary(int i) {

  return i < 10 ? i * 100 : i * 10;

}

可以看出,假设用普通的if-else 结构写上述代码,代码量会比上面多出许多。如下所示:

static int alternative(int i) {

if (i < 10)

return i * 100;

return i * 10;

}

第二种形式更易理解,


查看完整回答
反对 回复 2016-08-21
  • 3 回答
  • 0 关注
  • 10866 浏览

添加回答

举报

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