编译器的优化里有这么个名词,其实是一个比喻,折叠,只有东西可以折叠:衣服,被子,纸,偏薄、偏软的东西更容易折叠;
其实这个折叠还包含一个很重要的概念在里面,就是折叠操作的同域性(闭环,代数里域的概念)。被子折叠完还是被子,不会变成纸。
通常的理解,常量表达式怎么可能被折叠?拟物化的一种说法。折叠就是计算,将两个常数计算成一个,二变一,常量表达式计算完成之后还是常量,只不过个数变成一个。
那gcc的优化就是将这个最终的常量在编译时计算出来,不要在最终生成的机器代码里有任何体现。
这个折叠操作就是最基本的一种优化方式。