C++中怎么實現int類型按字節打印輸出,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
創新互聯建站服務項目包括武山網站建設、武山網站制作、武山網頁制作以及武山網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,武山網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到武山省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!
#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++中怎么實現int類型按字節打印輸出
URL地址:http://vcdvsql.cn/article22/pephjc.html
成都網站建設公司_創新互聯,為您提供自適應網站、外貿建站、虛擬主機、營銷型網站建設、電子商務、外貿網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