Namátkou mají potíže už s pochopením základních věcí, jako třeba jak se chovají datové typy char, int a long a když dojde na float a double, je to holé neštěstí že by dospělý člověk brečel.
Ci to nie je aj o tom, do akej hlbky sa to mysli.
To, ze su tam cisla nejak reprezentovane a su tam iste limity, to si vsimne snad kazdy. Na druhu stranu existuju ludia, ktori su schopni pri skusani pozadovat rozsah uintu a nestaci im, ze je to do UINT_MAX. Tiez je problem s pretekanim - toho, ze to preteka nejak predvidatelne si vsimne kazdy a skoro kazdy aj vie ako a vyuziva toho. Ale malokto vie o tom, ze sa na toto moze spolahnut len u unsigned varianty, o poznani CHAR_BIT ani nehovorim.
Nevedomie niektorych o tom, ze napriklad int moze byt skoro lubovolne velky je tiez kapitola sama osebe.
Trochu iny level je nielen toto poznat, ale pouzivat to. Tym myslim veci ako zistenie znamienka bez zbytocneho if-u, zrychlenie spracovania vela uint16 tym, ze sa budu citat ako uint64 (a nasledne mozno vektorizuju), najdenie celociselneho logaritmu so zakladom 2 z existujuceho cisla bez "tupeho" prechadzania alebo delenia cisla v cykle a podobne jednoduchsie algoritmy.
U floatov (a doublov) sme na tom podobne, ak nie este horsie - na druhu stranu je treba uznat, ze vela problemov vlastne ani nie su problemy vo vacsine vyuziti. Napriklad priemerny stredoskolak nevie, ze u floatov nefunguje asociativita - to vadi, ked sa spolieha na to, ze scitanie a + b, pre b!=0 musi dat nieco ine ako a - inak sa ho to *vacsinou* nedotkne. A uz vobec nehovorim o operaciach s floatami (cez pointer celociselneho typu) pomocou bitwise operacii - to casto nenapadne na prvy pohlad nielen mna a ale mnohokrat ani skusenejsich.
Preto si myslim, ze je treba spomenut hlbku potrebnych znalosti a mozno aj konkretne veci, ktore je treba poznat - inak obycajny popis "nizkej znalosti" skoro nic nehovori.
Ocenil by som to nielen preto, aby som vedel o co sa jedna, ale aj aby som sa to mohol doucit, ak uvidim moju nevedomost a potrebu konkretnej veci.