在 C++ 中将 memset 设置为 INT_MAX

kma*_*729 1 c c++ memset

我有以下代码:

int board[5][5];

memset(board, INT_MAX, sizeof(board));
//printing out INT_MAX
cout << INT_MAX << endl;

for(int r = 0; r < 5; r++) {
        for(int c = 0; c < 5; c++) {
            cout << setw(3) << board[r][c];
        }   
        cout << endl;
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我-1在我的数组中获取了所有s:

2147483647
 -1 -1 -1 -1 -1
 -1 -1 -1 -1 -1
 -1 -1 -1 -1 -1
 -1 -1 -1 -1 -1
 -1 -1 -1 -1 -1
Run Code Online (Sandbox Code Playgroud)

我该如何解释?为什么不是所有元素都设置为 INT_MAX?当我打印时,INT_MAX它打印得很好。

Sam*_*hik 5

to 的第二个参数memset()是一个字节。memset()不会用ints填充指定的内存区域,而是用单个字节。

如果要初始化sboard数组,int则必须使用与测试程序用于打印其内容相同类型的循环来执行此操作。