gpt4 book ai didi

c++ - 字节设置一个无符号短

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:27:22 24 4
gpt4 key购买 nike

我正在尝试使用 memset 单独设置无符号短变量中的字节:

#include <cstring>
#include <iostream>

int main()
{
unsigned short test2; // 2 bytes

std::cout << "size of test2: " << sizeof(test2) << std::endl;

memset(&test2, 0, 2);
memset(&test2, 0x4D, 1);
memset(&test2+1, 0x42, 1);

std::cout << "value: " << test2 << std::endl;

return 0;
}

我得到的输出是:

size of test2: 2
value: 77

77 是 0x4D。所以出于某种原因,它没有获取我试图在变量的第二个字节上设置的 0x42。这是为什么?

最佳答案

&test2+1 实际上会将地址推进 sizeof(test2),即 2,并将指针移到范围之外。

尝试转换为 char*:

#include <cstring>
#include <iostream>

int main()
{
unsigned short test2; // 2 bytes

std::cout << "size of test2: " << sizeof(test2) << std::endl;

memset(&test2, 0, 2);
memset(&test2, 0x4D, 1);
memset((char*)&test2+1, 0x42, 1);

std::cout << "value: " << test2 << std::endl;

return 0;
}

关于c++ - 字节设置一个无符号短,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38548221/

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