c - 在使用 0 和 memset 初始化之间进行优化

标签 c

哪种优化方式更好?

1)

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

或2)

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

两种方法生成的汇编代码有多少条指令不同?

最佳答案

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

我肯定更喜欢第一个版本,因为它不太容易出错,并且(恕我直言)清楚地表明了您的意图。

关于c - 在使用 0 和 memset 初始化之间进行优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27547752/

相关文章:

c - C中void指针的指针算法

c - l 需要作为增量操作数的值

c - 等待进程返回

c - 如何在C中一次清除多个位?

c++ - 如何仅在 5 个位置的数组中初始化第 4 个位置

c - "Must use ' 结构 ' tag to refer to type ' 节点 '"

c - 是否可以获取宏的地址?

c - 这是如何清理数组中的空白空间的?

c++ - 可以将自旋锁与 O(1) 非内存连续代码一起使用吗?

c - 使用 FFmpeg API 即时重新混合 mp4