Jest prawidłowy, ale kompilator dałby mu żółty kartkę:
prog.cc:5:6: warning: expression result unused [-Wunused-value]
for(i,j;i<3,j<3;i++,j++) {
^
prog.cc:5:8: warning: expression result unused [-Wunused-value]
for(i,j;i<3,j<3;i++,j++) {
^
prog.cc:5:11: warning: relational comparison result unused [-Wunused-comparison]
for(i,j;i<3,j<3;i++,j++) {
~^~
Samo wpisanie nazw zmiennych nic nie robi. Druga rzecz to użycie operatora przecinka (link). W takim przypadku pętla będzie się wykonywać tak długo jak j < 3. Tylko pytanie po co warunek i < 3? Czyżby ktoś zamiast && użył ,?