Назад | Перейти на главную страницу

Начальные нули в lss при сравнении в cmd.exe вызывают непредвиденный результат

if 8 lss 1 echo Меньше

[Ничего не отображается]

if 08 lss 1 echo Меньше

Меньше

Зачем?

Я думаю нашел. 0 - это префикс для восьмеричных чисел в cmd.exe (никогда не знал об этом!), А 08 не интерпретируется правильно, так как это недопустимое восьмеричное число.

Поэтому, когда я извлек из даты 1-12 месяцев и произвел математические вычисления, это не удалось в месяцах 08 и 09, но сработало с 01-07 и 10 и 11. Первый был действительным восьмеричным, а второй - десятичным.

Попался!