2014-01-28 2 views
2

В CКак назначить значение символа целочисленной переменной типа в C?

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

Мой вопрос прост. Как вы можете назначить символ, такой как '0', 'a', 'b' для переменной целочисленного типа, не получая никакой ошибки типа на языке C?

+1

поиск в 'типа casting' –

+1

@AnshDavid Неправильный ответ. В вопросе нет никакого преобразования, а «кастинг» означает использование явного преобразования. –

+0

@AnshDavid Тип casting - это когда я пишу '(type) value', чтобы отличить' значение' в type 'type'. – glglgl

ответ

4

По историческим причинам (в основном), символьные константы имеют тип int в С.

Но даже если они не были, как инициализация

int num = 'a'; 

или присвоение как

num = 'a'; 

все равно будет совершенно законным. Значение любого числового типа может быть присвоено переменной любого (другого) числового типа, и значение будет неявно преобразовано (что может включать изменение представления и/или риск переполнения).

И char, а также его родственники unsigned char и signed char, являются числовыми типами, в частности целыми типами.

2

Символ является только представлением целочисленного значения. Например, '0' можно записать в виде 0x30 или 48, 'a' является альтернативой для 0x61 или 97 и т.д.

Так присваивание вполне допустимо.

0

Вы можете. В константе символа C указывается тип int. Это немного отличается от C++.

0

Посмотрите here и here. Каждый символ - это число, на самом деле все в вычислениях - это числа, только некоторые из них (в зависимости от типа и значения) отображаются как символы.

Для хранения символов тип переменной должен быть char или wchar_t, но это может быть любой другой тип, потому что все они всего лишь цифры в памяти.

0

(жаль, что я прочитал вопрос неправильно и написал комментарий, мой плохой) ----->

int main() 
{ 

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

ВЫВОД

a 
Смежные вопросы