Допустимы ли присваивания: 1) k: =5; 2) k: =10; 3) k: =-0; 4) k: ='5'; 5) k: =ord(d); 6) k: =ord(d)-ord('0'); если k: 0 .. 9;

SillyLittleFool SillyLittleFool    2   09.06.2019 11:30    0

Ответы
Ruda05 Ruda05  08.07.2020 08:37
Первый допустим.
2) k:=10; Не должен быть допустим, поскольку 10 не входит в 0..9. НО...по умолчанию Паскаль игнорирует эту ошибку, позволяя даже 255 присвоить.
Третий оператор допустим.
4) k:='5'; недопустимо, потому что нельзя преобразовать тип char в правой части к типу 0..9, являющемуся подмножеством однобайтных целых.
5) k:=ord(d); в таком виде записать нельзя, потому что d нигде не описано. Если предположить, что на месте d находится цифра, то оператор допустим.
6) k:=ord(d)-ord('0'); Как и для 2) - оператор не должен быть допустим... но он допустим. Допустим он будет и в варианте k:=ord(d)-ord(0), даже когда выдаст отрицательные значения.

Все это сужает область возможного применения данных типа "диапазон" и в целом типа "set of ...". не позволяя во многих случаях использовать их для организации эффективных проверок . Например, для можно было бы описать диапазон 6..18 для контроля принадлежности возраста к школьному. Можно было БЫ... но, как выясняется, нельзя.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика