代码如下,打印结果全为 -1
#include<stdio.h>
#include<string.h>
#define INF 0x7fffffff
int main()
{
int dp[10];
memset[dp, INF, 10*sizeof(int)];
for(int i = 0; i < 10; i++){
pritnf("%10d ", dp[i]);
}
}
原因是 memset 函数是按字节赋值的,取 0x7fffffff
的低 8 位 0xff
按字节流进行赋值,而 int 有四个字节,所以就变成了 0xffffffff
,也就是 -1。
memset 函数适合初始化 0 或 -1,如果是其他值,还是老老实实用 for 循环吧。