gpt4 book ai didi

c++ - 三元运算符为什么以及何时返回左值?

转载 作者:IT老高 更新时间:2023-10-28 12:29:58 28 4
gpt4 key购买 nike

长期以来,我一直认为三元运算符总是返回一个右值。但令我惊讶的是,事实并非如此。在下面的代码中,我没有看到 foo 的返回值和三元运算符的返回值之间的区别。

#include <iostream>
int g = 20 ;

int foo()
{
return g ;
}

int main()
{
int i= 2,j =10 ;

foo()=10 ; // not Ok
((i < 3) ? i : j) = 7; //Ok
std::cout << i <<","<<j << "," <<g << std::endl ;
}

最佳答案

ij 都是 glvalues(有关详细信息,请参阅 this value category reference)。

那么如果你读到 this conditional operator reference 我们就到了这一点:

4) If E2 and E3 are glvalues of the same type and the same value category, then the result has the same type and value category

所以(i < 3) ? i : j的结果是一个glvalue,可以赋值给。

但是,我真的不建议这样做。

关于c++ - 三元运算符为什么以及何时返回左值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54688464/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com