Antaŭ pli ol 10 jaroj mi skribis komputilajn programojn per C-lingvo. Ili funkciis en DOS kaj DOS-fenestro de Vindozo. Mi pritraktis esperanto-tekstojn per ili.
Nun mi retradukas la programojn per Visual C++ 2005 por ke mi denove uzi ilin en komand-fenestro de Vindozo XP.
Dum la retradukado mi trovis kelkajn cimojn. La plej grava cimo estis neregula uzado de char-variablo por int-variablo. Aldone mi uzis ĝin kiel indicon de tabelo. Malnova C-tradukilo faris celkodon hazarde senprobleme funkciantan.
Tio sxajnas stranga al mi, cxar en cxiuj tradukantaj programoj (visual c au ordinara c) la tradukanta programo ne zorgas pri tipo da variabloj. Vi ricevas malgxustajn rezultojn cxe la fino, sed la tradukanta programo ne avertas pri malkongruo inter la variabloj. En C (cxu Visual C++ cxu ANSI C) cxiam cast okazas automate. vi povas skribi:
char c = ‘d’;
int i = c;
kaj i estos cifereca valoro de la litero d (en ANSI). Vi ne bezonas skribi:
i = (int)c;
Cxu ne?
Jen mia kodo kun problemo estas:
int inx[36];
[…]
inx[a – 0xb0] = 123;
Valoro de a varias inter 0xb1 kaj 0xcf.