Typy v C++

Pavel Hudeček edizon na seznam.cz
Pátek Leden 14 16:57:16 CET 2022


Tak nějak předpokládám, že v Cube použijete nějaký 32b procesor, takže
unsigned int = uint32_t

PH

Dne 14.01.2022 v 16:45 Pavel Kutina napsal(a):
> No nezbývá, než se naučit dávat si na to bacha :(
>
> A ten rozdíl mezi unsigned int a uint16_t (uint8_t, uint32_t atd.) 
> taky někdo umíte vysvětlit? Vyřval mne sscanf a tam jsem tio vzdal a 
> příslušnou proměnnou deklaroval jako unsigned int (bohužel přslušná 
> část kódu prošla demolicí, teď to nedokážu zrekonstruovat).
>
> Jinak jaké je doporušení? Pro mne je deklarace přes ty přetypované _t 
> přehlednější, ale nejspíš to nemusí být vždycky totéž.
>
> Pavel Kutina
>
>
> ----- Original Message ----- From: "Jindroush" <jindroush na seznam.cz>
> To: "HW-news" <hw-list na list.hw.cz>
> Sent: Friday, January 14, 2022 4:30 PM
> Subject: Re: Typy v C++
>
>
> odpoved uz dosla s vysvetlenim... Jinak jsem to nacpal do
> https://cppinsights.io/
>
> a zaskrtl, at ukaze implicitni konverze, tam je to videt na vlastni voko
> if((static_cast<unsigned int>(static_cast<int>(LastCounter) + 1)) == 
> cnt) {
>
> On 14.01.2022 16:13, Pavel Kutina wrote:
>> Zdravím,
>>
>> opět něco nechápu, můžete mne poštouchnout?
>>
>> Píšu FW v STM Cube, mám deklarované dvě proměnné:
>>
>> unsigned int cnt = 0;
>> uint16_t LastCounter = 0;
>>
>> při porovnání v:
>>
>> if (LastCounter+1 == cnt)
>>
>> mi to píše warning:
>> ../src/receive.cpp:129:22: warning: comparison of integer expressions 
>> of different signedness: 'int' and 'unsigned int' [-Wsign-compare]
>> 129 | if ( (LastCounter+1) == cnt)
>> | ~~~~~~~~~~~~~~^~~~~~
>>
>> Chápu dobře, že unsigned int a uint16_t nejsou znaménkově 
>> kompatibilní typy? Proč ne?
>>
>> Na něco podbného jsem narazil před chvílí u sscanf, kde se mi to zase 
>> vztekalo pri použití uint16_t (jsem tam měl) místo unsigned int 
>> (který to chtělo).
>>
>> Popravdě, asi 90% času tohoto projektu trávím rovnáním datových typů, 
>> hodne v tom plavu :(


Další informace o konferenci Hw-list