【发布时间】:2011-10-13 16:26:13
【问题描述】:
我认为三元运算符根据条件返回: 左侧或右侧的值。为什么下面这段代码会打印 1?
#include <stdio.h>
int main(int argc, char const *argv[]) {
int c = 0;
(c?c:0)++;
printf("%i", c);
return 0;
}
【问题讨论】:
-
当这个
0++;被执行时,你期望会发生什么?我什至无法想象这会编译。 -
逻辑还是有缺陷的,这里没有打印三元运算符的值
-
但是 (c?0:c)++ 没有编译,疯了
-
使用 GCC 4.5.0:
In function ‘main’: 5:2: error: lvalue required as increment operand使用gcc -S code.cpp编译此代码时返回什么? -
无论出于何种原因,它只发生在
0... 至少在我的 gcc 4.4.3 上,对于其他一切它不允许它编译。看起来像一个错误。
标签: c increment ternary-operator