Программирование

Ответить в тред Ответить в тред
Check this out!
C Programming Language #59 /clang/ Аноним # OP 18/07/20 Суб 18:53:28 17548591
C Propaganda.jpg 1970Кб, 2000x2610
2000x2610
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь 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)
Аноним 18/07/20 Суб 20:29:04 17549332
ротатед.PNG 10Кб, 605x54
605x54
Задание из K&R. Что он хочет? 123 --> 312, 51231 ->15123 или что? Эта задачка и раздела про побитовые операторы, я ответы понаходил, даже не понял, что они там делают...
18/07/20 Суб 20:29:58 17549343
>>1754933
В моих "примерах" n условно равен 1
Аноним 18/07/20 Суб 21:27:19 17549794
>>1754933
Очевидно, что раз тема про побитовые операции, то и вращать нужно биты. 11110000 -> 01111000.
Аноним 19/07/20 Вск 00:38:39 17551325
кал.PNG 20Кб, 856x375
856x375
Покакалл каллом
Аноним 19/07/20 Вск 13:51:43 17553406
>>1754933
Да, только в двоичном.
В прошлом треде уже отвечал кому то про это.
Прорешай на листочке в столбик и поймешь как с помощью маски (через and), обычных сдвигов, и or сделать.
Аноним 19/07/20 Вск 17:39:35 17554417
3-2.PNG 20Кб, 610x67
610x67
3-2 (2).PNG 34Кб, 1162x446
1162x446
Буду потихоньку делать, раз тред пока пустой...

>>1754979
>>1755340
Спасибо, я как раз скинул в тред. Чому-то не догадался, лел... вообще, маски это впечатляюще, наверное, очень мощный инструмент, хз, используют ли их в повседневности
Аноним 19/07/20 Вск 21:28:07 17555618
Кто работает на нем? Какие задачи выполняете?
Аноним 19/07/20 Вск 21:40:59 17555689
Едем дальше
Аноним 19/07/20 Вск 23:44:39 175560310
Короче, я вынырнул.
Я тот анон, кто спрашивал про простую графику под винду на си.

Итак.
Я отчаялся настроить 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! Теперь можно и за него взяться.
Аноним 20/07/20 Пнд 02:20:48 175567211
>>1755603
> в винде

ты выбрал путь сильным духом, хаха
Аноним 20/07/20 Пнд 06:41:42 175570712
>>1755672
Что поделаешь, я ещё не готов к ебле с каждой отдельно графической системой, со своим апи и миллионом неочевидных зависимостей только для того, чтобы вывести кружочек.
One true way рулит.
Аноним 20/07/20 Пнд 07:31:13 175571213
>>1755603
Если планируешь работать с mingw, советую поставить msys2. В нём есть пакетный менеджер и куча готовых библиотек в репах для винды. С ним не надо качать по отдельности хуй пойми кем собранные бинарники и ебаться с путями.
Аноним 20/07/20 Пнд 11:34:32 175582214
image.png 38Кб, 1313x289
1313x289
Аноним 20/07/20 Пнд 11:58:02 175583515
Аноним 20/07/20 Пнд 12:29:36 175585416
>>1755835
Компилятор ругает, что нет библиотеки curses.h. Как мне ее установить?
Аноним 20/07/20 Пнд 12:32:46 175585617
>>1755854
sudo apt install libncurses-dev
если винда, то страдай
Аноним 20/07/20 Пнд 12:39:40 175586018
>>1755856
>если винда, то страдай

Страдаю
Аноним 20/07/20 Пнд 13:35:55 175589719
Хм..PNG 16Кб, 448x362
448x362
Почему с типом char он возвращает -1? С int всё, естественно, нормально работает, но мне интересно. По идее, он приводит массив из char в int в момент передачи массива как аргумента функции.
Я знаю, что С передаёт обычные переменные по значению, а массивы -- по указателю или чё-то такое, в общем, оригинал, фактически, но почему вообще там значения изменились? Все числа влезают в char, т.е. старшие биты не обрезаются, сам char это представление чисел фактически, чё он машнит тогда? Объясните, поалуйста
Аноним 20/07/20 Пнд 13:41:36 175590520
>>1755897
> По идее, он приводит массив из char в int в момент передачи массива как аргумента функции.
Ну да и память, которую ты заполнял, как массив чаров размер которых 1 байт, он будет видеть как массив интов, размеров которых 4 байта.
Аноним 20/07/20 Пнд 14:19:56 175594321
А как в визуал студио начать на си писать?
Аноним 20/07/20 Пнд 14:28:18 175595222
>>1755905
Ого, всё, понял, спасибо
Аноним 20/07/20 Пнд 14:29:10 175595323
>>1755943
Создаешь пустой консольный или GUI С++ проект, создаешь файл, сохраняешь с расширением .c.
Аноним 20/07/20 Пнд 14:39:09 175596524
>>1755897
>Почему с типом char он возвращает -1?
Почему ты не получаешь предупреждение? А?
Ну-ка быро включил предупреждения!
Аноним 20/07/20 Пнд 16:32:18 175605425
>>1755672
Простой пример как нарисовать кружочек не в винде в студию.
Аноним 20/07/20 Пнд 16:39:24 175605826
>>1756054
Например 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".
Аноним 20/07/20 Пнд 16:53:21 175607127
>>1756054
Можно взять Skia/Cairo. Вот, например, линкрандом: https://gitlab.com/cairo/cairo-demos/-/blob/master/X11/cairo-demo.c Все зависит от того, что именно тебе нужно кроме рисования кружочков. Алсо, в винде проще по-быстрому накидать интерфейс (разумеется, если с Qt не сравнивать, но Qt - это уже кресты).
анон с кодом для GDI
Аноним 20/07/20 Пнд 16:55:03 175607528
>>1756071
>>1756054
В целом все векторные графические апи очень сильно друг на друга похожи, ничего нового там не изобрести, отличается лишь инициализация.
Аноним 20/07/20 Пнд 19:53:34 175621429
>>1756071
>что именно тебе нужно кроме рисования кружочков

В конечном итоге хочу арканоид свой написать. GDI для этого хорошо подходит, как я понимаю.
Аноним 20/07/20 Пнд 21:11:27 175627930
breakoutpieces1.png 17Кб, 352x200
352x200
>>1756214
> В конечном итоге хочу арканоид свой написать
Надо было сразу сказать. Вот как раз для этого лучше взять SDL2, кружочки рисовать в фотошопах/гимпах/whatever заранее, а в игре использовать их уже в виде готовых текстур с прозрачностью. Скорее всего, ты сделаешь атлас типа пикрелейтед, захардкодишь в исходник координаты и будешь брать кусочки из атласа по известным координатам и копировать их во фреймбуфер. Чтобы длинную платформу сделать, берешь концы от короткой, а середину дублируешь несколько раз.

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

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

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


Аноним 20/07/20 Пнд 22:29:26 175635532
>>1756351
>>1756279
Ну и желательно чтобы все на си. Я пока не готов переходить на кресты, не хватает базы.
Аноним 20/07/20 Пнд 22:55:36 175637033
Аноним 20/07/20 Пнд 22:57:04 175637334
>>1756355
Там не так много базы и надо. Игрушка как раз хороший учебный проект — сначала пишешь ее в систайле, потом пакуешь шарик игрока и штуки которые надо ломать по классам, потом перестаешь использовать стандартные структуры данных, пихаешь в контейнеры, делаешь маленькую базу данных куда пихаешь хайскоры, по приколу добавляешь пуканье джейсонами/хмлками, потом пишешь установочник.
Аноним 20/07/20 Пнд 22:58:30 175637635
Ну и естественно на каком-то этапе используешь темплейты вместо обычных классов
Аноним 20/07/20 Пнд 23:04:24 175638536
>>1756373
Я так и собираюсь делать, лол, спасибо!
Я имею ввиду что я еще прату не закончил.
>пуканье джейсонами/хмлками
>темплейты вместо обычных классов
А вот сейчас ничего не понял.
Аноним 20/07/20 Пнд 23:21:02 175640737
>>1756385
>пуканье джейсонами/хмлками
Примерно 70% реальной работы современного софтвейр инженера, особенно на бекенде.

>Темплейты вместо обычных классов
Стандартные классы и new delete залупу мало кто использует. С помощью темплейтов реализуют такие замечательные вещи как наследование, фабрики, и етц, отсутствующие по дефолту.
Аноним 21/07/20 Втр 04:12:54 175650238
>>1756407
>Примерно 70% реальной работы
Как и в любой профессии, тащемта, нет?
Я например инженер, так именно конструированием я занимаюсь тоже где-то 30% времени. Всё остальное это репорты, бланки, митинги и исправление косяков молодых.
Аноним 21/07/20 Втр 05:03:04 175650439
>>1756502
Тащемта да, но я говорил конкретно о части работы о которой в первую очередь фантазирует ньюфаг, думая пойти в бекендеры.
Аноним 21/07/20 Втр 06:07:22 175651140
>>1756504
>бекендеры
Согласен. Из всех утюгов реклама мегакурсов ФУЛ СТАК НА ПИТОНИИ ЗА 6 НЕДЕЛЬ
СТАНЬ БЕКЕНДЕРОМ ЗА 100500 ЭСКУДО В СЕК

Я задрачивал в детстве игру одну, krypton egg вроде. Единственное приятное воспоминание. Хочу сделать подобное. Просто так.
Аноним 21/07/20 Втр 10:57:58 175658241
>>1756373
>потом пакуешь шарик игрока и штуки которые надо ломать по классам

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

https://github.com/SanderMertens/flecs

Аноним 21/07/20 Втр 14:28:45 175676542
Аноним 21/07/20 Втр 15:21:36 175680743
C какого размера стоит обязательно использовать функции? В учебнике для каждого пука вроде ввода и сортировки стали вводить функции длиной в 6-8 строчек. Мне учебную программу длиной в 40-80 строк удобнее писать вообще без дополнительных функций. На них можно забить пока я не пишу "полезный код"?
21/07/20 Втр 15:43:28 175681544
>>1756807
Конечно! Все нужно выделять в функции
Аноним 21/07/20 Втр 15:44:07 175681745
>>1756807
Нет, потом иначе так и будешь говнокодить. Единственный кейс когда можно не выносить всё в другие функции — это когда этот код _нигде_ не будет переиспользоваться. А всё, что хоть сколько-то можно переиспользовать (сортировки — вообще максимально дженерик хуита для всего) — выносить.
Аноним 21/07/20 Втр 15:45:24 175681946
Аноним 21/07/20 Втр 15:47:14 175682147
>>1756807
Это индивидуально. У меня в геймдеве строк 10-20. Иногда, внутренний блок цикла может быть 20 строк, тогда в сумме с бойлерплейтом инициализации/цикла будет до 40. Дальше начинает путаться логика, что от чего зависит. Сложно изменять. Также, вынос в функции больше зависит от переиспользования. В учебной программе тебе это незаметно. Но в реальной практике ты захочешь применить этот же алгоритм к другим структурам. Или наоборот, с этими данными провести другую операцию. И вот уже у тебя +80 строк копипаста на ровном месте.
Аноним 21/07/20 Втр 19:17:54 175700048
Аноним 21/07/20 Втр 20:09:39 175704049
14670508675000.webm 2288Кб, 640x360, 00:01:13
640x360
Скажу сразу, я не программист, а просто технический менеджер. По работке пишу простенкьие скрипты для аналитики на питоне, тыкаю данные из бд при помощи sql, немного поддерживаю проектовую админку на js.
Думаю, может, мне стоит немного посидеть поучить основы С? Я не планирую когда-либо работать с этим языком, но насколько я слышал от прошаренных типов, С очень понимает в понимании того, как работает компьютер, что вообще такое программирование, как программа взаимодействует с железом, всё вот это вот. Насколько С вообще может мне помочь в плане такой теоретической базы? Или жс/питон уже настолько абстрактны, что никак не связаны с С?
Аноним 21/07/20 Втр 20:17:19 175704450
Аноним 21/07/20 Втр 20:20:39 175704651
Аноним 21/07/20 Втр 20:37:19 175707052
>>1757040
Купи ардуину помигать светодиодом.
Аноним 21/07/20 Втр 20:42:35 175708053
>>1757070
Это я на малине делал с помощью питона.
Аноним 21/07/20 Втр 20:47:16 175708354
Аноним 21/07/20 Втр 20:48:59 175708755
>>1757083
Ну тогда вряд ли что то новое узнаешь.
Напиши реверс строки на js и достаточно.
Аноним 21/07/20 Втр 20:49:44 175708856
>>1757087
*посимвольный. Без библиотечных функций конечно.
Аноним 21/07/20 Втр 20:51:14 175709057
>>1757087
А, еще указатели. В js то их нет.
Аноним 21/07/20 Втр 20:52:41 175709158
>>1757040
Вообще никак не помогает лол, си под х86 это такая же высокоуровневая прокладка как питон или жс, высоко над уровнем железа. Ты можешь дергать системные пукалки вроде посикс, но сама система для тебя останется таким же черным ящиком, как и в случае с любым другим языком. А вот если ты углубишься в физику, информатику и конкретно реверс — то ты уже поймёшь как работает система, компьютер и конкретно железки внутри, только с изучением си это ничего общего не имеет

Мимо-шел кресточмо джениунли не понимаю почему ньюфаги думают наоборот
Аноним 21/07/20 Втр 20:54:22 175709359
>>1757091
Ну так Си изучать вне отрыва от ассемблера который на выходе - бессмысленно.
Аноним 21/07/20 Втр 20:54:49 175709460
>>1757088
Так в жс абстракции слишком высоки, ты тут не char'ами оперируешь, и даже не байтами (хотя в целом можно и ими - есть типизированные масивы сырых данных). В 2020ом строка даже сразу на unicode символы разбивается при проходе по ней циклом, так что не надо выебываться с codepoint'ами. Я слабо представля, что он имел ввиду под пониманием как работает компьтер, потому что для этого и не надо в общем-то языка учить, можно книжки почитать. А если хочется низкого уровня для самообразовани, то ассемблеры куда интереснее и образовательнее, чем си. Си надо выбирать уже чисто из практических соображений.
Аноним 21/07/20 Втр 20:59:34 175709761
image.png 6Кб, 200x168
200x168
Аноним 21/07/20 Втр 21:09:17 175710462
image.png 8Кб, 360x157
360x157
>>1757088
Ну или если тебе нужна оптимизация по матями, а не по скорости.
Аноним 22/07/20 Срд 13:27:39 175756263
1595413657735.png 109Кб, 490x305
490x305
Аноны, расскажите, как вы вообще программы пишете?

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

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

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

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

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

Кому не влом, напишите хоть тут, как вы видите структуру пиксель арт генератора, хоть с вашего пинка попробую что-то сделать.
Аноним 22/07/20 Срд 13:40:10 175757764
Screenshot2020-[...].png 33Кб, 664x325
664x325
Screenshot2020-[...].png 18Кб, 411x349
411x349
Цикл начинается с
while ((op=get_char())!='q')

Вот на пике функция, на втором выход. Когда туда успевает набиться ложное значение?
Аноним 22/07/20 Срд 14:05:03 175759965
>>1757562
>как вы видите структуру пиксель арт генератора
Для начала тебе нужен алгоритм уменьшения изображения. Например, простым будет алгоритм k-nearest neighbors (ближайшего соседа).

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

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

