Двач.hk не отвечает.
Вы видите копию треда, сохраненную 22 февраля 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
C Propaganda.jpg1,9 Мб, 2000x2610
C Programming Language #59 /clang/ # OP 1754859 В конец треда | Веб
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь https://ideone.com/, https://wandbox.org/ или https://pastebin.com/ для вставки кода, если он длиной больше нескольких строк или содержит [​i​] или ∗.

Что читать:

- Brian Kernighan, Dennis Ritchie "The C Programming Language": http://www.cypress.com/file/56651/download
- Stephen Prata "C Primer Plus, 6th Edition" (2014): относительно свежая, знает про C89/C99/C11, описывает различия, объемная (около тысячи страниц), годная, с вопросами, упражнениями и ответами. Читать после K&R или до.
- Zed A. Shaw "Learn C the Hard Way" (2015): годное пособие для гуманитариев для гуманитариев!
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
- ООП, например: http://www.cs.rit.edu/~ats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт)
- Стандарт ISO/IEC 9899:2011 (C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- Черновик стандарта ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2479.pdf (февраль 2020, с диффами)

Чем компилировать:

- Очевидный GCC.
- clang: оче годно, батя рекомендует.
- Intel C++ Compiler: оптимизации, тысячи их.
- Visual Studio Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.
- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.
- TCC: очень маленький компилятор с багами и поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.

Что еще почитать:

http://c-faq.com/
FAQ из comp.lang.c. Древний, но все еще актуален.

Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition" (2002)
Ебаный пересказ стандартов C89 и C99 (включая стандартную библиотеку). Для не осиливающих стандарт в оригинале. Читать в качестве подготовки к собеседованиям (есть задачник с ответами) и для ознакомления с масштабами пиздеца перед написанием своего парсера/компилера.

Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994)
"Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).

Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013) - почитать, вкатиться в указатели.

Ben Klemens "21st Century C: C Tips from the New School" (2012)

Paul Deitel, Harvey Deitel "C for Programmers with an Introduction to C11" (2013)

Stephen G. Koch@n "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

MISRA Ltd. "Guidelines for the Use of the C Language in Critical Systems" (2013)
Набор рекомендаций по написанию надежного кода на C (промышленный стандарт). Читать - однозначно, следовать - вдумчиво и без фанатизма. Также можно посмотреть https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard и http://web.archive.org/web/20190213011655/homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdf

Еще более длинный список: http://www.iso-9899.info/wiki/Books#Learning_C

https://github.com/kozross/awesome-c

Онлайн-утилиты:

- https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).
- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.

Прошлые треды:

- №56: http://arhivach.ng/thread/563333/
- №57: http://arhivach.ng/thread/563334/
- №58: http://arhivach.ng/thread/573804/ >>1711268 (OP)
ротатед.PNG10 Кб, 605x54
2 1754933
Задание из K&R. Что он хочет? 123 --> 312, 51231 ->15123 или что? Эта задачка и раздела про побитовые операторы, я ответы понаходил, даже не понял, что они там делают...
sage 3 1754934
>>54933
В моих "примерах" n условно равен 1
4 1754979
>>54933
Очевидно, что раз тема про побитовые операции, то и вращать нужно биты. 11110000 -> 01111000.
кал.PNG20 Кб, 856x375
5 1755132
Покакалл каллом
6 1755340
>>54933
Да, только в двоичном.
В прошлом треде уже отвечал кому то про это.
Прорешай на листочке в столбик и поймешь как с помощью маски (через and), обычных сдвигов, и or сделать.
7 1755441
Буду потихоньку делать, раз тред пока пустой...

>>54979
>>55340
Спасибо, я как раз скинул в тред. Чому-то не догадался, лел... вообще, маски это впечатляюще, наверное, очень мощный инструмент, хз, используют ли их в повседневности
8 1755561
Кто работает на нем? Какие задачи выполняете?
9 1755568
Едем дальше
10 1755603
Короче, я вынырнул.
Я тот анон, кто спрашивал про простую графику под винду на си.

Итак.
Я отчаялся настроить devc++ и codeblocks так, чтобы нормально скомпилился пример анона:
https://pastebin.com/raw/7nu7GzsP

Ебля с path variables в винде а потом разруливать 100500 опций в конкретно каждой IDE мне не под силу, копипастить не понимая ничего - это уже перебор. Тем более я си дошел пока только до 10й главы у праты. Я даже не нуб, я вообще не человек нахуй.

Нашел такое:
https://bigcode.wordpress.com/2016/12/20/compiling-a-very-basic-mingw-windows-hello-world-executable-in-c-with-a-makefile/

Все просто, написал батник, прописал в path mingw32, разобрался с make.
В пару кликов все компилится, а главное - досконально понимаю что происходит на каждом этапе.

Анончик, спасибо за пример с GDI! Теперь можно и за него взяться.
11 1755672
>>55603

> в винде



ты выбрал путь сильным духом, хаха
12 1755707
>>55672
Что поделаешь, я ещё не готов к ебле с каждой отдельно графической системой, со своим апи и миллионом неочевидных зависимостей только для того, чтобы вывести кружочек.
One true way рулит.
13 1755712
>>55603
Если планируешь работать с mingw, советую поставить msys2. В нём есть пакетный менеджер и куча готовых библиотек в репах для винды. С ним не надо качать по отдельности хуй пойми кем собранные бинарники и ебаться с путями.
image.png38 Кб, 1313x289
14 1755822
скопировал код змейки
https://github.com/cemsina/snake-game-c/blob/master/Snake/Snake.c

и пытаюсь скомпилировать, но выдает ошибки. Почему?
15 1755835
>>55822
на нормальную
https://pastebin.com/uS3yawse
16 1755854
>>55835
Компилятор ругает, что нет библиотеки curses.h. Как мне ее установить?
17 1755856
>>55854
sudo apt install libncurses-dev
если винда, то страдай
18 1755860
>>55856

>если винда, то страдай



Страдаю
Хм..PNG16 Кб, 448x362
19 1755897
Почему с типом char он возвращает -1? С int всё, естественно, нормально работает, но мне интересно. По идее, он приводит массив из char в int в момент передачи массива как аргумента функции.
Я знаю, что С передаёт обычные переменные по значению, а массивы -- по указателю или чё-то такое, в общем, оригинал, фактически, но почему вообще там значения изменились? Все числа влезают в char, т.е. старшие биты не обрезаются, сам char это представление чисел фактически, чё он машнит тогда? Объясните, поалуйста
20 1755905
>>55897

> По идее, он приводит массив из char в int в момент передачи массива как аргумента функции.


Ну да и память, которую ты заполнял, как массив чаров размер которых 1 байт, он будет видеть как массив интов, размеров которых 4 байта.
21 1755943
А как в визуал студио начать на си писать?
22 1755952
>>55905
Ого, всё, понял, спасибо
23 1755953
>>55943
Создаешь пустой консольный или GUI С++ проект, создаешь файл, сохраняешь с расширением .c.
24 1755965
>>55897

>Почему с типом char он возвращает -1?


Почему ты не получаешь предупреждение? А?
Ну-ка быро включил предупреждения!
25 1756054
>>55672
Простой пример как нарисовать кружочек не в винде в студию.
26 1756058
>>56054
Например xlib:

>Seriously, XLib is a load of crap.


>


>The numerous tiny "off-by-one" errors, the pathetic font handling, absolutely no native support for anything useful forcing you to "reinvent the wheel", "reinvent the engine", "reinvent the car", and if you want it fast, "reinvent the driver".


>


>It is worse than the Windows GDI API and even slower by definition because of the architecture.


>


>The only way you will ever make anything decent: write a layer building everything you need from scratch using XLib as little as possible. Anything more than a strict subset and you'll be wasting cycles waiting for your graphics to cross the socket boundary, while the processor switches contexts, and the user is wondering what in the world is taking so long to see an 8bit billboard "fire its laser".

27 1756071
>>56054
Можно взять Skia/Cairo. Вот, например, линкрандом: https://gitlab.com/cairo/cairo-demos/-/blob/master/X11/cairo-demo.c Все зависит от того, что именно тебе нужно кроме рисования кружочков. Алсо, в винде проще по-быстрому накидать интерфейс (разумеется, если с Qt не сравнивать, но Qt - это уже кресты).
анон с кодом для GDI
28 1756075
>>56071
>>56054
В целом все векторные графические апи очень сильно друг на друга похожи, ничего нового там не изобрести, отличается лишь инициализация.
29 1756214
>>56071
>что именно тебе нужно кроме рисования кружочков



В конечном итоге хочу арканоид свой написать. GDI для этого хорошо подходит, как я понимаю.
breakoutpieces1.png17 Кб, 352x200
30 1756279
>>56214

> В конечном итоге хочу арканоид свой написать


Надо было сразу сказать. Вот как раз для этого лучше взять SDL2, кружочки рисовать в фотошопах/гимпах/whatever заранее, а в игре использовать их уже в виде готовых текстур с прозрачностью. Скорее всего, ты сделаешь атлас типа пикрелейтед, захардкодишь в исходник координаты и будешь брать кусочки из атласа по известным координатам и копировать их во фреймбуфер. Чтобы длинную платформу сделать, берешь концы от короткой, а середину дублируешь несколько раз.

На GDI ты, конечно, тоже можешь такое сделать, но тогда ты через пару дней придешь в тредик с вопросом, почему все мигает, и как сделать двойную буферизацию, а чуть попозже попробуешь сделать что-то более динамичное, чем арканоид и начнешь спрашивать, хули так медленно. Начнешь отрисовывать графику при старте... и в итоге придешь ровно к тем же самым текстурам. Потом упрешься в скорость BitBlt (это копирование изображений), в итоге возьмешь те самые Direct[Draw|2D|3D]/OpenGL, которые используются в качестве бэкендов в SDL2. Такие дела. Но. Я когда-то писал софтрендер с выводом через GDI, было вполне норм. Алсо некая успешно почившая ныне технология Adobe Flash в standalone плеерах тоже успешно использовала GDI, и ничего особо не тормозило. Чтобы реально упереться - надо постараться.
31 1756351
>>56279

>кружочки рисовать в фотошопах/гимпах/whatever заранее, а в игре использовать их уже в виде готовых текстур с прозрачностью. Скорее всего, ты сделаешь атлас типа пикрелейтед, захардкодишь в исходник координаты и будешь брать кусочки из атласа по известным координатам и копировать их во фреймбуфер. Чтобы длинную платформу сделать, берешь концы от короткой, а середину дублируешь несколько раз


Блин, именно так я и думал! Я понятия не имею как это называется, но я посмотрел на ютубе один чувак разбирал Dave1 и там в exe-шнике были все текстуры упакованы со смещением. Я впечатлился.
Но спасибо тебе огромное, я хоть начал понимать что за GDI такой, плюс приятно осознавать что я более менее правильно думал.

>в игре использовать их уже в виде готовых текстур с прозрачностью. Скорее всего, ты сделаешь атлас типа пикрелейтед


А разве GDI так не умеет?
32 1756355
>>56351
>>56279
Ну и желательно чтобы все на си. Я пока не готов переходить на кресты, не хватает базы.
33 1756370
>>56355
sqlite возьми.
34 1756373
>>56355
Там не так много базы и надо. Игрушка как раз хороший учебный проект — сначала пишешь ее в систайле, потом пакуешь шарик игрока и штуки которые надо ломать по классам, потом перестаешь использовать стандартные структуры данных, пихаешь в контейнеры, делаешь маленькую базу данных куда пихаешь хайскоры, по приколу добавляешь пуканье джейсонами/хмлками, потом пишешь установочник.
35 1756376
Ну и естественно на каком-то этапе используешь темплейты вместо обычных классов
36 1756385
>>56373
Я так и собираюсь делать, лол, спасибо!
Я имею ввиду что я еще прату не закончил.

>пуканье джейсонами/хмлками


>темплейты вместо обычных классов


А вот сейчас ничего не понял.
37 1756407
>>56385

>пуканье джейсонами/хмлками


Примерно 70% реальной работы современного софтвейр инженера, особенно на бекенде.

>Темплейты вместо обычных классов


Стандартные классы и new delete залупу мало кто использует. С помощью темплейтов реализуют такие замечательные вещи как наследование, фабрики, и етц, отсутствующие по дефолту.
38 1756502
>>56407

>Примерно 70% реальной работы


Как и в любой профессии, тащемта, нет?
Я например инженер, так именно конструированием я занимаюсь тоже где-то 30% времени. Всё остальное это репорты, бланки, митинги и исправление косяков молодых.
39 1756504
>>56502
Тащемта да, но я говорил конкретно о части работы о которой в первую очередь фантазирует ньюфаг, думая пойти в бекендеры.
40 1756511
>>56504

>бекендеры


Согласен. Из всех утюгов реклама мегакурсов ФУЛ СТАК НА ПИТОНИИ ЗА 6 НЕДЕЛЬ
СТАНЬ БЕКЕНДЕРОМ ЗА 100500 ЭСКУДО В СЕК

Я задрачивал в детстве игру одну, krypton egg вроде. Единственное приятное воспоминание. Хочу сделать подобное. Просто так.
41 1756582
>>56373

>потом пакуешь шарик игрока и штуки которые надо ломать по классам



А потом распаковываешь в С-стайл обратно и переписываешь вот на эту хуиту (ПАЛЮ ГОДНОТУ, ВНИМАНИЕ, ПАЛЮ ГОДНОТУ), потому что в соточку долбимся:

https://github.com/SanderMertens/flecs
42 1756765
>>54859 (OP)
Современный Си
https://www.youtube.com/watch?v=ieERUEhs910
Алсо много полезного в коментах
43 1756807
C какого размера стоит обязательно использовать функции? В учебнике для каждого пука вроде ввода и сортировки стали вводить функции длиной в 6-8 строчек. Мне учебную программу длиной в 40-80 строк удобнее писать вообще без дополнительных функций. На них можно забить пока я не пишу "полезный код"?
Аноним 44 1756815
>>56807
Конечно! Все нужно выделять в функции
45 1756817
>>56807
Нет, потом иначе так и будешь говнокодить. Единственный кейс когда можно не выносить всё в другие функции — это когда этот код _нигде_ не будет переиспользоваться. А всё, что хоть сколько-то можно переиспользовать (сортировки — вообще максимально дженерик хуита для всего) — выносить.
46 1756819
>>56815
>>56817
Ок, спасибо.
47 1756821
>>56807
Это индивидуально. У меня в геймдеве строк 10-20. Иногда, внутренний блок цикла может быть 20 строк, тогда в сумме с бойлерплейтом инициализации/цикла будет до 40. Дальше начинает путаться логика, что от чего зависит. Сложно изменять. Также, вынос в функции больше зависит от переиспользования. В учебной программе тебе это незаметно. Но в реальной практике ты захочешь применить этот же алгоритм к другим структурам. Или наоборот, с этими данными провести другую операцию. И вот уже у тебя +80 строк копипаста на ровном месте.
48 1757000
Сяч, чому GCC дебил (в -O3 и у шланга в -O2 все нормально)?

