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的扩展。
------解决方案--------------------
可能。
最近在公司看一个算法的源代码,遇到一个类似三目运算符的语句:类似如下:
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的扩展。
------解决方案--------------------
可能。