PDA

Visualizza la versione completa : [C] Negazione in condizione "if"


Vryce
18-01-2007, 16:43
Ciao di nuovo, sto gurdando un programa per un micro e sono incappato in questo if:

if(!leadingflag)

cosa vuol dire il "!" messo in quel modo :confused: Non riesco a trovarne notizia da nessuna parte:(

Grazie

p.s. Dimenticavo che il forum comprende tutti i linguaggi diprogrammazione, quello che stousando "C"

MItaly
18-01-2007, 16:53
! l'operatore booleano NOT. Il significato di quell'istruzione "se leadingflag uguale da zero"...

andbin
18-01-2007, 17:04
Originariamente inviato da Vryce
if(!leadingflag)Tradotto: "se leadingflag uguale a zero"

Vryce
18-01-2007, 17:21
Ottimo, nega il != che implicito nn essendo dichiarato, grazie mille, molto gentili :D

(Non capisco xk nn si scrivechiaramente un bell' == o !=...cmq....)

Grazie ancora! :D

LeleFT
18-01-2007, 17:30
Originariamente inviato da Vryce
Ottimo, nega il != che implicito nn essendo dichiarato, grazie mille, molto gentili :D

(Non capisco xk nn si scrivechiaramente un bell' == o !=...cmq....)

Grazie ancora! :D
Se noti, != proprio la negazione ( ! ) dell'uguaglianza ( == ).
Ad ogni modo, il motivo risale a origini "storiche".

Nel linguaggio C (e non solo) il valore 0 sempre considerato falso. Qualsiasi altro valore considerato, ovviamente, come vero.

Scrivere, quindi:


if (var == 0)

oppure

if ( !var )

E' la stessa identica cosa. Nel primo caso effettuo un confronto fra il valore di "var" e lo 0 (che, come gi detto FALSO, quindi lo posso leggere come "se var falsa"), mentre nel secondo vado a negare il valore di "var", che se era falsa rende vera la condizione del if.


Ciao. :ciauz:

MItaly
18-01-2007, 17:32
Originariamente inviato da Vryce
Ottimo, nega il != che implicito nn essendo dichiarato, grazie mille, molto gentili :D

Veramente le cose sono un po' diverse: l'if esegue il blocco che lo segue se tra parentesi viene specificato un numero diverso da zero; ora, il ! esegue il NOT logico sul valore che lo segue, ossia se il valore che lo segue uguale a 0 restituisce 1 e viceversa; in questa maniera se leadingflag uguale a zero viene restituito 1 che fa eseguire l'if (e viceversa).


(Non capisco xk nn si scrivechiaramente un bell' == o !=...cmq....)

Perch pi bello, pi efficiente e pi figo.

Loading