Pytanko ma temat rozdziału XXIII a konkretnie funkcji if()
Ostatnio zmodyfikowano 2008-07-31 16:39
invisiblekid Temat założony przez niniejszego użytkownika |
Pytanko ma temat rozdziału XXIII a konkretnie funkcji if() » 2008-07-30 19:35:53 W rezdziale XXIII (Obsługa plików) znalazłem taki kod (sam koniec rozdziału): #include <iostream> #include <fstream> #include <conio.h> using namespace std; int main() { fstream plik; plik.open( "dane.txt", ios::in ); if( plik.good() ) { string napis; cout << "Zawartosc pliku:" << endl; while( !plik.eof() ) { getline( plik, napis ); cout << napis << endl; } plik.close(); } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl; getch(); return( 0 ); } I mam pytanie dotyczące funkcji if w zamieszczonym kodzie: dlaczego wartości zmiennych bool good(); i bool eof(); nie są porównane do niczego (czyżby domyślną wartością było porównanie do "true") i co oznacza zapis while( !plik.eof() ) a konkretnie ten wykrzyknik. BTW: pytanie z innej beczki: co to jest bufor? Bo nie jestem pewien czy interpretuje to właściwie. Będę wdzięczny za odpowiedzi. TIA. :) Paweł |
|
Proxym |
» 2008-07-30 20:50:58 Na przykładzie
jeśli mam np że funkcja good zwróci jeden (1) jest to równo znaczne z Prawdą (true) więc program zrobi to co jest w warunku. ale jeśli funkcja wygląda if(!good()) to jeśli good() zwróci 1 to będzie równo znaczne z 0 (false) więc warunek nie zostanie wykonany. Używam tego operatora intulicyjnie jeśli zrobiłem błąd proszę o poprawienie mnie. |
|
DejaVu |
» 2008-07-30 21:18:24 Zgadza się, ale rozszerzę nieco informację na ten temat: Załóżmy, że mamy przykład: int wartosc = 123; if( wartosc ) { }
Warunek ten zostanie spełniony. Pytanie jakie należy tu postawić to "Dlaczego"? Odpowiedź jest prosta jeśli zna się jeden ze standardów, który brzmi mniej więcej tak: wynik warunku if będzie prawdziwy, gdy wartość zmiennej jest różna od zera, natomiast fałszywy gdy wartość zmiennej jest równa zeru. Znak wykrzyknika jest negacją, czyli jeśli w przykładzie funkcja eof() zwracała false, to negacją false jest true więc warunek pętli while jest spełniony i wykonuje się blok kodu. |
|
invisiblekid Temat założony przez niniejszego użytkownika |
» 2008-07-31 16:25:22 OK, dzięki. Już wszystko rozumiem- nie znałem po prostu tego standardu. Ale mam jeszcze jedno pytanko: co to jest bufor? |
|
DejaVu |
» 2008-07-31 16:36:04 Bufor... to zazwyczaj nazwa używana do tego, aby informować programistę o tym że dane są w nim przygotowywane, a później powinny trafić gdzieś dalej, np. na ekran. Tu masz krótką definicję: Bufor - Obszar pamięci operacyjnej, do której wpisuje się dane w celu ich obróbki i przesłania do pamięci zewnętrznej. |
Źródło: http://www.i-slownik.pl/1,199,bufor.html |
|
invisiblekid Temat założony przez niniejszego użytkownika |
» 2008-07-31 16:39:47 OK, thanx a lot :) |
|
« 1 » |