0

假设我在 C 程序中有这样的结构:

if (res == NULL)
{
    int i = 1;
    ...
}
else
{
    int i = 2;
    ...
}

如果我改为写,我会节省一些内存吗

int i;

if (res == NULL)
{
    i = 1;
    ...
}
else
{
    i = 2;
    ...
}

?

i在 if-else 结构之外不需要该变量。

4

2 回答 2

3

没有任何编译器即使是中等质量也不会为任何一种情况生成比另一种更好的代码,除非它的优化功能可能被禁用。

于 2019-09-21T11:42:29.860 回答
2

不要为记忆而烦恼。

代码片段具有不同的语义。

在第一个代码片段中,(两个不同的)变量i仅在 if 和 else 语句中可见。所以它们不能在 if 语句之外被访问。

在第二个代码片段中,变量 i 在 if 语句之外可见且有效。如果它应该只在 if 语句中使用,那么在不使用它的块中声明一个变量是一种糟糕的编程风格。

于 2019-09-21T11:41:05.107 回答