Russian Qt Forum
Ноябрь 23, 2024, 08:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: А вот еще мелочь еще менее известная)  (Прочитано 5768 раз)
OKTA
Гость
« : Февраль 14, 2014, 12:23 »

Что будет на выходе?)

Код:
int main () 
{
    char *c;
    *c = 'A';
    printf("%c\n", 0[c]);
    printf("%c\n", c[0]);

    return 0;

}
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Февраль 14, 2014, 12:42 »

будет краш. а оба варианта индексации тождественны (хотя вариант 0[c] никогда в реальном коде не встречал).
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Февраль 14, 2014, 14:24 »

неинициализированный указатель, насколько я помню, - UB.
Записан
OKTA
Гость
« Ответ #3 : Февраль 14, 2014, 14:55 »

В целом, код валиден только для си и в с++ будет откидываться с ворнингом на то, что указатель не инициализирован и нельзя присваивать char в char*, но хотел обратить внимание именно на индексацию  Смеющийся
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Февраль 14, 2014, 17:52 »

но хотел обратить внимание именно на индексацию  Смеющийся

Об этом обычно не рассказывают, но можно допереть и самому, т.к.
Код:
a[i]
логически раскладывается в *(a + i). Ну раз пошла такая пьянка, то вот пример получше. Что напечатает? Чистый Си.

Код
C
int main()
{
   int a[] = <%3,01%>;
   printf("%d\n", 1<:a:>);
 
   return 0;
}
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #5 : Февраль 15, 2014, 11:30 »

В целом, код валиден только для си и в с++ будет откидываться с ворнингом на то, что указатель не инициализирован
В чистом С тот же варинг
Цитировать
и нельзя присваивать char в char*,
А тут ничего подобного нет.
Записан
OKTA
Гость
« Ответ #6 : Февраль 15, 2014, 14:21 »

но хотел обратить внимание именно на индексацию  Смеющийся

Об этом обычно не рассказывают, но можно допереть и самому, т.к.
Код:
a[i]
логически раскладывается в *(a + i). Ну раз пошла такая пьянка, то вот пример получше. Что напечатает? Чистый Си.

Код
C
int main()
{
   int a[] = <%3,01%>;
   printf("%d\n", 1<:a:>);
 
   return 0;
}

OMG, стыд и срам!) что это? <:a:>, <%3,01%>??) где почитать?))))))
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Февраль 16, 2014, 22:45 »

OMG, стыд и срам!) что это? <:a:>, <%3,01%>??) где почитать?))))))

Если ты не знаешь что это, следовательно не читал стандарт, хотя это стоило бы сделать, потому что об этом обычно вообще не рассказывают на обучении. Банальный поиск "<%" по http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf сразу даёт ответ Улыбающийся Так что напечатает?
« Последнее редактирование: Февраль 17, 2014, 00:19 от Alex Custov » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #8 : Февраль 16, 2014, 23:04 »

печатает 1 ибо 1[a] Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
OKTA
Гость
« Ответ #9 : Февраль 17, 2014, 09:08 »

Да, 1)) Спасибо  Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Февраль 17, 2014, 14:25 »

Если ты не знаешь что это, следовательно не читал стандарт, хотя это стоило бы сделать, потому что об этом обычно вообще не рассказывают на обучении. Банальный поиск "<%" по http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf сразу даёт ответ Улыбающийся Так что напечатает?
Ну и когда Вы использовали такой сынтаксыс в последний раз? Улыбающийся

OMG, стыд и срам!) что это? <:a:>, <%3,01%>??) где почитать?))))))
Нет никакого стыда/срама. Сам автор библии говорит что узнал о языке много нового. Др словами мы никогда не будем знать "все" о языке - и это хорошо, чтобы не пропадал интерес.
Записан
OKTA
Гость
« Ответ #11 : Февраль 17, 2014, 14:32 »

 Улыбающийся affirmative  Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.192 секунд. Запросов: 23.