Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
astatium135
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 7
#1

Правила описания спецсимволов в строке - C++

27.09.2013, 13:08. Просмотров 527. Ответов 8
Метки нет (Все метки)

Здравствуйте! У меня такая проблема: есть код, работу которого нужно пояснить преподавателю

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
char input[] = "sstealch1\1\11s\1wllliw1";
 
int main()
{ 
int i,c;
for ( i=2; (c=input[i]) !='\0'; i++) 
{
    switch(c)
    {
        case 'a': putchar(c); continue;
        case '1': break;
        case 1 : while( (c=input[++i]) != '\1' && c != '\0');
        case 9 : putchar('s');
        case 'w':
        case 'l': continue;
        default : putchar(c); continue;
    }
    putchar(' ');
}  
putchar('\n'); 
return 0;
}
Не могу пояснить лишь ПОЧЕМУ "\11" обрабатывается как \011 (в восьмеричной системе). Проверка показала, что \(число) обрабатывается в 8х системе, \x(число) в 16х , хотя по идее должно быть \0(число), \0х(число). Кто может пояснить, ПОЧЕМУ, подскажите пожалуйста.
P.S. Если имеет значение, среда Visual Studio 2010 Ultimate лицензия DreamsSpark'a.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,049
Завершенные тесты: 1
27.09.2013, 13:22     Правила описания спецсимволов в строке #2
Цитата Сообщение от astatium135 Посмотреть сообщение
хотя по идее должно быть \0(число)
\0 - это вообще символ конца строки

Добавлено через 1 минуту
\(число) - такого литерала вообще не существует в природе (по моему)
astatium135
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 7
27.09.2013, 13:22  [ТС]     Правила описания спецсимволов в строке #3
Цитата Сообщение от Raali Посмотреть сообщение
\0 - это вообще символ конца строки
C++
1
2
3
4
5
6
int main()
{   
    cout<<"\x09";
    system("pause");
    return 0;
}
табуляцию выводит

\(число) - в смысле \5, \13 и т.д
Raali
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,049
Завершенные тесты: 1
27.09.2013, 13:23     Правила описания спецсимволов в строке #4
Цитата Сообщение от astatium135 Посмотреть сообщение
cout<<"\x09";
дак здесь нету \0
astatium135
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 7
27.09.2013, 13:30  [ТС]     Правила описания спецсимволов в строке #5
C++
1
2
3
4
5
6
int main()
{   
    cout<<"\011";
    system("pause");
    return 0;
}
эквивалентен

C++
1
2
3
4
5
6
int main()
{   
    cout<<"\11";
    system("pause");
    return 0;
}
Можешь пояснить, почему
Raali
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,049
Завершенные тесты: 1
27.09.2013, 13:31     Правила описания спецсимволов в строке #6
Цитата Сообщение от astatium135 Посмотреть сообщение
ПОЧЕМУ "\11" обрабатывается как \011 (в восьмеричной системе).
ну вообще 11 и 011 это одни и те же числа - по этому так же и обрабатывается
формат 8-ричного литерала может быть такой
\ number
\ number number (\11)
\ number number number (\011)
astatium135
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 7
27.09.2013, 13:34  [ТС]     Правила описания спецсимволов в строке #7
Цитата Сообщение от ForeverSucks Посмотреть сообщение
могу там где слэш существует эквивалентность по отношению к систем
А по понятней?

Добавлено через 2 минуты
Цитата Сообщение от Raali Посмотреть сообщение
ну вообще 11 и 011 это одни и те же числа - по этому так же и обрабатывается
формат 8-ричного литерала может быть такой
\ number
\ number number
\ number number number
12345 - десятеричное
012345 - восьмеричное
0x12345 - шестнадцатеричное

Вопрос: Почему в строке по-другому?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2583 / 235
Регистрация: 01.11.2011
Сообщений: 6,375
Завершенные тесты: 1
27.09.2013, 13:34     Правила описания спецсимволов в строке #8
Цитата Сообщение от astatium135 Посмотреть сообщение
sstealch1\1\11s\1wllliw1
прочтется как
Код
's' 's' 't' 'e' 'a' 'l' 'c' 'h' '1' 'SOH' 'SOH' '1' 's' 'SOH' 'w' 'l' 'l' 'l' 'i' 'w' '1'
http://www.island-formoza.ru/arhitek...-simvolov.html
И подумайте зачем вам это надо?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2013, 13:37     Правила описания спецсимволов в строке
Еще ссылки по теме:

C++ Нужен пример описания любого класса
Классы для описания больницы (обсуждение) C++
C++ Напишите грамматику для описания логических выражений
C++ Разработать класс для описания и работы с треугольником
C++ Найти ошибку в программе описания стран

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Raali
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,049
Завершенные тесты: 1
27.09.2013, 13:37     Правила описания спецсимволов в строке #9
Цитата Сообщение от astatium135 Посмотреть сообщение
0x12345 - шестнадцатеричное
Вопрос: Почему в строке по-другому?
в случае с последним в строку придется пихать 0 и x - зачем лишние символы ("\xFF"(4 байта) или "\x0xFF" (5 байт))
Yandex
Объявления
27.09.2013, 13:37     Правила описания спецсимволов в строке
Ответ Создать тему
Опции темы

Текущее время: 04:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru