ďťż

Ładny brzuch

Dlaczego ten kod daje inny rezultat,
   drive = CHAR(i) + ":\\";

od tego?
   drive = CHAR(i);    drive += ":\\";

W pierwszym pojawiają się śmieci i karzaki. Drugi jest ok.



Napisz jakiego typu jest drive.
Podejrzewam, że jest to jakaś klasa, w stylu string lub AnsiString, która ma przeciążone operatory = oraz +=.
W pierwszym przypadku jednak najpierw wykonuje się operator + dla argumentów typu char i char* (prawdopodobnie, nie jestem pewien co to za typ CHAR), a dopiero poźniej operator = z tamtej klasy.

//Zmienne    int i, Drive_Type;    AnsiString drive;    for(i = 'A'; i<= 'Z'; i++){        //Wariant 1:           drive = CHAR(i) + ":\\";       //Wariant 2:           drive = CHAR(i);           drive += ":\\";                 //I tu kodzik :-)            Drive_Type = GetDriveType(drive.c_str());        if(Drive_Type >1){            ListBox1->Items->Add(drive);        }    }

Tak sobie to wygląda w całości ;-)
CHAR() zamienia liczbę na znak ascii o wartości liczby.

Tak jak sądziłem, czyli AnsiString, więc nie będe powtarzał, bo już wytłumaczyłem skąd wynika różnica.
A co do CHAR to chodziło mi o to czym się różni od char. ;)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •