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