Avatar
Levin
Člen
Avatar
Levin:

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:

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
Redaktor
Avatar
Odpovídá na Levin
coells:

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:

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:

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.