This question already has an answer here:Why does this program output 8 and not 1 (for true)?If you look at operator precedence, you will find that the left-shift operator << has a higher precedence than the logical AND operator &&.
Let i be a signed integer type. Considerwhere initially i>0.Source: setter's code of an online coding puzzle.
(assuming 64bit machine)e.g.The maximum positive number that a regular signed integer (32bit) can store is 0x7FFFFFFF.
unsigned long has 8 bytes on my Linux gcc.unsigned long long has 8 bytes on my Linux gcc, too.So I think the range of integers they can show is from 0 min to (2^64 - 1)max.