for forspec: Difference between revisions
Jump to navigation
Jump to search
m (example) |
(Never try to tell a decimal number via binary number in a loop; otherwise the loop will be infinite) |
||
Line 27: | Line 27: | ||
<dd class="notedate">Posted on Apr 15, 2014 - 12:54 | <dd class="notedate">Posted on Apr 15, 2014 - 12:54 | ||
<dt class="note">'''[[User:ffur2007slx2_5|ffur2007slx2_5]]'''<dd class="note"> | <dt class="note">'''[[User:ffur2007slx2_5|ffur2007slx2_5]]'''<dd class="note"> | ||
In ArmA3 ver 1.16 Please note the difference between [[for forspec]] and [[for do]], [[for forspec]] detects Boolean in each scope while [[for do]] doesn’t. e.g. | *In ArmA3 ver 1.16 Please note the difference between [[for forspec]] and [[for do]], [[for forspec]] detects Boolean in each scope while [[for do]] doesn’t. e.g. | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
Line 55: | Line 55: | ||
|} | |} | ||
<br> | |||
*Never try to tell a decimal number via binary number in a loop; otherwise the loop will be infinite: | |||
<code> | |||
'''for''' [{_a = 0},{_a != 1},{_a = _a + 0.1}] [[do]] {}; //an infinite loop; _a will never be 1 so the scope will always be true. | |||
</code> | |||
Any binary number behind the decimal point is always the sum of 1/2, 1/4, 1/8, 1/16 etc. so decimal number with odd denominator like 1/3 or 1/10 cannot be exactly equal to each other. | |||
<!-- Note Section END --> | <!-- Note Section END --> | ||
</dl> | </dl> |
Revision as of 15:39, 29 June 2014
Description
- Description:
- Creates cycle, using C like style. See example.
- Groups:
- Uncategorised
Syntax
Examples
- Example 1:
for [{_x=1},{_x<=10},{_x=_x+1}] do {debugLog _x;}
- Example 2:
_a = 0; for [{},{_a <= 10},{_a = _a + 1}] do {debugLog _a;};
- Example 3:
for [{_a = 0; _b = 1},{_a <= 10},{_a = _a + 1; _b = _b + _b}] do {}; //_a = 11; _b = 2048;
Additional Information
- See also:
- Control Structuresfor do
Notes
-
Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Notes
- Posted on Apr 15, 2014 - 12:54
- ffur2007slx2_5
-
- In ArmA3 ver 1.16 Please note the difference between for forspec and for do, for forspec detects Boolean in each scope while for do doesn’t. e.g.
command Structure Summary for forspec a= 0; b = true; for [{_i = 0},{_i < 10 && b},{_i = _i + 1}] do { a = a + 1; if (a >= 7) then {b = false} }
loop can be exited via Boolean control, possible workaround can be like BIS_fnc_areEqual for do a= 0; for "_i" from 0 to 10 do { a = a + 1; if (a >= 7) exitwith {} };
have to be exited via exitWith
- Never try to tell a decimal number via binary number in a loop; otherwise the loop will be infinite:
for [{_a = 0},{_a != 1},{_a = _a + 0.1}] do {}; //an infinite loop; _a will never be 1 so the scope will always be true.
Any binary number behind the decimal point is always the sum of 1/2, 1/4, 1/8, 1/16 etc. so decimal number with odd denominator like 1/3 or 1/10 cannot be exactly equal to each other.