Newsgroup: it.comp.lang.c
Titolo: piccolo quesito su if ... else

Posto che il mio quesito e' facilmente risolvibile con l' uso delle
graffe, poniamo che io abbia questo pezzo di codice, non indentato.
if (A)
if (B)
fa_qualcosa();
else
fa_qualcosaltro();
come viene letto dal compilatore?
come se ci fosse l' indentazione 1:
if (A)
  if (B)
    fa_qualcosa();
  else
    fa_qualcosaltro();
o come se ci fosse l' indentazione 2:
if (A)
  if (B)
    fa_qualcosa();
else
  fa_qualcosaltro();
Cioe'... l' istruzione if...else e' una, o sono 2?
-- 
#include <stdio.h>
main() {
  printf("%c%c %c%c%c\n", 66, 121, 90, 101, 68);
}

[...snip...]
Saluti
R.I.

 identazione? Vuoi far "impazzire" chi legge il tuo codice?
leggi su ^^;


 come viene letto dal compilatore?
Scusa, la risposta e' semplice e te la hanno gia' detta, ma.....
se tu scrivevi:
if(5>4)
if(6>5)
puts("6>5");
else
puts("6<5");
poi lo facevi andare vedevi che l'output era:
6>4
lo cambiavi in :
if(5>4)
if(5>6)
puts("5>6");
else
puts("5<6");
e vedevi che era 5<6
etc.....
INSOMMA ERA UNA DOMANDA A CUI POTEVI DARE DA SOLO RISPOSTA CON DELLE
SEMPLICI PROVE!
Siete pigri, eh?!?
Tommy

 sicuro?
si. K&R docet
-- 
Rhymes
rhy...@NOSPAMmyself.com

 Siete pigri, eh?!?
Se uno ti chiedeva, tanto per stare sul banale, se fflush(stdin) funziona, 
tu gli dici di andare a provare? :)
Attenzione, come gia' detto varie volte un test empirico deve sempre seguire 
un'attenta lettura di un testo autorevole (K&R per molte cose, standard per 
il resto del C89 e per il C99), non la puo' sostituire :)
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

 il resto del C89 e per il C99), non la puo' sostituire :)
Certo MOX, ma qua c'e' gente che chiede cosa stampa a schermo
printf("%d",int(5.4)); ......
cavolo, scrivilo ed eseguilo, no? ;-)
Stessa cosa per l'if ! E se la prova empirica non basta, allora non basta
neanche la risposta di un certo anonimo "Tommy"....
Se serve un testo autorevole se lo compri. Oppure pretendi che da ora in poi
quando rispondiamo ci si metta sempre a quotare referenze da libri
autorevoli?
Tommy

 autorevoli?
Citare sono fatti tuoi, basta che gli dai una risposta corretta o se non e' 
sempre corretta che spieghi esattamente sotto che condizioni lo e'. "Prova 
e scoprirai" non lo e', perche' NON puoi far affidamento sulle prove in C, 
visto che non tutti i compilatori implementano lo standard al 100% e ci 
sono vari aspetti undefined behaviour.
Il C non e' un linguaggio che si puo' imparare solo per prove o seguendo un 
gruppo di discussione. Rigiralo come preferisci, ma il concetto resta 
questo.
Capisco che a volte girino le OO a sentirsi fare domande ovvie e che 
potevano essere risolte semplicemente leggendo un QUALUNQUE testo di C meno 
che squallido (e forse anche lo Schildt spiega bene queste cose) e che sono 
troppo elementari persino per una FAQ, ma in quel caso e' piu' corretto 
mandarli a RTFM che non a provare (per i motivi di cui sopra).


"Mox" <m...@invalid.mail> wrote
Capisco il tuo discorso, in generale lo trovo giusto,... per il caso
specifico esagerato.
Ad ogni modo in linea generale condivido le tue idee.
Grazie per la puntualizzazione.
Tommy

 tu gli dici di andare a provare? :)
Questo se permetti dipende da come viene implementata la funzione fflush.
Mentre nel caso sopra esposto bastava chiaramente una prova empirica visto
che il tizio chiedeva solamente in che modo veniva compilato.