c89三目运算符可以简写吗?该怎么解决

c89三目运算符可以简写吗?
    最近在公司看一个算法的源代码,遇到一个类似三目运算符的语句:类似如下:
              int a = 1;
               int b = 10;
              a = b?:1;
             老大说这是c89的语法规则,不过Android下可以调试通过,但是VC当然是不行的。

             我的疑问是:c89真的可以这么写吗,如果可以又该这么解读呢。
              如果 a == b那么a = b否则 a = 1,这样吗?
             那不c89等号和赋值语句是一个意思了?
                 
------解决方案--------------------
https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html
这样做的话,如果x有副作用,可以避免副作用。

在上述页面中up的话,是
https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html#C-Extensions

可以看到这不是标准C语法,是gcc的扩展。

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html
这样做的话,如果x有副作用,可以避免副作用。

在上述页面中up的话,是
https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html#C-Extensions

可以看到这不是标准C语法,是gcc的扩展。


看了你发的网址,非常感谢哦。顺便再问下,x有副作用该如何理解呢



#define INC ++x
int x = 0;
....
int b = INC ? : 1; //和int b = INC ?  INC: 1;后者x自增了两次, 而前者只自增一次


可能。