C语言出现‘char赋值自char*’无强制转换警告的问题问询
解决C语言棋盘赋值的类型不匹配警告
错误根源
你遇到的警告核心是类型不匹配:
board[i][j]是单个char类型变量,用于存储单个字符"."是C语言中的字符串字面量,本质是指向字符数组的char*指针
将指针赋值给单个char,编译器会把指针地址强制转为整数,因此触发警告。
修正方案
把字符串字面量"."改为单个字符字面量'.'(用单引号包裹),直接赋值单个字符:
board[i][j] = '.';
修正后的完整代码示例
int main() { int x = 5; int y = 5; char board[5][5]; // 填充棋盘初始空值 for(int i =0; i<x; i++){ for(int j =0; j<y; j++){ board[i][j] = '.'; // 此处修正为单引号字符 } } // 打印棋盘 for(int i=0; i<x; i++){ for(int j = 0; j<y; j++){ if(j<y-1){ printf("%c",board[i][j]); printf(" "); } else if(j == y-1){ // 额外提示:原代码是赋值操作=,需改为相等判断== printf("%c", board[i][j]); } printf("\n"); } } }
额外提示
虽然你提到后续处理打印格式,但还是指出一个逻辑错误:原代码中else if(j=y-1)是赋值操作,不是相等判断,会导致打印逻辑异常,需改为else if(j == y-1)。
内容的提问来源于stack exchange,提问作者Kush Patel
相关产品推荐
相关产品推荐

