L'opérateur ternaire C ++ (? :) renvoie une référence ou une non-référence

L'opérateur ternaire peut renvoyer un type référence, et lorsque l'une des expressions candidates renvoyées est une rvalue, il retourne un type non-référence.

#include <iostream>
#include <cstring>

using namespace std;

int main() {
    
    
	int a = 3;
	int b = 2;

	// 1. 
	// 三目运算符返回引用
	(a > b ? a : b) = 4;
	cout << "a = " << a << " b = " << b <<endl; // 输出: a = 4 b = 2

	// 2. 
	// 三目运算符返回右值
	// error: lvalue required as left operand of assignment
	(a < b ? a + 1 : b) = 4;


	// 下面的decltype返回 int
	decltype(a ? a + 1 : a) ri;

	// 下面的decltype返回 int&
	// error: 'r' declared as reference but not initialized
	decltype(a?a:a) r;


}

Je suppose que tu aimes

Origine blog.csdn.net/weixin_40315481/article/details/108040274
conseillé
Classement