C printf数组int匹配格式

时间:2015-02-19 01:16:54

标签: c format-specifiers

此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。我理解警告说的是什么,但不是为什么它说的,也不是如何解决它,并且觉得我必须在这里遗漏一些非常基本,简单和直接的东西,但是我不理解这个编译器的警告。我很感激你的帮助尝试让我理解这个C编译器警告以及我应该如何解决它..非常感谢

1 个答案:

答案 0 :(得分:0)

正如评论者所说,你应该尝试任何一种方式。

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;
}