相关疑难解决方法(0)

什么时候uint8_t≠unsigned char?

根据C和C++ , CHAR_BIT >= 8.
但无论何时CHAR_BIT > 8,uint8_t甚至都不能表示为8位.
它必须更大,因为它CHAR_BIT是系统上任何数据类型的最小位数.

什么样的系统可以uint8_t合法地定义为除了以外的类型unsigned char?

(如果C和C++的答案不同,那么我想知道两者.)

c c++ types unsigned-char uint8t

59
推荐指数
3
解决办法
2万
查看次数

memcpy 是否保留不同类型之间的数据?

memcpy如果缓冲区大小足够,调用两个不同的结构是否会保留原始数据?如果它们各自的数据类型重叠,是否定义为使用先前数据类型的数据检索另一种数据类型的值?

这对于两种 c/cpp 语言应该是相似的,但我在 cpp 中提供了一个示例 -

#include <iostream>
#include <cstring>

using namespace std;

struct A{
  int a;
  char b[10];
};

struct B{
  int ba;
  int bb;
};

int main(){
    B tmp;
    tmp.ba = 50;
    tmp.bb = 24;
    cout << tmp.ba << tmp.bb << "\n";

    // everything is fine yet

    A obj;
    memcpy(&obj, &tmp, sizeof(tmp));

    // 1. is this valid?
    cout << obj.a << "\n";

    B newB;
    memcpy(&newB, &obj, sizeof(newB));

    // 2. Are these valid?
    cout << newB.ba << …
Run Code Online (Sandbox Code Playgroud)

c++ struct memcpy

4
推荐指数
1
解决办法
1662
查看次数

标签 统计

c++ ×2

c ×1

memcpy ×1

struct ×1

types ×1

uint8t ×1

unsigned-char ×1