Which value is better to use? Boolean true or Integer 1?

12,682

Solution 1

A boolean true is, well, a boolean value. Use it whenever you want to express that a certain binary condition is met.

The integer literal 1 is a number. Use it, whenever you are counting something.

Don't use integers for booleans and vice versa. They are different.

Consider a variable int isEnabled. Of course, I can guess that 0 and 1 may be the only intended values for this variable. But language-wise, nothing keeps me from assigning 4247891. Using a boolean, however, restricts the valid values to true and false. This leaves no room for speculation.

(C++ int's and bools are somewhat convertible, but it's generally frowned upon)

Solution 2

I recommend using true if your type is logically a boolean. This will be far more clear in terms of intent, which makes your code more maintainable.

Solution 3

For what? Use a boolean for a boolean; use an integer when you're counting something.

Share:
12,682
Datoxalas
Author by

Datoxalas

I am a happy programmer!

Updated on June 22, 2022

Comments

  • Datoxalas
    Datoxalas almost 2 years

    Does it make any sense or not?

  • Devin Burke
    Devin Burke about 13 years
    Boolean is also a lot smaller in terms of memory.
  • Adam Casey
    Adam Casey about 13 years
    Just to add reference to what Justin Satyr is saying: Integer's are usually 4bytes (32bits) whereas Boolean's are 1byte (8bits). These are all dependant on the platform but for all of the main platforms I know this is correct. (Yes, a boolean should, in a perfect world, be 1 bit, however it's impossible to reference only one bit in memory)
  • Begemoth
    Begemoth about 13 years
    @Justin Satyr A lot smaller is std::vector<bool> compared to std::vector<int> in other cases you need to take alignment into account.
  • Roman A. Taycher
    Roman A. Taycher almost 13 years
    Isn't std::vector<bool> secretly a bunch of bit flags though.