在C
i = 7;
j = i++ * ++i; // outputs 64?
根据优先级后增量首先出现
它应该是7 * 9。指出我的错误。能否请您为我提供一个资源,我可以详细了解这些资源,了解这些事情是如何运作的,这就是评估的顺序。
答案 0 :(得分:0)
你的问题是上面没有序列点。看到 Undefined behavior and sequence points
因此,您无法控制i
的两个增量发生的顺序(只是返回增量数字或增量前的数字)。因此,这是未定义的行为。
例如,它可以首先执行++i
,然后返回i++
,同时返回8,并给你64.由于它是未定义的行为,从技术上讲,你可以得到任何结果。