Существует семантическая разница между null
и пустой строкой.Один говорит, что «он не определен для этого ввода», другой говорит, что «правильное значение для этого ввода - пустая строка».
Представьте, что вы написали компилятор для подмножества C, который допускает main
-функция, которая ничего не возвращает.Ваш компилятор возвращает строку с неким фэнтезийным языком ассемблера.
// Testcode 0
void main() {
Для этого вы должны вернуть null
, код не правильно сформирован из-за отсутствующей закрывающей скобки (нет, не создавайте исключение, ошибки в написанном пользователем коде ожидаются).Нет действительного вывода.
// Testcode 1
void main() { printf("hello!"); }
Для этого вы должны вернуть "push 'hello!'\ncall printf"
// Testcode 2
void main() {}
Для этого вы можете вернуть ""
, код ничего не делает и ничего не возвращает, нодействителен.