-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Вопрос по работе For, While
Народ подскажите, почему в этом простом примере:
Код:
$j = 1
For $i = 1 To 50
ConsoleWrite("i = " & $i & @CRLF)
While $j <= 100
ConsoleWrite("i = " & $i & @TAB & "j = " & $j & @CRLF)
$j += 1
WEnd
Next
У меня для i = 1 цикл While работает 100 раз, а потом когда i = 2 он уже пропускается?
Скрытый текст
Код:
i = 1
i = 1 j = 1
i = 1 j = 2
i = 1 j = 3
i = 1 j = 4
i = 1 j = 5
i = 1 j = 6
i = 1 j = 7
i = 1 j = 8
i = 1 j = 9
i = 1 j = 10
i = 1 j = 11
i = 1 j = 12
i = 1 j = 13
i = 1 j = 14
i = 1 j = 15
i = 1 j = 16
i = 1 j = 17
i = 1 j = 18
i = 1 j = 19
i = 1 j = 20
i = 1 j = 21
i = 1 j = 22
i = 1 j = 23
i = 1 j = 24
i = 1 j = 25
i = 1 j = 26
i = 1 j = 27
i = 1 j = 28
i = 1 j = 29
i = 1 j = 30
i = 1 j = 31
i = 1 j = 32
i = 1 j = 33
i = 1 j = 34
i = 1 j = 35
i = 1 j = 36
i = 1 j = 37
i = 1 j = 38
i = 1 j = 39
i = 1 j = 40
i = 1 j = 41
i = 1 j = 42
i = 1 j = 43
i = 1 j = 44
i = 1 j = 45
i = 1 j = 46
i = 1 j = 47
i = 1 j = 48
i = 1 j = 49
i = 1 j = 50
i = 1 j = 51
i = 1 j = 52
i = 1 j = 53
i = 1 j = 54
i = 1 j = 55
i = 1 j = 56
i = 1 j = 57
i = 1 j = 58
i = 1 j = 59
i = 1 j = 60
i = 1 j = 61
i = 1 j = 62
i = 1 j = 63
i = 1 j = 64
i = 1 j = 65
i = 1 j = 66
i = 1 j = 67
i = 1 j = 68
i = 1 j = 69
i = 1 j = 70
i = 1 j = 71
i = 1 j = 72
i = 1 j = 73
i = 1 j = 74
i = 1 j = 75
i = 1 j = 76
i = 1 j = 77
i = 1 j = 78
i = 1 j = 79
i = 1 j = 80
i = 1 j = 81
i = 1 j = 82
i = 1 j = 83
i = 1 j = 84
i = 1 j = 85
i = 1 j = 86
i = 1 j = 87
i = 1 j = 88
i = 1 j = 89
i = 1 j = 90
i = 1 j = 91
i = 1 j = 92
i = 1 j = 93
i = 1 j = 94
i = 1 j = 95
i = 1 j = 96
i = 1 j = 97
i = 1 j = 98
i = 1 j = 99
i = 1 j = 100
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
i = 10
i = 11
i = 12
i = 13
i = 14
i = 15
i = 16
i = 17
i = 18
i = 19
i = 20
i = 21
i = 22
i = 23
i = 24
i = 25
i = 26
i = 27
i = 28
i = 29
i = 30
i = 31
i = 32
i = 33
i = 34
i = 35
i = 36
i = 37
i = 38
i = 39
i = 40
i = 41
i = 42
i = 43
i = 44
i = 45
i = 46
i = 47
i = 48
i = 49
i = 50
|
Цитата:
Цитата HFShak
а потом когда i = 2 он уже пропускается? »
|
Потому, что срабатывает условие при «While»:
— оно ложно после первого прохода внешнего цикла, потому внутренний цикл не исполняется больше ни разу.
Я полагаю, Вам надо было нечто такое:
Код:
For $i = 1 To 50
ConsoleWrite("i = " & $i & @CRLF)
$j = 1
While $j <= 100
ConsoleWrite("i = " & $i & @TAB & "j = " & $j & @CRLF)
$j += 1
WEnd
Next
?!
|
CyberDaemon |
18-03-2015 21:09 2484459 |
Цитата:
Цитата Iska
оно ложно после первого прохода внешнего цикла »
|
Разумеется. Т.к. j было однократно инициализировано перед внешним циклом, то после первого прогона внутреннего цикла j становится равно 101 и внутренний цикл больше срабатывать не будет. Добавь в первый ConsoleWrite вывод переменной j и все будет сразу видно.
|
Время: 16:49.
© OSzone.net 2001-