[英]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*)iptr
是iptr
指向的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.