#include <stdio.h> int main() { const register int i = 0; printf("%d, %d\n", sizeof(const register int), sizeof(i)); return 0; }
问题:编译不过!
原因是,第一个sizeof测试类型的大小 类型的本质是创建变量的模子,编译器通过类型在内存中“咔”出变量的莫子,
那么register是指的寄存器变量 从编译器的角度 不是模子的范畴 所以第一个编译不过
但是第二个可以编译通过的 原因是第二个sizeof是测试变量的大小 这指明了类型是int其是register 所以编译器知道如果这个变量创建出来了只会是4个字节