Эта полная Swift программа дает код выхода 255:В Swift (Darwin), почему exit() принимает Int32 вместо UInt8?
import Darwin
exit(-1)
При запуске из в Xcode я получаю Program ended with exit code: 255
; или при компиляции и запуске в командной строке echo $?
производит 255
; и т. д. В какой-то момент Int32(-1)
усекается и интерпретируется как 8-битное целое число без знака.
Я не знаю, где это преобразование происходит (возможно, в Дарвине где-то или когда значение передается в оболочку хоста или ОС?), Но так как exit()
- это функция библиотеки Дарвина (не функция языка Swift), которая уже определен для платформы, почему она определена для принятия Int32
вместо UInt8
?
См., Например, http://stackoverflow.com/questions/1703741/basic-c-question-about-return-values или http://stackoverflow.com/questions/26435730/forked-child-exits-with-1-but-wexitstatus- получает-255. –
@MartinR эти два вопроса касаются C, и этот вопрос не о том, почему выдает 255. Речь идет о том, почему функция 'exit()' в Swift разрабатывается/определяется как есть, а не что-то более разумное для программиста Swift (например, того, кто никогда не делал никаких других языков). Для меня это кажется небезопасным. – jhabbott
'exit()' является библиотечной функцией C, и не имеет значения, вызываете ли вы его из C или из Swift. –