C语言printf内同时调用两个变量时第二个值为null如何解决
错误原因
- 变量类型与赋值不匹配:你声明
PL为char单字符类型,但双引号包裹的"C"是C语言中的字符串常量,本质是指向字符数组首地址的const char*类型,不能直接赋值给char类型变量。 - 格式化占位符与参数类型不匹配:
printf的%s占位符要求传入字符串的首地址,传入类型不匹配的PL变量会触发未定义行为,最终输出(null)。
修复方案
方案1:单字符存储
如果仅需要存储单个字符标识编程语言,修改如下:
#include <stdio.h> #include <stdlib.h> int main() { int myAge = 10; char PL = 'C'; // 单字符用单引号包裹 printf("I am Rydex (not my real name) and i am %d years old. This was made using %c", myAge, PL); // 占位符改为对应单字符的%c return 0; }
方案2:字符串存储
如果后续需要存储更长的编程语言名称(如"Java"、"Python"等),修改如下:
#include <stdio.h> #include <stdlib.h> int main() { int myAge = 10; const char* PL = "C"; // 变量类型修改为字符串指针类型 printf("I am Rydex (not my real name) and i am %d years old. This was made using %s", myAge, PL); // 占位符%s无需修改 return 0; }
内容的提问来源于stack exchange,提问作者Rydex
相关产品推荐
相关产品推荐

