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