Re: Proè to není chyba?

Michal Gregor a2x1nptda8 na email.cz
Úterý Duben 30 21:48:50 CEST 2024


To prave neni pravda. Dneska jsme na to dost tvrde narazili.

static_cast udela z minusu velky plus

porovnani signed < unsigned ma taky prekvapivy vysledek

A vypocet nize rovnez asi neni spravny:
signed = signed + unsigned
(To jeste nemam prostudovane)

Michal Gregor


Dne 30.04.2024 v 18:16 Miroslav Mraz napsal(a):
> Jenže takhle C ani C++ nefunguje. Mezi unsigned a signed si to přetypuje 
> automaticky. Pokud tedy máte na parametry jiné požadavky než autor 
> knihovny, musíte si to ohlídat explicitně sám. V tom je právě kouzlo 
> těchto jazyků - můžete zapsat cokoli kamkoli aniž by vám překladač házel 
> klacky pod nohy. Ovšem s touto svobodou přichází i zodpovědnost ohlídat, 
> že neděláte blbosti. Ilustrační příklad - předpoklad je že z počítáte 
> jako unsigned a lib_fnc akceptuje pouze signed v celém jeho rozsahu :
> 
> void lib_fnc (const int n) {
>    printf("n = %d\n", n);
> }
> int check (const unsigned n) {
>    const int result = n; // explicitní přetypování není třeba
>    if (result < 0) {
>      // chyba, ale zřejmě nebude kritická, jen info
>      syslog ("Unsigned parameter \"lib_fnc\" overflow 0x%08X\n", n);
>      return 0; // ??? podle okolností
>    }
>    return result;
> }
> int main(void) {
>    const unsigned z = 0x8FFF0000u;
>    lib_fnc(check(z));
>    return 0;
> }
> 
> 
> Mrazík
> 
> On 29. 04. 24 22:24, Petr Labaj wrote:
>> Však tady to taky hlídá.
>> Ale protože z nějakého důvodu mám na parametry jiné požadavky než 
>> autor knihovny, tak si to pěkně přetypuju.
>> A čtenář programu to později uvidí a zamyslí se, pokud mu to 
>> nepředžvýkám do komentáře.
>>
>> PL
>>
>> *******************
>>
>> Dne 29.4.2024 v 22:19 Aleš Procháska napsal(a):
>>> Tak to by mě Pascal hnal. To si sakra hlídá, abych funkci volal s 
>>> kompatibilními parametry.
>>>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list

-- 
Tento e-mail byl antivirovým softwarem AVG zkontrolován na viry.
www.avg.com


Další informace o konferenci Hw-list