/* * demo_versions/ternary_lvalue.cpp * -------------------------------------------------------------------------- * 演示:三目运算符 ?: 作为左值 —— C++ 独有,C 不允许。 * * 来源:wiki 块 [58954439:18]「3.8 三目运算符功能增强」:C 中三目返回值(右值), * C++ 中三目返回的是「两个操作数中公共类型的引用」(可为左值),故可被赋值。 * * 验证: * g++ -std=c++17 → PASS(三目可作左值) * gcc -std=c17 → ERROR (三目不可作左值,lvalue required as left operand) * * 运行: * tools/std_probe.py --lang c++ --file tools/demo_versions/ternary_lvalue.cpp * tools/std_probe.py --lang c --file tools/demo_versions/ternary_lvalue.cpp * -------------------------------------------------------------------------- */ #include int main() { int a = 1, b = 2; /* C++:三目表达式可作为左值被赋值 */ (a > b ? a : b) = 100; // 把较大者赋为 100 printf("a=%d b=%d\n", a, b); return 0; }