Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - significato if(a)
Forum - C/C++ - significato if(a)

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
ciao888 (Normal User)
Pro


Messaggi: 69
Iscritto: 14/10/2010

Segnala al moderatore
Postato alle 21:23
Martedì, 11/01/2011
Codice sorgente - presumibilmente C++

  1. #include<iostream.h>
  2.          main()
  3.          {
  4.           int a;
  5.           cin >> a;
  6.           int c = a % 3;
  7.           int b = a && c;
  8.           if (!a)
  9.             {
  10.              if(c) cout << "risultato 1" << '\n';
  11.              if(b) cout << "risultato 2" << '\n';
  12.               else cout << "risultato 3" << '\n';
  13.             }
  14.             else cout << "risultato 4" << '\n';
  15.  
  16.           }


è 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
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
1
Down
V
Segnala al moderatore
Postato alle 21:47
Martedì, 11/01/2011
Testo quotato

Postato originariamente da ciao888:

Codice sorgente - presumibilmente C++

  1. #include<iostream.h>
  2.          main()
  3.          {
  4.           int a;
  5.           cin >> a;
  6.           int c = a % 3;
  7.           int b = a && c;
  8.           if (!a)
  9.             {
  10.              if(c) cout << "risultato 1" << '\n';
  11.              if(b) cout << "risultato 2" << '\n';
  12.               else cout << "risultato 3" << '\n';
  13.             }
  14.             else cout << "risultato 4" << '\n';
  15.  
  16.           }


è 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)

PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 21:55
Martedì, 11/01/2011
Testo quotato

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?

-1 è true - HeDo - 11/01/11 22:51
PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 22:15
Martedì, 11/01/2011
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++

  1. if (a) {
  2.   cout<<"A è diverso da 0 e vale "<<a;
  3. }
  4. if (!a) {
  5.   cout<<"A è nullo, se è un numero vale 0";
  6. }



ma anche:

Codice sorgente - presumibilmente C/C++

  1. if (a == 3)  {
  2.   cout<<"A vale 3";
  3. }
  4. if (a != 3) {
  5.   cout<<"A non vale 3, ma vale: "<<A;
  6. }



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

PM
Avatar
crash outside control (Normal User)
Expert


Messaggi: 217
Iscritto: 12/02/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 17:27
Mercoledì, 12/01/2011
Codice sorgente - presumibilmente C/C++

  1. if (!a)



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
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 18:38
Mercoledì, 12/01/2011
Testo quotato

Postato originariamente da a_butta:

Testo quotato

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)


cavolo hai perfettamente ragione. Propria una svista. Chiedo scusa. - a_butta - 12/01/11 20:35
PM
Avatar
ciao888 (Normal User)
Pro


Messaggi: 69
Iscritto: 14/10/2010

Up
-1
Down
V
Segnala al moderatore
Postato alle 22:06
Martedì, 11/01/2011
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

PM
Avatar
ciao888 (Normal User)
Pro


Messaggi: 69
Iscritto: 14/10/2010

Up
-1
Down
V
Segnala al moderatore
Postato alle 22:24
Martedì, 11/01/2011
sì questo ok,però siccome dato il programma:
Codice sorgente - presumibilmente C++

  1. #include<iostream.h>
  2.          main()
  3.          {
  4.           int a;
  5.           cin >> a;
  6.           int c = a % 3;
  7.           int b = a && c;
  8.           if (!a)
  9.             {
  10.              if(c) cout << "risultato 1" << '\n';
  11.              if(b) cout << "risultato 2" << '\n';
  12.               else cout << "risultato 3''<< '\n';
  13.             }
  14.             else cout << "risultato 4" << '\n';
  15.  
  16.           }


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
non hai capito nulla di quello che ho postato, è inutile parlare con chi non capisce. - HeDo - 11/01/11 22:51
PM
Avatar
ciao888 (Normal User)
Pro


Messaggi: 69
Iscritto: 14/10/2010

Up
-1
Down
V
Segnala al moderatore
Postato alle 17:50
Mercoledì, 12/01/2011
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

PM
Pagine: [ 1 2 ] Precedente | Prossimo