'ab' - это int?
От: Аноним  
Дата: 13.11.09 07:27
Оценка:
Собственно вопрос: почему компилируется:
int i = 'ab';

Как вообще может пропускаться компилятором 'ab' и почему эта штука воспринимается именно как int?
Компилятор MS VS 2008. Так и должно быть по стандарту или студия не права?
Попробовал еще вот так:
int i = '\x5\x1\x0\x0';

Тут в i записывается 261. Я так понял, что это единица даёт 256 + 5. Это такая фишка языка для побайтового указания целых чисел?
Re: 'ab' - это int?
От: Bell Россия  
Дата: 13.11.09 07:54
Оценка: 1 (1)
Здравствуйте, Аноним, Вы писали:

2.13.2/1
A character literal is one or more characters enclosed in single quotes, as in ’x’, optionally preceded by the letter L, as in L’x’. A character literal that does not begin with L is an ordinary character literal, also referred to as a narrow-character literal. An ordinary character literal that contains a single c-char has type char, with value equal to the numerical value of the encoding of the c-char in the execution character set.
An ordinary character literal that contains more than one c-char is a multicharacter literal. A multicharacter literal has type int and implementation-defined value.

Любите книгу — источник знаний (с) М.Горький
Re[2]: 'ab' - это int?
От: Шебеко Евгений  
Дата: 16.11.09 16:45
Оценка:
B>

B>An ordinary character literal that contains more than one c-char is a multicharacter literal. A multicharacter literal has type int and implementation-defined value.


Блин, век живи — век учись!
А нафига они вообще такой синтаксис сделали?
Т.е. зачем реально нужен такой литерал с несколькими символами?
Re[3]: 'ab' - это int?
От: Alexander G Украина  
Дата: 16.11.09 17:00
Оценка:
Здравствуйте, Шебеко Евгений, Вы писали:

B>>

B>>An ordinary character literal that contains more than one c-char is a multicharacter literal. A multicharacter literal has type int and implementation-defined value.


ШЕ>Блин, век живи — век учись!

ШЕ>А нафига они вообще такой синтаксис сделали?
ШЕ>Т.е. зачем реально нужен такой литерал с несколькими символами?

В некоторых форматах файлов часто используются четырехбайтовые сигнатуры из букв, типа FourCC кодов в avi файлах. Такой литерал удобен тем, что compile-time константа целочисленного типа (можно в switch использовать) и тем, что без \0 в конце.
Другое дело, что "implementation-defined value" предотвращает от использования их в переносимом коде.
Русский военный корабль идёт ко дну!
Re[4]: 'ab' - это int?
От: Шебеко Евгений  
Дата: 16.11.09 17:09
Оценка:
AG>В некоторых форматах файлов часто используются четырехбайтовые сигнатуры из букв, типа FourCC кодов в avi файлах. Такой литерал удобен тем, что compile-time константа целочисленного типа (можно в switch использовать) и тем, что без \0 в конце.
AG>Другое дело, что "implementation-defined value" предотвращает от использования их в переносимом коде.

Как-то всё же странно из-за такой ерунды лепить такое в язык.
У меня было предположение, что может это с восточными языками связано.
Типа simplified china.
Re: 'ab' - это int?
От: ononim  
Дата: 16.11.09 20:04
Оценка:
int i = 'a';

работает, почему бы не сделать 'ab' ?
Как много веселых ребят, и все делают велосипед...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.