Difference between revisions of "If"
imported>Gblues (Added overview, else/elseif/endif information) |
imported>Gblues (added info about logical operators being unaffected by parenthesis) |
||
Line 65: | Line 65: | ||
| <nowiki>if x == 1 || y == 1 ; considered true unless both x and y equal 0.</nowiki> | | <nowiki>if x == 1 || y == 1 ; considered true unless both x and y equal 0.</nowiki> | ||
|} | |} | ||
Note that while multiple logical operators can be used, the operators are always evaluated from left to right regardless of parentheses. For example: | |||
<nowiki>if myVar1 == 1 && (myVar2 == 1 || myVar2 == 5)</nowiki> | |||
Logically, this should say "if myVar is 1 AND myVar2 is either 1 or 5..." but in Oblivion, this will be evaluated as "if myVar is 1 AND myVar2 is 1, or if myVar2 is 5, ..." (thanks MaXiMiUS and JOG for testing this) | |||
== Comparisons and Expressions == | == Comparisons and Expressions == | ||
The comparison operators can be used with any expression that can be evaluated into a number. Assuming "a = 17", "b = 20" and "c = a - b", all of the following expressions work as expected. Parentheses are only needed when they're necessary for mathematical | The comparison operators can be used with any expression that can be evaluated into a number. Assuming "a = 17", "b = 20" and "c = a - b", all of the following expressions work as expected. Parentheses are only needed when they're necessary for mathematical reasons. | ||
IF c == -3 && b == 20 | IF c == -3 && b == 20 |
Revision as of 09:51, 15 April 2006
The if statement allows you to execute (or not execute) a block of script commands based on one or more comparisons that you specify. Oblivion's if command is very powerful and comparable to "real" programming languages.
Overview
An if statement uses the following syntax:
if expressionA [comparison] expressionB ; test "expressionA [comparison] expressionB" passed elseif expressionB [comparison] expressionC ; test "expressionB [comparison] expressionC" passed else ; none of the above tests passed endif
The else and elseif statements are optional.
Comparison Operators
An if statement may contain one or more comparison operators. Below is a table of valid comparison operators:
Operator | Description |
---|---|
== | Exactly equal to |
!= | Not equal to |
> | Greater than |
>= | Greater than or equal to |
< | Less than |
<= | Less than or equal to |
It is important to note that there are no bitwise comparisons available in Oblivion's scripting language.
Combining Comparisons
Comparisons can be linked together using the following logical operators:
Operator | Description | Example |
---|---|---|
&& | Logical AND | if x == 1 && y == 1 ; considered true only if both x and y equal 1. |
|| | Logical OR | if x == 1 || y == 1 ; considered true unless both x and y equal 0. |
Note that while multiple logical operators can be used, the operators are always evaluated from left to right regardless of parentheses. For example:
if myVar1 == 1 && (myVar2 == 1 || myVar2 == 5)
Logically, this should say "if myVar is 1 AND myVar2 is either 1 or 5..." but in Oblivion, this will be evaluated as "if myVar is 1 AND myVar2 is 1, or if myVar2 is 5, ..." (thanks MaXiMiUS and JOG for testing this)
Comparisons and Expressions
The comparison operators can be used with any expression that can be evaluated into a number. Assuming "a = 17", "b = 20" and "c = a - b", all of the following expressions work as expected. Parentheses are only needed when they're necessary for mathematical reasons.
IF c == -3 && b == 20 IF c == -3 && b == 20 && a == 17 IF c - 1 == -4 && b == 20 && a == 17 IF a - 20 == 17 - b IF a - 20 == 17 - b && c + 3 == 0 IF a + 3 == b IF a - b == c IF a *4 - b * 4 == c * 4 IF a * ( 5 + c ) - 14 == b IF 2*(a*(5+c)-14)==b - -b