国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++中int類型按字節打印輸出的方法

2020-01-26 13:28:12
字體:
來源:轉載
供稿:網友

前言

今天在項目編程中,遇到一個問題,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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永登县| 安岳县| 巴塘县| 洞头县| 拜泉县| 景宁| 新蔡县| 芜湖市| 当雄县| 佳木斯市| 蒲江县| 丁青县| 荔浦县| 定安县| 鲁山县| 锡林郭勒盟| 郓城县| 武川县| 扎赉特旗| 余江县| 漳浦县| 阜新| 陆河县| 黄骅市| 富阳市| 井冈山市| 锡林浩特市| 伊宁市| 宣化县| 宝清县| 丰镇市| 朝阳区| 宜城市| 涟水县| 苍南县| 天气| 馆陶县| 金门县| 手机| 双城市| 杭州市|