#include <iostream>
#include <cstdint>
using namespace std;
// Type aliases for register sizes
using Reg8 = uint8_t;
using Reg16 = uint16_t;
using Reg32 = uint32_t;
int main() {
uint64_t raw8, raw16, raw32;
cin >> raw8 >> raw16 >> raw32;
// Store values in fixed-width register types (overflow allowed)
Reg8 r8 = static_cast<Reg8>(raw8);
Reg16 r16 = static_cast<Reg16>(raw16);
Reg32 r32 = static_cast<Reg32>(raw32);
// Cast to wider unsigned types to ensure numeric output
cout << "R8=" << static_cast<uint32_t>(r8)
<< " R16=" << static_cast<uint32_t>(r16)
<< " R32=" << static_cast<uint32_t>(r32);
return 0;
}
Explanation & Logic Summary
uint8_t must be cast before printing to avoid character output.using improves readability and maintainability in firmware code.Firmware Relevance & Real Embedded Meaning
Input
255 12345 987654321
Expected Output
R8=255 R16=12345 R32=987654321