Aka*_*ash 0 c++ gcc turbo-c++ operator-precedence
我有这个表达
(*p % 3 != 0) ? *p = (*p) + 1 : *p = (*p) + 2;
Run Code Online (Sandbox Code Playgroud)
在Turbo C++中,如果*p为11,则计算结果为14;如果*p为33,则计算结果为35
在GCC(Windows)中,它分别评估为12和35,这是预期的
括号为以下格式时,它工作正常:
(*p % 3 != 0) ? (*p = (*p) + 1) : (*p = (*p) + 2);
Run Code Online (Sandbox Code Playgroud)
这种差异有什么解释吗?我猜它归结为编译器使用的优先顺序的差异,但无法确定根本原因
三元条件运算符在C和C++中是不同的.a ? b : c = d解析表达式......
就像(a ? b : c) = d在C中一样
就像a ? b : (c = d)在C++中一样.