#include <iostream>
#include <stdint.h>
using namespace std;
struct A {
uint8_t a;
uint16_t b;
uint8_t c;
};
int main()
{
uint8_t arr[4] = { 16,2,2, 20 };
A* ptr = (A*)arr;
A x = *ptr;
cout << (int) x.a << endl;
cout << (int)x.b << endl;
cout << (int)x.c << endl;
}
vs下输出是
16
5122
204
unix下输出是
16
5122
255
本人的问题是输出为什么不是
16
514 (2 × 256 +2)
20
还有本人不清楚怎么得到的5122
谢谢
#include <stdint.h>
using namespace std;
struct A {
uint8_t a;
uint16_t b;
uint8_t c;
};
int main()
{
uint8_t arr[4] = { 16,2,2, 20 };
A* ptr = (A*)arr;
A x = *ptr;
cout << (int) x.a << endl;
cout << (int)x.b << endl;
cout << (int)x.c << endl;
}
vs下输出是
16
5122
204
unix下输出是
16
5122
255
本人的问题是输出为什么不是
16
514 (2 × 256 +2)
20
还有本人不清楚怎么得到的5122
谢谢
解决方案
20
试试sizeof(A), 可以搜索”成员变量对齐”