c – 为什么将变量`i`初始化为0和大尺寸会导致程序的大小相同?

有一个问题让我很困惑.

int main(int argc, char *argv[])
{
    int i = 12345678;
    return 0;
}
int main(int argc, char *argv[])
{
    int i = 0;
    return 0;
}

程序总共具有相同的字节.为什么?

那个字面值确实存储在哪里?文字段或其他地方?

最佳答案

The programs have the same bytes in total.Why?

有两种可能性:

>编译器正在优化变量.它没有在任何地方使用,因此没有意义.
>如果1.不适用,程序大小无论如何都是相同的.他们为什么不应该? 0的大小与12345678一样大.T类型的两个变量在内存中占用相同的大小.

And where the literal value indeed stored?

在堆栈上.局部变量通常存储在堆栈中.

转载注明原文:c – 为什么将变量`i`初始化为0和大尺寸会导致程序的大小相同? - 代码日志