gpt4 book ai didi

c++ - ^= 是否在内存中创建一个临时变量?

转载 作者:太空宇宙 更新时间:2023-11-04 15:02:11 26 4
gpt4 key购买 nike

按位运算符^=在使用时会在内存中创建一个临时变量吗?

举个例子,如果我有:

a ^= b;

它是否在内存中创建一个a的拷贝,然后检查它然后分配?或者它只是直接检查然后分配而不创建临时变量?

最佳答案

这是一个特定于编译器的问题,但我用 g++ -O2clang++ -O2 试过了。它编译了这个:

int main (int argc, char** argv) {
int a = argc, b = argc * 3;
a ^= b;
return a;
}

leal    (%rdi,%rdi,2), %eax
xorl %edi, %eax
ret

a ^= b 部分响应 xorl 行,如您所见,它是一条指令。所以gcc并没有创建然后赋值一个新的变量,而是直接把操作交给了CPU。

请注意,您应该纯粹因为觉得它有趣而查看它。从性能的角度来看,您应该关心这些事情并将其留给您的编译器。优化这些东西非常好,所以请将您的时间和知识集中在编写正确且可读的代码上!

关于c++ - ^= 是否在内存中创建一个临时变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30443079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com