C unsigned int 数组和位移

Dar*_*rel 4 c arrays int shift bit

如果我有一个短的无符号整数数组。

将 array[k+1] 左移 8 位,将 8 位放入 array[k+1] 的下半部分吗?

或者他们只是因为超出了元素的分配空间而放弃了?

小智 5

他们下车。你不能以这种方式影响其他位。尝试一下:

#include <stdio.h>

void print_a (short * a)
{
    int i;
    for (i = 0; i < 3; i++)
        printf ("%d:%X\n", i, a[i]);
}

int main ()
{
    short a[3] = {1, -1, 3};
    print_a (a);
    a[1] <<= 8;
    print_a (a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是

0:1
1:FFFFFFFF
2:3
0:1
1:FFFFFF00
2:3