c - 为什么 char 不能工作,但 int 可以
问题描述
char array[]= {1,2,3,4,5,6,7,8,9,1,2,3,6,7};
printf("%c\n", array[5]);
这将返回“”。只有当我将 char 更改为 int 时,它才会打印“5”。我tot char可以接受从-128到127的数字吗?
int array[]= {1,2,3,4,5,6,7,8,9,1,2,3,6,7};
printf("%i\n", array[5]);
解决方案
当您打印 时char
,C 假定存储的值应该代表ASCII编码的文本。访问array[5]
产生6
对应于 ASCII 值的值ACK
。此字符不可打印,这就是您看不到输出的原因。
字符 由6
ASCII 值表示54
。要生成此值,请使用char
文字'6'
。
例如,尝试将您的数组初始化为:
char array[]= {'1','2','3','4','5','6','7','8','9','1','2','3','6','7'};
这将导致您期望的行为。
%i
或者,您可以通过在第一个代码段中使用标志代替,将字符打印为格式化整数%c
。
推荐阅读
- angularjs - 为什么我在尝试访问公共 API 时会在 CORS 上被阻止?
- numpy - 读写numpy嵌套数组
- python - 从 0 和 1 的字符串创建一组字符串,其中只有两个字符被更改(python)
- python - 使 pandas df 索引连续
- php - password_verify - 密码与哈希不匹配
- typescript - 如何使用我自己的声明文件解决“找不到模块的声明文件”错误?
- java - 如何将精灵的坐标附加到它的中心?LibGDX
- python - AttributeError:模块“django.db.models”没有属性“RichTextField”
- php - 如何恢复用户在下拉列表中的点击
- java - 在 Payara 5.194 for java ee 7 应用程序上重新部署失败