int main()
{
int array[10];
memset(array, INT_MIN, sizeof(array));
cout << INT_MIN << endl;
for (int i = 0; i < 10; i++)
cout << array[i] << endl;
system("pause");
}
就像这样,当我使用“ memset(array,-1,sizeof(array))”时,我会得到正确的结果。但是,当我使用INT_MIN而不是-1时,所有输出均为0,但INT_MIN应该为-2147483648: 输出: results image
答案 0 :(得分:4)
memset
的“问题”在于它没有填写您提供的int,而是其unsigned char
的转换。参见here:
要设置的值。该值以int形式传递,但函数填充 使用该值的无符号char转换的内存块。
由于此,如果将其INT_MIN
用作第二个参数,则最终将得到0
。对于此特定任务,恐怕memset
并不是正确的工作工具,因为它会逐个设置每个字节,因此不允许您随意设置int,除非所需的模式包括相同的字节一遍又一遍,在这里不是这种情况。
答案 1 :(得分:4)
说明:
memset(array, INT_MIN, sizeof(array));
通过强制转换:(无符号字符)INT_MIN的结果来设置每个字节,因为它按字节操作,而不是数组元素。