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