Joined: Sun May 25, 2008 5:34 pm Posts: 95 Has thanked: 2 time Have thanks: 1 time
The C language does not have a boolean type. Instead, it uses integer under the following general rules:
1. An operation which requires a boolean value takes an integer and treats zero as false and any other value as true.
2. An operation which produces a boolean value generates 1 or 0 for true and false.
The C++ committee eventually added a boolean type to C++ (and called it bool, just to keep you from spelling right the first time). To maintain compatibility with C, it converts freely to and from integer under similar rules. Specifically:
1. When an integer is used in a boolean context, it is converted under similar rules: zero becomes false, and nonzero becomes true.
2. When a bool is used in an int context, it is converted to 1 or 0, for true or false.
The result is very similar behavior in either dialect, produced from different formal type rules. Relational Operators
== != < <= > >=
C: Result is 1 or 0.
C++: Result is true or false.
Logical Operators
&& ||
In C: expect integer values, treating zero as false and non-zero as true. Produce 1 or 0.
In C++: expect boolean values. If integer(s) are present, convert to bool using the rule that zero converts to false, nonzero converts to true. Produce true or false.