C语言 三目运算符

2025年02月24日 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行编译出错:

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

注释掉11行,输出结果:

三目运算符返回类型

三目运算符(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) ); //编译报错,lmcjl.com.c:13:34: error: type mismatch in conditional expression

    return 0;
}

输出结果:

本文链接:http://so.lmcjl.com/news/23808/

展开阅读全文