28 Jun 07 17:24, you wrote to me:
GM> Hачнем отсюда: "bool values behave as integral types. Values of type
GM> bool participate in integral promotions (4.5)." и далее "Types bool,
GM> char, wchar_t, and the signed and unsigned integer types are
GM> collectively called integral types". Hаконец: "Integral and floating
GM> types are collectively called arithmetic types".
Hу ладно, будем считать, что ни один из трех протестированных компиляторов не
соблюдает стандарт и, как я понимаю, не собирается его соблюдать :)
Всего доброго!
Евгений Музыченко
eu-...@muzy-chen-ko.net (минусы убрать)
EM> Hу ладно, будем считать, что ни один из трех протестированных
EM> компиляторов не соблюдает стандарт и, как я понимаю, не собирается его
EM> соблюдать :)
--
Да, такое возможно :)
Однако было бы интересно взглянуть на тестируемый код поподробнее.
C уважением,
Геннадий Майко.
29 Jun 07 09:42, you wrote to me:
GM> Однако было бы интересно взглянуть на тестируемый код поподробнее.
Что это может дать? Упомянутые мною компиляторы выражения (x == true) или (x ==
false) компилят, как и ожидалось, в прямые сравнения с единицей или нулем, если
x имеет тип bool. Преобразования делаются только для других типов.
А заниматься приведением _внутренне_управляемых_ значений перед каждым
сравнением - это маразм, причем крепчайший :)
Кстати, тут еще фишка вот в чем: даже если и считать тип bool "арифметическим",
это отнюдь не требует от компилятора заниматься интерпретацией _внутренних_
значений переменной типа bool. Ему достаточно выполнить формальные
преобразования в рамках принятой модели, считая true за 1, а false - за 0, но
проверять, не попало ли в переменную другое значение, он не обязан.