C++中如何实现int类型按字节打印输出-创新互联

本文小编为大家详细介绍“C++中如何实现int类型按字节打印输出”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++中如何实现int类型按字节打印输出”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

创新互联建站专业为企业提供东胜网站建设、东胜做网站、东胜网站设计、东胜网站制作等企业网站建设、网页设计与制作、东胜企业网站模板建站服务,十年东胜做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

代码如下:


#include
using namespace std;

int main()
{
  int i = 128;
  
  cout << sizeof(int) << endl;

  unsigned char* cc = (unsigned char*)&i;

  for (int j = 0; j < 4; j++)
    printf("cc: %p \t *cc: %x\n", cc + j, *(cc + j));
  
  system("pause");
  return 0;
}

输出:

C++中如何实现int类型按字节打印输出

以上是正确代码

以下对代码做改变

unsigned char* cc = (unsigned char*)&i;
改为
 char* cc = ( char*)&i;

 //代码如下:
#include
using namespace std;

int main()
{
  int i = 128;
  
  cout << sizeof(int) << endl;

   char* cc = ( char*)&i;

  for (int j = 0; j < 4; j++)
    printf("cc: %p \t *cc: %x\n", cc + j, *(cc + j));
  
  system("pause");
  return 0;

输出:

C++中如何实现int类型按字节打印输出

输出为什么是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类型按字节打印输出”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注创新互联行业资讯频道。


当前标题:C++中如何实现int类型按字节打印输出-创新互联
网站地址:http://azwzsj.com/article/dedoie.html