|
Заблокирован
|
||
| 29.06.2011, 22:41 [ТС] | ||
|
Мой код привентивно безопасен. Как насчёт вас? Надеюсь, мне никогда не придётся с вами работать.
0
|
||
| 29.06.2011, 22:41 | |
|
Ответы с готовыми решениями:
200
Что означает ptr в строке byte ptr[si],al Ошибка на стадии выполнения ptr = ptr; bad ptr |
|
|
||
| 29.06.2011, 22:51 | ||
|
if(!prt) // если указатель нельзя использовать вот только не надо демагогии по поводу "бывают моменты когда нельзя но очень хочется"
0
|
||
|
Заблокирован
|
|
| 29.06.2011, 22:52 [ТС] | |
|
0
|
|
|
|
||
| 29.06.2011, 22:57 | ||
|
http://www.cyberguru.ru/progra... age30.html посему, разводя демагогию, результат проверки указателя является отрицательным и его (указатель) нельзя использовать
0
|
||
|
|
|
| 29.06.2011, 23:01 | |
|
Bers, а метафора про неоднозначность неплохая. насчет ! так очень многие и читают и пишут.
типа сокращение. вот тут мне недавно напомнили про лямбда выражения - они так сказать тоже пример сокращений и в принципе тоже способны запутать при определенных обстоятельствах. как вы считате использование лямбда выражений вне закона? или не страшно? Добавлено через 1 минуту oxotnik, ответ в тему. спасибо
0
|
|
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,979
|
|||||
| 29.06.2011, 23:22 | |||||
|
Ну а если у вас конструкция if ( ! ptr ) такие затруднения вызывает, думаю, вам больше бейсик подойдёт - там всё просто и понятно. Ну разве что лишних буковок много. Собственно по теме: на сколько я знаю, более менее вменяемого способа определить, содержит указатель осмысленное значение, или просто мусор, не существует. В большинстве *NIX систем есть функция malloc_usable_size(), которая должна бы 0 возвращать, но это уже ближе к маразматическому шаманству...
0
|
|||||
|
|
|
| 29.06.2011, 23:28 | |
|
По части стилевых правок. Я всегда пишу "if (p == NULL)" или "if (p != NULL)", потому что над таким кодом не надо задумываться, в то время как после 8-часового рабочего дня в код "if (p)" надо ещё втыкать. Записи "if (p)" и "if (!p)" только в случае, если p - имеет булевский тип. Ну или в Си тип int, но с булевским смыслом (да/нет). Если int содержит некую исчислимую величину, то использую записи "if (p != 0)" и "if (p == 0)".
Для сравнения указателя использую именно NULL, а не 0. Почему так, написал в Неочевидные ответы на простые вопросы в разделе 3
0
|
|
|
Программист
119 / 97 / 11
Регистрация: 22.03.2011
Сообщений: 244
|
|||||||
| 29.06.2011, 23:36 | |||||||
С очень гибкий, мощный и компактный язык.
0
|
|||||||
|
Заблокирован
|
|||||||||
| 30.06.2011, 06:18 [ТС] | |||||||||
|
Добавлено через 19 минут И даже скажу больше: по своему опыту я заметил, что программист, который позволят себе писать в код типа if(ptr) {....}, или if(!ptr) {...} , так же, зачастую употребляет подобные записи и в более сложных конструкциях. А вот в них иногда уже приходится очень втыкать. И тогда фраза: Сквозит пренебрежительным отношением к членам своей команды. Поиск ошибок в таком коде - геммор. На каждом брек-поинте приходится: впираццо, что тут есть по факту, а что подразумевал Великий_Программист_который_ложил_на_нас _с_большим_прибором. А вот в более читабельном (очевидном) коде сам риск возникновения ошибки значительно ниже. Добавлено через 46 минут Только честно, сколько времени у вас ушло на то, что бы прочитать эту запись? У меня 2 секунды на чтение самого кода, и ещё 3 секунды на то, что бы удостовериться, что автор подразумевал именно то, что тут написано. Итого - 5 секунд на одну строчку. Теперь представьте себе, какого это, искать семантическую ошибку в коде, который весь в таком вот безобразном стиле выполнен. Имена переменных и те - не говорящие. Итак, вы готовы? Засекайте время Представленный ниже код - нерабочий. Найдите ошибку, сделайте так, что бы он заработал. А потом скажите, сколько времени у вас ушло. Задача: Вывести сообщение "МОЖНО", если из букв введеной строки X можно составить введенную строку Y, при условии, что каждую букву строки X можно использовать один раз; и сообщение "НЕЛЬЗЯ" в противном случае.
0
|
|||||||||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,979
|
|||||||
| 30.06.2011, 10:48 | |||||||
|
А вот так вроде работает ![]()
0
|
|||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 30.06.2011, 11:26 | |
|
Сравнение с NULL повышает читабельность кода. Меньше понтов с сокращениями записи, больше читабельности не в ущерб производительности. Я бы написал с == NULL.
0
|
|
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,979
|
|||||||
| 30.06.2011, 11:29 | |||||||
0
|
|||||||
|
|
||
| 30.06.2011, 11:36 | ||
|
0
|
||
|
Заблокирован
|
|||||||
| 30.06.2011, 11:38 [ТС] | |||||||
|
Хотя с другой стороны, если разобраться, то этот "дурдом для арифметики" в общем то, особенно не отличается от вашего ![]() Ваш вариант - такой же ужассный в плане читабельности кода. Идея отсортировать массивы строк конечно прикольная ![]() Но взгляните на ваш test() Как такое вообще можно читать? Условие в условии, в условии! Тройная вложенность в условии, и это все в одной строке! Это уже шесть вариантов развития событий нужно держать в голове одновременно! Шесть состояний системы. Рекурсия мой бедный мозг добила. Проще поставить брек-поинт, и посмотреть в пошаговом режиме, чем рисковать "прочитать неправильно". Если бы вы сознательно допустили в коде какую нить хитрую ошибку, наверняка какой нибудь ТяжолыйБудда тоже сказал бы "в этот дурдом вникать совсем не хочется". А если у вас проект уже содержит 100500 строк такого вот нечитабельного ужаса, и тут на тебе, бац! Ни с того ни с сего падаем в рантайме. Тому, кто будит искать ошибку проще сразу застрелиться.
![]() Теперь кто нить в гости придёт из товарищей, буду всех спрашивать: шо за фигня твориццо в этом коде?
0
|
|||||||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,979
|
||
| 30.06.2011, 11:39 | ||
Когда первый раз на этом языке программу видишь, думаешь - марсиане с новым годом поздравление прислали За то, когда разберёшься - оказывается, это так удобно... Так, что, я за короткие записи - букв меньше, смысл всё так же ясен...
0
|
||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|||
| 30.06.2011, 11:46 | |||
|
0
|
|||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,979
|
||||||||||
| 30.06.2011, 11:53 | ||||||||||
|
Смотрим, что происходит
Добавлено через 1 минуту
0
|
||||||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||
| 30.06.2011, 11:57 | ||
|
0
|
||
|
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
|
|||||||
| 30.06.2011, 12:03 | |||||||
это была простая обучающая программа, которая показывала, как проверить, инициализирован ли указатель NULL'ом. Имхо, в том случае уж точно такая запись не мешала читабельности кода, читалось элементарно:
0
|
|||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||
| 30.06.2011, 12:18 | ||
|
0
|
||
| 30.06.2011, 12:18 | |
|
Помогаю со студенческими работами здесь
40
Что такое qword ptr gs Что делает операция PTR Что означает конструкция *(*ptr + j) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|