运算符优先级和进化

时间:2014-02-24 16:21:55

标签: c operators

在C

i = 7;
j = i++ * ++i; // outputs 64?

根据优先级后增量首先出现

它应该是7 * 9。指出我的错误。能否请您为我提供一个资源,我可以详细了解这些资源,了解这些事情是如何运作的,这就是评估的顺序。

1 个答案:

答案 0 :(得分:0)

你的问题是上面没有序列点。看到   Undefined behavior and sequence points

因此,您无法控制i的两个增量发生的顺序(只是返回增量数字或增量前的数字)。因此,这是未定义的行为。

例如,它可以首先执行++i,然后返回i++,同时返回8,并给你64.由于它是未定义的行为,从技术上讲,你可以得到任何结果。