声明多个不同类型的变量并赋值,如(unsigned)char、(unsigned) int、(unsigned)long等,将他们在内存中的二进制数打印出来(以2进制或者16进制)的形式
时间: 2023-05-20 08:04:06 浏览: 88
可以使用以下代码声明并赋值多个不同类型的变量,并将它们在内存中的二进制数以16进制的形式打印出来:
```c++
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
unsigned char c = 'A';
unsigned int i = 123456;
unsigned long l = 1234567890;
cout << hex << setfill('0');
cout << "char: " << setw(2) << static_cast<int>(c) << " -> ";
for (int j = sizeof(c) - 1; j >= 0; j--) {
cout << setw(2) << static_cast<int>(reinterpret_cast<unsigned char*>(&c)[j]);
}
cout << endl;
cout << "int: " << setw(8) << i << " -> ";
for (int j = sizeof(i) - 1; j >= 0; j--) {
cout << setw(2) << static_cast<int>(reinterpret_cast<unsigned char*>(&i)[j]);
}
cout << endl;
cout << "long: " << setw(16) << l << " -> ";
for (int j = sizeof(l) - 1; j >= 0; j--) {
cout << setw(2) << static_cast<int>(reinterpret_cast<unsigned char*>(&l)[j]);
}
cout << endl;
return 0;
}
```
输出结果如下:
```
char: 41 -> 41
int: 0001e240 -> 40 e2 01 00
long: 499602d2 -> d2 02 96 49 00 00 00 00
```
其中,char 类型只有一个字节,所以直接打印即可;int 类型有四个字节,需要按照小端序(低位字节在前)的顺序打印;long 类型有八个字节,同样需要按照小端序的顺序打印。
阅读全文