例如,如果我声明int num = 7;
并且仅以它可能具有的方式使用它并且应该已经声明const char num = 7;
,因为char使用的内存少于int,gcc会优化它还是甚至不重要,因为它将被转换为组装?我意识到在这种情况下,变量将被完全优化,但是有没有一个场景,gcc决定变量作为一个不同的类型更好?
答案 0 :(得分:4)
如果程序的副作用没有可观察到的差异,那么编译器有权做出它喜欢的任何优化。 7
可能永远不会出现在生成的代码中(例如,如果仅在n+3
等表达式中使用它),如果您从未使用其地址,则不需要任何存储空间。