Operators: Difference between revisions
m Added the note that == is case-insensitive. |
m How'd that typo get through? |
||
| Line 26: | Line 26: | ||
{{eztr|{{eztd| <nowiki>>=</nowiki> |greater than or equal to}}}} | {{eztr|{{eztd| <nowiki>>=</nowiki> |greater than or equal to}}}} | ||
}} | }} | ||
Note that you cannot mix datatypes within a comparison or KoLmafia will abort | Note that you cannot mix datatypes within a comparison or KoLmafia will abort with an error, with the exception of mixing types int and float, where KoLmafia will do a transparent type conversion behind-the-scenes. If you need to compare different datatypes, use one or more of the [[Datatype Conversions|Datatype Conversion]] functions. Also, == is case-insensitive with respect to strings. | ||
{{ | {{ | ||
Revision as of 23:39, 27 March 2010
Mathematical Operators
The following mathematical operators are used in KoLmafia:
| + | Addition | Performs addition and string concatenation |
| - | Subtraction | Performs subtraction |
| * | Multiplication | Performs multiplication |
| / | Division | Performs division |
| % | Modulo | Returns the remainder after division |
Note that, with the exception of using "+" for string concatenation, these operators can only be used on int or float datatypes.
Relational Operators
To follow these examples, a basic understanding of the concepts found on Control Structures would be helpful.
In order to create more complex if statements, we need to understand the basic relational operators:
| == | equal to |
| != | not equal to |
| < | less than |
| > | greater than |
| <= | less than or equal to |
| >= | greater than or equal to |
Note that you cannot mix datatypes within a comparison or KoLmafia will abort with an error, with the exception of mixing types int and float, where KoLmafia will do a transparent type conversion behind-the-scenes. If you need to compare different datatypes, use one or more of the Datatype Conversion functions. Also, == is case-insensitive with respect to strings.
if ( true == true )
{
print( "This line DOES get printed." );
}
if ( true == false )
{
print( "This line does NOT get printed." );
}
if ( 1 == 1.0 )
{
print( "This line DOES get printed." );
}
if ( 1 == 2 )
{
print( "This line does NOT get printed." );
}
if ( "Hello" == "hello" )
{
print( "This line DOES get printed." );
}Boolean Operators
| && | and |
| || | or |
| ! | not |
Note that the above operators only work with boolean values & datatypes. To make use of them with other datatypes, you will either need to first perform a Datatype Conversion, or you will need to nest your operations such that a boolean value is used with the boolean operators.
if ( true && true )
{
print( "This line DOES get printed (both possibilities proved true)." );
}
if ( true && false )
{
print( "This line does NOT get printed (only one possibility proved true)." );
}
if ( true || false )
{
print( "This line DOES get printed (since at least one of the possibilities proved true)." );
}
if ( ! false )
{
print( "This line DOES get printed (since the not operator converted false to true)." );
}We also need to understand operator precedence. Statements inside a () pair are always evaluated first, then from left to right.
if ( true || true && false )
{
print( "This line DOES get printed." );
// evaluated left-to-right
// true or (true && false) returns true
}
if ( true && ( true && false ) )
{
print( "This line does NOT get printed." );
// ( true && false ) is evaluated first since it is inside of parentheses
// so we end up evaluating ( true && false ) which returns false
}
if ( true && ! ( true && false ) )
{
print( "This line DOES get printed." );
// ( true && false ) is evaluated first since it is inside of parentheses
// the ! operator converts the false from ( true && false ) to true
// ( true && true ) returns true
}