Author Topic: Не идёт сравнение и и операторы в команде if в 4.10  (Read 2023 times)

0 Members and 1 Guest are viewing this topic.

Skomopox

  • Освоившийся
  • **
  • Posts: 56
    • View Profile
Привет Джони! Не идёт сравнение и и операторы в команде if в 4.10. Вот пример:
Code: (clickermann) [Select]
$c=9
$s=14

if($c<$s|$c<10)
print("OK")
else
print("NOK")
end_if

halt

Всегда пишет NOK. Т.е. никак не находит. Ни один оператор не работает. Проверял в 4.7 всё идёт, в 4.9 тоже. В 4.10 не работает. Джонииииии.... исправь, пожалуйста, и можно ли новую версию выложить сразу с этим исправлением???! Спасибо.

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Code: (clickermann) [Select]
$c=9
$s=14
 
if((int($c)<int($s))|(int($c)<10))
print("OK")
else
print("NOK")
end_if
 
halt

а вот так ? =)

ps.  проверил отредактировал
сложные выражения нужно тоже в скобки заключать
« Last Edit: June 30, 2014, 08:28:50 AM by aden »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
INT нужен для принудительного преобразования строк в числа, например после чтения из файла.

В данном случае это не нужно
Code: (clickermann) [Select]
$c=9
$s=14

if(($c<$s)|($c<10))
   print("OK")
else
   print("NOK")
end_if

halt

Skomopox

  • Освоившийся
  • **
  • Posts: 56
    • View Profile
Сейчас дошло про скобки. А то не сразу понятно. Просто в предыдущих версиях они не нужны были, какие бы сложные выражения не были, ну по крайне мере в моём примере точно. Я проверил перед тем, как написать, я писал. Не знал, что в 4.10 добивалось необходимость этих скобок. Спасибо, ребята, большое! :)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Всегда нужны были скобки. Если не с OR, то с AND... Да и вообще лучше ставить т.к. приоритет логических операций не озвучен. Может он и совпадает с Delphi, а может и нет. Да и кто из не программистов знает как там оно классически.

Но понравилось сразу: "исправь, пожалуйста" и "новую версию" сразу  ;D
Тут новоприбывшие весь ВКонтакт и форум оборвали "НЕ ПОВТОРЯЕТ, ПОМОГИТЕ!" Хотя ответ через каждые 3 поста, и то обновления нет.

В 4.10  баг синус/косинус так до конца и не исчез. Пробивается сквозь костыль вставленный после 4.9.
Code: (clickermann) [Select]
LOGWRITE ("COS/SIN ", 1*COS(90), "/", 1*SIN(180))

// вариант лечения через промежуточные переменные
$COS = COS(90)
$SIN = SIN(180)
LOGWRITE ("Обход COS/SIN ", 1*$COS, "/", 1*$SIN)

HALT

На 1 умножаю для примера. Когда столкнулся с умножением на переменную еле нашёл.
« Last Edit: June 30, 2014, 11:47:47 AM by Vint »