在诸如int i, v[5], j;
之类的声明中,如何分配变量?是否允许编译器更改其顺序?
答案 0 :(得分:3)
是的,只要程序的含义保持不变,编译器就可以做任何想做的事情。这些变量可能不存在优化,仅存储在寄存器中,重用于其他目的,重新排序以满足对齐要求。
(请注意,编译器无法对结构中的变量重新排序)
答案 1 :(得分:2)
是的,编译器可以(并将会)更改顺序。订购是特定于编译器的,未在C标准中指定。 C标准甚至没有指定堆栈应该存在。
答案 2 :(得分:1)
允许编译器在任何需要的地方分配。