AとBの値の結果は次のとおりです。C言語のデータ構造を説明してください
A:-121.000000, B:4294967296.000000
なぜAとBが異なるのだろうと思います。
データ構造に関する基本的な知識を教えてください。最初のケースで
int main() {
uint8_t data[8];
data[0] = 0x3C;
data[1] = 0x00;
data[2] = 0x00;
data[3] = 0x00;
data[4] = 0x87;
data[5] = 0xFF;
data[6] = 0xFF;
data[7] = 0xFF;
float A;
float B;
A =
(uint8_t) data[4] |
(uint8_t) data[5] << 8 |
(uint8_t) data[6] << 16 |
(uint8_t) data[7] << 24;
B =
(uint32_t) data[4] |
(uint32_t) data[5] << 8 |
(uint32_t) data[6] << 16 |
(uint32_t) data[7] << 24;
printf("A:%f, B:%f", A, B);
return 0;
}
理由は、暗黙の整数昇格です。それ以来多くの同様の質問があります。リンクされた複製を研究してください。 – Lundin