Szerintem C-ben _elgépeléssel_ könnyen lehet olyan, hogy szintaktikailag helyes a program, de szemantikailag nagyon nem.
pl.: ha elgépelsz egy változó nevet és kihagysz egy karaktert akkor szól a fordító, de ha a ==-ből hagysz ki egy karaktert akkor nem.
De van még pár olyan hely ahol figyelmetlenség gondot okozhat:
- switch-case ágaban lehagyod a break-et
- tömbindexelésnél a korlátok
- nem szól a fordító ha nincs minden vezérlési ág végén return
- kiértékelési sorrend (nem csak a precedencia pl.: y[i++]=x[i])
- ha elfelejted a headert include-olni, de meghívod a könyvtári függvényt, akkor csak warningot ad
- linkelésnél névütközések, külső típusok ellenőrzése
- makrók agyon zárójelezése, nehéz úgy megírni (ha egyáltalán lehet) hogy minden argumentum pontosan egyszer értékelődjön ki
... biztos van még
Egyébként könnyű elgépelni az == jelet ha pl. a kifejezést bővítgeted, nem hiába olvastam már több helyen, hogy javasolt a konstans értéket a jobb bal oldalra írni.
(Egyébként szeretek C-ben programozni)