HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Вопрос к знатокам С
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34563
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Вопрос к знатокам С

Как вы думаете, скомпилится ли такой код?

C++ Source Code:
char *ptr = NULL;
size_t offset = 123;
ptr = ptr + + + + + + offset;

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 136635

Старое сообщение 21-04-2014 04:54
-
marikcool
Житель форума

Дата регистрации: Jul 2011
Проживает: kz
Сообщений: 1522
Возраст: 38

Рейтинг



скомпилится

__________________
vk.com/skullcapstudios

Сообщить модератору | | IP: Записан
Сообщение: 136636

Старое сообщение 21-04-2014 04:58
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32259
Нанёс повреждений: 392 ед.

Рейтинг



Один крест лишний. Результат подобных фокусов заранее не определён и на практике никому не нужен.
Это как на башорге написали "функция подергивания" ++ptr--;

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 136639

Старое сообщение 21-04-2014 06:19
-
Government-Man
Призрак

Дата регистрации: Apr 2006
Проживает: N/A
Сообщений: 3507

Рейтинг



Награды
 
[1 награда]


честно говоря не знаю - никогда не писал подобного кода

Сообщить модератору | | IP: Записан
Сообщение: 136640

Старое сообщение 21-04-2014 06:28
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34563
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
marikcool писал:
скомпилится

См. скрытый текст.
Цитата:
Government-Man писал:
честно говоря не знаю - никогда не писал подобного кода

Дык и я не писал. А потом гляжу в сорцы Кармака - а там такое, такое!

Добавлено 21-04-2014 в 14:53:

Цитата:
Дядя Миша писал:
Один крест лишний

Ты на вопрос ответь, скомпилится или нет.
Вот именно в таком виде, как у меня.
А потом проверь себя.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 136641

Старое сообщение 21-04-2014 07:53
-
DEAD MAN
Mono

Группа: Опытный
Дата регистрации: Oct 2005
Проживает: Tallinn
Сообщений: 1232
Возраст: 32

Рейтинг



Да, если byte будет заглавными буквами написан? //сказал профан Си.

Сообщить модератору | | IP: Записан
Сообщение: 136644

Старое сообщение 21-04-2014 08:03
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34563
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
DEAD MAN писал:
Да, если byte будет заглавными буквами написан?

Да, там, конечно же, должен быть стандартный тип. Я просто к типам волатилы уже привык.
Поправил первый пост.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 136646

Старое сообщение 21-04-2014 08:23
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32259
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
XaeroX писал:
Ты на вопрос ответь, скомпилится или нет.

ну я же говорю - один крест лишний. Но вполне допускаю, что скомпилится.
Эти инкременты вообще очень стрёмная штука, я даже не уверен что компилятор как-то контролирует число плюсов\минусов. Или делает это не для всех случаев. Во всяком случае вот такая конструкция
C++ Source Code:
++ptr++ + ++ptr++;

компилится без проблем, только смысл в ней?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 136656

Старое сообщение 21-04-2014 12:41
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34563
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
Эти инкременты вообще очень стрёмная штука

Товарищи, объясните, пожалуйста, Дяде Мише, что в моём примере нет операций инкремента. А то он, по всей видимости, си пока знает довольно плохо, "++" от "+ +" отличить не может.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 136659

Старое сообщение 21-04-2014 13:07
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32259
Нанёс повреждений: 392 ед.

Рейтинг



Да оно и вот так компилится

C++ Source Code:
char *ptr = NULL;
size_t offset = 123;
ptr = ptr + + + + + + + - - - offset;

Цитата:
XaeroX писал:
"++" от "+ +" отличить не может.

дык, кто тебя знает, может ты нарочно пробелов наставил.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 136663

Старое сообщение 21-04-2014 13:24
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34563
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
Дядя Миша писал:
дык, кто тебя знает, может ты нарочно пробелов наставил.

Ну вот откуда эта привычка додумывать за других?
---------------
Всё, вопрос снят, я совершенно забыл про унарный плюс.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 136668

Старое сообщение 21-04-2014 13:39
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32259
Нанёс повреждений: 392 ед.

Рейтинг



Ну хорошо, хоть про унарный минус не забыл

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 136671

Старое сообщение 21-04-2014 13:52
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34563
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Так вот в твоём примере увидел унарный минус и сразу понял, в чём разгадка.
От этого унарного плюса пользы мало - только принудительный integer promotion, а он нужен чуть реже чем никогда.
Забавно, что остальным на форуме тоже в голову эта простая разгадка не пришла...

__________________

Сообщить модератору | | IP: Записан
Сообщение: 136675

Старое сообщение 21-04-2014 14:21
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12923
Возраст: 32

Рейтинг



А почему оно не должно компилиться?

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Сообщить модератору | | IP: Записан
Сообщение: 136677

Старое сообщение 21-04-2014 14:27
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34563
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


FiEctro
Прикольно задавать провокационный вопрос, когда ответ объявлен, правда?
А пока ответа нет - все тихонько сидят в кустах, выжидают.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 136678

Старое сообщение 21-04-2014 14:28
-
Тема закрыта XaeroX 21-04-2014 в 14:29
Временная зона GMT. Текущее время 13:59. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Вопрос к знатокам С
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024