Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не работает 'case' 
:(
    Опции темы
ZeusAtVingrad
Дата 26.5.2006, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.4.2006

Репутация: нет
Всего: нет



Цитата(Void @ 26.5.2006,  01:25)
Цитата(ZeusAtVingrad @  26.5.2006,  02:38 Найти цитируемый пост)
И чем в данном контексте отличаются: 'числ' и 'числ.'?

Тем, что четырые символа помещаются в int, а пять — нет.
Цитата(ZeusAtVingrad @  26.5.2006,  02:38 Найти цитируемый пост)
И вообще, что это за символьная константа с четырьмя (пятью) символами?  

Implementation defined.

Компилю gcc'шником такой код:
Код

main ()
{
int i = 'abcde';
char j = 'abcde';
}


Пока не оставил в одиночных кавычках по ОДНОМУ символу - компилер ругался. 
PM MAIL   Вверх
Replicator
Дата 26.5.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 30.4.2006
Где: Outer Heaven

Репутация: нет
Всего: нет



Ну и правильно! Апострофы служат для записи константного символа. В апострофах записывается символ - один символ и он имеет тип char. Ну как же в одном символе может быть 5 символов?! 
--------------------
 
PM WWW ICQ   Вверх
ZeusAtVingrad
Дата 26.5.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.4.2006

Репутация: нет
Всего: нет



Вот я об этом и спрашиваю: какие там "числ" и "числ."? 
PM MAIL   Вверх
Romikgy
Дата 26.5.2006, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(ZeusAtVingrad @  26.5.2006,  11:17 Найти цитируемый пост)
char j = 'abcde';

может 
Код

char *j = "abcde";
// or
char j[]="abcde";
 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Void
Дата 26.5.2006, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



ZeusAtVingrad, еще раз: в Си++ в одиночные кавычки можно поместить только один символ (или escape-последовательность). Поскольку в исходном сообщении 'числ' у тебя все-таки скомпилировался (но не работал), я сделал вывод, что ты пишешь на чистом Си. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
ZeusAtVingrad
Дата 26.5.2006, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.4.2006

Репутация: нет
Всего: нет



Исходное сообщение вообще не я писал.
Я тут просто пытаюсь DESert'а на чистую воду вывести с его константами 'числ' и 'числ.'
Типа вторая - не является константой int, а первая - является. Из-за того, что вторая - больше 4х байт, а первая - помещается в int.
Я вот и пытаюсь выяснить: или я что-то пропустил в С/С++ или человек заблуждается. 
PM MAIL   Вверх
Replicator
Дата 27.5.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 30.4.2006
Где: Outer Heaven

Репутация: нет
Всего: нет



Вообще, С и С++ - это 2 разных языка и они могут вести себя по-разному.

В С++, в апострофах может находиться один символ и это будет константа типа char.

С я не знаю, но если верить остальным, то в апострофах может находиться до 4 символов и это все является константой типа int. 
--------------------
 
PM WWW ICQ   Вверх
ZeusAtVingrad
Дата 27.5.2006, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.4.2006

Репутация: нет
Всего: нет



Ну уж в таких делах С и С++ ведут себя одинаково.
Я ж написал, что компилил gcc'шником (C-компилятор) - он на такие "константы" ругается. 
PM MAIL   Вверх
Любитель
Дата 27.5.2006, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Если не секрет, почему ты решил, что gcc - сишный компилер? (GNU Compiler Collection) 


--------------------
PM MAIL ICQ Skype   Вверх
ZeusAtVingrad
Дата 27.5.2006, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.4.2006

Репутация: нет
Всего: нет



Наверное потому что g++ - плюсовый.
В любом случае, и для C и для С++, 'abcde' - не является корректной символьной (хоть int хоть char) константой. 
PM MAIL   Вверх
Void
Дата 27.5.2006, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



ZeusAtVingrad, ладно, придется таки давить авторитетами smile
Стандарт ISO/IEC 9899:1999, известный как C99:
Цитата

6.4.4.4 Character constants
Syntax
1
character-constant:
  ' c-char-sequence '
  L' c-char-sequence '
c-char-sequence:
  c-char
  c-char-sequence c-char
c-char:
  any member of the source character set except
  the single-quote ', backslash \, or new-line character
  escape-sequence
<скипнут остаток BNF-грамматики>

Description
2    An integer character constant is a sequence of one or more multibyte characters enclosed
in single-quotes, as in 'x'. A wide character constant is the same, except prefixed by the
letter L. With a few exceptions detailed later, the elements of the sequence are any
members of the source character set; they are mapped in an implementation-defined
manner to members of the execution character set.

...
10    An integer character constant has type int. The value of an integer character constant
containing a single character that maps to a single-byte execution character is the
numerical value of the representation of the mapped character interpreted as an integer.
The value of an integer character constant containing more than one character (e.g.,
'ab'), or containing a character or escape sequence that does not map to a single-byte
execution character, is implementation-defined. If an integer character constant contains
a single character or escape sequence, its value is the one that results when an object with
type char whose value is that of the single character or escape sequence is converted to
type int.


Потом идем сюда, ставим C99 mode и компилируем. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
NextAlex
Дата 27.5.2006, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 10.8.2005
Где: Украина, г. Одесс а

Репутация: 2
Всего: 3



Цитата(Любитель @  27.5.2006,  21:35 Найти цитируемый пост)
Если не секрет, почему ты решил, что gcc - сишный компилер? (GNU Compiler Collection) 

как минимум потому что в зависимости от составления makefile он компилирует код как код C или код C++ или Java и т.д. можешь посмотреть там где накопал название smile и, мало того, пока он считается лучшим компилятором ...
кроме того человек, который использует gcc не может не знать как составляется makefile... 
--------------------
Говорила мама: "Учись играть на скрипке". Не хотел носить ноты - будешь носить пианино ...
PM MAIL ICQ   Вверх
Любитель
Дата 28.5.2006, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Я не имел ввиду, что в gcc нет сишного компилера, я имел ввиду, что там есть и другие компилеры (в частности C++) и чем именно проверял ZeusAtVingrad - это ещё вопрос.
Цитата

 мало того, пока он считается лучшим компилятором ...

Кем считается? 


--------------------
PM MAIL ICQ Skype   Вверх
ZeusAtVingrad
Дата 28.5.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.4.2006

Репутация: нет
Всего: нет



Чтобы откомилить файл с одной функцией main() безо всяких include - никаких makefile'ов не надо.
Достаточно:
gcc test.c

По поводу авторитетов:
Я язык по книгам и на практике осваива(л,ю).
Стандарты не читал.
В книгах и на практике все char-константы состоят из ОДНОГО символа.
И ещё вопрос:
"Стандарт ISO/IEC 9899:1999, известный как C99"
Он как соотносится с ANSI C?
Не то чтобы это наезд, просто я как-то всё время слышал об ANSI C, а ISO/... не знаю.
 
PM MAIL   Вверх
Любитель
Дата 28.5.2006, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Комитет ANSI теперь называется ISO, если я не ошибаюсь. А C99 - просто последний (на сегодня) стандарт C (есть ещё C8x, x - не помню, некоторые ориентируются на него, но данный момент в нём работает точно также). 


--------------------
PM MAIL ICQ Skype   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0921 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.