Приведение 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).Здесь нет обсуждения ненулевых, не единичных значений.

Ответы на вопрос(0)

Ваш ответ на вопрос