这两个char的声明有什么区别?哪一个是正确的?

时间:2017-03-17 13:18:40

标签: c

#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声明有什么区别?哪一个是正确的?

3 个答案:

答案 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'