在 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
函数的某处。
这个完整的 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
函数的某处。