ceckovy kviz 3 (na uprsane dlhe vikendy)

František Burian BuFran na seznam.cz
Pátek Září 8 13:39:16 CEST 2023


Zdravím,

  Zajímavé, tak pro referenci ostatních aby měli přehled

# g++ -o tst testbool.cpp

testbool.cpp: In function ‘int main()’:
testbool.cpp:10:3: error: use of an operand of type ‘bool’ in ‘operator++’ is forbidden in C++17
    10 |   a++; b--;
       |   ^
testbool.cpp:10:8: error: use of an operand of type ‘bool’ in ‘operator--’ is forbidden
    10 |   a++; b--;
       |        ^
testbool.cpp:11:3: error: use of an operand of type ‘bool’ in ‘operator--’ is forbidden
    11 |   a--; b++;
       |   ^
testbool.cpp:11:8: error: use of an operand of type ‘bool’ in ‘operator++’ is forbidden in C++17
    11 |   a--; b++;


# g++ -o tst --std=c++11 testbool.cpp
testbool.c: In function ‘int main()’:
testbool.c:10:3: warning: use of an operand of type ‘bool’ in ‘operator++’ is deprecated [-Wdeprecated]
    10 |   a++; b--;
       |   ^
testbool.c:10:8: error: use of an operand of type ‘bool’ in ‘operator--’ is forbidden
    10 |   a++; b--;
       |        ^
testbool.c:11:3: error: use of an operand of type ‘bool’ in ‘operator--’ is forbidden
    11 |   a--; b++;
       |   ^
testbool.c:11:8: warning: use of an operand of type ‘bool’ in ‘operator++’ is deprecated [-Wdeprecated]
    11 |   a--; b++;



# gcc -o tst testbool.c

// žádný výstup (soubor identický s CPP verzí jen jiná přípona)


... ještě že ty jazyky se pěkně v čase sbližují, to co vzešlo z C, vylepšilo se v C++ se teď zpátky dostává do C :-)


Díky za pohled za obzor, toto jsem nevěděl !

     Franta Burian

Dne 08. 09. 23 v 10:07 Jan Waclawek napsal(a):
> Inkrement _Bool nema rovnake spravanie ako inkrement unsigned premennej so
> sirkou 1 bitu.
>
> Majme _Bool b; b = 0; b++; - vysledok je 1 podla ocakavania.
>
> Ale ak b = 1; b++; prekladac vezme hodnotu b, 1, skonvertuje ju implicitne
> na unsigned int, to je 1, inkrementuje, to je 2, a konvertuje ju spat na
> _Bool, vysledok coho je 1 (toto je prave ten chytak).
>
> Dekrement vsak funguje podla ocakavania: b = 1; b--; => b == 0. b = 0; b--;
> => b == 1.
>
> Derek Jones mal samozrejme nutkanie toto nepopisat explicitne, ale uviest
> to v takejto hadankovej forme.
>
> wek
>
>
>
> ----- Original Message ---------------
>
> Znova z nevycerpatelnej studnice perverzit, Dereka Jonesa:
>
> #include <stdio.h>
>
> void f(_Bool p)
> {
>    _Bool q = p;
>
>    q--; q++;
>    p++; p--;
>   
>    if (p == q)
>    printf("This implementation is not conforming\n");
> }
>
> Upozornujem, ze ten subject nie je nahodny, hoci mozno niekto vie odpoved z
> fleku; ak ano, je pre mna skutocne borec.
> Kedze nasledujuci vikend asi nebude uprsany, v nasledujucom poste bude hned
> odpoved (t.j. ak niekto si chce pockat na uprsany vikend, nech ho necita).
>
> wek
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list