Re: Jak to v C++ napsat líp?
Ladislav Vaiz
spam na nagano.cz
Čtvrtek Srpen 31 08:31:26 CEST 2023
On 31.08.2023 8:05, Martin Záruba wrote:
> Mám pole
>
> int A[2];
>
> potřebuji do něj ale vložit čtyři znaky ABCD. Vymyslel jsem
>
> A[0] = ('A' << 8) | 'B';
> A[1] = ('C' << 8) | 'D';
>
> nejde to nějak líp? Toto funguje, ale je to docela nesrozumitelné.
>
Pokud je to signed char a někdy místo ABCD použijete znaky >=128, tak
vám tam asi začnou přebývat 0xff :-)
Doporučuji přetypovat na unsigned.
#include <stdio.h>
#include <stdint.h>
int main(){
signed char c1 = 0xa0;
signed char c2 = 0xb0;
int16_t a = (c1 << 8) | c2;
printf("%x\n", (unsigned int)a);
}
./a.out
ffffffb0
L.
Další informace o konferenci Hw-list