[C/C++] ostrzezenie

0

Moze wszyscy o tym wiedza , ale moze ktos jescio nie wie tak jak ja nie wiedzialem jescio wczoraj, wystrzegajcie sie konstrukcji w c/c++ typu :

int j=0;
while( buf[j] ) str[j] = buf[j++];

na kazdym kompilatorze jest inaczej nawet na roznych kompilatroach tego samego producenta (borland) np.:

pod bc31 wszystko jest ok kompilator najpierw przypisuje a potem inkrementuje, ale juz w TC20 (tez borlanda) najpierw inkrementuje (tak jak by bylo ++j a nie j++ !) a potem przypisuje.

bezpieczna i przenosna konstrukcja jest taka:

int j=0;
while( buf[j] )
{
str[j] = buf[j];
i++;
}

przez takie g... stracilem 3 godziny!!! :-[

0

cos mi poobcinalo nawiasy [] przy zmiennych buf i str nie wiem czemu

======================================================
Juz poprawilem. Nie mozna wstawiac i w [], uzywajcie innych liter. Vide:
http://www.4programmers.net/forum/viewtopic.php?id=29802

pq

1 użytkowników online, w tym zalogowanych: 0, gości: 1