为什么书上说“编译器为内存中的变量分配空间”。不是可执行文件吗?我的意思是,例如,如果我编写以下程序,
#include <iostream>
using namespace std;
int main()
{
int foo = 0;
cout<<foo;
return 0;
}
并编译它,得到一个可执行文件(让它成为program.exe),现在,如果我运行program.exe,这个可执行文件将自己命令为变量foo分配一些空间。不会吗?请解释为什么书籍一直说,“编译器会做这个......做那个”,而实际上,编译的可执行文件会这样做。
在这个问题中添加另一个相关问题,为什么sizeof
称为编译时运算符?它实际上不是运行时运算符吗?