C++中如何实现int类型按字节打印输出
本文小编为大家详细介绍“C++中如何实现int类型按字节打印输出”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++中如何实现int类型按字节打印输出”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
代码如下:
#include<iostream>usingnamespacestd;intmain(){inti=128;cout<<sizeof(int)<<endl;unsignedchar*cc=(unsignedchar*)&i;for(intj=0;j<4;j++)printf("cc:%p\t*cc:%x\n",cc+j,*(cc+j));system("pause");return0;}
输出:
以上是正确代码
以下对代码做改变
unsignedchar*cc=(unsignedchar*)&i;改为char*cc=(char*)&i;//代码如下:#include<iostream>usingnamespacestd;intmain(){inti=128;cout<<sizeof(int)<<endl;char*cc=(char*)&i;for(intj=0;j<4;j++)printf("cc:%p\t*cc:%x\n",cc+j,*(cc+j));system("pause");return0;
输出:
输出为什么是ffffff80呢?
char类型是有符号字符型变量还是无符号字符型变量,要看编译器是怎么定义的,不能想当然。char变量为一个字节,8bit,sighed char表示的范围是-128~127,(-128在内存中二进制表示为1000 0000,127在内存中二进制表示为0111 1111),unsighed char表示的范围是0~255.
给 i 赋值128,十六进制0x80,二进制1000 0000,相当于是给char变量赋值-128.
printf()函数的参数%x其含义为Unsigned hexadecimal integer;即输出一个十六进制的整型,而在代码中,%x对应的是char类型,所以此时printf()函数会将char类型隐式转换为int类型。
对于int类型的对象,其值为-128,则其对应的内存值是0xFFFFFF80
所以,在printf()函数中,char类型隐式转换成int类型后,输出就会变成4字节的0xFFFFFF80
读到这里,这篇“C++中如何实现int类型按字节打印输出”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注恰卡编程网行业资讯频道。