C++ 三目运算符

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

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

三目运算符返回值

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

  • 不能作为左值使用

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

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

在C++中,三目运算符可能返回的值中如果有一个常量值,则不能作为左值使用。

三目运算符示例

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

deepinout.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;
}

编译会发生错误:

C语言三目运算符

deepinout.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++编译器能正常编译,得到正确的结果:

C++语言三目运算符

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

评论 抢沙发

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