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

In Swift (Darwin), why does exit() take an Int32 instead of a UInt8?

这个完整的 Swift 程序给出了 255 的退出代码:

import Darwin
exit(-1)

当 Xcode 中的 运行 我得到 Program ended with exit code: 255;或者在编译时 运行 在命令行 echo $? 上生成 255;等。在某些时候 Int32(-1) 被 t运行 分类并解释为无符号 8 位整数。

我不知道这种转换发生在哪里(也许在达尔文的某个地方,或者当值被传递到主机 shell 或 OS 时?),但由于 exit() 是一个 Darwin 库函数(不是 Swift 语言特性),它已经特定于平台,为什么它被定义为采用 Int32 而不是 UInt8

因为它是标准的 C exit 函数,其原型如下:

void exit(int);

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

截断发生在 C exit 函数的某处。