gpt4 book ai didi

c - A/C编译器是否在编译时执行移位操作?

转载 作者:行者123 更新时间:2023-12-04 09:07:42 26 4
gpt4 key购买 nike

有人提到,一个编写良好的 C 编译器应该在编译时(即不是运行时)执行移位运算符;例如在这段代码中左移 - <<。任何人都可以证明这一点的有效性吗?

代码:

constant unsigned int elements = length/8 + (length % y > 0 ? 1 : 0);  
unsigned char bit_arr[elements];

伪代码:

bit_arr[i] |= (1 << j); // Set 
bit_arr[i] &= ~(1 << j); // Unset
if( bit_arr[i] & (1 << j) ) // Test

最佳答案

你到底在问什么?您的意思是“编译器会自己进行转换”吗?如果那是你要问的答案是“这取决于”:)。如果被移位的数字和移位的大小都是编译时常量,编译器几乎肯定会进行移位(尽管它不必这样做)。否则,它将生成执行移位的低级代码(通常是一条机器指令)。

关于c - A/C编译器是否在编译时执行移位操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5998935/

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