Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.Пожалуйста, пользуйтесь 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/n2385.pdf- man/Dash/zealdocsЧем компилировать:- Очевидный GCC.- clang: оче годно, батя рекомендует.- Intel C++ Compiler: оптимизации, тысячи их.- Visual Studio 2017 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_Chttps://github.com/kozross/awesome-cОнлайн-утилиты:- https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.Прошлые треды:- №49: http://arhivach.ng/thread/496205/- №50: http://arhivach.ng/thread/502813/- №51: http://arhivach.ng/thread/510484/ >>1540431 (OP)
>>1571012Типа чтобы CGI/FPM пыхопня воспринимала хуиту типаphp_value "huipizda" "skovoroda" (ака директивы php.ini) прописанные в .htaccess и конфиги жопача.Если нет mod_php, по умолчанию такие записи в конфигах будут просто выбивать 500 ошибку.
>>1571393В блокноте. Можешь в Notepad++, он круче. гыгы, привыкай, раз в прыщавое говно залез - твой выбор
>>1571424Ради бога, почему нет? Компилятору всё равно откуда берутся текстовые файлы с кодом, главное ему их подать в командной строке, чтобы скомпилил в рабочую программу.
>>1571496Удобства всегда нужны, иначе не было бы шикарных отелей, все бы ночевали в клоповниках, всё равно недолго же.
>>1571393Скачай VIM, еблан, он на винду есть, и текстовый режим 720x400 поддерживает, и даже запоминает изменения с предыдущих запусков (что иногда напрягает, потому что иногда хочется смело зажать U и сделать как было, когда открыл), и результаты поиска подсвечивает (что тоже напрягает, убирается поиском ~). Но если сидишь на русской Windows 2000, то придется в панели управления менять язык неюникодовых программ на буржуйский, и тогда полетят все твои сейвы "C:\Documents and Settings\Анон\Мои документы\Игра для лоботомированных\savegame.japidoras". Делай выбор, Нео.
Анон, который хотел сделать печаталку для игры, ты сделал? А то мне тут заявления присылают, что любая рандомная тня может так сделать)
>>1571823Вот так вот - нихуя вы не можете, а только пиздите. Вот так же моя проблема в сто тысяч тежялее вашей, а вы только пиздите - да ты просто сделай то, да ты просто сделай это, все не спят по трое суток и норм.А мне ничего не надо, я просто хочу чтобы этот поганый участок земли снесло ядерным ветром.
А!! Ещё и каргокультисты, а без того ведь в современном мире ну никак. Процессоры то работают только на английском языке.
>>1571565"Удобства" уровня использовать студию для написания хелоуворлда - это когда ты заказывал садового гномика, а тебе привозят во двор чугунную копию статуи свободы в полную величину, которая потом ещё и заваливается набок, как Пизданутская башня, ибо фундамент под неё нихуя не сделали.
>>1572062Дебил с дебильными аналогиями их жопы. Типичная красноглазая пердоля. Как можно программировать не владея логикой? Поэтому линуксы вечно такое говно.Объяснения для дебила: Твоя аналогия никуда не годится, потому что студия обладает всеми теми же свойствами, что и блокнот, т.е. является его абсолютной функциональной копией. Наличие дополнительных свойств и возможностей не отрицают базовые, которые все те же самые.
>>1572321Да, и при этом она весит не 100кг, как гномик, а 20 гиг, которые надо откуда-то высрать.При этом места на нищесосоде у студодауна может и не быть.
захотел изучить С, в книге пример с хэло ворлд. Скачал ТСС, хуй знает как его вообще блять установить гугл нихуя не находить. скачать жирнее не могу, у меня всего 5гигов блять на месяц
>>1572351Not sure if trolling or just stupid.Чем тебя не устроил досовский Borland TurboC, нищук из 2004 с жопарезом по трафику? Надо было обязательно лезть и качать tcc в исходниках? Ну малаца, переводи теперь их сам в машинные коды в блокноте - компилятора же у тебя нет.
Поясните за отличия в объявленияхextern char _binary_start[];иextern char _binary_start;При попытке доступа, во втором случае софт сегфолтит. В первом - всё ок. Сами символы определяются в отдельном .o файле, и затем прилинковываются к основному.
>>1572392>OpenWatcomВ этой теме крутой нубский дебагер. Так просто и удобно показано содержимое переменных в реальном времени.
>>1572427Потому что в первом случае ты копируешь объект, а во втором указатель. По объекту нельзя итерироваться (array[]++ тебя выходит).
>>1572351Бля, качни бинари, либу, распихай все попакам, вбей нужное в PATH и юзай в консолечке, чего тебе еще?
Почему происходят утечки памяти в программах на Си? Неужели так сложно написать аккуратно? Или же отследить утечки трудно?
>>1574302>Неужели так сложно написать аккуратно? Или же отследить утечки трудно?Тупые школьники не умеют
>>1574462Если программист не совершает ошибок - необходимо проверить его пульс. Серьезней некуда.>>1574302>Почему происходят утечки памяти в программах на Си? Выделение памяти (чаще всего - malloc(), calloc()) без последующего освобождения. Учитывай, что в коде с большим количеством ветвлений отследить это глазами может быть сложно. К примеру:int f() {char* buf = malloc(255); //резервируем памятьif(usebuf(buf)) {free(buf);return 1;} else return 0; //утечка}>Неужели так сложно написать аккуратно?Могут поджимать сроки, ты можешь плохо выспатся или банально забыть вызвать free() в одной из веток. От глупых ошибок никто не застрахован. Альтернатива - это резервировать память на стэке (через alloca() или локальные переменные), но его объем сильно ограничен, а при переполнении программа почти гарантированно свалится с SIGSEGV (когда при утечке на куче продолжит нормально работать, пока не сожрет всю память).>Или же отследить утечки трудно? Без использования специальных тулзов по типу memcheck - сложно. А их собственно до того момента, пока утечки не начинают быть катастрофического масштаба, тащат редко. Да и обнаружить утечки во всяких специфичных случаях даже с такими тулзами может быть проблемой, т.к. производительность во время их использования околонулевая, и прогонять полноценные тесты после каждого коммита может быть сложно. Другой вариант - статические анализаторы кода, но лицензии для энтерпрайза стоят сотни нефти, да и вообще вещь не слишком популярная.
>>1574302Когда устал, когда только проснулся, когда уже вечером хочешь спать, когда не выспался и в обед начинает вырубать в сон - любую хуету можешь написать, любую утечку. И никто тебя домой поспать не отпустит. А если ещё дома проблемы и голова другим забита, а надо проект пилить? Ошибки не от того что программист тупой, а от внешних факторов.
>>1574555как заебали эти охуительные истории или тут вся борда вкатывальщиков ебанатов.ты на живую пишешь, чтобы маллоки и фри хуй знает где пихать? архитектуру не проектировали, требования не узнавали, сразу склр и начали код хуячить, да?
>>1574302Просто когда пишется тестовая версия программы, или какого-нибудь функционала, на освобождение памяти никто сильно внимания не обращает по очевидным причинам - программа в рантайме при тестировании долго не будет, а значит при завершении она освободится в любом случае. Так и забывают накачать код справедливыми free()ками
>>1574568Поэтому когда речь идет про утечку, обычно имеют ввиду программы которые работают в фоновом режиме сутками. Поэтому если программа сожрет память и обратно её не отдаст, через некоторое время у тебя RAM не остается вообще.
>>1574530Да нет, я вкатывальщик. Ко мне эти титулы вообще относиться не будут, так как не для работы.>>1574568А я думал, что это какая-то жутко неочевидная вещь. Я ведь сразу собираюсь всё это прописывать.
>>1574593>Я ведь сразу собираюсь всё это прописывать.Освобождать память тоже надо аккуратно. Если освобождаешь, обратиться уже не сможешь. Так и может сегфолт выйти в какой-нибудь момент. Поэтому перед тем как пихать free(), подумай есть лии где-нибудь места в коде, которые по идее могут использовать выделенный участок памяти. Поэтому пользуйся комментариями -- оставляй заметки, что выделенная память должна быть освобождена если закончил с ней работать.
>>1574559> сразу склр и начали код хуячить, да?Ну как бы да, я просто придумываю программу которую мне надо, сажусь и пишу её.Ниче не течет, брат жив. В коде ниче сложнее if-else нет. Проги для мультимедии.Проебаться могу только если затуплю где-то по какой-то причине, указанной в предыдущем посте.Если чё-то не устраивает в работе программы, можно запустить профилирование и посмотреть чё как.Самый знаменитый баг у меня так и был. По невнимательности 1000 и 1000000 доли секунды перепутал, а так как тестов я тоже не пишу баг жил долго, но потом он мне надоел, я его нашел и исправил.
>>1574619>В коде ниче сложнее if-else нетСложность си не в синтаксисе, а в том, что практически все надо писать вручную, и только после тысячной отладки это будет работать нормально. В основном происходит адская ебля с памятью, исправлением сегфолтов и прочей подобной хуйни.
>>1574624Такое происходит когда ебланы используют вещи не по назначению. А конкретно, пишут сложные алгоритмы в низкоуровнемом си-стиле и велосипедят библиотечные фичи. Короче говоря, это любой узколобый приверженец одной тулзы, наподобие сишников, отрицающих плюсы в 2020 году.
Анон, на работе (обычный инженер-схемотехник) требуется освоить программирование микроконтроллеров, так как я там один из немногих вьючных мулов (да и на будущее не против, сам хочу). Но разница между "сам хочу" и "требуется освоить" во времени. Меня особо, конечно, никто не подгоняет, но все же. В общем, практически во всей литературе по МК, использующимся в фирме, требуется "базовое знание С". Я, собсна, наверное только синтаксис и знаю. Достаточно ли этого чтобы просто ЧИТАТЬ и ВНИКАТЬ (естественно я могу загуглить часть кода из книги, чтобы понять, для чего оно тут.) Просто пока я жду доставки отладочной платы все равно надо что-то поделать будет, может есть какой небольшой учебник, все равно надо будет потом овладевать в совершенстве.
>>1575080>отрицающих плюсы в 2020 году.Какое отношение плюсы имеют к си? Да и, на секунду, в 2020? Совсем другой язык, нестаибильный с кучей перемешанного говна. Это как сравнивать пхп с плюсами.
>>1575088Блядь. Ты долбаеб? Я вообще не понимаю таких тупорылых уебанов, как ты. Сука. У тебя есть все: знания о МК, как работают схемы и тд. Язык программирования - это инструмент! Полно, блядь, инфы о том, как программировать МК, сука, но нет, я лучше напишу хуйню, которую даже не пытался вбить в поисковую строку. Иди на хуй. Просто пиздец. Ебучий инженер-схемотехник не может загуглить и освоить элементарную хуйню для своей задачи. Что ты, блядь, за инженер вообще такой? Я понимаю, если речь идет о каком-нибудь уебане, который из шахты вылез, услышав о 300к/нсек в IT и решивший вкатиться. Но, блядь! Эти вопросы задает не шахтер Василий, а человек, казалось бы, обладающий логическим мышлением и знаниями в СВОЕЙ технической специализации!
>>1575101Ну чо ты наехал то, желчный. Я же говорю, жду, пока мне привезут даром отладочную плату, а без неё я даже тамошний хелоуворлд не смогу осилить (помигать светодиодом). Вот я и хотел пустоту занять ковырянием в самом языке. Я помню, что когда ковырялся в чужом коде своего изделия, то у меня возникали некоторые вопросы, вроде "зачем ставить два раза указатели", но ответы быстро гуглились. Я не чувствую себя уверенным программистом, потому и спрашиваю. Я недельку проглядел функции, которые в описаны в библиотеке HAL, в принципе понял, что оттуда можно брать, потому больше там ковыряться не хочется. А от скуки порешать всякие тупые задачки я не особо против. Но нужно ли это?
>>1575101Это такая категория паразитов. Спецы ассказывать про себя слезливые истории, чтобы окружающие сочувствовали и кормили с ложечки. И так каждый раз. Лучше настрочить еще одну историю про себя бедненького в стену текста, чем вбить пару слов в гугл. Клиническое паразитическое социоблядство головного мозга.
>>1575146>Но нужно ли это?Неа, и микроконтроллеров своя специфика, деревья ты на них вертеть не будешь, хэши гонять тоже, а вот порты дергать и байты гонять это да.
>>1575080Плюсы сложнее Си, как ни крути. Надо осваивать, всякое ООП осиливать. Сложна, короче. И форматированный ввод/вывод все равно подтягивать из Си, лол
>>1570501 (OP)Аноны вопрос по стилистике. Занимаюсь мелким фрилансом, поэтому варюсь в собственном котле и естественно стилистика "эволюционирует" отдельно от какого либо сообщества.В последнее время начал злоупотреблять следующей хуйней. Насколько заниматься подобным - хуево?
>>1575223Заеьись, я тоже переменные все вначале объявляю. Только однотипные через запятую. Ну и переменные я слитно пишу, а нижнее подчеркивание только в имаенах подпрограмм. Ну и верхний регистр только для структур, дефайнов и констант.
>>1575223> Снейк кейс на сяхНу ты и пидор. Зайди на гитхаб майкрософт и посмотри в каком стиле на сях пишут нормальные люди.
>>1575406Зашел посмотрел, пишут еще функции таким же образом.Но я никогда не понимал подобной хуйни ибо все сливается.Я функции кемлкейзом пишу, переменные снейкейзом. Охуенно же.В чем смысл писать функции и переменные в одном стиле, если можно разными и станет читаймее? >>1575255>НаглядноВот это главное, спасибо. Я вообще предполагал и предполагаю, что это все должно оптимизироваться до обычного IF, а все промежуточные переменные сократяться. Нахуя тогда компилятор этот ебучий нужен?
>>1575449Что за макрос UNUSED? Что делает и как? Это какая-то своя реализация? Вроде, в языке такого нет.
>>1575530Просто не видел такой и не могу даже представить что она делает, исходя из названия. А ты что, пишешь и не понимаешь что пишешь?
>>1575525Ничего не делает, просто убирает ругань компилятора на неиспользуемые параметры. Видишь же, что онм не использованы.
>>1575544Нет. Я у тебя спросил что делает этот макрос, ты ответил "хз". После чего я задал вопрос "пишешь и не понимаешь что пишешь?". В чем тут тралинг проявляется?
>>1575555Значит надо. На будущее или еще зачем-то, только они знают зачем. В любом случае тебя не должно ебать пока не станешь работать в Майкрософт и писать этот код.
>>1575551Мне тыкнули в майкрософтовский код, мол бери стиль оттуда. Я прикрепил скрин, на котором показан стиль майкрософтовского кода.Ты вломился и начал распрашивать меня, че делает некая макрофункция, которая по хорошему может вообще что угодно делать. Удивляешь почему я не знаю.Почему то считаешь, что это я писал.Не тралишь.
>>1575146>вроде "зачем ставить два раза указатели"Ты даже тут вопрос неправильно сформулировал. Ты все еще не знаешь что такое указатель на указатель. А знаешь, что существует еще указатель на указатель на указатель и т.д и т.п? А про разницу константных указателей и указателей на константу ты вообще и не слыхал. Короче, иди макакизм учи.
>Мне тыкнули в майкрософтовский код, мол бери стиль оттуда. Бля, и что в нем уникального? Писать условный оператор слитно с операторами? Ебать... Эти люди, которые говорят ориентироваться на чей-либо стиль сами понимают зачем это? Или им достаточно было знать ЧЕЙ это код?@А НУ РАЗ МУКАСОФТ ТО КРУТО)))00))
>>1575146>порешать всякие тупые задачкиНахуй не нужны эти задачки. Лучше выбери RTOS для своей микрухи. Вызубри доки от корки до корки. И будешь писать как белый человек с нормальным распараллеливанием и менеджментом памяти. А не как холоп с проёбаной архитектурой на прерываниях и периферийных таймерах.
>>1575654> Лучше выбери RTOS для своей микрухи.смотришь на компилятор к своей микре, не умеющий в malloc
>>1575679>utmp.hПотом просто вычитаешь из текущего времени время прошлого логина, если >= 20 минут - помечаешь.
>>1575687Боже я все пытаюсь найти и понять как использовать этот файлЯ подключаю заголовок, он дает задает тип структуру, а дальше то что?
>>1575765>>linuxНастоящая система для настоящих разработчиков любого стэка. Также широко используется учеными.
>>1575849Жаль, что мой ноутбук недостоин этой великой системы, и она на нем работать не желает в любом блять виде.Мимо
>>1575758насколько же я тупойЯ не могу разобраться, как с этим работатья делаю setutent беру getutent ну и endutentМне ut_tv.tv_sec возвращает 50 летЧто я делаю не так?
>>1575874Мимо, Эйсер. В любом случае мобильный пень вместо процессора уже как бы намекает, что ничего путного все равно не выйдет.
Хочу написать простенький сетевой драйвер для линукса. Функционал не важен. Что-нибудь сложности хэлоуворда. В юсерспэйсе на си писал, а драйверы ещё не делал Подскажите с чего начать учить?
>>1576174Вот как раз к срачу с прошлого треда пример нормального стайла, где даже однострочное тело ифстейтмента оборачивается в скобки, благодаря чему код становится в тысячу раз читабельнее, чем без них. И напомню заодно, что люди, которые в жс/питон стайле однострочный иф стейтмент не оборачивают в скобки - это студенты и пидорасы.
>>1576623Скобкодебил, катись обратно в свой лисп текстики жрать. А си это ассемблер, в гем нет пидорских скобачек дрочить на них, только необходимые серьезным людям для серьезного дела.
>>1576623>пример нормального стайла,>Имена макросов слиты в одну нечитабельную хуйнюПочему я должен доверять этому мнению?
>>1577034Видимо тут специализация на коллективную разработку. Скобки везде и на отдельных строчках делают удобным и безопасным добавление и удаление нового кода внутрь. А то, без скобок, добавлять их потом - реально боль в заднице.
Нубский вопрос.У меня есть BITMAP картинка. Скриншот сделаный через win32 API.Я хочу конвертировать это в png с помощью libpng.Я не знаю какой указать bit depth параметр, но я посмотрел, размер данных 8294400 байта для картинки размером 1080 * 1920. Т.е. на один пиксель выходит 32 бита (видимо это потому-что я на 32-битной системе?).Но libpng кажется 32 бита не поддерживает. В мануале в поддерживаемых значениях: 1, 2, 4, 8, 16И код выдает ошибку, что неправильное значение у параметра bit depth.Не понимаю как это сделать мне.
>>1570501 (OP)Когда то пару месяцев назад, спрашивал тут насчет подключения файлов и организации правильной структуры проекта.Вообще сейчас возникла проблема.Некоторые файлы сильно раздулись, хотелось бы вывести их static функции в отдельный файл, что бы улучшить читаемость.Насколько хуево инклудить сишный файл с локальными функциями, напрямую в основной сишный файл?Я не вижу иного пути, т.к. у меня уже некоторые файлы по 3 тысячи строк.
>>1577260Вроде разобрался. Там есть>PNG files reduce possible bit depths to 1, 2, 4, 8, and 16. If your data is of another bit depth, you can write an sBIT chunk into the file so that decoders can recover the original data if desired.Правда у меня все равно ничего не вышло. Черная картинка получилась, но тут уже вы не телепаты.
>>1575884Затоновае купил в кредит по акции в говнонс за 24999.а мог бы взять старый макбук и в хуй не свистеть, благо человеческий юникс туда завезли из коробки
>>1577260>Т.е. на один пиксель выходит 32 бита (видимо это потому-что я на 32-битной системе?).Нет, скорей всего, это потому, что на один пиксель приходится четыре канала ALPHA RED GREEN BLUE, каждый по 1 байту. Хотя BMP ебанутый формат. Нужно смотреть какие настройки были, когда делался скриншот. Там может быть без альфы или ещё какая-нибудь хуйня.А bit_depth указывает глубину одного канала в битах. Значит у тебя нужно указывать 8.
>>1577280Да, ты прав. Я менял настройки и натыкал, но все равно не правильно понял, спасибо.Теперь мне наверное только поменять отсчет снизу наверх, вместо сверху вниз.
>>1577381Атомоговно (переименованное в "типапеньтеум", потому что даже ебланы за 5+ лет кормления говноатомами, начали что-то подозревать). Неработающее в нормальных ОС видео как бонус.
>>1577411Ах, да, бонусом в атомовысерах идут невероятно мутные 1366x768 TN вместо экрана, корпус толщиной с твою мамашу и, отвратительный тачпад и крайне хуёвое общее качество материалов и сборки.
>>1577411Всю жизнь (разве за последние поколения не скажу) была отдельная серия мобильных процов. Ничего не знаю а младшие процы 12-14 годов вполне сносно себя вели на ССД.>>1577412>мутные 1366x768 Необходимость FHD на 15 дюймах охуеть сомнительная. Даже если так - это каприз, несколько лет назад выше FHD ничего и не было, а FHD было уже в ценовом сегменте за 50. Сколько людей знаю - всем похуй всегда было на разрешение. >отвратительный тачпадВсе тачпады отвратительные.>качество сборкиХуйня какая то снобская, типо если засунуть между булок и начать потирать под левой петлей скрипит? Да всем похуй на это, кроме пары тревожных ОКРшиков, на которых всем насрать.>хуёвое качество материаловЕдинственное что правда, но толку, сейчас во всем потреб сегменте так. Это и хуясусы и самсунги. И похуй. На асус можно если разъебется корпус за 2к найти, а на сосунг или сони тебе это выйдет в десятки килорублей, если вообще найдешь.Короче ты снобский дурной нерд, не понимающий, что кроме ТТХ есть гораздо более важные кач-ва.
>>1577460В маках уже 7 лет как 3к IPS в 15". >всеАтомовыпердыш, плиз. Уже как минимум 10-12 лет везде (кроме говна за 25к) есть нормальные тачи.>более важные качества, чем просто не быть говномЯсно.
>>1577273Мимо. За 20 кусков налом, ультрабюджетно. Если накоплю полтинник - возьму на Али Хасси с более-менее нормальным охладом, 1050 и гиперпнем (который мощнее моего FX на станционаре) в сокете.
>>1577460>Необходимость FHD на 15 дюймах охуеть сомнительная.Да, всего лишь позволяет открыть 2 окна рядом, не превращая буквы в трехпиксельную хуету отрицательным масштабированием.>Все тачпады отвратительные.Мышеблядь, научись пользоваться клавиатурой. Тогда ты поймешь, насколько выигрышно не отрывать руку для манипуляции курсором, а лишь отогнуть большой палец (один за пробел отвечает, второй за тачпад).>Хуйня какая-то снобскаяАга, год норм юзается, еще год - все хромает, а потом менять, и так по кругу. Конечно же ты не говноед.мимо
Подскажите на чём можно кодить кроме визуал студио. Оно меня заебало, просит поставить интернет эксплорер 10, откуда я его высру?
>>1577680>не превращая буквы в трехпиксельнуюПревращая их в издевательство над глазами. В своем уме такой текст мелкий читать? Точно так же будешь на лазерную коррекцию тратиться через пять лет. >МышеблядьНоги не нужны. >год норм юзаетсяБ\Ушный говноасер купленный в докризисные за пятнашку, с докупным за 1000р i7, 2012 года, вот до сих пор служит. А ты продолжай строить свой манямирок и покупать оверпрайснутую статусную хуйню, придумывая различные оправдания.
>>1577725>издевательство над глазамиМимо, я вообще ЭЛТ подключать люблю. Я просто одну из возможностей описал. Вообще, 1080p более адеватное разрешение, к которому и 720p лучше апскейлится.>Ноги не нужныДа я не против мыши, когда активно что-то прокликиваешь, но иногда по мелочи удобнее откинуть большой палец. Не фантазирую, а вспоминаю, как меня реально заебывало убирать руку вправо.>покупать оверпрайснутую хуйнюОпять мимо, но мой ideapad 510-15isk меня конкретно подзаёб своим всратым корпусом, охлаждением дующим из под петли по всему экрану, кулером, который иногда ловит что-то твердотельное принимается косплеить звук ГАЗ-2410, самопроизвольно высверливающимся крепежом и тем, что после недавней замены опять весь в трещинах, блядь, выдергивает нитки из моего свитера, когда руку убираю, фиолетовым пятном на экране, потому что климат влажный, и еще кое-какими радостями. Ты скажешь, это сугубо индивидуальная хуйня, а я отвечу, что это элементарное удешевление этапа производства, где вещь по идее должна доводиться до ума. Решительно не могу терпеть такое говноедство, готов перейти хоть на ThinkPad T43 и чувствовать себя успешным человеком. Благо, на замену 10-й винде и 18-й убунте есть божественная XP и какой-нибудь легкий линукс - тысячи их. Это всяко лучше, чем жрать говно.
>>1570501 (OP)Антоны. Короче вопрос.Знаю, что на Си можно написать много чего, однако не знаю, где намутить реальные вакансии с зп?Вкатываюсь по учебнику Кочан Вуд. Ранее читал книгу head First C Не дочитал кстати прошел курс на сололерне и читал старую книгу стивена Праты. Вот прочту я Кочана, куда двигаться дальше? Читать Седжвика алгоритмы на Си? А дальше?кем устроиться по Сишке?Пока работаю в техподдержке банка ,но знаю Python, shell и немного жабу.
>>1577702двачую линуксо коллегу.Ставь любую коляску типа минта, убунты, манжары и юзай. Искаропки все работает.все просто :набрал код в любом редакторе vi, emacs, gedit, pluma, sublime...далее выполняешь нехитрую команду:gcc my_hello_world.c - o my_hello_world && ./my_hello_worldСия команда просит компилятор скомпилировать данные из файла в исполняемый файл в случае успешного выполнения этой команды инструкция ./ запустит этот файл в текущем каталоге.
>>1578189>gcc my_hello_world.c - o my_hello_world && ./my_hello_worldА потом его ждет увлекательный мир ключей компилятора, автоматизация сборки, Make, CMake, shell-скрипты, плагины для автокомплита. Дебагинг кода руками через gdb.>>1578191Ну там C++ скорее, мне кажется.
>>1578196Да не, меня просто позабавила эта инструкция по сборке, которая годится только для программы из одного файла.
>>1577991Ага, а потом думать как поменять шрифт, как сделать чтобы сеть коннектилась, как флешки открывались, как убрать ебучий пароль и тд
>>1570501 (OP)Читаю k&r>/ getbits: get n bits from position p />unsigned getbits(unsigned x, int p, int n)>{> return (x >> (p+1-n)) & ~(~0 << n);>}Допустим, есть некое число, из которого я хочу получить 8 битов со 2ой позиции. Получается: x >> (2 + 1 - 8), то есть x >> -6. Но ведь сдвиг на отрицательное число - это undefined behaviour. Как так?
>>1578508А все, дошло, позиция считается справа налево, но количество битов, что мы берем, идет слева направо. Таким образом со второй позиции нельзя взять 8 битов.
Я так понимаю, даже в бородатые времена в реализации Сишечки asm был необходим лишь для создания оберток системных вызовов? Или всякие менеджеры кучи и прочее тоже прямо на asm писалось? Думаю подобие стандартной библиотеки на asm захуярить.
>>1579280Хуёгика. У тебя что, основной алгоритм, ядро решаемой задачи, раскидан ифами на 50 функций, или божественная монолитная процедура с сотнями goto? По-любому есть какие подпрограммы низшего порядка, и их подзадачу можно как-то по-человечески назвать.
>>1579583У меня в файле куча Set\Get функций описана, конструктор и прочая хуита. Логики там поменьше, но таки да, там пара не маленьких таких свичкейзов. Но большую часть как раз Set\Get занимают ибо они имеют необходимость влиять на логику.
>>1579583> По-любому есть какие подпрограммы низшего порядка,Все что можно - раскидано. Большая часть вызывается 1-2 раза, но все равно обернута в локальную функцию во имя читаемости.
Я изобрел лаконичное и корректное округление размеров:size += -size % sizeof(long);Могу рассчитывать на премию Кернигана, или two's complement и идентичный остаток для знакового и беззнакового деления - сугубо x86, и я - UB-кладбище-пидор?
Алсо, я вам свой маллок принес:https://pastebin.com/rzzeaADhХедер додумайте сами. На форматирование первого if жалуйтесь pastebin пидорам, у которых, в отличие от здоровых людей, tab=4, pi=3.18, iq=70.
>>1580602>>1580604спасибо, благодаря тебе всё работает. подсказал про линукс я загуглил окна и сделал.
>>1580674Чтобы на нём делать всё что угодно. В первую очередь драйвера.Петухи могут сколько угодно кукарекать, но драйвера основна основ по прежнему пишутся онли на си.
>>1570501 (OP)Помогите! Дали задание в вузе, найти неопределенный интеграл методом Ньютона.Я пытался нагуглить что это такое и охуел от сложности, там какие-то трехэтажные формулы и ничего вообще не понятно. Где есть объяснение простым языком как решать интегралы этим ебучим методом?
>>1580694придётся разбираться как это решается. халявы здесь нет, сиди и вкуривай все эти статьи и прочее пока не поймёшь. увы, но моя практика говорит что других путей нет.
>>1580694>Дали задание в вузе, найти неопределенный интеграл методом Ньютона.Определенный может? Как ты неопределенный численно найдешь
>>1580676Вот только драйверы писать не нужно, они уже написаны, не тобой, а свои не напишешь, никто тебе спецификации железа не даст.
>>1580694>>1580694В вузе не могут дать задание, которое досконально не разбирали до этого вместе с преподом. А поскольку ты единственный в треде, кто (не) присутствовал, то сам дурак.
>>1580782>>1580694Интегрирование - это наиболее простые численные методы, они просто в лоб одной функцией пишутся чаще всего, буквально 3 строчки.Метод ньютона, это как метод прямоугольников/трапеций/парабол, только по 4 точкам и с полиномом 3 степени или что-то другое? Какой порядок точности должен быть? Может быть тебе просто вот эта таблица нужна?
>>1580796Скинул бы всю формулировку. N - число сегментов (или точек) разбиения, скорее. Численный метод 18 порядка точности много побочек будет иметь, мне кажется, и это уже не учебная задача, а довольно узкоспециализированная, а вся сложность в выводе соответствующей коэффициентов.Найди в общем как методом парабол/симпсона/гаусса считается интеграл, и подставь вместо 3 точек 4 точки с весами 1/8 3/8 3/8 1/8 из таблицы, почти точно уверен, что это то что тебе нужно. Простых популярный объяснений с картинками тысячи для метода парабол.
>>1580739даташиты можно найти ко многим микросхемам в на той же схеме от материнки ноутба или я ошибаюсь?
Анчоусы, поясните за тип данных. Какая разницу между интежером и лонгом. Вроде читал, но ничего не понял. Объясните доходчиво, молю.
>>1581086Я эту разницу понимаю так: инт минимум 2 байта, лонг 4 байта. То есть в лонг влезет большее число. Но в зависимости от платформы разницы может и не быть.Вот тебе с вики про инт:Как правило, в современных компиляторах для 32- и более -разрядных платформ имеет размер 4 байта и диапазон [−2 147 483 648, +2 147 483 647], однако на 16- и 8-битных платформах имеет размер, как правило, 2 байта в диапазоне значений [−32768, +32767], что часто вызывает путаницу и приводит к несовместимости неаккуратно написанного кода
>>1581107Ну смотри у меня 64-х битная система.лонг это 64 разрядное числоинт это 32 разрядное числошорт это 16 рарядное число так чтоли?
>>1581122а какой смысл в том какой разрядности число? что в си реально чтоли диапазон у числа ограничивается его разрядностью? почему так?
>>1581124Ну а как иначе, лоляндрий? В проце есть 64-разрядная схема, которая с одного импульса от счетчика тактов выстреливает результат арифметической операции. Сделай больше, если хочешь. Или длиннку напиши, но без перегрузки операторов не закосплеишь, будто это нативная возможность.
>>1581175спасибо большое, понял. ну я просто ньюфаня которая с питона перекатывается на си. поэтому вопросы такие, там то этого нет, там всё гораздо проще.
>>1581220Так это не на виндоус, а в твоём компиляторе, если что. К виндоусу это не имеет никакого отношения и скомпилированный разными компиляторами значения будут разные. В mingw long double - это десятибайтовый флоат (выравнивается до 16), double - восьмибайтовый, а float - четырёхбайтовый.Очень странно что у тебя в студии long double имеет такое же максимальное значение как и double, ведь в действительности почти все пк-процессоры поддерживают именно десятибайтовые флоаты на аппаратном уровне.>>1581110Снова зависит от компилятора. В mingw 32 32 16, 64 - это только (unsigned) long long. Сlanq такой же результат выдаёт.
>>1581155Давай я тоже вспомню. Есть такой геймпад, дуалшок3, так вот, мучились жопой лет пять написать ему драйвер xinput под винду, в результате так и осталось глючное говно как и твои потуги на ввидеодрайвер, вдобавок написан на C#. Так что, куда ты вообще лезешь со своим ССЫ я вообще не пойму, если драйвера даже на шарпах пишут. Как и всегда, плюсы являются единственным адекватным вариантом, грамотно сочетающим и возможности и нативную низкоуровневость. А ты со своими ссами такогй же дебил как и те шарпомакаки, только с другой стороны шизо-максимума говноедского.
>>1581224спасибо большое за ответы всем, немного понял. сегодня вот про битность процессоров читал чтобы понять хоть на что она влияет. но я всё равно не особо понимаю зачем в языке эти short которые уерзают до 2 бит и long которые расширяют int 4 бита до 8-ми битЗачем нужно биты изменять?
>>1581685Ты имел ввиду байты, да?Если ты имеешь почему один и тот же тип может иметь разные размеры, то этого никто не знает - так получилось, наверное. Для int в требованиях только поддержка [−32767, +32767], например на ардуине int - 16 битный. На 32-битных процессорах память быстрее работает при обращениях с выравниванием в 4 байта, и потому int стали делать 32-битным в реализациях, потому что программа от этого только быстрее начинала работать, я думаю.https://ru.wikipedia.org/wiki/Система_типов_СиИ есть всякие int64_t и uint8_t, если тебе нужен определённый размер.Если в общем для чего нужны 2 и 8 байта, то 2 для экономии памяти, и ещё есть всякие simd-инструкции с пика, который за одну инструкцию могут переварить в два раза больше 2-байтовых чисел, чем 4-байтовых. Это штука может очень заметно ускорить обработку изображений, где все цвета 8-битные и в редких случаях 16-битные. Ещё они места само собой меньше занимают, что позволяет на микроконтроллерах сохранять больше, а на пк (где проблем с памятью уже считай нет) умещать в кеш в два раза больше данных. Кеш - очень полезная штука, массив которые влез в кеш обработается в некоторых случаях в несколько раз быстрее, чем тот, который не влез.8 байт нужны, потому что это естественный размер 64-битных систем, все указатели там 64 битные и программа может работать с 64-битными считай с той же скоростью, что и с 32-битными. Нужно для размеров файлов, времени в миллисекундах. Длинная арифметика на 8-байтовых будет в два раза быстрее и так далее. Двух миллиардов 4-байтового числа хватает не всегда.Но да, 4-байтовый int покрывает 80% применений, и остальные 19% покрываются 1 и 2-байтовыми целочисленными типами, если не считать указатели.
>>1581716спасибо тебе большое, анон за такой развёрнутый ответ. мне много стало понятно, не всё конечно, но многое. спасибо большое теперь уже хоть представление есть зачем это нужно.да перепутал биты с байтами. байты имел ввиду, спасибо ещё раз.
>>1581716Анон, а если я здесь заменю 32 на 64(система 64 битная) изменится ли от этого память которую занимают типы данных (поведение компилятора) или нет?
>>1581740Размер size_t измениться. И всех указателей, int* и любых других. По идее, никогда не пользовался студией.Ты можешь проверить это сам за одну минуту.Да, ещё если интересуют различия - в 64-битных системах 16 регистров, а в 32-битных 8 регистров. Регистры, это, грубо говоря, сверхбыстрый (быстрее кеша) кусочек памяти на процессоре. Вот все эти переменные в циклах for, или возврат функций - в действительности они находятся в регистрах и в память они могут даже не попадать. Соответственно 64-битная программа содержащая инструкции с использованием всех 16 регистров будет немного быстрее, потому что ей нужно меньше переменных помещать в память. Вряд ли 64-битный процессор сам сможет подменить в 32-битной программе операции обращения к памяти на работу с дополнительными регистрами - не знаю как там устроена совместимость с 32-битными программами или отвечает за это вовсе операционка на ходу переписывающая коды. Но и памяти 64-битная чуть-чуть больше скушает, за счёт 8-байтовых указателей.
>>1581750>в 64-битных системах 16 регистров, Что за бред? Посмотри сколько регистров у итаниумов например.
>>1581765Я про обычные распространённые компьютеры с х86-64, который умеет и в 32-битные, и в 64-битные программы. Он же для обычного пк на студии пишет и судя по вопросам только-только вкатывается, верно?Очевидно какой-нибудь arm может иметь какое-то другое количество регистров.
>>1581792>>1581750да, анчоус я ньюфаня. а можешль какую-нибудь книгу дать по которой ты освоил это всё, а то я всё равно много не понимаю мне нужен материал где с азов начинается для ньюани, а то я работу железа знаю только как радиоэлектрик, что есть процессор, у него есть пины, есть питание, есть там многосигнальные каналы(шины), но про какие-то регистры, кэши я вообще ничего не знаю.
>>1581750>и любых других. По идее, никогда не пользовался студией.>Ты можешь проверить это сам за одну минуту.как?
>>1581816>>1581813Написать printf("%d %d %d\n",(int)sizeof(size_t),(int)sizeof(void*),(int)sizeof(long)) и запустить в x86 и x64, посмотреть что и для каких типов поменяется. Можешь ещё на _Alignof(<название типа>) посмотреть, вдруг там выравнивание структур изменяется при переключении между 32/64 битами - я не знаю.Книгу не могу посоветовать, я ассемблерные вставки дрочил пару месяцев и когда находил какой-то странный эффект искал чем он объясняется, и всё. Знания очень поверхностные, просто чтобы более-менее понимать как оно работает и писать немного более эффективный код.Точно не обещаю, но тебе и не нужно ничего знать про регистры и кеши в 95% случаев. Это нужно в каких-то ускоспециализированных прикладных вещах - если ты только учишься, просто поставь x64, изучай алгоритмы и внимательность, а про регистры, выравнивания и кеши забудь на год или два - оно только мешать будет. За исключением кеша, наверное - но достаточно просто иметь в виду что он есть и вдвойне это иметь ввиду, если будешь писать многопоточную программу.
>>1581828спасибо большое понял ещё раз, ты очень мне сильно помогаешь, анчоус. оставайся в треде и в будущем, молю.
>>1581828>просто поставь x64Глупость, и вредная. 64 бит не нужно если твоя программа не использует 4+ гигов оперативы. Получится бесполезно раздутый размер и жор той же оперативы ради... ничего. Мне понадобилочь 64 бит только пару раз, для вмешательства в чужие программы (запись в память и инжект длл), корые были 64 бит, т.к. битность должна совпадать, иначе никак.А вот что нужно ставить, так это юникод. За char надо сразу бить в ебало с вертушки и ломать руки.
>>1581997А юникод это получается не раздутие? С таким подходом и юникод не надо юзать если кроме англ. символов ничего не используется.
>>1582099>С таким подходом и юникод не надо юзать если кроме англ. символов ничего не используется. Vvedite razmer massiva:>"Юникод не нужен" ко-ко-коЛадно, а если серьезно. Ты, тупой выблядок имбецильной спидозной шлюхи, вообще в курсе, что Windows уже 20 лет (ДВАДЦАТЬ ЛЕТ, ТУПОРЫЛАЯ СВИНЬЯ!) является юникодной. Это значит, в системе все функции - юникодные, работают только с юникодными строками и никак иначе. Неюникодных функций НЕ СУЩЕСТВУЕТ.И тут ты спросишь: "А как же мои (и таких же имбецилов) выдресты char★ тогда работают?". А вот как, при каждом вызове системной функции происходит конверсия каждой строки в юникод. Для каждой строки создается буфер в два раза больше (юникод двухбайтовый) и вызывается функция преобразования строки, заполняющая его юникодом, который и подается потом в функцию. Ты понимаешь, что это кошмар ёбаный? Вон, выше кто-то мямлил про оптимизацию кешем и регистрами, но о какой оптимизации речь, если ты своими руками творишь такой пиздос? Это всё равно что разбить кому-нибудь лицо кувалдой, а потом подстричь ногти, мол нехорошо когда ногти неаккуратные. Да какая разница какие ногти, если ты ебальник размочаалил в смятку? Оптимизаторы обоссаные, придурь неизлечимая.И дело не только в лютом говнокоде получающемся из за char и не только в долбаных кракозяблах у всех кто не в твоей обоссаной деревне живет. Это говно еще создает скрытые ловушки в коде и поощряет грубые ошибки.Смотри сюда. Ты в курсе, что память имеет атрибуты как файлы, что может быть защищена только для чтения например? И что строковый литерал является такой запрещенной на запись памятью? Так вот, есть функции принимающие строки, но при этом и меняющие их тоже, пишущие в них. Таким образом, если ты подашь константную строку не читая описание функции как обычно дебилы делают, ты получишь падение программы. И это хорошо, так ты поймешь где проебался, но ТОЛЬКО В ЮНИКОДЕ. Если же ты будешь срать чарами, из за преобразования строки в новый буфер под капотом системы, который не является защищенным, твоя программа будет работать как ни в чём не бывало, из за чего, во-первых, ты привыкнешь писать неправильно, и во-вторых, если потом решишь перекомпилировать в юникод, твоя программа посыпется как ёбаное говно.И вообще, просто спроси себя. Почему в 2020 году нет например веб-страниц в KOI-8 и подобных кодировках, а ведь раньше все такие были, постоянно приходилось видеть кракозяблы и переключать кодировки на сайтах. но даже веб-макаки поняли что юникод это НЕОБХОДИМОСТЬ в эпоху интернета - МЕЖДУНАРОДНОЙ сети, что кракозяблы это тупо, но только не долбоёбы погромисты, корчащие из себя таких умных, ко-ко-ко, а на деле тупее последних свиней. Почему-то даже в 2020 каждая вторая (и даже первая) программа обязательно чаровысер с кракозяблами. Как вы вообще живете такие тупорылые?
>>1582139>Windows уже 20 лет (ДВАДЦАТЬ ЛЕТ, ТУПОРЫЛАЯ СВИНЬЯ!) является юникоднойЗабавный ты выбрал аргумент, конечно. А 64 битной она является 15. Пять лет назад не стоило на юникоде писать, получается? Или всё же пора программы 64-битные писать?
>>1581997>>1582143Попробуй еще раз прочитать, и главное понять.Какой аргумент за 64 бит в твоей программе? Назови его, дебилоид? Ты программист? Ты думать вообще можешь? Зачем тебе 64 бит, дебил, кроме как РАЗОСРАТЬ ПРОГРАММУ В РАЗМЕРЕ, ПРОСИРАЯ ВПУСТУЮ РЕСУРСЫ КОМПЬЮТЕРОВ ПОЛЬЗОВАТЕЛЕЙ, КОТОРЫЕ НЕ БЕСКОНЕЧНЫ, И ВООБЩЕ ЗА НИХ ДЕНЬГИ УПЛАЧЕНЫ. Ты крадешь у людей, понимаешь, свинья тупая?
>>1582147А твой юникод тоже юзает в 2 раза больше памяти, и что теперь? На пару КБ больше стало, ну охуеть теперь.
>>1582147>Какой аргумент за 64 бит в твоей программе?Ладно, а если серьезно. Ты, тупой выблядок имбецильной спидозной шлюхи, вообще в курсе, что Windows уже 15 лет (ПЯТНАДЦАТЬ ЛЕТ, ТУПОРЫЛАЯ СВИНЬЯ!) является 64-битной. Это значит, в системе все функции - 64-битные, работают только с 64-битными опкодами и никак иначе. Не 64-ьитных функций НЕ СУЩЕСТВУЕТ.И тут ты спросишь: "А как же мои (и таких же имбецилов) выдресты x86-32 тогда работают?". А вот как, при каждом вызове системной функции происходит конверсия каждой команды в 64бит. Для каждой команды создается буфер в два раза больше ( 64 в два раза больше 32) и вызывается функция преобразования, заполняющая его до 64бит, которая и подается потом процессору. Ты понимаешь, что это кошмар ёбаный? Вон, выше кто-то мямлил про оптимизацию кешем и регистрами, но о какой оптимизации речь, если ты своими руками творишь такой пиздос? Это всё равно что разбить кому-нибудь лицо кувалдой, а потом подстричь ногти, мол нехорошо когда ногти неаккуратные. Да какая разница какие ногти, если ты ебальник размочаалил в смятку? Оптимизаторы обоссаные, придурь неизлечимая.И дело не только в лютом говнокоде получающемся из за 32бит и не только в долбаных кракозяблах у всех кто не в твоей обоссаной деревне живет. Это говно еще создает скрытые ловушки в коде и поощряет грубые ошибки.Смотри сюда. Ты в курсе, что память имеет атрибуты как файлы, что может быть защищена только для чтения например? И что строковый литерал является такой запрещенной на запись памятью? Так вот, есть функции принимающие строки, но при этом и меняющие их тоже, пишущие в них. Таким образом, если ты подашь константную строку не читая описание функции как обычно дебилы делают, ты получишь падение программы. И это хорошо, так ты поймешь где проебался. Если же ты будешь срать чарами, из за преобразования строки в новый буфер под капотом системы, который не является защищенным, твоя программа будет работать как ни в чём не бывало, из за чего, во-первых, ты привыкнешь писать неправильно, и во-вторых, если потом решишь перекомпилировать, твоя программа посыпется как ёбаное говно.И вообще, просто спроси себя. Почему в 2020 году нет например веб-страниц на 32-битных и подобных процессорах, а ведь раньше все такие были, постоянно приходилось видеть. но даже веб-макаки поняли что 64бита это НЕОБХОДИМОСТЬ в эпоху интернета - МЕЖДУНАРОДНОЙ сети, но только не долбоёбы погромисты, корчащие из себя таких умных, ко-ко-ко, а на деле тупее последних свиней. Почему-то даже в 2020 каждая вторая (и даже первая) программа обязательно 32-битный высер. Как вы вообще живете такие тупорылые?
>>1582149Ну что, обычный современный "программист". На свой код насрать, на проблемы пользователей с кракозяблами и тратой их ресурсов насрать, на всё насрать кроме себя любимого "мне лень ебаться", хотя и ебли-то нет, только страх менять свои вредные привычки. И всё бы хорошо для обычных тредов ждаваскрипта или питона, но тут-то тред Си ради всего свято. Но нет, та же шваль и тут всё заполонила и засрала.
>>1582156Так я не понял, зачем мне юзать юникод если он в 2 раза больше весит? А как же лишний килобайт памяти? Тебе что, насрать на память пользователя?
>>1570501 (OP)Вот хохма, выполняю себе упражнение из k&r на тему макросов: антивирь винды удалил экзешник, сославшись, что там троян О,О. Интереса ради закинул экзешник на вирустотал - 10/68 обнаружили вирус. А ведь там было абсолютно безобидное :#include <stdio.h>#define swap(t, x, y) {t tmp = x; x = y; y = tmp;}int main() { int x = 1; int y = 2; swap(int, x, y); printf("x: %d, y: %d", x, y); return 0;}Как так?
>>1582170Удобство пользователю и чистый быстрый код стоят каждого лишнего байта им занимаемого. Это очень низкая плата за столько хорошего, а точнее за избежание лютого говнища устаревших еще 20 лет назад недострлк. Тем более что потерей-то и гет по сути, строк в программах мало. А вот кода в программах дохуя, у меня лично 64 битный экзешник в два раза больше 32 битного. Но главное, что это ровно ничего не дает, просто просёр в унитаз. Зачем делать хуже если это делает только хуже? Только дебилы так делают, это не программисты, а животный скот, который лепит вредное 64 битное говно ради понтов, тупорылые быдлосы думают, что 64 бита больше и новее, значит круче. Показывают какие они модные современные петушки, компилящие по последним стандартам. Петушня которой место в бутиках, а не в программировании.
>>1582147Анон, ты не прав. Расширения архитектур (SSE, AVX) могут ускорить вычисления в разы, их узкое место - загрузка чисел в регистры, и здесь 64-битная архитектура позволяет уменьшить обращения к памяти в 2 раза (а это часто узкое горлышко (bottleneck) программ), что в итоге выльется в заметное ускорение. В x86-64 есть 12 64-битных регистров общего назначения (RAX-RDX, R8-R15, это позволяет хранить некоторые локальные переменные прямо в них, минимизируя обращения к памяти), а в x86 только 4 (EAX-EDX), и то 32 битных, что уже маловато для всяких трюков компилятора. Алсо простое добавление 64 битного числа (long), которое в x86-64 занимает 3 инструкции (загрузка, добавление, выгрузка), в x86 выльется в более чем десяток инструкций с ветвлением (branch). 64-битный бинарник на C, по моим наблюдениям, занимает всего на 20% больше такого же, но 32-битного, а увеличенная скорость работы оправдывает занимаемое место.
>>1581997>>1582139блин мне так ваш спор понравился, так все эти юникоды захотелось изучить заодно что это такое. как же хочется поскорее перестать бы ньюфаней и разбираться в этом всём
>>1582244я конечно ньюфаня. но вот я играю в euro truck simulator. и эта игра имеет 2 exeшника 32 битный и 64 битный. у меня почему-то при запуске 64 битного игра подлагивает иногда и загружается дольше. на 32 битном всё чудесно.ноутбук с 64-х битной виндой, 8гб оперативы, процессор 2 ядра по 2.4 ггц, видеокарта с 512мб памяти не думаю что это просто ноут 64 битные приложения не тянет.
>>1582267Файл подкачки у тебя включен, конечно же. 64 битная версия кушает больше оперативы, но при её достаточном наличии (и правильном использовании системой, а не выгрузкой на диск и обратно) игра работала бы быстрее (за счет уменьшения затрат времени процессора для выполнения одних и тех же действий). На ограниченных ресурсах 32-битная может быть быстрее, т.к. в твоем примере из-за маленького количества видеопамяти может тратится больше времени на загрузку и выгрузку данных с оперативы в видеопамять и обратно, что дороже, чем увеличенная нагрузка на процессор от более медленных (по сравнению с 64-битными) 32-битных инструкций (короче, видеокарта может не справлятся). Алсо попробуй сбрасывать RAM cache (кэш оперативной памяти) перед запуском игры (это помогает избавится от микрофризов). Можешь ещё попробовать отключить файл подкачки, но делай это только если понимаешь его назначение.
>>1582285у меня видеокарта интегрированная. и её видеопамять находится на озу.спасибо, понял. да думаю что дело в видеокарте слабой, интегра ещё и память из озу берёт.
>>1582285>за счет уменьшения затрат времени процессора для выполнения одних и тех же действийЧто за бред. В любом случае, чем меньше код в размере, чем меньше оперируемые числа, тем быстрее. Больше не может быть быстрее, ты же ебанутый.
>>1582139>Ты понимаешь, что это кошмар ёбаный? Вон, выше кто-то мямлил про оптимизацию кешем и регистрамиТы же понимаешь, что ты выглядишь как религиозный фанатик? Это какая-то дико угребищная по назначению программа, если её производительность упирается в преобразования строк в юников при вызове функций ос, лол. Где ты такое количество вызовов функций ос со строками откопал.>>1582147>Ты крадешь у людей, понимаешь, свинья тупая?А вот это обращайся в си-шарп и джава-треды, пожалуйста. И ещё в особенности в треды с современном вебом, самый пиздец там. У меня игра с открытом миром, который можно неделями исследовать занимает 2 гб оперативки, а браузер, где открыта четыре треда из текста и картинок тоже занимает 2 гигабайта (да, и он 32-битный, кстати), и получается совсем жутко если открыть тяжёлый сайт по типу ютуба с открывающимися менюшками и видео. А сортировка тысячи файлов по размеру в проводнике виндоуса занимает 2-3 секунды, хотя тысяча элементов с уже известным размером сортируется за милисекунду.
>>1582298>>1582285короче дайте совас какой-нибудь книги посвящённой работе машины на низком уровне от авторитетного человека, а то я не могу эти споры на двоще читать. один одно говорит вроде складно, другой другое
>>1582244Могут наверное, но они не используются. Я буквально на днях в очередной раз наблюдал игру, между прочим серьезную от серьезной компании, требующую SSE 4.2, и эту зависимость пофиксили буквально патчем пары байт. До сих пор бинарники компилят чуть ли не под 486.
>>1582298Ох лол.>чем меньше код в размере, чем меньше оперируемые числа, тем быстрееСказочный долбоеб. Одно обращение к памяти (за нужной переменной) будет в сотню раз дороже какой-то инструкции по типу add или and. 32-битная архитектура требует в 2 раза больше обращений к памяти для загрузки/выгрузки такого же объема данных. Простые операции над 64-битными числами (которые используются повсеместно, т.к. даже файловая система у тебя 64-битная) на 32-битной архитектуре кроме огромной кучи инструкций привносит ветвление, которое (в случае ошибки предсказателя ветвлений) предполагает сброс кэша спекулятивного исполнения, что выльется в время, раз в 1000 большее, чем исполнение той же операции на x64.>Больше не может быть быстрее, ты же ебанутый. Иди напиши это мэйнтейнерам gcc, они ведь зачем-то вместо одной операции деления для оптимизации раскладывают её на тридцаточку битовых, вот ведь ебанутые, да?
>>1582300wchar_t, а функции просто гуглишь "<оригинальное название> unicode", сразу же выдает аналог. Да, обычно с w.>>1582303Любое программирование под DOS, и будет низкий уровень. Я бы запретил учить не на DOS, винда многое прощает из за раздутых возможностей, позволяющих говнокодить, не понимая этого.
>>1581228Твой пост мне зачем? Речь была о возможности/не возможности, а не предпочтениях и кто на чём их кодит.
>>1582307Больше похоже на маркетинг. То-то та же винда 64 бит явно тормознее 32-битной. Давай расскажи как первая в сотню раз быстрее, трепло.
>>1582318Сходи сначала ознакомься с тем, как работает процессор, т.к. ты даже не можешь возразить ни на один из моих вышенаписанных аргументов, ибо CPU для тебя - магическая чёрная коробочка.
>>1582312спасибо и что там в погромировании под dos будет прям всё-всё и про кэши и про регистры и про разрядности? мне многое станет понятно.сперва я си выучу на окнах, потом уже на дос перейду это слишком сложно для меня пока что
>>1582325С процессором знакомы разработчики компилятора. Я на си пишу, а не в машинных кодах. И ты про винду так и не ответил. Где зваленая производительность, трепло? Иди для тебя даже флагманский продукт мировой корпорации не аргумент? Дураки не умеют программировать, да? Только ты треплешь фантазии на сосаче правильно?
>>1582326Рано в такое лезть. Для начала научишься стеку, отлично помогает от безмозглого говнокода. Название знаменитого сайта не даст соврать "стековерфлоу".
>>1582298>>1582150Заебал. Поехавший адепт 32 битной компиляции.Предлагаю тебе запустить вот это скомпилированное в 32 и 64 бита: https://ideone.com/qqDFjVУ меня получаются вот такие числа (слева количество - справа время выполнения) с "-fno-tree-vectorize -O3". В сортировке при 64 битах где-то на 10% быстрее, а на значениях в 1000 даже почти на 20%. При какой-то O(n2) хуйне просто 10% на всех числах.С крестиками это первый прогон - на него можно не смотреть. На всех значения кроме самых маленьких (где счётчик тактов не может корректно оценить время) побеждает 64-битная программа.Но да, на аж целых 10кб больше занимает скомпилированная программа - ужас то какой. Сейчас компьютеры вроде бы в производительность упираются намного больше, чем в память - память можно всегда ещё плашку докупить, а повысить частоту процессора в два раза так просто нельзя - потому я вижу верным оптимизировать именно быстродействие.
>>1582329>С процессором знакомы разработчики компилятора. Я на си пишу, а не в машинных кодах.Так зачем ты полез что-то доказывать в тему, в которой ты ни черта не смыслишь, макака? Хороший Сишник должен знать устройство процессора и ассемблер хотя бы на базовом уровне, что бы написать код, работающий с оптимальной скоростью.>флагманский продукт мировой корпорации>виндаОх лол. Для тебя высер мелкомягких, написанный индусами за миску риса, и скомпилированный их же говном, которое mov eax, 0 генерирует - это эталон?
>>1582342давайте только не будем на токсичность пердолей провоцировать, хуже срачей с пердолями нет ничего в этой жизни.
>>1582342>Хороший Сишник должен знать устройство процессора и ассемблер хотя бы на базовом уровне, что бы написать код, работающий с оптимальной скоростью.Нахуя асм-то знать?
>>1582346Прости, я не специально, я перепутал пост, там должен был быть >>1582139 пост естественно, потому что твой выглядит так же.
>>1582344>Нахуя асм-то знать?Что бы интринсики вставить в тяжелые операции, если компилятор сам не смог. Что бы иметь доступ к продвинутым битовым операциям (popcnt, lzcnt и т.д.) в виде инлайнового ассемблера или тех же интринсиков, и для всяких других asm-only инструкций (тот же CPUID). Что бы найти тяжелые инструкции в лупах и на что-то заменить для оптимизации. Что бы не пиздеть хуйню про то, что скорость исполнения инструкции зависит от её размера и т.д.
>>1582356> >Нахуя асм-то знать?> Чтобы найти тяжелые инструкции в лупах и на что-то заменить для оптимизации. Чтобы не пиздеть хуйню про то, что скорость исполнения инструкции зависит от её размера и т.д.Дополню - в мире реальной разработки, а не каких-то нуфань, нормальный сишник умеет читать целевой ассемблер и пользоваться листингами из gdb/perf/..., часто разбирается в архитектуре ос и железки, различных интерфейсах и протоколах. Я вам вообще советую посмотреть чем люди в отрасли занимаются и что им нужно знать.
>>1582312О, работает, классно. Только локаль все равно надо переключать, и везде L дописывать. Спасибо.
>>1582376>привел пример игры -- не аргумент>привел пример винды -- не аргумент>>вот моя сортировка ёлочкой. -- неотразимый аргументПовторяю в последний раз. Своими маняфонтазиями можешь подтереться. Я живу в реальном мире реальных программ, чужих и своих собственных. Маняпарашные олимпиадные высеры ни на что не годные можешь засунуть себе куда следует.
Вот кто в треде обсуждает досы, регистры, разрядности скажите, аноны, сколько вам лет? Это для просот для интереса моего личного.
>>1581228Си более сделан под написание драйверов и написания всяких прошивок для микрух. На крестах лучше софт прикладной пилить.
>>1582399Речь шла про возможность/не возможность написания. Nouveau есть? Есть. Вот и заткнись и попытайся это осмыслить, тупица. Мне плевать на производительность этого драйвера или популярность. Речь шла про возможность, ало. А ты уходишь от обсуждения куда-то в сторону.
>>1582139> И вообще, просто спроси себя. Почему в 2020 году нет например веб-страниц в KOI-8Есть. Вот тебе актуальное руководство: https://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/
>>1581154> Пишут и на rust, и на go даже.>>1582425> Драйверы даже на Lua пишутТолстота какая, ой толстотаааа. На крестах их пишут с использованием последних стандартов. На сях разве что в свое удовольствие.
>>1582441https://www.opennet.ru/opennews/art.shtml?num=51475https://netbsd.org/gallery/presentations/mbalmer/fosdem2012/kernel_mode_lua.pdf
>>1582443> Драйвер работает в пространстве пользователя> Не винда> Унылые врапперы натив кода на js/lua Не позорился бы...
>>1582446И что? Это исследование всё-таки.> Не виндаВинда распространена лишь на десктопах. Все остальные ниши занял линукс. На андроид смартфонах, роутерах, серверах, тонких клиентах и суперкомпьютерах стоит он. Даже в Microsoft Azure самой популярной ОС стал линукс.
>>1582447Винда распространена на компьютерах, а остальные устройства могут хоть на манной каше работать , это никого не ебет, кроме рабочих их обслуживающих.
Ананасы, а сейчас везде, где серьезно применяется Си, актуальна конвенция длины строк до 79? Или 120 норм бывает? Я понимаю, если завод какой-то, где круглосуточно работает терминал с текстовым движком прямо при кинескопе, и поменять некогда, но каким образом то, что старый код того же Пинуса написан с этим ограничением, обуславливает желательность соблюдения того же ограничения в соседнем коде, закоммиченом в 21-м веке? Чтоб бэкслеш-переносы в макросах под одну линеечку всегда были? Просто потому что историческая практика показывает, что даже если ни одна из десятков возможных причин не является очевидной, лучше на всякий случай делать, как принято? Или чтоб в условиях войны, когда нет времени прожать Win+^ после Ctrl+Alt+T, весь код красиво печатался в окне псевдотерминала стандартного размера? Или доля членов сообщества сидит на WinNT/2000/XP и любит AltEnter-иться в 720x400?
>>1582792>Или чтоб в условиях войны, когда нет времени прожать Win+^ после Ctrl+Alt+T, весь код красиво печатался в окне псевдотерминала стандартного размера? Или доля членов сообщества сидит на WinNT/2000/XP и любит AltEnter-иться в 720x400?Про формат бумаги а4 что нибудь слышал?
>>1582792Спрашиваю, потому что загрузили функционалОЧКОй головного мозга с 8-ширинными табами вместо 4 пробелов для отступов, и мне понравилось. Охуенный бескомпромиссный таб, который уверенно уносит вложенный блок в стратосферу, и не надо ничего мудрить, чтоб с содержимое фигурных скобок визуально отделить от содержимого круглых. Хоть и униформный стиль унылое говно в сравнении с моим божественным авторским. Хотя, если не косплеить функциАНАЛку в плане вложенных выражений, а объявлять локальные имена здорового человека, то должно хватить, но все же... Есть соблазн оформить поразмашистей. Как-то плосковато выглядит код, размотанный в высоту.
>>1582798Ух бля, а ведь точно) Я даже сам по рофлу распечатывал свои велосипеды на стену и думал "хорошо, что 79 соблюдаю". Я так понял, отступы между токенами тоже от ориентации на черно-белый печатный вариант, типа, чтоб и без подсветки читалось. Этим я сам вдохновился :syntax off сделать и писать krasivo.
>>1582755Запускаешь poide.exe, нажимает build (это нужно сделать один раз при первом запуске), нажимаешь в том же окне close.У тебя открывается первая картинка. Нажимаешь создать новый проект, выбираешь win32 или win64 console program, снизу выбираешь название и папку для сохранения. У тебя справа появляется картинка 2. Нажимаешь file-new-source code, пишешь туда "int main(){printf("Allo\n"); return 12;}", нажимаешь ctrl+s, указываешь имя и когда оно спрашивает, говоришь да, добавить к текущему проекту. Потом нажимаешь кнопку с третьего пика. Всё, программа пошла (по идее).
Можно ли заставить препроцессор не просто подставить DELAY_OVF, а посчитать число заранее, и подставлять его? Пока писал, задумался, а оптимизация компилятора это наверное сама делает и я дебил. Если возможно, то как? Код для атмеги, не хочу, чтобы она сама константы всякие считала.
>>1582927constexpr в c++ чтобы быть точно уверенным. Хотя если f_cpu тоже макрос то по идее со включенной оптимизацией должно при компиляции посчитать.
Кто-нибудь знает как работает система антиплагиата? Сомневаюсь что она просто символы забивает и смотрит совпадения, думаю там мало просто изменить код символа, она наверное как-то фотографически снимает содержимое документа, а потом уже переводит его в свой текст и гонит в поисковик.
Анчоусы, молю помогите.Нужно чтобы после d шла . точка и пробел и далее уже шли звёздочки.У меня почему-то пробел есть, а точки нету. Ну я предполагаю видимо что программа эту точку сжирает как относящаюся к %d смотрел какие там обозначения у точки нигде не сказано как её отделять, что посоветуете?
>>1582979блин, вот я сказочный долбаёб. я даже не заметил что у меня вместо числа d печатается. устал просто. спасибо, анон. извини за глупый вопрос.
>>1582950> если f_cpu тоже макросДа. Ладно, спасибо. Если само не оптимизируется, то в более сложных проектах я об этом узнаю наверное.
>>1582927Либо я долбоеб, либо ты хуйню спрашиваешь, все что может посчитаться заранее - посчитается.>Код для атмеги, не хочу, чтобы она сама константы всякие считала.Так хочешь или не хочешь? Умножив в атмеге что либо на тысячу, можно случайно охуеть.
>>1583043Само собой не оптимизируется, если высокий уровень рекурсии. Чтобы этого избежать, надо явно указывать компилятору, что константа должна быть вычислена на стадии компиляции.
>>1582816Ого, я удивлен. До этого меня только посылали нахер с такими вопросами и желали смерти, а ты реально подсказал. Спасибо, Анон
>>1583173А я не удивлен, что куколдов полон тред. Анон, ты так всю жизнь будешь осваивать инструменты "где зеленая кнопочка, чтоб заработало"? Почитай, что такое компилятор, что такое линкер, что такой аргументы параметры запуска, чтоб входные и выходные файлы задать, и все сразу встанет на свои места.
>>1583177Бесполезно, это образ мысли (тупой бабы), к сожалению и у мужчин присутствует. Тут ничего не поделаешь, родился уродом - не виноват. Плохо когда их кормят как тот уёбок выше, из за чего они смелеют и засирают всё вокруг своей тупостью.
>>1583135можно и не вначале вроде бы. студия 2019-го года.>>1583150да я уже понял что проебался. даже в вопросительном посте я правильно написал, просто от невнимательности проебался
>>1570501 (OP)Аноны, помогите, пожалуйста. Решите эту задачу. Я не понимаю как написать эту программу. Допустил "aabb" вот зачислит на счётчик одну а, потом как проверить что вторая а уже есть и её нужно зачислить к первой? Скиньте, код готовый, молю.
>>1583500Мое корявое решение с горизонтальной и вертикальной гистограммой сразу - https://ideone.com/MckxukНу а вообще ты ж мог просто погуглить k&r 1-14 solution.
>>1583605спасибо, не знал. буду гуглить.>>1583581ну мне бы конкретно этой задачи, но всё равно спасибо.
>>1583663Символы не числа - не вижу смысла делать графическую гистограмму, потому что символы e и d ничуть не ближе, чем e и Z - они все в равной степени ортогональны и смысл гистограммы теряется. Если бы это было распределение слов по длинам, тогда можно, но для разных символов это просто шиза, где столбцы можно перемешать случайным образом.Да и графическая гистограмма в текстовом интерфейсе - сомнительная штука.
>>1583695я тоже не понял этой задачи короче, странная она, анон.не вижу смысла в гистграме по символам abcd только по введёным.ну и символы это числа, любой char можно печатать как цисло.
>>1583695>>Задача: Сделать гистограмму>Не вижу смыслаНе вижу смысла в существовании таких "погромистов". Иди на печку спи, Ванька-Дурак.
>>1583500Зачем проверять наличие? Память не лопнет, если сделаешь массив на 256 интов и заполнишь нулями. А потом распечатываешь>AAAAAAAAAAAAAAAAAAAAAAAAA>BBBB>DDDDDDDDDD(просто пропускаешь те, где 0)Делов-то
>>1583862>>1583864>>1583871спасибо, аноны разобрался. надо просто символы как числа читать. просто я только на питоне погромировал и для такого ньюфани как я некоторые аспекты крайне непонятны бывают.
Никогда не обращайтесь в школу портнова, жидовский пидорас хитровыебанно всё построил. Не буду вдаваться в детали и пилит сторе, но скажу вам что вы соснёте на его школе, с тем же успехом даже лучше можно самостоятельно выучиться. Его бумажка силы вообще никакой не имеет, hrы про портнов скул не знают. А если вы будете чем-то недовольны то он скажет "ну ета ты сам виноват ты просто хуёвый человек у меня даже домохозяйки из коробки устраиваются".Что угодно только не несите деньги этому жиду.
Какие есть книжки/материалы по вопросам, которые часто встречаются на собседованиях? Ну типо что будет лежать в переменной A, если uint8 A = 344;Про разное побитовое говно и прочие неприятные вещи, про которые часто не знаешь как ответить?
>>1584283Для начала, нахуй пошел. Учись читать русский язык и находить правильные треды для своих тупых вопросов.
Поясните, почему в си не стали добавлять динамические массивы из коробки? Например определение char arr[50] в ассемблере будет выглядеть sub rsp, 50. Так почему нельзя определить char arr[N], где N неизвестно при компиляции. В ассемблер можно просто преобразовать как sub rsp, N.
>>1584632Что жирного? Объясни, что мешает выделить на стеке произвольное( в пределах размера стека) число? Rsp такой же регистр как и остальные, и он поддерживает операции вычитания с другими регистрами.
>>1584633>Объясни, что мешает выделить на стеке произвольное( в пределах размера стека) число? Rsp такой же регистр как и остальные, и он поддерживает операции вычитания с другими регистрами. https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D1%89%D0%B8%D1%89%D1%91%D0%BD%D0%BD%D1%8B%D0%B9_%D1%80%D0%B5%D0%B6%D0%B8%D0%BC
>>1584640Ну так его действительно нет. Ты же сам ответил на часть своего вопроса:> Rsp такой же регистр как и остальные, и он поддерживает операции вычитания с другими регистрами.
>>1584655Охуеть, а кто сказать что я собираюсь обращаться к несуществующей странице? Если ты напишеш char arr[100000000] и обратился к 9999999 элементу, то тоже скорее всего обратился к несуществующей странице, но это же не запрещено самим языком.
>>1584625>>1584633>почему нельзя определить char arr[N], где N неизвестно при компиляцииПопробовать пробовал?https://ideone.com/hy1FMJДаже предупреждений нет.
>>1584765Это 1) сторонняя функция, пусть и стандартной библиотеки2) Выделяет в кучеа нужно чтобы1) прямо вот кейворд встроен в синтаксис языка.2) выделял на стеке.
>>1584759В c99 VLA по стандарту вроде как поддерживается. Если студия умеет в c99, то довольно странно, если они искусственно вырезают эту возможность в c11 - ведь внутри компилятора уже есть нужная возможность. Не знал, это довольно странно.И даже если написать:void test(int a){int arr[a];}То тоже не компилируется?
>K&R>The book is not an introductory programming manual; it assumes some familliarity with basic programming concepts like variables, assignment statements, loops, and functionsЕсть у кого-нибудь готовый глоссарий по этим самым basic programming concepts? Или там из контекста будет понятно примерно? Гуглить умею, просто мало ли.
>>1584484>нахуй пошелКак некультурно>учись находить правильные треды для своих тупых вопросовВ данном случае я ищу материалы по скользким вопросам в си. Вроде бы тема подходит под этот тред.
>>1585026Алсо, есть несколько вопросов.1) Стоит ли сразу выставлять march=native и O2 нашёл в гентоо хендбуке, я так пынемаю это для оптимизациии сразу изучать какие есть флаги гцц?2) Стоит ли выбрать лишь один из стандартов Си и писать только в этом стандарте чтобы в коде не случилась каша из стандартов, или С11 это тот же самый C99 но с дополнительными плюшками и можно на этот счёт не париться?3) Как компилятор поймёт, на каком стандарте я пишу? Есть ли отдельный флаг для выставления этого вручную, чтобы не полагаться на автоматику? Если есть, то какой?
>>1585037И ещё вопросы: где лежит конфиг ГЦЦ чтобы я мог написать туда понравившиеся мне флаги раз и навсегда чтобы каждый раз их не писать, или мне придётся тупо прописать в баше alias cc="option1 option2..."А если я буду чужие проекты компилять и там будет make, будет ли вероятность, что кто-то вместо gcc будет использовать cc в мейкфайле, и в итоге вместо обычного гцц будет использоваться гцц с моими напердолеными флагами? С другой стороны, возможно не у всех цц это алиас на гцц, поэтому в мейкфайле просто обязаны писать гцц вместо цц, да и если я напишу в конфиг гцц свои флаги то и на компиляции через мейк это отразиться тоже должно. Компиляция чужих проектов с моими флагами будет чем-то чревата?Как относитесь к параллельному обучению другим вещам, например емаксом и соответственно елиспу?Вопросов скорее всего будет много, извиняйте, если ответ уже есть в гугле.
>>1584759Пушто что сишные инструменты о Майкрософта - это тупейшего говна говно, анон, вот зачем меня расстраиваешь лишний раз, когда я наконец в хорошем настроении с работы пришел? А?? Зачем, блядь?!?!?!
>>1585071сук реально, они там таки поддерживают уже стандарт 99-го года или до сих пор ANSI с "cамыми важными дополнениями"?
>>1584625В си, в отличие от C++ могут быть динаические массивы, а могут и не быть, но тогда должна быть определена __STDC_NO_VLA__ The integer constant, intended to indicate that the implementation does not support variable length arrays or variably modified types.это стандарт С18, 6.10.8.3
>>1584866Для вариабельных массивом sizeof работает в рантаёме а не во время компиляции, читай стандарт.
>>1585419я охуел, когда обнаружил, что в 21-м веке в комплекте студии все еще была однопроходщина, не умеющая заглянуть наперед, чтоб посчитать sub rbp, 0x40 по декларациям
>>1585428А для чего же, если VLA - ровно возможность создавать массивы на стеке?Ты с flexible array members не путаешь?
Я так понимаю, за VLA хуесосят, потому что cc -O0 с одним и тем же кодом в разных контекстах должен обходиться не мудренее макроассемблера? И в этом низкоуровневая незаменимость сишечки? Типа, маш.кодом ты 1 к 1 рассказываешь процу, что его ждет, а Си - не 1 к 1, но вполне фиксированное 1 к 3?
>>1585037> Алсо, есть несколько вопросов.> 1) Стоит ли сразу выставлять march=native и O2 нашёл в гентоо хендбуке, я так пынемаю это для оптимизациии сразу изучать какие есть флаги гцц?> 2) Стоит ли выбрать лишь один из стандартов Си и писать только в этом стандарте чтобы в коде не случилась каша из стандартов, или С11 это тот же самый C99 но с дополнительными плюшками и можно на этот счёт не париться?> 3) Как компилятор поймёт, на каком стандарте я пишу? Есть ли отдельный флаг для выставления этого вручную, чтобы не полагаться на автоматику? Если есть, то какой?Почему ты такое не можешь загуглить?1)Зачем? Хеллоуворд долго отрабатывает? 2)C11 не сильно отличается3)-std=>>1585041Ты ебобо точноВ makefile'а компелятор задаётся через переменную CC
>>1585448>возможность создавать массивы на стекеЭто побочный эффект, а не назначение. Назначение в том, чтобы можно было создавать модифицируемые типы (typedef ARRAY[n], такого ) Или понятно писать функции для обработки многомерных массивов любого размера (совершенно не обязательно созданных в стеке).>Ты с flexible array members не путаешь?Нет.
>>1585615Офигеть, я просто в ахуе. Всегда считал массивы бесполезным барахлом, которым только в школках пичкают. А тут не только массивы, а еще такие мега-выебоны для них наделали. Кому это вообще нужно? Ради кого городят эти навороты?
>>1585037>1)Зачем? Хеллоуворд долго отрабатывает? А почему бы и не ставить? Разницы по времени компиляции почти нет, на большом проекте и так уже будет понятно что и как ставить. И там он не будет прописывать их в баше каждый раз.
>>1570501 (OP)Анансы, я уже 3 дня пытаюсь запилить код для работы с протоколом с частотой импульсов 8мгц STM8 SWIM на другом микроконтроллере с частотой 80мгц не используя счетчики, DMA и т.п, т.е. чисто читая-записывая в gpio регистры. Я сильно ебанутый?
>>1585635>>1585629Не знаю, сарказм ли это, но спрашивал серьезно. Тут есть нормальные программисты или только школьники и олимпиадники с задачками про массивы?И это еще. >>1585615>совершенно не обязательно созданных в стекеКак? Если не ошибаюсь, массивы бывают только на стеке, в куче создать нельзя.
>>1585909>Как? Если не ошибаюсь, массивы бывают только на стеке, в куче создать нельзя. Выделяешь память, вот тебе и массив. int (arr)[j][k] = malloc(sizeof arr)
>>1585909> Как? Если не ошибаюсь, массивы бывают только на стеке, в куче создать нельзя.Чел.. Ты первый курс прогуливал?
>>1585948Стек — это просто кусок кучи. А куча — просто глобальный стек для всей машины.Бля, недавно баловался с ручной аллокацией в расте, это пиздец страшно; UB со всех сторон и только ждёт, чтобы ты что-то неправильно написал.
>>1585948Указатель на массив, и правда. Прохлопал, привык что память выделяется для данных, которые и без массива работают почти как массив.
>>1585979Лол. А что не так? Стек — непрерывный кусок памяти с неким количеством байтов. Куча — непрерывный кусок памяти с неким количеством байтов, который делится аллокатором на другие непрерывные куски памяти. Самая главная программа просто выделяет себе всю память с 2 до максимального физического адреса (обычно самый большой, если его можно достигнуть, форбидится, чтобы массивы не оверфловились). Обычно оно всё равботает немного посложнее, но примерно так же. Где я неправ?
>>1585990Как бы тебе объяснить, чтобы сразу понятно было... Ты сравниваешь ракету с подводной лодкой, и говоришь, что они одинаковые, потому что круглые.
Ну ебать, вот выделю я себе вектор в куче, а потом буду его делить своим кастомным аллокатором и раздавать эти куски разным частям своей программы. И в чём разница кучи и моего куска кучи, который фактически является стэком?
>>1586117Так, подожди, у вас какя-то хуйня тогда.Если со стека можно брать только по одному элементу, то почему я в могу объявить несколько локальных переменных (это же вроде как на стеке, или уже нет), массивы, экземпляры структур и использовать их явно больше чем по одной.Какой-то ваш стек не стек.
>>1586139То есть исходя из определение >>1586117 анончика void pizda(){ int a;//Нельзя использовать, потому что не на вершине стека int b;}
>>1586139Бля, считай, что всё, что относится к выполняемой функции - это один элемент стека. Всё равно структуры бесконечно можно загонять в структуры.И тогда по твоей же логике, если я положу структуру на стек, то смогу обратиться только к её последнему элементу, и то если компилятор гарантирует порядок.
>>1586143Ну то есть понятно ,стек не стек, раз с него можно по несколько элементов брать.То есть стек от кучи отличается тем что в стеке запретили совсем свободно ко всем элементам обращаться, только по несколько штук с конца?
>>1586097кастомный лоадер придется на заводе прошивать что не особо важно, но все же, да и займет он как минимум 500байт флешки, а на самой стмке всего лишь 8кб.
1. Наверно можно меньше, но хуй знает.2. Ну не выебывайся, хочешь сказать у тебя ПЗУ 1 в 1 нынче? Пиздишь же. А если не пиздишь, мб постарше возьмешь? Десять центов, зато потом не будешь волосы на жопе рвать, если че дописать придется.
А ведь в Си не обязательно писать return:type bar(...) { ... return val;}type foo(...) { ... return bar(...); // вот здесь}ведь return уже есть внутри bar? Ну, в смысле, rax никуда не убежит? Ясен хуй, что в свич-кейсах более функционально будет смотреться return f1(); чем f1(); break;, но все же...
>>1586320Что бы вставить вызов функции и проверить правомерность этой операции, компилятор, должен о ней знать (что возвращает, что принимает). А читает он файл сверху вниз.Соответственно в объявлении он узнает, что есть некая хуйня, с такими то параметрами и может подставить ее вызов. Вместо ссылки(адреса начала) функции, там пока находится просто символ(некая уникальная хуйня, явно указывающая на эту функцию). Позже, некая хуйня (линкер наверное) заменяет эти символы на непосредственно адреса тел. Как то так, могу пиздеть.Вообще, применительно к одному файлу, как я понимаю это такой пережиток, смысл этой хуйни раскрывается в многофайловых программах.
>>1586334а я щас убрал эту функцию и программа ввсё равно запустилась. ну спасибо, я прочитаю об этом в книжке официальной тогда. мне просот лень читать и я тупо смотрю на синтаксис года и делаю оттуда упражнения.
>>1586336Может от стандарта зависит. Мне вот мой переменные только в начале функций разрешает объявлять вообще.
сап аноны. вкатываюсь в макакинг, решил начать с чистого C. есть ли какие нибудь годные видеоматериалы по поводу си, на русском языке?
>>1586198Не совсем, есть пользовательский девайс с конфигурацией стм8+более мощный мк, и более мощный мк должен иметь возможность периодически обновлять прошивку стм8 (короче говоря ОТА-апдейт). На мощном мк памяти достаточно много, а вот на стм8 только 8кбайт, при этом здесь должно крутиться довольно много функционала. По-этому я и пытаюсь родить swim прошивальщик дабы сэкономить на памяти и заодно на цене, ибо существуют стм8 со встроенным загрузчиком, но они дороже.
>>1586482был на сайте какого-то университета thinking in C брюса Эккеля. Он его рекомендует перед вкатом в жаббу.Поищи короч. А так если совсем бревно возьми либа зеда шоу либо стефана кочана либо Стивена Прату.На случай, если Керниган-Ритчи для тебя слишком заборист.
>>1586100Пиздец, даже не верится что такой дебил растоблядок тупорылый сидит итт. А потом вот такие чудилы и кукарекают про уб и баги. Поколение изкоробочников мудаков.
>>1586523Там экономия будет смешная. Больше шишок набьешь ради ничего.STM8 вообще хитровыебанная порода, я вот так поэкономил и уебался на то, что оно не умеет в асинхронную запись еепрома и у меня устройство на 3мс встает нахуй все.Не делай глупостей, не фаршируй память МК под завязку без веских причин. Оно отличается на 20 центов (только что проверил).А я думаю что у тебя счет на устройства - единицы тысяч, иначе на 4ch бы писал.Вот и стоит полмесяца ебли с SWIM, нескольких сотен баксов? Он еще в добавок окажется каким кривым и не дай бог придется отзыв делать.PS а че свим мастера не дали STMы? В поддержку им писал? По моему опыту, доебом саппорта можно много чего выбить.
>>1586395>C function prototypes"загуглил, спасибо. ну я это знал, что нужно объявление но почему-то в си не догадался. хотя на питоне точно также функции вначале объявляются. чтобы я без вас делал, анчоусы.
>>1586582>что оно не умеет в асинхронную запись еепрома и у меня устройство на 3мс встает нахуй все.версии с поддержкой RWW умеют. Да и вроде даже без RWW, но с помощью block programming оно не должно блочиться.>Не делай глупостей, не фаршируй память МК под завязку без веских причин.причины есть куча легаси говна как на софтварном, так а на железном уровне, которое не так просто порешать.>Оно отличается на 20 центов (только что проверил). А я думаю что у тебя счет на устройства - единицы тысяч, иначе на 4ch бы писал.В том и дело, что устройств - миллионы, каждая копейка на счету но я всего лишь нанятый прогромист если что :3>Он еще в добавок окажется каким кривым и не дай бог придется отзыв делать.Вот это скорее всего будет главным аргументом отказаться от идеи со SWIM и таки использовать простенький юарт бутлоадер и таки вместить все говно на флешке.Но попробовать стоило, и как минимум некоторые результаты есть.
>>1586821Умеют, >с помощью block programmingБлочится, увы. Может конечно и нет, но легче написать ультракостыль, чем разобраться в STмовской документации.>устройств - миллионы>@>спрашивает советы на 2chУверен, что все правильно делаешь?>куча легаси говнаВсегда казалось, что в одной серии совместимость сохраняется (снизу вверх). А 8кб это что то младшее 103, а есть 105 с большим флешом в тех же корпусах.
Поцоны, что скажите на счёт кода на пике?Контекст: Код микрухи для проверки работоспособности внешней SRAM. Коллега на работе, сделал плату с микросхемами памяти и написал приблизительно то, что на пике для её проверки. Этот кусок кода крутится в цикле и проходит по всем адресам этой SRAM. Говорит, что память рабочая. Так вот у меня подозрение , что компилятор просто оптимизировал до temp = data и забил хуй на всё остальное. Я написал две функции для чтения и записи, чтобы компилятор не наебал меня с оптимизацией, и это показало, что память работает хуёво. Хотя я и сам мог наебаться когда писал их.Плата, кстати, выглядит очень плохо. Вся грязная и с подтёками припоя. Я не удивлюсь, если там, что-то замкнуло
Итак, аноны, сейчас вы мне нароллите домашний проект по объему работы где-то на пару недель. Условия:. язык Си. без GUI. жестко под LinuxНаверняка затянется, но обязательно отчитаюсь в треде, если осилю. Договорились?
>>1587493фикс для X Window system, чтобы экран на этапе загрузки ОС не мерцал, как будто он ща помрёт. Ну вот при загрузке винды он так стремно не моргает.
>>1587493конфигуратор ядра Linux для его пересборки под имеющееся железо.То есть смотрит, какое железо есть, делает конфиг и далееделает бекап старого ядра, make cleardepend, make install для нового
>>1587353Так проверь нормально адрес на валидность, а не этим костылем, лол. Не верю что в микропердолинге контроллеров все так плохо.>>1587353Обоснуй. Это объективно говнокод нерабочий.
>>1589186всяким занимаюськонкретно на Си - мультимедией и сетьюна Си пишу в Netbeans 8.2а вообще в vs code на дефолтной теметак-то хотел бы перекатиться на jetbrains но дорохо
>>1589219Будешь смеяться, но книжку с твоего пика.А до этого к-н-р.Как вкатился - просто взял и вкатился и по работе внезапно понадобился Си. И я такой: ну ок.
>>1587493Патч для иксов, чтобы setxkbmap при -option grp:rctrl_toggle переключал раскладку не на нажатие, а когда клавишу отпустили. Т.е. я нажал на правый контрол и не отпуская нажимаю на T - срабатывает Ctrl+T и в браузере открывается вкладка, а если нажал и отпустил, то переключил раскладку.https://habr.com/ru/post/87408/ правда этот патч уже написали, пиздец, ну тогда даже не знаю...
Назрела тут необходимость жопа окончательно сгорела от неумных релизеров сделать переименовалку файлов, дополняющую номера в именах файлов ведущими нулями. Я конечно сделал, перебирая в цикле по буковке, но вдруг есть более "современный" что ли способ? Посоветуйте кто грамотный.
>>1589985>перебирая в цикле по буковкеНе понял, какой буковке. Имена файлов известны и можно их сгенерировать одним циклом, или ты получаешь список файлов, извлекаешь из него номер и подменяешь их на имена с нулями?Тебе нужен %05d вместо %5d или что?
>>1589987Спасибо. Я сначала тоже подумал про регексы, но потом вроде нагуглил, что они не умеют проверять длину результата. В общем, не нашел как ими сделать дополнение нулями до нужной длины.Но теперь снова вдохновился и за несколько часов ковыряния в пастах со stack overflow нашел как выцепить набор найденных подстрок и их позиции. С библиотечной replace() получилось компактно и дуракобезопасно, даже новая фича далась нахаляву - сокращение лишних имеющихся нулей, а не только дополнение имеющегося. Между прочим, видел только одну программу с функцией дополнения номеров - ReNamer неудобная для меня, и она сокращать не умеет, только добавлять.>>1589998Имена неизвестны, могут быть любые. Суть в том, чтобы пофиксить номера в именах файлов для нормальной сортировки. Имена могут быть любыми и номера где угодно и сколько угодно. Нужно просто в каждом имени найти номера и дополнить до заданного размера нулями. Для этого в обратном цикле (с конца) печатается каждый символ как есть, но когда наступает конец (начало) числа (последовательности цифр), при необходимости допечатывалось нужное количество нулей.
>>1590372Не, скрипты это рак, они где-то есть, где-то нет, где-то заблокированы политиками, всякие питоны нужно дополнительно устанавливать. Нормальной программе, которая просто работает, альтернатив нет.Еще, хотя программа для запуска командной строкой, это вовсе не значит что для консоли. Если отрабатывает нормально, ничего не должно происходить, а консоль выскакивает в любом случае, моргая перед глазами, это тупо. Консоль не может в юникод, а файлы юникодные, ну и гуй с удобным списком сообщений если необходимо, и может еще чем, всяко лучше текстовых костылей из прошлого века. Это же полноценное приложение с ясной и полезной функцией, а не одноразовое действие над файлами.
Анон, посоветуй литературу для вкатывающихся из других языков. Желательно, чтобы было кратко. Хочу поскорее к практике приступить.
Поставил на винду clang через chocolate, при попытке скомпилить простой код, пишет, что не может найти stdio.h. Я так понял что стд либа не идет в комплекте с clang? Где ее взять? Мне vs ставить?
>>1590914Алсо, я его решил затроллить и посоветовал ему писать код в EMACS, потом посоветовал Vim, теперь он пишет код в виме, и компилирует в цугвине, пиздец в общем. Троллинг в итоге пошёл в обратную сторону, потому что в итоге я нихуя не начал ничего делать.Пойду скачаю K&R.
>>1590823Проблема сей в том что это не ООП, это процедурный язык со структурками и макропетушнёй во все поля и там разные задачи пишутся по специфике - ядро линуха и его драйвера пишется одним стилем, софт под гнум - другим, у микроконтроллеров вообще свой диалект с хакнутым языком и вшитыми макросами для прерываний.
>>1590912>Поставил на винду clang через chocolate, при попытке скомпилить простой код, пишет, что не может найти stdio.h. Я так понял что стд либа не идет в комплекте с clang? Где ее взять? Мне vs ставить?MSYS2SYS2
>>1591253>пикАхахах! Это пердоговно по дефолту ищет вижуал студию вместо собственных либ. Уже видел подобную хуйню когда ковырялся с их компиляторами и мейками. То ли баг, то ли тупые и баг. Проигрыш с подливой.
>>1591315У них там какой-то договорнячок был, типа мс помогает писать ллвм, ллвм со шлангом в благодарность в версии на винду поставляется только в кастрированном виде и без вижуалстудии не работает.
>>1591347Но я вроде с обычным gcc делал. Уже подзабыл, но был готовый проект с билд-скриптом, который проверяет наличие либ, вываливает кучу тестов компилячтора на фичи, ну всё это, обычное дело, и вот там оно лезло в студию и писало про зафейленные фичи, что разумеется, ведь студия не gcc.
>>1591436Если ты делал с gcc, а потом пытался компилировать clangом, то, наверное, не очень удивительно, что он не мог библиотеки найти.
А визуалка, что платная? У меня пишет что последний триальный день остался... Он мне обрежет доступ к комплиятору да?
Как лучше писать.void main(void){""}или просто main(){""}у мен компилятор без void пропускает, но написано что если функция не берёт аргументов или не возвращает ничего нужно указывать void.
>>1591852а я пишу main без return'а, но она всё равно возвращает 0. void тоже не ставлю, видимо комплиятор сам что-то там допилиивает. пишу на визуалке если что.
>>1591855Да, компиляторы умеют подтирать слюнки за совсем уж хлебушками, но ты хочешь быть таким хлебушком?
>>1591859зачем вот ты просто так снихуя пишешь non-compliant code?дали им#include <stdlib.h>int main(void){ return EXIT_SUCCESS;}нет, блядь, говно жрут
>>1589985>>1590372двачую шелл-Господина.Cygwin под Окнами, #!/bin/sh под юниксами.И работа с файлами и регексы и арифметика и циклы.Чекни пикрил или Юникс - универсальная среда программирования от Кернигана.Шелл он везде встроен из коробки. Стандартное средство, а не ебля с файлами.
>>1591769Классы это продвинутые структуры. Сам понимаешь, си без структур как хирург без рук. А классы еще круче структур, что делает язык в разы лучше, а шаблоны классов еще лучше.ООП же это когда код программы оборачивают в иерархию классов. Вместо кода получается дрисня из оберток для оберток, интерфейсов к интерфейсам и фабрик фабрик.
>>1592026вообще мне кажется, си с шаблонами, неймспейсами (но без классов!) был бы просто идеальным языком
>>1592032ну как, там нужно целую экосистему городить, в c++ всё время есть соблазн воспользоваться стандартными контейнерами, и они охуенны, пока тебе не нужно сварганить что-то чуть-чуть сложное. тогда тебе уж нужно блядь, писать классы, с конструкторами копирования, оверлоадить std::move, и, блядь, понеслась пизда по кочкам
>>1592035>ужно блядь, писать классы, с конструкторами копирования, оверлоадить std::move, и, блядь, понеслась пизда по кочкам Нет, не нужно. Можешь смело использовать сишные структуры в контейнерах без каких-либо дополнительных действий.
>>1592035Это называется безвольный дрон плывущий по течению. Если язык без классов, значит нельзя ими злоупотребить, это хорошо. А если с классами, значит нужно их пихать куда надо и не надо, а это плохо. Сам думать как лучше и применять или не применять по обстоятельствам, дрон не может, только подчиняться. Если дядя сделал в языке классы значит нужно на классах, если не сделал, значит не нужно. Таким лучше всего подойдет анальный язык вроде паскаля, в си же свобода, таким не место.
>>1591859а обязательно делать инициализацию всех переменных\массивов вначале программы? можно в середине программы внезапно инициализировать один массивчик?
>>1592405да заебал, шиз ёбаный. нахуй ваш тред нихуя не объясняете. смысл от этого программача ёбаного. пойду гуглить всё
>>1592409я спросил разницу между объявлением переменной и назначением что в компьютере технически происходит
>>1592421Ну и на двойное двойное присваивание люди жалуются, это такой себе стиль. Тем более, что ты c = 0 нигде не используешь после.
>>1592434Функция getline, судя по названию, делает именно строку. А ты строку не делаешь. Ещё раз: в чём отличие строки от массива букв?
>>1592442Да. Строка заканчивается нулём, имененно так C определяет, где остановиться, например, в printf("%s", l) и других функциях, работающих со строками.
>>1592445Да, я уже проверил спасибо. Только у меня проблема частично ушла. Как сделать так чтобы он не печатал этот символ?
>>1592449я так понимаю эта херня забивает в массив перед '\0' забивает '\n' когда я нажимаю ентер. но я не понимаю почему. я же сделал так чтобы цикл не забивал туда '\n'
>>1592453не надо, скажи как проблему решить. решение уровня переустанови винду, купи новую машину.ещё и окажется что на юниксе точно такой же вывод будет.
>>1592460бля я не хочу на эту хуюнту переходить, у меня ноутбук и драйверов под эту порашу нету просто. а вшитое дерьмо убивает кучу функций тачпада, клавы и производительность видеокарты. а сам я их писать не умею (надеюсь что пока что)
>>1592475Нужно чтобы программа продолжала считать буквы, даже когда line[MAX] закончился. То есть делаешь, напримерline [5]Потом даёшь ему инпут: sunflowerИ программа тебе отвечаетInput length: 9 symbolsSaved: "sunf"
>>1592498спасибо большое. тяжело довольно сформулировано, не мог перевести никак. спасибо за все советы, аноны, продолжай оставаться в треде в будущем. я ещё неоднократно буду тебя заёбывать
>>1592752Ну, я не очень умный, конечно, но без контекста и я не понял, чего хотят. Мог бы и объяснить ему вчера, если ты сразу разобрался.
>>1592755>>1592752если загуглить эту задачу и решение, то очень много вспылвает вопросов на форумах где люди пишут что не понимают формулировку задания. я уже гуглил просто