常量折叠是一种编译器的优化手段, 对于能在编译计算出值的表达式, 直接完成计算.

下面是例子:

const int a = 3;
const int b = 4;
int c = a + b;

在编译期会被替换成

const int a = 3;
const int b = 4;
int c = 3 + 4;

通过这种方式, C++程序的性能能得到一定程度上的优化(减少了运行时指令的数量)

同时也会对不了解常量折叠的人带来一定的困惑, 如下

const int a = 3;
int* b = (int*)&a;
*b = 4;
printf("%d\t%d\n", a, *b);
// 3    4