在初始化为0和memset之间进行了优化

时间:2014-12-18 13:30:50

标签: c

哪种是优化方式?

1)

{
    int a[100] = {0};
}

或2)

{
    int a[100];
    memset(a,0,100);
}

两个approches生成的汇编代码因指令数而异?

1 个答案:

答案 0 :(得分:1)

它们通常编译为相同的汇编代码,尤其是在启用优化的情况下,或者通过简单循环(例如rep stos)编译。 但是,这取决于上下文:您通常不需要(尽管您认为如此)将数组归零。

我肯定更喜欢第一个版本,因为它不容易出错,并且(imho)明确说明你的意图。