Difference between revisions of "Boolean"

From MSX Game Library

Line 1: Line 1:
 
In {{MSXGL}}, boolean can be defined using the type <tt>bool</tt>.
 
In {{MSXGL}}, boolean can be defined using the type <tt>bool</tt>.
  
While booleans are supposed to have only two values (true or false), here we use an 8-bit unsigned integer to store this value.<br/>
+
While booleans are supposed to have only two values (''true'' or ''false''), here we use an 8-bit unsigned integer to store this value.<br/>
 
Its value can therefore go from 0 to 255.<br/>
 
Its value can therefore go from 0 to 255.<br/>
 
By convention, we use :
 
By convention, we use :
Line 9: Line 9:
 
This choice was made for performance reasons both when returning the value and also when testing the returned value.
 
This choice was made for performance reasons both when returning the value and also when testing the returned value.
  
How to test that a boolean '<tt>b</tt>' is true:
+
How to test that a boolean '<tt>b</tt>' is ''true'':
 
  if(b) // Ok!
 
  if(b) // Ok!
 
 
  if(b != FALSE) // Ok!
 
  if(b != FALSE) // Ok!
 
 
  if(b == TRUE) // Not Ok! (no guaranteed to work)
 
  if(b == TRUE) // Not Ok! (no guaranteed to work)
 +
 +
To test that a boolean '<tt>b</tt>' is ''false'':
 +
if(!b) // Ok!
 +
if(b == FALSE) // Ok!
 +
if(b != TRUE) // Not Ok! (no guaranteed to work)

Revision as of 12:47, 4 October 2022

In MSXGL, boolean can be defined using the type bool.

While booleans are supposed to have only two values (true or false), here we use an 8-bit unsigned integer to store this value.
Its value can therefore go from 0 to 255.
By convention, we use :

  • FALSE = 0
  • TRUE = 1 (some engines use 0xFF value)

⚠️ However, while the value FALSE (0) is guaranteed on all boolean function returns, the value TRUE (1) is never guaranteed : Any value other than FALSE (0) should be interpret as TRUE.
This choice was made for performance reasons both when returning the value and also when testing the returned value.

How to test that a boolean 'b' is true:
if(b) // Ok!
if(b != FALSE) // Ok!
if(b == TRUE) // Not Ok! (no guaranteed to work)
To test that a boolean 'b' is false:
if(!b) // Ok!
if(b == FALSE) // Ok!
if(b != TRUE) // Not Ok! (no guaranteed to work)