• 【学习笔记】【C语言】三目运算符


    1.N目运算符

    像逻辑非(!)、负号(-)这种只连接一个数据的符号,称为“单目运算符”,比如!5、-5。
    像算术运算符、关系运算符、逻辑运算符这种连接二个数据的负号,称为“双目运算符”,比如6+7、8*5、5>6、4 && 0、
    以此类推,连接3个数据的运算符,应该称为“三目运算符”

     2.三目运算符

    C语言提供了唯一一个三目运算符:条件运算符。
    1> 使用格式

    表达式A ? 表达式B : 表达式C
    2> 运算结果

    如果表达式A成立,也就是为“真”,条件运算符的结果就是表达式B的值,否则,就为表达式C的值
    3> 结合方向和优先级

    优先级顺序为:算术运算符 > 关系运算符 > 条件运算符 > 赋值运算符
    条件运算符的结合方向是“从右至左”

    int a = 3>4 ? 4+5 : 5>4 ? 5+6 : 6>7+1;

    上面的代码等价于

    int a = (3>4) ? (4+5) : ( (5>4) ? (5+6) : (6>(7+1)) );

    简化一下就是

    int a = 0 ? 9 : ( 1 ? 11 : 0 );

    继续简化为

    int a = 0 ? 9 : 11;

    所以a的值是11

     1 // 三目运算符  条件 ? 数值1 : 数值2
     2 
     3 //int a = !100 ? 9 : 89;
     4 
     5 //printf("a=%d
    ", a);
     6 
     7 
     8 #include <stdio.h>
     9 
    10 int main()
    11 {
    12     /* 计算2个整数之间的最大值
    13     int a = 10;
    14     
    15     int b = 99;
    16     
    17     int c = a>b ? a : b;
    18      
    19      printf("c is %d
    ", c);
    20     */
    21     
    22     // 计算3个整数之间的最大值
    23     int a = 10;
    24     int b = 999999;
    25     int c = 1000;
    26     
    27      // 求出a、b的最大值
    28     int abMax = (a > b) ? a : b;
    29     // 求出最终的最大值
    30     int d = (abMax > c) ? abMax : c;
    31     
    32     //int d = (((a > b) ? a : b) > c) ? ((a > b) ? a : b) : c;
    33     
    34     printf("d is %d
    ", d);
    35     return 0;
    36 }
  • 相关阅读:
    sql 行转列
    wm_concat函数 用法
    PL/SQL如何调试Oracle存储过程
    Oracle&SQLServer中实现跨库查询
    Oracle 中 decode 函数用法
    Oracle中给用户赋予debug权限
    Oracle中的NVL函数
    oracle 触发器 pragma autonomous_transaction
    ORACLE中%TYPE和%ROWTYPE的使用
    A complete example using RAISE_APPLICATION_ERROR : raise_application_error
  • 原文地址:https://www.cnblogs.com/dssf/p/4561864.html
Copyright © 2020-2023  润新知