簡體   English   中英

了解C程序輸出的問題

[英]Problem understanding output of C program

我有以下程序:

#include<stdio.h>
int main()
{
int i =257;
int *iptr =&i;
printf("%d%d",*((char*)iptr),*((char*)iptr+1));
return 0; 
}

輸出是:

1 1

我無法理解為什么第二個值是1 請解釋。

第一個值出現的原因相同1.您從int一次訪問一個字節。 由於257是0x0101 ,因此兩個最低有效字節均包含值1。

可能你的int是4個字節長並且存儲了little-endian,盡管我認為它可能是2個字節長,並且有兩個endian-ness。

因為二進制257是00000001 00000001 :所以表示它的第一個和第二個字節都設置為1。

(char*)iptriptr指向的char (因此是1個字節),而(char*)iptr+1是下一個字節。

257十六進制為4字節= 0x00000101,在Intel機器上存儲為01 01 00 00.iptr指向第一個01,iptr + 1指向第二個01。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM