c++ - C 和 C++ 之间的条件运算符区别

标签 c++ c conditional-operator

我在某处读到 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/

相关文章:

c++ - 如何以标准/可移植且高效的方式编写 int64=int32*int32?

Javascript 在三元运算符中使用单个等待

PHP Elvis 运算符与空合并运算符

c - 将字典(一个外部 txt 文件)中的单词与文章(另一个外部 txt 文件)进行匹配

c++ - 如何使用三元运算符创建指向多态类的唯一指针?

c++ - astar_search 在以 listS 作为顶点容器的图上?

c++ - 将 cv::Scalar 的值设置为 opencv 中的 cv::Mat 中的像素的正确(最佳)方法是什么?

c++ - 解析 C++/跟踪 void 指针

c++ - 我怎样才能让编译器在没有 C++11 的情况下使用模板 'const' 参数中的最小类型来与(受限的)8 位微 Controller 一起使用?

通过试验划分进行素数条件测试