matematykaszkolna.pl
Programowanie #C: int a,b,c a=1; b=2; c=3; switch(2*a+b/c) { case 2: printf("OLA\n"); case 3: printf("JAGA\n"); break; default: printf("OK\n"); } Takie mam może proste pytanie, ale.. Co tu zostanie wyświetlone na ekranie? wyrażenie w switchu jest =2, ale czy to się później zapętla do momentu break?
3 lut 00:40
#C: I jeszcze jedno.. Przedstaw liczbę dziesiętną −1.75 w systemie binarnym w notacji zmiennopozycyjnej znormalizowanej na 8 bitach (1bit –znak / 3 bity – wykładnik zapisany z nadmiarem cztery / 4 bity – mantysa).
3 lut 00:47
Dziadek Mróz: Żadnej pętli nie ma, wykona się case 2 i case 3
3 lut 00:55
#C: No dobrze, ale dlaczego?
3 lut 01:00
#C: Dziadku Mrozie? emotka
3 lut 01:24
jakubs: Ty nie masz tam żadnej pętli, więc wykona się case 2 następnie case 3 i koniec, bo masz brake po case 3.
3 lut 01:49
#C: Rozumiem. Czyli switch(3) { case 2: printf("OLA\n"); case 3: printf("JOLA\n"); case 4: printf("JAGA\n"); break; default: printf("OK\n"); } Na ekranie wyświetliłoby: JOLA JAGA tak?
3 lut 02:12
jakubs: Jeszcze OLA
3 lut 02:31
#C: No ale przecież instrukcje zaczyna od 3..
3 lut 02:42
jakubs: W takim razie jak wiesz lepiej, to skompiluj i uruchom program emotka
3 lut 02:51
3 lut 02:56
jakubs: Czyli jednak da się sprawdzić samemu, a nie pisać na forum ?
3 lut 03:02
#C: Chodziło mi bardziej o wytłumaczenie dlaczego tak się dzieje, bo wklepanie i wynik niczego mi nie dają. Ja myślałem, że jak jest switch(3) to wykona tylko case:3, a nie wszystko pod nim..
3 lut 03:04
jakubs: http://pl.wikibooks.org/wiki/C/Instrukcje_steruj%C4%85ce#switch "Należy pamiętać o użyciu break po zakończeniu listy instrukcji następujących po case. Jeśli tego nie zrobimy, program przejdzie do wykonywania instrukcji z następnego case. Może mieć to fatalne skutki:"
3 lut 03:05
kyrtap: emotka
3 lut 03:06
#C: Ok, dzięki. Wybacz jeżeli Cię wkurzyłem, bo jakoś mam takie wrażenie. emotka
3 lut 03:07
jakubs: Nie no spoko, była późna pora, może zbyt nerwowy byłem emotka
3 lut 12:38