本文小編為大家詳細介紹“C++中如何實現(xiàn)int類型按字節(jié)打印輸出”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“C++中如何實現(xiàn)int類型按字節(jié)打印輸出”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
十載的高密網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。網(wǎng)絡營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整高密建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“高密網(wǎng)站設計”,“高密網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
代碼如下:
#includeusing 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; //代碼如下: #includeusing 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變量為一個字節(jié),8bit,sighed char表示的范圍是-128~127,(-128在內(nèi)存中二進制表示為1000 0000,127在內(nèi)存中二進制表示為0111 1111),unsighed char表示的范圍是0~255.
給 i 賦值128,十六進制0x80,二進制1000 0000,相當于是給char變量賦值-128.
printf()函數(shù)的參數(shù)%x其含義為Unsigned hexadecimal integer;即輸出一個十六進制的整型,而在代碼中,%x對應的是char類型,所以此時printf()函數(shù)會將char類型隱式轉(zhuǎn)換為int類型。
對于int類型的對象,其值為-128,則其對應的內(nèi)存值是0xFFFFFF80
所以,在printf()函數(shù)中,char類型隱式轉(zhuǎn)換成int類型后,輸出就會變成4字節(jié)的0xFFFFFF80
讀到這里,這篇“C++中如何實現(xiàn)int類型按字節(jié)打印輸出”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。