c - 为什么 memset 采用 int 而不是 char?

标签 c memset

为什么 memsetint 作为第二个参数而不是 char,而 wmemset 将一个wchar_t 而不是像 longlong long 这样的东西?

最佳答案

memset 早于(相当多)将函数原型(prototype)添加到 C。没有原型(prototype),您不能传递 char 到一个函数——当/如果你尝试,当你传递它时它会被提升为 int,函数接收的是一个 int

还值得注意的是,在 C 中(但在 C++ 中不是)像 'a' 这样的字 rune 字具有 char 类型-- 它的类型为 int,因此您传递的内容通常无论如何都会以 int 开头。本质上,它以 char 开始并获得提升的唯一方法是传递 char 变量。

理论上,memset 可能会被修改,因此它接收一个 char 而不是 int,但不太可能有任何好处,并且很有可能破坏一些旧代码或其他代码。由于未知但可能相当高的成本,并且几乎没有任何真正好处的机会,我会说它被更改为接收 char 的机会恰好在“ slim ”和“没有”。

编辑(回应评论):intCHAR_BIT 最低有效位用作写入目标的值。

关于c - 为什么 memset 采用 int 而不是 char?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44170911/

相关文章:

c - 在socket编程c中,为什么我们使用memset将值0填充到结构体中?

c++ - 初始化 itimerspec 结构 - memset 是一个不错的选择吗?

c - Azure Iot Hub C 客户端上传到 Blob 因 X.509 身份验证失败

c - 对完成 struct wordcounter 的 sizeof 应用无效

c++ - 二维数组中的 Memset

c++ - memset() 在构造函数中初始化对象?

c++ - 如何在 C/C++ 中将 long long 转换为 unsigned int

C指向结构中数组的指针传递给函数

python - 哪些 native python 模块是用 C 编写的?

ios - OBJ-C 在无效之前删除 NSData 内容