C语言char变量if判断报指针与整数比较警告如何解决
问题原因与解决方法
你代码中存在两处核心错误:
- 第一处:
scanf传参不符合语法要求
scanf读取字符输入时,需要传入变量的内存地址才能将输入值写入对应变量,你代码中scanf("%c",q_ai);直接传递了q_ai的变量值,需要修改为scanf("%c",&q_ai);
- 第二处:字符比较逻辑类型不匹配
双引号包裹的
"y"、"n"是字符串常量,本质是指向字符数组的内存地址指针,无法和char类型的单字符变量q_ai直接比较。需要改为单引号包裹的字符常量'y'、'n'。
修正后的完整代码
//INPUT TRY 0 修正版 #include <stdio.h> #include <stdlib.h> #include <string.h> //setting game: char q_ai; //want to play against ai? question about ai. int main(void) { printf("Do you want to play vs AI? \n Y/N? \n "); scanf("%c",&q_ai); printf("q_ai == %c\n",q_ai); printf("sizeof(q_ai): %d",sizeof(q_ai)); if(q_ai=='y') { printf("you will play against AI"); } if(q_ai=='n') { printf("you will play 1v1"); } }
修改后运行即可正常读取用户输入,if分支判断也可以正常触发。
内容的提问来源于stack exchange,提问作者Riemann
相关产品推荐
相关产品推荐

