重新存储已经存储在目标变量中的一个值是否会导致重写并延长运行时间?

Rob*_*rtS -1 c c++ memory performance variable-assignment

我真正担心的是,如果我编写了一个导致将值分配给变量的表达式,该变量已经存储了要分配的值,那该怎么办。

例如:

#include <stdio.h>

int main(void)
{
     int var = 1;

     printf("The actual value of var is %d",var);

     var = 1;                                  // What happens exactly if I bring in this expression?
                                               // Does it rewrite the memory?
     return 0;
}
Run Code Online (Sandbox Code Playgroud)

1var在内存中重写to 的值,这会导致更长的运行时间吗?

还是似乎只是以某种方式跳过了分配命令?


我已经找到了确切的答案,但我找不到此处已经提出的内在问题,而且在我看来也找不到C99。

这个问题是针对C和C ++的,因为我都使用C和C ++,所以我不想两次提出相同的问题。如果这两种选择之间都存在答案,请说明重点关注哪种语言。

Bla*_*aze 5

让我们在这里尝试:

在此处输入图片说明

如您所见,此编译器将重新分配该值。该var = 1;语句转换为mov指令。现在让我们以更高的优化级别进行尝试:

在此处输入图片说明

现在,var = 1;它不会转换为任何程序集。它已经过优化。即使int var = 1;已优化,也已1对该printf调用的值进行了硬编码。

通常,它取决于编译器,选项,语言以及可能的许多其他内容。如今,现代的编译器通常会优化此类代码,但是如果您想确定的话,应该始终自己尝试一下。