我在某个地方看到C中的?:个操作符在C++中略有不同,有一些源代码在两种语言中都有不同的工作.不幸的是,我到处都找不到文本.有人知道这种区别是什么吗?

推荐答案

C++中的条件运算符可以返回一个LValk,而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++相关问答推荐

int_leastX_t与intX_t不同吗?

球体—立方体重叠:无、部分或全部?

不同到达时间的轮询实现

在C中使用动态内存分配找到最小的负数

使用NameSurname扫描到两个单独的字符串

编译的时候g++通常会比GCC慢很多吗?

C++中矢量类型定义和数据保护的高效解决方案

函数内的局部字符指针

`#if`条件中是否允许`sizeof`?

C-使用指针返回修改后的整数数组

在C++中访问双指针

GTK3按钮信号错误

如何将另一个数组添加到集合中,特别是字符串?

如何在双向表中实现线程安全,每个条目仅使用4位,同时避免任何全局锁?

unions 的原子成员是个好主意吗?

Makefile无法将代码刷新到ATmega328p

C中的空指针是什么(_N)?

为什么 int32_t 和 int16_t 在 printf 输出中具有相同的位数?

与 C 相比,C++ 中无副作用的无限循环的好处是 UB?

在 C/C++ 中原子按位与字节的最佳方法?