C++中int类型按字节打印输出的方法

 更新时间:2019年05月09日 08:30:15   作者:shell_nut  
这篇文章主要给大家介绍了关于C++中int类型按字节打印输出的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

今天在项目编程中,遇到一个问题,u32类型的参数,要赋值给一个u8 array[3],想用memcpy()函数进行赋值,由于类型大小不一致,一时不知道怎么做,经过查找,得以解决。说明如下;

项目是在内网中做,在查找过程中用自己笔记本做了一下实验,vs2013版本。

类似主题是int类型按字节打印数据,sizeof(int)实验验证后为4字节,就分别打印出这4个字节中的数值。

先贴上代码

#include<iostream>
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;
}

输出:


以上是正确代码

以下对代码做改变

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

 //代码如下:
#include<iostream>
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;

输出:

输出为什么是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语言结构体(struct)的详细讲解

    C语言结构体(struct)的详细讲解

    C语言中,结构体类型属于一种构造类型(其他的构造类型还有:数组类型,联合类型),下面这篇文章主要给大家介绍了关于C语言结构体(struct)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • C语言内存函数的具体使用

    C语言内存函数的具体使用

    本文介绍了C语言中几个常用的内存函数,包括memcpy、memmove、memset、memcmp的使用方法及其模拟实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • 超详细解析C++实现归并排序算法

    超详细解析C++实现归并排序算法

    归并排序是比较稳定的排序方法。它的基本思想是把待排序的元素分解成两个规模大致相等的子序列。本文将用C++实现这一排序算法,需要的可以参考一下
    2022-09-09
  • C语言超详细讲解文件的操作

    C语言超详细讲解文件的操作

    C语言文件操作的方法有很多,函数也有很多你知道哪些呢?下面是小编为大家带来的C语言文件操作的方法,欢迎阅读
    2022-04-04
  • C语言中求解图形的问题

    C语言中求解图形的问题

    这篇文章主要介绍了C语言中求解图形的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Visual Studio 2022卡死分析

    Visual Studio 2022卡死分析

    本文主要介绍了Visual Studio 2022卡死分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 老程序员教你一天时间完成C++俄罗斯方块游戏

    老程序员教你一天时间完成C++俄罗斯方块游戏

    俄罗斯方块游戏大家应该非常熟悉,非常经典的一款游戏,本文来详细讲解下俄罗斯方块游戏的制作过程,赶紧来看下吧!希望能给你带来帮助
    2021-08-08
  • C++实现CreatThread函数主线程与工作线程交互的方法

    C++实现CreatThread函数主线程与工作线程交互的方法

    这篇文章主要介绍了C++实现CreatThread函数主线程与工作线程交互的方法,是Windows应用程序设计中非常实用的方法,需要的朋友可以参考下
    2014-10-10
  • Linux vmstat命令实战详细解析

    Linux vmstat命令实战详细解析

    这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)
    2013-09-09
  • Qt设计与实现软键盘效果

    Qt设计与实现软键盘效果

    这篇文章主要为大家详细介绍了Qt设计与实现软键盘效果的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11

最新评论