!(!(~(!true)))

Tags:    udvikleren.dk

<< < 12 > >>
Må man spørge hvad der er meningen med den afstæmning? :S



Hvad betyder ~ da, i dette sammenhæng?


Har den ikk næsten samme betydning som "!"?
Inverter den ikk bare?


...olsen



Fandt frem til et eksempel hvori der står:

"
The bitwise negate operator is a unary operator. The syntax is

~ operand1
You obtain the result of this expression by treating operand1 and the result as sets of 32 bits. Each bit of the result is the inverse of the corresponding bit of operand1.

Example:

var tmp = ~79;
In this example, operand1 is 79 (00000000000000000000000001001111). tmp is set to -80 (11111111111111111111111110110000).
"



Hvis sproget har strikt type kontrol så giver det Syntax Error (bl.a. i C#)
Ellers giver det med 100% garanti !(!(~false))
Det store spørgsmål er så bare hvad !(!(~false)) giver

False er ihvertfald = 0
Booleans er sandsyneligvis 8 bit (egentligt ligegyldigt i den her sammenhæng).
Altså er ~0 = 0xFF = true
!(true) = false
!(false) = true

Et meget bedre spørgsmål ville være !(!(~(!false)))
!false er naturligvis true.
Men hvad er true???
true kan være = 1:
~0x01 = 0xFE = true
!(!(true)) = true

Men hvis true = -1 = 0xFF:
~0xFF = 0x00 = false
!(!(false)) = false



<< < 12 > >>
t