Здесь уже остаются только тривиальные задачи вроде открытия исходных и сохранения получившихся изображений.
Аноним 22/07/20 Срд 14:09:21 175760866
Screenshot2020-[...].png 27Кб, 648x317
648x317
>>1757577
А вот в таком виде всё ок.
Аноним 22/07/20 Срд 14:11:10 175761067
>>1757562
Начни с интерфейса, окошки там кнопочки, вид до вид после. Или тебя алгоритм преобразования интересует? Тут наверное берёшь пиксель увеличиваешь размер потом лишнее разрешение режешь.
Аноним 22/07/20 Срд 14:14:24 175761368
>>1757599
>>1757610
Похоже на интерполяцию, только наоборот. Я такое делал, когда из датчика на тепловизор 8х8 надо было что-то вывести на 320х240 экран. Разберусь. Так хотя бы что-то продвинется! Спасибо, анон. Надеюсь, что со временем и мне придет понимание структуры программ.
Аноним 22/07/20 Срд 20:43:25 175796969
>>1757562
байтоебы творческие импотенты
ну хуй знает, формат bmp норм описан даже на википедии, выводить буковы и циферы в консоль, надеюсь умеешь, дальше действительно
>колдуй с ним чо хочешь
А как ты хотел? И свою фантазию не включать, и чужие велосипеды не пиздить? Противоречиво... Так-то про все есть инфа. Те же основы 3d-графики, а дальше колдуй че хочешь, например.
Аноним 23/07/20 Чтв 14:56:14 175850870
qWVLiRw-qyc.jpg 111Кб, 911x530
911x530
в питоне есть тип данных set хуяк обернул и всё, а что почитать про создание своих типов? типа best practics с enum'ами и union'aми и typedef'aми
Аноним 23/07/20 Чтв 19:00:08 175868271
Аноним 23/07/20 Чтв 20:07:24 175874572
>>1758682
зоебал я же хочу не ковырять и искпеременитровать, а статью чейтануть какую-нибудь
Аноним 24/07/20 Птн 01:02:30 175889673
Классический, наверное, вопрос: второе русское издание Кернигана и Ричи читать стоит? Там вроде устаревший стандарт языка, но на русском новее нет.
Аноним 24/07/20 Птн 01:27:27 175890074
>>1758896
K&R устарел не слишком сильно, о нововведениях можно прочитать и позже, за вечер. На русском еще много чего есть, тот же Прата, но лучше взять словарь и оригинальное издание. Без английского в программировании делать нечего.
Аноним 24/07/20 Птн 08:56:44 175901775
>>1758900
Какой словарь посоветуешь, чтобы контекст было проще искать?
Аноним 24/07/20 Птн 09:17:22 175902776
>>1759017
Ты бредишь чтоль? Тебе не нужно переводить на русский названия определений вроде variables или arguments. Если совсем с этим туго, то тебе нужно только непонятные слова перевести в описании этих определений, чтобы понять, что целиком определение значит (milk — жидкость из вымени коровы, ну ты понял). Ну или даже если хочешь и их перевести (чтобы самому было понятнее), переведи и их. Откроешь для себя, что variables в русском языке означает переменная. Все равно будешь везде говорить variables.

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

Для словаря не знаю, что используют остальные, мне хватает translate.google.com
покормил
Аноним 24/07/20 Птн 09:50:03 175903477
>>1759027
Ну вот тут недавно спрашивали про задание из K&R про разворот битов чёт как то не помогли эти гуглы. Я попробовал на edx курс по Питону на английском там вообще субтитры гуглем переводил было ощущение что придумываю половину. Вот например boilerplate как первести? Там больше проблем не сопределениями а с действиями.
Аноним 24/07/20 Птн 09:57:05 175903978
>>1757040
Водя машину ты ведь не поймешь, как она работает.
Бери учебники по теории цепей, затем по схемотехнике, затем пытайся сам делать платы, которые что-то полезное делают.
Аноним 24/07/20 Птн 10:12:38 175904279
1595574753953.png 740Кб, 1071x1372
1071x1372
Аноним 24/07/20 Птн 10:20:09 175904780
Поясните, если я буду работать прогером, то у меня будут задачи, над которыми нужно подумать? Типо как в школе с олимпиадными задачами. Или это почти всегда тупа загуглил, написал.
Аноним 24/07/20 Птн 10:21:16 175904881
Аноним 24/07/20 Птн 10:23:41 175905182
>>1759048
Почему? Ну я так понимаю это от места работы зависит. Но куда идти, если хочется чтобы мозги использовались?
Аноним 24/07/20 Птн 10:36:12 175906183
>>1759042
Рили охуел, но я думал словарь какой нибудь офлайн.
Аноним 24/07/20 Птн 10:37:37 175906284
>>1759051
В нии какой нибудь иди, 99 задач в любой работе стандартные.
Аноним 24/07/20 Птн 11:38:09 175910185
>>1759062

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

Переписывать/реверсить под грифом и подпиской украденную у доблестными петром и бошировым прошивку какого-нибудь GBU-28AAN "Annihilator" для очередного АНАЛО-ГОВНЕТА? Действительно, мозги нужны.
Аноним 24/07/20 Птн 11:51:02 175911186
>>1759101
Ты хохол или либирашка? Я вас не оч пока различаю
Аноним 24/07/20 Птн 11:53:05 175911587
>>1759034
>boilerplate
Котел-тарелка
Аноним 24/07/20 Птн 12:12:30 175912288
>>1759034
Плата-Бойлер, что-то из оборудования котельных, видимо
Аноним 24/07/20 Птн 12:27:53 175913789
>>1759034
>Вот например boilerplate как первести?

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

Вот это оно.
Аноним 24/07/20 Птн 12:29:52 175913890
>>1759137

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

Яркий пример - графическое API Vulkan, да и DirectX 12 - там нужно 2000 строк только что бы нарисовать сраный треугольник.
Аноним 24/07/20 Птн 13:55:55 175918391
>>1759061
Зачем тебе оффлайн словарь в области, которая каждый месяц что-то новое в себя приносит. Гугли и все. В работе программиста огромная доля работы с поисковиками.
Аноним 24/07/20 Птн 16:27:08 175929392
>>1759027
Охуительный совет чтобы стать новой Никселькиксель.
Антоши, как посчитать сам ов сквеар интеджеров до 10000? Я попытался лупой, но вариэйбл становится негатив"
Аноним 24/07/20 Птн 16:42:33 175930393
Аноним 24/07/20 Птн 16:44:34 175930794
>>1759137
>>1759138
Лол, всегда думал что это табличка на паровозе.
Аноним 24/07/20 Птн 17:34:59 175932995
>>1759051
сам по себе вопрос странный же говорю, почему другие должные придумать как использовать твои мозги если ты сам не знаешь их приминения, найди блят лекарство от рака зоебал
Аноним 24/07/20 Птн 17:36:26 175933196
>>1759303
анон молодец, что сюда принес халяву, славься анон бескорыстный!
Аноним 24/07/20 Птн 18:37:21 175938497
>>1759329
Так то занятие для них я могу найти с легкостью. Другое дело будут ли мне за это платить.
Аноним 24/07/20 Птн 18:46:43 175939598
Ура курс за 150 баксов учащий первым трем главам из к&р наканецто

мимо кресто-барон ахуеваю что есть люди реально купившие это за деньги
Аноним 24/07/20 Птн 19:36:54 175943499
>>1759293
> лупой
Лупом. В остальном все правильно. Все так. Это лучше, чем переводить convolution как "свертка", а deconvolution как "деконволюция". Русская языка велика есть, но для техники совершенно не подходит.
Аноним 24/07/20 Птн 19:46:22 1759443100
>>1759395
"Кресто-пидар" ты хотел сказать? Тред для хипстеров и гомосеков ниже.
Аноним 24/07/20 Птн 20:02:04 1759452101
>>1759384
если ты такой умный, то чому ты еще не наебал систему? а? А? у илона маска было нихуя, а он же наебал, а ты нет. глупо тут аписнять что важно а шо нет когда ты сам ето знаешь, хочешь интересных задач так ищо шобы платили за них тебе, могу только губозакаточную машинку посоветовать купить
Аноним 24/07/20 Птн 23:25:11 1759565102
Анончики, что за хуйня?
Я практически один в один переписал пример из книжки.
Не понимаю почему?

>expected ')' before numeric constant
> void copy_arr(target1, source, NUM);

https://pastebin.com/P9NaKEZc
Аноним 24/07/20 Птн 23:27:40 1759568103
>>1759565
error: expected ')' before numeric constant
void copy_arr(target1, source, SIZE);
Аноним 24/07/20 Птн 23:37:23 1759578104
>>1759568
нахуй у тебя объявлена функция в стиле до-С89? Если это прототип то нахуя у тебя сама функция в этом же файле лежит?
Аноним 24/07/20 Птн 23:52:40 1759594105
>>1759578
Нихуя не знаю, так у Праты, не ори на меня
Аноним 25/07/20 Суб 00:05:56 1759609106
gcc.png 41Кб, 1016x803
1016x803
>>1759594
че за тему конкретно читаешь? Если тебе именно с прототипами надо то компильни со стандартом 89.
Нельзя макрос передавать в функцию, потому что в данном случае у тебя copy_array(target, source , size) разворачивается в copy_array(doube target, double source, int 5) и компилятор не считает это адекватным

если без прототипов то держи вот фигню
Аноним 25/07/20 Суб 00:12:57 1759613107
>>1759609
Блин, спасибо, я не заметил что перед вызовом функции зачем-то ее тип написал (void). Меня сбил с толку информативный выхлоп компилятора.
Аноним 25/07/20 Суб 00:24:11 1759616108
>>1759613
люби свой компилятор сука. Пока не будешь его понимать и любить он тебе будет срать в еду и говно в жопу заталкивать
Аноним 25/07/20 Суб 00:25:44 1759617109
1460476797649.jpg 264Кб, 600x600
600x600
>>1759616
Окей, буду стараться.
Аноним 25/07/20 Суб 05:34:55 1759676110
>>1759609
>че за тему конкретно читаешь?
Arrays and Pointers.
10я глава.
>>1759616
>люби свой компилятор сука.
Прикол в том, что если бы я использовал IDE вместо Notepad++, то оно бы мне подсветило неправильный синтаксис.
Аноним 25/07/20 Суб 07:35:20 1759692111
anMD9Q5700b.jpg 267Кб, 640x636
640x636
Надо получить дескриптор и заголовок сокета из обработчика прерываний и сделать их доступными для вызова функции 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
В нём создаётся указатель на структуру, который недоступен из вне.

Подскажите, плез, как можно переделать?
Аноним 25/07/20 Суб 13:53:46 1759828112
>>1759676
Но ведь подсветка синтакстса есть в н++ изкаробки
Аноним 25/07/20 Суб 18:58:01 1760075113
>>1759828
Есть, но оно не подчеркивает ошибки семантики, только синтаксиса.
Аноним 25/07/20 Суб 19:00:22 1760077114
>>1759609
Я просто хочу прорешать всего прату чтобы перейти уже к изучению крестов.
Это единственный правильный путь.
Аноним 25/07/20 Суб 19:44:14 1760095115
>>1760077
Чё? Нахуя тебе ваще си чтобы катиться в крестоиды?

мимо из крестотреда
Аноним 25/07/20 Суб 20:52:04 1760136116
Аноним 25/07/20 Суб 21:42:13 1760164117
>>1760095
>Чё? Нахуя тебе ваще си чтобы катиться в крестоиды?

>да, C++ это по-настоящему сложный язык. Его никак не получится выучить за 21 день, ну вот совсем никак. Именно высокий порог вхождения повышает твою ценность как специалиста, не позволяя нанять вместо тебя индуса за еду. Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.
Аноним 25/07/20 Суб 21:49:22 1760167118
>>1760095
C++ Primer Plus например, состоит из отсылок к С примерно наполовину. Собственно, в введении там явно написано: сначала надо знать С.
Аноним 25/07/20 Суб 22:28:55 1760189119
>>1760164
Лол, так под "другим языком" подразумевают не Си. А какой нибудь пайтон или жс.
Аноним 26/07/20 Вск 02:07:28 1760313120
Аноним 26/07/20 Вск 12:35:05 1760481121
Аноны, надо написать kernel module на Линукс, который не общается с реальным железом, но может делать что-то полезное и/или интересное. Идеи?
Аноним 26/07/20 Вск 13:38:29 1760552122
>>1760481
Интерпретатор brainfuck
Аноним 26/07/20 Вск 13:44:05 1760561123
>>1760552
эмм, а нахуя для этого писать драйвер, который будет крутиться в пространстве ядра? Юзерспейс эмулятора вполне хватит, но это ведь не цель.
Аноним 26/07/20 Вск 13:48:10 1760573124
>>1760481
Файл драйвер. Шифровальщик Xor13
Аноним 26/07/20 Вск 13:48:52 1760576125
>>1760481
Или какой нибудь драйвер клавомышки бот для кликеров.
Аноним 26/07/20 Вск 15:10:31 1760677126
>>1759692
Скажите, если непонятно что.

Зря бы не спрашивал.
Аноним 27/07/20 Пнд 05:15:54 1761194127
Аноним 27/07/20 Пнд 12:44:18 1761428128
7bea2182d8711e5[...].jpg 1188Кб, 1080x1657
1080x1657
Уффф. Оххххх. Надо второй раз читать.
Аноним 27/07/20 Пнд 13:00:49 1761440129
>>1761194
фу, чуть не блеванул от упоминания этой параши. Не делай так больше, анон, пожалуйста.
Аноним 27/07/20 Пнд 13:22:48 1761450130
>>1761428
Для поинтеров в шапке весьма годная и краткая пдф есть.
Аноним 27/07/20 Пнд 13:48:59 1761462131
Захотел написать программу для своей эл. книги от pocketbook, а там сдк мало того что с 2015 не обновлялся, так еще и на ебучем си, вместо крестов. Так не хочется опять все это дерьмо с велосипедами хлебать.
Аноним 27/07/20 Пнд 13:52:14 1761464132
>>1761462
> Программы для устройств Pocketbook пишутся на C с использование компилятора GCC
А вообще, как то можно написать логику на крестах, и как то работать с ней из кода на си?
Аноним 27/07/20 Пнд 14:51:14 1761510133
>>1761464
Да. Сделать сишный интерфейс (extern "C", не не использовать C++ типы, перехватить все исключения). Ну и рантайм для C++ должен присутствовать.
Аноним 27/07/20 Пнд 14:58:15 1761515134
>>1761510
> Ну и рантайм для C++ должен присутствовать.
Что это значит?
Аноним 27/07/20 Пнд 15:54:18 1761561135
>>1761515

Значит как минимум не баре метал со спецфлагами и необходимостью пилить placement new.
Аноним 27/07/20 Пнд 15:55:26 1761563136
>>1761561
Там линукс вообще стоит
Аноним 27/07/20 Пнд 16:23:00 1761585137
Аноним 27/07/20 Пнд 19:41:55 1761730138
Сап. Есть один нуб, который вообще ничего не знает, но решил взяться за си как за первый язык. K&R ему точно не стоит пихать, ещё не дорос. Сейчас выбор стоит между Пратой и Кочаном. Какой из них предпочтительнее?
Аноним 27/07/20 Пнд 19:45:31 1761733139
>>1761730
Я начинал с k&r свой путь, лучшая книга для вката.
Аноним 27/07/20 Пнд 20:04:41 1761744140
>>1761730
Нахуй тебе си, обмудок?
Аноним 28/07/20 Втр 00:01:46 1761919141
>>1761730
Прата качественнее.
Аноним 28/07/20 Втр 00:20:15 1761931142
https://2ch.hk/pr/res/1711268.html

>>1739810 →
> Для Си умельцы скорее всего тоже либ уже налепили.
Зачастую, кстати, у С-дедов такие библиотеки дают лучшую производительность, чем у С++-миллениалов. Быстрее только на чистом ассемблере. Деды в целом и это могут, но долго это. Поэтому на чистом ассемблере пишут только местами: ту логику/вычисления, которая исполняется 85-99% от общего времени.
Аноним 28/07/20 Втр 09:23:54 1762053143
>>1761730
Программирование на C для начинающих, 3-е издание. Грег Перри, Дин Миллер посмотри эту, ещё Дейтелы.
Аноним 28/07/20 Втр 09:35:50 1762059144
>>1754706 →

Ну и, болтанка в +- полтора кекогерца. Те же пресловутые 5.8 кекогерц опять же были у IBM в те же нулевые в штатном режиме под штатной водой в одном из древних Power.
Аноним 28/07/20 Втр 09:36:57 1762061145
>>1762059

Спиздел, Power 6 595 - 4.2 GHz or 5.0 GHz
Аноним 28/07/20 Втр 09:41:06 1762068146
Аноним 28/07/20 Втр 12:37:10 1762177147
Аноним 28/07/20 Втр 14:36:54 1762259148
>>1754933

Как вообще вкатится в эти битовые операции? Я до сих пор не понимаю нахуй оно нужно и как работает. Нет, я конечно могу прочитать определение и понимаю что надо делать, но не понимаю нахуя и зачем, где это вообще применять.
Аноним 28/07/20 Втр 14:55:19 1762273149
>>1762259
Разработка прошивок, драйверов, виртуальных машин - первое, что приходит на ум. Вся лоу-лвльщина активно юзает битовые операции.
Будешь декодировать опкоды - поймешь почему битовые операции иногда мастхэв.
Аноним 28/07/20 Втр 14:58:06 1762275150
>>1762273

Что почитать, чтобы понять где их вообще и когда применять? Ну вот в том же k&r чуть ли не с первых глав идет это битоебство, причем предполагается, что ты его уже знаешь и знаешь где как применять.
Аноним 28/07/20 Втр 15:12:49 1762301151
Мб тут сидят челы шарящие за qml, у меня есть stackview приложение, в хедере сделал label с названием текущей страницы, но проблема в том, что пользователь может пойти по такому пути (главная->настройки->темы) а потом возвращаться обратно, и вот чтобы написать сверху корректное название страницы, мне нужно знать какая именно сейчас страница, есть ли возможность это узнать?
Аноним 28/07/20 Втр 15:54:57 1762343152
>>1762275
Для начала выучи системы исчисления - шестнадцатиричную и двоичную, если не знаешь. Это основа байтоебства. Октальная тоже не помешает, но первые 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 ты извлек старший байт и можешь его использовать для своих нужд.

Примеров использования очень много, это один из наиболее легких и распространенных. Сначала почитай о тех темах, которые я написал в начале этой простыни, как поймешь все это, вернись к этому после за продолжением, где я извлекал старший байт из двухбайтового числа.
Это несложно на самом деле, просто надо привыкнуть.
Аноним 28/07/20 Втр 17:10:31 1762401153
>>1762259
В жизни наверное нет очевидных примеров чтобы объяснить как сложение на яблоках. В первую очередь приходит в голову комбинаторика - например, битовый set, где каждый бит означает свободно или занято. Сдвигами можно перемещать по местам, можно проверять свободные места, занятые места, проверять по маске конкретные места, сравнивать списки мест, находить свободные/занятые одним/занятые в обоих сетах, считать количество занятых.
Дальше у нас трюки связанные с двоичной арифметикой. Ну как мы проверяем четность в десятичной - если оканчивается на 0,2,4,6,8 - четное. Так в двоичной нам достаточно проверить крайний правый бит. Аналогично левый крайний бит обычно означает отрицательное число. А сдвиги - быстрое умножение на степени двойки (как в десятичной сдвиг на 1 цифру это умножение на 10). Фишка в том что это все намного быстрее всяких делений,умножений, в железе.
Далее, используется в шифровании, контрольных суммах, псеворандоме, подсчете хэша строк. Тут сложно объяснить, суть в закольцованности чисел (как часовая стрелка закольцована и после 12 снова 1). Т.е. одна и та же операция сделанная много раз подряд похожа на "обход конем шахматного поля", пока все поле не обойдешь числа не повторятся.
Далее, в архивации/сжатии, т.е. вообще везде - ZIP, PNG, JPEG, WEBM и так далее. Упрощенный пример - если у тебя только буквы a-z это 26, меньше 32 - влезает в 5 битов. Вот для того чтобы конвертировать поток 5-битных данных в обычные 8-битные байты и обратно, тоже нужны побитовые операции.
Аноним 28/07/20 Втр 17:46:17 1762418154
как написать игру?
где найти туторы или документацию на си по SDLv2?
Аноним 28/07/20 Втр 17:48:25 1762421155
>>1762418
без задней мысли
в гугле
Аноним 28/07/20 Втр 18:46:22 1762487156
>>1762259
>Как вообще вкатится в эти битовые операции? Я до сих пор не понимаю нахуй оно нужно и как работает. Нет, я конечно могу прочитать определение и понимаю что надо делать, но не понимаю нахуя и зачем, где это вообще применять.
У тебя есть гугль, вики, СО и хабр. Нет, ты пришел с этим вопросом на борду для анимешниц.
Аноним 28/07/20 Втр 20:43:47 1762572157
Аноним 28/07/20 Втр 20:45:16 1762573158
>>1762572
Правильно. Писать что то на c смысла нет.
Аноним 28/07/20 Втр 20:56:40 1762580159
>>1762572
А ты писать игру на чистых сях вздумал, шиз?
Аноним 28/07/20 Втр 21:13:17 1762590160
>>1762572
Неправда. Чтобы найти sdl2 на с++ это еще надо очень сильно постараться.
Аноним 28/07/20 Втр 21:15:43 1762592161
>>1762572
Пиши в гугле: sdl2 getting started
Аноним 28/07/20 Втр 21:53:01 1762622162
Задача перевернуть массив целых чисел.
Я сделал и мне понравилось, тащусь с такого:
https://pastebin.com/h50E6zBm
Аноним 28/07/20 Втр 23:51:08 1762709163
>>1762622
Это не declaration. Это definition.
Аноним 28/07/20 Втр 23:51:54 1762710164
>>1762622
>swap через вычитание
аххахахаха
Аноним 29/07/20 Срд 01:18:12 1762776165
>>1762709
Блин, точно. Спасибо.
>>1762710
Задание было про целые числа, ну я и подумал так сделать, ведь нигде кроме целых такое невозможно, без потери точности.
Аноним 29/07/20 Срд 01:48:14 1762798166
Аноним 29/07/20 Срд 03:57:11 1762838167
>>1762798
Это типа ХЗ? Согласен.
Аноним 29/07/20 Срд 06:58:30 1762887168
Аноним 29/07/20 Срд 08:08:16 1762898169
>>1762887

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

Ну и как бы сама парадигма она про очень YOBA ААА с очень большими бюджетами, где нужна оптимизация.
Аноним 29/07/20 Срд 08:13:52 1762900170
>>1762259
>Как вообще вкатится в эти битовые операции? Я до сих пор не понимаю нахуй оно нужно и как работает.

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

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

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

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

Из этого следует, что проверяем битики с помощью &, склеиваем маску из отдельных битов с помощью |. Сами биты -это степень двойки, пушо двоичная система. То есть 1 - первый бит, 2 - второй бит, 4 - третий, 8 - четвертый, 16-пятый итд. Эти числа (степени двойки) ты дефайнишь по смыслу и получается вот всякие вот маски.
Аноним 29/07/20 Срд 11:19:35 1762975171
>>1762898
>для области где нужны уже кресты
Тип там со стороны крестов как-то неудобно конкретно этой библиотекой пользоваться?
>на шаблонной магии построено
Вангую, без неё тут охуеешь от boilerplate строчек, то есть шаблонная магия - уже требование.
>Ну и как бы сама парадигма она про очень YOBA ААА с очень большими бюджетами, где нужна оптимизация.
Окей, ну вообще был вопрос про конкретно эту библиотеку. Для использования "большими" она уже сгодится?
Аноним 29/07/20 Срд 13:38:38 1763133172
Есть структура с разнотипными данными. Нужно прочитать из файла часть данных в конец структуры. Вот так будет допустимо прочитать?

fread((char *)&structura + 36, 1, 8, file);
Аноним 29/07/20 Срд 13:42:21 1763136173
>>1762838
Я просто точно не уверен. Но если там будет андерфлоу.
Аноним 29/07/20 Срд 13:43:44 1763139174
>>1762975
В крестах предпочитают шаблонную магию, вместо макросов.
Аноним 29/07/20 Срд 13:44:56 1763141175
Переменные всегда переполняются сбрасываясь в ноль и заполняясь по новой или можно отключить переполнение, чтобы было только максимальное значение в переменной сколько ни прибавляй?
Аноним 29/07/20 Срд 13:59:12 1763166176
Аноним 29/07/20 Срд 14:12:28 1763192177
>>1763141
Заворачивание беззнаковых задано стандартом.
Переполнение знаковых не определено, отлавливается -ftrapv
29/07/20 Срд 16:09:17 1763363178
Пиздец, спросили какую-то лютую хуету, которую можно загуглить за 10 секунд - накатали несколько простынь.

Спросил что посложнее - проигнорили. Заебись.
Аноним 29/07/20 Срд 16:49:00 1763446179
>>1763133
Перепиши, чтобы не было волшебных чисел
Аноним 29/07/20 Срд 17:25:45 1763483180
Начал читать
>Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013)
пока все хорошо
Аноним 29/07/20 Срд 18:17:12 1763549181
>>1763363
Если ты про те сокеты, то никто не собирается писать за тебя программу. Если нет, бампани вопрос.
Аноним 29/07/20 Срд 18:35:35 1763573182
>>1762709
>>1762622
Бля, а нахуя люди такие комменты пишут?
Мало того что неправильный термин, так еще и не раскрывающий сути коммент. Если swap еще понятно, что делает функция, то disp - загадка, то ли disposition, то ли dispersion то ли еще что.
Раз ты пишешь коммент к функции, то напиши человеческим языком, что делает эта функция, то что это определение функции я и без тебя вижу, дублировать такую информацию ни к чему.
Ну а вообще, комменты не нужны, надо правильно подбирать имена, чтоб они сами за себя говорили.
Аноним 29/07/20 Срд 18:39:59 1763575183
Аноним 29/07/20 Срд 18:46:14 1763582184
39e132d70502266[...].jpg 17Кб, 474x419
474x419
>>1763549
>никто не собирается писать за тебя программу
Я не просил писать за меня программу. Процитируй, где именно я об этом прошу.
inb4: ты об этом подумал, да

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

Вроде вывернул, но проверить пока не судьба.
Аноним 29/07/20 Срд 18:51:00 1763590185
Читаю значится сейчас Прату после планирую пройти K&R и в плюсы. Стоит ли прочитать что-нибудь ещё или старт уже нормальный?
Аноним 29/07/20 Срд 18:54:24 1763592186
>>1763483
Держи меня в курсе.
Аноним 29/07/20 Срд 19:15:03 1763612187
15948363544220.jpg 54Кб, 500x500
500x500
Даров сисяч.

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

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

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

Ты не сможешь.
Аноним 29/07/20 Срд 19:22:57 1763623188
236e17a73d0ae54[...].png 140Кб, 300x256
300x256
Аноним 29/07/20 Срд 19:26:14 1763626189
15959995450330.png 283Кб, 400x400
400x400
>>1763363
>>1763582
Ты зря кукарекаешь, вопросы не такие уж и энтрилевельные.
А вот ты пиздуй в /ра со своей лютой есп-хуетой, тут никто твои говнотулчейны знать не обязан.
Аноним 29/07/20 Срд 19:26:21 1763627190
Аноним 29/07/20 Срд 19:27:11 1763628191
Аноним 29/07/20 Срд 19:48:36 1763653192
88-882097call-m[...].png 237Кб, 840x890
840x890
>>1763626
Тулчейны тут не при чём.

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

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

Тема закрыта. Спасибо за внимание.
Аноним 29/07/20 Срд 19:57:46 1763661193
>>1763363
А кого ты здесь хотел видеть? Гуру отвечают только за деньги, осиляторы расскажут, что могут.
Аноним 29/07/20 Срд 19:59:23 1763662194
Аноним 29/07/20 Срд 20:00:19 1763664195
>>1763612
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
Аноним 29/07/20 Срд 20:02:51 1763665196
>>1763664
> arr is a pointer to function of
Быстрофикс
Аноним 29/07/20 Срд 20:07:38 1763669197
>>1763664
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
Еще разок
Аноним 29/07/20 Срд 21:03:25 1763701198
15928383845260.jpg 7Кб, 234x216
234x216
>>1763669
Наш победитель!
Этот тредик поадекватнее, ясно

>>1763665
По-царски пофиксил, лол
Аноним 29/07/20 Срд 21:28:54 1763709199
>>1763653
Ну ты же в силу своих знаний не видишь, что как такового "main" у программы нет, а независимые хендлеры из других контекстов вызывает httpd (обычно это простой демон). Хоть бы разобрался, что дяди написали в примере, потрейсил.

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

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

Но если тебе хочется собирать открытые соединения, то их можно хранить в глобальном списке за rw-локом. Может быть что-то для этого есть и в фреймворке, но читать доки я не собираюсь. Да, этот вопрос
> Тулчейны тут не при чём.
исключительно об этом тулчейне.
Нужно быть чуть менее резким, если ты сам не можешь поставить задачу и не знаешь как работает либа и пример.
Аноним 29/07/20 Срд 21:35:00 1763713200
>#ifdef __x64_x86
>typedef int64_t INT_T;
>#endif
>#ifdef __i386__
>typedef int32_t INT_T;
>#endif

