Assignments in C have a value and since any non-zero scalar value is interpreted as true in conditional expressions,A zero scalar value is interpreted as false while any non-zero scalar value is interpreted as true; this is typically used with integer types, similar to assembly language idioms. the code if (x = y) is legal, but has a very different meaning from if (x == y). The former code fragment means "assign y to x, and if the new value of x is not zero, execute the following statement". The latter fragment means "if and only if x is equal to y, execute the following statement"., 19
