memset手册说明:int类型还是常量字节?

时间:2019-05-03 08:38:14

标签: c types memset manual

我对memset及其manual's entry有疑问。这是我在memset手册中看到的内容:

   void *memset(void *s, int c, size_t n);
     

[...]

     

描述

     

memset()函数填充内存区域的前n个字节          指向s的常量字节c。

     

[...]

手册中说with the constant byte c,但是c是一个整数,其大小实际上取决于几个因素(编译器,体系结构...)。
在一般情况下,sizeof(int) > 1(通常为4)。

我的问题是:为什么c不是char,而sizeof的{​​{1}}总是1,因此对应于字节?
然后,边界条件下memset的“实际”行为是什么(未定义?)?
边界情况是指sizeof(int) = 4n=7的情况。

1 个答案:

答案 0 :(得分:1)

该标准的措词更好。

引用C11,第7.24.6.1章,

  

memset函数将c的值(转换为unsigned char)复制到s所指向的对象的前n个字符中。