C printf array int匹配格式
C printf array int matching format
这个c代码
int rhdDEboard2(){
int board[64]={0};
int rc;
printf("\n");
for (rc=0;rc<8;rc++)
printf("\t %i %i %i %i %i %i %i %i\n",board[rc]);
printf("\n");
return 0;
}
在 Win8 PC 中使用 MinGW 编译出现此错误:
: 警告:格式 '%i' 需要一个匹配的 'int' 参数 [-Wformat]
我不明白为什么! board 数组被声明为 int 类型……不是吗?
(C 是否将数组视为指针类型?)。我试过使用 %p 作为格式说明符,但这不起作用,使用 %d 也没有用。我明白警告说的是什么,但不明白它为什么这么说,也不知道如何解决它,我觉得我一定错过了一些非常基本、简单和直接的东西,但我不明白这个编译器 warning.I 很感激寻求帮助,试图让我理解这个 C 编译器警告以及我应该如何修复它..非常感谢
正如评论者所说,您应该尝试任何一种方式。
int rhdDEboard2() {
int board[64]={0};
int i,j;
printf("\n");
for (i=0;i<8;i++) {
printf("\t");
for(j=0;j<8;j++)
printf(" %i",board[(i*8)+j]);
printf("\n");
}
printf("\n");
return 0;
}
或
int rhdDEboard2() {
int board[64]={0};
int rc;
printf("\n");
for (rc=0; rc<64; rc+=8)
printf("\t %i %i %i %i %i %i %i %i\n",
board[rc] ,board[rc+1],board[rc+2],board[rc+3],
board[rc+4],board[rc+5],board[rc+6],board[rc+7] );
printf("\n");
return 0;
}
这个c代码
int rhdDEboard2(){
int board[64]={0};
int rc;
printf("\n");
for (rc=0;rc<8;rc++)
printf("\t %i %i %i %i %i %i %i %i\n",board[rc]);
printf("\n");
return 0;
}
在 Win8 PC 中使用 MinGW 编译出现此错误: : 警告:格式 '%i' 需要一个匹配的 'int' 参数 [-Wformat]
我不明白为什么! board 数组被声明为 int 类型……不是吗? (C 是否将数组视为指针类型?)。我试过使用 %p 作为格式说明符,但这不起作用,使用 %d 也没有用。我明白警告说的是什么,但不明白它为什么这么说,也不知道如何解决它,我觉得我一定错过了一些非常基本、简单和直接的东西,但我不明白这个编译器 warning.I 很感激寻求帮助,试图让我理解这个 C 编译器警告以及我应该如何修复它..非常感谢
正如评论者所说,您应该尝试任何一种方式。
int rhdDEboard2() {
int board[64]={0};
int i,j;
printf("\n");
for (i=0;i<8;i++) {
printf("\t");
for(j=0;j<8;j++)
printf(" %i",board[(i*8)+j]);
printf("\n");
}
printf("\n");
return 0;
}
或
int rhdDEboard2() {
int board[64]={0};
int rc;
printf("\n");
for (rc=0; rc<64; rc+=8)
printf("\t %i %i %i %i %i %i %i %i\n",
board[rc] ,board[rc+1],board[rc+2],board[rc+3],
board[rc+4],board[rc+5],board[rc+6],board[rc+7] );
printf("\n");
return 0;
}