- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
#include <iostream>
using namespace std;
int main()
{
bool b;
cin >> b;
switch (b) {
case true:
cout << "TRUE" << endl;
break;
case false:
cout << "FALSE" << endl;
break;
default:
cout << "WHAT???" << endl;
break;
}
return 0;
}
- инициализируйте переменные
- проверяйте флаги на стримах или включите исключения
В общем, нужно сделать дамп сырого значения b, не приведённого к bool.
https://24tv.ua/ru/iz_za_drozhanija_merkel_izmenila_oficial nyj_protokol_n1178176
Вангую, что там 0xCC, если отладочная сборка.
Пока ты не подсунешь в бул неинициализированное значение. После этого UB и уже никаких гарантий.
Переменная b всегда хранит либо ноль, либо единицу. Ветка с «WHAT???» у меня ни разу не сработала.
Либо сломали в какой-то из новых версий, либо результат зависит от параметров компилятора.
В MinGW любое число на входе, кроме 0, выдаёт TRUE. Остальные же строки выдают FALSE.
В обоих случаях мне не удалось в b поймать что-то, отличное сразу от нуля и единицы.
Совсем плохо, да?
- до с++11 стрелки не трогали переменную
- после с++11 они должны писать в неё 0 (не ожидал, если честно)
Т.е. MSVCбляди таки соснули и оно оставило мусор не по стандарту?
Может быть, это MacOS Classic (которая была до OSX)? Там вроде были страшные пути.
А вот про «VMS» я правильно вспомнил: там сепаратором была точка, плюс вся цепочка директорий заключалась в квадратные скобки, плюс имя диска было с баксами:
Возможно, это какая-то муть вроде «AmigaOS»:
Хотя нет, там слэши были не такими.
Посмотри, какая прелесть ещё существовала: https://en.wikipedia.org/wiki/Path_(computing)
Например, «TOPS-20» (как «VMS», только уголковые скобки вместо квадратных):
Или «RSX-11» (как «VMS», только запятая в качестве сепаратора вместо точки):
Или «RISC OS»:
Или «Stratus VOS»:
Или «Non Stop Kernel»:
Правый слэш в качестве сепаратора не работает только в стандартных утилитах и во встроенных командах «command.com», потому что они его воспринимают как начало параметра (например, встроенная команда DIR /P посчитает, что ей передали ключик «P», который означает включить пагинацию).
Во всех остальных случаях в DOS можно использовать хоть правый слэш, хоть левый.
Нет. PTS-DOS написана с нуля, это экспериментальная система. В ней много несовместимостей с DR-DOS. В частности, она даже разделы дисков нумерует не в том порядке, в котором их нумеруют MS-DOS, PC-DOS и DR-DOS.
Возможно, PTS-DOS — говно, но она точно не спизжена.
>> А если DIR /PETUKH/CHICK*.???
Проверь. Более того, если напишешь слитно (dir/p), command.com тоже посчитает, что ты команде dir передал параметр /p. На современных виндах такое же поведение (и у cmd.exe тоже). Если тебе нужно запустить программу p, лежащую в поддиректории dir, нужно употреблять именно левый слэш: dir\p (надеюсь, хуз его не съел).
Так что директории, имена которых совпадают со встроенными командами, нельзя передать в command.com (и в cmd.exe) с правым слэшем. А вот в API DOS, OS/2 и Windows можно передать любой слэш. То есть fopen("dir/p", "r") в сишке откроет именно файл p из поддиректории dir.
Caldera OpenDOS наследует все свойства DR-DOS. В частности, он многопользовательский. Файловая система для каждого файла сохраняет владельца и группу, как в никсах. В PTS-DOS ничего этого нет.
Ты всерьёз думаешь, что авторы PTS-DOS взяли исходники Caldera OpenDOS, изменили порядок нумерации разделов жёстких дисков, удалили владельцев файлов, удалили ещё кучу функций, свойственных DR?
Кстати, PTS-DOS появился в 1993 году, а Caldera OpenDOS только в 1996.
Ты ещё скажи, что «Ворд» собрали из спизженных исходников «Фотошопа», а самолёты собирают из спизженных деталей автомобилей.
Отвечаю только потому, что комментарии читает не только Сёма. Зайдут другие зрители, увидят, что что-то не так, и проверят.
Так что если PTS является плагиатом, то плагиатом какого-то говна, которое нам нужно найти, а не DR.
Хм, так ему за это платят?
То есть / воспринимается как начало параметра только непосредственно после встроенных команд (типа DIR).