Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskySashaMercuryА вот зачем знаменатель у вас мне не очень понятно. Нельзя обойтись без него ? В каких случаях ? Да-да, NekZ, расскажите в каких случаях размер массива не кратен размеру элемента Наверное, в случае с указателями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 11:54 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
NekZНаверное, в случае с указателями Ну, да, наверное, но, как выше заметили, лишь иногда )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 12:01 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
NekZМопед не мой, я лишь разместил объяву (С) SashaMercuryNekZ, почему вы используете не всем понятную конструкцию 0[a] вместо a[0]? Чтобы туда не подставили любой объект, имеющий перегруженный operator[], а только лишь C-шный массив, для которого такой специфический синтаксис применим. И что будет если подставить туда перегруженный оператор в первом и втором случае ?В вашем варианте не отработает ? А в классическом варианте нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 02:14 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
NekZ, вы извините, это видимо тривиальный вопрос, и все остальные понимают в чём тут дело. Но я не понял до сих пор, что хорошего в том, что мы получаем порой деление на 0. Не нравится что оператор sizeof используется 4 раза, и из них 2 дублируются. Маловероятно что происходит какая-то буферизация таких операций. Или неправ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 02:24 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНо я не понял до сих пор, что хорошего в том, что мы получаем порой деление на 0. Хорошо то что ошибка возникнет там где она сделана. Иначе могут начаться "мистические" явления совсем в другом коде, в таких случаях искать причину намного сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 07:58 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
Дмитрий, неужели правильно использовать такой грязный способ для обнаружения ошибки? Причём такой способ будет выявлять лишь частные случаи(как уже сказано выше). А есть ли смысл ловить эти частные случаи вообще ? Думаю нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 08:03 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
SashaMercuryДмитрий, неужели правильно использовать такой грязный способ для обнаружения ошибки? Причём такой способ будет выявлять лишь частные случаи(как уже сказано выше). А есть ли смысл ловить эти частные случаи вообще ? Думаю нет Это лучше чем ничего. Как выше уже написали - нет нормальных способов, поэтому каждый выкручивается по своему, максимально минимизируя ущербность своей реализации. Частные ошибки есть смысл ловить, если они достаточно часто встречаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 08:57 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНе нравится что оператор sizeof используется 4 раза, и из них 2 дублируются. Маловероятно что происходит какая-то буферизация таких операций. Или неправ ? sizeof во время компиляции превращается в константу, т.е. в итоге будет выражение из одних констант. Компилятор его посчитает во время компиляции и реально в коде будет использоваться только результат расчета. Вот что отладчик показывает: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 09:17 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercuryНе нравится что оператор sizeof используется 4 раза, и из них 2 дублируются. Маловероятно что происходит какая-то буферизация таких операций. Или неправ ? sizeof во время компиляции превращается в константу, т.е. в итоге будет выражение из одних констант. Компилятор его посчитает во время компиляции и реально в коде будет использоваться только результат расчета. Вот что отладчик показывает: Код: plaintext 1. 2. 3. Спасибо. Это классическое поведение всех компиляторов С/С++ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 09:25 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
SashaMercuryСпасибо. Это классическое поведение всех компиляторов С/С++ ? За все сказать не могу, но думаю что все, т.к. неэффективно вставлять в код расчет выражения из одних констант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 09:33 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНе нравится что оператор sizeof используется 4 раза, и из них 2 дублируются. Маловероятно что происходит какая-то буферизация таких операций. Или неправ ?sizeof вычисляется на этапе компиляции, в этом его прелесть )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 10:11 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
Dima TКак выше уже написали - нет нормальных способов, поэтому каждый выкручивается по своему Поправка. Нет нормальных способов только в С, поэтому каждый С-шник выкручивается по своему, рассказывая почему он не хочет перейти на С++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 11:43 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyDima TКак выше уже написали - нет нормальных способов, поэтому каждый выкручивается по своему Поправка. Нет нормальных способов только в С, поэтому каждый С-шник выкручивается по своему, рассказывая почему он не хочет перейти на С++ А почему С-шник обязан переходить только на С++ ? У него есть другие варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 12:58 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
maytonА почему С-шник обязан переходить только на С++ ? У него есть другие варианты? А где было слово "обязан"? :) Перейти с С проще всего на С++. Можно даже первое время продолжать писать на С, но компилировать как С++, как это сделали разрабы GCC. У меня был опыт переписывания достаточно большого приложения с С на С++ со всеми современными фичами из Буста (смартуказатели, потоки, сеть). Так у меня в ходе такого постепенного рефакторинга код сокращался целыми полотнами. Куча багов просто исчезла сама по себе в результате перехода на С++. Причем до конца весь код не был переписан. В этом и плюс С++ - он экономит ресурсы разработчика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 17:00 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
Переход был сопряжён с отладкой? Или "сразу" перешли и всё? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 18:54 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВ этом и плюс С++ - он экономит ресурсы разработчика. Я бы не согласился с этим утверждением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 19:52 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
>> Куча багов просто исчезла сама по себе в результате перехода на С++. Эта фраза вообще интересна. Она заслуживает анализа. Интересно классифицировать эти баги и понять что исчезло и почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 20:01 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
maytonПереход был сопряжён с отладкой? Или "сразу" перешли и всё? "Сразу" делался только небольшой допил, связанный с тем что в С++ из void* уже нельзя неявно переводить в конкретный тип, как в С. Ну и еще пару синтаксических мелочей. А рефакторинг с использованием фич С++ делался далеко не стразу, а постепенно малыми частями, помодульно, а в некоторых случаях только отдельными функциям. С промежуточными релизами. Поэтому большой отладки как таковой не было. А при переводе каждого модуля было просто написание теста к нему. Во многих случаях все работало с первой компиляции, т.к. алгоритм уже отлаженный, а код не писался заново, а обрезался )) NekZЯ бы не согласился с этим утверждением. Может вы просто недостаточно хорошо знаете С++? В этом случае действительно не экономит "- Леонид Ильич, идем к коммунизму, а есть нечего! - А в дороге кормить никто не обещал. " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 20:07 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
mayton>> Куча багов просто исчезла сама по себе в результате перехода на С++. Эта фраза вообще интересна. Она заслуживает анализа. Интересно классифицировать эти баги и понять что исчезло и почему. Крэши и утечки памяти, которые не удавалось поймать, так как всегда находились более важные дела )). А стал использовать контейнеры и смартуказатели - и вуаля )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 20:10 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyМожет вы просто недостаточно хорошо знаете С++? В этом случае действительно не экономит "- Леонид Ильич, идем к коммунизму, а есть нечего! - А в дороге кормить никто не обещал. " А кто же его хорошо знает-то, товарищ? А я тем временем пишу проектик на Rust -- отличная вещь! Производительность разработчика в разы выше, чем у опытного пользователя C++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 20:21 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyКрэши и утечки памяти, которые не удавалось поймать, так как всегда находились более важные дела )). А стал использовать контейнеры и смартуказатели - и вуаля )) Yep. А если ещё boost MPL туда завернуть для всяких там compile-time заклинаний, то вообще будет супер. IDE только сломается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 20:24 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
NekZА кто же его хорошо знает-то, товарищ? Я его знаю достаточно хорошо. NekZYep. А если ещё boost MPL туда завернуть для всяких там compile-time заклинаний, то вообще будет супер. IDE только сломается Будьте проще, и С++ вас полюбит. MPL вообще не предназначен для прикладных программ. Если вы не пишете библиотеки типа Буста (что уже характеризовало бы вас как маньяка), то вам такие слова даже знать не надо. Не удивительно что С++ вам кажется затратным. Забивать гвозди микроскопом это достаточно муторно )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 20:49 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
А С++ предназначен для прикладных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 23:30 |
|
||
|
как определить размер массива
|
|||
|---|---|---|---|
|
#18+
maytonА С++ предназначен для прикладных?вполне себе. Я вообще не понимаю, как они на других языках их пишут, а главное, зачем ;-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2015, 00:39 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38871899&tid=2019117]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 165ms |

| 0 / 0 |
