首页 > 解决方案 > 为什么 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]);

标签: ccharint

解决方案


当您打印 时char,C 假定存储的值应该代表ASCII编码的文本。访问array[5]产生6对应于 ASCII 值的值ACK。此字符不可打印,这就是您看不到输出的原因。

字符6ASCII 值表示54。要生成此值,请使用char文字'6'

例如,尝试将您的数组初始化为:

char array[]= {'1','2','3','4','5','6','7','8','9','1','2','3','6','7'};

这将导致您期望的行为。

%i或者,您可以通过在第一个代码段中使用标志代替,将字符打印为格式化整数%c


推荐阅读