Zawsze myślałem, że jeśli zadeklaruję te trzy zmienne, wszystkie będą miały wartość 0
int column, row, index = 0;
Ale uważam, że tylko indeks jest równy zero, a pozostałe to śmieci, takie jak 844553 i 2423445.
Jak mogę zainicjować wszystkie te zmienne na zero bez deklarowania każdej zmiennej w nowym wierszu?
int* a, b, c;
nie robi tego, na co wygląda), jest łatwiejsze niż myślisz .=0
dla każdej z nich w ich definicjach. A jeśli naprawdę potrzebujesz wielu zmiennych, wypróbuj tablicę:int a[10]={0}
zainicjuje każdąa[i]
z nich na 0.Odpowiedzi:
źródło
Kiedy deklarujesz:
Tylko indeks jest ustawiony na zero.
Możesz jednak wykonać następujące czynności:
Ale osobiście wolę, co zostało wskazane.
Moim zdaniem jest to bardziej czytelna forma.
lub
źródło
bool previousInputValue, presentInputValue;
), czy po prostu są tego samego typu teraz, ale tak naprawdę nie muszą być (uint8_t height, width;
mogą zmienić sięuint8_t height; uint16_t width;
w w przyszłości i powinny byćuint8_t height; uint8_t width;
najpierw).uint8_t height; uint16_t width;
zamiastuint8_t height, width;
oszczędza 10 znaków w przyszłości. :-) możesz to oczywiście zrobić, jak chcesz. Tylko upewnij się, że łatwo je odczytać. Więc ostatnia forma jest najbardziej wyraźna.int presentValue = 0; typeof(presentValue) previousValue = presentValue;
, ale uważam, żetypeof()
jest to niestandardowe rozszerzenie GCC.Jak powiedział @Josh, prawidłowa odpowiedź to:
Musisz uważać na to samo ze wskazówkami. To:
Jest równa:
źródło
unsigned long x, y;
zadeklarowanex
jakounsigned long
aley
jak tylkounsigned
, akaunsigned int
! To jest dokładnie to samo! </rant>int *a
oznacza, że*a
reprezentujeint
wartość.void* a
będzie kompilować, avoid *a, b, c
nie. Ta racjonalizacja działa na mnie.Zadeklarowanie jednej zmiennej / obiektu w wierszu nie tylko rozwiązuje ten problem, ale także czyni kod bardziej przejrzystym i zapobiega głupim błędom podczas deklarowania wskaźników.
Aby jednak bezpośrednio odpowiedzieć na pytanie, musisz jawnie zainicjować każdą zmienną na 0.
int a = 0, b = 0, c = 0;
.źródło
Zwróć uwagę, że ten formularz będzie działał również z typami niestandardowymi, zwłaszcza gdy ich konstruktory przyjmują więcej niż jeden argument.
źródło
auto
...): int kolumna { 0 } , wiersz { 0 } , indeks { 0 } ;Od 2k18 możesz korzystać z powiązań strukturalnych :
Demo
źródło
Możliwe podejścia:
memset
lub{0}
tablicę.struct
i /memset
lub miej konstruktora, który zainicjuje je do zera.źródło
Nie polecałbym tego, ale jeśli naprawdę chcesz być jedną linijką i pisać 0 tylko raz, możesz również zrobić to:
źródło
Jak wspominali inni, począwszy od C ++ 17 można korzystać z powiązań strukturalnych do przypisywania wielu zmiennych.
Łącząc to z
std::array
i odliczenia szablon argumentu możemy napisać funkcję, która przypisuje wartość do dowolnej liczby zmiennych bez powtarzania typ lub wartość .Demo
źródło
Kiedy deklarujesz zmienną bez jej inicjalizacji, wybierana jest liczba losowa z pamięci i zmienna jest inicjalizowana do tej wartości.
źródło