[英]Converting unsigned char array to an integer
據我所知,在C語言中,數組是逐個元素存儲在內存中的。 (即元素0,元素1,元素2,...,元素n)。 我正在嘗試通過以下代碼進行查看:
unsigned char a[] = { '\1' , '\2', '\3' ,'\4' };
printf("%d\n", (int*) a);
由於無符號字符為1個字節,整數為4個字節; 我認為它必須打印出值:
00000001 00000010 00000011 00000100 = 2 ^ 2 + 2 ^ 8 + 2 ^ 9 + 2 ^ 17 + 2 ^ 24 = 16909060
但是,當我運行該程序時,它會為每個試驗生成不同的結果。
我在這里想念什么?
您可能要使用*(int *)a
,否則您只是在打印地址。
但是,這將調用實現定義的行為:
char
數組可能未正確對齊以讀取為int
。 int *
讀取char
數組-這違反了嚴格的別名規則。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.