Здравствуйте, 24, Вы писали:
24>Здравствуйте, Ytz, Вы писали:
Ytz>>Поясните почему char* приводиться к bool:
24>Скорее всего, потому что char* -> bool — "встроенное" преобразование, а char* -> std::string — пользовательское.
Но если вместо bool, например, поставить int, то приведения не будет, а будет вызов конструктора std::string
Здравствуйте, 24, Вы писали:
24>Здравствуйте, Ytz, Вы писали:
Ytz>>А зачем сделали такое неявное приведение?
24>char* к bool? К bool многое приводится неявно, например чтоб писать if (p) вместо if (p != NULL)
Здравствуйте, Ytz, Вы писали:
Ytz>>>А зачем сделали такое неявное приведение?
24>>char* к bool? К bool многое приводится неявно, например чтоб писать if (p) вместо if (p != NULL)
Ytz>В С нет bool, но написать if (p) можно
Здравствуйте, night beast, Вы писали:
NB>Здравствуйте, Ytz, Вы писали:
Ytz>>>>А зачем сделали такое неявное приведение?
24>>>char* к bool? К bool многое приводится неявно, например чтоб писать if (p) вместо if (p != NULL)
Ytz>>В С нет bool, но написать if (p) можно
NB>7.16 ISO/IEC 9899:1999?
Здравствуйте, Ytz, Вы писали:
24>>>>char* к bool? К bool многое приводится неявно, например чтоб писать if (p) вместо if (p != NULL)
Ytz>>>В С нет bool, но написать if (p) можно
NB>>7.16 ISO/IEC 9899:1999?
Ytz>И что?
Здравствуйте, night beast, Вы писали:
Ytz>>>>В С нет bool, но написать if (p) можно
NB>>>7.16 ISO/IEC 9899:1999?
Ytz>>И что?
NB>что "И что?"?
NB>там написано NB>
NB>The macro
NB>bool
NB>expands to _Bool.
NB>почему "написать if (p) можно" есть в 6.8.4.1.
Это ты говоришь о стандарте C99 в котором появился bool, но писать if (p) в C можно было всегда — это классика. Некоторые даже так извращались:
в C любое арифметическое выражение преобразуется в int
в виде 0 или 1 если находится в if while for
указатели целые вещественные без разницы все в int
так было в ANSI C как в C99 незнаю то что в
C++ указатель к int нельзя неявно привести а к bool
можно мне тоже кажется странным