https://www.godbolt.org/z/sW3xM3
14670508675000.webm2,2 Мб, webm,
640x360, 1:13
49 1757040
Скажу сразу, я не программист, а просто технический менеджер. По работке пишу простенкьие скрипты для аналитики на питоне, тыкаю данные из бд при помощи sql, немного поддерживаю проектовую админку на js.
Думаю, может, мне стоит немного посидеть поучить основы С? Я не планирую когда-либо работать с этим языком, но насколько я слышал от прошаренных типов, С очень понимает в понимании того, как работает компьютер, что вообще такое программирование, как программа взаимодействует с железом, всё вот это вот. Насколько С вообще может мне помочь в плане такой теоретической базы? Или жс/питон уже настолько абстрактны, что никак не связаны с С?
50 1757044
>>57040
Да, помогает.
51 1757046
>>57040
Нет, не помогает.
52 1757070
>>57040
Купи ардуину помигать светодиодом.
53 1757080
>>57070
Это я на малине делал с помощью питона.
54 1757083
>>57070
Я и на js им мигаю.
55 1757087
>>57083
Ну тогда вряд ли что то новое узнаешь.
Напиши реверс строки на js и достаточно.
56 1757088
>>57087
*посимвольный. Без библиотечных функций конечно.
57 1757090
>>57087
А, еще указатели. В js то их нет.
58 1757091
>>57040
Вообще никак не помогает лол, си под х86 это такая же высокоуровневая прокладка как питон или жс, высоко над уровнем железа. Ты можешь дергать системные пукалки вроде посикс, но сама система для тебя останется таким же черным ящиком, как и в случае с любым другим языком. А вот если ты углубишься в физику, информатику и конкретно реверс — то ты уже поймёшь как работает система, компьютер и конкретно железки внутри, только с изучением си это ничего общего не имеет

Мимо-шел кресточмо джениунли не понимаю почему ньюфаги думают наоборот
59 1757093
>>57091
Ну так Си изучать вне отрыва от ассемблера который на выходе - бессмысленно.
60 1757094
>>57088
Так в жс абстракции слишком высоки, ты тут не char'ами оперируешь, и даже не байтами (хотя в целом можно и ими - есть типизированные масивы сырых данных). В 2020ом строка даже сразу на unicode символы разбивается при проходе по ней циклом, так что не надо выебываться с codepoint'ами. Я слабо представля, что он имел ввиду под пониманием как работает компьтер, потому что для этого и не надо в общем-то языка учить, можно книжки почитать. А если хочется низкого уровня для самообразовани, то ассемблеры куда интереснее и образовательнее, чем си. Си надо выбирать уже чисто из практических соображений.
image.png6 Кб, 200x168
61 1757097
image.png8 Кб, 360x157
62 1757104
>>57088
Ну или если тебе нужна оптимизация по матями, а не по скорости.
1595413657735.png109 Кб, 490x305
63 1757562
Аноны, расскажите, как вы вообще программы пишете?

Я схемотехник, код мне по факту нужен только, чтобы гонять байты туды-сюды, и в своей области мне не трудно накатать что-то, что может работать. Но вот я хочу сейчас и прямо сейчас сука написать что-то под винду, как у меня ступор.

Хочу вырасти как системный инженер, для этого нужно уметь больше, чем умею я. Для меня в схемотехнике все довольно просто — есть входной сигнал, есть выходной, колдуй так, чтобы на выходе получилось то, что нужно, используя готовые модули вроде микросхем и так далее. Хочешь больше — колдуй с МК. С горем пополам я в свое время научился делать всякое с дренейками с STM32 используя их ПО и сервис мануалы.

Так к чему я клоню? Я знаю, как сделать у себя в голове проект для какой-нибудь платы, потому что примерно знаю, что должно быть внутри, как это подключается и так далее. То есть я могу представить, КАК это работает, ЧТО для этого нужно и другие подводные. А как блять сделать что-то другое нахуй?

Вот хочу сам себе доказать, что могу. Хочу сделать хуйню чтоб пикчи переводила в пиксель арт. В интернете говорят "Ну вы накидайте там проект на коленке и пишите код". С написанием кода есть тонна учебников, в этом проблемы нет. А как накидать проект то сам? Откуда эту инфу взять? В схемотехнике есть даташиты и сервис мануалы на используемые компоненты, можешь что угодно подобрать. А тут сам ебисб, ток документация на язык и колдуй с ним чо хочешь. Я не нашел нихуя (может плохо поискал) как сделать интересующую меня задачу вот прям сделать.

А даже если бы и нашел, это был бы копипаст чужой реализации, т.к. чтобы доделать туда что-то свое мне нужно было бы взять другой велосипед другого Васи и вставить в этот велосипед. По сути это и есть модульный способ создания чего-то нового, это окей, в схемотехнике также как раз, но как мне при этом все в голове у себя собрать? Откуда я могу знать, что мне должно понадобиться в данной программе? Где про это то прочесть? Хочу писать программы, но не могу.

Кому не влом, напишите хоть тут, как вы видите структуру пиксель арт генератора, хоть с вашего пинка попробую что-то сделать.
1595413657735.png109 Кб, 490x305
63 1757562
Аноны, расскажите, как вы вообще программы пишете?

Я схемотехник, код мне по факту нужен только, чтобы гонять байты туды-сюды, и в своей области мне не трудно накатать что-то, что может работать. Но вот я хочу сейчас и прямо сейчас сука написать что-то под винду, как у меня ступор.

Хочу вырасти как системный инженер, для этого нужно уметь больше, чем умею я. Для меня в схемотехнике все довольно просто — есть входной сигнал, есть выходной, колдуй так, чтобы на выходе получилось то, что нужно, используя готовые модули вроде микросхем и так далее. Хочешь больше — колдуй с МК. С горем пополам я в свое время научился делать всякое с дренейками с STM32 используя их ПО и сервис мануалы.

Так к чему я клоню? Я знаю, как сделать у себя в голове проект для какой-нибудь платы, потому что примерно знаю, что должно быть внутри, как это подключается и так далее. То есть я могу представить, КАК это работает, ЧТО для этого нужно и другие подводные. А как блять сделать что-то другое нахуй?

Вот хочу сам себе доказать, что могу. Хочу сделать хуйню чтоб пикчи переводила в пиксель арт. В интернете говорят "Ну вы накидайте там проект на коленке и пишите код". С написанием кода есть тонна учебников, в этом проблемы нет. А как накидать проект то сам? Откуда эту инфу взять? В схемотехнике есть даташиты и сервис мануалы на используемые компоненты, можешь что угодно подобрать. А тут сам ебисб, ток документация на язык и колдуй с ним чо хочешь. Я не нашел нихуя (может плохо поискал) как сделать интересующую меня задачу вот прям сделать.

А даже если бы и нашел, это был бы копипаст чужой реализации, т.к. чтобы доделать туда что-то свое мне нужно было бы взять другой велосипед другого Васи и вставить в этот велосипед. По сути это и есть модульный способ создания чего-то нового, это окей, в схемотехнике также как раз, но как мне при этом все в голове у себя собрать? Откуда я могу знать, что мне должно понадобиться в данной программе? Где про это то прочесть? Хочу писать программы, но не могу.

Кому не влом, напишите хоть тут, как вы видите структуру пиксель арт генератора, хоть с вашего пинка попробую что-то сделать.
64 1757577
Цикл начинается с
while ((op=get_char())!='q')

Вот на пике функция, на втором выход. Когда туда успевает набиться ложное значение?
65 1757599
>>57562

>как вы видите структуру пиксель арт генератора


Для начала тебе нужен алгоритм уменьшения изображения. Например, простым будет алгоритм k-nearest neighbors (ближайшего соседа).

Ты переводишь изображение в матрицу (двумерный массив) пикселей, затем делишь её на квадраты по n (например, 4 или 9) пикселей. Затем из каждого квадрата ты выбираешь самый популярный цвет пикселя, и переносишь его на новый холст (который в n раз меньше). Если изображение большое - этот шаг можно повторить несколько раз. Готово, ты реализовал уменьшение изображения до пиксель-арта.

Дальше тебе (скорее всего) нужно уменьшить количество цветов. Ты делаешь список самых популярных цветов изображения, затем перекрашиваешь в них менее популярные, у которых разница в оттенке меньше определённого порога. Ещё один вариант - ты создаешь палитру, например, из 256 цветов и округляешь все цвета до значений из этой палитры.

Здесь уже остаются только тривиальные задачи вроде открытия исходных и сохранения получившихся изображений.
Screenshot2020-07-1720-19-00.png27 Кб, 648x317
66 1757608
>>57577
А вот в таком виде всё ок.
67 1757610
>>57562
Начни с интерфейса, окошки там кнопочки, вид до вид после. Или тебя алгоритм преобразования интересует? Тут наверное берёшь пиксель увеличиваешь размер потом лишнее разрешение режешь.
68 1757613
>>57599
>>57610
Похоже на интерполяцию, только наоборот. Я такое делал, когда из датчика на тепловизор 8х8 надо было что-то вывести на 320х240 экран. Разберусь. Так хотя бы что-то продвинется! Спасибо, анон. Надеюсь, что со временем и мне придет понимание структуры программ.
69 1757969
>>57562
байтоебы творческие импотенты
ну хуй знает, формат bmp норм описан даже на википедии, выводить буковы и циферы в консоль, надеюсь умеешь, дальше действительно

>колдуй с ним чо хочешь


А как ты хотел? И свою фантазию не включать, и чужие велосипеды не пиздить? Противоречиво... Так-то про все есть инфа. Те же основы 3d-графики, а дальше колдуй че хочешь, например.
qWVLiRw-qyc.jpg111 Кб, 911x530
70 1758508
в питоне есть тип данных set хуяк обернул и всё, а что почитать про создание своих типов? типа best practics с enum'ами и union'aми и typedef'aми
71 1758682
>>58508

>свои типы


>enum union

72 1758745
>>58682
зоебал я же хочу не ковырять и искпеременитровать, а статью чейтануть какую-нибудь
73 1758896
Классический, наверное, вопрос: второе русское издание Кернигана и Ричи читать стоит? Там вроде устаревший стандарт языка, но на русском новее нет.
74 1758900
>>58896
K&R устарел не слишком сильно, о нововведениях можно прочитать и позже, за вечер. На русском еще много чего есть, тот же Прата, но лучше взять словарь и оригинальное издание. Без английского в программировании делать нечего.
75 1759017
>>58900
Какой словарь посоветуешь, чтобы контекст было проще искать?
76 1759027
>>59017
Ты бредишь чтоль? Тебе не нужно переводить на русский названия определений вроде variables или arguments. Если совсем с этим туго, то тебе нужно только непонятные слова перевести в описании этих определений, чтобы понять, что целиком определение значит (milk — жидкость из вымени коровы, ну ты понял). Ну или даже если хочешь и их перевести (чтобы самому было понятнее), переведи и их. Откроешь для себя, что variables в русском языке означает переменная. Все равно будешь везде говорить variables.

Ты ахуеешь, но тебе надо не переводить с английского на русский, а понимать английский текст для программирования, т.к. на нем ты и будешь общаться с машиной (ну или 1С тредис по соседству). Тебе все равно в конечном итоге придется на нем со всеми общаться, начинай уже сейчас (как бы тяжело не было).

Для словаря не знаю, что используют остальные, мне хватает translate.google.com
покормил
77 1759034
>>59027
Ну вот тут недавно спрашивали про задание из K&R про разворот битов чёт как то не помогли эти гуглы. Я попробовал на edx курс по Питону на английском там вообще субтитры гуглем переводил было ощущение что придумываю половину. Вот например boilerplate как первести? Там больше проблем не сопределениями а с действиями.
78 1759039
>>57040
Водя машину ты ведь не поймешь, как она работает.
Бери учебники по теории цепей, затем по схемотехнике, затем пытайся сам делать платы, которые что-то полезное делают.
1595574753953.png740 Кб, 1071x1372
79 1759042
>>59034
Ты ахуеешь.
80 1759047
Поясните, если я буду работать прогером, то у меня будут задачи, над которыми нужно подумать? Типо как в школе с олимпиадными задачами. Или это почти всегда тупа загуглил, написал.
81 1759048
>>59047
странный вопрос
82 1759051
>>59048
Почему? Ну я так понимаю это от места работы зависит. Но куда идти, если хочется чтобы мозги использовались?
83 1759061
>>59042
Рили охуел, но я думал словарь какой нибудь офлайн.
84 1759062
>>59051
В нии какой нибудь иди, 99 задач в любой работе стандартные.
85 1759101
>>59062

>В нии какой нибудь иди



Переписывать/реверсить под грифом и подпиской украденную у доблестными петром и бошировым прошивку какого-нибудь GBU-28AAN "Annihilator" для очередного АНАЛО-ГОВНЕТА? Действительно, мозги нужны.
86 1759111
>>59101
Ты хохол или либирашка? Я вас не оч пока различаю
87 1759115
>>59034

>boilerplate


Котел-тарелка
88 1759122
>>59034
Плата-Бойлер, что-то из оборудования котельных, видимо
89 1759137
>>59034

>Вот например boilerplate как первести?



Типа бабкину плиту-буржуйку заставленную пыхтящими кастрюлями представил? И как бабка с поварежкой на измене суетится бегает, открывает крышки мешает, тут хуяк одна такая кастрюля с борщом с капусткой внучеку убегает кхуям?

Вот это оно.
90 1759138
>>59137

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

Яркий пример - графическое API Vulkan, да и DirectX 12 - там нужно 2000 строк только что бы нарисовать сраный треугольник.
91 1759183
>>59061
Зачем тебе оффлайн словарь в области, которая каждый месяц что-то новое в себя приносит. Гугли и все. В работе программиста огромная доля работы с поисковиками.
92 1759293
>>59027
Охуительный совет чтобы стать новой Никселькиксель.
Антоши, как посчитать сам ов сквеар интеджеров до 10000? Я попытался лупой, но вариэйбл становится негатив"
93 1759303
В реддите скинули купон на бесплатный курс по C на Udemy
действует 2 дня.
(моча не три) (похуй)
https://www.udemy.com/course/c-programming-for-beginners-programming-in-c/?couponCode=1_MONTH_GRATITUDE
94 1759307
>>59137
>>59138
Лол, всегда думал что это табличка на паровозе.
95 1759329
>>59051
сам по себе вопрос странный же говорю, почему другие должные придумать как использовать твои мозги если ты сам не знаешь их приминения, найди блят лекарство от рака зоебал
96 1759331
>>59303
анон молодец, что сюда принес халяву, славься анон бескорыстный!
97 1759384
>>59329
Так то занятие для них я могу найти с легкостью. Другое дело будут ли мне за это платить.
98 1759395
Ура курс за 150 баксов учащий первым трем главам из к&р наканецто

мимо кресто-барон ахуеваю что есть люди реально купившие это за деньги
99 1759434
>>59293

> лупой


Лупом. В остальном все правильно. Все так. Это лучше, чем переводить convolution как "свертка", а deconvolution как "деконволюция". Русская языка велика есть, но для техники совершенно не подходит.
100 1759443
>>59395
"Кресто-пидар" ты хотел сказать? Тред для хипстеров и гомосеков ниже.
101 1759452
>>59384
если ты такой умный, то чому ты еще не наебал систему? а? А? у илона маска было нихуя, а он же наебал, а ты нет. глупо тут аписнять что важно а шо нет когда ты сам ето знаешь, хочешь интересных задач так ищо шобы платили за них тебе, могу только губозакаточную машинку посоветовать купить
102 1759565
Анончики, что за хуйня?
Я практически один в один переписал пример из книжки.
Не понимаю почему?

>expected ')' before numeric constant


> void copy_arr(target1, source, NUM);



https://pastebin.com/P9NaKEZc
103 1759568
>>59565
error: expected ')' before numeric constant
void copy_arr(target1, source, SIZE);
104 1759578
>>59568
нахуй у тебя объявлена функция в стиле до-С89? Если это прототип то нахуя у тебя сама функция в этом же файле лежит?
105 1759594
>>59578
Нихуя не знаю, так у Праты, не ори на меня
gcc.png41 Кб, 1016x803
106 1759609
>>59594
че за тему конкретно читаешь? Если тебе именно с прототипами надо то компильни со стандартом 89.
Нельзя макрос передавать в функцию, потому что в данном случае у тебя copy_array(target, source , size) разворачивается в copy_array(doube target, double source, int 5) и компилятор не считает это адекватным

если без прототипов то держи вот фигню
107 1759613
>>59609
Блин, спасибо, я не заметил что перед вызовом функции зачем-то ее тип написал (void). Меня сбил с толку информативный выхлоп компилятора.
108 1759616
>>59613
люби свой компилятор сука. Пока не будешь его понимать и любить он тебе будет срать в еду и говно в жопу заталкивать
1460476797649.jpg264 Кб, 600x600
109 1759617
>>59616
Окей, буду стараться.
110 1759676
>>59609

>че за тему конкретно читаешь?


Arrays and Pointers.
10я глава.
>>59616

>люби свой компилятор сука.


Прикол в том, что если бы я использовал IDE вместо Notepad++, то оно бы мне подсветило неправильный синтаксис.
anMD9Q5700b.jpg267 Кб, 640x636
111 1759692
Надо получить дескриптор и заголовок сокета из обработчика прерываний и сделать их доступными для вызова функции httpd_queue_work() из основного цикла программы int main().

Нашёл один из примеров: https://github.com/espressif/esp-idf/blob/master/examples/protocols/http_server/ws_echo_server/main/ws_echo_server.c#L84
В нём создаётся указатель на структуру, который недоступен из вне.

Подскажите, плез, как можно переделать?
112 1759828
>>59676
Но ведь подсветка синтакстса есть в н++ изкаробки
113 1760075
>>59828
Есть, но оно не подчеркивает ошибки семантики, только синтаксиса.
114 1760077
>>59609
Я просто хочу прорешать всего прату чтобы перейти уже к изучению крестов.
Это единственный правильный путь.
115 1760095
>>60077
Чё? Нахуя тебе ваще си чтобы катиться в крестоиды?

мимо из крестотреда
116 1760136
>>60077
Но... Страуструп...
117 1760164
>>60095

>Чё? Нахуя тебе ваще си чтобы катиться в крестоиды?



>да, C++ это по-настоящему сложный язык. Его никак не получится выучить за 21 день, ну вот совсем никак. Именно высокий порог вхождения повышает твою ценность как специалиста, не позволяя нанять вместо тебя индуса за еду. Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.

118 1760167
>>60095
C++ Primer Plus например, состоит из отсылок к С примерно наполовину. Собственно, в введении там явно написано: сначала надо знать С.
119 1760189
>>60164
Лол, так под "другим языком" подразумевают не Си. А какой нибудь пайтон или жс.
120 1760313
>>59692
Bump.
121 1760481
Аноны, надо написать kernel module на Линукс, который не общается с реальным железом, но может делать что-то полезное и/или интересное. Идеи?
122 1760552
>>60481
Интерпретатор brainfuck
123 1760561
>>60552
эмм, а нахуя для этого писать драйвер, который будет крутиться в пространстве ядра? Юзерспейс эмулятора вполне хватит, но это ведь не цель.
124 1760573
>>60481
Файл драйвер. Шифровальщик Xor13
125 1760576
>>60481
Или какой нибудь драйвер клавомышки бот для кликеров.
126 1760677
>>59692
Скажите, если непонятно что.

Зря бы не спрашивал.
127 1761194
>>60481
Установщик Windows
7bea2182d8711e59c1468b5ad5123916.jpg1,2 Мб, 1080x1657
128 1761428
Уффф. Оххххх. Надо второй раз читать.
129 1761440
>>61194
фу, чуть не блеванул от упоминания этой параши. Не делай так больше, анон, пожалуйста.
130 1761450
>>61428
Для поинтеров в шапке весьма годная и краткая пдф есть.
131 1761462
Захотел написать программу для своей эл. книги от pocketbook, а там сдк мало того что с 2015 не обновлялся, так еще и на ебучем си, вместо крестов. Так не хочется опять все это дерьмо с велосипедами хлебать.
132 1761464
>>61462

> Программы для устройств Pocketbook пишутся на C с использование компилятора GCC


А вообще, как то можно написать логику на крестах, и как то работать с ней из кода на си?
133 1761510
>>61464
Да. Сделать сишный интерфейс (extern "C", не не использовать C++ типы, перехватить все исключения). Ну и рантайм для C++ должен присутствовать.
134 1761515
>>61510

> Ну и рантайм для C++ должен присутствовать.


Что это значит?
135 1761561
>>61515

Значит как минимум не баре метал со спецфлагами и необходимостью пилить placement new.
136 1761563
>>61561
Там линукс вообще стоит
137 1761585
>>59692
Сделал так.
Не знаю, будет ли работать. По крайней мере компилятор не ругается.

https://pastebin.com/tbSWWZzp
138 1761730
Сап. Есть один нуб, который вообще ничего не знает, но решил взяться за си как за первый язык. K&R ему точно не стоит пихать, ещё не дорос. Сейчас выбор стоит между Пратой и Кочаном. Какой из них предпочтительнее?
139 1761733
>>61730
Я начинал с k&r свой путь, лучшая книга для вката.
140 1761744
>>61730
Нахуй тебе си, обмудок?
141 1761919
>>61730
Прата качественнее.
142 1761931
https://2ch.hk/pr/res/1711268.html (М)

>>1739810 →

> Для Си умельцы скорее всего тоже либ уже налепили.


Зачастую, кстати, у С-дедов такие библиотеки дают лучшую производительность, чем у С++-миллениалов. Быстрее только на чистом ассемблере. Деды в целом и это могут, но долго это. Поэтому на чистом ассемблере пишут только местами: ту логику/вычисления, которая исполняется 85-99% от общего времени.
143 1762053
>>61730
Программирование на C для начинающих, 3-е издание. Грег Перри, Дин Миллер посмотри эту, ещё Дейтелы.
144 1762059
>>1754706 →

Ну и, болтанка в +- полтора кекогерца. Те же пресловутые 5.8 кекогерц опять же были у IBM в те же нулевые в штатном режиме под штатной водой в одном из древних Power.
145 1762061
>>62059

Спиздел, Power 6 595 - 4.2 GHz or 5.0 GHz
146 1762068
В очередной раз рикамендую:

https://github.com/SanderMertens/flecs
147 1762177
>>62068
Нинужна
148 1762259
>>54933

Как вообще вкатится в эти битовые операции? Я до сих пор не понимаю нахуй оно нужно и как работает. Нет, я конечно могу прочитать определение и понимаю что надо делать, но не понимаю нахуя и зачем, где это вообще применять.
149 1762273
>>62259
Разработка прошивок, драйверов, виртуальных машин - первое, что приходит на ум. Вся лоу-лвльщина активно юзает битовые операции.
Будешь декодировать опкоды - поймешь почему битовые операции иногда мастхэв.
150 1762275
>>62273

Что почитать, чтобы понять где их вообще и когда применять? Ну вот в том же k&r чуть ли не с первых глав идет это битоебство, причем предполагается, что ты его уже знаешь и знаешь где как применять.
151 1762301
Мб тут сидят челы шарящие за qml, у меня есть stackview приложение, в хедере сделал label с названием текущей страницы, но проблема в том, что пользователь может пойти по такому пути (главная->настройки->темы) а потом возвращаться обратно, и вот чтобы написать сверху корректное название страницы, мне нужно знать какая именно сейчас страница, есть ли возможность это узнать?
152 1762343
>>62275
Для начала выучи системы исчисления - шестнадцатиричную и двоичную, если не знаешь. Это основа байтоебства. Октальная тоже не помешает, но первые 2 мастхэв, они приоритетнее, особенно на первых порах.
Потом выучи все основные битовые операции - AND, OR, NOT, XOR.
Пойми что такое LSB/MSB, big/little endian, shift left/right, signed/unsigned числа.
Где это применять? Ты это сам решишь. Но я уже перечислил виды софта, где это часто используется.

Пример - у тебя есть 2-байтовое беззнаковое целое число (читай, uint16_t), допустим это число - 1337. В шестнадцатиричной системе это 0х539, в двоичной - 0000010100111001.
Допустим, тебе надо извлечь старший байт этого числа, а это 0х05 (или 00000101 в двоичной). Ты должен создать т.н. маску - в данном случае она будет выглядеть так - 0хff00 (в двоичной - 1111111100000000). Затем, ты должен знать true table операции AND, чтобы понять следущее:
0000010100111001 & 1111111100000000 = 0000010100000000. В шестнадцатиричной это выходит 0х50. Чтобы получить из этого желаемый старший байт (0х05), ты должен сделать сдвиг вправо на 8 бит (каждая отдельная цифра в шестнадцатиричной системе - это 4 бита), получится 0000000000000101. 101 в шестнадцатиричной - это 0х05, то бишь 5 в десятичной.
Вуаля, из числа 0х539 ты извлек старший байт и можешь его использовать для своих нужд.

Примеров использования очень много, это один из наиболее легких и распространенных. Сначала почитай о тех темах, которые я написал в начале этой простыни, как поймешь все это, вернись к этому после за продолжением, где я извлекал старший байт из двухбайтового числа.
Это несложно на самом деле, просто надо привыкнуть.
153 1762401
>>62259
В жизни наверное нет очевидных примеров чтобы объяснить как сложение на яблоках. В первую очередь приходит в голову комбинаторика - например, битовый set, где каждый бит означает свободно или занято. Сдвигами можно перемещать по местам, можно проверять свободные места, занятые места, проверять по маске конкретные места, сравнивать списки мест, находить свободные/занятые одним/занятые в обоих сетах, считать количество занятых.
Дальше у нас трюки связанные с двоичной арифметикой. Ну как мы проверяем четность в десятичной - если оканчивается на 0,2,4,6,8 - четное. Так в двоичной нам достаточно проверить крайний правый бит. Аналогично левый крайний бит обычно означает отрицательное число. А сдвиги - быстрое умножение на степени двойки (как в десятичной сдвиг на 1 цифру это умножение на 10). Фишка в том что это все намного быстрее всяких делений,умножений, в железе.
Далее, используется в шифровании, контрольных суммах, псеворандоме, подсчете хэша строк. Тут сложно объяснить, суть в закольцованности чисел (как часовая стрелка закольцована и после 12 снова 1). Т.е. одна и та же операция сделанная много раз подряд похожа на "обход конем шахматного поля", пока все поле не обойдешь числа не повторятся.
Далее, в архивации/сжатии, т.е. вообще везде - ZIP, PNG, JPEG, WEBM и так далее. Упрощенный пример - если у тебя только буквы a-z это 26, меньше 32 - влезает в 5 битов. Вот для того чтобы конвертировать поток 5-битных данных в обычные 8-битные байты и обратно, тоже нужны побитовые операции.
154 1762418
как написать игру?
где найти туторы или документацию на си по SDLv2?
155 1762421
>>62418
без задней мысли
в гугле
156 1762487
>>62259

>Как вообще вкатится в эти битовые операции? Я до сих пор не понимаю нахуй оно нужно и как работает. Нет, я конечно могу прочитать определение и понимаю что надо делать, но не понимаю нахуя и зачем, где это вообще применять.


У тебя есть гугль, вики, СО и хабр. Нет, ты пришел с этим вопросом на борду для анимешниц.
157 1762572
>>62421
там только с++
158 1762573
>>62572
Правильно. Писать что то на c смысла нет.
159 1762580
>>62572
А ты писать игру на чистых сях вздумал, шиз?
160 1762590
>>62572
Неправда. Чтобы найти sdl2 на с++ это еще надо очень сильно постараться.
161 1762592
>>62572
Пиши в гугле: sdl2 getting started
162 1762622
Задача перевернуть массив целых чисел.
Я сделал и мне понравилось, тащусь с такого:
https://pastebin.com/h50E6zBm
163 1762709
>>62622
Это не declaration. Это definition.
164 1762710
>>62622

>swap через вычитание


аххахахаха
165 1762776
>>62709
Блин, точно. Спасибо.
>>62710
Задание было про целые числа, ну я и подумал так сделать, ведь нигде кроме целых такое невозможно, без потери точности.
166 1762798
>>62776
Боюсь, что это UB.
167 1762838
>>62798
Это типа ХЗ? Согласен.
168 1762887
>>62177
Почему?
169 1762898
>>62887

Мало того что про крайне, крайне узкоспециализированную парадигму для области где нужны уже кресты, так еще и всё на шаблонной магии построено.

Ну и как бы сама парадигма она про очень YOBA ААА с очень большими бюджетами, где нужна оптимизация.
170 1762900
>>62259

>Как вообще вкатится в эти битовые операции? Я до сих пор не понимаю нахуй оно нужно и как работает.



Смотришь таблицу истинности

& - 1 когда в обоих числах в этом месте 1.

| - 1 когда зхотя бы в однгом или в обоих

^ - 1 когда только в одном из двух, но не в обоих.

Из этого следует, что проверяем битики с помощью &, склеиваем маску из отдельных битов с помощью |. Сами биты -это степень двойки, пушо двоичная система. То есть 1 - первый бит, 2 - второй бит, 4 - третий, 8 - четвертый, 16-пятый итд. Эти числа (степени двойки) ты дефайнишь по смыслу и получается вот всякие вот маски.
171 1762975
>>62898

>для области где нужны уже кресты


Тип там со стороны крестов как-то неудобно конкретно этой библиотекой пользоваться?

>на шаблонной магии построено


Вангую, без неё тут охуеешь от boilerplate строчек, то есть шаблонная магия - уже требование.

>Ну и как бы сама парадигма она про очень YOBA ААА с очень большими бюджетами, где нужна оптимизация.


Окей, ну вообще был вопрос про конкретно эту библиотеку. Для использования "большими" она уже сгодится?
172 1763133
Есть структура с разнотипными данными. Нужно прочитать из файла часть данных в конец структуры. Вот так будет допустимо прочитать?

fread((char *)&structura + 36, 1, 8, file);
173 1763136
>>62838
Я просто точно не уверен. Но если там будет андерфлоу.
174 1763139
>>62975
В крестах предпочитают шаблонную магию, вместо макросов.
175 1763141
Переменные всегда переполняются сбрасываясь в ноль и заполняясь по новой или можно отключить переполнение, чтобы было только максимальное значение в переменной сколько ни прибавляй?
176 1763166
>>63141
Нет, вроде отключить нельзя. Ручками делай.
https://stackoverflow.com/questions/121240/how-to-do-unsigned-saturating-addition-in-c
Вроде есть флаг компилятора чтобы программа падала в случае переполнения.
177 1763192
>>63141
Заворачивание беззнаковых задано стандартом.
Переполнение знаковых не определено, отлавливается -ftrapv
sage 178 1763363
Пиздец, спросили какую-то лютую хуету, которую можно загуглить за 10 секунд - накатали несколько простынь.

Спросил что посложнее - проигнорили. Заебись.
179 1763446
>>63133
Перепиши, чтобы не было волшебных чисел
180 1763483
Начал читать

>Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013)


пока все хорошо
181 1763549
>>63363
Если ты про те сокеты, то никто не собирается писать за тебя программу. Если нет, бампани вопрос.
182 1763573
>>62709
>>62622
Бля, а нахуя люди такие комменты пишут?
Мало того что неправильный термин, так еще и не раскрывающий сути коммент. Если swap еще понятно, что делает функция, то disp - загадка, то ли disposition, то ли dispersion то ли еще что.
Раз ты пишешь коммент к функции, то напиши человеческим языком, что делает эта функция, то что это определение функции я и без тебя вижу, дублировать такую информацию ни к чему.
Ну а вообще, комменты не нужны, надо правильно подбирать имена, чтоб они сами за себя говорили.
183 1763575
>>63573
display обычный
39e132d7050226679d2b25952d762d68.jpg17 Кб, 474x419
184 1763582
>>63549

>никто не собирается писать за тебя программу


Я не просил писать за меня программу. Процитируй, где именно я об этом прошу.
inb4: ты об этом подумал, да

Мне нужна была и, возможно, потребуется (т.к. ещё не проверял свой говно-код) небольшая помощь.
Конкретно в том случае - меня смутил указатель на структуру, который нужен только для того, чтобы скормить его функции, принимающей указатели на структуру.
В примере он доступен за счёт вложенности. А мне он нужен глобально.

Вроде вывернул, но проверить пока не судьба.
185 1763590
Читаю значится сейчас Прату после планирую пройти K&R и в плюсы. Стоит ли прочитать что-нибудь ещё или старт уже нормальный?
186 1763592
>>63483
Держи меня в курсе.
15948363544220.jpg54 Кб, 500x500
187 1763612
Даров сисяч.

Я покакол. Такие дела. Говно было длинным и долго не хотело вылезать, но потом все-таки вылезло.

И вот что я тебе скажу: ты ни за что не назовешь мне его тип правильно. Вот оно, смотри:

int ✱(✱arr(int, char ✱ const (✱const ✱)⟦10⟧))⟦20⟧;

Ты не сможешь.
236e17a73d0ae54a7fa423ee156c3dd5.png140 Кб, 300x256
188 1763623
15959995450330.png283 Кб, 400x400
189 1763626
>>63363
>>63582
Ты зря кукарекаешь, вопросы не такие уж и энтрилевельные.
А вот ты пиздуй в /ра со своей лютой есп-хуетой, тут никто твои говнотулчейны знать не обязан.
190 1763627
191 1763628
>>63612
Съеби
88-882097call-me-crazy-but-i-dont-think-the.png237 Кб, 840x890
192 1763653
>>63626
Тулчейны тут не при чём.

Вопрос целиком Си-шный, по указателям на структуры.

У тебя от просмотра чужого кода, размером в три жалких функции, выпадает дилдак из очоча?

Тема закрыта. Спасибо за внимание.
193 1763661
>>63363
А кого ты здесь хотел видеть? Гуру отвечают только за деньги, осиляторы расскажут, что могут.
194 1763662
>>63590
Бамп
195 1763664
>>63612
arr is a function of
1. int
2. ptr to const ptr to array[size=10] of const ptr to char
returns array[size=20] of ptr to int
196 1763665
>>63664

> arr is a pointer to function of


Быстрофикс
197 1763669
>>63664
arr is a function of
1. int
2. ptr to const ptr to array[size=10] of const ptr to char
returns ptr to array[size=20] of ptr to int
Еще разок
15928383845260.jpg7 Кб, 234x216
198 1763701
>>63669
Наш победитель!
Этот тредик поадекватнее, ясно

>>63665
По-царски пофиксил, лол
199 1763709
>>63653
Ну ты же в силу своих знаний не видишь, что как такового "main" у программы нет, а независимые хендлеры из других контекстов вызывает httpd (обычно это простой демон). Хоть бы разобрался, что дяди написали в примере, потрейсил.

По той же скромности познаний ты не слышал, что сокет закрывается вместе с соединением и вне обработчика (и процесса) его дескриптор не имеет смысла.

Твое желание идет полностью вразрез логике примера.

Но если тебе хочется собирать открытые соединения, то их можно хранить в глобальном списке за rw-локом. Может быть что-то для этого есть и в фреймворке, но читать доки я не собираюсь. Да, этот вопрос

> Тулчейны тут не при чём.


исключительно об этом тулчейне.
Нужно быть чуть менее резким, если ты сам не можешь поставить задачу и не знаешь как работает либа и пример.
200 1763713

>#ifdef __x64_x86


>typedef int64_t INT_T;


>#endif


>#ifdef __i386__


>typedef int32_t INT_T;


>#endif



За такое выебут в жепы?
201 1763715
>>63713
Нет, если __макросы стандартны для твоего конпелятора.
202 1763716
>>63713
А зачем такое?
Пользуйся int_least32_t и int_fast32_t в зависимости от необходимости
203 1763721
>>63590
Всё ещё бамп
204 1763727
>>63483
>>63592
Дочитал введение до виртуальной памяти, пока почти ничего нового.
Обнаружил небольшую оговорку на 5й странице.
205 1763729
>>63721
Начинай сразу с плюсов.
206 1763730
>>63729
Хоть уже и поздно но почему? Мне интересен как лоулевел си со всеми этими контроллерами, ядрами, драйверами так и кресты со своим многообразием.
207 1763769
>>63730
Перечитай три поста в цепочке, не ставь C и ядра с драйверами в один ряд. Если C можно освоить за 1к страничек, то к ядру того же линукса ты приступишь только прочитав альманах раз в 10 больше.
208 1763774
>>63769

>три поста


Да ну нахуй, Прата поинтереснее. Как раз 200 страниц осталось добить. Прекрасно понимаю что это только начало и дальше ебаться придётся сильно очень. Но мой план таков: базовый С - C++ до продвинутого левела - устраиваюсь на работку - добиваю C.
209 1763786
>>63774

>Как раз 200 страниц осталось добить


Бротан, пока ты не натрахаешься с сегментейшн фолтами и указателями на указатели указателей, а также требованиями хотя бы одного из стандартов, ни о каком "начальном уровне" не может идти и речи.
210 1763791
>>63774
Как раз таки лучше сначала добить Си до уровня /списки на макросах/указатели на функции/longjmp-контексты/сигналы/posix-треды. Очень поможет с пониманием того, что происходит в ++.
211 1763797
>>63786
Пошёл трахаться чё. За всех двачеров сука, парни!

>указатели


Вообще не ощутил проблем с этой темой. Я нормальный?
Какой стандарт наиболее актуальный? Самый последний или какой-то пораньше? И что долго их учить типо?
>>63791
Бля, а что по работе на чистом си? У меня дедлайн 1 год до вката куда-нибудь.
212 1763798
>>63573
Бля, ну я же пошутил, ну.
Сама функция swap реализована предельно ебануто, мне просто доставил сам факт возможности такого. Без временной переменной.
213 1763799
>>63727
Можешь прямо тут выложить ее, что тебя держит?
214 1763829
>>63716

>Пользуйся int_least32_t и int_fast32_t в зависимости от необходимости



https://www.qnx.com/developers/docs/6.4.1/dinkum_en/c99/stdint.html
Не вкурю в чем разница и как это связано с совместимостью.
216 1763840
>>63829
Допустим ты хочешь чтобы программа работала быстро с 8 битными значениями, а в процессоре у тебя 64 битные регистры. Тогда ты берешь int_fast...t, и все работает максимально быстро, но в памяти массив таких значений будет занимать в 8 раз больше места. Если же тебе наоборот важнее место, то берешь int_least...t и компилятор подберет минимальный регистр в который значение влезет. Но там возможны лишние инструкции, типа cbw/cwd/cdq, на преобразование в 64 бита для рассчетов, потом упаковка обратно в 8.
217 1763849
>>63797

> Бля, а что по работе на чистом си? У меня дедлайн 1 год до вката куда-нибудь.


В целом нужно быть спецом в какой-то области, языка одного не хватит. Вакансии обычно такие: мк, linux (системеный софт, сеть, модули). Больше прям "чистого" си нет. Джун должен уже в чем-то хорошо разбираться, работы мало. Вот так что примерно 10 Прат накодить какой-нибудь системно-сетевой хуеты для linux и что-нибудь сможешь, но года точно не хватит.
218 1763939
>>62975

>шаблонная магия



Макросная, конечно же.
219 1763940
>>62975

Да нормальная библиотека, просто ты даже игровую-то логику заебешься в ECS-парадигму укладывать, что уж говорить про сириус бизнес логику вроде всяких там веб-серверов с откликом 0.5мс.
220 1763947
>>63791

>добить Си до уровня /списки на макросах/


Прочитал вписки на макросах
221 1764033
>>63797

>Бля, а что по работе на чистом си? У меня дедлайн 1 год до вката куда-нибудь.



Покупаешь у китайцев девборду на stm32, учишь тамошний даташит, покупаешь и обмазываешься радиоконструкторами на всяких там бредбордах, пытаешься устроиться или в пыняронку или в прочие гражданские производственные объединения, еще чудом сохранившиеся после совка, по выпуску утюгов "чугуевск", чей гендир уже сыто облизывается на сдать всю хуйню в металл а недвигу - под офисы и склады.
222 1764034
>>64033

>пыняронку



Ну или в бульбаронку, если из беларуси.
want.jpg52 Кб, 550x412
223 1764054
>>64033

>или в прочие гражданские производственные объединения, еще чудом сохранившиеся после совка, по выпуску утюгов "

224 1764060
>>64054

Нужно спешить, пока ты пишешь эти буквы, в раше один красный директор уже пожимает волосатую руку хача трюкача , в то время как грузчики вывозят совковое оборудование (у тех кому повезло в 90е и нулевые и кто сыто мурчали - списанное немецкое) в металлоприемку.
225 1764104
>>63797

> У меня дедлайн 1 год до вката куда-нибудь.


Учи джаваскрипт
Screenshot20200730115251.png153 Кб, 962x579
226 1764123
>>63799
Собственно, вот. как и в кодинге, скопипастили наверное
227 1764170
>>62580
да на чистых сях
>>62592
там опять же с++
228 1764177
>>64170
Чому opengl не возьмешь? И тебе нужен будет физический движок? Если да, то мне кажется ты сдохнешь быстрее, чем успеешь все это написать.
229 1764180
>>64104

А дальше куда? Лендинги клепать за 1,5 рубля7

Вопрос философский какой язык выучит что б потом можно в любую стороны перекатиться?
230 1764182
>>64177
на opengl не смотрел еще
физический движок возможно будет нужен
231 1764183
>>64182
Ты это чисто для себя делаешь? И что ты хочешь в конце получить?
232 1764184
>>64180

> А дальше куда? Лендинги клепать за 1,5 рубля7


А дальше на работу где платят в несколько раз больше чем на сях, хотя конечно язык не илитный.
233 1764187
>>64182

Короч, пчёла ты ерохинская, вот тебе для затравки, чтобы велосипед с самой руды не изобретать:

https://github.com/orangeduck/Corange

прикручиваешь нему вот это:

>>62068

Потом на выбор - или вот это:

https://www.lua.org/pil/contents.html#P4

Или вот это:

https://duktape.org/

И потом делаешь для всего этого гуй. На вот этом:

https://developer.gnome.org/gtk3/
234 1764198
>>64184
говорят на дваче фронтенд всё. сотни вкатышей на одну вакансию.
235 1764204
>>64183
хотелось бы в конце заработать на стиме
236 1764216
>>64204

>хотелось бы в конце заработать на стиме



В таком случае переучивайся на сисярп и качай Юнити.

С с очень большой натяжкой может быть востребован в мобильном гейдеве - там есть абсолютно незанятая ниша выосокооптимизированных игорь, которые летают на китайских калькуляторах за десятку из салона связи в зажопинске.
237 1764266
>>64187

я еще не готов писать свой рендерер
игра 2д будет
238 1764267
>>64266

>corange


быстрофикс
239 1764289
>>64266

А должен быть готов, если уж полез в сириус С.

Задача должна быть амбициозной.

Движок на сях с редактором и возможностью скриптинга, на котором можно писать быстрый игорь для мобилок-калькуляторов вполне себе амбициозна.
240 1764295
>>64187
Corange тема, правда как мне показался немного тяжеловат для примитивных (что в 90% случаев пишут) 2d проектов. Для 3d вроде гуд.
мимо разбирал демку платформера и движок
241 1764316
>>62275
Насчёт где применять - низкоуровневая математика (быстрый обратный корень Кармака, логарифм целого числа, предпосчитанные таблицы синусов и косинусов через сложение и умножение, правда уже не актуально быстрый модуль...), всё мать его хеширование и криптография (любой хеш алгоритм, кодирование Хаффмана...), низкоуровневая работа с ошибками (при передаче данных например), маски и error коды правда тоже не особо актуально, только если в системщине. Что сразу на ум пришло, а вообще - все на низком уровне делается с байтооебством и оттуда порой вытекает магия высокого уровня, например оптимизации в высокоуровневых языках
242 1764348
>>64316
Всё это проще и приятнее делать на плюсах, чем на говне мамонта.
243 1764350
>>64316

> быстрый обратный корень Кармака


Це UB
244 1764352
>>64348
На плюсах пишется тоже лоу лвл софт, наивный. Ебать битики, разрабатывая на плюсах, отнюдь не редкость.
245 1764359
>>64350

Когда петушки научатся в отличать UB и ID.

Петушков послушать так нужно венду и лялих сносить -там тоже UB - по указателю в регистры железяк лазиют.
246 1764361
>>64359

Да и сам язык UB - с помощью union можно битики теребить и анальные поля гладить.
247 1764363
>>64359

>The following code is the fast inverse square root implementation from Quake III Arena...


long i;
float x2, y;
i = ( long ) &y;
...
y = ( float ) &i;
248 1764411
>>64350
Если компилировать с отключеным strict aliasing, то норм (а в студии он так вообще всегда отключен)
249 1764554
Как часто вы используете постфиксный инкремент/декримент?
250 1764556
>>64554
Всегда
251 1764578
>>64554
Любой контейнер на массиве например, не?
252 1764580
>>64578

>контейнер


А туда ли ты пришёл?
253 1764586
>>64554
Никогда.
254 1764604
>>64580
Да, там где нужно, а ты зачем интересуешься?
255 1764762
>>54859 (OP)
Допустим, у нас есть некоторая библиотека, подключаемая к основной программе, а в ней есть переменная "value". Интерфейсом (API) библиотеки предусматрено только чтение этой переменной.
Правильно ли будет в таком случае сделать переменную "value" статической(т.е. изменять её можно будет только в файле библиотеки), а для доступа к ней сделать функцию чтения этой переменной?

Например так:

>/ Внутренняя переменная библиотеки /


static uint8_t value = 0;

>/ Функция доступа к внутренней переменной /


uint8_t read_value(void)
{
return value;
}
256 1764836
>>64762
Я не оп, но совершенно правильно.
У такого подхода есть еще плюс: в будущем переменная может быть убрана, а функция сможет вычислять обещанное значение.
S565435375654625462546.png218 Кб, 840x638
257 1765030
>>64604

>а ты зачем интересуешься?


Хуй будешь?
258 1765047
>>63709

>Ну ты же в силу своих знаний не видишь


>По той же скромности познаний ты не слышал


>Нужно быть чуть менее резким


Хех, пока читал - мысленно представлял, как ты раздуваешься, набивая текст, а при отправке трещишь по швам.

>Твое желание идет полностью вразрез логике примера.


Было бы странно, если бы пример делал именно то, что я хотел, да?
259 1765057
Объясните мне бажожда доступно почему такая реализация не работает и не должна работать?

double lowest = ((a < b) && (a < c)) ? a : ((b < a) && (b < *c)) ? b : c;
image.png82 Кб, 1770x824
260 1765058
>>65057
Лол, указатели спиздили.
261 1765059
>>65057
Потому, что ты проебался с синтаксисом тренарного оператора.
image.png75 Кб, 1576x564
262 1765067
>>65059
Лол, только на скрине заметил, что не проставил указатели в конце. Вроде заработало. Спасибо, пацаны!
263 1765090
>>65067
Там все шкобки не нужны
832868.png74 Кб, 645x729
264 1765098
265 1765100
>>65090
Ну скобки хоть какую-то редабильность дают этому месиву. Или так норм писать ммм?
266 1765102
>>65098
Да да да, давай порофли над вкатывальщиком на 8 дне учёбы.
267 1765103
>>65100
Пиши через if
268 1765107
image.png10 Кб, 585x96
269 1765153
Объясните дебилу, что не нравится этому ебобаному компилятору. Как тут может быть оверфлоу? Я так понял, что -1 не отнимает единицу, а прибавляет 232-1, и поэтому технически получается оверфлоу. Тогда как это исправить, оставив при этом беззнаковый тип?
270 1765157
>>65153
упд: замена на int32_t не помогла
image.png9 Кб, 550x98
271 1765160
>>65153
упд2: MT32_R = 31
272 1765164
>>65153
Короче, нашел проблему. Единица, которая в начале, воспринималась компилятором как signed int. Решил проблему так:
static const uint32_t lower = ((uint32_t)1<<MT32_R)-1, upper = ~(((uint32_t)1<<MT32_R)-1);
Выглядит отвратно, но хотя бы варнингов нет.
273 1765166
Пацаны, вот есть адресное пространство процесса. Когда мы исполняем уже готовый опкод в С, как логически осуществляется его работа на уровне памяти? Я это как представляю: код исполняется в рамках отдельного процесса, у него есть своё адресное пространство, там лежит сам код, данные программы и её стек. Где тут КУЧА и причём тут КУЧА?
274 1765175
>>65164

>Единица, которая в начале, воспринималась компилятором как signed int


Натуральные константы можно делать unsigned добавлением u или U если это и надо было
275 1765179
>>65175
Спасибо. Знал только про существование L и f.
276 1765189
>>65166

>готовый опкод в С


Чаво? Опкод - кодировка определенной комманды, которую исполняет процессор определенной архитектуры. После опкода идут, как правило, immediate значения и/или регистры, вместе они формируют инструкцию, например, mov rax, rbx => 48 89 d8, в данном случае, опкод это 48, в которую закодирована команда mov в архитектуре х86-64. Что значит, блять, готовый опкод в С? Ты проверь сначала знаешь ли ты то, о чем ты говоришь.

>Где тут КУЧА и причём тут КУЧА?


Куча - это отдельно выделенный сегмент памяти для: а) Хранения буферов, размер которых неизвестен во время компиляции. б) Для хранения больших буферов.
Попробуй создать массив на 1 гигабайт на стэке, у тебя программа свалится в сегфолт из-за переполнения стэка. Стэк - СТАТИЧЕСКИЙ сегмент памяти, который используются для вызова фнукций (стэковые фреймы процедур определяются как раз там), для хранения переменных окружения и локальных переменных. Куча - ДИНАМИЧЕСКИЙ сегмент памяти, использование которого я объяснил чуть выше.
277 1765191
>>65166
Куча емнип там же где и стек, т.е. в сегменте данных. Стек и куча могут даже пересечься, т.к. увеличиваются навстречу друг к другу. как-то так, вроде.
278 1765200
>>65191
Это зависит от ОС, в Линуксе, например, между стэком и кучей есть memory mapped area, куда маппятся все динамические либы (тот же libc) и где выделяется память при системном вызове mmap.

>могут даже пересечься


В популярных ОС этого не случится. Размер стэка статичен, а вот при выделении слишком большого кол-ва памяти на куче, если следующая аллокация затронет стэк, то память на куче просто не выделится и malloc вернет NULL
279 1765209
>>65189
Куча является частью адресного пространства процесса?
280 1765214
А-а-а-а, всё, я понял, спасибо за ответы
281 1765216
>>65164

>Единица, которая в начале, воспринималась компилятором как signed int



Моё любимое UB
unsigned long long l = 50000 ⚹ 50000;
printf("%llu",l);
282 1765221
>>65209
конечно, а как ты себе это представлял? Ты думал, что куча расшарена на все процессы или что? Странный вопрос просто, не обуссудь.
283 1765222
>>65166
Стандартом не описано.
284 1765223
>>65221
*обессудь
быстрофикс
285 1765224
>>65222
это был скорее вопрос не по си, а по основам работы операционных систем.
286 1765225
>>65221
Да я Таненбаума введение читаю, он там нихера про кучу мне не написал пока, только на голову наложил, зато про прерывания от души рассказал по
287 1765227
>>62710
Смотри какой я дебил, но мне нравится.
https://pastebin.com/ZLg8kCWG
288 1765228
>>65224
Вы извините, что я итт спрашиваю, просто где ещё, в джаваскрипт-треде, что ли, лол. В общем шизы одни
289 1765232
290 1765233
>>65100
По крайней мере второй уровень выглядит избыточным.
ackchyually.jpg7 Кб, 225x225
291 1765234
>>62709
>>63573
Определения также являются объявлениями
292 1765342
>>65047
Давай я еще раз попробую до тебя донести:

> Надо получить дескриптор и заголовок сокета из обработчика прерываний и сделать их доступными для вызова функции httpd_queue_work() из основного цикла программы int main().


В логике сервера main выступает в виде "стартера", сервер вне хендлеров потоки не порождает. Так что где ты хочешь использовать тот мусор, что можно получить, - загадка.

Заголовок (заметь, не сокета, а http-запроса) будет состоять из кучи поинтеров на разные куски буферов, они будут очищены после отработки хендлера в queue. Получаем мусор на выходе.

Дескриптор сокета после отработки хендлера - мусор.

>Было бы странно, если бы пример делал именно то, что я хотел, да?


Да, даже более странно было бы, если пример создавал отдельный поток и ебашил queue_work() по невалидным указателям и дескрипторам из собраного мусора.

> Хех ...


На вопрос твой никто не отвечал, сам ты усилий никаких не приложил. В ответе по коду ни единого слова, только вот этот перл.
293 1765348
>>65342
Посмотри на эту функцию:
https://github.com/espressif/esp-idf/blob/master/examples/protocols/http_server/ws_echo_server/main/ws_echo_server.c#L56

Она получает заголовок и дескриптор сокета из обработчика.
Насколько я понял, её можно использовать, чтобы сервер отправлял данные самостоятельно, не дожидаясь сообщений \ запросов от клиента, кроме первого.

>На вопрос твой никто не отвечал, сам ты усилий никаких не приложил. В ответе по коду ни единого слова, только вот этот перл.


Я стараюсь, порой безрезультатно.
sage 294 1765351
>>64836

> У такого подхода есть еще плюс: в будущем переменная может быть убран


И минус: в будущем переменная скорее всего не будет убрана, и софт будет тормозить на пустом месте, пока его не перепишут с нуля. А ведь можно было просто сказать "не пишите, будет ой-ой".
295 1765511
>>65189

>mov rax, rbx => 48 89 d8


>опкод это 48, в которую закодирована команда mov в архитектуре х86-64


Если не знаешь ассемблер, зачем выёбываться? 48 это префикс (REX.W), который обозначает, что следующий за ним опкод будет принимать 64-битные операнды. Опкод (точнее, один из опкодов) mov - 89.
296 1765837
>>65351
Ой, ну какая там разница в скорости. Зато детали реализации надёжно скрыты, а это правильно.
297 1765967
>>65351
>>65837
#define get_val({ extern int __val; __val; })
sage 298 1765992
>>65837
Разница в скорости практически никакая, но подобные стремления все огородить от самого себя никогда не ограничиваются одной переменной.

>>65967
Не решает проблему. Если у тебя либа, и ты выкинешь __val, то старые версии программ ее не найдут. А если ты контролируешь код, который использует эту переменную, то у тебя вообще проблем нет - встроенный в любую IDE рефакторинг отлично заменит использование переменной на вызов функции. И даже если рефакторинга нет, и ты вимомазохист, ты все еще можешь одними регэкспами справиться.
299 1766010
>>65342
Спасибо, высокомерный пидор.
image.png5,3 Мб, 1908x2520
300 1766079
Что скажете по поводу этой книги?
image.png5,3 Мб, 1908x2520
301 1766080
Что скажете по поводу этой книги?
302 1766081
>>63661

>расскажут



Читаю каждый пост в двух тредах, отвечаю только если совсем нехуй делать, или если прям непосредственно в день или в неделю в которую читаю вопрос разбирал тему, которой он касается, ну или если вопрос написан ну прям запредельно адекватно (редкость). На высеры вроде пацаны чето не компилица ебанешься... или ахуеть как джейсон валидировать от сука! любому адеквату (и не только) отвечать будет попросту западло.

мимо кресто-барон 7 лет коммерческого опыта, на крестах и сях со школы
303 1766082
>>66080
Нормально, все энтри левел книжки более-менее одинаковые.
304 1766088
>>66081

>любому адеквату (и не только) отвечать будет попросту западло.


Ну да, ну да.
Сюда ты зашёл в надежде обсудить теорему Сосницкого-Лавуазье. А тут на тебе, у кого-то что-то не срастается на каком-то уровне. да как они посмели.

Пошёл на хуй, короче.
305 1766089
>>66080
Кал бомжа. Читай кернигана & ричи и не выебывайся
306 1766160
>>66089
на месте, я спокоен
307 1766187
>>66089
А Прата как же?
308 1766233
>>66080
Я бы с такой обложкой не брал.
image.png387 Кб, 474x548
309 1766247
>>66233
Почему? Современно, модно, молодежно.
310 1766270
>>66080

>Порезвись в стандартной библиотеке С


Блять.
311 1766327
Сяч, здравствуй снова. Вот есть такая конструкция:

if(IP>=SIZE_PROG || IP<0 || somefunct(&IP)) return -1;

ИП после вызова вероятно получит новое значение. Я же правильно понимаю, что конпелятор ЭНИВЕЙ выставит самый высокий приоритет функции, а потом уже распределит остальное?

>>66080
Что-то хер встал с этих аннотаций.
312 1766375
>>66327

>что конпелятор ЭНИВЕЙ выставит


На компилятор нельзя надеяться.
Нужный тебе приоритет нужно обозначать скобочками, как в условиях, так и в арифметических выражениях.
Как в нашей конторе говорили дедушки (си-синьоры с большим опытом работы): "На компилятор надейся, да сам не плошай".
313 1766376
>>66081

>кресто-барон 7 лет коммерческого опыта


За 7 лет стал синьором?
Почему так быстро?
314 1766387
>>66375
Судя по ассемблерному листингу, приоритет у первой операции. А дидам - спасибо, так и сделаю.
315 1766397
>>66327
Нет, с чего ты взял? Слева направо, причем до первого сработавшего.
316 1766426
>>66327
int a;
some_actions(&a);
if (a &&
a==100)) printf("*a==100!");

Вопрос: можно ли так писать и почему?
317 1766453
>>66426
а почему нет?
только зачем отправлять адрес адреса в какие-то
действия?
318 1766473
>>66426
Писать то можно, ведь компилятор и не такое сожрет.
Но не нужно, потому что тот, кто будет поддерживать твой код, найдет твой адрес и даст тебе люлей за такой говно-style.

Одна из Парадигм Правильного Программирования (ППП) гласит: когда пишешь код, всегда пиши его так, как будто бы человек, который будет работать с твоим кодом, знает твой адрес.
319 1766488
>>66453
some_actions - это какие-то действия с указателем перед проверкой, даун.

>>66473
Евгеньваганыч, вопрос был не про стиль, а про корректность последней строчки.
320 1766493
>>66488

>Евгеньваганыч


Я писал пост абсолютно серьезно.

> вопрос был не про стиль, а про корректность последней строчки.


Мой пост и относится к последней строчке. Написана она через жопу: почему человек, который будет читать твой код, должен догадываться, как компилятор выставит приоритет в условии? Поставь нужные скобочки, чтобы приоритет мог трактоваться однозначно.
321 1766515
В треде есть студенты Школы 21, которых, как я слышал, дрочат на Си?
Расскажите, что и как у вас в плане сложности обучения и можно ли вылететь из школы, если нихуя не социализированный хиккан
322 1766528
>>66515

>Школы 21


Что это?
Какая та параша типо "Академии ШАГ"?
323 1766531
>>66515
Подумай пчел, это для совсем необучаемых дебилов. И туда как бы идут всякие дядьки по 32-35 лет без образования, я не шарю но думаю ты там не в своей тарелке будешь. Ну и если бы ко мне на собеседование хрюшка (особенно если бы мне нужно было найти си-тварь) привела пчеленсона и он бы представился как ученик школы 21 я бы ему сразу сказал эм ну нам надо подумааать))
image.png2,2 Мб, 1280x750
324 1766536
>>66531

>привела пчеленсона и он бы представился как ученик школы 21 я бы ему сразу сказал эм ну нам надо подумааать))


Што, прямо вот так бы и сказал: "эээм хрю мня пуук мне нада падумать))))".
А если бы это был бы ученик Академии ШАГ тоже бы так ответил?
325 1766537
>>66426

>можно ли так писать и почему?


(4). Unlike the bitwise binary & operator, the && operator guarantees left-to-right evaluation; there is a sequence point after the evaluation of the first operand. If the first operand compares equal to 0, the second operand is not evaluated.
326 1766539
>>66537

>(4). Unlike the bitwise binary & operator, the && operator guarantees left-to-right evaluation; there is a sequence point after the evaluation of the first operand. If the first operand compares equal to 0, the second operand is not evaluated.


А можно теперь человеческим языком?
327 1766568
>>66539
Выражения между &&(и ||) вычисляются слева-направо, если одно не соответствует условию, то следующие не вычисляются. Т.е. эта хуйня:
if (a && ⚹a==100)) printf("a==100!");
эквивалентна:
if(a){
if(⚹a==100){
printf("
a==100!");
}
}
328 1766581
>>65992

> А если ты контролируешь код, который использует эту переменную, то у тебя вообще проблем нет - встроенный в любую IDE рефакторинг отлично заменит использование переменной на вызов функции. И даже если рефакторинга нет, и ты вимомазохист, ты все еще можешь одними регэкспами справиться.


Испанский стыд, достаточно макрос переписать.

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

Вообще вот если переменная интенсивно используется юзер-кодом и не поддается передаче юзеру (т.е. меняет состояние между вызовами из одного потока) - она разделяемая, такими обычно бывают всякие спинлоки и счетчики. Спинлоку можно почти без оверхеда предоставить функциональный интерфейс, а счетчик должен иметь интерфейс без функции.
Лучше не иметь подобных объектов в либе, в остальных случаях обычно используется функция, не всегда скрытая макросом.
329 1766599
>>66539
Учи английский, ведь авторы Си говорят на нем, а не на украинском.
330 1766639
>>54859 (OP)
а есть толковые книги на русском? я инглиш ниасилил, патамушта я ватан и топлю за славянский софт, мечтаю купить русский комп, на эльбрусе и накатить туда астру, двигать вперёд отечественную айти индустрию, назло врагам и на зависть недругам, ибо за державу обидно, да, но вот заковыка: нужно знать Си, а с инглишем беда, да и боюсь я, что изучение инглиша пошатнёт мои внутренние скрепы и порушит патриотизм, как мне быть, аноны? я реально боюсь, накидайте ссылок, как изучить Си на моём великом и могучем великорусском языке
331 1766641
>>66639

>а есть толковые книги на русском?


Прату уже давно перевели и вполне годно.
332 1766647
>>66639
Полно русских языков программирования.
333 1766652
>>66647
на 1С операционные системы не пишут (
а Си на инглише, это ставит меня перед дилеммой: я хочу помочь Родине, но для этого нужно знать годный ЯП, то есть Си, а в то же время я не хочу учить инглишь, потому что я его плохо усваиваю, да и не хочу подрывать свой патриотизм чтением иностранной литературы и слушанием вражьих голосов, мне комфортно среди родных берёз и осин, а все изучавшие инглиш хотят на чужбину, рисуют поросёнка и читают "пора валить"
334 1766653
>>66647
Первый 1c а другие?
335 1766655
>>66652
Надо, Федя, надо учить язык вероятного противника. Думаешь полковник Исаев учил немецкий из любви к вражьим голосам Гёте?
336 1766657
>>66080
Странно загуглил книжку нашёл похожую от двух авторов
Автор: Дэвид Гриффитс, Дон Гриффитс
А теперь одна хуемразь в авторах?
337 1766659
338 1766665
>>66655
тяжело даётся мне эта вражина, душа к нему не лежит, и слова всё хитрые, читаются не так, как пишутся, бесовщина сплошная, как из Земля матушка терпит окаянных
я хотел было побырому выучить, но быстро из меня это выветривается, видать отторгает её моё нутро русское
339 1766668
>>66665
Я ночи насквозь спать не буду, последнего здоровья лишуся, но… — и, скрипнув густыми мелкими зубами, докончил: — язык этот выучу! На английском языке буду без нежностев гутарить с мировой контрой! Пущай гады трепещут заране!
sage 340 1766669
>>66653
Очевидный кумир.
341 1766676
>>66668

> язык этот выучу! На английском языке буду без нежностев гутарить с мировой контрой! Пущай гады трепещут заране!


Кончен разговор, Нагульнов! Решением бюро ты исключен из наших рядов.
Такие вы партии не нужны. Клади сюда партбилет!
342 1766681
>>66639
катись-ка отсюда нахуй, Иванушка-дурачок хотя скорее ты просто недотролль
343 1766707
>>66653
Да их сотни.
344 1766710
>>66493

>почему человек, который будет читать твой код, должен догадываться


А он не должен догадываться, евгеньваганыч. Он должен стандарт знать (тебя, кстати, это тоже касается). А на каждого неграмотного уебка никакой мисры не напасешься.
345 1766712
>>66599

>Учи английский,


Зачем мне учить англо-саксонский нахрюк? Мне хватает и русского.

>ведь авторы Си говорят на нем


Авторы говорят на одном языке, пользователи - на другом.
image.png34 Кб, 537x298
346 1766722
>>66710

>А он не должен догадываться, евгеньваганыч. Он должен стандарт знать


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

>(тебя, кстати, это тоже касается).


С чего бы это? Я знаю язык Си.

>А на каждого неграмотного уебка


Неграмотные уебки это те, кто пишет код как на пикче, руководствуясь при этом правилом: "Компилятор не ругается, значит хороший код! Как трудно в нем разобраться? Ничего не знаю, стандарту языка он соответствует." Код должен быть понятен людям в первую очередь, а не компилятору.

>никакой мисры не напасешься.


Некоторые из их правил вполне не мешает вшить в компилятор, имхо. Хотя большая часть правил не нужны, например, запрет адресной арифметики.
DerevyannyjBuran.jpg196 Кб, 900x600
347 1766733
>>66722

>Но такие вещи разные компиляторы компилируют по разному


В своих маняфантазиях можешь компилировать, как угодно, петушок, а вот реальные компиляторы обязаны компилировать вполне определенным образом. А ты ведь, я смотрю, совсем необучаемый: тебе уже за меня и цитату из стандарта приволокли >>66537 на которую я и байтил собсно, а ты все кудахчешь об своих конпиляторах за каким-то хуем.

>Я знаю язык Си


Ты его не знаешь.

>не нужны, например, запрет адресной арифметики


Ты троллишь тупостью, ясно.
348 1766736
>>66733
Толсто анон.
349 1766746
>>66736
Он прав. Языку больше полувека. Есть стандарт, там написано, как какие выражения обрабатываются, если компилятор реализует это как-то иначе, чем как описано в стандарте, то это уже не компилятор языка С. Но для такого примитивного сценария это невозможно, лол, особенно если ты используешь что-то вроде кланга или гну с компилера.
А в стандарте указано, что есть ровно четыре операции, операнды которых всегда вычисляются слева направо: &&, ||, ?: и запятая (но именно оператор, а не сепаратор, т.е. не в объявлении аргументов функции, например). Я это знаю, потому что я очень внимательно читаю k&r, и вам советую
350 1766788
>>66733
Компиляторы ничего не обязаны, кроме стандарта. Стандарт = конечное множество правильных вариантов кода + конечное множество неправильных вариантов кода (где все конпеляторы должны печатать error/warning). А вариантов говнокода - бесконечное множество. Бесконечное множество МИНУС два конечных множества РАВНО все еще бесконечное множество UB. И если реализации двух разных компиляторов хоть чем-то отличаются друг от друга, где-то 100% вылезет разное UB.
мимо
351 1766848
>>66639

>а есть толковые книги на русском?


Все основные книги уже давно переведены на русский: керниган ричи(все 3 издания), справочник шилдта, пратта и т.д.
>>66652
Английский знать не надо, в Си нужно только запомнить ключевые слова, их там всего с десяток: main, if, else, while, for, switch, case, break, return, continue(континюе).
15875549334570.png91 Кб, 625x773
352 1766862
353 1766897
>>66531

>И туда как бы идут всякие дядьки по 32-35 лет без образования



Туда же вроде наоборот мамкиных какиров берут со школы и первых курсов, а 30-летним бумерам от ворот поворот?
354 1767617
Так что на сходняке порешали?
Мне в
a>0 && b==c || !d
надо засирать всё скобками или нет?
355 1767652
Блин, анончики, что теперь так и будет?
Чтобы развернуть массив надо писать 3 функции?
Решаю Прату.
https://pastebin.com/YtEu24JV
356 1767755
>>67652
А тебе говорили не надо С++ с Си начинать
357 1767787
>>67755
Я взрослый уже, не слушаю даунов.
358 1767789
>>67787
Этим дауном был автор с++...
359 1767795
>>67789
Надо было Альберт Энштейн, было бы лулзовей.
360 1768002
>>67617
Здесь кунпелятор вывалит одно предупреждение, вот там и поставь.
361 1768012
>>67617
скобками надо засерать в любом случае, потому что тот, кто читает код, должен его просто блять ЧИТАТЬ, а не напрягать извилины, вспоминая operator precedence всего и вся. Не выебывайся и не говнокодь, пчел, код должен быть максимально понятен.
362 1768022
>>67617
Зависит от того кто это будет читать.

В Perl для этого есть отдельно or и ||, and и &&, но в Си такого не завезли.
363 1768181
>>66733

>В своих маняфантазиях можешь компилировать, как угодно, петушок, а вот реальные компиляторы обязаны компилировать вполне определенным образом.


Только основу языка(которая изложена в K&R). Но есть и некоторые вещи, которые компилируются в каждом компиляторе по разному: размер unsigned char, int, long int в битах, распределение битовых полей в памяти, приоритет логических и арифметических операций и т.д. Тот же стандарт MISRA C рекомендует избегать таких операций, которые зависят от компилятора.

>Ты его не знаешь.


Я его знаю. У меня несколько лет опыта работы, за которое я разработал ПО на языке Си для множества микропроцессорных устройств, работающих в медицине и промышленности. При этом я не читал ни K&R, ни стандарты(потому что на это не было времени из-за работы). Я познакомился с языком сначала не лекциях преподавателя, потом по книжке, которая называлась примерно "Учим С++ за 21 день(не помню точно на звание", и по справочнику Шильдта(который представляет собой почти дословный перевод K&R).
А вот ты, походу, борщехлеб, котоырй сидит на шее у мамки и читатает разные стандарты и K&R, и мнишь себя большим знатоком Си.

>не нужны, например, запрет адресной арифметики


>Ты троллишь тупостью, ясно.


Обоснуй. Я действительно считаю, что в арифметике указателей нет ничего плохого и её вполне можно применять.
364 1768211
>>66746

>А в стандарте указано, что есть ровно четыре операции, операнды которых всегда вычисляются слева направо: &&, ||, ?: и запятая


А в стандарте указано, как вычисляются операнды ">=, <=, ==, >, < "?
И раз ты знаешь k&r и стандарты, то, будь добр, ответь еще на пару вопросов, мне правда интересно.
А в стандарте указано, как компилятор распределяет битовые поля в памяти?
А в стандарте указано о распределении приоритета между арифмитическими операндами(+, -, *, /, &, |, ^).
365 1768216
>>66746
Да, совсем забыл, и про:

>размер unsigned char, int, long int в битах


расскажи. Ну, есть про это в страндарте или нет.
366 1768222
>>68181
>я разработал ПО на языке Си для множества микропроцессорны
Какой иде пользуются на производстве? Бодьшие объёмы у программ?
367 1768245
>>68181
Блять, напиши какое медицинское оборудование, чтобы я случайно не воспользовался и не подох.
368 1768248
>>68245
Дилдак с имитацией фрикций твоего папаши
369 1768260
>>68012
А про то что умножение выполняется раньше сложения тоже надо таким чудо читателям объяснять? Надо просто знать язык, а не превращать программы в (((лисп)))
lol pts.png149 Кб, 824x950
370 1768325

>C++ содержит средства, позволяющие программисту нарушать заданную в конкретном случае дисциплину программирования. Например, модификатор const задаёт для объекта свойство неизменности состояния, но модификатор mutable предназначен именно для принудительного разрешения изменения состояния внутри константного объекта, то есть для нарушения ограничения константности. Более того, допускается динамически удалить атрибут const с константного объекта, превращая его в леводопустимый (L-value). Наличие в языке таких возможностей делает попытки формальной верификации кода бессмысленными, а использование ограничений для оптимизации невозможным.


SOOOQAAA BLYAAAAD
sage 371 1768352
>>68211

> А в стандарте указано о распределении приоритета между арифмитическими операндами(+, -, *, /, &, |, ^).


Да, приоритеты фиксированные и кроме побитовых операторов - даже логичные. Гуглишь такой C operator precedence chart, там все будет. Естественно, для операций с одним приоритетом порядок вычисления не определен.

> А в стандарте указано, как компилятор распределяет битовые поля в памяти?


Да. Как ему больше нравится.

>>68216
Да, есть. Минимальные размеры и соотношения между размерами. Возьми и сам посмотри.
372 1768417
>>68222
Зависит от устройства, для каждого разное IDE. В зависимости от микропроцессора и микроконтроллера используются разные IDE для разных семейств процессоров (Keil, Atmel Studio), у ПЛК и панельных компьютеров свои собственные IDE, поставляемые производителем на диске.

>Бодьшие объёмы у программ?


Что ты имеешь ввиду, размер прошивки?
Разные бывают, от пару килобайт для небоших контроллеров до десяти мегабайтов для ПЛК.
373 1768422
>>68352

> А в стандарте указано, как компилятор распределяет битовые поля в памяти?


>Да. Как ему больше нравится.


Выходит, что этот анон >>176673 не прав?
И есть вещи, которые каждый компилятор может реализовать по-своему?
374 1768424
>>68352
Ссылка отклеилась.
>>66733
375 1768426
>>68422
Причем тут "какие то" вещи когда речь шла только о порядке в && || ?
376 1768427
>>68422

>>66722

>Но такие вещи разные компиляторы компилируют по разному


>>66493

> Мой пост и относится к последней строчке. Написана она через жопу: почему человек, который будет читать твой код, должен догадываться, как компилятор выставит приоритет в условии?



Человек на полном серьезе считал что if (a && *a==100) может как то по разному скомпилироваться.
image.png4 Кб, 250x98
378 1768436
>>68260
Язык(тот который изложен в книге K&R) знают все разработчики и все компиляторы трактуют его одинаково.
А вот остальные его диалекты-наследники (С89, С99, С11) также поддерживают K&R-Си, а в остальном отличаются.
Вот ты точно читал и выучил стандарты C89, C99, С11 и знаешь, в чем они отличаются?
Поэтому проще не использовать в программе операции, которые разными компиляторами и диалектами могут изменяться по разному.
379 1768441
>>68426
Посмотри всю дискуссию. Дальше некоторые аноны

>реальные компиляторы обязаны компилировать вполне определенным образом.


> Есть стандарт, там написано, как какие выражения обрабатываются, если компилятор реализует это как-то иначе, чем как описано в стандарте, то это уже не компилятор языка С.


начали утверждать, что язык Си должен компилироваться всеми компиляторами одинаково, а вещей, которые каждый компилятор может компилировать по-разному - нет.
image.png19 Кб, 200x78
380 1768450
>>68427

> что if (a && *a==100) может как то по разному скомпилироваться.


Между разными диалектами языка может компилироваться по разному.
381 1768456
>>68450
Нет
382 1768469
>>68436
В каком из этих "диалектов" порядок в операторе && станет другим, клоун?
383 1768470
>>68450
Чел, если бы это было так, то компьютеры вообще не работали бы. Порядок проверки в && это фундаментальная вещь. Иначе бы у тебя всякие разыменовывания NULL происходили до проверки что это не NULL.
384 1768483
>>68469

> Порядок проверки в && это фундаментальная вещь.


Фундаметнальные вещи написаны в K&R. Найди мне это в K&R.
385 1768486
>>68483
48 страница таблица 2.1, а что?
386 1768555
>>68181

>несколько лет опыта работы


>не читал ни K&R, ни стандарты(потому что на это не было времени из-за работы)


Ебаная макака-байтоеб ты, вот кто. Несколько лет — это ни о чем, студентишка или аспирантишка тупорылый. Как тебя приняли на работу без знания стандартов, фантазер?
387 1768587
Cнова какой-то байтоеб налажал и уважаемые в Дебиане люди чистят за ним вилкой говно:

libjpeg-turbo (1:1.5.1-2+deb9u1) stretch-security; urgency=medium

Non-maintainer upload by the LTS team.
CVE-2018-1152: Denial of service vulnerability caused by a
divide by zero when processing a crafted BMP image in TJBench.
CVE-2018-14498: Denial of service (heap-based buffer
over-read and application crash) via a crafted 8-bit BMP
in which one or more of the color indices is out of range
for the number of palette entries.
CVE-2020-13790: Heap-based buffer over-read via a malformed
PPM input file.
* CVE-2020-14152: jpeg_mem_available() does not honor the
max_memory_to_use setting, possibly causing excessive
memory consumption.

-- Adrian Bunk <bu_.EnkANUSdaPYebianPUNCTUMor'jkg> Wed, 29 Jul 2020 08:53:14 +0300
sage 388 1768675
Предлагаю репортить всем тредом эту аватарку анимешную. Разводит срачи, флеймит и троллит в C/C++ треда и бох знает где еще. Причина: аватарка, не релейтед, флейм, троллинг, итд
389 1768686
srand считывает число и что дальше? Почему одни и те же занчения при одинаковых числах ввода? Почему rand не может каждый раз выдавать новое число?
390 1768687
>>68675

>петухану настолько бомбит, что он бегает выискивает эту аватарку с тремя постами по всему двощу


Лол. Какой же ты жалкий. Аватарка тебя по делу унижала.
6fa.jpg45 Кб, 680x521
391 1768691
>>68587
библиотечка ТУРБО! ля какая!
392 1768692
>>68686
П Р И М Е Ч А Н И Е
Возможно, вам потребуется, чтобы программа всегда генерировала
новый набор случайных чисел при каждом запуске. Такая рандоми-
зация нужна при создании игр, однако многие симуляторы и научные
исследования подразумевают повторение одних и тех же случайных
чисел. Функция rand() предоставляет как раз такой функционал,
если вы не задаете семя генератора случайных чисел.
393 1768703
>>68686
>>68692

>что дальше?


Дальше тебе нужно съебать в ньюфаг-тред, школьник.
394 1768722
>>68703
Ладно.
>>68692
Спасибо.
395 1768894
>>68692

>семя


Это в проц кончить надо?
15939395322320.png886 Кб, 1058x1080
396 1769084
Кстати, анончики, что получится при вычислении выражения С/С++ (в С18)?
Имеются в виду варианты, когда оно скомпилируется.

>>68894
В принцыпе можна и наоборот. Чтобы проц в тибя кончил. Незабудь переодеться в девочьку, анончек.
397 1769137
>>68894
В функцию передать.
398 1769175
>>69084
Какое выражение блядь? Почему ты не мог написать a/a++? И да всё что связано с инкрементом в выражениях это уб
399 1769328
>>69084

>что получится при вычислении выражения


Результат вычисления выражения.
400 1769331
Такс, ну что получается. Почитал K&R и этого вашего Прату. А что теперь собстно делать? На hh и 300к/месяц мои? Что дальше учить, анончи?
401 1769332
>>69084
z= 456.0;

z= z++/z;0.997812
z= z/z++;1.002193
z= ++z/z;1.000000
z= z/++z;1.000000

z= z++/z++;0.997812
z= ++z/++z;1.000000
3C560D0C-568A-46B4-ABB1-07D8BE91D1C1.jpeg20 Кб, 256x197
402 1769362
>>69175

>всё что связано с инкрементом в выражениях это уб

403 1769365
>>69175

>это уб


Что такое уб?
404 1769372
>>69365
он сам не знает, если че
sage 405 1769383
>>69331

> Что дальше учить, анончи?


Дальше учить все. Предметную область. Учиться писать код под линупсы, виндовсы: POSIX, Windows API, сети и существующие подходы для неблокирующего IO, многопоточность, на OpenMP посмотри хоть издали, SIMD-интринсики и как заставить компилятор высирать что-нибудь вменяемое без них, драйвера хоть чуть-чуть, всякие libusb, CMake, куда же без него. Алгоритмы/структуры данных не забудь, хотя бы кейворды узнай, чтобы потом под задачу гуглить. Напиши со всем изученным несколько качественных хелловорлдов. Потом можешь отладочную плату с микроконтроллером взять поиграться, тот же самый путь, посмотри на пару ртосов. После этого у тебя в гитхабе будет, что показать, ты пойдешь на hh, а там нихуя нет вакансий для тебя.
406 1769387
>>69383

>нихуя нет вакансий для тебя.


Ну заебись и как реализовывать знания тогда?
407 1769400
>>69387
Проще будет во фронтэнд вкатываться.
408 1769403
>>69400
Не интересно, работа для хлебушков. Я хочу кибернетику, МК, ядра, драйвера и всё такое задротское.
15783803570532.png98 Кб, 821x705
409 1769421
>>69403
Так это же самая сермяжная мужицкая параша, а не передний край. Как раз для хлебушков.

Хули там в твоих кококонтроллерах? Прописал регистры, как макака, и все, хуже даже, чем в жс. И общаться ты там будешь, скорее всего, с нешарящими и тупыми постсовковыми долбоебами-радиолюбителями, если на хедхантере собрался искать (просто нешарящими - это программа-минимум и уже удача; обычно они не просто не шарят, у них еще и куча каких-то извращенных поверий и маняфантазий по теме, и все это на фоне просто запредельных ЧСВ и токсичности). Оно те надо?

Тру - это машобчик, ООП, графика, игры, софтвер инжиниринг.
410 1769422
>>69421
Энивей веб я послал через 2 часа чтения синтаксиса жса.

>машобчик, ООП, графика, игры, софтвер инжиниринг.


Вкачусь хотя бы на минимум лоу левела и пойду в плюсы.
sage 411 1769440
>>69421

> Тру - это машобчик, ООП, графика, игры, софтвер инжиниринг.


Машоб не нужен, ооп мертво, грауфоний сделают за тебя, игры не нужны.
412 1769442
>>69440

>ооп мертво


В фыпешном борщемирке разве что.
413 1769467
>>69383
Анончики, несколько тредов назад выкладывали книги про алгоритмы и структуры данных для си.
Вот эту вроде, Седжвика:
http://index-of.co.uk/Algorithms/Algorithms in C.pdf
415 1769882
>>68555

>Ебаная


>фантазер?


>тупорылый.


Борщехлеб, не гори. Тебе просто завидно, что я работаю, получаю деньги, кормлю семью и родителей и у меня есть опыт работы, а ты сидишь дома на шее мамки, никому не нужный на рынке труда, зато со знанием стандартов.

>макака


Я не макака, я пишу довольно качественный код, соответствующий во многом MISRA C.

>байтоеб


Так то любого, кто пишет на Си можно назвать "байтоебом", потому что это low level язык, в отличии от языков высокого уровня, и он подразумевает непосредственную работу с байтами и регистрами.

>Несколько лет — это ни о чем, студентишка или аспирантишка


В айти за несколько лет можно до миддла дорасти, тут то же самое. Зависит от человека, можно и 10 лет чаи гонять и остаться на уровне студентишки, а можно за пару лет саморазвиваться и стать нормальным специалитом.

>Как тебя приняли на работу без знания стандартов,


По собеседованию, посмотрели оценки в дипломе и позадавали вопросы по теме. К тому времени я сделал множество pet-projects на мк(не ардуино) на тысячи строк кода, поэтому я безпроблем смог ответить на вопросы. Также в вузе обучали этому очень хорошо. Ответь, зачем нужно знание стандартов? При том, что я знаю язык Си (тот, который k&r), а разные штуки, а компиляторо-зависимые операции в коде я не использую?
sage 416 1769959
>>69882

> качественный код


> соответствующий во многом MISRA C


Выбери что-то одно.

> а компиляторо-зависимые операции в коде я не использую


А откуда ты знаешь, что не используешь? Откуда ты знаешь, что у тебя в коде не UB на UB сидит и UB погоняет?

Представление программистов об языке Си отличается от представления компиляторов и стандарта. Вот тут даже исследование проводили: https://www.cl.cam.ac.uk/~pes20/cerberus/notes50-survey-discussion.html
417 1769977
>>69882
Чел, язык описывает стандарт, а твой k&r это просто фанфик на тему.
vlpaeXQzgs0.jpg103 Кб, 436x736
418 1770006
>>69882

>завидно, что я работаю, получаю деньги, кормлю семью и родителей и у меня есть опыт работы


Да вообще единственный тут молодец у мамочки. Ты забыл упомянуть, что еще у тебя есть крыша над головой, что надеть и деньги на проезд, лолка.

>за несколько лет можно до миддла дорасти


Да за несколько лет до мидла даже неграмотное колхозное чмо дорастет (такое, как ты).

>на мк(не ардуино)


А чем тебе не угодил ардуино? Они там такие же, как ты, неграмотные школьники, не шарящие в стандартах и творящие всякую хуйню в своих либах. Хотя, с другой стороны, "тру-мк"-байтопетухи ничуть не лучше зачастую. зачастую они еще хуже

>на тысячи строк кода


Это тип многа что ли? Кек. Десяток тыщ строк - это мелкий проектик. А если на тыщу - это вообще на пару вечеров крошечная хуитка.

>в вузе обучали этому очень хорошо


Заметно, как тебя обучали в пидорахенской шарашке. Даже инженерную культуру не привили.
419 1770015
>>69882
>вузе обучали этому очень хорошо.
Что за вуз то? обычно ойтишники хают во.
>пару лет саморазвиваться и стать нормальным специалитом.
Нихт, нормальным специалистом варясь в собственном дерьме не станешь.
420 1770026
Подскажите где смотреть, запускаю в С-Free и CodeBlock-e с #include <Windows.h>
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

В самих иде нормально кириллицу показывает, запускаю из exe кодировка слетает.
15876688217420.png127 Кб, 340x368
421 1770081
>>70015

>Нихт, нормальным специалистом варясь в собственном дерьме не станешь.


Почему же? Подпердываешь кодом каким-нибудь норм опенсорцным проектикам, правишь баги, и збс. Все лучше, чем поделки васянов в говноконторах дрочить.
422 1770356
пиздец ору с зумерской маньки у которой СТАНДАРТ НИНУЖОН
Ебучее поколение юнит фактори
423 1770358
>>70026
Для твоего же блага, поищи это на стековерфлоу
424 1770625
>>70358
Не ищется, пробовал в Кодеблокс в редакторе кодировку поменятьь везде слетело.
изображение.png368 Кб, 1280x720
425 1770813
>>70356

> зумерской маньки



> СТАНДАРТ НИНУЖОН



Ну вот тебе общепризнаный бумер-король байтоёбства, причем именно апологет няшной? купивший себе феррари в начале 90х, а в нулевых решивший запустить за долго до маска ракету в космос.
426 1770816
>>66375

>Как в нашей конторе говорили дедушки (си-синьоры с большим опытом работы): "На компилятор надейся, да сам не плошай".



У си-сеньеров-дедушек типичная формула решения проблемы - работает не трожь. Доходит до смешного - вместо того, что бы исправить UB в коде деды-пердеды будут держатиь виртуалки с досом с древним компилятором борланда, орать на джунов, ПОСМЕВШИХ скомпилировать новой версией GCC и менторским тоном ЗАПРЕЩАТЬ.
427 1770835
>>70813
И чо? Чо ты сказать-то этим хотел?
428 1770874
>>70835

То, что дрочево на стандарт С - это как раз новое, зумерско-хабро-троле-дващерское веяние, с поиском UB по кроватью, выстраданное годами траленка байтолюбов и полыхания жоп.

Диды как раз с размаху стреляли себе в ногу, верили в карго-культ конкретной версии компилятора конкретного производителя, и вычисляли обратный квадратный корень через UB.
429 1770899
>>70874

И то, всё это по той причине, что зумеркам приходится в дидовской линух-системщине серверной ковыряться.

Переписать бы весь линух и всю его экосистему на расте да зажить, но не судьба.
430 1770917
>>70899
через лет 15 и так перепишут, не ссы, анон
431 1770925
>>70874
>>70899
Там же написано - "evil hacking". Т.е. автор знал, что это плохо и не по стандарту. Так что твои маняфантазии мимо, зумерок. Диды ведь все эти стандарты и понаписали, между прочим.
432 1770931
>>70813
Прикинь сколько с этим было ебли при портировании на другие платформы.
433 1770933
>>70899

>Переписать бы весь линух и всю его экосистему на дырявом говне


Зачем?
434 1770941
>>70925

>Т.е. автор знал, что это плохо и не по стандарту



Если знал что тупо плохо, почему не использовал корректный вариант с union, мм, уёба?

Да потому что насрать дидам было, зумерок.

Они стреляли в ногу, верили в рассово верную версию компилятора и токсично пердели про КОКОКО ЛАМИРА НИПАЙМУТ ПШЕЛ НАХ МЫ ИЛИТА ТРОГАЕМ БАЙТИКИ АХАХАХА в эпоху своей молодости, тщательно оберегая свои САКРАЛЬНЫЕ ЗНАНИЯ.
435 1770947
>>70931

>Прикинь сколько с этим было ебли при портировании на другие платформы.



Думаю, не так что бы много, пушо сами игры мы видим:

https://www.youtube.com/watch?v=dx459X3z91I

https://www.youtube.com/watch?v=Cg7IXW6BSa0

А прохладных кулстори про свою жопоболь от разработчиков на гамасутре - не видим. А ведь как раз данные платформы тот самый случай где возможно соснуть BIG ENDIAN.

Зато есть постмортем-батхерты от разработчиков эмуляторов этих платформ:

https://wiki.pcsx2.net/PCSX2_Documentation/Nightmare_on_Floating-Point_Street

И хуеву тучу настроек этого самого плавучего петуха в том самом мумуляторе PCSX2.
436 1770955
>>70941
Там нет никакого UB и выстрела в ногу, пидор.
Плохо, непортируемо, но вполне допустимо. Implementation-defined - это не UB.
437 1770957
>>70955
Глаза протри, каст между long и float - это UB, а не ID.
438 1770960
>>70955

>Там нет никакого UB



> каст флота к инту через разыменовывание кастованного указателя.

439 1770963
>>70957
Между float и long, сам зенки протирай.
И пруф тащи, что это UB.
440 1770964
>>70960
Цитату, цитату из стандарта приведи. Сам придумал UB, сам сегфолтишься, лолка.
441 1770965
>>70963
Стандарт.
442 1770966
>>70955

А вот портируемо как раз вполне, лонг и флоат на большинстве платформ будут иметь 32 бита, а такой платформы, что бы у float и long32 был бы разный порядок байт попросту нет.
443 1770968
>>70966
Толсто. Раньше флоаты вообще 80-битными были.
444 1770971
>>70968

>Толсто. Раньше флоаты вообще 80-битными были.



Нет, 80-битными были long double.
445 1770979
>>70965
Стандарт на твой манямирок? В стандарте языка C такого нет.
446 1770981
>>70971
В любом случае, не на всех же платформах вроде был IEEE 754? Помню сталкивался с каким то компом где знак был между мантиссой и экспонентой, значит этот васяношифт не сработал бы.
447 1770993
>>70981

На этом компе бы ку3 не пошел, там даже видеокарту с 3д ускорением воткнуть некуда, а без 3д ускорения в кваче3, как мы помним из нищедетства, посос.
448 1770994
>>70993

Причем лал был в том что в первую халву на s3 играть было можно, в усмерть джамперами разогнав проц и мать (на особо кошерных матерях до аж 500 мгц на второпне, лал).
449 1770998
>>70625
Попробовал как здесь?
https://gist.github.com/pkorotkov/8087262

Там setlocale должно быть.
450 1771000
>>70933
Чтобы победить С/С++ конечно и захватить мир!
Только санитары мешают :(
451 1771009
>>71000
>>70933

Один ваш бог уже отвернулся от вас, второй копротивляется, но на полшишки и со смазкой уже согласился.
452 1771259
>>71009
Кармак ЭКСАЙТЕД с любой херни, связанной с программированием, он и про хачкель так же говорил. А потом пишет на плюсах, ибо в мире реальном альтернативы нет.
Вангую: и не будет.
453 1771262
Прошу прощения, оставлю пока здесь.
Потом заберу.
https://pastebin.com/UwywcKT3
454 1771266

>Типикал растопидор:


>Переписать бы %projectname% на расте


>97.9998% unsafe


>КОКОКО РАЗД ПАБИДИЛ СИ


>В чем разница между явной и неявной безопасностью? Я не знаю и мне не нужно

455 1771269
>>71009
Кармак серьезно не занимается программированием уже лет 15, сейчас он просто играет с разными технологиями
456 1771272
>>71269

>ВРЁТИ!


в палату мер и весов
457 1771274
>>71272
Лекции его послушай и успокойся.
458 1771298
>>71009
Какой еще бог, бумер? Кармак это дед который застрял в 90-х.
sage 459 1771507
>>70979
Есть. Называется strict aliasing. long и float не совместимы, behavior is undefined. На самом деле раньше так писали потому, что раньше компиляторы aliasing analysis не делали, и поэтому никаких ног таким образом не повреждалось.
460 1771656
>>70874

>годами траленка байтолюбов и полыхания жоп.


Причем тралили и поджигали жопы им вовсе не хаброзумерки, а собственные же баги этих байтоебов из-за незнания стандарта и плохого кодирования.
461 1771676
>>69977
Всё, что есть в "k&r" стандарт по дефолту выполняет.
Обратное утверждение не верно. Версии стандарта (C89, C99, С11) отличаются между собой, но всё, что написано в k&r они выполняют.
462 1771678
>>70015

>Что за вуз то? обычно ойтишники хают во.


Я не айтишник, а инженер, и специальность инженерная(встраиваемые системы), это совсем другое.
15404503872483.jpg85 Кб, 986x396
463 1771692
464 1771695
>>69959

> качественный код


> соответствующий во многом MISRA C


>Выбери что-то одно.


Чем тебе MISRA не нравится? Я её прочитал, но не фанатично использую все правила, а разумно.

>А откуда ты знаешь, что не используешь? Откуда ты знаешь, что у тебя в коде не UB на UB сидит и UB погоняет?


Потому что я следую(в том числе), тем правилам тем правилам MISRA, которые запрещают в коде использовать UB. Использую stdint.h, тела функций и операторов заключаю в фигурные скобки, приоритет операций логических и арифметических указываю скобками, знаю, что битовые поля компилятор распределяет в памяти, как хочет, и т.д.
image.png1 Мб, 1140x570
465 1771697
>>70081

>анимэ


>опенсорц проект


>фулл-реквест


>гитхаб


>стандарт си


Типичный портрет зумерка, борщехлеба-студентика на шее у мамки из этого треда.
image.png134 Кб, 347x276
466 1771698
>>69421

>Так это же самая сермяжная мужицкая параша, а не передний край технического прогресса. Как раз для хлебушков. И общаться ты там будешь, скорее всего, с нешарящими и тупыми постсовковыми долбоебами-радиолюбителями


Ну дык нечего торчать в Барнауле

>куча каких-то извращенных поверий


Типа каких? мне чисто поржать

>Тру - это машобчик, ООП, графика, игры, софтвер инжиниринг.


<<<
467 1771701
>>70006

>не шарящие в стандартах


Выучил стандарты и выёбывается.
Иди ка ты на хуй, борщехлеб, со своими стандартами и K&R в очко себе затолкай.
мимо C Embedded Senior
468 1771712
>>71695
Зенки распахни свои и извилину напряги. Он имел в виду, что ты соблюдаешь мисру не полностью, дебил ты ебаный, там же курсивом выделено. Тебе с такой внимательностью не то, что адресную арифметику - тебе, сука, структурку страшно давать.
469 1771725
>>71695

> потому что я следую(в том числе), тем правилам тем правилам MISRA, которые запрещают в коде использовать UB.


Но поскольку стандарт ты не знаешь, то и не знаешь что такое UB, а значит в коде у тебя он вполне может быть.
470 1771751
>>71701
Какой пет-проект забабахать, который дал бы мне неплохой начальный буст знаний в эмбедщине? Нужно ли настолько же глубоко нырять в железо, насколько я уже нырнул в софт?
Мимо вчерашний студент камплюхтер сцаенс, есть несколько околобайтоебских пет-проектов на крестах и Сишечке (пока больше на крестах), относительно хорошо знаю Linux internals
471 1771754
https://pastebin.com/ikSgD2Kv
Чому в этой форме всё работает, но если заменить

> const char msg[] = "Try again, please.\n";


на const char *msg = "...";
то вместо нужного предложения выводится его обрубок?
472 1771758
>>71754
Если ты хочешь вывести на экран, то не должно быть такого (только если ты не пытаешься вывести строку с пробелами, которую вводил через scanf, ибо scanf перестает читать после пробела)
473 1771795
>>71695

>тем правилам тем правилам MISRA, которые запрещают в коде использовать UB


А разве есть где-то правила, которые разрешают использовать в коде УБ?
474 1772002
>>71751

>Какой пет-проект забабахать, который дал бы мне неплохой начальный буст знаний в эмбедщине?


Какую-нибудь говнолибу для ардуины.
475 1772010
>>71712

>Зенки распахни свои и извилину напряги.


>дебил ты ебаный,


>сука


Со своими родителями так разговаривать будешь, шлюха ёбаная.
Если есть что-то сказать по-факту - говори, а если тебе кроме оскроблений сказать нечего, то пошёл нахуй.

>Он имел в виду,


Ты тоже будь повнимательнее и посмотри в моём посте, что те правила, которые запрещают использовать в коде операции, зависящие от компилятора (UB то есть), я использую все.
А применять все без исключения правила MISRA C не стоит, там слишком много лишнего и получится говнокод.

>Тебе с такой внимательностью не то, что адресную арифметику - тебе, сука, структурку страшно давать.


Ага, то бишь, если я не разглядел стиль написания буковок в нескольких словах(которые и правда почти не заметны, если быстро читать), то я плохой разраб. Отличная логика. Повторюсь, если тебе печет и кроме оскорблений и траленка сказать нечего, то съеби.
476 1772013
>>71795
Нет. Есть, которые запрещают. Которые разрешают нет.
А есть, которые никак не относятся к UB вообще(например, запрет адресной арифметики, или правило, согласно которому в функции может быть только один return.
477 1772016
>>71725

>Но поскольку стандарт ты не знаешь, то и не знаешь что такое UB


Нет, знаю, ведь я читал misra c и знаю язык си(читал k&r). Оно обозначает логику, которая каждым компилятором может трактоваться по разному.
Например, компилятор может размещать битовые поля в памяти как захочет, это нужно учитывать. Или, скажем, в разных компиляторах величина unsigned char, long char и long long char может быть в битах разной величины, поэтому вместо них следует использовать типы, обозначеные в библиотеке stdint.h.

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


Конечно, от ошибок на 100% никто не застрахован, но я стараюсь не применять UB в коде.
478 1772023
>>72016
Чел, ты говоришь о Implementation Defined, а не о UB. UB не связано с компилятором, оно связано с семантикой языка. А семантика языка определена стандартом (а не фанфиком на тему.) (Как выражение "Косил косой" не имеет одного определенного значения, хотя и написано без синтаксических ошибок.)
479 1772044
>>71751

>Мимо вчерашний студент камплюхтер сцаенс, есть несколько околобайтоебских пет-проектов на крестах и Сишечке


Есть предположение, что ты не знаешь ассемблер.
Если это так, то можно сделать один или два проект на асме, чтобы ему научится. Например, на микрокотроллере (8 битном/32-битном) сделать устройство, которое будет на SD-карту записывать освещенность в комнате в течении дня (высчитывать средне-квадратичную величину освещенности для каждой минуты в сутках). Без файловой системы. Придется читать datasheet на мк и смотреть набор команд ассемблера там же. Так же стоит придется подрубить датчик света и часы-RTC, если они не встроены в сам МК. Потом можно возвращаться в Си.
Асм пригодится для ассемблерных вставок, оптимизации кода + сможешь написать свой компилятор.
С ардуины, как советует этот анон - >>72002 начинать не стоит, иначе так и останешься на уровне ардуинщика.
480 1772045
>>72044

>сможешь написать свой компилятор.


Орнул. Как побочный продукт обучения.
481 1772077
>>71751
Не слушай вот этого >>72044 пердуна. Никакой АССемблер тебе не нужен, у контроллеров уже давным-давно куча оперативы, частоты под сотню МГц и кресты с STL в компиляторах.

Лучше купи роутер, накати туда openwrt и в ней ковыряйся.
15870166199230.jpg355 Кб, 750x725
482 1772094
>>72016

>я стараюсь не применять UB


Еще бы ты, сучара, осознанно его лепил.
>>72010
Шлюха ебаная - это твоя жена, когда тебя дома нет, пидор ты нестандартный ))) Если ты глаза свои в жопу свою засунул и не видишь ни хуя, то ты плохой разраб, маня. )
>>72016

>long long char


long long short int как тебе?
483 1772098
>>71697
Что плохого в аниме? Почему студенты тебе не нравятся?
484 1772107
>>72098

>Что плохого в аниме?


Что шизик-анимеаватарка надо мной смеется.
485 1772183
>>72094

>пук среньк


Мне очень важно твое мнение, маня. Очень важно.
486 1772190
>>72077

>Лучше купи роутер, накати туда openwrt и в ней ковыряйся.


Лол, я изначально и начал изучать си, из-за бугурта что не могу элементарно домашнюю сеть настроить, ибо хз как оно там работает на
487 1772191
Мне кажется эта чепуха из школы 21 уже сама верит в ту хуйню что пишет))) причем ладно похуй, бывает ньюфаги начинаются мифов про лоу левел язык и начинают срать в каждый тред, но откуда он блджад эту хуйню про стандарт нинужон вычитал?
488 1772197
Скоро заканчиваю прату, начал читать c++ primer plus.
А там, с первых же страниц:

>..you need a sound background in standard C,... . So if you already know C,you’re poised to learn C++. ..


>If you don’t know C,you have to master the C components..



ОРУ сука с трупошизиков, ну как же так, чудес не бывает, какая грусть ёбана
14238300505357.jpg35 Кб, 400x224
489 1772203
490 1772205
>>72203
Кокой молодец и гринтекстом попукал, и боевую картиночку с анимэ запостил. Можешь теперь пойти похвастаться мамке, как ты "всех победил" в интернете.
491 1772206
>>72197
А чтобы выучить Си нужен бэкграунд в ассемблере. А чтобы выучить ассемблер нужен бэкграунд в микропроцессорной технике и цифровой электронике.
492 1772207
>>72044
предположение провальное, есть опыт реверс инжиниринга, довольно неплохо знаю ч86 архтектуру и изучаю попутно ARM.
493 1772209
Мдаа.
Классно стандарто-петуха обоссали всем тредом.
Эта манька даже не знает, что есть 3 стандарта языка си (С89, С99, С11) и сомневаюсь, что он полностью выучил хотя бы один из них.
ip9pK.png382 Кб, 1348x1080
494 1772212
>>72044

