Приведение int к bool в C / C ++
Я знаю, что в C и C ++ при приведении bools к int,(int)true == 1
а также(int)false == 0
, Я задаюсь вопросом о кастинге в обратном направлении ...
В приведенном ниже коде все следующие утверждения верны для меня в файлах .c, скомпилированных с Visual Studio 2013 и Keil µVision 5. Примечание(bool)2 == true
.
Что говорят стандарты C и C ++ о приведении ненулевых, не одно целых чисел к bools? Это поведение указано? Пожалуйста, включите цитаты.
#include <stdbool.h>
#include <assert.h>
void TestBoolCast(void)
{
int i0 = 0, i1 = 1, i2 = 2;
assert((bool)i0 == false);
assert((bool)i1 == true);
assert((bool)i2 == true);
assert(!!i0 == false);
assert(!!i1 == true);
assert(!!i2 == true);
}
Не дубликатМожно ли предположить (bool) true == (int) 1 для любого компилятора C ++?:
Кастинг в обратном направлении (int -> bool).Здесь нет обсуждения ненулевых, не единичных значений.