在C中将增量应用于三元运算符

shr*_*sva 4 c increment ternary-operator

我认为三元运算符:根据条件返回左侧或右侧的值.为什么这段代码打印1?

#include <stdio.h>

int main(int argc, char const *argv[]) {
  int c = 0;
  (c?c:0)++;
  printf("%i", c);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 13

您似乎有编译器错误,或者可能是语言扩展,因为这不是有效的C.您需要一个左值来应用++运算符,而(c?c:0)不是左值.