C++ 三目运算符

2025年03月01日 C++ 三目运算符 极客笔记

C++对三目运算符进行了升级,下面的代码正确吗?

int a = 1;
int b = 2;
(a < b ? a :  b) = 3;
printf("a = %d, b =%d \n", a, b);

三目运算符返回值

C语言中的三目运算符返回的是变量值

  • 不能作为左值使用

C++中的三目运算符可直接返回变量变身

  • 既可作为右值使用,又可作为左值使用

三目运算符示例

我们对上面的代码分别用gcc和g++编译器来编译。

lmcjl.com.c

#include <stdio.h>

int main()
{
    int a = 1;
    int b = 2;
    (a < b ? a :  b) = 3;
    printf("a = %d, b =%d \n", a, b);

    return 0;
}

编译会发生错误:

lmcjl.com.cpp

#include <stdio.h>

int main(int argc, char *argv[])
{
    int a = 1;
    int b = 2;
    (a < b ? a :  b) = 3;
    printf("a = %d, b =%d \n", a, b);

    return 0;
}

g++编译器能正常编译,得到正确的结果:

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

展开阅读全文