За такое выебут в жепы?
Аноним 29/07/20 Срд 21:37:59 1763715201
>>1763713
Нет, если __макросы стандартны для твоего конпелятора.
Аноним 29/07/20 Срд 21:40:02 1763716202
>>1763713
А зачем такое?
Пользуйся int_least32_t и int_fast32_t в зависимости от необходимости
Аноним 29/07/20 Срд 21:54:52 1763721203
Аноним 29/07/20 Срд 21:58:56 1763727204
>>1763483
>>1763592
Дочитал введение до виртуальной памяти, пока почти ничего нового.
Обнаружил небольшую оговорку на 5й странице.
Аноним 29/07/20 Срд 21:59:58 1763729205
>>1763721
Начинай сразу с плюсов.
Аноним 29/07/20 Срд 22:01:20 1763730206
>>1763729
Хоть уже и поздно но почему? Мне интересен как лоулевел си со всеми этими контроллерами, ядрами, драйверами так и кресты со своим многообразием.
Аноним 29/07/20 Срд 22:47:05 1763769207
>>1763730
Перечитай три поста в цепочке, не ставь C и ядра с драйверами в один ряд. Если C можно освоить за 1к страничек, то к ядру того же линукса ты приступишь только прочитав альманах раз в 10 больше.
Аноним 29/07/20 Срд 22:55:18 1763774208
>>1763769
>три поста
Да ну нахуй, Прата поинтереснее. Как раз 200 страниц осталось добить. Прекрасно понимаю что это только начало и дальше ебаться придётся сильно очень. Но мой план таков: базовый С - C++ до продвинутого левела - устраиваюсь на работку - добиваю C.
Аноним 29/07/20 Срд 23:17:08 1763786209
>>1763774
>Как раз 200 страниц осталось добить
Бротан, пока ты не натрахаешься с сегментейшн фолтами и указателями на указатели указателей, а также требованиями хотя бы одного из стандартов, ни о каком "начальном уровне" не может идти и речи.
Аноним 29/07/20 Срд 23:20:57 1763791210
>>1763774
Как раз таки лучше сначала добить Си до уровня /списки на макросах/указатели на функции/longjmp-контексты/сигналы/posix-треды. Очень поможет с пониманием того, что происходит в ++.
Аноним 29/07/20 Срд 23:26:01 1763797211
>>1763786
Пошёл трахаться чё. За всех двачеров сука, парни!
>указатели
Вообще не ощутил проблем с этой темой. Я нормальный?
Какой стандарт наиболее актуальный? Самый последний или какой-то пораньше? И что долго их учить типо?
>>1763791
Бля, а что по работе на чистом си? У меня дедлайн 1 год до вката куда-нибудь.
Аноним 29/07/20 Срд 23:26:19 1763798212
>>1763573
Бля, ну я же пошутил, ну.
Сама функция swap реализована предельно ебануто, мне просто доставил сам факт возможности такого. Без временной переменной.
Аноним 29/07/20 Срд 23:27:15 1763799213
>>1763727
Можешь прямо тут выложить ее, что тебя держит?
Аноним 29/07/20 Срд 23:55:36 1763829214
Аноним 30/07/20 Чтв 00:03:54 1763835215
Аноним 30/07/20 Чтв 00:12:25 1763840216
>>1763829
Допустим ты хочешь чтобы программа работала быстро с 8 битными значениями, а в процессоре у тебя 64 битные регистры. Тогда ты берешь int_fast...t, и все работает максимально быстро, но в памяти массив таких значений будет занимать в 8 раз больше места. Если же тебе наоборот важнее место, то берешь int_least...t и компилятор подберет минимальный регистр в который значение влезет. Но там возможны лишние инструкции, типа cbw/cwd/cdq, на преобразование в 64 бита для рассчетов, потом упаковка обратно в 8.
Аноним 30/07/20 Чтв 00:28:33 1763849217
>>1763797
> Бля, а что по работе на чистом си? У меня дедлайн 1 год до вката куда-нибудь.
В целом нужно быть спецом в какой-то области, языка одного не хватит. Вакансии обычно такие: мк, linux (системеный софт, сеть, модули). Больше прям "чистого" си нет. Джун должен уже в чем-то хорошо разбираться, работы мало. Вот так что примерно 10 Прат накодить какой-нибудь системно-сетевой хуеты для linux и что-нибудь сможешь, но года точно не хватит.
Аноним 30/07/20 Чтв 07:40:27 1763939218
>>1762975
>шаблонная магия

Макросная, конечно же.
Аноним 30/07/20 Чтв 07:42:26 1763940219
>>1762975

Да нормальная библиотека, просто ты даже игровую-то логику заебешься в ECS-парадигму укладывать, что уж говорить про сириус бизнес логику вроде всяких там веб-серверов с откликом 0.5мс.
Аноним 30/07/20 Чтв 07:57:01 1763947220
>>1763791
>добить Си до уровня /списки на макросах/
Прочитал вписки на макросах
Аноним 30/07/20 Чтв 10:41:37 1764033221
>>1763797
>Бля, а что по работе на чистом си? У меня дедлайн 1 год до вката куда-нибудь.

Покупаешь у китайцев девборду на stm32, учишь тамошний даташит, покупаешь и обмазываешься радиоконструкторами на всяких там бредбордах, пытаешься устроиться или в пыняронку или в прочие гражданские производственные объединения, еще чудом сохранившиеся после совка, по выпуску утюгов "чугуевск", чей гендир уже сыто облизывается на сдать всю хуйню в металл а недвигу - под офисы и склады.
Аноним 30/07/20 Чтв 10:42:10 1764034222
>>1764033
>пыняронку

Ну или в бульбаронку, если из беларуси.
Аноним 30/07/20 Чтв 11:04:57 1764054223
want.jpg 52Кб, 550x412
550x412
>>1764033
>или в прочие гражданские производственные объединения, еще чудом сохранившиеся после совка, по выпуску утюгов "
Аноним 30/07/20 Чтв 11:07:38 1764060224
>>1764054

Нужно спешить, пока ты пишешь эти буквы, в раше один красный директор уже пожимает волосатую руку хача трюкача , в то время как грузчики вывозят совковое оборудование (у тех кому повезло в 90е и нулевые и кто сыто мурчали - списанное немецкое) в металлоприемку.
Аноним 30/07/20 Чтв 11:35:25 1764104225
>>1763797
> У меня дедлайн 1 год до вката куда-нибудь.
Учи джаваскрипт
Аноним 30/07/20 Чтв 11:54:12 1764123226
Screenshot20200[...].png 153Кб, 962x579
962x579
>>1763799
Собственно, вот. как и в кодинге, скопипастили наверное
Аноним 30/07/20 Чтв 12:35:08 1764170227
Аноним 30/07/20 Чтв 12:41:38 1764177228
>>1764170
Чому opengl не возьмешь? И тебе нужен будет физический движок? Если да, то мне кажется ты сдохнешь быстрее, чем успеешь все это написать.
Аноним 30/07/20 Чтв 12:44:36 1764180229
>>1764104

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

Вопрос философский какой язык выучит что б потом можно в любую стороны перекатиться?
Аноним 30/07/20 Чтв 12:45:14 1764182230
>>1764177
на opengl не смотрел еще
физический движок возможно будет нужен
Аноним 30/07/20 Чтв 12:46:30 1764183231
>>1764182
Ты это чисто для себя делаешь? И что ты хочешь в конце получить?
Аноним 30/07/20 Чтв 12:47:03 1764184232
>>1764180
> А дальше куда? Лендинги клепать за 1,5 рубля7
А дальше на работу где платят в несколько раз больше чем на сях, хотя конечно язык не илитный.
Аноним 30/07/20 Чтв 12:52:58 1764187233
>>1764182

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

https://github.com/orangeduck/Corange

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

>>1762068

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

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

Или вот это:

https://duktape.org/

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

https://developer.gnome.org/gtk3/



Аноним 30/07/20 Чтв 13:05:16 1764198234
>>1764184
говорят на дваче фронтенд всё. сотни вкатышей на одну вакансию.
Аноним 30/07/20 Чтв 13:12:51 1764204235
>>1764183
хотелось бы в конце заработать на стиме
Аноним 30/07/20 Чтв 13:19:30 1764216236
>>1764204

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

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

С с очень большой натяжкой может быть востребован в мобильном гейдеве - там есть абсолютно незанятая ниша выосокооптимизированных игорь, которые летают на китайских калькуляторах за десятку из салона связи в зажопинске.
Аноним 30/07/20 Чтв 13:59:24 1764266237
>>1764187

я еще не готов писать свой рендерер
игра 2д будет
Аноним 30/07/20 Чтв 13:59:59 1764267238
Аноним 30/07/20 Чтв 14:12:11 1764289239
>>1764266

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

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

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

Аноним 30/07/20 Чтв 14:14:32 1764295240
>>1764187
Corange тема, правда как мне показался немного тяжеловат для примитивных (что в 90% случаев пишут) 2d проектов. Для 3d вроде гуд.
мимо разбирал демку платформера и движок
Аноним 30/07/20 Чтв 14:23:11 1764316241
>>1762275
Насчёт где применять - низкоуровневая математика (быстрый обратный корень Кармака, логарифм целого числа, предпосчитанные таблицы синусов и косинусов через сложение и умножение, правда уже не актуально быстрый модуль...), всё мать его хеширование и криптография (любой хеш алгоритм, кодирование Хаффмана...), низкоуровневая работа с ошибками (при передаче данных например), маски и error коды правда тоже не особо актуально, только если в системщине. Что сразу на ум пришло, а вообще - все на низком уровне делается с байтооебством и оттуда порой вытекает магия высокого уровня, например оптимизации в высокоуровневых языках
Аноним 30/07/20 Чтв 14:45:43 1764348242
>>1764316
Всё это проще и приятнее делать на плюсах, чем на говне мамонта.
Аноним 30/07/20 Чтв 14:49:07 1764350243
>>1764316
> быстрый обратный корень Кармака
Це UB
Аноним 30/07/20 Чтв 14:51:03 1764352244
>>1764348
На плюсах пишется тоже лоу лвл софт, наивный. Ебать битики, разрабатывая на плюсах, отнюдь не редкость.
Аноним 30/07/20 Чтв 15:00:28 1764359245
>>1764350

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

Петушков послушать так нужно венду и лялих сносить -там тоже UB - по указателю в регистры железяк лазиют.
Аноним 30/07/20 Чтв 15:04:27 1764361246
>>1764359

Да и сам язык UB - с помощью union можно битики теребить и анальные поля гладить.
Аноним 30/07/20 Чтв 15:08:13 1764363247
>>1764359
>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;
Аноним 30/07/20 Чтв 16:35:55 1764411248
>>1764350
Если компилировать с отключеным strict aliasing, то норм (а в студии он так вообще всегда отключен)
Аноним 30/07/20 Чтв 20:27:56 1764554249
Как часто вы используете постфиксный инкремент/декримент?
Аноним 30/07/20 Чтв 20:32:39 1764556250
Аноним 30/07/20 Чтв 21:13:48 1764578251
>>1764554
Любой контейнер на массиве например, не?
Аноним 30/07/20 Чтв 21:18:17 1764580252
>>1764578
>контейнер
А туда ли ты пришёл?
Аноним 30/07/20 Чтв 21:29:25 1764586253
Аноним 30/07/20 Чтв 22:07:34 1764604254
>>1764580
Да, там где нужно, а ты зачем интересуешься?
Аноним 31/07/20 Птн 09:28:10 1764762255
>>1754859 (OP)
    Допустим, у нас есть некоторая библиотека, подключаемая к основной программе, а в ней есть переменная "value". Интерфейсом (API) библиотеки предусматрено только чтение этой переменной.
    Правильно ли будет в таком случае сделать переменную "value" статической(т.е. изменять её можно будет только в файле библиотеки), а для доступа к ней сделать функцию чтения этой переменной?

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

>/ Внутренняя переменная библиотеки /
static uint8_t value = 0;

>/ Функция доступа к внутренней переменной /
uint8_t read_value(void)
{
        return value;
}
Аноним 31/07/20 Птн 12:06:25 1764836256
>>1764762
Я не оп, но совершенно правильно.
У такого подхода есть еще плюс: в будущем переменная может быть убрана, а функция сможет вычислять обещанное значение.
Аноним 31/07/20 Птн 16:01:43 1765030257
S56543537565462[...].png 218Кб, 840x638
840x638
>>1764604
>а ты зачем интересуешься?
Хуй будешь?
Аноним 31/07/20 Птн 16:12:19 1765047258
>>1763709
>Ну ты же в силу своих знаний не видишь
>По той же скромности познаний ты не слышал
>Нужно быть чуть менее резким
Хех, пока читал - мысленно представлял, как ты раздуваешься, набивая текст, а при отправке трещишь по швам.

>Твое желание идет полностью вразрез логике примера.
Было бы странно, если бы пример делал именно то, что я хотел, да?
Аноним 31/07/20 Птн 16:30:17 1765057259
Объясните мне бажожда доступно почему такая реализация не работает и не должна работать?

double lowest = ((a < b) && (a < c)) ? a : ((b < a) && (b < *c)) ? b : c;
Аноним 31/07/20 Птн 16:32:22 1765058260
image.png 82Кб, 1770x824
1770x824
>>1765057
Лол, указатели спиздили.
Аноним 31/07/20 Птн 16:34:01 1765059261
>>1765057
Потому, что ты проебался с синтаксисом тренарного оператора.
Аноним 31/07/20 Птн 16:45:42 1765067262
image.png 75Кб, 1576x564
1576x564
>>1765059
Лол, только на скрине заметил, что не проставил указатели в конце. Вроде заработало. Спасибо, пацаны!
Аноним 31/07/20 Птн 17:37:06 1765090263
>>1765067
Там все шкобки не нужны
Аноним 31/07/20 Птн 17:42:36 1765098264
832868.png 74Кб, 645x729
645x729
Аноним 31/07/20 Птн 17:42:53 1765100265
>>1765090
Ну скобки хоть какую-то редабильность дают этому месиву. Или так норм писать ммм?
Аноним 31/07/20 Птн 17:43:30 1765102266
>>1765098
Да да да, давай порофли над вкатывальщиком на 8 дне учёбы.
Аноним 31/07/20 Птн 17:44:39 1765103267
Аноним 31/07/20 Птн 17:46:55 1765107268
Аноним 31/07/20 Птн 19:05:21 1765153269
image.png 10Кб, 585x96
585x96
Объясните дебилу, что не нравится этому ебобаному компилятору. Как тут может быть оверфлоу? Я так понял, что -1 не отнимает единицу, а прибавляет 232-1, и поэтому технически получается оверфлоу. Тогда как это исправить, оставив при этом беззнаковый тип?
Аноним 31/07/20 Птн 19:08:19 1765157270
>>1765153
упд: замена на int32_t не помогла
Аноним 31/07/20 Птн 19:09:44 1765160271
image.png 9Кб, 550x98
550x98
Аноним 31/07/20 Птн 19:19:05 1765164272
>>1765153
Короче, нашел проблему. Единица, которая в начале, воспринималась компилятором как signed int. Решил проблему так:
static const uint32_t lower = ((uint32_t)1<<MT32_R)-1, upper = ~(((uint32_t)1<<MT32_R)-1);
Выглядит отвратно, но хотя бы варнингов нет.
Аноним 31/07/20 Птн 19:20:50 1765166273
Пацаны, вот есть адресное пространство процесса. Когда мы исполняем уже готовый опкод в С, как логически осуществляется его работа на уровне памяти? Я это как представляю: код исполняется в рамках отдельного процесса, у него есть своё адресное пространство, там лежит сам код, данные программы и её стек. Где тут КУЧА и причём тут КУЧА?
Аноним 31/07/20 Птн 19:29:19 1765175274
>>1765164
>Единица, которая в начале, воспринималась компилятором как signed int
Натуральные константы можно делать unsigned добавлением u или U если это и надо было
Аноним 31/07/20 Птн 19:34:02 1765179275
>>1765175
Спасибо. Знал только про существование L и f.
Аноним 31/07/20 Птн 19:45:22 1765189276
>>1765166
>готовый опкод в С
Чаво? Опкод - кодировка определенной комманды, которую исполняет процессор определенной архитектуры. После опкода идут, как правило, immediate значения и/или регистры, вместе они формируют инструкцию, например, mov rax, rbx => 48 89 d8, в данном случае, опкод это 48, в которую закодирована команда mov в архитектуре х86-64. Что значит, блять, готовый опкод в С? Ты проверь сначала знаешь ли ты то, о чем ты говоришь.
>Где тут КУЧА и причём тут КУЧА?
Куча - это отдельно выделенный сегмент памяти для: а) Хранения буферов, размер которых неизвестен во время компиляции. б) Для хранения больших буферов.
Попробуй создать массив на 1 гигабайт на стэке, у тебя программа свалится в сегфолт из-за переполнения стэка. Стэк - СТАТИЧЕСКИЙ сегмент памяти, который используются для вызова фнукций (стэковые фреймы процедур определяются как раз там), для хранения переменных окружения и локальных переменных. Куча - ДИНАМИЧЕСКИЙ сегмент памяти, использование которого я объяснил чуть выше.
Аноним 31/07/20 Птн 19:45:29 1765191277
>>1765166
Куча емнип там же где и стек, т.е. в сегменте данных. Стек и куча могут даже пересечься, т.к. увеличиваются навстречу друг к другу. как-то так, вроде.
Аноним 31/07/20 Птн 19:52:52 1765200278
>>1765191
Это зависит от ОС, в Линуксе, например, между стэком и кучей есть memory mapped area, куда маппятся все динамические либы (тот же libc) и где выделяется память при системном вызове mmap.

