#include<stdio.h>
int main( )
{
char ch = '1' ;
printf ( "\n%d %c\n", ch, ch ) ;
return 0;
}
#include<stdio.h>
int main( )
{
char ch = 1 ;
printf ( "\n%d %c\n", ch, ch ) ;
return 0;
}
这两个char声明有什么区别?哪一个是正确的?
答案 0 :(得分:3)
第一段代码分配字符'1'
,其ASCII值为49.将此字符作为字符打印将生成1
,而作为数字打印将生成49
第二段代码分配值1.将其打印为字符会产生具有实现定义表示的不可打印字符,而将其打印为数字将产生1
。
至于哪个是“正确的”,这取决于你想如何使用它。
答案 1 :(得分:2)
第一个,
char c = '1';
将第二个 ascii值 1 (decimal 49)分配,
char c = 1;
正在分配 ascii值 1 (decimal 1, SOH "start of heading")。
所以现在,不要问哪一个是正确的,你可以决定,因为两者都是有效的,所以这是正确的取决于你的意图。
答案 2 :(得分:0)
有一个ascii表,你应该注意char '1' != 1
。
'1'
为49
正确的方法是使用单引号作为所需的字符,如此
char c = 'a'