1
我被困在上面的問題。 有一個數組中int8_t:Ansi C int16_t引用int8_t數組
int8_t i8array[3];
i8array[0] = 10;
i8array[1] = 15;
i8array[2] = 100;
而且我想不只是轉換也引用int16_t到i8array [1]。 所以我希望有一個新的變量i16var,這與15 < < 8 + 100 = 3940
值的int16_t如果我改變i16var到3941,應該從100改變i8array的第2項爲101。
是否ANSI C有這種條件?我嘗試了很多東西,甚至在這裏,我只是找到了在這些類型之間轉換的答案。
爲了避免誤解,i8array可能#2後,其他項目這是不是i16var有趣。 – Daniel
你說你已經嘗試了很多東西。你有什麼嘗試?將此添加到您的問題。 –
你正在尋找的是不可靠的。除此之外,還有一些機器,其中'&i8array [1]'不會被正確對齊以作爲int16_t'指針處理。你在內存中假設一個大端的佈局;這可能不是你的CPU的工作方式。另外,你需要兩個變量來引用相同的位置;你只能用'union'或指針來做到這一點。您可以嘗試使用'int16_t * i16p =(int16_t *)&i8array [1];'然後使用'int16_t i16 = * i16p;'讀取並使用'* i16p = 3941;'來寫入,但這可能會或可能不會崩潰,可能會或可能不會產生你想要的結果。 –