IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Levin
Člen
Avatar
Levin:1.10.2014 22:07

Ahoj, mám dotaz, jaktože mi int proměnná bez hodnoty vypíše tohle číslo?

  • 1217323008

int a;
printf("Co vypises programe? %d", a);

Jestli si myslím správně, tak je to nejnižší číslo, co může mít proměnná int, ale proč to vypíše pro prázdnou proměnnou?

 
Odpovědět
1.10.2014 22:07
Avatar
Levin
Člen
Avatar
Levin:1.10.2014 22:12

A ještě jeden dotaz, Když si dám a jako globální proměnnou tak proč se rovná nule?

 
Nahoru Odpovědět
1.10.2014 22:12
Avatar
coells
Tvůrce
Avatar
Odpovídá na Levin
coells:2.10.2014 11:26

Staticky ukládané proměnné (globální a statické) jsou inicializovány na 0, zatímco ostatní hodnoty mají nedefinovanou hodnotu.

int i; // == 0
void printVars()
{
  static int j; // == 0
  int k; // nahodna hodnota

  printf("%d %d %d\n", i, j, k);
}
 
Nahoru Odpovědět
2.10.2014 11:26
Avatar
vitamin
Člen
Avatar
Odpovídá na Levin
vitamin:2.10.2014 11:27

globalne premenne sa vzdy inicializuju, lokalne premenne primitivnych typov ostavaju neinicializovane, cize budu mat taku hodnotu aka sa nachadazala v pameti. To iste plati v pripade navratovych hodnot, ak funkcia vracia int a ty nic nevratis tak vysledok funkcie je nedefinovany.
Ak si zapnes warningy tak ti kompilator povie ked pouzies neinicializovanu premennu alebo ju zabudnes vratit z funkcie

 
Nahoru Odpovědět
2.10.2014 11:27
Avatar
Levin
Člen
Avatar
Levin:2.10.2014 19:05

Díky moc za vysvětlení :)

 
Nahoru Odpovědět
2.10.2014 19:05
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.