| 02.10.2014, 12:49 | |
|
Ответы с готовыми решениями:
72
безопасность и распространенные ошибки Распространенные ошибки SEO и ASP.NET 2.0 |
|
6 / 6 / 1
Регистрация: 28.09.2018
Сообщений: 396
|
|
| 24.02.2019, 21:25 | |
|
0
|
|
|
6 / 6 / 1
Регистрация: 28.09.2018
Сообщений: 396
|
|||||||||||||||||||||||||||||||
| 11.03.2019, 06:09 | |||||||||||||||||||||||||||||||
|
К слову о генерации случайных чисел, вот такой код:
но если компилировать + запускать ( как я привык делать; клавишу, знаете ли запомнил ), не выходя из IDE, то
Всё это я к тому, что алгоритм не самый хороший. Возможно, надо делать, как stake-k26, деля на два, но непонятно, что и почему это даёт. Спасибо.
0
|
|||||||||||||||||||||||||||||||
|
|
|
| 10.09.2019, 21:38 | |
|
В продолжение Вычитание беззнаковых чисел и Ошибка переполнения малоразрядных беззнаковых переменных
C #include <stdio.h> int main (void) { unsigned char a, b, c; a = 0; b = 254; /* Пример N1 */ if ((a - b) > 5u) printf ("1: yes\n"); else printf ("1: no\n"); /* Пример N2 */ c = a - b; if (c > 5u) printf ("2: yes\n"); else printf ("2: no\n"); return 0; } Code $ gcc t.c $ ./a.out 1: yes 2: no Виною всему integer promotion. По правилам языка Си при построении арифметических операций для аргументов короткого целочисленного типа (char, unsigned char, short, unsigned short) выполняется неявное преобразование к типу int. В итоге пример N1 выглядит как C if ( (unsigned)((int)a - (int)b) > 5u ) C if ( (unsigned)(unsigned char)((int)a - (int)b) > 5u )
4
|
|
|
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
|
|
| 12.09.2019, 08:51 | |
|
Evg, спс. Я "так" ни умею .. но именно так и надо для начинающих.
0
|
|
|
Вездепух
13233 / 6865 / 1827
Регистрация: 18.10.2014
Сообщений: 17,398
|
|||||||||||||||||||||
| 29.07.2020, 08:14 | |||||||||||||||||||||
|
Ошибочное убеждение, что изменение значений переменных в С имеет магическую "обратную силу"
Это ошибка встречается в разных проявлениях. Наиболее часто она выглядит примерно так
array так, как будто он имеет размер 10, то есть как будто этот массив каким-то магическим образом узнал о том, что переменная n получила новое значение, и автоматически подстроил свой размер.В реальности же ничего подобного в С не происходит. С - процедурный, пошаговый язык. Размер массива array в вышеприведенных примерах задается (и фиксируется) в тот момент, когда процесс выполнения программы проходит по его определению (и в первом варианте поведение вообще не определено, ибо переменная n не инициализирована). После этого никакие изменения значения n уже не могут повлиять на размер массива. Эта же ошибка встречается в варианте с динамическим выделением памяти. --- Другие, более редкие вариации, того же заблуждения встречаются в виде
1. Программа на языке С - это не электронная таблица вроде Excel. Изменения переменных в С программах не имеют неявной [обратной] силы. Если какое-то изменение должно влечь за собой череду связанных изменений, то вам придется сделать/инициировать их все явно, вручную, самостоятельно. 2. В языке С нет массивов изменяющегося на лету размера. Изменить размер массива в С можно только путем уничтожения старого массива и создания нового. Опять же, делать это придется явно, вручную, самостоятельно.
4
|
|||||||||||||||||||||
|
из племени тумба-юбма
|
|
| 29.07.2020, 08:54 | |
|
Два последних варианта мне точно не встречались, иначе бы вынесло мозг ))
0
|
|
|
Вездепух
13233 / 6865 / 1827
Регистрация: 18.10.2014
Сообщений: 17,398
|
|||||||||||||||||||||
| 29.07.2020, 10:37 | |||||||||||||||||||||
|
Наивная замена "опасных" функций на "безопасные"
Если компилятор Microsoft Visual Studio советует вам заменить вызовы функции scanf на вызовы функции scanf_s и вы решили последовать его совету, то это совсем не означает, что для этого достаточно просто огульно исправить имена функций в вызовах со scanf на scanf_s.Функция scanf_s - это другая функция, обладающая несколько другим интерфейсом. Поэтому при переходе с использования scanf на использование scanf_s в общем случае придется также внести исправления в список аргументов в вызове функции.А именно: три спецификатора формата - %s, %с и %[] - в функции scanf_s ведут себя не так, как ведут себя аналогичные спецификаторы в функции scanf. В функции scanf_s эти спецификаторы формата требуют двух аргументов, а не одного. Первый аргумент - это, как и в scanf, указатель на переменную-приемник (на буфер-приемник). А вот непосредственно вслед за ним должен следовать еще один аргумент - значение типа unsigned, описывающее размер этого приемника.Все остальные спецификаторы формата scanf_s ведут себя так же как и в scanf, т.е. не требуют никаких дополнительных аргументов.Например, если вы хотите перейти на использование функции scanf_s в следующем искусственном примере
scanf не содержит спецификаторов %s, %с или %[], достаточно просто изменить имя функции в вызове на scanf_s. Но как только в формате появляется хотя бы один из этих спецификаторов, при переходе на scanf_s придется обязательно вносить исправления и в набор передаваемых аргументов.--- Похожее замечание справедливо и для функции gets_s. Эта функция в языке С требует два аргумента, а не один, как это когда-то было в gets. Например
_s.
4
|
|||||||||||||||||||||
|
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
|
|
| 30.07.2020, 08:43 | |
|
"Си - процедурный пошаговый язык" .. вот именно из-за этого он и является самым простым для изучения и самым мощным языком программирования, что доказывает его столь долгая "живучесть" и популярность.
Единственное чего мне в нем не хватало - это прямая работа с флагами регистра(ов) состояния процессора. В частности, не получится реализовать какую-нибудь "свою" 24-х битную арифметику на 8-и битном процессоре. Флаг переноса недоступен, увы. ![]() Всё, что есть в иных "продвинутых" языках не более чем "синтаксический сахар", в т.ч. и реалтайм. P.S. просто ИМХО, не холивара для. Тему стоит пополнять такими вот примерами, особенно для тех кто "движется наоборот" от разных Питонов в Си .. у них много "непонимания" этого рода. Тоже сталкивался уже.
0
|
|
|
Вездепух
13233 / 6865 / 1827
Регистрация: 18.10.2014
Сообщений: 17,398
|
|||||||||||
| 01.08.2020, 06:54 | |||||||||||
|
Бездумное определение локальных объектов большого размера
При определении локальных (автоматических) объектов следует иметь в ввиду, что даже в современных "полноразмерных" архитектурах размер стека (в котором и размещаются локальные переменные) обычно ограничен, и обычно ограничен относительно небольшим значением. Да, размеры объектов, которые допустимо объявлять локально, существенно выросли по сравнению с тем, какими они были двадцать лет назад, но тем не менее бездумное объявление локальных переменных огромного размера запросто может привести к переполнению стека и сегодня. По понятным причинам, в первую очередь это касается рекурсивных функций. Но бездумное определение локального массива гигантского размера запросто может привести к переполнению стека и без рекурсии
Какой размер объекта является "уже большим", а какой - "еще маленьким", сильно зависит от особенностей платформы. Как правило опыт, позволяющий проводить разумный водораздел между первым и вторым, вырабатывается быстро.
3
|
|||||||||||
|
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
|
|
| 01.08.2020, 14:35 | |
|
На моей практике (но это было давно уже) локальные переменные (с параметрами вкл.) в функции по-хорошему должны попадать в регистровое поле архитектуры назначения. Если оно туда "не лезет", то скорострельность функций как правило падает значительно. А учитывая глубокую вложенность вызовов в современных подходах .. всё это ведет (и частенько) к возмущению "а чего оно так тупит-то?"
0
|
|
|
Вездепух
13233 / 6865 / 1827
Регистрация: 18.10.2014
Сообщений: 17,398
|
|||||||||||
| 05.08.2020, 04:44 | |||||||||||
|
Передача "массива" в функцию (в дополнение к Определение размера массива, переданного в качестве аргумента функции)
Все объявления параметров типа "массив T [N]" в списке параметров функции автоматически трансформируются в параметры типа "указатель T *". Наличие или отсутствие явно указанного размера в объявлении массива не имеет никакого значения - этот размер просто игнорируется.Например, объявления
По этой причине внутри функции бесполезно пытаться применять к такому "массиву" трюк с sizeof для определения количества элементов в массиве. Выражение sizeof a / sizeof *a не сможет вычислить фактическое количество элементов массива, переданного в качестве аргумента, уже хотя бы по той причине, что sizeof a в данном контексте - это размер указателя, а не размер массива.Уточнение: вышесказанное относится именно к параметрам типа "массив". Параметры типа "указатель на массив" ( T (*)[N]) не подвержены таким трансформациям.
3
|
|||||||||||
|
Вездепух
13233 / 6865 / 1827
Регистрация: 18.10.2014
Сообщений: 17,398
|
||
| 05.10.2020, 22:47 | ||
|
При вычислении результата получается "-nan" Проблема с rand() в цикле
0
|
||
|
Вездепух
13233 / 6865 / 1827
Регистрация: 18.10.2014
Сообщений: 17,398
|
|||||||||||||||||||||||||||||||
| 21.01.2021, 12:03 | |||||||||||||||||||||||||||||||
|
Переключение текущей локали воздействует на формат представления чисел
Переключение со стандартной "С"-локали на некоторую интернациональную локаль, вроде
В частности, в текстовой записи десятичных дробей в качестве разделителя дробной части теперь будет выступать запятая, а не точка. Это окажет воздействие на поведение всех стандартных функций, выполняющих преобразование из строкового формата в числовой. В частности, такие функции как strtod, atof, scanf и т.п. будут воспринимать символ '.' в записи десятичной дроби как некорректный и прекращать преобразование на этом символе. Внешне это будет выглядеть так, как будто эти функции округляют плавающие значения до целого. На самом же деле преобразование просто останавливается на символе '.' и рассмотрения дробной части не происходит вообще.
LC_NUMERIC
5
|
|||||||||||||||||||||||||||||||
| 21.01.2021, 12:03 | |
|
Самые распространенные строки Самые распространённые фамилии Вывести самые распространенные женские и мужские имена
Вирус блокирует выход на сайт вк и другие распространенные сайты Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|