簡體   English   中英

將無符號字符數組轉換為整數

[英]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.

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