我在某处读到 C 中的 ?:
运算符在 C++ 中略有不同,有一些源代码在两种语言中的工作方式不同。不幸的是,我在任何地方都找不到文本。有谁知道这个区别是什么?
最佳答案
C++ 中的条件运算符可以返回左值,而 C 不允许类似的功能。因此,以下内容在 C++ 中是合法的:
(true ? a : b) = 1;
要在 C 中复制它,您将不得不求助于 if/else,或者直接处理引用:
*(true ? &a : &b) = 1;
同样在 C++ 中,?:
和 =
运算符具有 equal precedence and group right-to-left ,这样:
(true ? a = 1 : b = 2);
是有效的 C++ 代码,但会在最后一个表达式周围不带括号的情况下在 C 中引发错误:
(true ? a = 1 : (b = 2));
关于c++ - C 和 C++ 之间的条件运算符区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1082655/