C语言 三目运算符

C语言中三目运算符(a?b:c)可以作为逻辑运算的载体,规则

  • 当a的值为真时,返回b的值
  • 当a的值为假时,返回c的值

示例:三目运算符初探

#include <stdio.h>

int main()
{
    int a = 1;
    int b = 2;
    int c = 0;

    c = a < b ? a : b;

    // (a < b ? a : b) = 3; //编译出错,三目运算符返回的是一个值,可修改为*( a < b ? &a : &b) = 3;

    printf("%d\n", a);
    printf("%d\n", b);
    printf("%d\n", c);

    return 0;
}

第11行编译出错:

C语言三目运算符

原因是:三目运算符返回的是一个并不是一个变量

注释掉11行,输出结果:

C语言三目运算符

三目运算符返回类型

三目运算符(a?b:c)的返回类型

  • 通过隐式类型转换返回b和c的较高类型
  • 当b和c不能隐式转换到同一类型时,将编译出错

示例:三目运算符的返回类型

#include <stdio.h>

int main()
{   
    char c = 0;
    short s = 0;
    int i = 0;
    double d = 0;
    char* p = "str";

    printf( "%d\n", sizeof(c ? c : s) ); //int
    printf( "%d\n", sizeof(i ? i : d) ); //double
    //printf( "%d\n", sizeof(d ? d : p) ); //编译报错,deepinout.com.c:13:34: error: type mismatch in conditional expression

    return 0;
}

输出结果:

C语言三目运算符

赞(5)
未经允许不得转载:极客笔记 » C语言 三目运算符
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址