为什么 memset
将 int
作为第二个参数而不是 char
,而 wmemset
将一个wchar_t
而不是像 long
或 long long
这样的东西?
最佳答案
memset
早于(相当多)将函数原型(prototype)添加到 C。没有原型(prototype),您不能传递 char
到一个函数——当/如果你尝试,当你传递它时它会被提升为 int
,函数接收的是一个 int
。
还值得注意的是,在 C 中(但在 C++ 中不是)像 'a'
这样的字 rune 字不具有 char
类型-- 它的类型为 int
,因此您传递的内容通常无论如何都会以 int
开头。本质上,它以 char 开始并获得提升的唯一方法是传递 char
变量。
理论上,memset
可能会被修改,因此它接收一个 char
而不是 int
,但不太可能有任何好处,并且很有可能破坏一些旧代码或其他代码。由于未知但可能相当高的成本,并且几乎没有任何真正好处的机会,我会说它被更改为接收 char
的机会恰好在“ slim ”和“没有”。
编辑(回应评论):int
的 CHAR_BIT
最低有效位用作写入目标的值。
关于c - 为什么 memset 采用 int 而不是 char?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5919735/