C語言 —— 列印不同對象的位元組表示 ( 對int*強制轉換成unsigned char*的理解 )

來源:互聯網
上載者:User

標籤:文章   拆分   ret   技術分享   一個   stdio.h   類型   圖片   c語言   

此文章參考《深入理解電腦系統》P31。

 

先看如下代碼:  12345的十六進位表示為:0x00003039

 1 #include <stdio.h> 2  3 int main() 4 { 5     int a = 12345; 6     char *q = (char *)(&a); 7     for(int i = 0; i < sizeof(a); ++i) 8         printf("%.2x ", q[i]); 9     return 0;10 }

輸出為:

 

a的地址是int*類型,其對象是int型的4位元組的12345,當其強制轉換成unsigned char*類型的q時,由於char是1個位元組,所以其對象會被一個位元組一個位元組的拆分,由於記憶體中是小端儲存( 低地址存低位,高地址存高位),所以q[0]是4位元組的12345在記憶體中的第一個位元組,依次類推(12345所佔的4個位元組被強制拆成了4個單位元組的儲存),所以最後輸出為 39 30 00 00 。

 

C語言 —— 列印不同對象的位元組表示 ( 對int*強制轉換成unsigned char*的理解 )

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.