我对C中的位移进行了一个小测试,所有的位移0,8,16位都可以,我理解发生了什么.
但32位右移或左移对我来说并不清楚,我正在进行测试的变量是32位长.
然后,我改变了32位变量,这些变量将保持移位结果,但32位右左移位是相同的!
这是我的代码:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <inttypes.h>
int main() {
uint32_t code = 0xCDBAFFEE;
uint64_t bit32R = code >> 32;
uint16_t bit16R = code >> 16;
uint8_t bit8R = code >> 8;
uint8_t bit0R = code >> 0;
uint64_t bit32L = code << 32;
uint16_t bit16L = code << 16;
uint8_t bit8L = code << 8;
uint8_t bit0L = code << 0;
printf("Right shift:\nbit32R %.16x\nbit16R %x\nbit8R %x\nbit0R %x\n\n",
bit32R, bit16R, bit8R, bit0R);
printf("Left shift:\nbit32L %.16x\nbit16L …Run Code Online (Sandbox Code Playgroud) static volatile组合使用变量说明符有什么区别?或者单独使用一个;喜欢static或volatile在微控制器编程?