>могут даже пересечься
В популярных ОС этого не случится. Размер стэка статичен, а вот при выделении слишком большого кол-ва памяти на куче, если следующая аллокация затронет стэк, то память на куче просто не выделится и malloc вернет NULL
Аноним 31/07/20 Птн 20:03:39 1765209279
>>1765189
Куча является частью адресного пространства процесса?
Аноним 31/07/20 Птн 20:13:20 1765214280
А-а-а-а, всё, я понял, спасибо за ответы
Аноним 31/07/20 Птн 20:14:31 1765216281
>>1765164
>Единица, которая в начале, воспринималась компилятором как signed int

Моё любимое UB
unsigned long long l = 50000 ⚹ 50000;
printf("%llu",l);
Аноним 31/07/20 Птн 20:18:34 1765221282
>>1765209
конечно, а как ты себе это представлял? Ты думал, что куча расшарена на все процессы или что? Странный вопрос просто, не обуссудь.
Аноним 31/07/20 Птн 20:18:59 1765222283
>>1765166
Стандартом не описано.
Аноним 31/07/20 Птн 20:19:27 1765223284
>>1765221
*обессудь
быстрофикс
Аноним 31/07/20 Птн 20:20:10 1765224285
>>1765222
это был скорее вопрос не по си, а по основам работы операционных систем.
Аноним 31/07/20 Птн 20:20:57 1765225286
>>1765221
Да я Таненбаума введение читаю, он там нихера про кучу мне не написал пока, только на голову наложил, зато про прерывания от души рассказал по
Аноним 31/07/20 Птн 20:21:31 1765227287
Аноним 31/07/20 Птн 20:21:42 1765228288
>>1765224
Вы извините, что я итт спрашиваю, просто где ещё, в джаваскрипт-треде, что ли, лол. В общем шизы одни
Аноним 31/07/20 Птн 20:26:34 1765232289
Аноним 31/07/20 Птн 20:28:28 1765233290
>>1765100
По крайней мере второй уровень выглядит избыточным.
Аноним 31/07/20 Птн 20:29:45 1765234291
ackchyually.jpg 7Кб, 225x225
225x225
>>1762709
>>1763573
Определения также являются объявлениями
Аноним 01/08/20 Суб 02:15:37 1765342292
>>1765047
Давай я еще раз попробую до тебя донести:

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

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

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

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

> Хех ...
На вопрос твой никто не отвечал, сам ты усилий никаких не приложил. В ответе по коду ни единого слова, только вот этот перл.
Аноним 01/08/20 Суб 03:34:49 1765348293
>>1765342
Посмотри на эту функцию:
https://github.com/espressif/esp-idf/blob/master/examples/protocols/http_server/ws_echo_server/main/ws_echo_server.c#L56

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

>На вопрос твой никто не отвечал, сам ты усилий никаких не приложил. В ответе по коду ни единого слова, только вот этот перл.
Я стараюсь, порой безрезультатно.
01/08/20 Суб 04:19:03 1765351294
>>1764836
> У такого подхода есть еще плюс: в будущем переменная может быть убран
И минус: в будущем переменная скорее всего не будет убрана, и софт будет тормозить на пустом месте, пока его не перепишут с нуля. А ведь можно было просто сказать "не пишите, будет ой-ой".
Аноним 01/08/20 Суб 14:13:00 1765511295
>>1765189
>mov rax, rbx => 48 89 d8
>опкод это 48, в которую закодирована команда mov в архитектуре х86-64
Если не знаешь ассемблер, зачем выёбываться? 48 это префикс (REX.W), который обозначает, что следующий за ним опкод будет принимать 64-битные операнды. Опкод (точнее, один из опкодов) mov - 89.
Аноним 01/08/20 Суб 20:25:38 1765837296
>>1765351
Ой, ну какая там разница в скорости. Зато детали реализации надёжно скрыты, а это правильно.
Аноним 02/08/20 Вск 00:54:55 1765967297
02/08/20 Вск 02:13:20 1765992298
>>1765837
Разница в скорости практически никакая, но подобные стремления все огородить от самого себя никогда не ограничиваются одной переменной.

>>1765967
Не решает проблему. Если у тебя либа, и ты выкинешь __val, то старые версии программ ее не найдут. А если ты контролируешь код, который использует эту переменную, то у тебя вообще проблем нет - встроенный в любую IDE рефакторинг отлично заменит использование переменной на вызов функции. И даже если рефакторинга нет, и ты вимомазохист, ты все еще можешь одними регэкспами справиться.
Аноним 02/08/20 Вск 03:51:31 1766010299
>>1765342
Спасибо, высокомерный пидор.
Аноним 02/08/20 Вск 09:32:50 1766079300
image.png 5454Кб, 1908x2520
1908x2520
Что скажете по поводу этой книги?
Аноним 02/08/20 Вск 09:33:16 1766080301
image.png 5454Кб, 1908x2520
1908x2520
Что скажете по поводу этой книги?
Аноним 02/08/20 Вск 09:37:28 1766081302
>>1763661
>расскажут

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

мимо кресто-барон 7 лет коммерческого опыта, на крестах и сях со школы
Аноним 02/08/20 Вск 09:39:12 1766082303
>>1766080
Нормально, все энтри левел книжки более-менее одинаковые.
Аноним 02/08/20 Вск 10:00:16 1766088304
>>1766081
>любому адеквату (и не только) отвечать будет попросту западло.
Ну да, ну да.
Сюда ты зашёл в надежде обсудить теорему Сосницкого-Лавуазье. А тут на тебе, у кого-то что-то не срастается на каком-то уровне. да как они посмели.

Пошёл на хуй, короче.
Аноним 02/08/20 Вск 10:00:27 1766089305
>>1766080
Кал бомжа. Читай кернигана & ричи и не выебывайся
Аноним 02/08/20 Вск 14:00:02 1766160306
>>1766089
на месте, я спокоен
Аноним 02/08/20 Вск 14:15:46 1766187307
Аноним 02/08/20 Вск 14:53:04 1766233308
>>1766080
Я бы с такой обложкой не брал.
Аноним 02/08/20 Вск 15:01:43 1766247309
image.png 387Кб, 474x548
474x548
>>1766233
Почему? Современно, модно, молодежно.
Аноним 02/08/20 Вск 15:23:32 1766270310
>>1766080
>Порезвись в стандартной библиотеке С
Блять.
Аноним 02/08/20 Вск 16:25:01 1766327311
Сяч, здравствуй снова. Вот есть такая конструкция:

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

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

>>1766080
Что-то хер встал с этих аннотаций.
Аноним 02/08/20 Вск 17:18:18 1766375312
>>1766327
>что конпелятор ЭНИВЕЙ выставит
На компилятор нельзя надеяться.
Нужный тебе приоритет нужно обозначать скобочками, как в условиях, так и в арифметических выражениях.
Как в нашей конторе говорили дедушки (си-синьоры с большим опытом работы): "На компилятор надейся, да сам не плошай".
Аноним 02/08/20 Вск 17:19:44 1766376313
>>1766081
>кресто-барон 7 лет коммерческого опыта
За 7 лет стал синьором?
Почему так быстро?
Аноним 02/08/20 Вск 17:28:29 1766387314
>>1766375
Судя по ассемблерному листингу, приоритет у первой операции. А дидам - спасибо, так и сделаю.
Аноним 02/08/20 Вск 17:38:35 1766397315
>>1766327
Нет, с чего ты взял? Слева направо, причем до первого сработавшего.
Аноним 02/08/20 Вск 18:02:52 1766426316
>>1766327
int a;
some_actions(&a);
if (a &&
a==100)) printf("*a==100!");

Вопрос: можно ли так писать и почему?
Аноним 02/08/20 Вск 18:17:14 1766453317
>>1766426
а почему нет?
только зачем отправлять адрес адреса в какие-то
действия?
Аноним 02/08/20 Вск 18:23:27 1766473318
>>1766426
Писать то можно, ведь компилятор и не такое сожрет.
Но не нужно, потому что тот, кто будет поддерживать твой код, найдет твой адрес и даст тебе люлей за такой говно-style.

Одна из Парадигм Правильного Программирования (ППП) гласит: когда пишешь код, всегда пиши его так, как будто бы человек, который будет работать с твоим кодом, знает твой адрес.
Аноним 02/08/20 Вск 18:32:44 1766488319
>>1766453
some_actions - это какие-то действия с указателем перед проверкой, даун.

