2014-01-28 62 views
2

在C,如何将字符值赋给C中的整型变量?

... 
int num = 'a'; 
... 

我的问题很简单。如何将一个字符(如'0','a','b')赋给整型变量而不会在C语言中出现任何类型错误?

+1

搜索到'型casting' –

+1

@AnshDavid错误答案。问题中没有任何转换,“铸造”意味着使用明确的转换。 –

+0

@AnshDavid类型转换是当我写'(类型)值',以将'value'强制转换为'type'类型时。 – glglgl

回答

4

由于历史原因(主要是),字符常量是int类型的C.

但即使他们不一样

int num = 'a'; 

初始化或类似

num = 'a'; 
分配

仍然是完全合法的。任何数字类型的值可能被分配给任何(其他)数值类型的变量,并且该值将被隐式转换(这可能涉及表示的改变和/或溢出的风险)。

char及其亲属unsigned charsigned char是数字类型,特别是整数类型。

2

该字符只是一个整数值的表示形式。例如,'0'可以写成0x3048'a'0x6197替代,等等

所以分配是完全有效的。

0

你可以。 C字符常量是int。这使得它与C++有点不同。

0

看一看herehere。每个字符都是一个数字,实际上计算中的所有内容都是数字,只是其中的一些(取决于类型和值)呈现为字符。

对于存储字符变量类型应该是charwchar_t但它可以是任何其他类型,因为它们都只是内存中的一个数字。

0

(对不起,我读的问题错了,写了一个评论,我的坏)----->

int main() 
{ 

    int num = 'a'; 
    printf("%c", num); 
return 0; 
} 

输出

a