Вероятно, как и многие, я напечатал эту опечаткуОшибка компиляции, сравнивающая целое число со строкой?
int a = 0;
cout << a < " "; //note the '<'
Однако компилятор MSVC++ бросил только предупреждение
предупреждение C4552: '<': оператор не имеет никакого эффекта; ожидаемый оператор с побочный эффект
, хотя я ожидал ошибки компиляции. Действительно ли это стандартный код жалобы? Происходит ли какое-либо неявное преобразование или перегрузка типов, которые делают код действительным? Я также путаю ли <
оператора сравнения строки " "
с целым числом a
или с результатом cout << a
Связанная SO постом является here.
Используемый вами компилятор принимает сравнения указателей и интегральных типов, но стандарт запрещает это. При необходимости обновите или измените компилятор –
@ a.lasram И как будет работать макрос «NULL», если он не будет? – kfsone
@ a.lasram Это не так. Вы перепутали приоритет. –