>>1766473
Евгеньваганыч, вопрос был не про стиль, а про корректность последней строчки.
Аноним 02/08/20 Вск 18:36:45 1766493320
>>1766488
>Евгеньваганыч
Я писал пост абсолютно серьезно.
> вопрос был не про стиль, а про корректность последней строчки.
Мой пост и относится к последней строчке. Написана она через жопу: почему человек, который будет читать твой код, должен догадываться, как компилятор выставит приоритет в условии? Поставь нужные скобочки, чтобы приоритет мог трактоваться однозначно.
Аноним 02/08/20 Вск 18:53:19 1766515321
В треде есть студенты Школы 21, которых, как я слышал, дрочат на Си?
Расскажите, что и как у вас в плане сложности обучения и можно ли вылететь из школы, если нихуя не социализированный хиккан
Аноним 02/08/20 Вск 19:02:32 1766528322
>>1766515
>Школы 21
Что это?
Какая та параша типо "Академии ШАГ"?
Аноним 02/08/20 Вск 19:04:35 1766531323
>>1766515
Подумай пчел, это для совсем необучаемых дебилов. И туда как бы идут всякие дядьки по 32-35 лет без образования, я не шарю но думаю ты там не в своей тарелке будешь. Ну и если бы ко мне на собеседование хрюшка (особенно если бы мне нужно было найти си-тварь) привела пчеленсона и он бы представился как ученик школы 21 я бы ему сразу сказал эм ну нам надо подумааать))
Аноним 02/08/20 Вск 19:11:51 1766536324
image.png 2281Кб, 1280x750
1280x750
>>1766531
>привела пчеленсона и он бы представился как ученик школы 21 я бы ему сразу сказал эм ну нам надо подумааать))
Што, прямо вот так бы и сказал: "эээм хрю мня пуук мне нада падумать))))".
А если бы это был бы ученик Академии ШАГ тоже бы так ответил?
Аноним 02/08/20 Вск 19:13:43 1766537325
>>1766426
>можно ли так писать и почему?
(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.
Аноним 02/08/20 Вск 19:18:04 1766539326
>>1766537
>(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.
А можно теперь человеческим языком?
Аноним 02/08/20 Вск 19:42:55 1766568327
>>1766539
Выражения между &&(и ||) вычисляются слева-направо, если одно не соответствует условию, то следующие не вычисляются. Т.е. эта хуйня:
if (a && ⚹a==100)) printf("a==100!");
эквивалентна:
if(a){
if(⚹a==100){
printf("
a==100!");
}
}
Аноним 02/08/20 Вск 20:07:31 1766581328
>>1765992
> А если ты контролируешь код, который использует эту переменную, то у тебя вообще проблем нет - встроенный в любую IDE рефакторинг отлично заменит использование переменной на вызов функции. И даже если рефакторинга нет, и ты вимомазохист, ты все еще можешь одними регэкспами справиться.
Испанский стыд, достаточно макрос переписать.

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

Вообще вот если переменная интенсивно используется юзер-кодом и не поддается передаче юзеру (т.е. меняет состояние между вызовами из одного потока) - она разделяемая, такими обычно бывают всякие спинлоки и счетчики. Спинлоку можно почти без оверхеда предоставить функциональный интерфейс, а счетчик должен иметь интерфейс без функции.
Лучше не иметь подобных объектов в либе, в остальных случаях обычно используется функция, не всегда скрытая макросом.
Аноним 02/08/20 Вск 20:29:03 1766599329
>>1766539
Учи английский, ведь авторы Си говорят на нем, а не на украинском.
Аноним 02/08/20 Вск 21:21:29 1766639330
>>1754859 (OP)
а есть толковые книги на русском? я инглиш ниасилил, патамушта я ватан и топлю за славянский софт, мечтаю купить русский комп, на эльбрусе и накатить туда астру, двигать вперёд отечественную айти индустрию, назло врагам и на зависть недругам, ибо за державу обидно, да, но вот заковыка: нужно знать Си, а с инглишем беда, да и боюсь я, что изучение инглиша пошатнёт мои внутренние скрепы и порушит патриотизм, как мне быть, аноны? я реально боюсь, накидайте ссылок, как изучить Си на моём великом и могучем великорусском языке
Аноним 02/08/20 Вск 21:28:59 1766641331
>>1766639
>а есть толковые книги на русском?
Прату уже давно перевели и вполне годно.
Аноним 02/08/20 Вск 21:39:49 1766647332
>>1766639
Полно русских языков программирования.
Аноним 02/08/20 Вск 21:48:13 1766652333
>>1766647
на 1С операционные системы не пишут (
а Си на инглише, это ставит меня перед дилеммой: я хочу помочь Родине, но для этого нужно знать годный ЯП, то есть Си, а в то же время я не хочу учить инглишь, потому что я его плохо усваиваю, да и не хочу подрывать свой патриотизм чтением иностранной литературы и слушанием вражьих голосов, мне комфортно среди родных берёз и осин, а все изучавшие инглиш хотят на чужбину, рисуют поросёнка и читают "пора валить"
Аноним 02/08/20 Вск 21:52:27 1766653334
Аноним 02/08/20 Вск 21:55:16 1766655335
>>1766652
Надо, Федя, надо учить язык вероятного противника. Думаешь полковник Исаев учил немецкий из любви к вражьим голосам Гёте?
Аноним 02/08/20 Вск 21:56:45 1766657336
>>1766080
Странно загуглил книжку нашёл похожую от двух авторов
Автор: Дэвид Гриффитс, Дон Гриффитс
А теперь одна хуемразь в авторах?
Аноним 02/08/20 Вск 21:58:14 1766659337
Аноним 02/08/20 Вск 22:05:09 1766665338
>>1766655
тяжело даётся мне эта вражина, душа к нему не лежит, и слова всё хитрые, читаются не так, как пишутся, бесовщина сплошная, как из Земля матушка терпит окаянных
я хотел было побырому выучить, но быстро из меня это выветривается, видать отторгает её моё нутро русское
Аноним 02/08/20 Вск 22:08:09 1766668339
>>1766665
Я ночи насквозь спать не буду, последнего здоровья лишуся, но… — и, скрипнув густыми мелкими зубами, докончил: — язык этот выучу! На английском языке буду без нежностев гутарить с мировой контрой! Пущай гады трепещут заране!
02/08/20 Вск 22:08:23 1766669340
Аноним 02/08/20 Вск 22:18:56 1766676341
>>1766668
> язык этот выучу! На английском языке буду без нежностев гутарить с мировой контрой! Пущай гады трепещут заране!
Кончен разговор, Нагульнов! Решением бюро ты исключен из наших рядов.
Такие вы партии не нужны. Клади сюда партбилет!
Аноним 02/08/20 Вск 22:27:42 1766681342
>>1766639
катись-ка отсюда нахуй, Иванушка-дурачок хотя скорее ты просто недотролль
Аноним 02/08/20 Вск 23:13:50 1766707343
Аноним 02/08/20 Вск 23:21:50 1766710344
>>1766493
>почему человек, который будет читать твой код, должен догадываться
А он не должен догадываться, евгеньваганыч. Он должен стандарт знать (тебя, кстати, это тоже касается). А на каждого неграмотного уебка никакой мисры не напасешься.
Аноним 02/08/20 Вск 23:29:29 1766712345
>>1766599
>Учи английский,
Зачем мне учить англо-саксонский нахрюк? Мне хватает и русского.
>ведь авторы Си говорят на нем
Авторы говорят на одном языке, пользователи - на другом.
Аноним 02/08/20 Вск 23:47:31 1766722346
image.png 34Кб, 537x298
537x298
>>1766710
>А он не должен догадываться, евгеньваганыч. Он должен стандарт знать
Ну как бы понятно, что раз человек пишет на языке Си, то он его знает. Но такие вещи разные компиляторы компилируют по разному, и допускать их в коде нельзя, иначе это будет говно-код, работающий только с конктретным компилятором.
>(тебя, кстати, это тоже касается).
С чего бы это? Я знаю язык Си.
>А на каждого неграмотного уебка
Неграмотные уебки это те, кто пишет код как на пикче, руководствуясь при этом правилом: "Компилятор не ругается, значит хороший код! Как трудно в нем разобраться? Ничего не знаю, стандарту языка он соответствует." Код должен быть понятен людям в первую очередь, а не компилятору.
>никакой мисры не напасешься.
Некоторые из их правил вполне не мешает вшить в компилятор, имхо. Хотя большая часть правил не нужны, например, запрет адресной арифметики.
Аноним 03/08/20 Пнд 00:46:40 1766733347
DerevyannyjBuran.jpg 196Кб, 900x600
900x600
>>1766722
>Но такие вещи разные компиляторы компилируют по разному
В своих маняфантазиях можешь компилировать, как угодно, петушок, а вот реальные компиляторы обязаны компилировать вполне определенным образом. А ты ведь, я смотрю, совсем необучаемый: тебе уже за меня и цитату из стандарта приволокли >>1766537 на которую я и байтил собсно, а ты все кудахчешь об своих конпиляторах за каким-то хуем.
>Я знаю язык Си
Ты его не знаешь.
>не нужны, например, запрет адресной арифметики
Ты троллишь тупостью, ясно.
Аноним 03/08/20 Пнд 00:51:53 1766736348
Аноним 03/08/20 Пнд 01:09:39 1766746349
>>1766736
Он прав. Языку больше полувека. Есть стандарт, там написано, как какие выражения обрабатываются, если компилятор реализует это как-то иначе, чем как описано в стандарте, то это уже не компилятор языка С. Но для такого примитивного сценария это невозможно, лол, особенно если ты используешь что-то вроде кланга или гну с компилера.
А в стандарте указано, что есть ровно четыре операции, операнды которых всегда вычисляются слева направо: &&, ||, ?: и запятая (но именно оператор, а не сепаратор, т.е. не в объявлении аргументов функции, например). Я это знаю, потому что я очень внимательно читаю k&r, и вам советую
Аноним 03/08/20 Пнд 02:54:39 1766788350
>>1766733
Компиляторы ничего не обязаны, кроме стандарта. Стандарт = конечное множество правильных вариантов кода + конечное множество неправильных вариантов кода (где все конпеляторы должны печатать error/warning). А вариантов говнокода - бесконечное множество. Бесконечное множество МИНУС два конечных множества РАВНО все еще бесконечное множество UB. И если реализации двух разных компиляторов хоть чем-то отличаются друг от друга, где-то 100% вылезет разное UB.
мимо
Аноним 03/08/20 Пнд 08:56:02 1766848351
>>1766639
>а есть толковые книги на русском?
Все основные книги уже давно переведены на русский: керниган ричи(все 3 издания), справочник шилдта, пратта и т.д.
>>1766652
Английский знать не надо, в Си нужно только запомнить ключевые слова, их там всего с десяток: main, if, else, while, for, switch, case, break, return, continue(континюе).
Аноним 03/08/20 Пнд 09:10:38 1766862352
15875549334570.png 91Кб, 625x773
625x773
Аноним 03/08/20 Пнд 09:51:58 1766897353
>>1766531
>И туда как бы идут всякие дядьки по 32-35 лет без образования

Туда же вроде наоборот мамкиных какиров берут со школы и первых курсов, а 30-летним бумерам от ворот поворот?
Аноним 03/08/20 Пнд 19:44:38 1767617354
Так что на сходняке порешали?
Мне в
a>0 && b==c || !d
надо засирать всё скобками или нет?
Аноним 03/08/20 Пнд 20:21:36 1767652355
Блин, анончики, что теперь так и будет?
Чтобы развернуть массив надо писать 3 функции?
Решаю Прату.
https://pastebin.com/YtEu24JV
Аноним 03/08/20 Пнд 22:12:35 1767755356
>>1767652
А тебе говорили не надо С++ с Си начинать
Аноним 03/08/20 Пнд 23:03:14 1767787357
>>1767755
Я взрослый уже, не слушаю даунов.
Аноним 03/08/20 Пнд 23:11:45 1767789358
>>1767787
Этим дауном был автор с++...
Аноним 03/08/20 Пнд 23:26:00 1767795359
>>1767789
Надо было Альберт Энштейн, было бы лулзовей.
Аноним 04/08/20 Втр 11:31:05 1768002360
>>1767617
Здесь кунпелятор вывалит одно предупреждение, вот там и поставь.
Аноним 04/08/20 Втр 11:39:45 1768012361
>>1767617
скобками надо засерать в любом случае, потому что тот, кто читает код, должен его просто блять ЧИТАТЬ, а не напрягать извилины, вспоминая operator precedence всего и вся. Не выебывайся и не говнокодь, пчел, код должен быть максимально понятен.
Аноним 04/08/20 Втр 11:45:44 1768022362
>>1767617
Зависит от того кто это будет читать.

В Perl для этого есть отдельно or и ||, and и &&, но в Си такого не завезли.
Аноним 04/08/20 Втр 14:15:10 1768181363
>>1766733
>В своих маняфантазиях можешь компилировать, как угодно, петушок, а вот реальные компиляторы обязаны компилировать вполне определенным образом.
Только основу языка(которая изложена в K&R). Но есть и некоторые вещи, которые компилируются в каждом компиляторе по разному: размер unsigned char, int, long int в битах, распределение битовых полей в памяти, приоритет логических и арифметических операций и т.д. Тот же стандарт MISRA C рекомендует избегать таких операций, которые зависят от компилятора.
>Ты его не знаешь.
Я его знаю. У меня несколько лет опыта работы, за которое я разработал ПО на языке Си для множества микропроцессорных устройств, работающих в медицине и промышленности. При этом я не читал ни K&R, ни стандарты(потому что на это не было времени из-за работы). Я познакомился с языком сначала не лекциях преподавателя, потом по книжке, которая называлась примерно "Учим С++ за 21 день(не помню точно на звание", и по справочнику Шильдта(который представляет собой почти дословный перевод K&R).
А вот ты, походу, борщехлеб, котоырй сидит на шее у мамки и читатает разные стандарты и K&R, и мнишь себя большим знатоком Си.
>не нужны, например, запрет адресной арифметики
>Ты троллишь тупостью, ясно.
Обоснуй. Я действительно считаю, что в арифметике указателей нет ничего плохого и её вполне можно применять.
Аноним 04/08/20 Втр 14:38:54 1768211364
>>1766746
>А в стандарте указано, что есть ровно четыре операции, операнды которых всегда вычисляются слева направо: &&, ||, ?: и запятая
А в стандарте указано, как вычисляются операнды ">=, <=, ==, >, < "?
И раз ты знаешь k&r и стандарты, то, будь добр, ответь еще на пару вопросов, мне правда интересно.
А в стандарте указано, как компилятор распределяет битовые поля в памяти?
А в стандарте указано о распределении приоритета между арифмитическими операндами(+, -, *, /, &, |, ^).
Аноним 04/08/20 Втр 14:43:55 1768216365
>>1766746
Да, совсем забыл, и про:
>размер unsigned char, int, long int в битах
расскажи. Ну, есть про это в страндарте или нет.
Аноним 04/08/20 Втр 14:52:11 1768222366
>>1768181
>я разработал ПО на языке Си для множества микропроцессорны
Какой иде пользуются на производстве? Бодьшие объёмы у программ?
Аноним 04/08/20 Втр 15:19:42 1768245367
>>1768181
Блять, напиши какое медицинское оборудование, чтобы я случайно не воспользовался и не подох.
Аноним 04/08/20 Втр 15:26:58 1768248368
>>1768245
Дилдак с имитацией фрикций твоего папаши
Аноним 04/08/20 Втр 15:42:27 1768260369
>>1768012
А про то что умножение выполняется раньше сложения тоже надо таким чудо читателям объяснять? Надо просто знать язык, а не превращать программы в (((лисп)))
Аноним 04/08/20 Втр 16:29:20 1768325370
lol pts.png 149Кб, 824x950
824x950
>C++ содержит средства, позволяющие программисту нарушать заданную в конкретном случае дисциплину программирования. Например, модификатор const задаёт для объекта свойство неизменности состояния, но модификатор mutable предназначен именно для принудительного разрешения изменения состояния внутри константного объекта, то есть для нарушения ограничения константности. Более того, допускается динамически удалить атрибут const с константного объекта, превращая его в леводопустимый (L-value). Наличие в языке таких возможностей делает попытки формальной верификации кода бессмысленными, а использование ограничений для оптимизации невозможным.
SOOOQAAA BLYAAAAD
04/08/20 Втр 17:01:43 1768352371
>>1768211
> А в стандарте указано о распределении приоритета между арифмитическими операндами(+, -, *, /, &, |, ^).
Да, приоритеты фиксированные и кроме побитовых операторов - даже логичные. Гуглишь такой C operator precedence chart, там все будет. Естественно, для операций с одним приоритетом порядок вычисления не определен.

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

>>1768216
Да, есть. Минимальные размеры и соотношения между размерами. Возьми и сам посмотри.
Аноним 04/08/20 Втр 18:05:51 1768417372
>>1768222
Зависит от устройства, для каждого разное IDE. В зависимости от микропроцессора и микроконтроллера используются разные IDE для разных семейств процессоров (Keil, Atmel Studio), у ПЛК и панельных компьютеров свои собственные IDE, поставляемые производителем на диске.
>Бодьшие объёмы у программ?
Что ты имеешь ввиду, размер прошивки?
Разные бывают, от пару килобайт для небоших контроллеров до десяти мегабайтов для ПЛК.
Аноним 04/08/20 Втр 18:08:51 1768422373
>>1768352
> А в стандарте указано, как компилятор распределяет битовые поля в памяти?
>Да. Как ему больше нравится.
Выходит, что этот анон >>176673 не прав?
И есть вещи, которые каждый компилятор может реализовать по-своему?
Аноним 04/08/20 Втр 18:09:28 1768424374
Аноним 04/08/20 Втр 18:12:31 1768426375
>>1768422
Причем тут "какие то" вещи когда речь шла только о порядке в && || ?
Аноним 04/08/20 Втр 18:14:48 1768427376
>>1768422

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

Человек на полном серьезе считал что if (a && *a==100) может как то по разному скомпилироваться.
Аноним 04/08/20 Втр 18:16:23 1768430377
Аноним 04/08/20 Втр 18:25:22 1768436378
image.png 4Кб, 250x98
250x98
>>1768260
Язык(тот который изложен в книге K&R) знают все разработчики и все компиляторы трактуют его одинаково.
А вот остальные его диалекты-наследники (С89, С99, С11) также поддерживают K&R-Си, а в остальном отличаются.
Вот ты точно читал и выучил стандарты C89, C99, С11 и знаешь, в чем они отличаются?
Поэтому проще не использовать в программе операции, которые разными компиляторами и диалектами могут изменяться по разному.
Аноним 04/08/20 Втр 18:29:35 1768441379
>>1768426
Посмотри всю дискуссию. Дальше некоторые аноны
>реальные компиляторы обязаны компилировать вполне определенным образом.
> Есть стандарт, там написано, как какие выражения обрабатываются, если компилятор реализует это как-то иначе, чем как описано в стандарте, то это уже не компилятор языка С.
начали утверждать, что язык Си должен компилироваться всеми компиляторами одинаково, а вещей, которые каждый компилятор может компилировать по-разному - нет.
Аноним 04/08/20 Втр 18:38:24 1768450380
image.png 19Кб, 200x78
200x78
>>1768427
> что if (a && *a==100) может как то по разному скомпилироваться.
Между разными диалектами языка может компилироваться по разному.
Аноним 04/08/20 Втр 18:47:42 1768456381
Аноним 04/08/20 Втр 19:06:24 1768469382
>>1768436
В каком из этих "диалектов" порядок в операторе && станет другим, клоун?
Аноним 04/08/20 Втр 19:08:48 1768470383
>>1768450
Чел, если бы это было так, то компьютеры вообще не работали бы. Порядок проверки в && это фундаментальная вещь. Иначе бы у тебя всякие разыменовывания NULL происходили до проверки что это не NULL.
Аноним 04/08/20 Втр 19:34:35 1768483384
>>1768469
> Порядок проверки в && это фундаментальная вещь.
Фундаметнальные вещи написаны в K&R. Найди мне это в K&R.
Аноним 04/08/20 Втр 19:36:57 1768486385
>>1768483
48 страница таблица 2.1, а что?
Аноним 04/08/20 Втр 22:29:06 1768555386
>>1768181
>несколько лет опыта работы
>не читал ни K&R, ни стандарты(потому что на это не было времени из-за работы)
Ебаная макака-байтоеб ты, вот кто. Несколько лет — это ни о чем, студентишка или аспирантишка тупорылый. Как тебя приняли на работу без знания стандартов, фантазер?
Аноним 04/08/20 Втр 23:54:58 1768587387
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 <bunk@debian.org> Wed, 29 Jul 2020 08:53:14 +0300
05/08/20 Срд 07:23:24 1768675388
Предлагаю репортить всем тредом эту аватарку анимешную. Разводит срачи, флеймит и троллит в C/C++ треда и бох знает где еще. Причина: аватарка, не релейтед, флейм, троллинг, итд
Аноним 05/08/20 Срд 08:45:00 1768686389
srand считывает число и что дальше? Почему одни и те же занчения при одинаковых числах ввода? Почему rand не может каждый раз выдавать новое число?
Аноним 05/08/20 Срд 08:47:19 1768687390
>>1768675
>петухану настолько бомбит, что он бегает выискивает эту аватарку с тремя постами по всему двощу
Лол. Какой же ты жалкий. Аватарка тебя по делу унижала.
Аноним 05/08/20 Срд 09:04:39 1768691391
6fa.jpg 45Кб, 680x521
680x521
>>1768587
библиотечка ТУРБО! ля какая!
Аноним 05/08/20 Срд 09:09:08 1768692392
>>1768686
П Р И М Е Ч А Н И Е
Возможно, вам потребуется, чтобы программа всегда генерировала
новый набор случайных чисел при каждом запуске. Такая рандоми-
зация нужна при создании игр, однако многие симуляторы и научные
исследования подразумевают повторение одних и тех же случайных
чисел. Функция rand() предоставляет как раз такой функционал,
если вы не задаете семя генератора случайных чисел.
Аноним 05/08/20 Срд 09:45:27 1768703393
>>1768686
>>1768692
>что дальше?
Дальше тебе нужно съебать в ньюфаг-тред, школьник.
Аноним 05/08/20 Срд 10:43:20 1768722394
Аноним 05/08/20 Срд 13:11:35 1768894395
>>1768692
>семя
Это в проц кончить надо?
Аноним 05/08/20 Срд 14:49:56 1769084396
15939395322320.png 886Кб, 1058x1080
1058x1080
Кстати, анончики, что получится при вычислении выражения С/С++ (в С18)?
Имеются в виду варианты, когда оно скомпилируется.

>>1768894
В принцыпе можна и наоборот. Чтобы проц в тибя кончил. Незабудь переодеться в девочьку, анончек.
Аноним 05/08/20 Срд 15:16:46 1769137397
>>1768894
В функцию передать.
Аноним 05/08/20 Срд 15:40:05 1769175398
>>1769084
Какое выражение блядь? Почему ты не мог написать a/a++? И да всё что связано с инкрементом в выражениях это уб
Аноним 05/08/20 Срд 19:57:17 1769328399
>>1769084
>что получится при вычислении выражения
Результат вычисления выражения.
Аноним 05/08/20 Срд 20:02:50 1769331400
Такс, ну что получается. Почитал K&R и этого вашего Прату. А что теперь собстно делать? На hh и 300к/месяц мои? Что дальше учить, анончи?
Аноним 05/08/20 Срд 20:04:59 1769332401
>>1769084
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
Аноним 05/08/20 Срд 20:37:54 1769362402
3C560D0C-568A-4[...].jpeg 20Кб, 256x197
256x197
>>1769175
>всё что связано с инкрементом в выражениях это уб
Аноним 05/08/20 Срд 20:39:07 1769365403
>>1769175
>это уб
Что такое уб?
Аноним 05/08/20 Срд 20:51:35 1769372404
>>1769365
он сам не знает, если че
05/08/20 Срд 21:01:49 1769383405
>>1769331
> Что дальше учить, анончи?
Дальше учить все. Предметную область. Учиться писать код под линупсы, виндовсы: POSIX, Windows API, сети и существующие подходы для неблокирующего IO, многопоточность, на OpenMP посмотри хоть издали, SIMD-интринсики и как заставить компилятор высирать что-нибудь вменяемое без них, драйвера хоть чуть-чуть, всякие libusb, CMake, куда же без него. Алгоритмы/структуры данных не забудь, хотя бы кейворды узнай, чтобы потом под задачу гуглить. Напиши со всем изученным несколько качественных хелловорлдов. Потом можешь отладочную плату с микроконтроллером взять поиграться, тот же самый путь, посмотри на пару ртосов. После этого у тебя в гитхабе будет, что показать, ты пойдешь на hh, а там нихуя нет вакансий для тебя.
Аноним 05/08/20 Срд 21:03:59 1769387406
>>1769383
>нихуя нет вакансий для тебя.
Ну заебись и как реализовывать знания тогда?
Аноним 05/08/20 Срд 21:26:04 1769400407
>>1769387
Проще будет во фронтэнд вкатываться.
Аноним 05/08/20 Срд 21:31:33 1769403408
>>1769400
Не интересно, работа для хлебушков. Я хочу кибернетику, МК, ядра, драйвера и всё такое задротское.
Аноним 05/08/20 Срд 22:13:09 1769421409
15783803570532.png 98Кб, 821x705
821x705
>>1769403
Так это же самая сермяжная мужицкая параша, а не передний край. Как раз для хлебушков.

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

Тру - это машобчик, ООП, графика, игры, софтвер инжиниринг.
Аноним 05/08/20 Срд 22:15:57 1769422410
>>1769421
Энивей веб я послал через 2 часа чтения синтаксиса жса.
>машобчик, ООП, графика, игры, софтвер инжиниринг.
Вкачусь хотя бы на минимум лоу левела и пойду в плюсы.
05/08/20 Срд 22:37:25 1769440411
>>1769421
> Тру - это машобчик, ООП, графика, игры, софтвер инжиниринг.
Машоб не нужен, ооп мертво, грауфоний сделают за тебя, игры не нужны.
Аноним 05/08/20 Срд 22:38:56 1769442412
>>1769440
>ооп мертво
В фыпешном борщемирке разве что.
Аноним 05/08/20 Срд 23:30:12 1769467413
Аноним 05/08/20 Срд 23:33:56 1769472414
Аноним 06/08/20 Чтв 14:37:17 1769882415
>>1768555
>Ебаная
>фантазер?
>тупорылый.
Борщехлеб, не гори. Тебе просто завидно, что я работаю, получаю деньги, кормлю семью и родителей и у меня есть опыт работы, а ты сидишь дома на шее мамки, никому не нужный на рынке труда, зато со знанием стандартов.
>макака
Я не макака, я пишу довольно качественный код, соответствующий во многом MISRA C.
>байтоеб
Так то любого, кто пишет на Си можно назвать "байтоебом", потому что это low level язык, в отличии от языков высокого уровня, и он подразумевает непосредственную работу с байтами и регистрами.
>Несколько лет — это ни о чем, студентишка или аспирантишка
В айти за несколько лет можно до миддла дорасти, тут то же самое. Зависит от человека, можно и 10 лет чаи гонять и остаться на уровне студентишки, а можно за пару лет саморазвиваться и стать нормальным специалитом.
>Как тебя приняли на работу без знания стандартов,
По собеседованию, посмотрели оценки в дипломе и позадавали вопросы по теме. К тому времени я сделал множество pet-projects на мк(не ардуино) на тысячи строк кода, поэтому я безпроблем смог ответить на вопросы. Также в вузе обучали этому очень хорошо. Ответь, зачем нужно знание стандартов? При том, что я знаю язык Си (тот, который k&r), а разные штуки, а компиляторо-зависимые операции в коде я не использую?
06/08/20 Чтв 15:41:13 1769959416
>>1769882
> качественный код
> соответствующий во многом MISRA C
Выбери что-то одно.

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

Представление программистов об языке Си отличается от представления компиляторов и стандарта. Вот тут даже исследование проводили: https://www.cl.cam.ac.uk/~pes20/cerberus/notes50-survey-discussion.html
Аноним 06/08/20 Чтв 16:02:28 1769977417
>>1769882
Чел, язык описывает стандарт, а твой k&r это просто фанфик на тему.
Аноним 06/08/20 Чтв 16:21:49 1770006418
vlpaeXQzgs0.jpg 103Кб, 436x736
436x736
>>1769882
>завидно, что я работаю, получаю деньги, кормлю семью и родителей и у меня есть опыт работы
Да вообще единственный тут молодец у мамочки. Ты забыл упомянуть, что еще у тебя есть крыша над головой, что надеть и деньги на проезд, лолка.
>за несколько лет можно до миддла дорасти
Да за несколько лет до мидла даже неграмотное колхозное чмо дорастет (такое, как ты).
>на мк(не ардуино)
А чем тебе не угодил ардуино? Они там такие же, как ты, неграмотные школьники, не шарящие в стандартах и творящие всякую хуйню в своих либах. Хотя, с другой стороны, "тру-мк"-байтопетухи ничуть не лучше зачастую. зачастую они еще хуже
>на тысячи строк кода
Это тип многа что ли? Кек. Десяток тыщ строк - это мелкий проектик. А если на тыщу - это вообще на пару вечеров крошечная хуитка.
>в вузе обучали этому очень хорошо
Заметно, как тебя обучали в пидорахенской шарашке. Даже инженерную культуру не привили.
Аноним 06/08/20 Чтв 16:26:55 1770015419
>>1769882
>вузе обучали этому очень хорошо.
Что за вуз то? обычно ойтишники хают во.
>пару лет саморазвиваться и стать нормальным специалитом.
Нихт, нормальным специалистом варясь в собственном дерьме не станешь.
Аноним 06/08/20 Чтв 16:32:28 1770026420
Подскажите где смотреть, запускаю в С-Free и CodeBlock-e с #include <Windows.h>
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

В самих иде нормально кириллицу показывает, запускаю из exe кодировка слетает.
Аноним 06/08/20 Чтв 17:49:01 1770081421
15876688217420.png 127Кб, 340x368
340x368
>>1770015
>Нихт, нормальным специалистом варясь в собственном дерьме не станешь.
Почему же? Подпердываешь кодом каким-нибудь норм опенсорцным проектикам, правишь баги, и збс. Все лучше, чем поделки васянов в говноконторах дрочить.
Аноним 06/08/20 Чтв 22:43:29 1770356422
пиздец ору с зумерской маньки у которой СТАНДАРТ НИНУЖОН
Ебучее поколение юнит фактори
Аноним 06/08/20 Чтв 22:45:37 1770358423
>>1770026
Для твоего же блага, поищи это на стековерфлоу
Аноним 07/08/20 Птн 10:33:59 1770625424
>>1770358
Не ищется, пробовал в Кодеблокс в редакторе кодировку поменятьь везде слетело.
Аноним 07/08/20 Птн 13:07:59 1770813425
изображение.png 368Кб, 1280x720
1280x720
>>1770356

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

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

Ну вот тебе общепризнаный бумер-король байтоёбства, причем именно апологет няшной? купивший себе феррари в начале 90х, а в нулевых решивший запустить за долго до маска ракету в космос.
Аноним 07/08/20 Птн 13:11:06 1770816426
>>1766375
>Как в нашей конторе говорили дедушки (си-синьоры с большим опытом работы): "На компилятор надейся, да сам не плошай".

У си-сеньеров-дедушек типичная формула решения проблемы - работает не трожь. Доходит до смешного - вместо того, что бы исправить UB в коде деды-пердеды будут держатиь виртуалки с досом с древним компилятором борланда, орать на джунов, ПОСМЕВШИХ скомпилировать новой версией GCC и менторским тоном ЗАПРЕЩАТЬ.
Аноним 07/08/20 Птн 13:19:39 1770835427
>>1770813
И чо? Чо ты сказать-то этим хотел?
Аноним 07/08/20 Птн 13:48:25 1770874428
>>1770835

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

Диды как раз с размаху стреляли себе в ногу, верили в карго-культ конкретной версии компилятора конкретного производителя, и вычисляли обратный квадратный корень через UB.
Аноним 07/08/20 Птн 14:15:38 1770899429
>>1770874

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

Переписать бы весь линух и всю его экосистему на расте да зажить, но не судьба.
Аноним 07/08/20 Птн 14:29:58 1770917430
>>1770899
через лет 15 и так перепишут, не ссы, анон
Аноним 07/08/20 Птн 14:36:29 1770925431
>>1770874
>>1770899
Там же написано - "evil hacking". Т.е. автор знал, что это плохо и не по стандарту. Так что твои маняфантазии мимо, зумерок. Диды ведь все эти стандарты и понаписали, между прочим.
Аноним 07/08/20 Птн 14:42:11 1770931432
>>1770813
Прикинь сколько с этим было ебли при портировании на другие платформы.
Аноним 07/08/20 Птн 14:43:16 1770933433
>>1770899
>Переписать бы весь линух и всю его экосистему на дырявом говне
Зачем?
Аноним 07/08/20 Птн 14:49:40 1770941434
>>1770925

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

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

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

Они стреляли в ногу, верили в рассово верную версию компилятора и токсично пердели про КОКОКО ЛАМИРА НИПАЙМУТ ПШЕЛ НАХ МЫ ИЛИТА ТРОГАЕМ БАЙТИКИ АХАХАХА в эпоху своей молодости, тщательно оберегая свои САКРАЛЬНЫЕ ЗНАНИЯ.
Аноним 07/08/20 Птн 14:55:46 1770947435
>>1770931
>Прикинь сколько с этим было ебли при портировании на другие платформы.

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

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.
Аноним 07/08/20 Птн 15:06:21 1770955436
>>1770941
Там нет никакого UB и выстрела в ногу, пидор.
Плохо, непортируемо, но вполне допустимо. Implementation-defined - это не UB.
Аноним 07/08/20 Птн 15:07:45 1770957437
>>1770955
Глаза протри, каст между long и float - это UB, а не ID.
Аноним 07/08/20 Птн 15:10:10 1770960438
>>1770955

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

> каст флота к инту через разыменовывание кастованного указателя.
Аноним 07/08/20 Птн 15:10:29 1770963439
>>1770957
Между float и long, сам зенки протирай.
И пруф тащи, что это UB.
Аноним 07/08/20 Птн 15:11:36 1770964440
>>1770960
Цитату, цитату из стандарта приведи. Сам придумал UB, сам сегфолтишься, лолка.
Аноним 07/08/20 Птн 15:11:51 1770965441
Аноним 07/08/20 Птн 15:12:01 1770966442
>>1770955

А вот портируемо как раз вполне, лонг и флоат на большинстве платформ будут иметь 32 бита, а такой платформы, что бы у float и long32 был бы разный порядок байт попросту нет.
Аноним 07/08/20 Птн 15:14:05 1770968443
>>1770966
Толсто. Раньше флоаты вообще 80-битными были.
Аноним 07/08/20 Птн 15:16:43 1770971444
>>1770968

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

Нет, 80-битными были long double.

Аноним 07/08/20 Птн 15:23:24 1770979445
>>1770965
Стандарт на твой манямирок? В стандарте языка C такого нет.
Аноним 07/08/20 Птн 15:23:41 1770981446
>>1770971
В любом случае, не на всех же платформах вроде был IEEE 754? Помню сталкивался с каким то компом где знак был между мантиссой и экспонентой, значит этот васяношифт не сработал бы.
Аноним 07/08/20 Птн 15:36:04 1770993447
>>1770981

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

Аноним 07/08/20 Птн 15:38:24 1770994448
>>1770993

Причем лал был в том что в первую халву на s3 играть было можно, в усмерть джамперами разогнав проц и мать (на особо кошерных матерях до аж 500 мгц на второпне, лал).
Аноним 07/08/20 Птн 15:50:27 1770998449
Аноним 07/08/20 Птн 15:53:15 1771000450
>>1770933
Чтобы победить С/С++ конечно и захватить мир!
Только санитары мешают :(
Аноним 07/08/20 Птн 16:00:14 1771009451
изображение.png 19Кб, 598x283
598x283
изображение.png 25Кб, 608x555
608x555
>>1771000
>>1770933

Один ваш бог уже отвернулся от вас, второй копротивляется, но на полшишки и со смазкой уже согласился.
Аноним 07/08/20 Птн 18:57:24 1771259452
>>1771009
Кармак ЭКСАЙТЕД с любой херни, связанной с программированием, он и про хачкель так же говорил. А потом пишет на плюсах, ибо в мире реальном альтернативы нет.
Вангую: и не будет.
Аноним 07/08/20 Птн 18:58:43 1771262453
Аноним 07/08/20 Птн 19:05:11 1771266454
>Типикал растопидор:
>Переписать бы %projectname% на расте
>97.9998% unsafe
>КОКОКО РАЗД ПАБИДИЛ СИ
>В чем разница между явной и неявной безопасностью? Я не знаю и мне не нужно
Аноним 07/08/20 Птн 19:10:18 1771269455
>>1771009
Кармак серьезно не занимается программированием уже лет 15, сейчас он просто играет с разными технологиями
Аноним 07/08/20 Птн 19:13:12 1771272456
>>1771269
>ВРЁТИ!
в палату мер и весов
Аноним 07/08/20 Птн 19:15:57 1771274457
>>1771272
Лекции его послушай и успокойся.
Аноним 07/08/20 Птн 19:35:16 1771298458
>>1771009
Какой еще бог, бумер? Кармак это дед который застрял в 90-х.
08/08/20 Суб 00:08:04 1771507459
>>1770979
Есть. Называется strict aliasing. long и float не совместимы, behavior is undefined. На самом деле раньше так писали потому, что раньше компиляторы aliasing analysis не делали, и поэтому никаких ног таким образом не повреждалось.

Аноним 08/08/20 Суб 09:53:26 1771656460
>>1770874
>годами траленка байтолюбов и полыхания жоп.
Причем тралили и поджигали жопы им вовсе не хаброзумерки, а собственные же баги этих байтоебов из-за незнания стандарта и плохого кодирования.
Аноним 08/08/20 Суб 11:37:04 1771676461
>>1769977
Всё, что есть в "k&r" стандарт по дефолту выполняет.
Обратное утверждение не верно. Версии стандарта (C89, C99, С11) отличаются между собой, но всё, что написано в k&r они выполняют.
Аноним 08/08/20 Суб 11:38:31 1771678462
>>1770015
>Что за вуз то? обычно ойтишники хают во.
Я не айтишник, а инженер, и специальность инженерная(встраиваемые системы), это совсем другое.
Аноним 08/08/20 Суб 12:05:59 1771692463
15404503872483.jpg 85Кб, 986x396
986x396
Аноним 08/08/20 Суб 12:15:06 1771695464
>>1769959
> качественный код
> соответствующий во многом MISRA C
>Выбери что-то одно.
Чем тебе MISRA не нравится? Я её прочитал, но не фанатично использую все правила, а разумно.
>А откуда ты знаешь, что не используешь? Откуда ты знаешь, что у тебя в коде не UB на UB сидит и UB погоняет?
Потому что я следую(в том числе), тем правилам тем правилам MISRA, которые запрещают в коде использовать UB. Использую stdint.h, тела функций и операторов заключаю в фигурные скобки, приоритет операций логических и арифметических указываю скобками, знаю, что битовые поля компилятор распределяет в памяти, как хочет, и т.д.
Аноним 08/08/20 Суб 12:18:45 1771697465
image.png 1026Кб, 1140x570
1140x570
>>1770081
>анимэ
>опенсорц проект
>фулл-реквест
>гитхаб
>стандарт си
Типичный портрет зумерка, борщехлеба-студентика на шее у мамки из этого треда.
Аноним 08/08/20 Суб 12:24:31 1771698466
image.png 134Кб, 347x276
347x276
>>1769421
>Так это же самая сермяжная мужицкая параша, а не передний край технического прогресса. Как раз для хлебушков. И общаться ты там будешь, скорее всего, с нешарящими и тупыми постсовковыми долбоебами-радиолюбителями
Ну дык нечего торчать в Барнауле
>куча каких-то извращенных поверий
Типа каких? мне чисто поржать
>Тру - это машобчик, ООП, графика, игры, софтвер инжиниринг.
<<<
Аноним 08/08/20 Суб 12:33:13 1771701467
>>1770006
>не шарящие в стандартах
Выучил стандарты и выёбывается.
Иди ка ты на хуй, борщехлеб, со своими стандартами и K&R в очко себе затолкай.
мимо C Embedded Senior
Аноним 08/08/20 Суб 13:03:43 1771712468
>>1771695
Зенки распахни свои и извилину напряги. Он имел в виду, что ты соблюдаешь мисру не полностью, дебил ты ебаный, там же курсивом выделено. Тебе с такой внимательностью не то, что адресную арифметику - тебе, сука, структурку страшно давать.
Аноним 08/08/20 Суб 13:31:57 1771725469
>>1771695
> потому что я следую(в том числе), тем правилам тем правилам MISRA, которые запрещают в коде использовать UB.
Но поскольку стандарт ты не знаешь, то и не знаешь что такое UB, а значит в коде у тебя он вполне может быть.
Аноним 08/08/20 Суб 14:03:55 1771751470
>>1771701
Какой пет-проект забабахать, который дал бы мне неплохой начальный буст знаний в эмбедщине? Нужно ли настолько же глубоко нырять в железо, насколько я уже нырнул в софт?
Мимо вчерашний студент камплюхтер сцаенс, есть несколько околобайтоебских пет-проектов на крестах и Сишечке (пока больше на крестах), относительно хорошо знаю Linux internals
Аноним 08/08/20 Суб 14:05:19 1771754471
https://pastebin.com/ikSgD2Kv
Чому в этой форме всё работает, но если заменить
> const char msg[] = "Try again, please.\n";
на const char *msg = "...";
то вместо нужного предложения выводится его обрубок?
Аноним 08/08/20 Суб 14:12:39 1771758472
>>1771754
Если ты хочешь вывести на экран, то не должно быть такого (только если ты не пытаешься вывести строку с пробелами, которую вводил через scanf, ибо scanf перестает читать после пробела)


Аноним 08/08/20 Суб 14:42:56 1771795473
>>1771695
>тем правилам тем правилам MISRA, которые запрещают в коде использовать UB
А разве есть где-то правила, которые разрешают использовать в коде УБ?
Аноним 08/08/20 Суб 16:18:04 1772002474
>>1771751
>Какой пет-проект забабахать, который дал бы мне неплохой начальный буст знаний в эмбедщине?
Какую-нибудь говнолибу для ардуины.
Аноним 08/08/20 Суб 16:29:32 1772010475
>>1771712
>Зенки распахни свои и извилину напряги.
>дебил ты ебаный,
>сука
Со своими родителями так разговаривать будешь, шлюха ёбаная.
Если есть что-то сказать по-факту - говори, а если тебе кроме оскроблений сказать нечего, то пошёл нахуй.
>Он имел в виду,
Ты тоже будь повнимательнее и посмотри в моём посте, что те правила, которые запрещают использовать в коде операции, зависящие от компилятора (UB то есть), я использую все.
А применять все без исключения правила MISRA C не стоит, там слишком много лишнего и получится говнокод.
>Тебе с такой внимательностью не то, что адресную арифметику - тебе, сука, структурку страшно давать.
Ага, то бишь, если я не разглядел стиль написания буковок в нескольких словах(которые и правда почти не заметны, если быстро читать), то я плохой разраб. Отличная логика. Повторюсь, если тебе печет и кроме оскорблений и траленка сказать нечего, то съеби.
Аноним 08/08/20 Суб 16:32:01 1772013476
>>1771795
Нет. Есть, которые запрещают. Которые разрешают нет.
А есть, которые никак не относятся к UB вообще(например, запрет адресной арифметики, или правило, согласно которому в функции может быть только один return.
Аноним 08/08/20 Суб 16:39:59 1772016477
>>1771725
>Но поскольку стандарт ты не знаешь, то и не знаешь что такое UB
Нет, знаю, ведь я читал misra c и знаю язык си(читал k&r). Оно обозначает логику, которая каждым компилятором может трактоваться по разному.
Например, компилятор может размещать битовые поля в памяти как захочет, это нужно учитывать. Или, скажем, в разных компиляторах величина unsigned char, long char и long long char может быть в битах разной величины, поэтому вместо них следует использовать типы, обозначеные в библиотеке stdint.h.
>, а значит в коде у тебя он вполне может быть.
Конечно, от ошибок на 100% никто не застрахован, но я стараюсь не применять UB в коде.
Аноним 08/08/20 Суб 16:55:34 1772023478
>>1772016
Чел, ты говоришь о Implementation Defined, а не о UB. UB не связано с компилятором, оно связано с семантикой языка. А семантика языка определена стандартом (а не фанфиком на тему.) (Как выражение "Косил косой" не имеет одного определенного значения, хотя и написано без синтаксических ошибок.)
Аноним 08/08/20 Суб 17:12:17 1772044479
>>1771751
>Мимо вчерашний студент камплюхтер сцаенс, есть несколько околобайтоебских пет-проектов на крестах и Сишечке
Есть предположение, что ты не знаешь ассемблер.
Если это так, то можно сделать один или два проект на асме, чтобы ему научится. Например, на микрокотроллере (8 битном/32-битном) сделать устройство, которое будет на SD-карту записывать освещенность в комнате в течении дня (высчитывать средне-квадратичную величину освещенности для каждой минуты в сутках). Без файловой системы. Придется читать datasheet на мк и смотреть набор команд ассемблера там же. Так же стоит придется подрубить датчик света и часы-RTC, если они не встроены в сам МК. Потом можно возвращаться в Си.
Асм пригодится для ассемблерных вставок, оптимизации кода + сможешь написать свой компилятор.
С ардуины, как советует этот анон - >>1772002 начинать не стоит, иначе так и останешься на уровне ардуинщика.
Аноним 08/08/20 Суб 17:14:55 1772045480
>>1772044
>сможешь написать свой компилятор.
Орнул. Как побочный продукт обучения.
Аноним 08/08/20 Суб 17:44:28 1772077481
>>1771751
Не слушай вот этого >>1772044 пердуна. Никакой АССемблер тебе не нужен, у контроллеров уже давным-давно куча оперативы, частоты под сотню МГц и кресты с STL в компиляторах.

Лучше купи роутер, накати туда openwrt и в ней ковыряйся.
Аноним 08/08/20 Суб 18:15:28 1772094482
15870166199230.jpg 355Кб, 750x725
750x725
>>1772016
>я стараюсь не применять UB
Еще бы ты, сучара, осознанно его лепил.
>>1772010
Шлюха ебаная - это твоя жена, когда тебя дома нет, пидор ты нестандартный ))) Если ты глаза свои в жопу свою засунул и не видишь ни хуя, то ты плохой разраб, маня. )
>>1772016
>long long char
long long short int как тебе?
Аноним 08/08/20 Суб 18:19:23 1772098483
>>1771697
Что плохого в аниме? Почему студенты тебе не нравятся?
Аноним 08/08/20 Суб 18:32:54 1772107484
>>1772098
>Что плохого в аниме?
Что шизик-анимеаватарка надо мной смеется.
Аноним 08/08/20 Суб 20:29:47 1772183485
>>1772094
>пук среньк
Мне очень важно твое мнение, маня. Очень важно.
Аноним 08/08/20 Суб 20:39:53 1772190486
>>1772077
>Лучше купи роутер, накати туда openwrt и в ней ковыряйся.
Лол, я изначально и начал изучать си, из-за бугурта что не могу элементарно домашнюю сеть настроить, ибо хз как оно там работает на
Аноним 08/08/20 Суб 20:40:43 1772191487
Мне кажется эта чепуха из школы 21 уже сама верит в ту хуйню что пишет))) причем ладно похуй, бывает ньюфаги начинаются мифов про лоу левел язык и начинают срать в каждый тред, но откуда он блджад эту хуйню про стандарт нинужон вычитал?
Аноним 08/08/20 Суб 20:44:11 1772197488
Скоро заканчиваю прату, начал читать 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..

