int x=10; int y=x-- - --x; => y=0

问题描述:

int x=10; int y=x-- - --x; => y=0
1个回答 分类:综合 2014-11-12

问题解答:

我来补答
未定义行为,具体结果依赖于具体编译器的实现方法,讨论其取值没有意义
x--和--x两个参数的运算顺序语言标准不进行规定

楼下说法不正确
y = x-- - --x;可能的行为有
1, y = x-- - --x;
2, y = --x - x--;
此题违背语言标准,没有正确答案


截图证明,gcc环境下y为0,VS环境下可能为1,没装VS,楼主可以自行实验求证
再问: 但我在两个编译器下进行运算 结果都是0
再答: 那么说明VS也使用了这种行为策略进行编译,但是从理论角度分析,其结果是不确定的标准如此表述:unspecified behaviorThe order in which the function designator, arguments, and subexpressions within the arguments are evaluated in a function call明确说明了一个参数的运算顺序是不进行定义的
试验了一下,Clang编译器的编译结果不是0
 
 
展开全文阅读
剩余:2000