2017-03-17 139 views
-6
#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声明的区别是什么?哪一个是正确的?这两个char声明有什么区别?哪一个是正确的?

+1

正确的是什么情况? –

+0

如果您希望两者都得到相同的结果,请执行'char ch = 49'(因为49是'1'的ASCII码) – Dominique

+0

更好的学习方法是运行代码。或者,更好的方法是获取一本'c'书并学习。 – KevinDTimm

回答

3

的第一段代码分配字符'1',其具有ASCII值为49.将其作为字符打印将产生1,而作为数字打印将产生49

第二段代码分配值1.将它打印为字符会产生一个带有实现定义表示的不可打印字符,而将其打印为数字将产生1

至于哪个“正确”,取决于你想如何使用它。

2

第一个,

char c = '1'; 

是指派的1 (decimal 49)第二个中的ASCII值,

char c = 1; 

被分配ASCII值1 (decimal 1, SOH "start of heading")

因此,现在,不要问哪一个是正确的,你可以决定,因为两者都是有效的,所以哪个是正确的取决于你的意图。

+0

当然,“1”的值是实现定义的,不一定是ASCII。 –

0

有一个ascii表,你应该注意char '1' != 1

在十进制值'1'49

正确的方法是使用单引号为所需的炭像这样

char c = 'a'