ОРУ сука с трупошизиков, ну как же так, чудес не бывает, какая грусть ёбана
Аноним 08/08/20 Суб 20:55:24 1772203489
14238300505357.jpg 35Кб, 400x224
400x224
Аноним 08/08/20 Суб 21:06:57 1772205490
>>1772203
Кокой молодец и гринтекстом попукал, и боевую картиночку с анимэ запостил. Можешь теперь пойти похвастаться мамке, как ты "всех победил" в интернете.
Аноним 08/08/20 Суб 21:07:46 1772206491
>>1772197
А чтобы выучить Си нужен бэкграунд в ассемблере. А чтобы выучить ассемблер нужен бэкграунд в микропроцессорной технике и цифровой электронике.
Аноним 08/08/20 Суб 21:08:13 1772207492
>>1772044
предположение провальное, есть опыт реверс инжиниринга, довольно неплохо знаю ч86 архтектуру и изучаю попутно ARM.
Аноним 08/08/20 Суб 21:12:41 1772209493
Мдаа.
Классно стандарто-петуха обоссали всем тредом.
Эта манька даже не знает, что есть 3 стандарта языка си (С89, С99, С11) и сомневаюсь, что он полностью выучил хотя бы один из них.
Аноним 08/08/20 Суб 21:22:43 1772212494
ip9pK.png 382Кб, 1348x1080
1348x1080
>>1772044
>начинать не стоит
Сама концепция ардуины действительно уёбищна, но не с армов же начинать. А то там от одной инициализации периферии можно охуеть.

