Sprawdzanie, czy coś jest zapisane pod zmienną.
Ostatnio zmodyfikowano 2017-03-23 23:04
Qabrix Temat założony przez niniejszego użytkownika |
Sprawdzanie, czy coś jest zapisane pod zmienną. » 2017-03-23 22:28:09 Dzień dobry, od niedawna zaczynam zabawę z programowaniem w C++. Zastanawiam się, jak sprawdzić czy czy coś jest zapisane pod zmienną. napisałem taki program: #include <iostream> #include <conio.h>
int main() { using namespace std; double tab1[] = {( 2 + 7 * 16 - 8 ),( 22 * 2 / 11 ),( 8383 - 222 + 292 * 8 ),( 5 * 2 * 4 ) }; int i = 0; while( tab1[ i ] ) { cout << tab1[ i ] << endl; i++; } } i chciałbym, aby pętla zatrzymała się gdy pod tab1 nic nie będzie zapisane.
gdy odpalam program otrzymuję coś takiego w konsoli:
------------------------------------------- 106 4 10497 40 8.48931e-314 6.95254e-308 1.78807e-307 1.54882e+231 1.78807e-307 5.57491e-307 4.24688e-314 6.95268e-308 3.10996e-314 1.78824e-307 4.94066e-324 -1.#QNAN 3.23786e-319 1.06924e+257 1.06922e+257 6.95321e-308 1.#QNAN 1.99158e-314 1.#QNAN 3.23292e-192 -1.22542e-191 6.95295e-308 6.95324e-308 -3.55959e-271 6.95327e-308 -1.#QNAN 9.91674e-315 1.78821e-307 1.06093e-314 6.89023e-313 2.77302e-310 1.08694e-321 1.58101e-322 2.122e-314 1.10344e-312 2.122e-314
Process returned 0 (0x0) execution time : 0.094 s Press any key to continue.
-------------------------------------------
Z góry dziękuję za pomoc :)
|
|
latajacaryba |
» 2017-03-23 22:37:54 Pod zmienną zawsze jest coś zapisane. Sprawdź to: #include <iostream> int main() { int i; std::cout << "pod zmienna i: " << i << " - smieci"; return 0; }
Jeśli nic nie zapiszesz do zmiennej, to będą tam śmieci(pozostałości w pamięci po innych programach), chyba, że zmienna jest globalna(czyli po mainem) int a; int main() { int b; }
Zmienna globalna (jeśli nic do niej nie przypiszesz) dla int'a ma wartość 0 #include <iostream> int j; int main() { int i; std::cout << "pod zmienna lokalna i: " << i << " - smieci" << std::endl; std::cout << "pod zmienna globalna j: " << j << " - zero"; return 0; }
Przy czym odradza się stosowania zmiennych globalnych |
|
karambaHZP |
» 2017-03-23 22:41:14 Tak to nie działa. Tablicę kontrolujesz wg jej rozmiaru, czyli pilnujesz, aby nie czytać poza nią. W tym przypadku pilnujesz czy indeks tablicy nie jest większy niż 4. Jeśli masz niecałkowicie zapełnioną tablicę, możesz sprawdzać czy liczba w tablicy jest, jakiejś konkretnej wartości (pod warunkiem, że ta wartość posłużyła wcześniej do zainicjalizowania elementów tablicy). int arr[ 10 ] { }; int i { }; while( i < 10 && arr[ i ] != 0 ) { std::cout << arr[ i ] << '\n'; } |
|
Qabrix Temat założony przez niniejszego użytkownika |
Sprawdzenie czy coś się samemu w niej zapisało. » 2017-03-23 22:52:13 Czyli rozumiem, że nie ma możliwości sprawdzenia czy, np w tym przypadku, pod powiedzmy tab1[4] coś zapisałem ja w kodzie, czy już tam było. |
|
karambaHZP |
» 2017-03-23 22:54:55 Nie, bo tab[ 4 ] jest elementem nienależącym do tej tablicy (obca pamięć) i jest to niezdefiniowane zachowanie. Niezgodne ze standardem. Zapamiętaj: operując na tablicy, pilnujesz jej indeksu, aby nie czytać poza tablicą. Tablice jednowymiaroweAkapit Tablice, a stabilność aplikacji |
|
Qabrix Temat założony przez niniejszego użytkownika |
Dziękuję za pomoc. » 2017-03-23 23:04:55 Dobrze, w takim razie dziękuję za pomoc i szybką odpowiedź :) |
|
« 1 » |