为什么memset
采取一个int
作为第二个参数而不是char
, 然而wmemset
需要一个wchar_t
而不是类似的东西long
or long long
?
memset
早于(相当多)将函数原型添加到 C 中。没有原型,您can't pass a char
到一个函数——当/如果你尝试,它会被提升为int
当你传递它时,函数接收到的是int
.
还值得注意的是,在 C 中(但不是在 C++ 中)像这样的字符文字'a'
does not有类型char
-- 它有类型int
,所以你通过的将会usually开始作为int
反正。本质上,它作为一个字符开始并获得晋升的唯一方法是如果你通过一个char
多变的。
理论上,memset
可能会被修改,因此它会收到一个char
而不是int
,但不太可能有任何好处,并且很有可能破坏一些旧代码或其他代码。由于成本未知但可能相当高,而且几乎没有机会获得任何真正的好处,我想说它被改变以获得char
正好位于“苗条”和“无”之间的界线上。
价值memset
写入目标的是将其第二个参数的值转换为unsigned char
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)