>начинать не стоит


Сама концепция ардуины действительно уёбищна, но не с армов же начинать. А то там от одной инициализации периферии можно охуеть.

>>72077

>STL


В МК никогда не используется. Ну может быть в каких-то жирных бордах с лунухом на борту, но я таких не видел. А так даже сишная либа часто кастрированная идёт.

>кресты


Очень ограниченно, в виде С с классами.
495 1772213
>>72212

>но не с армов же начинать.


Там анон говорит, что умеет на асме прогать под x86 и ARM изучает. Зачем ему начинать с таких пустяков, как AVR или 8051?
496 1772214
>>72212

>А то там от одной инициализации периферии можно охуеть.


Можно кубиком все инициализировать, а работать через HAL - даже datasheet не придется читать.
497 1772218
>>72209
Да он сам говорит же, что ему вообще никакой не нужен, только K&R-фанфик. И MISRA он тоже не уважает.
>>72212
Ты не поверишь, но для АРМов тоже есть ардуина.

>в виде С с классами


Такие, как ты, может, и не пользуются шаблонами. Но нормальным людям они серьезно упрощают жизнь на МК.
498 1772222
>>72218
Посоветуй книгу про шаблоны и паттерны, вообще не знаю, что это.
image.png320 Кб, 1080x451
499 1772225
>>72218

>Ты не поверишь, но для АРМов тоже есть ардуина.

501 1772237
>>72234
Пиздец ты свинья ебанутая. Надеюсь таких как ты будут убивать в будущем.
502 1772240
>>72237
Если таких, как я, будут убивать, кто же будет гуглить за таких быдлодолбоебов, как ты, а, быдлодолбоеб? Что ж ты ебан-то без гугла, нахуй, сука!
sage 503 1772260
>>72209

> есть 3 стандарта языка си (С89, С99, С11)


Во-первых, четыре, хоть в последнем и нет никаких нововведений. Во-вторых, они друг друга расширяют, а не заменяют. Из ломающих обратную совместимость изменений только удаление gets и старых способов объявления функций, то есть убирание за собой pre-K&R говна, которое и в C89-то не должно было попасть.

>>72218

> K&R-фанфик


Первый официальный стандарт языка (C89/90) создавался на основе первого издания K&R. K&R писался, сюрприз, совместно с Ричи, поэтому странно называть его фанфиком.

> И MISRA он тоже не уважает.


Наряду с рекомендациями, которые подходят для Си в целом, в MISRA полно рекомендаций по написанию непортируемого, нечитаемого и нерасширяемого кода для заранее выбранной железки с заранее определенными функциями. MISRA сознательно жертвует качеством кода в угоду большей надежности.

Если нужно, чтобы работало быстро и для широкого круга применений (пишем обычную либу под десктопы или мобилки) - MISRA точно не вариант. А вот если надо, чтобы после правок кода вчерашим студентом, который даже K&R не осилил, железка за полтора ляма не взорвалась и никого не убила, тогда обязательно нужен какой-либо стандарт "безопасного" кода со всеми перегибами типа скобок в (a * b) - (c / d), и, конечно, с отсутствием маллоков и прочей адресной арифметики. Но от необходимости ревью не избавляет даже MISRA.
504 1772263
>>72260
Не пойму, а как можно отказаться от адресной арифметики?
Вот допустим, нужно написать функцию, которая будет делать сортировку массива. Как здесь обойтись без адресной арифметики.
505 1772265
>>72263
Этот пункт, вроде, запрещает смешивать указатели с доступом по [], а так же арифметику с указателями (потому что там часто объебываются, либо прибавляя не тот размер, что думают, либо вообще из за неправильных скобочек думают что арифметика с содержимым, а на самом деле с указателем), кроме инкремента/декремента.
506 1772266
>>72263
Так что твою сортировку ты сможешь написать либо прямым доступом через [ i ], либо через *p++
507 1772268
>>72265
>>72266
Теперь понял. Запрещается адресная арифметика, а арифметика с указателями разрешена.
508 1772276
>>72268
Насколько я понял, ptr + 3 запрещена. Пользуйся или ++ptr ++ptr ++ptr, или arr[3]
510 1772292
>>72240
Поздравляю, ты уретральник. В просторечии "охуевший". Эгоизм, упрямство, спесивость, желание доминировать, соревновательность, амбициозность либо потянут тебя к достижениям, либо сделают невротиком. Ну, если повезёт, то получится это компенсировать без особого вреда для себя и окружающих.
511 1772340
>>72292
Он звуковик, а не уретральник
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 22 февраля 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски