what this function does : 1.unsigned int a = 1; 2. unsigned char b = *(unsigned char*)&a; 3. return !!b; I don't understand completly what line number 2 does - it does casting on what : the value of a or the adress of a? thanks