C 单行中的增量前/增量后减量求值
你能给我解释一下吗 我已经阅读了几乎所有关于stackoverflow的问题 未定义的行为 前/后公司。。12月。。运算符优先级/结合性 使用括号 但结果并不确定 请解释一下,我明天有个面试C 单行中的增量前/增量后减量求值,c,operators,post-increment,pre-increment,C,Operators,Post Increment,Pre Increment,你能给我解释一下吗 我已经阅读了几乎所有关于stackoverflow的问题 未定义的行为 前/后公司。。12月。。运算符优先级/结合性 使用括号 但结果并不确定 请解释一下,我明天有个面试 int a, x = 0; // value of x ------> a(sum) //gcc 4.9.9.2[dev cpp] 2 1 2 4
int a, x = 0;
// value of x ------> a(sum)
//gcc 4.9.9.2[dev cpp] 2 1 2 4 5 14
//acc to my calculation 2 0 2 4 5 13
//geeksforgeeks compiler 5 5 5 5 5 15
//gcc 6.3 [codechef ide] 5 5 5 5 5 15
a = ((((++x + x++) + ++x) + ++x) + ++x);
printf("%d....%d", x, a);
return 0;
如果我犯了错误,请帮我改正。
谢谢没有序列点,因此您的代码调用未定义的行为
括号不引入序列点,因此,尽管您使用了它们,您仍然调用UB。未定义的行为这不能是面试问题……是的,它可以是面试问题。答案是:它的行为没有定义。对于一些操作员来说,评估行为没有定义。我已经阅读了几乎所有关于stackoverflow的问题——这没什么。我在Youtube上看过几乎所有的视频B但我使用了括号,这样就没有未定义的行为,代码应该按预期工作。@rewrihitesh:括号不引入序列点。好的,谢谢,我学到了一些很棒的东西。再次谢谢