在Swift(Darwin)中,为什么exit()采用Int32而不是UInt8?

时间:2017-01-26 16:09:41

标签: swift darwin

这个完整的Swift程序提供退出代码255:

import Darwin
exit(-1)

从Xcode内部运行时,我得到Program ended with exit code: 255;或者在命令行echo $?上编译和运行时生成255;在某些时候,Int32(-1)被截断并解释为无符号的8位整数。

我不知道这种转换发生在哪里(可能在某个地方的Darwin或者当值传递到主机shell或操作系统?),但是因为exit()是Darwin库函数(不是Swift)语言功能),已经特定于平台,为什么定义为Int32而不是UInt8

1 个答案:

答案 0 :(得分:3)

因为它是标准的C exit函数,它具有以下原型:

void exit(int);

在您的系统上int为32位,这就是Swift使用Int32的原因。

截断发生在C exit函数内部。