Вроде, исходник, компилируется и "работает" :-)
#include <iostream>
int* null = ! ! ! ! ! !
! ! ! ! ! ! !
! ! ! ! ! ! !
! ! !!!!!! !!!!! !!!!1;
int main()
{
std::cout << "null = " << null << std::endl;
return 0;
}
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте Maxim K., Вы писали:
MK>Здравствуйте Павел Кузнецов, Вы писали:
MK>VC 7.0 говорит: "error C2440: 'initializing' cannot convert from 'bool' to 'int*'"
BCB 1.0 тож самое выдает... Апшипка, однако
Здравствуйте Flamer, Вы писали:
F>Здравствуйте Maxim K., Вы писали:
MK>>VC 7.0 говорит: "error C2440: 'initializing' cannot convert from 'bool' to 'int*'"
F>BCB 1.0 тож самое выдает... Апшипка, однако :-))
Это ошибка в этих компиляторах. В качестве null pointer подходит любое интегральное константное выражение времени компиляции, каковым является выражение из примера. Comeau и Intel "глотают" приведенный код "на ура". Что характерно, VC++ вполне счастлив, получая такой код:
int* null = false;
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
ПК>Это ошибка в этих компиляторах.
Для этих [недо]компиляторов пример можно модифицировать так:
#include <iostream>
int* null = ! ! ! ! ! !
! ! ! ! ! ! !
! ! ! ! ! ! !
! ! !!!!!! !!!!! !!!!1 ? 0 : 0;
int main()
{
std::cout << "null = " << null << std::endl;
return 0;
}
Уже не так "красиво", но, все-таки...
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен