C ++中的sizeof是在编译时还是运行时计算的?

例如,这段代码的结果取决于哪一台机器:编译机器或机器可执行文件的工作原理?

sizeof(short int) 

sizeof是一个编译时操作符。

这取决于执行你的程序的机器。 但价值在编译时评估。 因此,编译器(当然)必须知道它正在编译哪个机器。

sizeof是在编译时计算的,但是如果可执行文件被移动到编译时间和运行时间值不同的机器上,则可执行文件将无效。