C unsigned int 数组和位移

标签 c arrays int bit shift

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

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

或者它们只是因为超出了为元素分配的空间而消失了?

最佳答案

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

#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;
}

输出是

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

关于C unsigned int 数组和位移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1778478/

相关文章:

c - malloc 有时起作用,有时不起作用(通用链表)

c - 如何使用结构将指针值从单独的函数传递回 main

c++ - 使用 'unsigned int' 读取 'cin'

c - 在只处理整数的程序中输入 float

c++ - 返回一个值还是使用指针参数更快

c - C语言中的字符串输入

java - 如何在递归函数的每一级都有一个新的局部数组

php - 表单 - 从 Controller 传递数组到 View - PHP - Laravel

c - 在C中将int值添加到字符串中

c - 给定一个二维数组——我想使用原始数组中的值创建一个新数组