>>1772077
>STL
В МК никогда не используется. Ну может быть в каких-то жирных бордах с лунухом на борту, но я таких не видел. А так даже сишная либа часто кастрированная идёт.
>кресты
Очень ограниченно, в виде С с классами.
Аноним 08/08/20 Суб 21:25:25 1772213495
>>1772212
>но не с армов же начинать.
Там анон говорит, что умеет на асме прогать под x86 и ARM изучает. Зачем ему начинать с таких пустяков, как AVR или 8051?
Аноним 08/08/20 Суб 21:26:54 1772214496
>>1772212
>А то там от одной инициализации периферии можно охуеть.
Можно кубиком все инициализировать, а работать через HAL - даже datasheet не придется читать.
Аноним 08/08/20 Суб 21:38:43 1772218497
>>1772209
Да он сам говорит же, что ему вообще никакой не нужен, только K&R-фанфик. И MISRA он тоже не уважает.
>>1772212
Ты не поверишь, но для АРМов тоже есть ардуина.
>в виде С с классами
Такие, как ты, может, и не пользуются шаблонами. Но нормальным людям они серьезно упрощают жизнь на МК.
Аноним 08/08/20 Суб 21:46:29 1772222498
>>1772218
Посоветуй книгу про шаблоны и паттерны, вообще не знаю, что это.
Аноним 08/08/20 Суб 21:48:23 1772225499
image.png 320Кб, 1080x451
1080x451
>>1772218
>Ты не поверишь, но для АРМов тоже есть ардуина.
Аноним 08/08/20 Суб 21:56:18 1772234500
Аноним 08/08/20 Суб 21:58:41 1772237501
>>1772234
Пиздец ты свинья ебанутая. Надеюсь таких как ты будут убивать в будущем.
Аноним 08/08/20 Суб 22:02:32 1772240502
>>1772237
Если таких, как я, будут убивать, кто же будет гуглить за таких быдлодолбоебов, как ты, а, быдлодолбоеб? Что ж ты ебан-то без гугла, нахуй, сука!
08/08/20 Суб 22:23:14 1772260503
>>1772209
> есть 3 стандарта языка си (С89, С99, С11)
Во-первых, четыре, хоть в последнем и нет никаких нововведений. Во-вторых, они друг друга расширяют, а не заменяют. Из ломающих обратную совместимость изменений только удаление gets и старых способов объявления функций, то есть убирание за собой pre-K&R говна, которое и в C89-то не должно было попасть.

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

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

Если нужно, чтобы работало быстро и для широкого круга применений (пишем обычную либу под десктопы или мобилки) - MISRA точно не вариант. А вот если надо, чтобы после правок кода вчерашим студентом, который даже K&R не осилил, железка за полтора ляма не взорвалась и никого не убила, тогда обязательно нужен какой-либо стандарт "безопасного" кода со всеми перегибами типа скобок в (a * b) - (c / d), и, конечно, с отсутствием маллоков и прочей адресной арифметики. Но от необходимости ревью не избавляет даже MISRA.
Аноним 08/08/20 Суб 22:29:00 1772263504
>>1772260
Не пойму, а как можно отказаться от адресной арифметики?
Вот допустим, нужно написать функцию, которая будет делать сортировку массива. Как здесь обойтись без адресной арифметики.
Аноним 08/08/20 Суб 22:34:06 1772265505
>>1772263
Этот пункт, вроде, запрещает смешивать указатели с доступом по [], а так же арифметику с указателями (потому что там часто объебываются, либо прибавляя не тот размер, что думают, либо вообще из за неправильных скобочек думают что арифметика с содержимым, а на самом деле с указателем), кроме инкремента/декремента.
Аноним 08/08/20 Суб 22:34:50 1772266506
>>1772263
Так что твою сортировку ты сможешь написать либо прямым доступом через [ i ], либо через *p++
Аноним 08/08/20 Суб 22:42:54 1772268507
>>1772265
>>1772266
Теперь понял. Запрещается адресная арифметика, а арифметика с указателями разрешена.
Аноним 08/08/20 Суб 23:05:51 1772276508
>>1772268
Насколько я понял, ptr + 3 запрещена. Пользуйся или ++ptr ++ptr ++ptr, или arr[3]
ПЕРЕКАТ Аноним # OP 08/08/20 Суб 23:25:57 1772291509
Аноним 08/08/20 Суб 23:26:56 1772292510
>>1772240
Поздравляю, ты уретральник. В просторечии "охуевший". Эгоизм, упрямство, спесивость, желание доминировать, соревновательность, амбициозность либо потянут тебя к достижениям, либо сделают невротиком. Ну, если повезёт, то получится это компенсировать без особого вреда для себя и окружающих.
Аноним 09/08/20 Вск 00:27:49 1772340511
>>1772292
Он звуковик, а не уретральник
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов