Difference between revisions of "Operators"

From Kolmafia
Jump to navigation Jump to search
imported>StDoodle
m
imported>StDoodle
m
Line 24: Line 24:
 
{{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 wil 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.
  
 +
{{
 +
CodeSample|
 +
code=
 +
<syntaxhighlight>
 +
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." );
 +
}
 +
</syntaxhighlight>}}
  
  
The variable (or function results) on the right must be of the same type as is on the left. The exception to this is integer and float in which you can test an integer against a float. See [[(ASHRM) Datatype Conversions ]] for methods allowing cross type checking.
 
  
<code>
+
==Boolean Operators==
  if(true == true)
+
 
    {
 
    print("this line gets printed");
 
    }
 
  if(false == true)
 
    {
 
    print("this line never gets printed");
 
    }
 
  if(1 == 1)
 
    {
 
    print("this line gets printed");
 
    }
 
  if(1 == 2)
 
    {
 
    print("this line never gets printed");
 
    }
 
</code>
 
  
==Boolean Operators==
+
{{
 +
eztable|
 +
{{eztr|{{eztd| <nowiki>==</nowiki> |equal to}}}}
 +
{{eztr|{{eztd| <nowiki>!=</nowiki> |not equal to}}}}
 +
{{eztr|{{eztd| <nowiki><</nowiki> |less than}}}}
 +
{{eztr|{{eztd| <nowiki>></nowiki> |greater than}}}}
 +
{{eztr|{{eztd| <nowiki><=</nowiki> |less than or equal to}}}}
 +
{{eztr|{{eztd| <nowiki>>=</nowiki> |greater than or equal to}}}}
 +
}}
  
 
We also need to understand Basic Boolean operators. These only work with boolean:
 
We also need to understand Basic Boolean operators. These only work with boolean:
Line 75: Line 88:
 
     </tr>
 
     </tr>
 
   </table>
 
   </table>
 +
 +
{{
 +
CodeSample|
 +
code=
 +
<syntaxhighlight>
 +
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)." );
 +
}
 +
</syntaxhighlight>}}
  
  
<code>
 
  if(true && true)
 
    {
 
    print("this line gets printed because both possibilities proved true");
 
    }
 
  if(false && true)
 
    {
 
    print("this line never gets printed");
 
    }
 
  if(false || true)
 
    {
 
    print("This line gets printed because 1 of the possibilities was true");
 
    }
 
  if(!false)
 
    {
 
    print("This line gets printed because the not operator converted false to true.");
 
    }
 
</code>
 
<br />
 
 
We also need to understand operator precedence. Statements inside a () pair are always evaluated first, then from left to right.
 
We also need to understand operator precedence. Statements inside a () pair are always evaluated first, then from left to right.
  

Revision as of 17:43, 13 March 2010

Mathematical Operators

The following operators are used in KoLmafia:

+ Addition
- Subtraction
* Multiplication
/ Division
 % Modulo

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 wil 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.


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." );
}



Boolean Operators

== equal to
 != not equal to
< less than
> greater than
<= less than or equal to
>= greater than or equal to


We also need to understand Basic Boolean operators. These only work with boolean:

Boolean operators
Operator
Operation
&&
and
||
or
 !
not


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 || false && true)
   {
   print("This line gets printed");
   //true or false is true
   //true(from true or false) and true equals true
   }
 if(true && (false && true))
   {
   print("this line never gets printed");
   //false && true is inside () so it's first and evaluates to false
   //true && false(from true && false) is false
   }
 if(true && !(false && true))
   {
   print("This line gets printed");
   //false && true is inside () so it's first and evaluates to false
   //the ! operator converts the false (from (true && false)) to true
   //true && true(from !(true && false)) is true
   }


Using else we can have a code block which executes when the if statement evaluates to true, and another code block which executes when the if statement evaluates to false.

   if(false)
     {
     print("this line never gets printed");
     }
     else
     {
     print("this line gets printed"); 
     } 



We also need to understand nesting if statements.

 if(true)
   {
   if(true)
     {
     print("this line gets printed");
     }
     else
     {
     print("this line never gets printed"); 
     }    
   print("this line gets printed also");
   }
 if(false)
   {
   if(true)
     {
     print("this line never gets printed");
     //though inside an if(true) statement, 
     //the outer if(false) stops the code from ever getting here.
     }
     else
     {
     print("this line never gets printed"); 
     }
   print("this line never gets printed");
   }



Now you only need to put it all together as needed for your situation.