ciao888 (Normal User)
Pro
Messaggi: 69
Iscritto: 14/10/2010
|
Codice sorgente - presumibilmente C++ |
#include<iostream.h> main() { int a; cin >> a; int c = a % 3; int b = a && c; if (!a) { if(c) cout << "risultato 1" << '\n'; if(b) cout << "risultato 2" << '\n'; else cout << "risultato 3" << '\n'; } else cout << "risultato 4" << '\n'; }
|
è un programmino molto semplice,devo scrivere l'output,il mio problema è quando scrive if(!a),if(c),a cosa si riferisce?non mette un'istruzione,grazie
Ultima modifica effettuata da ciao888 il 11/01/2011 alle 21:25 |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da ciao888:
Codice sorgente - presumibilmente C++ |
#include<iostream.h> main() { int a; cin >> a; int c = a % 3; int b = a && c; if (!a) { if(c) cout << "risultato 1" << '\n'; if(b) cout << "risultato 2" << '\n'; else cout << "risultato 3" << '\n'; } else cout << "risultato 4" << '\n'; }
|
è un programmino molto semplice,devo scrivere l'output,il mio problema è quando scrive if(!a),if(c),a cosa si riferisce?non mette un'istruzione,grazie |
il sistema di valutazione delle espressioni del C è molto semplice, si basa su una dicotomia fondamentale: nullo e non nullo.
NULLO (falso) è quando il valore dell'espressione è 0
NON NULLO (vero) è quando il valore dell'espressione è diverso da 0
quindi ogni if(variabile) può essere riscritto come if(variabile != 0)
di rimando, ogni if (!variabile) equivale a if(variabile == 0) |
|
a_butta (Member)
Expert
Messaggi: 578
Iscritto: 16/03/2010
|
Postato originariamente da ciao888:
ah capito,quindi quando scrive if(!a) intende dire :''se a è diverso da a'' entro nel ciclo,ma è impossibile |
No, quando scrivo if(!a) intendo dire: "se a è diverso da 0" entro nel ciclo, il chè è possibile. Attenzione a quel "diverso da 0": l'informatica lavora per numeri quindi 0 è una qualsiasi variabile nulla, come può esserlo un array di 0 elementi, una stringa vuota "", una variabile booleana impostata su false, o anche un numero vero e proprio.
@HeDo: Giacchè che ci sono volevo chiederti: if (-1), -1 è diverso da 0 ma viene considerato true o false. E gli altri numeri negativi? |
|
a_butta (Member)
Expert
Messaggi: 578
Iscritto: 16/03/2010
|
Frena mi sa che stai facendo confusione.
Allora la condizione che legge l'IF si esprime SEMPRE tramite un valore booleano, che in numero vale 0--> False, !0 --> True
Ma questo valore può essere espresso tanto da una condizione tanto da un valore preimpostato:
Codice sorgente - presumibilmente C/C++ |
if (a) {
cout<<"A è diverso da 0 e vale "<<a;
}
if (!a) {
cout<<"A è nullo, se è un numero vale 0";
}
|
ma anche:
Codice sorgente - presumibilmente C/C++ |
if (a == 3) {
cout<<"A vale 3";
}
if (a != 3) {
cout<<"A non vale 3, ma vale: "<<A;
}
|
in questo ultimo caso l'espressione
a == 3 restituisce una variabile di valore 1 se a è 3, mentre 0 se a è diverso da tre
a != 3 restituisce una variabile di valore 1 per tutti i valori di a diversi da tre, 0 se a è tre
Vedi (a==3) come una sorta di variabile intermedia b:
B è TRUE se a è 3, altrimenti diventa FALSE |
|
crash outside control (Normal User)
Expert
Messaggi: 217
Iscritto: 12/02/2008
|
Codice sorgente - presumibilmente C/C++ |
Significa "se a è uguale a 0" o se si ragiona con "true" e "false" quindi 0 e 1, "se a non è 1".
Ultima modifica effettuata da crash outside control il 12/01/2011 alle 17:35 |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da a_butta:
Postato originariamente da ciao888:
ah capito,quindi quando scrive if(!a) intende dire :''se a è diverso da a'' entro nel ciclo,ma è impossibile |
No, quando scrivo if(!a) intendo dire: "se a è diverso da 0" entro nel ciclo, il chè è possibile. Attenzione a quel "diverso da 0": l'informatica lavora per numeri quindi 0 è una qualsiasi variabile nulla, come può esserlo un array di 0 elementi, una stringa vuota "", una variabile booleana impostata su false, o anche un numero vero e proprio.
@HeDo: Giacchè che ci sono volevo chiederti: if (-1), -1 è diverso da 0 ma viene considerato true o false. E gli altri numeri negativi? |
cagata, ho riletto solo ora:
if(!a) NON E' ASSOLUTAMENTE EQUIVALENTE A if(a != 0) MA AL CONTRARIO
if(a == 0)
|
|
ciao888 (Normal User)
Pro
Messaggi: 69
Iscritto: 14/10/2010
|
scusate ma qualcosa non mi torna,il professore chiedeva quale valore dare in input affinchè leggessi "il risultato è 3",la risposta è zero,ma da come dice a_butta con a=0 non potrei entrare nell'if a quanto pare
|
|
ciao888 (Normal User)
Pro
Messaggi: 69
Iscritto: 14/10/2010
|
sì questo ok,però siccome dato il programma:
Codice sorgente - presumibilmente C++ |
#include<iostream.h> main() { int a; cin >> a; int c = a % 3; int b = a && c; if (!a) { if(c) cout << "risultato 1" << '\n'; if(b) cout << "risultato 2" << '\n'; else cout << "risultato 3''<< '\n'; } else cout << "risultato 4" << '\n'; }
|
il prof ha detto che il valore in input,cioè a,deve essere uguale a zero per avere la scritta''risultato tre'',ma se if(!a) significa a!=0 allora con a =0 non entrerei nell'if,e quindi non otterrei la scritta "risultato 3'',non intendevo a=3 ma la scritta ''risultato 3'',e secondo il prof la ottengo con a=0
Ultima modifica effettuata da ciao888 il 11/01/2011 alle 22:28 |
|
ciao888 (Normal User)
Pro
Messaggi: 69
Iscritto: 14/10/2010
|
no,quello che hai scritto tu l'ho capito benissimo,cioè che if(variabile) significa variabile!=0,infatti mi porta,però se ci fai caso a_butta ha scritto il tuo esatto contrario,cioè che if(!variabile) significa variabile!=0 e infatti non mi tornava,quindi due opinioni diverse non fanno altro che confondermi le idee
|
|