HLFX.Ru Forum
Показать все 15 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Вопрос к знатокам С (https://hlfx.ru/forum/showthread.php?threadid=4369)


Отправлено XaeroX 21-04-2014 в 04:54:

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

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

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

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

__________________

xaerox on Vivino


Отправлено marikcool 21-04-2014 в 04:58:

скомпилится

__________________
vk.com/skullcapstudios


Отправлено Дядя Миша 21-04-2014 в 06:19:

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено Government-Man 21-04-2014 в 06:28:

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


Отправлено XaeroX 21-04-2014 в 07:53:

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

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

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

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

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

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

__________________

xaerox on Vivino


Отправлено DEAD MAN 21-04-2014 в 08:03:

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


Отправлено XaeroX 21-04-2014 в 08:23:

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

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

__________________

xaerox on Vivino


Отправлено Дядя Миша 21-04-2014 в 12:41:

Цитата:
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'


Отправлено XaeroX 21-04-2014 в 13:07:

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

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

__________________

xaerox on Vivino


Отправлено Дядя Миша 21-04-2014 в 13:24:

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

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'


Отправлено XaeroX 21-04-2014 в 13:39:

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

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

__________________

xaerox on Vivino


Отправлено Дядя Миша 21-04-2014 в 13:52:

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено XaeroX 21-04-2014 в 14:21:

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

__________________

xaerox on Vivino


Отправлено FiEctro 21-04-2014 в 14:27:

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

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


Отправлено XaeroX 21-04-2014 в 14:28:

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

__________________

xaerox on Vivino


Временная зона GMT. Текущее время 21:33.
Показать все 15 сообщений этой темы на одной странице

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