Главная Юзердоски Каталог Трекер NSFW Настройки

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

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 952 178 252
Тред синтаксического сахара над языком ассемблера, ака языка си. /clang/ C 09/02/24 Птн 19:47:31 3042192 1
image.png 931Кб, 980x653
980x653
Давно меня не было и вероятно прошлый сдох.
Однако назрел вопрос с чем вы, аноны, склеиваете свои числодробилки, чтобы красивенько отображать информацию на экране монитора?

Из моих рассуждений я бы выбрал джаву. Да у нее есть проблемы с визуалом, графические библиотеки говно аляпистое и скорость вычсилений так себе. Однако графическую библу можно набросать и свою (помню как то делал уже подобие бустрапа под джаваформы, который тягал CSS листы и красивенько рисовал, но компик сгорел, надо заного набрасывать), а скорость вычислений мы как раз поручаем числодробилкам на языке си, запакованным в билбиотечки.

У вас какие мысли?
Аноним 09/02/24 Птн 20:15:33 3042241 2
>>3042192 (OP)
А что, консоль тебе недостаточно красивенькая?
Аноним 09/02/24 Птн 20:23:27 3042249 3
>>3042241
Возможностей консоли недостаточно. Нужна именно пиксельная графика, то бишь мордорисование. Через какие костыли не так уж важно, я могу и с нуля накалякать какой нибудь визуальный конвеер для покраски кнопочек (прямоугольник в котором текст, это разве страшная задача для отрисовки кнопки), но хотелось бы не сильно заморачиваться именно с мордорисованием а все творческие силы пустить на алгоритмы числодробилок.
09/02/24 Птн 21:02:14 3042273 4
image.png 367Кб, 600x600
600x600
Аноним 09/02/24 Птн 21:13:22 3042282 5
>>3042192 (OP)
Во-первых, тебе помирать уже скоро, а ты ui озаботился.
Во-вторых, бери винформс и не еби мозги.
Аноним 09/02/24 Птн 22:22:47 3042390 6
image.png 30Кб, 911x591
911x591
ncurses если нужен минимализм
qt если надо быстро
Аноним 12/02/24 Пнд 16:10:33 3045262 7
Мужики, а книги:
C Primer Plus - Стивен Прата
C Programming - A Modern Approach - Kn King
Есть на русском языке?
Аноним 14/02/24 Срд 08:22:26 3047807 8
>>3042390
ебать ты знаток канеш.
qt для c++ а для с gtk
Аноним 14/02/24 Срд 08:34:54 3047812 9
>>3047807
C если нужен минимализм
C++ если надо быстро
Аноним 14/02/24 Срд 16:01:10 3048326 10
>>3045262
Конечно есть, в Москве брал недавно Прату для коллекции.
Аноним 14/02/24 Срд 22:06:34 3048919 11
>>3047807
Нах C++. Можно в qt quick все сделать с минимумом плюсов, знаток.
Аноним 18/02/24 Вск 01:48:26 3053278 12
Аноны, подскажите дегенерату, пожалуйста, а можно ли за-memset-ить двумерный динамическивыделенный массив?
Обеспечивается ли линейность памяти для массива массивов?
Аноним 18/02/24 Вск 01:49:58 3053282 13
>>3053278
Да.
Линейно в памяти.
Аноним 18/02/24 Вск 02:18:25 3053301 14
image.png 51Кб, 746x523
746x523
>>3053282
Можно какой нибудь простейший пример? Или обьясните почему пикрил валится с сегфолтом?
Аноним 18/02/24 Вск 02:20:54 3053303 15
>>3053301
На вывод массиав не смотрите, судя по gdb он валится прямо на мемсете. "Сжатый" двумерный массив мемсетится легко, двумерный статический массив мемсетится легко, а вот массив массивов нихрена.
Аноним 18/02/24 Вск 02:23:12 3053306 16
>>3053301
У тебя не двкхмерный массив. У тебя массив указателей на массивы.
Аноним 18/02/24 Вск 02:30:37 3053311 17
>>3053301
Не уходи далеко. Через пару минут включу комп, проверю и покажу как правильно.
Аноним 18/02/24 Вск 03:10:09 3053327 18
image.png 14Кб, 404x334
404x334
>>3053301
Короче, с динамической аллокацией двухмерных массивов не всё так радужно.
Легче моделировать самому через арифметику, как показано вот тут - https://www.geeksforgeeks.org/dynamically-allocate-2d-array-c/

Но если ты вот прям хочешь поебаться с массивами, то на картинке рабочий пример.
Аноним 18/02/24 Вск 03:27:01 3053329 19
image.png 42Кб, 558x490
558x490
Аноним 18/02/24 Вск 03:54:29 3053332 20
image.png 43Кб, 579x490
579x490
>>3053329
А можно и так извратиться. Чтобы не делать разименование указателя. Дело привычки и предпочтений.
Аноним 18/02/24 Вск 21:02:33 3053976 21
Что будет если сделать free на память, которая на стеке
Аноним 18/02/24 Вск 21:23:55 3053985 22
Аноним 18/02/24 Вск 22:14:15 3054006 23
>>3053976
Упадет с ошибкой.
Куча и стек находятся в разных концах виртуальной памяти. Например, в линуксе куча растет снизу вверх, а стек - сверху вниз. Есть специальный регистр stack pointer, который указывает на текущую вершину стека (или низ). Можно вычислить, находится ли твой адрес в куче или нет, и упасть по ассерту.
Аноним 29/02/24 Чтв 16:12:32 3068213 24
https://pastebin.com/n5fEZnW6
Возможно ли мою хуйню было сократить по кол-ву строк хоть сколько нибудь?
Аноним 01/03/24 Птн 03:51:41 3068946 25
>>3042192 (OP)
>а скорость вычислений мы как раз поручаем числодробилкам на языке си, запакованным в билбиотечки.
Если нормально писать то и джава неплохо дробит числа. Вот недавно был челлендж
https://github.com/gunnarmorling/1brc - джава обошла раст по скорости и почти догнала С++ (но тут неточно, потому что С++ запускался не на эталонном железе, которое само было производительнее)
Аноним 01/03/24 Птн 04:55:49 3068965 26
image 205Кб, 802x568
802x568
>>3068213
>https://pastebin.com/n5fEZnW6
можешь задать свою хуйню одномерным массивом по типу
char huyn9[] = {,,,,,,'#',,'#' ... ,,,};
и потом вором вывести на экран где каждый n символ будет принтефатся \n

>>3068946
сомнительно, потеря скорости вычислений на трансляцию в джавамашине, это даже в теории не близко к числодроблению
Аноним 01/03/24 Птн 05:06:24 3068974 27
>>3068965
>вором
фором
>будет принтефатся \n
но можно и не принтить перенос строки если ты фулл экран консоли заливаешь каким то своим рисунком в псевдографике
Аноним 01/03/24 Птн 06:06:43 3069005 28
>>3068965
>char huyn9[] = {,,,,,,'#',,'#' ... ,,,};

или
char huyn9[] = " # # # ";
и выводить фором

или
char\* huyn9 = " твоя ебаная строка с рисунком хуйни ";
puts(huyn9);

лан похуй пойду посплю
Аноним 03/03/24 Вск 12:53:46 3071526 29
image 604Кб, 2040x1620
2040x1620
бля дайте рабочий гайд за ллдб (lldb)
все что я нашел нихуя не работает, хочу глянуть брекпоинты как рекурсия себя ведет, но пока нихуя не понимаю
Аноним 06/03/24 Срд 02:54:02 3074808 30
image 14Кб, 544x122
544x122
Ну что вы, аноны, кодите что то на сях?
Аноним 06/03/24 Срд 03:01:39 3074810 31
>>3074808
> кодите что то на сях?
Полностью переехал на плюсы. Благо они уже для кофеварок научились компилировать.
Не помню уже когда писал что-то на чистом Си.
Аноним 06/03/24 Срд 13:38:09 3075227 32
>>3074808
Я проштрудил книжку оч хорошую OOC, которая в шапке треда раньше висела. Потом ппц мотивация привалила, решил сделать свой евентлуп с асинхронными корутинами, ебался с этим парк недель, но забросил и уже полгода не притрагивался.
Аноним 10/03/24 Вск 06:27:15 3079569 33
За сколько вы K&R осилили?
Аноним 10/03/24 Вск 07:45:27 3079578 34
>>3079569
Да хз. Черт дернул пройти заного эту христоматию. Ковыряю задачки все подряд прямо с первой. Но так... не на энтузиазме, а лениво, час ютюба 2 строчки кода если грубо говорить.

Да и книга сложная, уже в первых главах где написан пример программы копирования файлов надо голову поломать как эта программа должна была работать по задумкам Ритчи (Керниган полюбасу там заложил тонну общения с консолью, а Ритчи повелся и кидает файлы в поток консоли а не в фопен).

Крч, вот так прям с наскока хуй кто осилит K&R Clang. Реально сложная книга со своими заковырками и неочевидными подводными камнями.

Я вот сидел и пытался в a.out скормить файлик чтобы проверить по заданию работу гетча, и нихуя у меня не вышло, но зато я нашел Heredoc о котором не знал, сижу вот читаю про эту волшебную штуку-дрюку.
Аноним 10/03/24 Вск 08:10:10 3079586 35
image 135Кб, 628x492
628x492
>>3079578
upd
Если у кого то то же возникает затык в первых главах как программа Кернигана считает символы из файла без фопена, то задумка у них была пикрил.
Аноним 11/03/24 Пнд 00:12:39 3081013 36
image 144Кб, 1196x1056
1196x1056
У меня вопросы по кодстайлу. Анончики скажите пожалста, вы стараетесь писать читабельно как в этом примере: в ифе стейт сравнивается со значением. Или стараетесь писать более краткие формы: иф(стейт) иф(!стейт)
Аноним 11/03/24 Пнд 00:19:38 3081016 37
>>3068965
>трансляцию
Ты почитай как жавамашина работает
Аноним 11/03/24 Пнд 00:20:33 3081018 38
>>3042192 (OP)
>У вас какие мысли?
На дворе уже давно не 2000 год, пора из бункера вылезать
Аноним 11/03/24 Пнд 00:24:49 3081022 39
>>3081016
транслирует опкод в байткод а што
Аноним 11/03/24 Пнд 07:34:14 3081107 40
image 81Кб, 2326x388
2326x388
Бля пиздец, всю башку сломал себе этими вертикальными гистаграммами. Нет, я понимаю можно просто нарисовать гистаграмму челез юникодовые управляющие последовательности или курсы подрубить... Но смысл в том чтобы решить задачку средствами которые предоставлены в книжке, а там хуй да нихуя, циклы ифы и путчары... Еще блять эта кодировка вайдчарами русского текста... Непечатные символы...
Аноним 11/03/24 Пнд 12:53:55 3081379 41
>>3081022
Вылезай из бункера, уже третий десяток пошел как jit запилили
Аноним 11/03/24 Пнд 20:52:08 3082115 42
>>3068965
>сомнительно, потеря скорости вычислений на трансляцию в джавамашине, это даже в теории не близко к числодроблению
Там есть специальные подсистемы в JIT (C1 и C2), которые по сути кэшируют трансляцию часто используемого кода. То есть ты будто в рантайме бинарник компилишь и с ним работаешь. Плюс т.к. джава может в рантайме менять код, в отличии от С++, она может оптимизировать в зависимости от того как код используется - разворачивать циклы, переставлять операции и т.д.
https://habr.com/ru/articles/305894/
Аноним 11/03/24 Пнд 22:33:13 3082317 43
>>3081379
ты контролируешь джит? нет? тогда о чем спор, бункерный?
Аноним 11/03/24 Пнд 22:36:32 3082318 44
>>3082115
хабр помойка, тем не менее, это потеря скорости
компил в рантайме/трансляция это потеря скорости исполнения кода, как вы этого понять то не можете? совсем обджавились уже
заместо пармы мувов по регистрам ты делаешь компил + пара мувов по регистрам
уже на пальцах вынужден объяснять джавистам как работает джавамашина пиздец до чего дошли
Аноним 11/03/24 Пнд 22:53:02 3082326 45
>>3082317
спора нет, жаба уже двадцать лет по производительности не хуже плюсов, и ебет в хвост и гриву всякие высокоскоростные всхрюки типа растов. и причину тебе уже озвучили - оптимизация кода в рантайме основанная на статистике исполнения кода, фича, которая в принципе недоступна компилируемым языкам.

>>3082318
>компил в рантайме/трансляция это потеря скорости исполнения кода, как вы этого понять то не можете?
книжки почитай прежде чем хуйню пороть
Аноним 11/03/24 Пнд 22:57:25 3082329 46
>>3082318
ты там на перфокартах код пишешь что у тебя программы штучными мувами по регистрам измеряются?

>заместо пармы мувов по регистрам ты делаешь компил + пара мувов по регистрам
правильно так - заместо пары миллиардов мувов по регистрам ты делаешь пару миллионов мувов, потом оптимизацию, и потом еще пару сотен миллионов мувов.
Аноним 11/03/24 Пнд 23:18:47 3082336 47
>>3082326
>по производительности не хуже плюсов, и ебет в хвост и гриву всякие высокоскоростные всхрюки типа растов
чел мы в ситреде, тут бенчи по асму меряются, а не по твоим тормозным джавам плюсам растам питонам джиэсам, проснись

>>3082329
оптимизировать и гцц умеет и будут теже мувы но зато без потери процессорного времени

джависты вам тут не рады
Аноним 11/03/24 Пнд 23:21:00 3082339 48
>>3082336
>оптимизировать и гцц умеет
в рантайме?
Аноним 11/03/24 Пнд 23:23:00 3082341 49
image 857Кб, 1562x1170
1562x1170
>>3082339
умоляю хватит тралить тупостью
>без потери процессорного времени
на компил в рантайме

так понятно стало?
Аноним 12/03/24 Втр 12:56:34 3082798 50
>>3082318
>компил в рантайме/трансляция это потеря скорости исполнения кода, как вы этого понять то не можете? совсем обджавились уже
>заместо пармы мувов по регистрам ты делаешь компил + пара мувов по регистрам
Чел ну ты ебанат? Трансляция 1 раз происходит, потом ты из кэша достаешь свои мувы по регистрам
>тем не менее, это потеря скорости
манямирок затрещал, но выстоял, упорный!
Аноним 12/03/24 Втр 12:58:38 3082802 51
>>3082336
>оптимизировать и гцц умеет и будут теже мувы но зато без потери процессорного времени
гцц не знает как ты будешь использовать программу каждый раз когда ты её запускаешь, а жит знает
>джависты вам тут не рады
не гори только от джавабогов
Аноним 12/03/24 Втр 13:02:08 3082807 52
>>3082336
>чел мы в ситреде, тут бенчи по асму меряются, а не по твоим тормозным джавам плюсам растам питонам джиэсам, проснись
Спецом для тебя я скинул пруф https://github.com/gunnarmorling/1brc , тут как раз на джаве угорают по лоу левелу и постят результаты бенчмарков
Аноним 12/03/24 Втр 13:06:25 3082817 53
>>3082341
на стартапе, да - потом нет
Аноним 12/03/24 Втр 13:08:11 3082819 54
>>3082317
А ты контролируешь свой си-компилятор-нейм? Может еще знаешь как каждый из них UB резолвит?
Аноним 12/03/24 Втр 23:46:39 3083990 55
>>3082819
я свой написал так что спок слови уб шиз
Аноним 13/03/24 Срд 00:05:38 3084007 56
>>3082807
пруф чего ты мне скинул? это чисто джава бенчи насколько я вижу тк тут написано напишите программу на джаве
пруф того что жаба умеет складывать вычитать и компейрить числа? ахуенно

>>3082802
>гцц не знает как ты будешь использовать программу каждый раз когда ты её запускаешь, а жит знает
хз чо ты высрал, даже разбирать тобою написанное не хочу

>>3082798
а если проц без кешлиний? поешь говна лучше и не пиши сюда
Аноним 13/03/24 Срд 05:17:27 3084105 57
image 44Кб, 2290x172
2290x172
Вы тут срете бесполезной хуйней в тред, а лучше бы занялись ментальной гимнастикой. Вот вам пикрил задачка и книги K&R попробуйте решить ее. Из доступных инструментов первой главы: ветвления ифами, циклы, массивы, функции (без поинтеров, векторов, макросов и всего прочего).

Без каких либо ограничений на размер строки означает что нам недоступно хранение строки внутри char arr[size_t]. Удачи.
Аноним 13/03/24 Срд 10:46:59 3084306 58
>>3084105
просто взять указатель на строку и отправлять байты на вывод пока не встретишь нулевой байт?
Аноним 13/03/24 Срд 10:49:39 3084313 59
>>3084007
>пруф чего ты мне скинул? это чисто джава бенчи насколько я вижу тк тут написано напишите программу на джаве
>пруф того что жаба умеет складывать вычитать и компейрить числа? ахуенно
здесь сравнения с другими языками
https://github.com/gunnarmorling/1brc/discussions
Аноним 13/03/24 Срд 10:50:22 3084314 60
>>3084007
>а если проц без кешлиний?
джавамашина кэширует, не процессор
Аноним 13/03/24 Срд 11:04:57 3084333 61
>>3084306
В этой главе нет указателей.
Прикрепляйте пастебины.
Аноним 13/03/24 Срд 11:26:51 3084361 62
image 104Кб, 1846x428
1846x428
image 50Кб, 294x518
294x518
Аноним 13/03/24 Срд 11:27:45 3084362 63
>>3084314
это примерно в 6 раз медленнее чем держать мувы в линиях
Аноним 13/03/24 Срд 12:49:32 3084462 64
>>3084361
Пруфы того что ты не читаешь ридми. Там эталонный сервер на Хетцнере, иначе каждый бы мог просто на более мощной машине запустить и сказать что у него питон быстрее работает.
Аноним 13/03/24 Срд 12:51:58 3084467 65
>>3084362
а если проц без кешлиний?
Не пойму как ты через сишку кажешь процу что ему кэшировать, а что - нет, может расскажешь? Просто хочу разобраться
Аноним 13/03/24 Срд 12:55:48 3084476 66
>>3084462
ты принес какую то хуету, а я должен бегать по крупицам собирать инфу что это все значит и что ты хотел сказать своим высером?
да пошел ты нахуй анон, поебать мне на твои бенчи хуенчи сделанные ПАПРИКОЛУ, жаба медленне си, это аксиома, хочешь опровергнуть - неси бенчмарки

>>3084467
>а если проц без кешлиний?
тогда одинакого будет, холодный старт только медленее, нужно время на транслейт
> как ты через сишку кажешь процу что ему кэшировать, а что - нет
префетчинг, паттерны известны, однако это все равно неуправляемый напрямую процесс
Аноним 13/03/24 Срд 12:59:34 3084485 67
>>3084333
Тебе надо - ты и прикрепляй
Ну раз в главе нет указателей, то и в языке нет, понимаю
Аноним 13/03/24 Срд 13:01:53 3084491 68
>>3084476
>ты принес какую то хуету, а я должен бегать по крупицам собирать инфу что это все значит и что ты хотел сказать своим высером?
Ты ничего не должен, я дал тебе таблицу результатов, ты со сгровешей жопой побежал проверять на локалке, потому что не верил что джабба может быть такой быстрой. Тут уж не моя вина.
Аноним 13/03/24 Срд 13:07:05 3084501 69
>>3084485
чо ты понимаешь то? систему уравнений то же через теорию игр решать будешь?

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

пиздец двач наплодил даунов
Аноним 13/03/24 Срд 13:07:20 3084502 70
>>3084476
>неси бенчмарки
И да, эта репа фактически и есть бенчмарк, так что бенчмарки я принёс. Просто ты сравнил не Си с джавой, а джаву на локале и джаву на хетцнере.
Вот сишное решение https://github.com/gunnarmorling/1brc/discussions/46
Аноним 13/03/24 Срд 13:09:31 3084507 71
>>3084501
>на какой локалке, даун? это твои две ссылки, делать мне нехуй проверять на своей машине какой то паприколубенч
Не гори только, скуф
Что тогда за вторая картинка с замерами от тебя была? Мне мысли твои чтоли читать?
Аноним 13/03/24 Срд 13:11:20 3084508 72
>>3084502
я вообще ничо не сравнивал, тут нечего сравнивать
ты принес ссылки я их открыл нашел сишный тредик и сфоткал результы
теперь ты говоришь что я принешь жабу на локалке, а вот ты то принес сишник на хетцентре, но по твоей ссылке как раз сишник на локале
покинь тредик, ты не в адеквате, чел
Аноним 13/03/24 Срд 13:52:01 3084554 73
ладно я то же погорячился
давайте раз и навсегда определимся почему си быстрее жабы
есть только одно пруфабельное определение - си быстрее жабы потому, что на совершение действия А ему не нужно совершать дейтсвие Б. о чем ручь? о строительстве объектов и вызове череды колбеков для записывания какого нибудь несчастного стринга в память. ооп это априори медленно.

в остальном можете играть в суррогатные гонки с миллиардом повтроений одной вычислительной инструкции и говорить что все одинакого. этот тест необъективен так как байткод исполняется фактически один и тот же на одной и той же машине, тут нет никакой гонки

к слову мне кажется этот странный челлендж из ссылки - посчитать много даблов в мультипотоке, звучит как задача для гпу
Аноним 13/03/24 Срд 15:42:40 3084669 74
>>3084554
>есть только одно пруфабельное определение - си быстрее жабы потому, что на совершение действия А ему не нужно совершать дейтсвие Б. о чем ручь? о строительстве объектов и вызове череды колбеков для записывания какого нибудь несчастного стринга в память. ооп это априори медленно.
Это слишком упрощенное определение, потому что:
1) совершение меньшего количества действий не всегда даёт быстрее выполнение на современных процах.
2) Java - мультипарадигма, а не чистый ООП, писать как на С никто не запрещает, даже с ручным выделением памяти
3) Тот же пример с размоткой цикла - сишка тупая и если ей сказали крутить циклы - она будет крутить циклы и нарушать instruction pipelining, в то время как джава умная и может понять что цикл можно развернуть и ускорить таким образом код.
4) возвращаясь к "совершение действия А ему не нужно совершать дейтсвие Б" -> джава может в рантайме понять что ей не нужно что-то совершать и таким образом будет быстрее кода, который не адаптируется к рантайму.
А захламить код мусорными аллокациями можно и на С, было бы желание.

>в остальном можете играть в суррогатные гонки с миллиардом повтроений одной вычислительной инструкции и говорить что все одинакого. этот тест необъективен так как байткод исполняется фактически один и тот же на одной и той же машине, тут нет никакой гонки
ничего не понял
суррогатные гонки - это и есть суть бенчмарков, ты о чем?

>к слову мне кажется этот странный челлендж из ссылки - посчитать много даблов в мультипотоке, звучит как задача для гпу
Ну так челлендж выжать максимум конкретно из джавы, а не просто считать числа где-нибудь
Аноним 13/03/24 Срд 16:43:45 3084755 75
>>3084669
>сишка тупая
кукарек, ничем не подкрепленный
>джава может в рантайме понять что ей не нужно что-то совершать и таким образом будет быстрее
время на "понять" конечно же не нужно, ведь это происходит по волшебству

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

>суррогатные гонки - это и есть суть бенчмарков, ты о чем?
то к чему они пришли, а не их суть
Аноним 14/03/24 Чтв 17:14:29 3086159 76
image 58Кб, 620x172
620x172
image 25Кб, 408x88
408x88
пизда вам цифры ебаные
Аноним 14/03/24 Чтв 18:10:17 3086197 77
>>3084755
Я тут мимо проходил, если что

Бля, даже для кубейсика был компилятор, который исполняемый файл выдавал.
Для тех же джавы и сишарпа есть АОТ, которая выдаёт машинный код. Только это нахуй не надо, потому что собираешь в машинные коды ты для конкретного набора инструкций, и на более старых процессорах это просто не запустится, а на более новых не будут использоваться новые сокращающие время исполнения инструкции.
В это же время байткод джавы, ИЛ сишарпа, да даже код джаваскрипта выполняются рантаймом, который знает, что поддерживает процессор, а что нет, и во что можно код переводить, а во что нельзя.
Аноним 15/03/24 Птн 05:03:31 3086615 78
>>3086197
>рантаймом, который знает
ему надо в што где когда
Аноним 15/03/24 Птн 06:32:39 3086630 79
>>3086615
тебе надо в клуп веселых и находчивых
Аноним 15/03/24 Птн 15:24:15 3087089 80
>>3042192 (OP)
Если я в проге использую printf с параметром %d, компилятор засовывает в прогу весь функционал функции или даже stdio.h? Как удалить ненужное?
Аноним 15/03/24 Птн 17:01:46 3087213 81
image 74Кб, 868x214
868x214
>>3087089
линкуй только функцию
так как есть скрытый флаг в компиляторе -lstd то линкер так или иначе найдет бинарное исполнение любых функций из стд либы без хидера (малоки хуялоки)
вопрос лишь в том нахуй оно тебе надо? бинарь все равно форматный, будут просто куча пустых адресов, покури ELF если ты на винде
Аноним 17/03/24 Вск 10:29:52 3089003 82
>>3084105
В чем проблема определить сначала размер большей строки, и тогда по смещению от потока вывести ее?
Аноним 17/03/24 Вск 12:26:26 3089112 83
>>3089003
В том, что ты не читал пост, на который отвечаешь.
Аноним 17/03/24 Вск 14:41:56 3089393 84
Screenshot2024-[...].png 301Кб, 1920x1080
1920x1080
Аноним 17/03/24 Вск 16:22:27 3089498 85
image 240Кб, 2044x450
2044x450
>>3089393
Чо сказать то хотел?
Аноним 17/03/24 Вск 16:48:29 3089517 86
>>3086197
>даже для кубейсика был компилятор
Что значит даже? Для бейсика есть компилятор, а для джавы и шарпа нет, потому что, в отличие от бейсика, жабошарп это скриптовое говно, а не языки программирования.
Аноним 17/03/24 Вск 16:54:26 3089524 87
>>3089498
Перевод некорректный
Аноним 17/03/24 Вск 16:59:16 3089542 88
>>3089524
Да я не настаиваю, решай задачу которая тебе удобней. В любом случае это был просто челлендж ак 100 задачек литкода или типа того, и каждый сам для себя решает принимать участие или нет. Я только прошу внимательно читать условия задачи, а то я уже заебался повторять одно и то же.
Аноним 17/03/24 Вск 17:49:32 3089618 89
>>3089542
Ты вбросил задачу, которой нет в КР. И очень даже возможно, что она не решаема
Аноним 17/03/24 Вск 18:30:52 3089767 90
image 32Кб, 914x428
914x428
>>3089618
Есть. Решаема. Тебе не надоело набивать посты этим бесполезным спором? То перевод тебе не нравится, то вообще задачи нет такой.
Аноним 18/03/24 Пнд 08:28:36 3090322 91
image 178Кб, 1300x514
1300x514
Ошибся, но где?
Есть какой нибудь гайдик что засунуть в мантиссу и сонование чтобы получить максимальное и минимальное значение флоатов по границам? Я ничего не нашел в интернетике кроме формулы.
Пойду пока цветовую схему поковыряю, а то дефолтная всратая.
Аноним 20/03/24 Срд 18:43:24 3094012 92
>>3042192 (OP)
Всем салют. Чисто из любопытства: как в чистых сях обстоит дело со строками, конкретно с кодировкой? Вот чтобы максимально переносимо было, какой тип используют люди? Utf8, или 16 или 32?
Спасибо
Аноним 20/03/24 Срд 19:18:05 3094041 93
>>3094012
я не иксперт, но вроде как в чистых сях есть какая то библа в наборе стандарта которая работает с вайдчарами и переносимо покрывает все кодировки
но я хз, не пишу переносимые. обработчики текста, так что на своей машине юзаю утф8 юникоды где латинские в один байт русские в два вот собсна и все
Аноним 20/03/24 Срд 20:18:20 3094103 94
>>3094012
>чтобы максимально переносимо было, какой тип используют
Первые 128 символов ascii
Аноним 20/03/24 Срд 20:38:23 3094136 95
>>3089517
>>даже для кубейсика был компилятор
>Что значит даже? Для бейсика есть компилятор, а для джавы и шарпа нет, потому что, в отличие от бейсика, жабошарп это скриптовое говно, а не языки программирования.
Это ложь.
https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/?tabs=net8plus%2Cwindows
Для джавы тоже есть.

Повторяю, в подавляющем большинстве случаев JIT лучше, чем нативная компиляция, потому что JIT может транслировать твою программу в команды текущего процессора, используя всю его мощь, а говноязык без JIT может только нацелиться на какой-то конкретный процессор, причём на более старых моделях программа просто не будет работать, а на более новых она будет выполняться неоптимально.
Аноним 20/03/24 Срд 20:42:41 3094140 96
>>3094136
да успокойся ты, джитошиз, покури флаги компилов и статистику по используемым инструкциям процессоров
а еще раз тебе не лень срать ссылкми принеси джит компиляцию которая юзает все 2к+ инструкций современно проца
Аноним 20/03/24 Срд 23:23:15 3094343 97
я прпльно понимаю что для иучения с в visual studio мне нужно иметь примерно 50 гб свод места? пиздец много весят "файлы" для него. охуеть.
жаль а) я нищий б) у ноута всего один слот ссд.
придется отлодить учебу (
так бы купил 8тб ссд м.2
Аноним 21/03/24 Чтв 00:09:49 3094382 98
>>3094140
>покури флаги компилов и статистику по используемым инструкциям процессоров
а можно просто использовать жабку и в ус не дуть
Аноним 21/03/24 Чтв 00:12:30 3094384 99
Аноним 21/03/24 Чтв 08:52:06 3094528 100
>>3094382
а можно просто писать на сишечке и в ус не дуть
Аноним 22/03/24 Птн 13:59:45 3095859 101
>>3086630
c если нужен минимализмc++ если проц без хидера (малоки хуялоки)вопрос лишь в отличии от бейсика, жабошарп это скриптовое говно, а лениво, час ютюба 2 строчки кода в рантайме понять то дефолтная всратая.
Аноним 22/03/24 Птн 19:58:10 3096372 102
>>3095859
ты лиспом объебался чи шо? переведи на человеческий
Аноним 24/03/24 Вск 12:37:22 3097769 103
image 141Кб, 1816x388
1816x388
image 178Кб, 2158x372
2158x372
схера ли варнинг?
сначала мы определяем что это присваивание и что инкремент постфиксный (после присваивания)
потом начинаем вычислять правую часть присваивания
где сначала вычисляется условие тернарника, а затем вычисляется одна из его веток
потом происходит само присваивание
и вот только теперь постфиксный инкремент

докажите что компилер не даун?
Аноним 24/03/24 Вск 14:37:08 3097828 104
>>3097769
Ну да, на пустом месте ругается. Но может быть у него крыша едет из за тернарной операции?
Аноним 24/03/24 Вск 15:06:36 3097841 105
>>3097769
Это UB. Поведение зависит от того, будет ли сначала выполнено выражение слева от знака равенства, или справа. Так что ругается он по делу. Не делай так, короче.
Аноним 24/03/24 Вск 15:10:30 3097849 106
>>3097841
приветствую уб шиза в этом итт треде
поясни за выполнение выражения слева от знака равенства или справа
как вычисление этих частей соотносится с приоритетом вычисления постфиксного инкремента слева от знака присваивания?
Аноним 24/03/24 Вск 15:32:25 3097895 107
>>3097769
https://en.cppreference.com/w/c/language/eval_order
> и вот только теперь постфиксный инкремент
Найди ордеринг рул который говорит что сайд-эффект постфиксного инкремента вычисляется после assignment оператора.
Я сходу такой не нашёл, есть что-то похожее в последних стандартах плюсов.
Аноним 24/03/24 Вск 15:39:48 3097912 108
image 295Кб, 2370x1464
2370x1464
image 163Кб, 2350x1346
2350x1346
image 158Кб, 2362x806
2362x806
>>3097895
ну вот например тебе твой ордеринг рул который говорит что сайд эффект постфиксного инкремента вычисляется после эсс игнмент оператора
как видно из таблички приоритетов = и += обладают одним уровнем приоритета выполнения и вычисляются справа налево

и пик 3 небольшая справочка для тебя лично, любителя носится со стандартом как со святой грамотой

лучше бы ты K&R читал а не хуйней маялся
Аноним 24/03/24 Вск 16:43:20 3098043 109
>>3097849
> скрины из K&R
Ну хуй знает.
> и вычисляются справа налево
Я аж сначала охуел от такого пиздабольства, потом открыл и понял что "справа-налево" это сука про ассоциативность оператора. И в этой же сука главе тебе говорят что порядок вычисления операндов не специфицируется для большинства операторов, и приводят твой же UB как пример UB: a[ i ] = i++, долбоёба ты кусок.
> любителя носится со стандартом как со святой грамотой
Если в стандарте нет явно-указанного ордеринга вычисления, они спокойно могут быть как угодно упорядочены компилятором, и разрабам компилятора похуй что ты там думал, щенок ебаный.
Аноним 24/03/24 Вск 16:51:08 3098074 110
>>3098043
ладно хуесос этот раунд ты выйграл уб так уб
Аноним 24/03/24 Вск 16:59:50 3098100 111
image 40Кб, 440x184
440x184
image 133Кб, 1768x340
1768x340
зафиксировали проснулись подтянулись
Аноним 24/03/24 Вск 17:07:04 3098113 112
>>3098100
Лучше на for поменяй, понятнее будет.
Аноним 24/03/24 Вск 17:16:05 3098121 113
image 127Кб, 1686x336
1686x336
Аноним 25/03/24 Пнд 00:03:30 3098564 114
Так все таки, что лучше (с фактами) jit или компиляция в машиный код?

И есть ли реальная компиляция джава/шарпа говна в машинный код.
Аноним 25/03/24 Пнд 00:06:51 3098566 115
>>3098564
критерии лучшести огласите
ты же понимаешь что проц умеет только машкод выполнять?
Аноним 25/03/24 Пнд 00:31:21 3098585 116
>>3098564
Лучше конечно компиляция в машинный код с глубокой оптимизацией. В идеале под конкретную модель процессора, с учётом его микроархитектуры.

Касательно c# - претензий к скорости программ не имею, но вот этот jit во время работы большого проекта (300 тыс. строк, не считая библиотек) очень неприятно и мерзко лагает. Слава богам что не часто. Но при старте программы есть несколько мест где реакция гуя достигает несколько секуд (!!!).
К этому быстро привыкаешь, потому что дальше всё работает весьма сносно. Но когда запустил аналогичную программу, написанную на компилируемом языке, было очень приятно работать из за неестественно отзывчивого интерфейса с нулевой латентностью.

Короче, однозначного ответа на твой вопрос нет.
Аноним 25/03/24 Пнд 00:48:08 3098603 117
>>3098564
PGO на твоей пеке под твои юзкейзы со всеми --march=native, графитами, lto и прочим, чем гентушизы упарываются
Аноним 25/03/24 Пнд 11:11:26 3098923 118
>>3098566
В плане скорости, эффективного использования ресурсов
Аноним 25/03/24 Пнд 12:24:48 3099029 119
>>3098923
в этом плане компил в нативный машкод конечно же
за это заплатишь скоростью разработки
Аноним 25/03/24 Пнд 23:36:49 3099655 120
>>3098564
>И есть ли реальная компиляция джава/шарпа говна в машинный код.
Конечно есть, иначе бы программы не выполнялись.
>Так все таки, что лучше (с фактами) jit или компиляция в машиный код?
В большинстве случаев JIT лучше - это факт
У джавы и шарпа есть возможность компилить сразу в машинный код, без JIT, как на C. Судя по бенчам выигрышь получается в потреблении памяти, но не в производительности (после разогрева конечно).
Иметь рантайм оптимизации лучше чем не иметь - это тоже факт

Вот пожалуйста
Аноним 26/03/24 Втр 02:56:52 3099710 121
>>3099655
Был бы я не ленив, посоревновался бы с тобой, чья программа быстрее - твоя с git, или моя в нативном коде.

Например, N-ферзей
Аноним 26/03/24 Втр 04:01:11 3099718 122
>>3099710
Это будет не соревнование языков, а соревнование кто ебанутей оптимизации напишет.
Я, при этом, абсолютно уверен, что программа на си будет быстрее программы на сишарпе/джаве хотя бы за счёт оверхеда из-за абстракций и управляемой памяти.
Одновременно я абсолютно уверен, что в большинстве случаев си не нужен, потому что код на си будет писаться раз в пять медленнее и содержать в пять раз больше богов. И выбор в итоге будет не между быстрой программой на си и медленной на джарпе, а между работающей программой на джарпе и недописанной на си.
мимо
Аноним 26/03/24 Втр 08:55:43 3099791 123
Аноним 26/03/24 Втр 09:22:29 3099813 124
>>3099718
>программа на си будет быстрее программы на сишарпе/джаве
Если не будет сборки мусора, будут работать с одинаковой скоростью. Шарп и джава очень хорошо могут в оптимизацию.
Аноним 26/03/24 Втр 09:52:56 3099828 125
image 640Кб, 700x922
700x922
>>3099813
>Если не будет сборки мусора
то это будут не жабошарпы
Аноним 26/03/24 Втр 14:05:12 3100307 126
Продублирую сюда, не совсем про язык, но либа же тоже часть языка:

Согласно POSIX:
https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/

В math.h обработка ошибок зависит от значния math_errhandling. Если math_errhandling & MATH_ERRNO != 0, то в errno выставляется значение ошибки, если math_errhandling & MATH_ERREXCEPT != 0, то выкидывается соответствующий excpetion.

Тогда почему у меня при math_errhandling = MATH_ERNNO | MATH ERREXCEPT при вызове acos(2) не происходит исключения? glibc вроде как выполняет стандарт POSIX 2008, я проверил там точно также

Я ожидаю что мне придет SIGFPE, но де факто лишь errno выставляется
Аноним 26/03/24 Втр 14:32:47 3100367 127
>>3100307
>math_errhandling = MATH_ERNNO | MATH ERREXCEPT
>math_errhandling & MATH_ERRNO != 0
>math_errhandling & MATH_ERREXCEPT != 0
я не наблюдаю эквала между a = b|c и a&c !=0 а ты наблюдаешь?
Аноним 26/03/24 Втр 15:13:26 3100450 128
>>3100367
При условии того, что и ERRNO и ERREXCEPT 1 и 2 по POSIX соответсвенно.

Тогда a = b|c && b != 0 && c != 0 => a & c != 0 && a & b != 0
Аноним 26/03/24 Втр 15:20:31 3100454 129
>>3100450
хмм ну вроде все верно. для чисел 1 и 2
а не пробовал вызвать троу макрос из глибси принудительно?
Аноним 26/03/24 Втр 15:34:35 3100464 130
>>3100454
Не понял, про какой именно макрос ты говоришь?

Вообще я ожидал что будет что-то типа raise из csignal

Может я просто не правильно понимаю что имеется ввиду под invalid floating-point exception shall be raised, но нигде инфы не могу найти
Аноним 26/03/24 Втр 15:37:46 3100466 131
image 239Кб, 2300x942
2300x942
>>3100464
не похоже на сигналы
Аноним 26/03/24 Втр 15:48:27 3100474 132
>>3100466
Дык этож даже не glibc, а отедльная либа

Ну и не вышло к слову...
Аноним 26/03/24 Втр 15:58:17 3100483 133
>>3100307
Отдельно попробовал с мюслями - тоже самое

А потом полез их сурсы:
/ if |x|>1, return NaN with invalid signal./

Реализация:
/ |x| >= 1 or nan /
if (ix >= 0x3ff00000) {
uint32_t lx;

GET_LOW_WORD(lx,x);
if ((ix-0x3ff00000 | lx) == 0) {
/ acos(1)=0, acos(-1)=pi /
if (hx >> 31)
return 2*pio2_hi + 0x1p-120f;
return 0;
}
return 0/(x-x);
}

ЗБс соотвествие стандарту
Аноним 26/03/24 Втр 16:39:49 3100534 134
>>3100483
не хочу вдаваться в подробности, но
>ЗБс соотвествие стандарту
арифметика не может быть стандартизирована так как она за исключением ансигнедов абсолютно машинозависима
ты стандартошиз что ли?
Аноним 26/03/24 Втр 18:46:08 3100708 135
>>3100534
Нет, просто делаю диплом по модельному тестированию на соответствие POSIX, и тут вот это начало стрелять

А на чем мне теперь проверяться то, раз тесты справедливо фейлятся?
Аноним 26/03/24 Втр 21:38:14 3101014 136
>>3100708
хммм я наверное глупость сейчас скажу, но последнее время чот на меня напал интересный язык лисп, кажется он идельно подходит для быстрого прототипирования (макеты программ) ну и соответственно тестирования всякой фигни то же, но лисп СТРАННЫЙ, условно сумма всех чисел в обычном языке это забить массив, пройтись фором все сложить, в лиспе это (PLUS числа через пробел) вот и все
манит меня попробовать эту штуку
Аноним 27/03/24 Срд 02:12:17 3101271 137
Аноним 27/03/24 Срд 02:15:56 3101272 138
>>3099828
да нет, достаточно просто не сорить и всё
Аноним 27/03/24 Срд 02:17:51 3101273 139
>>3099718
>программа на си будет быстрее программы на сишарпе/джаве хотя бы за счёт оверхеда из-за абстракций и управляемой памяти
ты можешь писать на джаве (и наверное на шарпе?) без абстракций и без управляемой памяти
Аноним 27/03/24 Срд 02:49:37 3101285 140
>>3101273
А можно из буханки хлеба сделать трамвай, и линукс на домашний комп поставить.
Вся суть джарпа в менеджд коде и ООП. Глупо отказываться от таких удобных вещей в угоду небольшого буста производительности.
Аноним 27/03/24 Срд 10:00:56 3101462 141
>>3101271
ой посоревновались >>3084361 выбираем си

>>3101272
ды да, достаточно просто выбрать нужный инструмент
Аноним 27/03/24 Срд 16:30:51 3102112 142
>>3101462
>ой посоревновались
И что ты из этих картинок понял?
Аноним 27/03/24 Срд 16:43:11 3102125 143
>>3101285
Конечно глупо, но это ведь абстрактное соревнование в скорости. Плюс к тому Ява позволяет выборочно писать высокопроизводительный код только там где это необходимо и писать как удобно там где нет смысла гнаться за скоростью.
Аноним 27/03/24 Срд 16:52:05 3102138 144
я решительно не понимаю почему в жопу ужаленный джавист продолжает серить в треде лучшего языка программирования
ему нравится как его обоссывают?
Аноним 27/03/24 Срд 21:13:34 3102480 145
image 182Кб, 1164x414
1164x414
image 108Кб, 1770x200
1770x200
изящно? или говно?
Аноним 27/03/24 Срд 21:39:38 3102511 146
>>3102480
Говно. Но хороший компилятор способен оптимизировать это.
Аноним 27/03/24 Срд 21:59:21 3102533 147
>>3102511
а что ты тут собрался оптимизировать?
Аноним 27/03/24 Срд 22:14:44 3102556 148
>>3102480
Если гцц/мингв, то изящнее range switch.
case 'A' ... 'Z': и тп.
А тут у тебя восемь лишних проверок а худшем случае.
Аноним 27/03/24 Срд 22:24:55 3102571 149
>>3102556
ну это не особо влияет задачка не под бенчмарки и эта функция вызывается 5 раз, все основные мощности в другом куске
ренджовый свич еще не был рассмотрен в этой главе так что его тут быть не могло
Аноним 27/03/24 Срд 22:37:32 3102591 150
>>3102533
>а что ты тут собрался оптимизировать?
Во первых - ничего. Зачем мне оптимизировать твой код, пущай этим занимаешься ты и/или компилятор.

Во вторых, isdigit() и isalpha() для простоты.

В третьих, неоптимизирующий компилятор сгенерил бы такой говнокод, что ты бы охуел - s[p-1] на х86 выродился бы в нечто такое mov %al, (%esi,%eax, -1) и постоянно обращался бы к памяти.

Оптимизирующий компилятор выполнит обращение к памяти один раз, загонит значение из памяти в регистр и дальше будет сравнивать с регистром.
Аноним 27/03/24 Срд 22:56:47 3102623 151
image 534Кб, 846x1454
846x1454
>>3102591
>Во вторых, isdigit() и isalpha() для простоты.
на пике просто наружка твоих издигитов изальф
это уже кому какие сексуальные предпочтения по душе, кто то любит блекбоксить кто то нет

>В третьих, неоптимизирующий компилятор сгенерил бы такой говнокод, что ты бы охуел - s[p-1] на х86 выродился бы в нечто такое mov %al, (%esi,%eax, -1) и постоянно обращался бы к памяти.
чот я тут такого не увидел
Аноним 27/03/24 Срд 23:18:32 3102643 152
image.png 45Кб, 432x123
432x123
>>3102623
>чот я тут такого не увидел

Смотри внимательнее.

Как же ARM посасывает у x86 на этом примере. Загляденье.
Аноним 27/03/24 Срд 23:21:08 3102647 153
>>3102643
у тебя процентики а тут их нет
а еще я тут могу только sp регистр опознать остальное не знаю
>Как же ARM посасывает у x86 на этом примере. Загляденье.
ну и в чем же?
Аноним 27/03/24 Срд 23:28:30 3102655 154
>>3102647
>ну и в чем же?
4 инструкции вместо одной.
Аноним 27/03/24 Срд 23:30:14 3102660 155
>>3102655
покажи как ты делаешь одну инструкцию
Аноним 27/03/24 Срд 23:39:08 3102666 156
image.png 182Кб, 1166x743
1166x743
Аноним 27/03/24 Срд 23:48:26 3102678 157
image 69Кб, 1162x262
1162x262
>>3102666
а такие мувы не считаются ансейфед или типа того?

видимо никто не собирается слушать байки о том как х86 ебет арм жопой
Аноним 27/03/24 Срд 23:52:22 3102680 158
>>3102678
>а такие мувы не считаются ансейфед или типа того?
Так за этим ядро следит. Если к незамапленой странице полезет, то сгенерится прерывание, OC его перехватит и посмотрит что произошло - полезла программа в чужую память или страницы в свопе.

Если в свопе, то подгрузит страницу и свопа и перезапустит операцию, а если память чужая, то Core Dump и программа вылетела в ОС с ошибкой.
Аноним 28/03/24 Чтв 00:00:56 3102687 159
>>3102680
бля чел
твой мув это ldrsb
ты как без вычисленных оффсетов по стеку решил грузануть мувом байты? получается ты меня наебываешь вот тут - >>3102655
точно так же будешь делать свои 4 инструкции
Аноним 28/03/24 Чтв 00:05:33 3102693 160
>>3102687
>ты как без вычисленных оффсетов по стеку решил грузануть мувом байты?
Хмм. Ну да, я форшманулся. Две инструкции на ARM, одна инструкция на X86.
Аноним 28/03/24 Чтв 00:17:13 3102702 161
>>3102693
насколько я знаю разница архитектур в том что на арме интрукции одинаковой длинны по машкодам а в х86 разной
думаю листинг асма не такой уж и показатель
не получится так что твой волшебный мув по машкодам и декодингу длиннее в тактах чем мой крестьянский мув в две инструкции? вот щепетильный вопрос
вообще я хуй знает какой то оффтредовый холивар надо в асмотред идти там срать этим
Аноним 28/03/24 Чтв 03:04:04 3102760 162
>>3102702
>думаю листинг асма не такой уж и показатель
я придерживаюсь другого мнения.

Не сказать вот чтобы x86 настолько хороша, но плотность кода у неё повыше будет, чем у ARM.

Вроде мелочь, а инструкции из память чуть быстрее выбираются, чуть больше инструкций в кэш поместится.

> Вообще я хуй знает какой то оффтредовый холивар надо в асмотред идти там срать этим

Асмотред помер. RIP. А ОП опрометчиво упомянул ассемблер в названии темы, решив нагнать сюда анонов. У него почти получилось, хоть коряво и неумело.
Аноним 28/03/24 Чтв 15:35:43 3103653 163
>>3100307
Итак, нашел причину тряски
Оказывается Posix ТАК ХОРОШО написан, что под raise invalid pointer exception он имеет ввиду лишь установку флага в структуре из <fenv.h>
Аноним 30/03/24 Суб 00:19:53 3106074 164
А кто-нибудь шарит за асинхронный ввод-вывод в Linux? А то нужно скопировать файл с помощью aio_read и aio_write, а на выходе какая-то херня...
Код:
https://pastebin.com/EaiXPnUz
ЧЯДНТ?
Аноним 30/03/24 Суб 18:31:35 3106814 165
>>3106074
Ну у тебя т.к. n == 1 чисто aio_read пройдёт и программа выходит, не? Мб просто не успевает aio нихуя сделать, программа выходит
Аноним 30/03/24 Суб 18:54:08 3106846 166
>>3106814
>Ну у тебя т.к. n == 1 чисто aio_read пройдёт и программа выходит, не?
У меня же getchar в конце. Пока не нажму enter - программа не выйдет.
Аноним 04/04/24 Чтв 12:36:51 3111587 167
image.png 50Кб, 943x327
943x327
image.png 36Кб, 750x512
750x512
Аноны, чёт ничего не понимаю!
Вроде у меня везде unsigned long long, а результат всё равно - превышение предельного значения (пик 1).
Щито делать? В чём причина?
Аноним 04/04/24 Чтв 14:52:46 3111716 168
image.png 45Кб, 853x414
853x414
image.png 90Кб, 2451x820
2451x820
>>3111587
Аноны, я чутка улучшил ф-цию, но всё равное какая-то залупа происходит: величина переменной num правильная, а когда сохраняю её в массив, то он мне выдаёт превышение допустимого значения!!! Как это побороть?
Аноним 04/04/24 Чтв 16:48:06 3111822 169
>>3111716
Может это залупа, отображающая числа в режиме отладки не понимает unsigned, и рисует так как будто число signed?

У тебя там по идее должно быть 1600...00000, а вышло -8....1616

Максимальное 64-битное беззнаковое целое оканчивается на 18...1615
Аноним 04/04/24 Чтв 17:09:51 3111842 170
>>3111822
Да, анон, это, короче, мой косяк я в деббагере не увидел, что можно также unsigned выбрать.
И вообще я победил эту проблему - у меня спецификатор в sprintf был неверно указан.
Аноним 04/04/24 Чтв 21:31:31 3112085 171
image 142Кб, 2880x202
2880x202
не могу заставить себя продолжить делать K&R, уже вторую или третью неделю прокрастинирую... как найти мотивейшон, анонцы?
ладно бы какая то задача попалась сложная и поставила бы в тупик, я бы себя понял, но я даже не вникал, чисто глазами пробежался что там надо atoi() переписать и все, тупо не могу даже файлик точнуть...
Аноним 04/04/24 Чтв 22:15:46 3112121 172
>>3112085
>и поставила бы в тупик
Пиши на чистом Си, без использования ф-ций из стандартной библы, но только, если ввод/вывод, и то, можешь сам сделать эти ф-ции, используя низкоуровневые вызовы.
Аноним 04/04/24 Чтв 23:53:46 3112244 173
>>3112121
да я так и делаю
хули толку, мотивации нет говорю же
Аноним 05/04/24 Птн 00:14:30 3112258 174
>>3112244
А как ты их решаешь?
Компилируешь хоть?
Аноним 05/04/24 Птн 00:28:17 3112262 175
image 344Кб, 2878x806
2878x806
>>3112258
канешн, пишу велосипедики, конпелирую, отлаживаю, стараюсь делать для общих случаев, но юникод с разной длинной символов уже заебал костылить его так что последние только на энглюсике работают
ну листинг с пика мало чо показывает, бинари на гит не заливаются, а дебаг выхлопы и кордампы я деличу прост (хотя там то же гитигнор на наих настроен, но прост привычка подчищать всякое говное ненужное)
Аноним 05/04/24 Птн 01:06:57 3112274 176
>>3112262
>пишу велосипедики, конпелирую, отлаживаю, стараюсь делать для общих случаев

Логично. Правильно. Верно.

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

Не, в юникод тебе рано лезть. Правильно что пишешь на английском. Юникод это своя вселенная.
Аноним 05/04/24 Птн 09:19:06 3112475 177
>>3112244
>хули толку, мотивации нет говорю же
Ну тут хуууй знает, чем тебе помочь. Отдохни, отвлекись, или, если нет мотивации, то и живи дальше в говне (в скрипто-макакном высоко-уровневом мире)!!!
Аноним 06/04/24 Суб 23:46:13 3114631 178
шо такое сокет .
Аноним 06/04/24 Суб 23:54:56 3114643 179
16196567560590.png 805Кб, 1240x1080
1240x1080
>>3114631

это файл но не файл. в него пишется информация для передачи, а читается для получения
Аноним 08/04/24 Пнд 10:02:13 3116165 180
Пытался понять ошибку
Затем файл просто исчез непонятно почему и я ебанулся
:~/so$ vim lol.c
user@user-A320M-S2H:~/so$ gcc lol.c
lol.c: In function ‘main’:
lol.c:20:40: warning: passing argument 2 of ‘connect’ from incompatible pointer type [-Wincompatible-pointer-types]
20 | int result = connect(socketFD, &address, sizeof address);
| ^~~~~~~~
| |
| struct sockaddr_in
In file included from /usr/include/netinet/in.h:23,
from lol.c:2:
/usr/include/x86_64-linux-gnu/sys/socket.h:126:52: note: expected ‘const struct sockaddr
’ but argument is of type ‘struct sockaddr_in *’
126 | extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
| ^
user@user-A320M-S2H:~/so$ gcc -o lol.c c
/usr/bin/ld: cannot find c: No such file or directory
collect2: error: ld returned 1 exit status


Хуй мне кто поможет, но я ахуел, что файл просто так исчез и все что я писал
Аноним 08/04/24 Пнд 11:26:07 3116224 181
>>3116165
Ето не так. Современный гцц не съест твой файл.
Аноним 08/04/24 Пнд 12:27:25 3116259 182
>>3116165
>gcc -o lol.c c
>/usr/bin/ld: cannot find c
Ну ты почитай хоть что пишет. Не может найти файл "с".
Аноним 08/04/24 Пнд 14:02:46 3116340 183
>>3116165
>incompatible pointer type
>‘const struct sockaddr ’ but argument is of type ‘struct sockaddr_in *’
>No such file or directory
помог тебе понять

>файл просто так исчез
ну мб у тебя остался вимдамп, а может и не остался нехуй вирусы всякие писать
Аноним 08/04/24 Пнд 14:08:57 3116343 184
>>3116340
Во втором случае у него какая-то хуйня в командной строке. Ругается на неё.
Аноним 08/04/24 Пнд 14:11:31 3116344 185
>>3116343
выглядит так будто ругается на параметр с в строке
>gcc -o lol.c c
но на первый взгляд все правильно, хоть и корявенько
>gcc lol.c -o c
Аноним 08/04/24 Пнд 15:02:06 3116373 186
>>3116344
>>gcc -o lol.c c

Молись, чтобы в той директории у тебя не было файла с
Иначе твой исходник отправится в страну, откуда файлы не возвращаются. Ибо ключ -о требует аргумент (параметр).
Аноним 08/04/24 Пнд 15:11:19 3116382 187
>>3116373
>>3116344
Так-то надо мейкфайл написать.
Можно сделать это один раз, написать "дженерик" мейкфайл, который потом всегда реиспользовать для мелких проектиков типа лаб.

CC=gcc
TARGET=c
SOURCE=main.c huy.c pizda.c nebo.c allah.c

all:
$(CC) $(SOURCE) -o $(TARGET)

ну и конечно по желанию клин и ран. Всё, универсальная сборка для подобных проектов готова.
Аноним 08/04/24 Пнд 20:08:19 3116552 188
>>3116382
соглашусь с этим аноном
минималистичный тулчейн для поделок (текстовик + сборщик + линтер + тесты) это уже не только уровень, но и удобство
мейк такой же простой как и вим, чуть подрочить его и впринципе уже будет готов мейкфайлик со всеми таргетами ветвелниями параллельной сборкой флажками на тестолинтерах и прочими наваротами
потом уже можно поковырять какие нибудь грейдлы мавены если нужда есть для галеры

по изоляции приложунек я хуй знает, я ничо не юзаю никаких докеров кубернейтсов, пока что не было нужды
Аноним 12/04/24 Птн 15:16:43 3120324 189
Почему за столько лет не разработали удобную инфраструктуру под си? Чтобы удобно было собирать проект одной командой, подтягивать библиотеки из репозитория? Такое ощущение, что всё застряло на уровне 80-90-х и не развивается.
Аноним 12/04/24 Птн 21:47:36 3120623 190
Аноним 12/04/24 Птн 22:02:05 3120633 191
>>3120324
> Почему за столько лет не разработали удобную инфраструктуру под си?
Да а нахуй он нужен? Си никому не интересен кроме парочки нердов. Кроме программирования каких-нибудь PIC16 как альтернатива ассемблеру. Нерды умеют и любят пердолить конфиги. А обычным нормальным людям си нахуй не обосрался. Поэтому и удобную инфраструктуру никто не делает.
Аноним 12/04/24 Птн 22:58:07 3120658 192
Аноним 12/04/24 Птн 23:43:51 3120680 193
Аноним 12/04/24 Птн 23:59:12 3120691 194
>>3120324
>удобную инфраструктуру под си
Зиг
Аноним 13/04/24 Суб 02:16:33 3120718 195
>>3120623
Да ему всё будет неудобно.
А make - хорош.
Аноним 13/04/24 Суб 05:52:21 3120736 196
>>3120623
>>3120718
Он очевидно имеет ввиду аналог npm, pip и прочей такой хуйни, которая сама подтягивает зависимости.
Аноним 13/04/24 Суб 14:54:41 3120984 197
>>3120736
пусть себе напишет такую хуйню
pip то же на сях написан полагаю
все написано на сях
одни только питухонисты о нердах каких то говорят
Аноним 13/04/24 Суб 19:23:33 3121286 198
show(1).png 1Кб, 256x50
256x50
>>3120984

кроме го

го написан на
Аноним 15/04/24 Пнд 21:02:26 3124045 199
>>3120324
> Такое ощущение, что всё застряло на уровне 80-90-х и не развивается.
Этот о чем-то догадывается.
Аноним 15/04/24 Пнд 21:34:32 3124080 200
>>3120324
Meson уже есть, то что вы на него не перешли - ваша проблема.
Аноним 17/04/24 Срд 16:02:30 3126404 201
>>3120736
Можно деб пакеты ставить, но вообще пакеты - это зло ёбаное.
Аноним 18/04/24 Чтв 14:52:17 3127516 202
>>3079569
Когда понадобилось написать парсер, прочёл за выходные.
Аноним 18/04/24 Чтв 15:04:37 3127534 203
>>3120324
vcpkg работает и под линупсом
Аноним 18/04/24 Чтв 18:49:33 3127830 204
>>3114643
А куда тогда данные записываются/считываются при сокетном соединении?
Аноним 18/04/24 Чтв 19:10:26 3127854 205
>>3127830
В буфер в сетевой подсистеме.
Аноним 19/04/24 Птн 07:07:57 3128130 206
>>3127516
ну если прочесть = осилить
Аноним 19/04/24 Птн 14:55:52 3128661 207
Аноним 19/04/24 Птн 15:57:53 3128722 208
>>3114631
Шо такое сокет - это файлы,
Файлы, куда байты шлют сетями,
В дейтаграммах видео приходит без задержки,
Для надежной передачи сделан TCP.

Сокет - база для UNIX систем,
Для работы с сетью сокет нужен всем.
Там, где REST сервис шлет JSON,
Сокетом получается он.
Аноним 20/04/24 Суб 05:54:04 3129305 209
Как в C/C++ можно вычислять и выводить рисунки на экран без всяких opengl(через системные вызовы)?
Аноним 20/04/24 Суб 06:10:26 3129309 210
>>3129305
псевдографика/другие эйпиаи (например вулкан)
Аноним 20/04/24 Суб 08:26:40 3129343 211
>>3129305
Никак. В современных многозадачных ОС с экраном работать невозможно, это прерогатива ОС которая пользовательским приложениям такого делать не позволяет, иначе одно приложение поломает другие. Если же пишешь под DOS, там просто пишешь в видеопамять и готово, так же в DOS можно пользоваться функциями BIOS, но они тормозные.
Аноним 20/04/24 Суб 08:40:39 3129349 212
>>3129343
>это прерогатива ОС которая пользовательским приложениям такого делать не позволяет
А как тогда opengl работает?
Аноним 20/04/24 Суб 14:24:06 3129634 213
>>3129349
тыр тыр тыр тыр тыр
Аноним 20/04/24 Суб 15:43:06 3129704 214
>>3129634
Безусловно, ты, конечно, весёлый парень, но всё же - как opengl работает, если не через системные вызовы?
Аноним 20/04/24 Суб 17:34:26 3129787 215
>>3129704
Ты и сам знаешь, даже текст обрезал чтобы было удобнее жопой вилять.
Аноним 20/04/24 Суб 20:09:42 3129920 216
>>3129305
> без всяких opengl
Нет смысла игнорировать то что тебе даёт драйвер gpu.
Аноним 20/04/24 Суб 20:30:33 3129939 217
>>3129787
>даже текст обрезал чтобы
Т.е. ты знаешь как оно работает, но не хочешь говорить! Ну и как же оно работает, если не через системные вызовы?

P.S. я не знаю как это работает, от того и задаю этот вопрос.
Аноним 20/04/24 Суб 21:31:35 3129990 218
>>3129939
Библиотеки графики через системный вызов ioctl общаются с драйвером gpu.
Аноним 20/04/24 Суб 22:39:48 3130034 219
Аноним 21/04/24 Вск 05:41:43 3130199 220
>>3120324
>Почему за столько лет не разработали удобную инфраструктуру под си?
Разработали, и имя ей - UNIX. Командная строка рулит.

>Чтобы удобно было собирать проект одной командой
make и CMake в той же командной строке

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

>Такое ощущение, что всё застряло на уровне 80-90-х и не развивается.
Дух старой школы, хакерской романтики и цифрового анархизма жив только в Си. Дедушка Столлман наш учитель и вождь, а порриджам-смузизлебам из пейсбука и реддита здесь не рады.
Аноним 21/04/24 Вск 05:55:23 3130201 221
>>3129305
На низком уровне по-разному, зависит от архитектуры ОС. Например, в Linux можно записывать в файлы /deb/fb (фреймбуфер экрана) и /dev/dri (интерфейс DRI/DRM). Вот пример вывода 2D графики без библиотек, путем записи во фреймбуфер:

https://github.com/BartekLew/fblib/blob/fb-example/fbgrad.c

Библиотеки SDL, OpenGL, Vulkan и др. являются надстройками над ОС и позволяют делать это кроссплатформенно, не вникая в детали, не нужные прикладному программисту.

>>3129349
Реализация OpenGL и Vulkan предоставляется драйвером видеокарты и работает на уровне ядра. А пользовательское приложение уже вызывает OpenGL функции.
Аноним 23/04/24 Втр 11:47:34 3132647 222
Подскажите литературу по Vala
Аноним 23/04/24 Втр 12:29:26 3132699 223
>>3094012
Wchar_t не везде есть и не везде работает. Поэтому только char и utf8.
Аноним 23/04/24 Втр 13:10:06 3132785 224
>>3132699
>только char
ну не будь таким строгим, не обязательно только чары, можно и инты, а в случаях ловли ЕОФа исключительно инт
да и вообще инты как то предпочтительнее, так как у большинства машин шина четырехбайтная - меньше жонглирования = быстрее рантайм
Аноним 23/04/24 Втр 14:07:02 3132836 225
Как создать массивы гарантированной размерности элементов в 1, 2, 4 или 8 байт?
Аноним 23/04/24 Втр 14:16:22 3132845 226
Аноним 23/04/24 Втр 14:18:29 3132847 227
>>3132836
>>3132845
или ты имеешь ввиду что это длина элемента в массиве что ли?
типдеф тогда слепи себе из структуры в котором массив чаров лежит нужной длины
Аноним 23/04/24 Втр 14:37:00 3132863 228
>>3132845
А если 2 байта надо?

>>3132847
В других языках типы данных делают точной длины, поэтому можно делать массивы нужного размера, а си расплывчато. Тип может 1 байт, а может 2, иногда 4, хуй знает вообщем. Кто вообще это придумал? Неужели нельзя было сделать чёткие типы в 1, 2, 4 или 8 байт?
Аноним 23/04/24 Втр 15:12:10 3132899 229
>>3132863
Нельзя, потому что наличие таких типов зависит от системы, на которой исполняется код. А вообще смотри типы в stdint.h, если не пишешь код под что-то экзотическое.
Аноним 23/04/24 Втр 15:13:10 3132901 230
>>3132863
>Кто вообще это придумал? Неужели нельзя было сделать чёткие типы в 1, 2, 4 или 8 байт?
Нельзя, это зависит от железа. Я например имел дело с железкой с минимальной адресацией 16 бит, соответственно и char был 16 бит. Остальные языки или работают на виртуальных машинах, или это раст, работающий в тепличных условиях (не на любом говне).
Аноним 23/04/24 Втр 15:15:48 3132905 231
>>3132901
В Vala как-то сделали типы с гарантированным размером (int8, int16, int32, int64, uint8, ..., uint64), хотя это кросс-компилятор поверх обычного си.
Аноним 23/04/24 Втр 16:12:18 3133006 232
>>3132785
> ну не будь таким строгим, не обязательно только чары, можно и инты, а в случаях ловли ЕОФа исключительно инт
Я только и исключительно о представлении строк.
> да и вообще инты как то предпочтительнее, так как у большинства машин шина четырехбайтная
Отстал ты.
Аноним 23/04/24 Втр 16:16:34 3133009 233
>>3132863
>. Кто вообще это придумал?
Ричи. Он отталкивался от В, где был один тип данных.
> Неужели нельзя было сделать чёткие типы в 1, 2, 4 или 8 байт?
Нельзя было вот так вот сплеча. На пдп-11 слово было длиной 36 бит.
Аноним 23/04/24 Втр 16:41:40 3133045 234
А если я так напишу?
typedef signed char int8;
typedef unsigned char uint8;
typedef signed short int16;
typedef unsigned short uint16;
typedef signed int int32;
typedef unsigned int uint32;
typedef signed long long int64;
typedef unsigned long long uint64;
Аноним 23/04/24 Втр 16:45:15 3133047 235
>>3133045
Не изобретай велосипед. Читай, что тебе пишут. >>3132899
Аноним 23/04/24 Втр 18:07:26 3133102 236
Аноны, вопрос: Как понять с каким типом данных я имею дело? Т.е. задача такая: в зависимости от типа данных направить исполнение кода в нужном направлении? Например, при выводе на экран, т.е., в зависимости от типа данных, я должен выбрать необходимый спецификатор. Поискал в тырнете, и мне пишут, что можно использовать ф-цию typeof(), но эту ф-цию понимают компиляторы, начиная со стандарта С11. И мне стало интересно, а как до этого стандарта определяли тип данных? И какой алгоритм определения типа у ф-ции typeof()? И да, речь не идёт, допустим, о типах данных int или double, которые отличаются размером и можно ветвление построить через sizeof(), мне интересны такие моменты, как допустим long long int и double?
Аноним 23/04/24 Втр 18:33:34 3133120 237
>>3133102
Никак. Что сам написал в объявлении, с тем дело и имеешь. И typeof() тебе не поможет решить такую задачу.
Аноним 23/04/24 Втр 18:37:56 3133121 238
Хотя можешь форматную строку делать с помощью _Generic. Но это всё равно не
>в зависимости от типа данных направить исполнение кода в нужном направлении
Это просто удобная генерация кода на этапе компиляции.
Аноним 23/04/24 Втр 18:47:30 3133125 239
>>3133102
> И какой алгоритм определения типа у ф-ции typeof()?
Это не функция.
Аноним 23/04/24 Втр 21:05:32 3133260 240
>>3133120
Понял, анон, спасибо! Жаль!
Аноним 24/04/24 Срд 01:33:07 3133530 241
>>3132863
>А если 2 байта надо?
тогда >>3132847
при условии что чар однобайтный
камон мы тут не на экзотике
Аноним 24/04/24 Срд 01:57:43 3133533 242
>>3133530
>при условии что чар однобайтный
опять же чар всегда однобайтный так как чар это синоним байта на любой машине
Аноним 24/04/24 Срд 02:03:47 3133534 243
>>3133102
полагаю дженериками/макросами ветвили, ну в общем то си как раз и предполагает, что такие ветвления делаются до рантайма
прямо в рантайме нахуя если можно до? ну это примерно кейс мультиплатформенности:
ифдеф дарвин
типдеф лонг инт инт32_т
типдеф лонг лонг инт инт32_т
эндиф

ну вот нахуя нам этот кусок в рантайме вычислять? нет никакой необходимости
Аноним 24/04/24 Срд 07:58:54 3133598 244
А вы планируете переходить на более современный язык Vala?
Аноним 24/04/24 Срд 11:04:03 3133703 245
>>3133598
>Vala
Да мёртвая твоя вала, сами гномерасты говорят, что нужно всё на расте писать. Кому ещё она была нужна, не представляю.
Аноним 24/04/24 Срд 12:29:41 3133793 246
>>3133703
Но ведь раст сложный, а вала простая
Аноним 24/04/24 Срд 14:25:12 3133935 247
>>3133703
Раст не подходит:
- Большой порог входа. Вы должны освоить borrowed checker семантику с которой поставляется Rust. И он совсем не похож на парадигму C к использованию которой мы все привыкли.
- Приличный, но недостаточный набор инструментов. До сих пор нет IDE для раста. Плагины для других редакторов кода в вечной бете.
- Очень мало GTK приложений написанных на Rust, там 5 или 6 toy приложений на которые можно посмотреть, состоящих из 200 строчек кода, но ничего большого сделанного на Rust я не видел(эмм fractal, привет, он уже был в 2017)
- Медленная компиляция, что плохо для итерационного цикла разработки который вам действительно нужен при разработке GUI
Аноним 24/04/24 Срд 14:26:12 3133938 248
>>3133935
>Вы должны освоить borrowed checker семантику
ну охуеть супер сложное достижение лол
растоклоун твой раст хуйня из под ногтей
Аноним 24/04/24 Срд 14:50:04 3133959 249
>>3133598
>переходить
зачем?
это какая то психологическая болезнь - постоянно переходить на инструмент посвежее? чисто по фрейду: в детстве играл деревянными игрушками прибитыми к полу а дноклы в сегу - теперь вечно прыгаешь на все что вышло вчера. мои соболезнования
Аноним 24/04/24 Срд 14:55:54 3133966 250
>>3133959
Да, у меня не было компа до 15 лет, а до этого изучал программирование по книжкам и писал программы в тетрадках.
Аноним 24/04/24 Срд 19:55:13 3134241 251
>>3133966
>писал программы в тетрадках
А как исполнял эти программы?
Аноним 24/04/24 Срд 20:17:21 3134271 252
>>3134241
Я считал, что они все работают правильно
Аноним 25/04/24 Чтв 03:29:05 3134515 253
Можно как-то к указателю прибавлять без адресной арифметики?
Например:
int pInt = 0;
pInt = pInt + 3;
в этом случае прибавится 3
sizeof (int)
а мне нужно, чтоб прибавилось 3 и выглядело не так уёбищно:
pInt = (int)((char)pInt + 3);
Аноним 25/04/24 Чтв 03:32:40 3134516 254
image.png 20Кб, 643x136
643x136
>>3134515
звездочки отвалились
Аноним 25/04/24 Чтв 03:57:44 3134518 255
>>3134516
>>3134515
Без адресной арифметики нельзя. Можешь использовать поинтер на чары или на войды и делать сдвиги нужного типоразмера.
Но вообще хуй пойми зачем тебе нужно сдвигать на 3 байта если это поинтер на инты.
Аноним 25/04/24 Чтв 05:59:50 3134535 256
Пожалуй стоит добавить что это часть механизма переносимости сишника. На одной машине инты дефолтные четырехбайтные, а на другой вот допустим шестибайтные. В этом случае тебе не нужно парится и писать костыли чтобы вычислять нужные адреса на разных машинах. Все механики и типоразмеры уже зашиты в типс.аш и в стд либы нужной машины. Ты просто делаешь поинтер на инты и он каждый раз будет двигаться на сайзоф инта той машины на которую скомпилен. Очень удобно. Хайлевл язык. Никакой ебли с БЕ ЛЕ и размерами.
Аноним 25/04/24 Чтв 20:36:16 3135496 257
Аноним 25/04/24 Чтв 21:34:49 3135597 258
>>3134515
Ты расскажи что ты хочешь этим добиться, может есть путь попроще
Аноним 28/04/24 Вск 11:06:55 3137632 259
>>3134515
Используй union, чтобы не приводить типы. Без самой адресной арифметики никак.

union P {
unsigned char ×pb;
int ×pi;
};

union P ptr;
ptr.pb += 3; // сдвиг на 3 байта
printf("%d\n", ×ptr.pi); // взять int по адресу

(x вместо звездочек)
Аноним 28/04/24 Вск 11:11:43 3137635 260
>>3134518
>Но вообще хуй пойми зачем тебе нужно сдвигать на 3 байта если это поинтер на инты.
Мне такое требовалось для динамической кодогенерации. Указатель на int, short и т.д. - когда нужно записать параметр такого размера, указатель на байт unsigned char - когда нужно записать опкод инструкции. Еще возможно работа с видеопамятью, байты - отдельные цветовые компоненты, 4 байта - 1 пиксель. Во всех таких случаях следует использовать union.
Аноним 28/04/24 Вск 11:20:04 3137637 261
>>3134535
>На одной машине инты дефолтные четырехбайтные, а на другой вот допустим шестибайтные
Для этого нужно использовать типы из <stdint.h> - uint32_t и т.д. Они явно задают размер в 1/2/4/ 8 байтов.
Аноним 28/04/24 Вск 11:53:50 3137666 262
>>3137637
><stdint.h>
Это интринсики, задаются компилятором, а не стандартом, и зависят от машины. Естественно на машине с шестибайтным интом они будут отличаться.
Хотя конечно сейчас надо постараться, чтобы найти чтото настолько нестандартное.
https://en.cppreference.com/w/c/language/arithmetic_types
Аноним 28/04/24 Вск 13:55:08 3137832 263
>>3137666
Машину с шестибайтным словом сейчас наверно будет тяжело найти. Сейчас практически везде стандартные архитектуры: x86, ARM, PowerPC, SPARC или RISC-X. На других тоже кратная 8 разрядность. Хотя PDP-7 (на котором появился первый компилятор Си) был как раз нестандартным, 18-битным.
Аноним 28/04/24 Вск 13:57:50 3137838 264
>>3094343
поставь vs 6.0, ну и опционально плагин visual assist туда;
и то и то можешь спиздить на рутрекере;
Аноним 28/04/24 Вск 14:49:30 3137913 265
>>3098564
jit это и есть компиляция байт-кода в машинный код;
иногда это называют еще и "интерпретатор компилирующего типа" чтобы отличать от "простого интерпретатора";
тащем то в вики неплохая статья https://en.wikipedia.org/wiki/Interpreter_(computing)
Аноним 28/04/24 Вск 16:37:43 3138041 266
>>3137832
>Машину с шестибайтным словом сейчас наверно будет тяжело найти.
>>3137666
>Хотя конечно сейчас надо постараться, чтобы найти чтото настолько нестандартное.

Это было просто для примера взято с потолка. Всегда проще объяснять принципы на пальцах.

Меня вот из хардварных вопросов больше интересует почему не спроектируют шину потолще. Многоядерность есть, а широкие шины чтобы сразу по 100500 слов забирать - не, интовой достаточно, копошитесь там как нить, жонглируйте.
Аноним 28/04/24 Вск 21:46:33 3138260 267
>>3138041
Вам подарили hdl - напиши шину сам.
Богатым и знаменитым будешь.
Аноним 29/04/24 Пнд 07:57:24 3138449 268
>>3138260
Может мне самому еще и комплюктир сделать надо?
Аноним 29/04/24 Пнд 08:27:28 3138480 269
>>3138449
Виртуальный - можно, есть такой курс. Начинаешь с логических вентилей, кончаешь ассемблером.
Аноним 30/04/24 Втр 20:15:33 3140114 270
>>3138260
Эти дебилы на нём софт-процессоры делать начали.
Аноним 01/05/24 Срд 16:26:41 3141041 271
Пытаюсь собрать окамл и с в один бинарник. Но почему то когда я добавляю файл bindings.o который был получен компиляцией исходника ocaml, вся сборка начинается выжирать 100Гигов оперативки (и больше). Как так получается, что попытка добавить один объектный файл приводит к такому результату?
Аноним 01/05/24 Срд 17:30:53 3141130 272
>>3141041
Очевидо, что там ещё какие-то либы загружаюся в память
Аноним 01/05/24 Срд 17:35:15 3141140 273
Аноним 01/05/24 Срд 18:28:42 3141236 274
>>3141140
Да хуй знает, чекни объектник там же таблица символов есть чо откуда куда и зачем. Либо ошибка в ней, либо он реально дохуя референсов тащит.
мимо
Аноним 01/05/24 Срд 18:29:42 3141238 275
>>3141236
Ща попробую. Пока не очень понял что именно я там должен увидеть
Аноним 01/05/24 Срд 18:30:31 3141241 276
>>3141238
Незакрытую скобку например.
Аноним 01/05/24 Срд 18:31:42 3141244 277
>>3141238
U caml_apply2
00000054 D camlBindings
000001d0 d camlBindings__1
000001b4 d camlBindings__10
000001ac d camlBindings__11
000001a0 d camlBindings__12
00000194 d camlBindings__13
00000188 d camlBindings__14
00000168 d camlBindings__15
0000015c d camlBindings__16
00000144 d camlBindings__17
00000128 d camlBindings__18
00000048 d camlBindings__19
0000011c d camlBindings__2
00000038 d camlBindings__20
0000002c d camlBindings__21
00000020 d camlBindings__22
00000014 d camlBindings__23
00000004 d camlBindings__24
00000110 d camlBindings__3
000000fc d camlBindings__4
000000f0 d camlBindings__5
000000dc d camlBindings__6
000000d0 d camlBindings__7
0000009c d camlBindings__8
00000090 d camlBindings__9
00000000 T camlBindings__code_begin
000004aa T camlBindings__code_end
00000000 D camlBindings__data_begin
000001fc D camlBindings__data_end
00000440 T camlBindings__entry
00000220 T camlBindings__fix_union_349
000000d0 T camlBindings__flattern_type_351
00000200 D camlBindings__frametable
000000b0 T camlBindings__fun_420
00000330 T camlBindings__fun_433
00000064 D camlBindings__gc_roots
00000410 T camlBindings__ocaml_function_hello_407
000003d0 T camlBindings__ocaml_function_sum_367
00000000 T camlBindings__remove_duplicates_281
U caml_call_gc
U caml_c_call
U caml_curry2
U caml_notequal
U caml_register_named_value
U Caml_state
U camlStdlib
U camlStdlib__failwith_7
U camlStdlib__List__1
U camlStdlib__List__find_all_679
U camlStdlib__List__flatten_477
U camlStdlib__List__fold_left_521
U camlStdlib__List__length_aux_270
U camlStdlib__List__map_482
U camlStdlib__List__rev_append_308
U camlStdlib__Printf__fprintf_422
Аноним 01/05/24 Срд 18:33:19 3141245 278
image.png 178Кб, 543x928
543x928
image.png 182Кб, 543x902
543x902
Аноним 01/05/24 Срд 18:42:30 3141259 279
>>3141244
>>3141245
куча какого то нонейм говна тут вижу по циферкам которые не относятся к исполняемому коду
так что полагаю второй вариант - реально тащит дохуя референсов чтобы это твое говно на 1200 строк работало
скомпиль через раздутый своп да и все, в итоге я думаю линкер выкинет все оттуда на твои 100 гигов, это чисто какой то билдинг блоб для окемла, всяких типов хуипов и прочего говна под циферками
это лично мое мнение, я не знаю как на самом деле
Аноним 01/05/24 Срд 19:04:09 3141309 280
>>3141259
>скомпиль через раздутый своп да и все
Уже выставил своп 128 гигов. Хуй знает куда дальше. У меня всего на диске 500. Еще, конечно, до 248 попробую поднять, если наскребу где то, но он так быстро все жрет, что я до сих пор думаю, что где то ошибка
Аноним 01/05/24 Срд 19:40:11 3141409 281
1714581589497405.jpg 8Кб, 843x62
843x62
>>3141309
Вспомнил, что есть второй диск
Аноним 04/05/24 Суб 01:33:37 3144133 282
5goRu4q-rO4.jpg 116Кб, 858x536
858x536
Есть книга/сайт где от-и-до расписан современный синтаксис "C"?

А то я работая в embedded, не зная его, но вижу часто такие конструкции что как будто и вовсне не язык, а какой-то плейбук с макросами.
Аноним 04/05/24 Суб 15:36:13 3144541 283
>>3144133
ну чел, ты работаешь и не знаешь
а я знаю и не работаю
чувствуешь подвох?
врят ли тебе тут будут помогать, давай сам выгребай, удачи с наебом хозяина работодателя
а мы уже на дне
Аноним 04/05/24 Суб 19:03:47 3144851 284
Спрошу тут. Это не совсем вопрос. Но тем не менее.

Обзавёлся серверов в домашней сети. Построил на нём инфраструктуру в виртуалках.. Самое главное - gitlab. Переащил в него пару проектов. Это предыстория.

Гитлаб нндоступен за пределами сервера.
Насколько безопасно открыть его в домашнюю сеть?
А насколько безопасно сделать его доступным из Интернета?
Аноним 04/05/24 Суб 19:27:29 3144885 285
>>3144851
в сапорт гитлаба задай вопрос
Аноним 06/05/24 Пнд 00:15:46 3145990 286
Как проверить, что можно вписывать и считывать из ячейки памяти так, чтобы не полетела вся программа?

Я думаю, что вполне может быть функция, которая возвращает возможность/невозможность обращаться к ячейке памяти.
Аноним 06/05/24 Пнд 00:30:11 3146000 287
>>3145990
да очень просто проверить на самом деле
все адреса или их алиасы в виде названий переменных куда ты можешь писать/откуда можешь читать должны быть объявлены в коде заранее (декларативный язык же)
все остальные адреса и попытка записи туда это сегфолт, попытка чтения - 50/50 сегфолт
Аноним 06/05/24 Пнд 00:36:44 3146009 288
>>3145990
а касательно данных которые ты можешь засунуть в ячейку памяти заранее объявленную в коде - тут то же все просто
инфа это инфа, "ophuy" это или числа абсолютно без разницы, можешь в массив интов сунуть строку и потом вычислить сумму всех элементов
инфа это просто биты и все, они приобретают какую либо форму только когда ты их к этой форме приводишь, например напечатав на экран printf("%d\n", a); приводишь к десятичному виду

подведем итог

можешь сунуть чо угодно куда угодно если это куда находится в пихаемом сегменте твоего процесса
Аноним 06/05/24 Пнд 00:58:32 3146025 289
>>3145990
Нет, нельзя. Как ты себе это представляешь? У тебя же не просто обращение к ячейке как сам факт. А какое то действие с памятью происходит
Аноним 06/05/24 Пнд 10:12:14 3146140 290
>>3146025
Я так понимаю, что на уровне системы может быть какая-либо таблица с указанием, какому процессу какая область памяти дана.
И из этого есть мысль, что как-то можно проверить доступность ячейки.
Аноним 06/05/24 Пнд 10:16:45 3146142 291
>>3146140
В чистом С нет такого, это ОС специфичные вещи. Даже если есть, что ты с этой информацией будешь делать? Если ячейка в пространстве процесса, еще не значит, что из нее можно читать или писать
Аноним 06/05/24 Пнд 11:12:21 3146181 292
>>3145990
Ты хотя бы ОС назови.
Под Виндой дофига чего можно было делать с памятью.

Ну а так-то, в общем случае, любое обращение к незамапленной странице вызывает Page Fault прерывание, ОС его смотрит и решает что делать - подкачивать память из свопа или прибивать программу.
Аноним 06/05/24 Пнд 17:08:07 3146602 293
>>3145990
Ставишь обработчик SIGSEGV и разыменовываешь указатель. Из обработчика архитектурно-зависимым способом пропускаешь инструкцию.
Аноним 10/05/24 Птн 21:51:18 3151064 294
>>3133935
ты дибил, зайди на гитлаб гнома, там все новые гтк4 на расте делают
Аноним 11/05/24 Суб 11:03:19 3151493 295
>>3133938
>>3151064
Раньше была традиция разговаривать с пастами, теперь разговаривают с нейросетками. Прогресс, ёпт!
Аноним 11/05/24 Суб 18:05:23 3151932 296
>>3133102
_Generic

Ну это в компайл тайм

#define ncw_is_array(arg) (((void ) &arg) == ((void ) arg))


#define ncw_gui_add_field0(gui, label, data, max_len) \
ncw_gui_add_field(gui, \
label, \
sizeof(label), \
_Generic(data, char: NCW_FIELD_CHAR, \
int16_t: NCW_FIELD_INT16, \
int32_t: NCW_FIELD_INT32, \
long: NCW_FIELD_NUM, \
double: NCW_FIELD_DOUBLE, \
char *: ncw_is_array(data) ? NCW_FIELD_STR : NCW_FIELD_CHAR), \
&data, \
&data, \
sizeof(data), \
ncw_is_array(data) ? sizeof(data) : max_len \
)
Аноним 12/05/24 Вск 00:10:38 3152431 297
>>3151932
За такое надо убивать.
За такой код.
Аноним 12/05/24 Вск 00:15:42 3152438 298
>>3152431
Согласен. Но ты чел не знаешь ради какого говна я это написал. Это был жутко быдло си код, полученный путём авто конвертирования проги с кобола на си. Дальше его пилили индусы и там ваще треш был. Я там микролибу написал вот с таким дерьмом, чтобы немного улучшить ситуацию. Мне даже старшие индусы премию дали за это улучшение.
malloc, free и unix Аноним 12/05/24 Вск 21:30:08 3153470 299
Если получить кусок памяти через malloc и не отдать его перед завершением программы, этот кусок памяти освободится или будет весть занятым?
Аноним 12/05/24 Вск 22:58:56 3153560 300
>>3153470
Освободится вместе с завершением программы.
Но если ты хочешь чтобы программа завершилась корректно, а не от нехватки памяти, то так делать нельзя.
Аноним 13/05/24 Пнд 18:51:14 3154685 301
>>3151493
Сам ты нейросетка. Я глубоко изучил тему, поэтому дал развёрнутый ответ.
Аноним 13/05/24 Пнд 19:09:19 3154721 302
>>3153470
Зачем же ты принес вопрос с зачета?
>>3153560
> то так делать нельзя.
Запретить! не пущать!
Аноним 14/05/24 Втр 06:32:42 3155208 303
>>3154721
>> то так делать нельзя.
>Запретить! не пущать!
Ну ладно, можно. Но!
Так можно делать только тем, кто писал свой аллкоатор памяти и понимает как он работает. При этом не освобожать память дозволительно лишь для программ узкого класса задач, например для хитровыебанного консольного парсера каких-то документов со сложной структурой. И чтобы не стримовый был, а файлы с диска брал. Когда заведомо память не перелопнится. В общем, так можно делать только одному из миллиона, да и то не факт.
Аноним 14/05/24 Втр 08:51:22 3155266 304
>>3155208
> Так можно делать только тем, кто писал свой аллкоатор памяти и понимает как он работает.
Достаточно прочитать доки.
Более того, можно и fclose не вызывать перед завершением. Однако лысые обезьяны так делают, хотя возвращаемое значение не проверяют.
> При этом не освобожать память дозволительно лишь для программ узкого класса задач
Большинство утилит командной строки так делают или могут делать.
Аноним 14/05/24 Втр 10:56:43 3155372 305
>>3155266
>хотя возвращаемое значение не проверяют
если ты не проверяешь не значит все не проверяют
шо с ебалом, лысый бибизян?
Аноним 14/05/24 Втр 13:46:18 3155696 306
>>3155266
А можно пример таких утилит, и когда выгодно не освобождать память? Просто интересно
Аноним 14/05/24 Втр 17:00:11 3155942 307
Реально ли устроится си-разработчиком на удаленку? Или сейчас си - это только офис гараж с паяльником?
Какие типовые задачи решают на си в бизнесе?
Аноним 14/05/24 Втр 21:21:29 3156261 308
>>3155942
> Какие типовые задачи решают на си в бизнесе?
Ну вот nginx напейсан на си. Некоторым нужен странный функционал от него - пишут модули.
Аноним 14/05/24 Втр 23:19:48 3156348 309
>>3155942
Виртуализация, операционки, эмбед и легаси.
15/05/24 Срд 16:34:56 3157046 310
>>3045262
Прата точно есть. У меня у самого валяется. Читай на англ, в любом случае он нужен будет
Аноним 18/05/24 Суб 20:24:07 3160919 311
>>3155942
Много легаси: биллинг, процессинг, бангкинг. Причём, это не всегда говнокод, но очень может быть.

Например, в инотехе допиливыют опенсурс для замены майкрософтской activedirectory - samba ad, которая написана на си.

Во всяких конторах разработчиках железа используются эмулятор qemu - тоже хорошо бы мочь допилить. Им же нужно пилить ядро под linux

Про nginx - чел написал.
Аноним 19/05/24 Вск 13:01:08 3161656 312
Можно ли в си вызывать библиотеки для С++. Например, Qt?
Аноним 19/05/24 Вск 13:24:43 3161688 313
>>3161656
Можно вызывать лишь те функции, которые объявлeны как extrn "C".

Не, шаряшие пацаны могут и метод класса вызвать из Си. Но на свой страх и риск, потому что это абсолютно непереносимо между...
Аноним 19/05/24 Вск 15:11:49 3161802 314
>>3161688
Получается лучше учить С++, а не С.
Аноним 20/05/24 Пнд 00:13:31 3162392 315
>>3161802
каму ат этава лучши?
Аноним 20/05/24 Пнд 00:35:00 3162413 316
Аноним 20/05/24 Пнд 00:37:28 3162417 317
Аноним 20/05/24 Пнд 00:37:39 3162418 318
Сап, я тот анон что ебется с системой тестирования для POSIX

На данный момент дергаю с питонидзе через CDLL сишные либы и оттуда получаю функцию.
Примерно как выглядит на примере math.h - с-шный файл обьявляет test_acos(double x) { acos(x) }, компилит в либу и питон использует этот test_acos.
Такой велосипед нужен т.к. ебу где и как будет находиться libc.
Вопрос - можно ли не через обертки экспортировать тот же acos?
Аноним 20/05/24 Пнд 01:34:42 3162437 319
>>3162418
в твоем примере нет уже оберток кроме питухона ты ачём?
Аноним 20/05/24 Пнд 02:26:55 3162450 320
>>3162418
Если ты создаёшь либу, которая линкуется с libc, как ты можешь не знать где лежит libc?
Аноним 20/05/24 Пнд 12:34:48 3162753 321
Аноним 20/05/24 Пнд 22:39:01 3163502 322
попробуй ray lib для отрисовки гуи, много языков поддерживает и быстрый
Аноним 23/05/24 Чтв 22:11:32 3167145 323
image.png 264Кб, 852x1200
852x1200
В этой книге самый первый пример с Hello Wolrd не компилируется.
Позднее узнал, что она написана под древний стандарт, а текущий C 2017 уже другой.
Это ставит под сомнение идею учиться языку по этой книге, потому что дальше будет только хуже и я буду тратить время на проблемы совместимости стандартов, вместо обучения.

Есть более актуальные книги для 2017 версии языка?
Аноним 23/05/24 Чтв 23:16:07 3167235 324
>>3167145
>не компилируется
cc hello.c -ansi

там читать -то нечего особо, епрст, язык маленький, книжка тоже. код поправить(указать тип int main() и вернуть 0) пара пустяков.
c11/с17 можно по докам и интернетам нагнать

а ты пишешь как робот зубрилка какой-то, неудивительно что с таким мышлением возникают подобные вопросы
Аноним 23/05/24 Чтв 23:35:26 3167249 325
вообще не знаю кем надо быть чтобы не уметь гуглить, вкатунам уже бесплатно целые книжки дарят оффициально и без либгенов https://inria.hal.science/hal-02383654
Аноним 23/05/24 Чтв 23:44:12 3167258 326
>>3167235
Я знаю как поправить этот код. Я просто ебал в рот запоминать неактуальные конструкции говна мамонта.
Аноним 23/05/24 Чтв 23:53:24 3167267 327
>>3167235
>cc hello.c -ansi
Ещё с
>gcc test.c -o test.c-compiled -std=c89
сработало. Так понятнее. Спасибо.
Аноним 24/05/24 Птн 00:03:09 3167276 328
>>3167267
>-o test.c-compiled
Прихуел от такого именования файлов.
Аноним 24/05/24 Птн 00:13:09 3167281 329
>>3167276
Да, доебись до того что мне в голову пришло в /tmp набрать чтобы потестить
Аноним 24/05/24 Птн 00:58:50 3167307 330
>>3167276
прикольно кстати
но лично мне нравится классические .о объектники и .b бинарники
Аноним 26/05/24 Вск 17:19:54 3170048 331
Screenshot from[...].png 114Кб, 1024x1165
1024x1165
Всем привет. Кто-то может пояснить, почему значимость теряется в одном случае как и задумано после 6ой и 15ой цифры после запятой, а в другом случае на одну цифру позже?
Аноним 26/05/24 Вск 18:07:20 3170085 332
>>3167235
Не, ну вы понимаете, я весь такой умный. Да уж, были бы все такие умные как я. С таким великолепным мышлением. Эх, каким был бы мир вокруг тогда.
Аноним 26/05/24 Вск 20:46:29 3170237 333
>>3170048
акругление/проскальзывание
/нить
Аноним 26/05/24 Вск 23:51:58 3170301 334
>>3170048
Число значимых цифр одинаковое, цифра перед запятой тоже значимая.
Аноним 27/05/24 Пнд 00:33:54 3170324 335
>>3170301
Пон, я думал, что значимые только после запятой. Странно.
Аноним 27/05/24 Пнд 00:43:52 3170329 336
>>3170324
Точка плавающая. Раскладка по битам такая примерно, насколько я помню (для одинарной точности):
1 бит знак - 8 бит экспонента - 23 бита мантисса
Значимые цифры хранятся в мантиссе, кроме первого бита, он для экономии места считается всегда равным 1. Вот и получается, что 1.0/3.0 и 1.0//0.3 различаются только в экспоненте, мантисса у них одинаковая, а значит и число значимых цифр тоже. Сколько их там до и после запятой — не важно, это просто printf для кожанного мешка рисует число в привычном ему виде.
Аноним 27/05/24 Пнд 01:39:23 3170347 337
Хотя не, посмотрел ради интереса битовую раскладку, она у них совсем разная. Думаю, тут это просто совпадение, что 7 цифр значимые для обоих чисел.
Аноним 27/05/24 Пнд 16:50:56 3171027 338
>>3170347
почему совпадение? он же притефает во флоаты, экране просто куча флоатов типа
Аноним 28/05/24 Втр 00:29:34 3171456 339
>>3171027
Потому что в десятичном представлении гарантирована точность 6 знаков (для чисел одинарной точности).
Аноним 28/05/24 Втр 04:43:00 3171482 340
>>3170329
>1.0/3.0 и 1.0//0.3 различаются только в экспоненте, мантисса у них одинаковая,
Нет, поскольку экспонента двоичная, а не десятичная
Аноним 28/05/24 Втр 11:28:43 3171657 341
>>3170048
_DIG дает гарантированное число цыфер. Если ты заставляешь gcvt идти дальше, ты поручаешь мусор.
Аноним 03/06/24 Пнд 14:53:18 3178933 342
Привет всем, вынужденно надо выучить C/C++ и я не понимаю, что именно читать / смотреть / ставить. Вроде нашел Clang, что надо ставить, но читал, что там плохая связанность C и C++ кода. Собственно, реквестирую следующее:
Что читать/смотреть?
Какой-нибудь ресурс, который расскажет, как правильно C++/C код связывать с Java JNI

И почему раст сосёт по сравнению с C/C++?
Аноним 03/06/24 Пнд 15:02:15 3178946 343
>>3178933
>вынужденно надо выучить C/C++

Так не бывает. Нет такой нужды. Ты или сам учишь и выучиваешь, или твоя "нужда" это какой-то чёс.

>И почему раст сосёт по сравнению с C/C++?
Не ебу что там сосёт или не сосёт, но Си это такой продвинутый ассемблер. Когда ты долго пишешь на Си, то ты в целом хорошо представляешь в какой машинный код превратит компилятор твой исходник. Если выключена оптимизация.

А С++ это нехилое такое надмножество над Си. С массой всяких удобных, нужных, а иногда и бесползных фич.
Аноним 03/06/24 Пнд 15:04:49 3178949 344
>>3178946
Понятно, а что учить то? Можешь пожалуйста подсказать?
Аноним 03/06/24 Пнд 15:11:28 3178969 345
>>3178949
Ты сначала расскажи, для чего тебе надо это выучить. По этим языкам огромная масса информации, и их применение тоже отлчается в зависимости от нужд.
Начни пока с базы си что ли, можно вот здесь:
https://www.youtube.com/playlist?list=PLRDzFCPr95fLjzcv6nNdjMu_9RcZgIM9U
Аноним 03/06/24 Пнд 16:26:04 3179077 346
144386519319047[...].jpg 74Кб, 642x800
642x800
>>3178933
Бля ты чёт какую-то дичь пишешь.
Когда вышел раст? Назови год. И когда вышел с/с++. У них отрыв в 30 лет. Как раст может "сосать", если он проектировался уже с учётом всех косяков и граблей предыдущих языков? Если новый язык ничем не лучше старого, то на🌶 он нужен по твоей логике, а? Это даже не логично.

Ты будешь как полный бичара трахаться с окружением в этих своих с/с++. Там нужно всё пердолить руками, начиная от configure/makefile'а, заканчивая пакетным менеджером и юнит тестингом. У меня в расте уже всё подано на блюдечке. Я просто набираю cargo add и у меня устанавливаются зависимости.

В c/с++ ты будешь миллион лет гадать, почему программа крашится. Оказывается, ты в каком-то месте поставил лишнюю звёздочку. В расте же программа тупо не скомпилируется если поставить звезду не там где нужно, обратиться не к той области памяти.

Ну и плюс, у меня код лаконичнее. То что ты сделаешь на с/с++ в 1000 строк я сделаю в 500, при этом у меня будет такая же производительность. Спрашивается, и на🌶 тогда нужен твой карго культ с с/с++?
Аноним 03/06/24 Пнд 16:31:54 3179083 347
image.png 739Кб, 900x900
900x900
>>3179077
>Как раст может "сосать", если он проектировался уже с учётом всех косяков и граблей предыдущих языков? Если новый язык ничем не лучше старого, то на🌶 он нужен по твоей логике, а? Это даже не логично.
пикрил

>>3179077
>То что ты сделаешь на с/с++ в 1000 строк я сделаю в 500, при этом у меня будет такая же производительность.
пикрил х2
Я понимаю, что на хелловорлдах проблем не видно, но раст очень сильно хромает
на сложных структурах данных. Это даже сами разрабы признали, когда начали асинк в язык добавлять, да и Митник какую-то статью об этом писал.
мимошел
Аноним 03/06/24 Пнд 16:41:49 3179096 348
>>3179083
На каких конкретно "сложных структурах данных"? Это расплывчатое объяснение. Там искаропки есть HashMap, LinkedList, BinaryHeap. Можно поставить petgraph для работы с графами. Для линейной алгебры ndarray, nalgebra. Для pipeline'ов есть polars.

Что ты можешь сделать такого, чего я не могу на расте?
Аноним 03/06/24 Пнд 17:06:33 3179145 349
>>3178949
> а что учить то?
Чтобы было интересно - учи операторы ^ & | ~
Загляни в битовые поля.
Почитай где может быть расположена переменная в памяти - что такое стэк, куча, сегмент данных.

Как-то так. Но я не настаиваю, это лишь один из путей для изучения Си и С++.
Аноним 03/06/24 Пнд 17:07:53 3179147 350
>>3179096
>Что ты можешь сделать такого, чего я не могу на расте?
Найти работу.
Аноним 03/06/24 Пнд 17:13:30 3179154 351
image.png 15Кб, 563x161
563x161
>>3179147
Это достойно скриншота. Ржал аки конь.

Но растеры сами виноваты - они не в ту сторону воюют и не в те ряды записываются. Стали бы на сторону Света и Силы - катались бы как сыр в масле.
Аноним 03/06/24 Пнд 17:52:11 3179171 352
cdd2fa5f248c9ea[...].jpg 15Кб, 300x200
300x200
>>3179147
>Найти работу.
Это не аргумент. Сиюминутные хотелки рынка не в счёт. Рынок как ветер. Он сегодня в одну сторону дует, а завтра всё поменяется и станет популярным. Настроение завтра поменялось, снова всё бросаем и переучиваемся на раст.

Раст не отвечает:
- За твою зарплату
- За количество вакансий на рынке
- За количество конкурентов
- За подсознательные страхи кабана

Не вина раста что кабаны решили перебздеть АВДРУХЧО и делать как диды делали.
Не вина раста что у кого-то меркантильные интересы и его больше интересует своя жопа в тепле, а не качества языка.

Так можно про что угодно сказать:
- Матлаб хуёвый потому что на нём нельзя найти работу
- R хуёвый потому что на нём нельзя найти работу
- Не используй языкнейм, потому что васян/сосед маминой подруги его не любит
Ну и так далее.
Аноним 03/06/24 Пнд 17:57:23 3179177 353
2024-05-25-mixn[...].jpg 81Кб, 640x633
640x633
>>3179096
>Что ты можешь сделать такого, чего я не могу на расте?
Пройти сертификацию ПО в гражданскую авиацию в любой стране мира.
Аноним 03/06/24 Пнд 17:59:12 3179181 354
>>3179177
>Пройти сертификацию ПО в гражданскую авиацию в любой стране мира.
>в гражданскую авиацию
На🌶 она мне нужна?
Аноним 03/06/24 Пнд 18:03:54 3179188 355
>>3179077
>То что ты сделаешь на с/с++ в 1000 строк я сделаю в 500
А я помню всё в точности до наоборот! Помню как в нашем треде был обильно обоссан один растопетучило, который выкатил длиннющую ООП-парашу на расте, которая должна была имитировать работу с вектором из плюсов.

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

Возможно, кстати, что это был ты, потому что настолько отбитых ебанатов, которые продолжают упорствовать на своём, даже после того, как его обильно и с пруфами обоссали, крайне мало в мире. потому я надеюсь, что сейчас тебе причиняют ужасную боль флешбеки с того, очень позорного для тебя дня, и поэтому ты в скором времени свалишь обратно в свой петушатник
Аноним 03/06/24 Пнд 18:13:55 3179204 356
Аноним 03/06/24 Пнд 18:31:18 3179220 357
>>3179181
Тебе не хватает денег на авиарейсы? Ты тупое нищее говно, которое никому нахер не нужно.
Аноним 03/06/24 Пнд 18:33:05 3179224 358
>>3178969
Мне надо сделать апи для джавы, чтобы джава хоть как-то могла работать с ui. Текущие библиотеки не устраивают, поэтому надо портировать условное апи Dear ImGui на джаву. Воооот... В команде в данный момент есть 2 человека помимо меня на эту задачу, но я сам вообще никогда с С не работал, только на джаве с котлином писал
Аноним 03/06/24 Пнд 18:36:32 3179231 359
>>3179145
Да, спасибо, почитаю.
Аноним 03/06/24 Пнд 18:39:43 3179239 360
>>3179204
Тем не менее исторический факт!
Аноним 03/06/24 Пнд 18:41:57 3179242 361
Аноним 03/06/24 Пнд 19:23:11 3179258 362
>>3179242
Да паебать на твои алгоритмы. У с++ искаропки нет:
- Нормального пакетного менеджера
- Нормального линтера
- Средств для unit-тестирования
- Средств для генерации документации
и так далее

То есть ГОЛОЕ ОКРУЖЕНИЕ.

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

Комьюнити у с++ ДОХЛОЕ. Любая сраная библиотека/фреймворк последний раз обновлялась 5-8 лет назад. И лежит где-нибудь в SVN-репозитории на SourceForge (как будто кто-то ещё помнит ёбанный sourceforge).
Аноним 03/06/24 Пнд 20:40:14 3179370 363
>>3179258
>есть со структурами ебля
>нет, ебли
>вот держи
>РЯЯЯЯ, НИНУЖНА
Понял.

>Комьюнити у с++ ДОХЛОЕ. Любая сраная библиотека/фреймворк последний раз обновлялась 5-8 лет назад.
Если либа не обновляется и не ломается каждую неделю, то комьюнити мертвое, правильно понимаю? Вариант того, что либа имеет финальную форму для решения задачи даже не рассматривается, верно? Веб-макаки as is.

>То есть ГОЛОЕ ОКРУЖЕНИЕ.
Да, но это особенности системной разработки и швабоды. NPM-like говну и вендорлочному тулингу здесь не место.
Вот в этом и основная проблема раста, что на бумаге заявляется одно, а на практике происходит совершенно другое. Люди, которые не занимаются системной разработкой приходят со своей библией и начинают все перестраивать. В раст-сообщество в основном приходят макаки с веб-параши/прочих скриптух, которые никогда даже не писали на Си и начинают лепить говно, повторяя корпоративную методичку. По этой же причине на расте перенаписано тысячи мокрописек для вывода ЛГБТ текста в терминал и всякие копровебсерверы, но нормальных системных решений так и не нашлось. И все эти пакеты сырые с версиями 0.0001, которые никогда не станут нормальными, потому что макаки не привыкли делать готовые решения, они привыкли срать, забывать и снова срать. Но зато сообщество живое да, пару сотен очередных лефтпадов не помешает.
Как думаешь, почему тот же zig привлекает к себе больше системных программистов чем раст даже находясь на версии 0.000001?
Аноним 03/06/24 Пнд 20:45:14 3179376 364
>>3179370
>они привыкли срать, забывать и снова срать
Чёт проиграл с этого речевого оборота.
Аноним 03/06/24 Пнд 20:45:23 3179377 365
>>3179370
Лол, блядь, даже в вашем треде эта тема поднималась >>3179043 →
ЧДТ - раст это больше социальное движение как БЛМ и прочие мутанты, нежели что-то технократическо-разумистическое.
Аноним 04/06/24 Втр 02:29:29 3179531 366
>>3179258
Прости, дружище, что написал такой эмоциональный текст с оскорблениями. Не хотел, честно, просто день был хреновым, что конечно же не является оправданием такого антисоциального поведения.
А что касается сабжа, то в системной разработке есть некоторые правила, которые придуманы дедами-пердунами не просто так, а являются прямым следствием от работы с предметной областью. В данном случае, модель разработки прикладных/веб приложений не совсем гладко ложится на системное и низкоуровневое программирование.
Также советую оценивать вещи с инженерной точки зрения и точки зрения системного подхода, задаваясь вопросом почему было сделано так, а не как-то иначе. Конечно, не все историческое решения были самыми эффективными и многие из них можно улучшить, но понимание этих моментов также необходимо при оценке вещей. Не стоит решать эмоциями и не стоит слушать говорящие головы с методичками.

анон->>3179370
Аноним 04/06/24 Втр 06:07:09 3179610 367
>>3178946
>Си это такой продвинутый ассемблер
Нет.
>Когда ты долго пишешь на Си, то ты в целом хорошо представляешь в какой машинный код превратит компилятор твой исходник. Если выключена оптимизация.
))
Аноним 04/06/24 Втр 06:08:46 3179611 368
>>3178933
C++ != C, для ентри вката в си норм книжка у сикорда.
>И почему раст сосёт по сравнению с C/C++?
Если ты совсем нубас, то лучше вкатывайся в раст.
Аноним 04/06/24 Втр 09:40:42 3179669 369
>>3179611
Не, я не совсем хлебушек, просто никогда с системным программированием не связывался.
И спасибо за книжку, почитаю
Аноним 04/06/24 Втр 11:41:17 3179797 370
Аноны, а как мне отобразить в gdb участок памяти, который у меня отведён под связный список, чтобы наблюдать, что происходит с этим связным списком?
Аноним 04/06/24 Втр 13:29:57 3179964 371
>>3179797
Тебе дали Visual Studio для этого. Выносишь платформонезависимую часть в отдельную сущность, пишешь тесты для неё и отлаживаешь в IDE. Затем переносишь код на целевую платформу.

Это самый короткий, лёгкий и правильный путь.

А gdb? Ну он может помочь когда программа падает. Компиляешь с отладочной информацией, а как упала - смотришь стек. Там обычно сразу видно где и почему упала.
Аноним 04/06/24 Втр 14:28:28 3180111 372
>>3179964
Ладно, анон, спасибо за ответ, но я уже разобрался!

>Тебе дали Visual Studio для этого. Выносишь платформонезависимую часть в отдельную сущность, пишешь тесты для неё и отлаживаешь в IDE. Затем переносишь код на целевую платформу.
Да, анонче, возможно ты прав, но сейчас для меня это выглядит слишком сложно, потому что я только вкатываюсь в алгоритмы и до того уровня, что ты описал мне ещё пердолить и пердолить.
Кстати, а посоветуй гайды для освоения VS, а то я чёт потыкался в него, потыкался и понял, что это очень сложно, и решив, что попробую изучить его по ютубу, не нашёл ничего годного кроме, как гайдов для верстальщиков веб-страниц. Буду очень благодарен, если ткнёшь меня мордочкой в годный гайд (ютуб/книга/набор статей) по VS.
Аноним 04/06/24 Втр 14:45:00 3180138 373
>>3180111
>Кстати, а посоветуй гайды для освоения VS,

Не, не знаю гайды. Только есть два VS - VS Code и VS Community Edition. Вот я о втором толкую.

Там всё просто - создаёшь проект (для вката неплохо консольный), добавляешь туда свои исходники линуксовые. Они сразу не компилятся. Поэтому делаешь

#ifdef _WIN32
// Здесь инклуды и макросы для Виндовс
#else
// Здесь инклуда и макросы для Linux
#endif

Можно ещё и макос добавить, она хоть и POSIX-совместимая, но на сложных проектах чудеса бывают.

В общем, правишь пока не скомпилится. Затем клавиша F10 и началась пошаговая отладка.
F9 - точка останова. F5 - исполнять до следующей точки останова.
Shift+F9 - продвинутый инспектор объектов.
Задержал мышку на переменной - видишь её значение. Если переменнная сложный объект - можно посмотреть его поля. Для списков самое масло - можно вот так в процессе исполнения лацить по спискам - IDE это делает великолепно.
Аноним 04/06/24 Втр 18:38:27 3180442 374
>>3180138
Анон, спасибо, что таки замотивировал снова попробовать VS Code! Действительно там очень удобно наблюдать за связными списками! Только я пока ещё пердолюсь с тем, что не могу просмотреть область памяти под массив, который получаю через malloc, т.е. VS показывает мне лишь первый элемент, а остальное хуй! В gdb я мог через команду "x/5dw arr" глянуть на область памяти размером в 5 "машинных слов", которая выделена под arr, а в VS это какой-то пердол. Я в прошлый раз, кстати, и бросил VS, потому что так и не допёр как я это могу просмотреть. Может ты знаешь решение?
Аноним 04/06/24 Втр 21:04:44 3180596 375
image.png 189Кб, 1431x868
1431x868
>>3180442
Вот красным обвёл - это меня выводи окно с дампом памяти.

Когда окно выведешь, у него будет заголовок с адресом памяти - мышкой туда перетаскивай например перменную-массив и увидишь что там в памяти.
Там ещё размер элементов можно переключать - 8, 16, 32, 64 бита.
Аноним 05/06/24 Срд 07:58:05 3180955 376
>>3180596
Спасибо, анон! Правда в VS Code это всё сильно отличается - там надо пердолиться с .json файлами, чтобы объяснить IDE как именно должна проходить отладка. Сегодня продолжу разбираться с VS Code, если опять встряну, то тогда перекачусь на VS Community.
Аноним 05/06/24 Срд 08:25:38 3180962 377
>>3180955
>>3180442
Отладка отладчиком это вообще-то крайнее средство.
Лога и тестов достаточно в большинстве случаев.
Аноним 05/06/24 Срд 08:33:31 3180965 378
>>3180962
Ну не знаю... Мне нравится "ковырятся" с отладчиком, т.е., изучая алгоритм, изменять прогу и смотреть где что и как меняется, конечно, чаще это можно в голове всё просчитать, но иногда без отладчика никак не обойтись.
Аноним 05/06/24 Срд 08:38:45 3180968 379
>>3180965
Понимаю тебя.
Однако, отладчик он не оставляет артефактов, которыми можно воспользоваться еще раз. А лог и тесты - оставляют. Потом если что-то сломается в будущем они тебе сразу покажут.

Короче, с отладчиком это как на слух послушать что-то, а с логом-тестами как будто записал конспект сказанного.

В целом, твоё дело конечно, но вот мой совет такой был.
Аноним 05/06/24 Срд 09:29:59 3181000 380
>>3180968
Понял, анон! Буду стараться идти в сторону тестов, а то чёт не ты первый мне это советуешь.
Аноним 05/06/24 Срд 11:06:38 3181147 381
>>3181000
Еще небольшой совет.

Есть практика вводить флаг NDEBUG
И потом места вызовов тестов обрамлять
#ifndef NDEBUG
... тут вывод в лог или тестов ...
#endif

И этот флаг является стандартным, его еще понимают ассерты. Регулировать флаг можно мейком -DNDEBUG как-то так.

Почитай про это поточнее, я так - навскидочку рассказал.
Аноним 05/06/24 Срд 11:56:13 3181201 382
Обьясните как произошла эволюция языков в том плане, что си не умел в обьекты, а потом все языки стали ООП. Чего не хватало на тот момент
Аноним 05/06/24 Срд 12:10:58 3181212 383
>>3181201
ООП ничего толком нового из себя не несёт, но зато его можно было легко впарить менеджерам. "Вот смотрите у нас есть класс фигура, мы можем унаследовать от неё классы квадрат и и круг и у них будет одинаковый метод посчитать_площадь...", буэээээ.
Аноним 05/06/24 Срд 13:07:13 3181266 384
>>3181201
Тогда придумали язык Smalltalk и обосновали им ООП.
Аноним 05/06/24 Срд 16:43:07 3181501 385
сижу на екзамене спрашивают что такое (char)38 чат помогите
Аноним 05/06/24 Срд 16:51:47 3181504 386
Аноним 05/06/24 Срд 17:15:32 3181530 387
Аноним 05/06/24 Срд 17:16:11 3181532 388
>>3181501
Ascii таблицу выучить просят что ли? Что за шарага?
Аноним 05/06/24 Срд 17:20:02 3181537 389
image.png 327Кб, 2048x1424
2048x1424
>>3181532
Да. А российскую заставляют запоминать в кои-8R, cp866, windows-1251 и utf-8

Вместо азбуки Морзе.
Аноним 05/06/24 Срд 17:28:41 3181546 390
>>3181501
Ответы преподу покажи обязательно.

И пусть он спросит у тебя на какую величину увеличивается адрес указателя на структуру при инкременте этого указателя. Если ответишь, то молодец.
Аноним 05/06/24 Срд 17:31:57 3181549 391
Аноним 05/06/24 Срд 17:33:48 3181551 392
>>3181201
Си умеет, только на костылях. Ну типа как в Линукс все является файлом. Ооп языки добавили чтобы меньше возможностей было выстрелить в ногу.
Аноним 06/06/24 Чтв 16:11:01 3182935 393
>>3181551
>Ну типа как в Линукс все является файлом.
так это не костыль, а единственный ахуенный концепт
костыль это как раз обратный подход, мол хуитка 1 это файл а хуитка 2 это чот другое пердолься как то там сам
Аноним 06/06/24 Чтв 18:16:56 3183029 394
>>3182935
Это была попытка юниксвея, соединять всё со всем, но юниксвей обосрался, Так что вот, просто осколок обосравшейся концепции. Нет ничего хорошего когда разные вещи выглядят одинаково, из за этого они плохо работают и искажают мышление тех кого по этому говну с нуля учат.
Аноним 06/06/24 Чтв 18:26:33 3183037 395
>>3182935
Ты жопой читаешь. Когда у тебя все файл - это полиморфизм. Когда тебе не особо нужно знать, как этот файл внутри устроен - это инкапсуляция. Когда внутри все эти файлы имеют общую структуру из указателей на функции - это наследование.
Это ооп, но реализованный на костылях, т.к. не поддерживается искаропки.
Аноним 06/06/24 Чтв 18:27:41 3183039 396
>>3182935
Ну и ты сам подтвердил, что ооп - охуенный концепт.
Аноним 06/06/24 Чтв 20:51:51 3183184 397
Аноним 07/06/24 Птн 01:45:43 3183338 398
>>3178933
Мне нравится книжка Прата по C.
Аноним 07/06/24 Птн 02:48:11 3183350 399
>>3182935
Это примерно как автомобиль является автомобилем, велосипед является автомобилем и пешеход до кучи является автомобилем. Ещё зачем-то канализационный люк является автомобилем и белый шум тоже автомобилем является.
Поехали.
Аноним 07/06/24 Птн 02:51:29 3183351 400
>>3180968
Это вас в си так учат? Отладчик не нужен, у меня нет времени ебаться с ним, лучше ещё высру логов в консоль. Что? Проебался с указателей и высрал в лог сегфолт? Это же очевидно, как это решить, правда придётся опять полчаса всё перекомпилировать.
Аноним 07/06/24 Птн 02:52:57 3183352 401
>>3183350
я как раз про это и говорю, что я та не думаю
но вы продолжаете один и тот же принцип и базис прикладывать к другим сферам, а выходит говно
всё файл - ахуенно
всё объект - говно
всё автомобиль - шизоидный бред
теперь ясно?
Аноним 07/06/24 Птн 03:53:43 3183361 402
>>3183351
Это линукс так учит. Есть только калсолька для логов, гуёв для отладчиков не завезли. так что решение проблем как всегда: "НИНУЖНО!"
Аноним 07/06/24 Птн 04:02:55 3183364 403
>>3183352
>всё объект - говно
Не все, а все кроме функций:
https://en.cppreference.com/w/c/language/object
Нихера язык не знает, а что-то вякает. Ты же достаточно трезвый, чтобы понять что это стандарт си, а не крестов?
Аноним 07/06/24 Птн 04:14:59 3183369 404
>>3183364
хватит передергивать хуйлуша оопэшная
ооп кал, сынок
запомни
Аноним 07/06/24 Птн 04:24:51 3183371 405
>>3183369
>ооп кал, сынок
Тебя так напрягает передача this в функцию?
Тебя так напрягает таблица виртуальных методов?
Да?
Аноним 07/06/24 Птн 07:13:12 3183409 406
>>3183371
Нет. ООП это не указатели и таблицы, а парадигма программирования. Напрягают программы в виде лапши из классов с наследованием.
Аноним 07/06/24 Птн 08:55:11 3183441 407
>>3183351
Да, это так учит Керниган и Ритчи - создатели языка Си.
Какие-то проблемы?

Кстати, дебаггер для девочек и геев.
Аноним 07/06/24 Птн 09:55:55 3183481 408
>>3183351
Это какие-то "староверцы", не слушай их! Хз, может быть, конечно, правильно будет всё обмазывать тестами и логами, но, на мой взгляд, правильно это будет делать тогда, когда ты уже знаешь правильное поведение того алгоритма, который ты используешь. Но когда ты только изучаешь, то дебагерр это мастхэв! Дебагерр, особенно тот, который имеет мощную гуи, ускоряет твоё обучение. Хз, я чёт столько месяцев пердолился с вимом, гдб, ddd, edb (дизассемблер), сам писал мэйкфайлы, когда писал проги, состоящие из многих модулей, что сейчас, пропердолившись с VS Code неделю, и изучив cmake, я просто получаю удовольствие от пользования этой прекрасной программы. Кайфую от того, что у меня всё в одном окне, ёпту бля!!! Мне теперь не надо прыгать по терминалу, чтобы что-то сделать!!!! Да, я умею всё это делать и в терминале, это, конечно, мастхэв для системного программирования, но всё же, когда у тебя всё в одном окне это очень удобно.

Я такое же удовольствие получал, когда после нескольких месяцев изучения и кодинга на асме, я перешёл на Си. Эти удовольствия эквивалентны!!! Конечно, когда я стану крутым программистом, и вкачусь в системное программирование на ставку, то, тогда и можно будет продолжить пердолиться в терминале, виме, гдб, с тестами, с логами... А сейчас, извольте, алгоритмы я продолжу изучать в VS Code.
Аноним 07/06/24 Птн 11:01:25 3183523 409
>>3183481
Ассемблерный код прикольно прогонять в отладчике.
На уровни Си уже не нужно.
Аноним 07/06/24 Птн 15:06:09 3183746 410
>>3183409
Ты сгущаешь краски - современные плюсовики больше дрочат на шаблоны и синтаксический сахар. И во многих случаях используют десятки сторонних библиотек, как и все остальные.

Сама же парадигма ООП в стиле С++ идеальна - она обратно вытекает из Си, понятна, потому что программист понимает где и как расположен объект в памяти и т.д. и т.п.

Более того, абстрактные классы это идеальное описание интерфейсов.

В общем, мне лениво расписывать прелести ООП, но если ты понимаешь как устроены объекты, при этом если начаниешь программу с этапа проектирования, а не кодирования, то объекты это очень годная вещь.
Круче только субъекты.

Вот в качестве шутки "идеальная программа" на С++

#include <hiscoollib>

int main(int arrc, char * argv[])
{
HisCoolClass myprog(argc, argv);
return myprog.Run();
}
Аноним 07/06/24 Птн 15:16:11 3183752 411
>>3183481
>не слушай их!
>когда я стану крутым
а кого слушать, тебя что ли?
Аноним 07/06/24 Птн 15:45:39 3183772 412
>>3183752
Слушай всех - их, меня, своё сердце, птичек, звук долбящихся в анус педиков, сигнализацию, крик бабушек...
Слушай жизнь, анон!
Аноним 07/06/24 Птн 15:50:39 3183777 413
Зачем вы себе мозги ебете? Просто пишите код как вам нравится и решайте свои проблемы. Чем больше кода написано, тем лучше.
А если вам это не нравится, то какой в этом смысол?
Ну и по советам величайшего не забываем трогать траву.
https://youtu.be/-QxI-RP6-HM?si=uRGffJYV7m1ALp-I
Аноним 07/06/24 Птн 16:07:11 3183787 414
>>3183746
>Вот в качестве шутки
Это не шутка, а ошибка, серьезная проблема ООП.
Программы не ложатся на ООП, на ООП ложатся библиотеки, потому что библиотека это не одно целое, а лишь набор маленьких, простых, и главное самодостаточных элементов. ООП библиотеки действительно красивы и удобны, но для программ это не работает. Программа - не набор самостоятельных хуевинок, а одна целая система из запутанного клубка перекрестных ссылок где всё зависит от всего, никакой простоты и разрозненности. Попытка инкапсулировать куски программы приводит к нечитаемой дрисне из бесконечно разрастающихся деревьев.
Аноним 07/06/24 Птн 16:08:30 3183788 415
>>3183523
>Ассемблерный код прикольно прогонять в отладчике.
>На уровни Си уже не нужно.
Два чаю. Просто держишь всю память в голове, и идёшь построено по листингу.
Аноним 11/06/24 Втр 11:31:20 3187619 416
k;double sin()
,cos();main(){float A=
0,B=0,i,j,z[1760];char b[
1760];printf("\x1b[2J");for(;;
){memset(b,32,1760);memset(z,0,7040)
;for(j=0;6.28>j;j+=0.07)for(i=0;6.28
>i;i+=0.02){float c=sin(i),d=cos(j),e=
sin(A),f=sin(j),g=cos(A),h=d+2,D=1/(c
h
e+fg+5),l=cos (i),m=cos(B),n=s\
in(B),t=c
hg-f e;int x=40+30D
(lhm-tn),y= 12+15D(lhn
+t
m),o=x+80y, N=8((fe-cdg
)
m-cde-fg-l dn);if(22>y&&
y>0&&x>0&&80>x&&D>z){z=D;;;b=
".,-~:;=!
#$@"[N>0?N:0];}}/*#!!-*/
printf("\x1b[H");for(k=0;1761>k;k++)
putchar(k%80?b[k]:10);A+=0.04;B+=
0.02;}}/*####*!!=;:~
~::==!!!
!!!==::-
.,~~;;;========;;;:~-.
..,--------,*/

пробовал запустить этот бублик в консоли, но не могу понять, какое разрешение консоли ставить что бы кадры плавно сменяли друг друга, какое бы не ставил, всё равно получаются разные куски бублика. а чистить консоль я умею только через system("cls"), но тогда картинки подвисают заметно
Аноним 11/06/24 Втр 16:02:39 3188041 417
>>3187619
а ты попробуй этот бублик написать больше профита получишь чем от бездумной копипасты
Аноним 11/06/24 Втр 16:43:16 3188126 418
>>3188041
я пробовал квадратик вращать в консоли, но у него так же кадры сменяются неравномерно, так что неважно что именно крутить
Аноним 11/06/24 Втр 17:23:23 3188202 419
>>3188126
Какой терминал используешь?
Аноним 11/06/24 Втр 17:46:38 3188236 420
>>3188126
значит ты используешь медленные методы вывода на консоль
используй быстрые
чем ближе к зашитому в компилятор путчару тем быстрее
Аноним 11/06/24 Втр 19:11:30 3188339 421
>>3188236
>чем ближе к зашитому в компилятор путчару тем быстрее

Как же больно это читать...

int d = open("/dev/tty", O_RDWR);
write(d, " НЕ ПИШИ ТУТ БОЛЬШЕ\ r\n", 42);
Аноним 11/06/24 Втр 20:00:44 3188415 422
>>3188339
повторяю
чем ближе к зашитому в компилятор путчару тем быстрее
Аноним 12/06/24 Срд 10:26:51 3188868 423
>>3188415
Как узнать, что там зашито?
Аноним 12/06/24 Срд 14:01:52 3189043 424
>>3188868
дизасемблировать бинарь с этой хуйней? да сискол там зашит, как и на врайте, ниже уже нихуя нет
а вот выше есть макрообертки всякие, путсы принтефы, они уже помедленнее
Аноним 12/06/24 Срд 15:06:12 3189094 425
>>3189043
Во времена MS-DOS можно было сделать ещё быстрее, путём записи сразу в видеопамять, минуя все медленные вызовы ОС или биоса.
Аноним 12/06/24 Срд 17:19:03 3189235 426
>>3189094
В винде тоже можно работать с буфером консоли.
Аноним 13/06/24 Чтв 08:33:35 3189887 427
>>3188236
ещё раз повторяю
проблема не в том, что медленно выводится, а в том, что следующая каринка неправильно заменяет предедущую, когда строка идёт вниз, какое бы разрешение консоли не ставил, проблема остаётся
Аноним 13/06/24 Чтв 12:12:00 3190120 428
>>3189887
Какой терминал используешь?
Аноним 13/06/24 Чтв 14:27:42 3190257 429
программирование.mp4 9155Кб, 640x360, 00:02:19
640x360
Встретил такую конструкцию:

static fd_table_t s_fd_table[MAX_FDS] = { [0 ... MAX_FDS-1] = FD_TABLE_ENTRY_UNUSED };

Понятно что это инициализация, но где прочитать про этот синтаксис с "..." (тремя точками)? Нагуглить не могу Мне это нужно потому что я пишу описание грамматики
Аноним 13/06/24 Чтв 14:33:53 3190262 430
image.png 15Кб, 958x524
958x524
>>3190120
а какой ещё бюывает?
Аноним 13/06/24 Чтв 14:48:45 3190270 431
Аноним 13/06/24 Чтв 14:53:31 3190280 432
Аноним 13/06/24 Чтв 15:14:33 3190304 433
>>3190270
Спасибо, добавил

Думал это вообще способ присваивания к массивам, а оно только в инициализации дозволено
Аноним 13/06/24 Чтв 22:28:16 3190797 434
>>3190262
Нормальных эмуляторов очень много. Не знаю правда, какие есть альтернативы для твоей игровой прошивки. wincmd — это косплей на терминал. Полагаю, что он как-то буфферизует вывод и из-за это рвёт тебе изображение.
Аноним 13/06/24 Чтв 23:31:56 3190838 435
>>3190797
баш точно есть на масдаях, но там надо будет подтягивать пути в окружение на всякие компилеры и порчий софт по типу мейков
мимо
Аноним 14/06/24 Птн 00:45:31 3190863 436
17102482959673.png 1712Кб, 1024x1024
1024x1024
>>3190270
А про доллар на конце имени переменной что скажете?

/ Initialize the stack frame. /
extern uint32_t __global_pointer$;

Тоже какая-то хрень непонятная. Отсылка к скриптe линкера?
Аноним 14/06/24 Птн 00:45:59 3190865 437
>>3190838
>баш точно есть на масдаях

Bash это не терминал, а шелл
Аноним 14/06/24 Птн 01:00:08 3190869 438
>>3190863
>
>Тоже какая-то хрень непонятная. Отсылка к скриптe линкера?

Нашёл сам: тоже расширение GCC - он позволяет использовать доллар внутри имён переменных
Аноним 14/06/24 Птн 01:34:28 3190873 439
>>3190865
в чем разница? оболочка командной строки/эмулятор терминала
живых терминалов наверное даже в at&t нету
Аноним 14/06/24 Птн 13:35:08 3191277 440
Аноним 14/06/24 Птн 14:53:58 3191328 441
>>3191277
>И нахера это надо?

От OpenVMS пошло

А мне это надо потому что я пишу парсер C в AST
Аноним 14/06/24 Птн 14:54:31 3191329 442
>>3190873
>в чем разница?

Терминал это терминал, аналог вот этого аппаратного живого терминала

А шелл это программа которая с тобой в диалог вступает через этот терминал
Аноним 14/06/24 Птн 15:25:28 3191356 443
>>3191329
>аналог вот этого аппаратного живого терминала
и что же делает ентот ваш аналох? что то иное?
Аноним 14/06/24 Птн 15:46:00 3191384 444
>>3191328
>я пишу парсер C в AST
На чем?
Аноним 14/06/24 Птн 15:49:54 3191392 445
Алсо тебе тогда проще взять синтаксис из стандарта, там все расписано: как формируется термы, выражения и тп.
Аноним 15/06/24 Суб 00:33:47 3191771 446
>>3191328
>А мне это надо потому что я пишу парсер C в AST
Все уже написано давно
github.com/antlr/grammars-v4/blob/master/c/C.g4
Аноним 15/06/24 Суб 18:27:51 3192334 447
>>3191392
>проще взять синтаксис из стандарта
>>3190869
>расширение GCC
Аноним 15/06/24 Суб 18:28:37 3192336 448
>>3191771
>github.com/antlr/grammars-v4/blob/master/c/C.g4

Мне проще, я много что пропускаю из-за ненадобности, я ж не компилятор пишу
Аноним 15/06/24 Суб 18:28:58 3192338 449
>>3191384
>>я пишу парсер C в AST
>На чем?

На PEG
Аноним 15/06/24 Суб 18:29:34 3192340 450
>>3191356
>>аналог вот этого аппаратного живого терминала
>и что же делает ентот ваш аналох? что то иное?

Принимает по виртуальному каналу буковки и рисует в окне, и наоборот
Аноним 15/06/24 Суб 19:40:46 3192447 451
А по какому адресу хранится название переменной? Или оно нигде не хранится и удаляется при компиляции?
Аноним 16/06/24 Вск 11:58:48 3192940 452
Объясните, почему имя массива это именно адресная константа, а не переменная? Чем имя массива отличается от поинтера на строковый литерал, к примеру? Почему в одном случае мы можем менять значение поинтера, а в другом нет?
Аноним 16/06/24 Вск 12:42:29 3192962 453
image 141Кб, 1950x1358
1950x1358
>>3192447
Может хранится имя глобальной переменной в таблице символов. Адрес таблицы задаёт компоновщик. Смещение в таблице полагаю соответствует порядку обработки файлов. Но это используется только в целях отладки.

>>3192940
Строковый литерал это тоже массив. Если ты объявил массив как массив, а не как указатель, получаешь такое поведение. Честно говоря никогда не задумывался о его причинах. Могу предположить, что когда ты пишешь такую конструкцию ты ожидаешь, что будет скопировано содержимое массива, а в си нет толком размера, чтобы делать это безопасно.
Аноним 16/06/24 Вск 14:48:06 3193100 454
>>3192940
стороки иммутабельны
Аноним 16/06/24 Вск 14:52:08 3193102 455
>>3192962
>Строковый литерал это тоже массив.
нет, это константа и ее содержимое лежит в сегменте текст, а в твоем коде объявляя массив ты его инициализируешь строковым литералом, но это не одно и то же, строковы литерал лежит в тесте, а чары в массиве после инициализации лежат на стеке

у массивов действительно механизм работы похож на работу указателей, но это не одно и тоже, об этом в своей книге так же писал ритчи, грубо говоря массивы используют принцип указателей, но ими не являются
Аноним 16/06/24 Вск 15:53:29 3193142 456
>>3192962
Ну и тупорылая свинина.
Аноним 17/06/24 Пнд 06:12:29 3193838 457
>>3192338
>PEG
Я писал на boost spirit. Там почти полностью бекуса наура переложили на крестовые шаблоны.
Аноним 17/06/24 Пнд 13:03:28 3194019 458
Как сделать приведение к указателю на функцию?
Вот, к примеру, такой код:
int fignya(int a){return -a;}

Если я хочу через указатель типа void передать адрес функции fignya, то для вызова функции нужно сделать явное приведение типа. Как это сделать?

Я знаю, что указатель на такую функцию выглядит так:
int (fignya_)(int);
Из этого было интуитивное предположение, что нужно использовать конструкцию (int(
)(int))

Аноним 17/06/24 Пнд 13:11:36 3194027 459
>>3193838
>>PEG
>Я писал на boost spirit. Там почти полностью бекуса наура переложили на крестовые шаблоны.

Меньше всего я бы хотел ебаться с крестами и их шаблонами

Бекус не нужен - peg лучше для машинных языков
Аноним 17/06/24 Пнд 14:10:43 3194065 460
image 159Кб, 1950x1358
1950x1358
>>3194019
Войд в сишечке автоматом приводится, не нужны никакие конструкции дополнительные. Но для удобства лучше отдельный тип завести.
Аноним 17/06/24 Пнд 15:19:18 3194163 461
>>3194027
Без шаблонов вообще невозможен никакой полиморфизм. Точнее только хардкор-си-стайл, когда ты что угодно можешь кастовать к чему угодно, а корректность проверять только в рантайме, если повезёт.
Аноним 17/06/24 Пнд 18:39:26 3194453 462
>>3194163
Скриптопараша в сях и не нужна.
Аноним 17/06/24 Пнд 20:14:24 3194595 463
у кого есть пару лишних минут, помогите пожалуста понять, почему код не работает, тут сиподобный язык, идея в том, что бы хранить в каждом байте массива информацию для 8 различных пикселей экрана. (Но ни один пиксель не рисуется)


https://pastebin.com/dLhdwZTf
Аноним 17/06/24 Пнд 21:12:44 3194683 464
>>3194453
Конечно, лучше по неделе на каждую фичу сегфолты дебажить.
Аноним 17/06/24 Пнд 23:47:37 3194868 465
>>3194595
Осциллоскопом смотрел, че там на линии творится? Может коротнуло на корпус. Всякое бывает.
Аноним 18/06/24 Втр 04:37:36 3194929 466
>>3194683
Достаточно писать на сях, а не эмулировать на них свою привычную макакину скриптопарашу. Разумеется для этого си не подходят, си - не скриптопараша, не для тебя сделано, макака, ты лезешь не туда со своими скриптами.
Аноним 18/06/24 Втр 05:44:50 3194954 467
>>3194929
Ой, кажется void* убежало.
Аноним 18/06/24 Втр 06:01:41 3194956 468
>>3194954
И в чём проблема void? В том, что неудобно эмулировать скриптопарашу? Так и не надо, ты не нужна в сях, скриптовая макака, не для тебя сделано.
Аноним 18/06/24 Втр 08:15:16 3194983 469
>>3194868
Правда, что программисту на си надо уметь паять?
Аноним 18/06/24 Втр 08:41:01 3194993 470
Аноним 18/06/24 Втр 08:48:56 3194997 471
>>3194993
Паять не умею, готовить умею.
Аноним 18/06/24 Втр 11:44:06 3195106 472
>>3194983
Нахуя паять? В 2024 существуют pcb-платы и гора инструментов для их проектирования.
Аноним 18/06/24 Втр 16:34:21 3195475 473
>>3194983
Сейчас уже нет.
А вот лет 20-25 тому назад это умение было неплохим бонусом.
Аноним 19/06/24 Срд 09:13:42 3196191 474
структура в си, это то, что в нормальных языках называется классом?
Аноним 19/06/24 Срд 11:51:17 3196364 475
Аноним 19/06/24 Срд 18:35:14 3196873 476
Аноним 19/06/24 Срд 19:44:58 3196970 477
>>3196191
Да, но это так не называют, и структуры позволяют реализовать только самые базовые возможности классов и с намного меньшим синтаксическим сахаром. "Методами" будут просто функции, виртуальными методами - указатели на функции, расположенные в самой структуре. Но this/self в них ты можешь передавать только сам среди прочих аргументов. Так же не предусмотрено никакого автоматического неймспейсинга, поэтому у "методов" очень длинные названия, например

mysql_stmt_bind_param(MYSQL_STMT ⚹stmt /⚹ это this ⚹/, MYSQL_BIND ⚹bind)

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

Есть и достоинства - например, можно получить адрес структуры по адресу одного из ее полей известным макросом offsetof. То есть, если у тебя структуры соединяются в какие-нибудь цепочки или деревья, то представляющие их структуры могут просто содержаться в полезной структуре с данными. Это позволяет намного меньше ебать память и ебаться с нею.
Аноним 19/06/24 Срд 21:00:50 3197060 478
Аноним 20/06/24 Чтв 04:06:32 3197366 479
>>3042192 (OP)
Суп програмач.
Вкатываясь в сокеты встретился с проблемой. Написал простенькие клиент и сервер на TCP, порт оба получают через командную строку, но по неведомой причине серверу похуй порт он себе делает рандомный. Есть подозрение, что проёб на этапе заполнения struct sockaddr_in.

Клиент:
int port = atoi(argv[1]);
sockaddr_in cli_addr;
cli_addr.sin_family = AF_INET;
cli_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
cli_addr.sin_port = htons(port);

Свервер:
int port = atoi(argv[1]);
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(port);

Где я обосрался?
Аноним 20/06/24 Чтв 04:10:29 3197367 480
>>3197366
И ещё. Узнал, что сервер делаем рандомный порт через netstat -lt. Последний в графе Local Address у сервера выдаёт подобное:

0.0.0.0:32919 или 0.0.0.0:56557 и тд.
Аноним 20/06/24 Чтв 05:19:56 3197374 481
>>3197366
>себе делает рандомный
Не должен.
>Где я обосрался?
Переполнение 16бит/проеб с аргументами/ебанутая система которая при недоступности порта выдает рандомный а не ошибку/еще какая-то хуета.
Аноним 20/06/24 Чтв 12:27:26 3197620 482
Снимок экрана о[...].png 77Кб, 1044x401
1044x401
распишите плиз подробно как из длинного числа (0xc0a8012d) получается только его конец (2d)?

unsigned int ip = 0xc0a8012d;
unsigned char byte = (unsigned char )&ip;

у меня есть конеш какие-то мысли что просто в чар не влезло всё число, но хочу услышать знатока
Аноним 20/06/24 Чтв 12:50:17 3197655 483
Аноним 20/06/24 Чтв 12:59:28 3197675 484
>>3197620
в чар не влезло все число, эндианы непричем
Аноним 20/06/24 Чтв 13:02:57 3197689 485
>>3197675
он спрашивает почему хвост, а не голова, а за это отвечают эндианы
Аноним 20/06/24 Чтв 13:27:35 3197728 486
Снимок экрана о[...].png 12Кб, 263x170
263x170
>>3197689
я понял почему хвост. Но похоже тупанул когда увидел два шестнадцатиричных числа. Я чёто подумал что это два байта. Всё понятно теперь
Аноним 20/06/24 Чтв 13:32:40 3197737 487
>>3197728
постарайтесь формулировать свои вопросы точнее
>понял почему хвост и знает как пользоваться поинтерами, но не знает размеры типов
кек
Аноним 20/06/24 Чтв 14:33:40 3197837 488
>>3197620
Обычно это делается так:
unsigned char byte = ip & 0xFF;

Чтобы получить другой байт используешь смещение, например чтобы a8 выдрать:
byte = ip >> 2 & 0xFF;
Аноним 20/06/24 Чтв 14:35:15 3197840 489
А, блять, неправильно вопрос прочитал, забей.
Аноним 20/06/24 Чтв 16:55:36 3198110 490
кот снорклер.jpg 118Кб, 640x640
640x640
typedef long unsigned int X;


Какого размера получится тип X?

Как же заебали ебать мозги сраные компиляторы говна мочи
Аноним 20/06/24 Чтв 17:30:03 3198189 491
Аноним 20/06/24 Чтв 19:42:26 3198394 492
>>3198189
>sizeof(long) вот такого

gcc на ту конструкцию говорит 32 бита, clang - 64 бита
Аноним 20/06/24 Чтв 20:27:51 3198465 493
>>3197728
Почему не сделали нормальные типы с точными размерами? К примеру, int8, int16, int32, int64 и сразу понятно сколько что занимает в любой ос и компиляторе.
Аноним 20/06/24 Чтв 22:18:58 3198584 494
>>3198465
Буквально в этом треде чуть выше всё это уже обсуждали...
Такие типы доступны в stdint.h, но конкретный набор зависит от целевой платформы.
Аноним 20/06/24 Чтв 22:21:36 3198587 495
>>3198465
>Почему не сделали нормальные типы с точными размерами? К примеру, int8, int16, int32, int64 и сразу понятно сколько что занимает в любой ос и компиляторе.

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

Теперь ясно что это был один из множества проёбов, отравляющих нам жизнь до сих пор Хорошо что я юзаю только как lingua franca
Аноним 21/06/24 Птн 13:02:10 3199044 496
>>3198587
>пользователь (физик какой-нибудь или инженегр)
Это такое представление у макак о программистах? Понятно, что-то уровня бабки-сраки с рынка.
Аноним 21/06/24 Птн 15:43:35 3199264 497
image.png 2633Кб, 1085x1600
1085x1600
image.png 437Кб, 566x719
566x719
>>3199044
>>пользователь (физик какой-нибудь или инженегр)
>Это такое представление у макак о программистах?

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

Программист был клоун или баба
Аноним 21/06/24 Птн 16:16:58 3199325 498
>>3199264
>Не было программистов в 1960-е
>Программист был клоун или баба
>2к24
>во всю эксплуатируют наработки клоунов
>мы программисты а вы нет
пон
Аноним 21/06/24 Птн 17:17:27 3199380 499
>>3194983
Смотря чем планируешь заниматься.
Если писать софт под готовое железо и ось, то скорее нет.
Если же разработка чего-то своего, то желательно - экономия времени и денег на начальном этапе. Макетирование/отладка прототипа не обходится без навыков пайки.
Аноним 21/06/24 Птн 17:47:08 3199415 500
Тредшот распил.png 175Кб, 898x573
898x573
>>3199325
>>Не было программистов в 1960-е
>>Программист был клоун или баба
>>2к24
>>во всю эксплуатируют наработки клоунов
>>мы программисты а вы нет
>пон

Долбоёб ты не уверенный в себе. нихуя ты не пон

Я об этом говорю не потому что это правильно, а как раз потому что это было ещё одной ошибкой дидов, как и >>3198587

Обучать программированию стали как бы не в двухтыщные годы только, даже в США. До этого оно не считалось чем-то серьёзным.
Аноним 21/06/24 Птн 18:07:57 3199439 501
>>3199415
прекрати срать своей шизой в этом итт треде
я буквально отупел от твоих постов
Аноним 21/06/24 Птн 18:24:32 3199456 502
>>3199415
>Обучать программированию стали как бы не в двухтыщные годы только, даже в США. До этого оно не считалось чем-то серьёзным
Лолчто. Наоборот оно было предельно серьезным - всякие расчеты ядерных взрывов, банковские системы, налоги и прочее. Меняться начало после появления персональных компьютеров, и особенно ibm pc, когда действительно стало массовым.
Аноним 21/06/24 Птн 19:50:04 3199555 503
>>3199456
>Меняться начало после появления персональных компьютеров, и особенно ibm pc, когда действительно стало массовым.
Тупой поридж, не кукарекай раз не видел. Массовыми были спектрумы всякие, а айбиэм-писи был ёбаным гробом с космической ценой доступным только организациям, что твой суперкомпьютер. человеку недоступно, и что еще более офигенно, этот гроб дико всирал тем же спектрумам по спекам, то есть не имел никакого аппаратного ускорения ничего, даже звука не имел, так что хуй там было поиграть даже в игры в которые все играли на массовых компьютерах, только таблички для работы набирать как дебил на печатной машинке, благо памяти дохуя.
Аноним 22/06/24 Суб 07:36:28 3199921 504
>>3199555
>организациям
Малым организациям. Дальше сам додумаешь, если не тупой.
Аноним 22/06/24 Суб 07:56:23 3199926 505
Сделал код, который сьедает 99 процентов памяти, но на 99 у кернела есть иммунитет и он останавливает. А что было бы если бы не было остановки ?
Аноним 22/06/24 Суб 11:24:52 3200011 506
>>3199926
man malloc:

calloc(), malloc(), realloc(), and reallocarray() can fail with
the following error:

ENOMEM Out of memory. Possibly, the application hit the
RLIMIT_AS or RLIMIT_DATA limit described in getrlimit(2).
Another reason could be that the number of mappings
created by the caller process exceeded the limit specified
by /proc/sys/vm/max_map_count.
Аноним 22/06/24 Суб 15:58:51 3200314 507
>>3199926
То он бы выделил тебе виртуальные адреса, которых не существует физически, а что произошло бы при попытке обращений к ним − зависит от реализации. Но скорее всего тебе контроллер памяти выкинет хардверный эксепшен.
Аноним 23/06/24 Вск 16:58:19 3201388 508
>>3199439
>я буквально отупел от твоих постов

Так не бывает. Отупел ты сам по себе когда-то раньше, а может сразу тупым был

>>3199456
>>Обучать программированию стали как бы не в двухтыщные годы только, даже в США. До этого оно не считалось чем-то серьёзным
>Лолчто. Наоборот оно было предельно серьезным - всякие расчеты ядерных взрывов, банковские системы, налоги и прочее.

Хуй там плавал. Учёный муж выдавал тянкам Алгоритм. И они его нахуячивали. Потому что нахуячить программу считалось несложным и нечего этим голову себе забивать.

Так всё и было. Меняться стало где-то в середине 1970-х только, а оформилось по факту в 1990-е где-то, в РФ вообще в 2000-е
Аноним 23/06/24 Вск 17:00:03 3201390 509
image.png 4330Кб, 1540x1155
1540x1155
>>3201388
>Хуй там плавал. Учёный муж выдавал тянкам Алгоритм. И они его нахуячивали.

Или даже Формулу. Хуле там алгоритм какой-то сделать - говно вопрос же. Циклограмма!
Аноним 23/06/24 Вск 17:38:28 3201424 510
Чо это за типо такой unit8_t? Или это обобщение для всех 1байтов типов?
Аноним 23/06/24 Вск 17:38:51 3201425 511
*Типок
Аноним 23/06/24 Вск 20:25:02 3201532 512
>>3201424
unit8_t хз, а uint8_t это беззнаковый целочисленный размером 8 бит. Никакого обобщения, предельно точно.
Аноним 23/06/24 Вск 20:41:26 3201545 513
>>3201532
А какая разница например между bool, byte и uint8_t?
23/06/24 Вск 21:17:38 3201585 514
Аноним 23/06/24 Вск 21:21:57 3201591 515
>>3201545
>bool
Появился только в C23, ЕМНИП, до этого был только _Bool. Надо читать стандарт про его представление, точно не знаю, но вангую, что он должен заниматить минимально адресуемое значение. Это не обязательно 1 байт на всех платформах. Пример обратного впрочем привести не могу.
>byte
Ты про какой язык спрашиваешь?
>uint8_t
Как тебе написали выше, это беззнаковое целое размером в 8 бит. Его может не быть, зависит от платформы.
Аноним 23/06/24 Вск 21:43:50 3201633 516
>>3201591
>Пример обратного впрочем привести не могу.

DCPU-16
Аноним 23/06/24 Вск 22:00:55 3201684 517
>>3201591
Ну я для Ардуины код пишу, как я понял, там почти все как в Си. До этого я писал только на gml, там вообще этой шизы с типами нет. Правильно я понял, что условное число 23 будет хранится как набор разных битов для разных типов?
Аноним 23/06/24 Вск 22:10:21 3201703 518
>>3201684
Число 23 довольно маленькое (<128) и положительное, поэтому для всех однобайтовых типов представление будет одинаковое.
Аноним 23/06/24 Вск 22:15:13 3201708 519
>>3201703
А в чом тогда смысл делать кучу типов для хранения одного байта? Ну я понимаю можно ещё сделать знаковый/безнаковый тип
Аноним 23/06/24 Вск 22:17:55 3201711 520
>>3201708
прикол в разной математике и в декодинге при вытаскивании значения
Аноним 24/06/24 Пнд 12:40:05 3202115 521
Code4OAq0KZeCs.png 2Кб, 293x75
293x75
>>3201708
Ты погоди, продолжишь писать на си, и будешь ещё свои типы от этих определять.
Аноним 25/06/24 Втр 00:47:43 3202832 522
Аноним 25/06/24 Втр 02:24:04 3202855 523
Аноним 25/06/24 Втр 10:56:25 3203044 524
>>3202832
могу сказать да, не открывая твои ссылки на порно с карликами геями
Аноним 25/06/24 Втр 12:49:49 3203105 525
а есть какой то интерактивный интернет ресурс для изучения си? с картинками, заданиями и похвалами? (почему то гугл только для с++ такое показывает)
Аноним 25/06/24 Втр 15:14:09 3203208 526
>>3203105
>с картинками, заданиями и похвалами
Порридж, это тебе не гейские плюсы, изучив которые ты захочешь сменить пол!! Это хардкорный Си, порриджище, тут все картинки должны быть только у тебя в голове; задания ты должен сам себе придумывать, чутка изменяя задачки из хардкорных учебников по алгоритмам; похвала, ну тут всё просто, порриджище, когда у тебя прога отрабатывает без сегфолтов, то это именно то состояние, от которого ты захочешь кончать радугой, а следовательно вновь и вновь возвращаться к нему!!!
Аноним 27/06/24 Чтв 09:11:30 3204941 527
image.png 179Кб, 918x992
918x992
может нейросеть двач знает почему?
Аноним 27/06/24 Чтв 10:57:45 3205011 528
>>3204941
прототипы нужны линковщику
сишник декларативный - сначала заявил, потом юзаешь
и вообще съеби нахуй со своими гейскими крестами в другой тред, это давно два разных языка
Аноним 27/06/24 Чтв 11:22:04 3205036 529
>>3205011
а как ты понял что там плюсы? просто я их до сих пор не различаю
Аноним 27/06/24 Чтв 11:26:55 3205043 530
>>3205011
почему кресты гейские? крест - символ христианства, где традиционно, очень негативно относятся к гомосексуаллизму, несмотря на некоторые поп ытки примирения. Второй крест может означать ещё большее усиление религиозной позиции.
Аноним 27/06/24 Чтв 11:46:23 3205054 531
image.png 6Кб, 150x75
150x75
>>3205036
Чел, у тебя расширение файла говорит о том, что ты приверженец жопотрахов.

>>3205043
Так ещё и защищаешь свою касту жопотрахов. Чел, ты стопроцентный плюсовик! Тут даже логику не нужно подрубать, чтобы понять, что ты плюсовик из жопотрахов, просто нужно быть слегка погружённым в лор.
Аноним 27/06/24 Чтв 11:59:01 3205062 532
>>3205054
понятно... получается я через три месяца программирования для ардуино случайно узнаю, что там не с++ а си
Аноним 27/06/24 Чтв 12:02:25 3205068 533
ой, наоборот
Аноним 27/06/24 Чтв 12:09:37 3205074 534
>>3205043
>крест - символ христианства
а вот и нет
иудеи экпраприировали древний алхимический символ и разбили его на крест и полумесяц, а еще объявили будто это две враждующие религии, в то время как обе являются переводами торы
можем продолжить в зогаче
Аноним 27/06/24 Чтв 12:13:24 3205077 535
image.png 85Кб, 867x578
867x578
>>3205054
получается си++ это почти то же самое что си, только больше плюсов на два
Аноним 27/06/24 Чтв 12:18:47 3205082 536
image 532Кб, 937x607
937x607
>>3205077
ты чота понял и чота не понял
Аноним 27/06/24 Чтв 12:20:34 3205084 537
>>3205082
мистер шрэк почему у вас рука светится
Аноним 27/06/24 Чтв 12:34:23 3205090 538
>>3204941
Ну допустим, у тебя большой проект, ты Линукс собираешь из исходников. Эти исходники, модули, писали сотни разных людей, и у них сто процентов есть совпадающие названия функций и особенно макроопределения. Если при компиляции всего этого дерьма на любом этапе файлы не были бы явно связаны подключением одного заголовочного файла, а вместо этого подрубалось бы всё, что просто подходит по имени из всего вагона сорцов, это был бы полный пиздец.
Не говоря о том, что это просто удобно, открыть заголовочник, посмотреть на прототипы и почитать их описание прямо там. Ещё если ты коммент напишешь над прототипом, то IDEшки подтянут его как всплывающую подсказку.
Аноним 27/06/24 Чтв 12:45:21 3205101 539
>>3205090
а почему нигде не подключается файл с расширением .c? компилятор автоматически начинает его искать при виде заголовочного?
Аноним 27/06/24 Чтв 15:38:52 3205240 540
Привет сишникам.

Нашёл книжку "Obfuscated C and other mysteries" by Don Libes, https://archive.org/details/obfuscatedcother0000libe/ Если кто-то умеет в могучее колдунство по снятию drm, закиньте эту книгу на любой файлообменник, другие сишники наверняка будут рады.
Аноним 27/06/24 Чтв 21:22:37 3205597 541
>>3204941
Во-первых, си задизайнен для однопроходных компиляторов, которые обрабатывают исходный код последовательно сверху вниз. Такие компиляторы проще для написания. Теперь представь ситуацию когда функция foo использует функцию bar. Пусть они расположены в одном файле и foo находится выше, чем bar. Тогда, если не сделать объявление bar перед её вызовом, то как компилятор узнает её сигнатуру, чтобы проверить корректность вызова?

Во-вторых, в си единицей трансляции является файл и они компилируются по отдельности, никак не пересекаясь. Представь, что в file_a.c есть функция foo, которая использует функцию bar, определённую в file_b.c. Вопрос тут тот же самый, как без объявления bar компилятор может узнать её сигнатуру, если он даже не знает в каком она файле?

>>3205101
>а почему нигде не подключается файл с расширением .c? компилятор автоматически начинает его искать при виде заголовочного?
Компилятор ничего автоматически искать не начинает. Он компилирует только то, что ему скажут. Обычно, программист пишет какой-то скрипт (или это делает за него IDE), который последовательно компилирует каждый файл с исходным кодом в проекте. В итоге получаются объектные файлы. Потом сборочный скрипт помещает их содержимое в исполняемом файле как в контейнере с помощью сборщика. Это если совсем не вдаваться в подробности.
Аноним 28/06/24 Птн 00:07:37 3205794 542
>>3202115
Вот никогда не понимал чрезмерной любви к typedef и using. Потом нихера не понятно, что за типы кругом, и чо происходит. Особенно в с++

Мне вот больше нравится std::shared_ptr<std::vector<float>>, чем floatptr_t
Аноним 28/06/24 Птн 01:01:25 3205817 543
>>3205794

>Мне вот больше нравится std::shared_ptr<std::vector<float>>, чем floatptr_t

А в чём разница?

Мимоходом из D lang
Аноним 28/06/24 Птн 01:32:55 3205843 544
>>3205817
>floatptr_t
ну это типа короче писать. Ну я вот щас поддерживаю проект где на каждый базовый тип свой синоним. И вообще непонятно, что такого. Будето бы живём с 80 пиксельными мониторами в 70 годах
Аноним 28/06/24 Птн 02:38:53 3205896 545
>>3205794
Когда-нибудь тебе придётся заменить тип в большой куче вонючего легаси, чтобы портировать и оживить его, например. Тогда сразу всё поймёшь, насколько же божественно иметь такие синонимы на каждую используемую семью переменных. А где-то прямо при сборке проекта можно указать размер типа с плавающей точкой для математики, например. Собрать хоть на обычных float, хоть на long double. Причём 0 гемора при написании всего этого, просто несколько блоков в одном заголовочнике, и всё.
Аноним 28/06/24 Птн 08:14:33 3205992 546
Какие есть готовые расширения/решения для объявления неипользуемых полей структур?

struct xyi
{
char __unused_20[20];
char used_1;
char used_2;
char __unused_10[10];
char used_3;
} __attribute__((__packed__));

Хочу избежать объявления __unused_X и использовать что-то вроде __COMPEXT_UNUSED_BYTES(count).

struct xyi
{
__COMPEXT_UNUSED_BYTES(20);
char used_1;
char used_2;
__COMPEXT_UNUSED_BYTES(10);
char used_3;
} __attribute__((__packed__));
Аноним 28/06/24 Птн 08:23:29 3205995 547
>>3205992
Анус себе расширь, пес.
Аноним 28/06/24 Птн 08:55:28 3206005 548
>>3205794
Так специально же сделано, чтобы можно было бы менять тип в одном месте, а не прыгать по всей проге/проекту и менять один тип данных на другой.
Аноним 28/06/24 Птн 20:13:31 3206621 549
>>3205992
Нужная была бы вещь.
Вот здесь есть вариант, через макросы.
https://stackoverflow.com/questions/42837863/how-to-name-unnamed-fields-in-a-c-structure
Переменным даётся имя с номером строки. Но, если поля структуры объявлять подряд, то всё посыпется к чёрту. Нужно какой-нибудь счётчик глобальный прикручивать. Там же предлагается делать через __COUNTER__, но тот не везде есть.
Аноним 28/06/24 Птн 21:09:28 3206656 550
>>3199555
> всирал тем же спектрумам по спекам
Но спектрум уебище 8бит с резиновыми блять 40 кнопками, монохромом 256x192 на отбросах памяти 16кбит и колхозными интерфесами нгмд.
Аноним 28/06/24 Птн 21:11:03 3206657 551
>>3206621
> Нужная была бы вещь.
Ненужная. Это буквально нужно чтобы раз в год сэкономить 5 минут.
Аноним 28/06/24 Птн 23:31:34 3206767 552
>>3205992
>Какие есть готовые расширения/решения для объявления неипользуемых полей структур?

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

Подробностей не помню
Аноним 01/07/24 Пнд 19:59:53 3209250 553
Ах да, в гнуси есть онанимные битфилды :8; :16;
Или так:
#define pad(n) char padmyass##__LINE__[n];
Аноним 01/07/24 Пнд 22:34:05 3209415 554
>>3205843
>ну это типа короче писать. Ну я вот щас поддерживаю проект где на каждый базовый тип свой синоним. И вообще непонятно, что такого. Будето бы живём с 80 пиксельными мониторами в 70 годах

Отвечаешь не на тот вопрос что задан же
Аноним 01/07/24 Пнд 23:04:45 3209437 555
>>3209415
Разницы нет. Просто синоним, чтобы писать меньше
Аноним 01/07/24 Пнд 23:42:48 3209447 556
>>3206005
Так не бывает, чтобы можно было безболезненно поменять типа. Тем более какой-то хуйни вроде std::shared_ptr<std::vector<float>>.

Вообще, это закладывание на супергибкость проекта - мрии
Аноним 02/07/24 Втр 01:42:51 3209472 557
>>3209447
какие то гейские шаблоны опять
тут мужской трид для макросов, осел
Аноним 02/07/24 Втр 09:21:23 3209564 558
>>3209472
Кто в индийских проектах не работал, тот макросы не видел
Аноним 02/07/24 Втр 18:50:55 3210034 559
>>3209447
>std::shared_ptr<std::vector<float>>
Блять, опять эти гейские плюсы в нашем треде!!
Вы издеваетесь????
Аноним 03/07/24 Срд 20:03:40 3211072 560
Прочитал про этот make и нифига не понял. Вот неужели за 50 лет не смогли придумать инструменты уровня cargo?
Аноним 03/07/24 Срд 20:06:43 3211076 561
>>3211072
Ты наркоман? Хули ты прочитал про один make, а больше ты ни про что не читал? CMake, ninja?
Аноним 04/07/24 Чтв 00:40:50 3211248 562
>>3211072
Пакетных менеджеров придумали примерно миллион. От себя рекомендую nix.
Аноним 04/07/24 Чтв 12:25:03 3211490 563
image.png 14Кб, 668x269
668x269
image.png 11Кб, 446x236
446x236
здраствуйте, есть задача, посчитать сумму всех битов массиве типа char.
какая реализация здесь предпочтительнее, первая или вторая? или нет никакой разницы?
Аноним 04/07/24 Чтв 13:52:49 3211587 564
>>3211490
>двойной обход цикла вс одинарный
ну ты сам то как думаешь?
Аноним 04/07/24 Чтв 14:01:08 3211601 565
>>3211587
ну так то и в первом и во втором случае одинаковое число операций
Аноним 04/07/24 Чтв 14:39:38 3211638 566
>>3211601
и почему чар 8 битный? в условиях задачи это установлено?
Аноним 04/07/24 Чтв 14:42:59 3211641 567
>>3211638
это не суть, пусть тогда будет не char, а uint8_t
Аноним 04/07/24 Чтв 14:55:09 3211660 568
только что понял, что не понимаю как операторы определяют размеры массивов. как к примеру, sizeof(a) возвращает размер массива, если переменная a - это просто указатель на какой то участок памяти
Аноним 04/07/24 Чтв 14:57:10 3211664 569
>>3211660
>a - это просто указатель на какой то участок памяти
>массив использует механизм указателей, но им не является
ритчи (с)
Аноним 04/07/24 Чтв 15:04:55 3211668 570
>>3211660
sizeof вернёт размер указателя на кучу, а не объём выделенной на ней памяти; размер же статического массива известен компилятору ещё на этапе компиляции
Аноним 04/07/24 Чтв 15:53:43 3211733 571
>>3211668
сайзоф ничо не вернет, это не функция, а макрос препроцессора, вычисляется на этапе компиляции
Аноним 04/07/24 Чтв 16:26:12 3211759 572
>>3211733
что значит ничего не вернёт?

int a[2] = 3;
int b = sizeof(a);

вот, я на основе одного числа (указатель a), получаю другое число (b). почему это не функция? почему она ничего не возвращает?
Аноним 04/07/24 Чтв 16:42:10 3211777 573
>>3211076
>CMake, ninja
Они ещё сложнее и конфги ещё долбанутее

>>3211248
Но ни одного удобного
Аноним 04/07/24 Чтв 16:48:32 3211780 574
>>3211490
Первый вариант более читабельный, во-первых, во-вторых, меньше действий компу нужно делать, имею в виду, во втором варианте на каждой итерации деление и взятие остатка нужно производить.
Аноним 04/07/24 Чтв 17:00:15 3211792 575
>>3211759
>что значит ничего не вернёт?
>почему это не функция?
>почему она ничего не возвращает?
значение знаешь?
Аноним 04/07/24 Чтв 17:06:41 3211798 576
>>3211759
>почему это не функция?
Чел, это оператор языка Си. Во-первых, исходя из синтаксиса языка Си, то функцию надо объявлять, а sizeof объявлять не надо. Во-вторых, может быть он и работает, как ф-ция (типа передаёшь ему аргументы и он тебе возвращает некоторое тебе значение), но это не ф-ция, потому что это оператор. и никогда в обществе приличных людей не называй sizeof ф-цией, потому что обоссут.
Аноним 04/07/24 Чтв 17:13:34 3211804 577
image.png 32Кб, 691x644
691x644
image.png 52Кб, 668x1073
668x1073
Аноним 04/07/24 Чтв 17:24:10 3211817 578
image.png 45Кб, 2459x538
2459x538
В принципе, сам можешь убедиться в том, что sizeof это оператор, а не ф-ция. Как бы соответсвие блоков кода на асме и Си по цвету.
Аноним 04/07/24 Чтв 19:38:17 3211950 579
Аноним 04/07/24 Чтв 21:56:12 3212005 580
>>3211490
Первый варик компилирует на -O3 в какую-то дичь на сто миллионов строк, но полагаю работает быстрее.
https://godbolt.org/z/qf3cG9xzG
Аноним 04/07/24 Чтв 22:28:13 3212022 581
>>3212005
Ну он, кста, AVX инструкции использует, следовательно, это связано с распаралеливанием, т.к. чисел с плавающей точкой в этом коде нет.
Аноним 04/07/24 Чтв 23:40:44 3212077 582
image 45Кб, 1361x354
1361x354
>>3212022
Ну да, меня удивило что он все их использовал. Некислое ускорение должно получится.
>>3211490
Вот тебе третий варик, кстати. Он алгоритмически более быстрый, потому что число операций пропорционально количеству бит.
Аноним 05/07/24 Птн 01:55:54 3212128 583
>>3211777
>>CMake, ninja
>Они ещё сложнее и конфги ещё долбанутее
>

Meson глянь. Это подмножество cmake, я его очень люблю
Аноним 05/07/24 Птн 08:13:50 3212183 584
>>3212128
А там можно делать так?
meson new myproject
meson addlib path-to-lib/namelib
meson build
meson run
meson test
Аноним 05/07/24 Птн 08:44:23 3212202 585
>>3212077
До такого я бы точно не додумался бы
Аноним 05/07/24 Птн 12:07:35 3212399 586
>>3212077
Анон, подскажи, пожалуйста, что нужно читать, чтобы научиться составлять такие решения?
Аноним 05/07/24 Птн 13:18:06 3212483 587
>>3212399
Конкретно этот алгоритм Кернигана я встречал в нескольких задачах на литкоде, там же про него и узнал. Хз, что посоветовать. Классика — это "Искусство программирования" Кнута, но это хардкор, сам не читал. Для дебилов и совсем новичков есть "Грокаем алгоритмы" Бхаргавы. Вот чего-то адекватного в промежутке не знаю. Просто читай больше чужого кода и решай больше задач, а интересное себе выписывай куда-нибудь.
Аноним 05/07/24 Птн 14:10:31 3212573 588
>>3212483
Стивен Скиена - Алгоритмы. Как раз в промежутке.
Аноним 05/07/24 Птн 19:50:45 3212879 589
>>3212183
>А там можно делать так?
>meson new myproject

Не помню

>meson addlib path-to-lib/namelib

Нет, ручками конфиг пишешь

>meson build

Да

>meson run

Нет

>meson test

Да
Аноним 05/07/24 Птн 19:51:50 3212881 590
>>3212399
>Анон, подскажи, пожалуйста, что нужно читать, чтобы научиться составлять такие решения?

Найди задачу Fizz-Buzz test и не подсматривая в ответы реши её

В голове щёлкнет и всё поймёшь
Аноним 05/07/24 Птн 23:19:32 3213001 591
>>3212881
>Найди задачу Fizz-Buzz test и не подсматривая в ответы реши её
Я не понимаю? Это троллинг такой или нет? Просто не первый раз встречаю людей, которые советуют эту задачу, когда она является элементарной, в которой нужно просто понимать как работает взятие остатка!!

А тут анон привёл решение, которое даже понять можно только, если самому на листке бумаги произвести несколько раз операцию and над числами в двоичной системе. А не то, чтобы додуматься до него (решения), если ты не имеешь чёткой привычки представлять числа в двоичной системе.
Аноним 05/07/24 Птн 23:53:25 3213014 592
>>3213001
>А тут анон привёл решение
там еще можно сократить код, сделав вайл однострочным и соответсвенно фор, используя оператор запятая
Аноним 06/07/24 Суб 00:27:40 3213027 593
>>3213014
Не, ну соращение кода это другое!

Тут же речь идёт про то, что это решение сокращает общее количество шагов, т.е. каждый раз while пробегает ровно столько раз, сколько единиц есть в двоичном представлении числа, а не каждый раз по 8 повторений или столько повторений из скольких битов состоит тип данных, к которому принадлежат числа.
Аноним 06/07/24 Суб 02:06:51 3213039 594
>>3213001
>в которой нужно просто понимать как работает взятие остатка!!

Нет, она не про это
Аноним 06/07/24 Суб 03:57:06 3213050 595
>>3213001
Да, это довольно тупой троллинг. И да, бро, круто что ты не поленился разобраться в коде, который я вбросил только чтобы пофлексить. Продолжай в том же духе.
Аноним 06/07/24 Суб 22:46:24 3213811 596
>>3042192 (OP)
Аноны, занимаюсь по книге Кернигана. Делаю одно упражнение если вкратце то там надо создать и заполнить массив
Пишу значит
int nletter[10];
А потом заполняю
for (i=0;i<25;i++)
ndigit=0;
Ага то есть делаю ошибку как бы вначале. Но прикол в том что программа работает! Все нужные элементы массива были созданы при заполнении. Что это за фигня, с каких пор в сишке динамически расширяющиеся массивы?
Аноним 07/07/24 Вск 02:35:55 3213891 597
Аноним 07/07/24 Вск 06:31:18 3213911 598
>>3213811
Писать ты можешь по любым адресам страниц, полученных от операционки. Но за пределами могут оказаться другие твои же данные, так что не надо промахиваться.

>>3211817
>>3211733
>>3211798
Не согласен с этой категоричностью. Ну функция этапа компиляции. Более широкое восприятие этого понятия не мешает, на мой взгляд, пониманию различных его реализаций. Разница ещё более сотрётся с каждым уровнем абстракции. Кроме того, некоторые функции могут в будущем стать макросами; а работа кода при этом нарушена не будет.
Аноним 07/07/24 Вск 06:46:38 3213916 599
Разве что только наоборот не получится - чтобы макрозамена стала функцией исполнения. А наоборот - пожалуйста, например в связи с упразднением какого-нибудь функционала.
Аноним 07/07/24 Вск 12:21:48 3214148 600
>>3213911
>Писать ты можешь по любым адресам страниц, полученных от операционки. Но за пределами могут оказаться другие твои же данные, так что не надо промахиваться.
Кек то есть я могу создать массив arr[10] а потом заполнить его сотней символов и скормить принтф и всё это будет работать и компилятор даже ничего не скажет?
Фига себе.
Аноним 07/07/24 Вск 12:29:42 3214158 601
>>3214148
>а потом заполнить его сотней символов
Ты не заполнишь этот массив сотней символов! Когда твоя прога будет пытаться впихнуть 11-й символ в arr[10], то твоя прога падёт с ошибкой "Segmentation fault", т.е. что означает, что ты вылез за границы той области памяти, которую для твоей проги предоставила ОСь.
>и скормить принтф
Естественно, если твоя прога упадёт с ошибкой сегфолт, то никакой принтф уже не будет отрабатывать.
Аноним 07/07/24 Вск 12:46:21 3214178 602
cscreen.png 126Кб, 1842x1078
1842x1078
>>3214158
>Когда твоя прога будет пытаться впихнуть 11-й символ в arr[10], то твоя прога падёт с ошибкой "Segmentation fault",
Тогда почему у меня всё работает и ничего не падает ммм?
Аноним 07/07/24 Вск 12:47:26 3214179 603
>>3214148
>это будет работать и компилятор даже ничего не скажет?
Такое случается, грозя впоследтвии очень трудно находимыми ошибками. Писать ты будешь, вероятно, по своим же переменным, но другим, которые компилятор расположил на той же странице памяти, где-то возможно рядом с твоим массивом.
Аноним 07/07/24 Вск 12:56:56 3214193 604
Да, надо следить самому. Зато можно работать по данным вообще через указатель и адресную арифметику; иногда нужно; плюс быстродействие некоторое.
>Тред синтаксического сахара над языком ассемблера
Ну написано же. )
Аноним 07/07/24 Вск 13:00:38 3214197 605
>>3214178
Тот анон был не совсем прав. Запись за пределы массивы это UB, может быть что угодно, в т.ч. segmentation fault. В данном случае, ты портишь содержимое стека, которое хранится дальше твоего массива, например перезатирается значение i и все переменные которые там размещает putchar. Работает она из-за этого непредсказуемо. Обрати внимание, что букв B выводится явно меньше 100 (лень считать вероятно это 100-'B' = 44), а один символ это @. Первое происходит из-за того, что i становится B, а второе из-за того что 12-ая итерация цикла портит стек для putchar. На следующих итерациях всё улетает в неиспользуемую область стека, поэтому отрабатывает без особых проблем.

Если честно удивительно, почему не падает, потому что должен перезатираться адрес возврата для putchar, мб там какой-то инлайнинг происходит, хз.
Аноним 07/07/24 Вск 13:01:23 3214200 606
>>3213911
Как я понял, никакая функция в стандартном понимании, не может вычислить длину массива, имея только адрес первого элемента
Аноним 07/07/24 Вск 13:04:20 3214205 607
>>3214178
Ну тут у тебя классическое "переполнение стека", да, это не всегда приводит к сегфолту, и вот пример, когда это не привело к сегфолту. Такими ситуациями, кста, и пользуются злоумышленники, когда память за пределами массива заполняют "прыжками" в нужную область памяти.
Аноним 07/07/24 Вск 13:24:07 3214250 608
>>3214178
Звёзды удачно сошлись.
А вообще такие баги ловятся не компилятором, а санитарами типа valgrind. Если ты серьёзно собираешься писать на си, сразу привыкай пользоваться ими обязательно. И при компиляции к флагу со стандартом добавляй ещё '-Wall -Wextra -Werror -pedantic -g' - компилятор всё-таки кое-что может найти. И линтером пользуйся, хотя бы простым типа cppcheck. И хотя бы самый минимальный набор позитивных юнит-тестов.
Если всё это делать по ходу разработки, то сэкономишь огромное количество времени на отладках с дебаггером, а это самое медленное и печальное.
Аноним 07/07/24 Вск 15:54:30 3214381 609
>>3214197
>>3214205
>>3214250
Спасибо за подробные пояснения, анончики.
Я вначале реально подумал что в сишку завезли динамические массивы кек.
Аноним 07/07/24 Вск 16:51:50 3214420 610
Аноним 07/07/24 Вск 18:11:56 3214481 611
Аноним 07/07/24 Вск 22:23:15 3214709 612
>>3214178
> Тогда почему у меня всё работает и ничего не падает ммм?
Если ты на этой хуйне будешь програмить, то ты будешь молится чтобы падала.
Аноним 08/07/24 Пнд 01:13:56 3214788 613
>>3214381
Variable-length Array (VLA) в стандарте языка с 99-ого. Правда применять их безопасно как задумано — юзлесс хуита.
Аноним 08/07/24 Пнд 09:26:53 3214865 614
1.png 23Кб, 765x247
765x247
2.png 28Кб, 726x245
726x245
>>3212077
>>3212202
Раз уж вы тут пипиркамиалгоритмами меряетесь, скину ещё пару вариантов 80-го уровня.
Вложенный цикл можно вообще убрать.

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

5-й вариант - модификация 4-го. Упаковываем массив констант в uint64_t и суммируем нибблы со сдвигами и смазкой. В идеале, если компилятор сообразительный, можно будет теребить биты напрямую в регистрах без обращений к hashtable (пик 2).
Аноним 08/07/24 Пнд 19:23:22 3215564 615
>>3214865
как стать таким же душным? что читать?
Аноним 08/07/24 Пнд 20:16:11 3215657 616
>>3215564
Сам ты душнила, лол. Что тебя не устраивает?
Аноним 08/07/24 Пнд 20:22:30 3215674 617
>>3215564
Практика решает, гугл и гитхаб помогают. Нужно было подобное решение несколько лет назад, вот и нашел.
В пятницу не смог вспомнить это решение, зато вчера глотнул коньячку и как вспомнил!
Аноним 08/07/24 Пнд 23:59:21 3215829 618
image.png 275Кб, 600x427
600x427
>>3215564
Для начала нужно отрастить длинные патлы, бороду и усы. Остальное придет со временем
Аноним 09/07/24 Втр 06:52:42 3215932 619
Screenshot2024-[...].jpg 631Кб, 2400x1080
2400x1080
Человек говорит, что последняя строка это ошибочная запись. Почему? Разве я не могу в первый элемент массива (который хранит букву H) просто написать другое число?
Аноним 09/07/24 Втр 06:53:54 3215933 620
А я понял, нужно было *cmut
Аноним 09/07/24 Втр 08:06:01 3215944 621
>>3215829
Сразу видно быдло, которое не читало Криса Касперски!
Аноним 09/07/24 Втр 10:37:24 3216022 622
>>3215933
Это будет не менее грубая ошибка, ты в первую ячейку массива char будешь запихивать указатель.
Он здесь не в ячейки что-то пишет, а с адресами работает. И cinv, и cheap − нормальные указатели и работают, а cmut это адрес статического массива, и хотя синтаксис работы с ним очень похож на синтаксис указателей, это не указатель, и об этом нужно помнить.
Аноним 09/07/24 Втр 10:44:17 3216032 623
Анончики, объясните почему использую gcc не контрится первый процент в:
printf("% %d", var) или printf("\% %d", var)

Нашел способ, как втиснуть его, используя переменную чар, но наверняка же есть более вменяемый путь.
Аноним 09/07/24 Втр 10:46:48 3216035 624
>>3216032
Вывод и там, и там просто %d вместо переменной
Аноним 09/07/24 Втр 10:48:25 3216036 625
Аноним 09/07/24 Втр 10:49:15 3216037 626
>>3042192 (OP)
Аноны, может быть не совсем в тему, но что почитать по системному программированию для линуха?
Аноним 09/07/24 Втр 10:52:37 3216039 627
>>3216036
Блин точно. Спасибо большое. Мне почему-то уперлось в голову, что должен быть обратный слеш и пиздец.
Аноним 09/07/24 Втр 11:23:36 3216052 628
Аноним 09/07/24 Втр 12:04:14 3216084 629
>>3216022
если я создам массив в стеке (допусти arr) и напишу arr = 10
это приведёт к ошибке компиляции? или я просто потеряю адрес этого массива, и он будет висеть в стеке до завершения программы.
Аноним 09/07/24 Втр 12:26:43 3216098 630
>>3216084
Ошибка компиляции. Адрес статического массива неизменяем. А ещё в стеке что-то может висеть только пока текущий контекст не выбросит из стека.
Аноним 09/07/24 Втр 12:51:56 3216124 631
>>3215932
Так ты попробуй напиши такую программу. В этой строке массиву пытаюсь присвоить значение указателю, но это разные типы. Значение массива вообще нельзя поменять, считай его константным указателем. Чтобы в первый элемент массива написать другое число, нужно сделать как-то так:
cmut[0] = cheap[0];
Аноним 09/07/24 Втр 12:57:19 3216137 632
>>3216124
Иными словами сделать как в учебнике: менять не адрес, а в цикле переписать значения массива.
Аноним 09/07/24 Втр 13:04:02 3216143 633
>>3216084
Чел, имя статического массива это указатель на первый его элемент, следовательно, компилятор понимает, что: "Вот есть метка, от которой я должен отсчитать энтое кол-во байтов на стеке." Если компилятор, при компиляции, выделяет это энтое кол-во байтов на стеке, а потом при дальнейшем шаге меняет это начало отсчёта (адрес первого элемента) на другое значение, то мы получаем утечку памяти, и не по ходу криворукой проги, а по ходу компиляции. Поэтому статические массивы неизменяемы, точнее, неизменяемы его размер и начало его отсчёта.
Аноним 09/07/24 Втр 13:07:35 3216145 634
Аноним 09/07/24 Втр 13:20:32 3216153 635
>>3216143
>Чел, имя статического массива это указатель на первый его элемент
int arr[10];
Что вернёт sizeof(arr) и почему это не будет равно sizeof(int *)?
Аноним 09/07/24 Втр 14:12:16 3216187 636
>>3216153
>sizeof(arr)
Показывает размер массива, т.е., если у тебя int в системе равен 4-ём байтам, то в твоём случае (массив состоит из 10-ти элементов типа int) sizeof(arr) равен 40, т.е., в твоей системе этот массив будет занимать 40 байт. Ну, следовательно, если int это 8 байт, то sizeof(arr) вернёт 80, если int 2 байта, то sizeof(arr) вернёт 20, и т.д.

>sizeof(int *)
В данном случае sizeof возвращает размер указателя, и ему абсолютно неважно на какой тип указывает этот указатель (int, char, double, etc), он всегда будет возвращать одно и тоже значение, в зависимтости от системы, например в 32-х битной системе он будет равен 4-м байтам, в 64-х битной 8-ми байтам, в 16-ти битной равен 2-м байтам (надеюсь ты понимаешь почему так).
Аноним 09/07/24 Втр 14:19:12 3216190 637
>>3216153
Дополню анона. Посмотри, что вернут arr и &arr[0], если не веришь ему.
Аноним 09/07/24 Втр 14:27:25 3216194 638
>>3216187
>Показывает размер массива
>В данном случае sizeof возвращает размер указателя
Ну то есть ты и сам видишь, что имя массива не является указателем, несмотря на то, что по нему можно получить адрес массива. И нельзя их путать, потому что это приводит к ошибкам (самую распространённую ты избежал). Это синтаксический сахар, который близок, но не совпадает на 100% с настоящим указателем.
Аноним 09/07/24 Втр 14:32:04 3216197 639
>>3216194
И не смотря на то, что ты можешь присвоить имя массива указателю в функцию, чтобы потом по этому указателю читать этот массив?
Аноним 09/07/24 Втр 14:58:02 3216221 640
>>3216194
>>3216197
Т.е. в моем понимании имя массива - это константный указатель, т.к. он обладает всеми его свойствами, но имеющий дополнительные свойства и дающий пользователю расширенные возможности, делающие его "именем массива", а не простым указателем.

Однако если работать с ним в пределах возможностей константного указателя, то он ничем от него принципиально не будет отличаться. Мне кажется под капотом так и есть - структура данных с обычным указателем в качестве имени.
1) Сравнить с другим указателем - можем
2) Присвоить другому указателю - можем
3) Прибавлять-отнимать-делить-умножать, чтобы получать смещение, как и у обычного указателя - можем
4) Разыменовывать, соответственно - тоже можем

Т.е. пока ты не пытаешься нарушать эти границы - всё в порядке и поведение будет именно что соответствовать константному указателю.

Разве это ошибка?
Аноним 09/07/24 Втр 15:00:18 3216224 641
>>3216197
Передать в функцию, ты имеешь в виду? Так а как функция его принимает, знаешь? Она в своём контексте создаёт уже настоящий указатель и приравнивает его значение к адресу массива. Там уже и адресной арифметикой можно с ним работать.
Наглядно эта абстракция ломается с двумерными матрицами. Не видел функции с аргументами типа int(*)[]?
Аноним 09/07/24 Втр 15:04:34 3216227 642
>>3216221
>Разве это ошибка?
Да, всё равно ошибка, потому что нужно помнить про sizeof(), про 2д массивы и ещё мелочи, которые сразу не вспомнишь. Ты в курсе, но человек, который с нуля так выучил, наговнокодит и даже не поймёт, что не так.
Аноним 09/07/24 Втр 15:28:38 3216272 643
>>3216227
Я и есть тот человек, который с нуля еще не выучил. Поэтому спрашиваю.

Подожди, но в двумерной матрице у тебя же сохраняется эта закономерность
a == &a[0] == &a[0][0]
и
&a[1] == &a[1][0]

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

Так вижу.
Аноним 09/07/24 Втр 15:48:38 3216305 644
>>3214865
Интересные решения. Я тогда подумал про таблицу в 256; считай 2 КБ в памяти, немного - зато лишние сдвиги и промежуточные переменные отлетают.
Аноним 09/07/24 Втр 15:53:03 3216313 645
image.png 44Кб, 794x753
794x753
интересно, что array = &array[0], но sizeof работает с ними по разному
Аноним 09/07/24 Втр 15:56:49 3216321 646
>>3216313
Почему? В первом случае тебе вернулся размер массива, а во втором размер указателя. Всё логично.
Аноним 09/07/24 Втр 16:33:16 3216369 647
>>3216305
Если на ПК, то можно и большую таблицу замутить. А я, в основном, с микроконтроллерами связан, поэтому привык байтоёбить. Там памяти обычно не так много, да и лень бы мне было таблицу на 256 генерить.
Аноним 10/07/24 Срд 09:43:13 3216984 648
16949432294580.jpg 17Кб, 200x200
200x200
>>3216313
sizeof(a+0)

Дурачки пытаются формализовать семантику С, когда это собрание хаков, придуманное под пдп-11 на основе B.
Аноним 10/07/24 Срд 13:10:33 3217271 649
Кстати, только вчера прочитал, что, оказывается, можно написать
>1[array]='f';
для доступа к 2-му элементу массива, вместо
>array[1]='f';
Впечатляет немного. )

>>3216984
Аноним 10/07/24 Срд 13:44:31 3217295 650
>>3217271
>можно
во имя чего, мистер Андерсон
Аноним 10/07/24 Срд 14:32:31 3217337 651
>>3216984
>>3217295
Теперь это успешный жаваскрипт наносеков тред?
Аноним 11/07/24 Чтв 09:30:31 3217985 652
image.png 5Кб, 199x108
199x108
а чо будет если вместо цифры я введу сюда букву? принтф ничего не печатает, а что туда кладётся? (он также ничего не печатает, если вводить числа > 127, для расширенных символов надо дополнительные библиотеки подключать?)
Аноним 11/07/24 Чтв 11:18:37 3218097 653
>>3217985
Дело в том, что ты делаешь то, чего боялся тот анон, которые был против того, чтобы воспринимать имя массива, как указатель.
Ты всё смешал и перепутал.

В программе происходит следующее:
Ты присваиваешь переменной x типа int значение 0. Теперь по тому адресу лежит 0.

Дальше ты вызываешь функцию scanf, которая ждет ввода значения типа int, т.е. целое число, что указывается (забыл как назыавется) с помощью %d.

В случае корректного ввода функция scanf запишет введенное тобой значение по адресу &x и вернет 1, в случае некорректного ничего никуда не запишет и вернет 0.

Соответственно ты вводишь букву и функция ничего никуда не пишет. По адресу перtменной x всё также остается значение 0, которое ты задал при инициализации.

Дальше ты забиваешь болт на преобразование типов и ЙОЛО пишешь значение типа int в строку, но (забыл как назыdается) не как %d, что соответствует int, а как %c, что соответствует char.

C позволяет так делать, но преобразует число в символ в соответствии с ASCII таблицей, где число 0 эквивалентно NULL, т.е. на месте %c у тебя напечатается ничего и аутпут должен быть:
"x = "

Числа больше 127 должны давать вывод также и в соответствии с ASCII таблицей. Возможно ты просто не замечаешь, что у тебя оно сидит слева от стрелочкb для инпута в консоли, т.к. ты не воткнул '\n' в конце строки.
Аноним 11/07/24 Чтв 11:38:27 3218118 654
image.png 30Кб, 466x646
466x646
image.png 30Кб, 461x706
461x706
>>3218097
1. всё хорошо, всё рисуется (включая невидимый пробел), все довольны
2. вообще ничего не отрисовалась
Аноним 11/07/24 Чтв 11:49:19 3218132 655
>>3218118
Ну значит дело либо в системе, либо компиляторе. Тут мои знания уже всё.

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

К примеру у меня на винде и gcc после тильды идет домик, а потом перебирается русский алфавит.
Аноним 11/07/24 Чтв 13:18:02 3218274 656
>>3218132
>максимальное значение 127
256

>>3218097
>Дальше ты забиваешь болт на преобразование типов и ЙОЛО пишешь значение типа int в строку

>Дальше ты забиваешь болт на преобразование типов и ЙОЛО пишешь значение типа int в строку
да это похуй ваще
можешь йоло дабл высрать в %c но лучше в %s тогда больше байт высрется в юникоде

>>3217985
будет инициализация числом представленным в виде литеры
Аноним 11/07/24 Чтв 14:58:41 3218333 657
>>3218274
>256
Во-первых, unsigned char, а во-вторых 255.
Просто char +-127.
Если мы говорим про стандартную реализацию.

Подключай limits.h и смотри сам CHAR_MAX и UCHAR_MAX

>да это похуй ваще
Похуй, если твои ожидания - твои проблемы.
Не похуй, если ты хочешь получать ожидаемый результат.
Аноним 11/07/24 Чтв 15:18:47 3218355 658
>>3218333
-128/+127, раз уж доёбываемся сегодня.
Аноним 11/07/24 Чтв 15:21:21 3218357 659
Аноним 11/07/24 Чтв 16:12:22 3218416 660
>>3218333
какой результат ты ожидаешь получить пихнув децимал и распечатав его как строку символов? твоя мать умрет если не ответишь в этот тред?
душнила блядь душная напридумывал тут ожиданий каких то
Аноним 11/07/24 Чтв 16:35:56 3218451 661
>>3218416
Я ожидаю от себя не пихать децимал > 127 в чар без преобразования типа, потому что компилятор мне нассыт за это в жопу, вместо того чтобы подтереть.

Ты ебучего Прату вообще не читал? У него там дохуя умного написано, попробуй.
Аноним 11/07/24 Чтв 16:41:10 3218460 662
>>3218451
у тя чот с компилером нелады, отрицательный децимал в юникоде это дефолт тема для русик ленгвиджа, надо всего лишь понимать как работают кодировки, а не ебучего пирата читать
от меня ты можешь ожидать что хочешь, на это мне абсолютно поебать
Аноним 11/07/24 Чтв 16:46:18 3218467 663
>>3218460
У меня всё в порядке с компилером, а у того анона залупа вылезла на губе, потому что у него компилер оказался другой.

При этом стандарту поебать, что ты там понимаешь и не понимаешь.

Там четко прописано, что не лезь, блядь, а то заглотишь хуя немытого, но можешь пробовать у нас демокртатия. Хули тебе ебаклаку не понятно?
Аноним 11/07/24 Чтв 16:49:02 3218476 664
>>3218467
не понятно почемы ты душнила ебаная пеняешь на компилер когда отрицательные чары превратить в читаемые символы проще простого, достаточно погуглить юникод а не заниматься шизотерией пирата
Аноним 11/07/24 Чтв 16:51:12 3218480 665
>>3218476
Потому, дурнина тупорогая, что помимо пекарни есть еще сотни устройств и помимо gcc сотни компиляторов, где твой хак не будет работать. И именно поэтому тебе, еблану, в стандартах расставляют предупреждения об этом.
Аноним 11/07/24 Чтв 16:57:41 3218490 666
>>3218480
покажи предупреждение о неработающем юникоде
Аноним 11/07/24 Чтв 17:10:53 3218516 667
>>3218490
>предупреждение о неработающем юникоде
Это троллинг тупостью?
Аноним 11/07/24 Чтв 17:14:08 3218522 668
>>3218516
ну и почему ты сливаешься?
Аноним 11/07/24 Чтв 18:07:51 3218610 669
>>3218522
Братан, да хуярь, как на питоне, компиль узнает своих. Кто я такой, чтобы тебя отговаривать?
Аноним 12/07/24 Птн 00:56:42 3218920 670
chromeXMLqEwbyU4.png 18Кб, 671x562
671x562
Раз уж сегодня был день цирка, подброшу. В отличие от смелого переполнения чара вот такая хуйня даже не UB.
(Пчел, за переполнение знаковых я на код ревью тебя без премии оставлю, если будешь защищать такое. Стажёру простительно, но у нас даже на собесах спрашивают, что будет, если к инту макс_инт прибавить 1, и что будет если к юинту макс_юинт прибавить 1, и почему одно UB, а второе нет.)
Аноним 12/07/24 Птн 08:35:20 3219022 671
Аноним 12/07/24 Птн 10:07:43 3219044 672
>>3218920
>уб шиз в очередной раз насрал в тред своей шизой
ясн
Аноним 12/07/24 Птн 10:16:09 3219047 673
>>3218920
Круто, даже не думал про такое.
На первый взгляд не понятно, но в целом логично.
Хотя компилятор всё же ругнулся перед тем как дать результат.
Аноним 12/07/24 Птн 10:28:48 3219054 674
image.png 9Кб, 414x249
414x249
>>3219047
В тему цирка - в этом случае ещё более интересное поведение.
Аноним 12/07/24 Птн 10:56:17 3219108 675
>>3219054
Так тут вроде всё то же, не? "Конкатенация" чисел на чарах и доп вывод байтами этого числа для наглядности.
Аноним 12/07/24 Птн 10:58:05 3219113 676
image.png 47Кб, 873x571
873x571
>>3218920
это у тебя просто рандомная шиза компилятора, или в этом есть глубинный смысл?
Аноним 12/07/24 Птн 10:59:23 3219116 677
>>3219113
В этом есть глубинный смысл, завязанный на байтоеблю непосредственно
Аноним 12/07/24 Птн 11:03:44 3219121 678
image.png 9Кб, 362x64
362x64
Это (пикрил) рандомная шиза одного, конкретного анона, или этот тред имеет сокрытый, глубинный смысл (тред педофайлов, с реквестами на разогнанные цп)?
Аноним 12/07/24 Птн 11:05:23 3219125 679
>>3219113
Так ты запусти это же просто warning.
У меня на гцц тоже работает хз как и почему лол.
Аноним 12/07/24 Птн 11:07:59 3219130 680
>>3219113
>>3219125
Си берет буквы в одинарных(это важно) кавычках, делает из них числа и складывает цифры этих чисел вместе, получая инт.
Аноним 12/07/24 Птн 11:08:36 3219133 681
>>3218920
Подозреваю что в int у нас попадает адрес начала строки. Поправьте если не так.
Аноним 12/07/24 Птн 11:09:31 3219134 682
>>3219130
Тогда бы число и выводилось
Аноним 12/07/24 Птн 11:10:10 3219136 683
>>3219108
>"Конкатенация" чисел на чарах и доп вывод байтами этого числа для наглядности.
Ну ты запусти и наглядно увидишь, что такое little endian, а заодно увидишь утверждение этого >>3219130 , что это число не может превышать инт.
Аноним 12/07/24 Птн 11:12:09 3219140 684
>>3219136
Уже, это оба я.
Вот так повеселее будет.

#include <stdio.h>

int main(void)
{


int x = 'k';
int y = 'ke';
int z = 'ker';
int a = 'keru';
int b = 'kerus';
printf("k\t%d\t%s\n", x, &x);
printf("ke\t%d\t%s\n", y, &y);
printf("ker\t%d\t%s\n", z, &z);
printf("keru\t%d\t%s\n", a, &a);
printf("kerus\t%d\t%s\n", b, &b);

return 0;
}

>>3219134
У тебя всё в компе числа, потому там и используется адрес переменной, а не переменная.
Аноним 12/07/24 Птн 11:12:26 3219141 685
>>3219134
Так число и выводится! Просто спецификатор %s "напрямую" берёт участок памяти и каждый байт преобразует в символы из таблицы ascii.
Аноним 12/07/24 Птн 11:12:47 3219144 686
>>3219121
>рандомная шиза одного, конкретного анона
зис
ему сказали что можно пихать чо угодно куда угодно и это просто биты в байтах, он порвался и пошел срать уб шизой и "цирком"
Аноним 12/07/24 Птн 11:20:36 3219148 687
>>3219130
Да не фигня ничего он не складывает.

int a = 'kek';
putchar (a);

// k
Аноним 12/07/24 Птн 11:23:40 3219149 688
image.png 53Кб, 619x957
619x957
>>3219140
Странно, что он в выделенном случае вылазит за границу своего участка памяти, и печаетает ещё и следующий участок памяти.
Аноним 12/07/24 Птн 11:25:08 3219150 689
>>3219149
Только, если закоментить/убрать объясвление и инициализацию переменной b, этот баг исчезает.
Аноним 12/07/24 Птн 11:28:24 3219154 690
image.png 55Кб, 686x938
686x938
>>3219149
>>3219150
Пока только так додумался его победить лол.
Аноним 12/07/24 Птн 11:28:57 3219157 691
image.png 65Кб, 908x571
908x571
Аноним 12/07/24 Птн 11:29:14 3219158 692
>>3219148
Смотри, чар у тебя занимает 1 байт - это от 0 до 255 комбинаций.
инт а = кек - это 3 байта
к - 1 байт
е - 2 байт
к - 3 байт

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


>>3219149
Не странно, а делает то, что ему сказали.
Подключи лимит и выведи макс. Посравнивай цифры.
Если не до конца понимаешь, то еще %x выведи, и посмотри байтами.

>>3219157
Да, оно
Аноним 12/07/24 Птн 11:42:31 3219178 693
Аноним 12/07/24 Птн 15:31:36 3219436 694
image.png 58Кб, 1008x200
1008x200
image.png 39Кб, 613x399
613x399
image.png 16Кб, 571x125
571x125
Аноны, понятно, что принтф выводит строку, пока не встретит символ '\0' (пик 2 и 3), но что это за символы такие на пик 1, которые я подчеркнул зелёным цветом? Пик 1 это дамп памяти и каждую переменную (x, y, z, a, d) разделяют эти символы, причём принтф их не выводит, но для управляющих команд у них слишком большие значения, поэтому я хз, что это "мусор" или не мусор, а вы что думаете на этот счёт?
Аноним 12/07/24 Птн 15:47:43 3219460 695
>>3219436
>дамп памяти
а с чего такая уверенность что это символы, а не команды проца? ты же принтеф юзаешь, это не лоулевл сискол с жесткой передачей содержимого
Аноним 12/07/24 Птн 15:57:13 3219466 696
>>3219460
Да, похоже это инструкции процессора. Интересно!
Аноним 12/07/24 Птн 15:58:14 3219467 697
>>3219436
\0 не будет. Он есть только в массивах.

А еще можешь запитьса переменные, как int a = '101a', 101b и так далее. Будет еще страннее.
Потом поочередно закоментируй принтфы и посмотри выводы еще раз.

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

Чего я совершенно не понимаю - как он определяет, какие переменные используются в последующих инструкциях, а какие нет. Возможно дело в том, что код статический, мб в динамике будет как-то по другому.
Аноним 12/07/24 Птн 16:24:56 3219498 698
>>3219467
Что еще понял:
тащилово колбасы начинается тогда, когда переменная занимает все 4 байта, читай 4 символа, если меньше, то оно не попадает в вывод.

Поэтому в 4-5 выводе цепляются значения из предыдущего вывода.
Что всё ещё не объясняет, каким образом в этот паровоз попадает содержание неиспользуемых, но объявленных переменных.
Аноним 12/07/24 Птн 16:46:07 3219512 699
image.png 38Кб, 566x396
566x396
image.png 15Кб, 553x124
553x124
image.png 51Кб, 1003x184
1003x184
>>3219498
Анон, ты чёт запутался! Смотри пик 1 и пик 2. Эта прога выводит только i, исходя из little endian, т.к. дальше идёт символ '\0' как ты можешь видет на пике 3, следовательно 'ab' не выводится, т.к. принтф строку выводит только до нуля. Также на 3-ем пике ты можешь видеть, что после последней переменной нуль встречается через большое кол-во инструкций проца, следовательно, когда переменная занимает все 4 байта, и среди этих 4-х байт нет символа '\0', то сканф продолжает выводить "мусор" из памяти, пока не встретит нулевой байт.
Аноним 12/07/24 Птн 16:50:31 3219519 700
>>3219498
почитай про буфферы консоли я хз
гадаешь на кофейной гуще как убдаун
Аноним 12/07/24 Птн 16:50:52 3219520 701
image.png 39Кб, 671x403
671x403
image.png 15Кб, 530x123
530x123
image.png 46Кб, 628x400
628x400
image.png 21Кб, 652x127
652x127
Аноним 12/07/24 Птн 16:52:09 3219523 702
>>3219519
>почитай про буфферы консоли я хз
Дай хуйней позаниматься, заебал. Спасибо, почитаю
Аноним 12/07/24 Птн 16:53:38 3219524 703
image.png 53Кб, 983x182
983x182
>>3219520
А вот так вот выглядит дамп памяти последней проги, как видишь, нулевой байт встречается здесь только в переменной a.
Аноним 12/07/24 Птн 17:08:11 3219536 704
>>3219520
Ну так всё правильно.

Если у тебя нет \0 в последовательности, но есть число в соседней ячейке, то %s потянет его за собой, что у тебя и происходит в первой строке вплоть до \0, либо, если у тебя, например, в int a будет записано просто от 1 до 3 чаров, то оно тоже прервет чтение.

Иными словами, %s по указанному адресу хуярит, пока данные не закончатся. Поэтому на коротких чарах всё норм, а на длинных начинаются магические трюки.
Аноним 12/07/24 Птн 17:13:22 3219544 705
>>3219536
А затупил я потому, что помимо размера надо было еще адреса вывести. Тогда всё наглядно становится.
Аноним 12/07/24 Птн 17:19:08 3219553 706
>>3219544
Советую тебе также разбираться с каким-нибудь мощным дизассемблером. Если кодишь в линуксе, то это edb, либо GUI оболочка для radare2, которая называется Cutter. Если в винде, то это олли-дбг, и вообще этот курс (https://www.youtube.com/watch?v=lTrA0AKUmus&list=PLYcYkbu2jlH2dMXtMD3qky3iIgQ5yLDg7&index=1).
С асмом и этими инструментами и этими знаниями совсем иначе будешь смотреть на Си, и вообще на работу компа.
Аноним 12/07/24 Птн 17:22:41 3219555 707
>>3219553
Хорошо, спасибо. Я вообще сперва хочу упражнения из учебника дорешать и по 99 стандарту полноценно, но по диагонали пробежаться, чтобы рука набилась и не тупить на простых моментах вроде сегодняшнего. А дальше уже переходить к интересным вещам. Рекомендацию записал.
Аноним 12/07/24 Птн 17:28:22 3219565 708
>>3219555
Ну это не то, чтобы интересные вещи, просто это фундамент, на котором стоит Си. Без него никак! Ну, наверное, можно, но будет сложно. Я тоже тупил на простых функциях, пока один из анонов в прошлых тредах по Си не рассказал про дизассемблирование. И после этого я каждую непонятную штуку пытаюсь дизассемблить.
Ещё, кста, запиши к себе в рекомандации этот сайт: https://godbolt.org/ . Когда погрузишься в дизассемблирование, то угоришь с него.
Аноним 13/07/24 Суб 16:43:01 3220142 709
>>3219553
>Советую тебе также разбираться с каким-нибудь мощным дизассемблером.
Самый надежный способ бросить учить Си ага.
Разбираться нужно с системными библиотеками и реальными программами, а не эти вот все игры.
Аноним 13/07/24 Суб 20:05:10 3220352 710
>>3220142
Ну конечно надо, кто спорит то? А что тебе, главное, мешает совместить?
Аноним 13/07/24 Суб 20:44:27 3220413 711
>>3220352
>А что тебе, главное, мешает совместить?
То что одно отвлекает от другого. Я так уже бросил однажды учить сишку из-за того что вместо нее начал учить асм который потом тоже забросил. Сейчас заново вкатываюсь.
Аноним 13/07/24 Суб 23:43:40 3220528 712
>>3220413
Так асм нужен на уровне понимания того, что происходит, когда дизассемблишь код. Никто тебя не заставляет учить асм до уровня, когда ты уже сможешь сам игровые движки на асме писать, или компиляторы. Чтобы понимать что происходит, когда дизассемблишь непонятные для тебя моменты на Си, достаточно прочесть Ван Гуйа "Программирование на ассемблере", а дальше уже практика дизассемблирования, и вообще любопытство, которое только усиливается, кода ты узнаёшь что-то новое, расставят всё по полкам в твоей голове.
Аноним 14/07/24 Вск 00:28:46 3220561 713
>>3220528
>Так асм нужен на уровне понимания того, что происходит, когда дизассемблишь код
Только вот зачем тебе нужно дизасмить код? Все сто пятьсот тысяч чужих библиотек которые делают 90% работы тоже дизасмить будешь?
Аноним 14/07/24 Вск 02:08:53 3220586 714
>>3219498
Ебать тут нафлудили конечно. А секрет прост.
В одинарных кавычках не просто символ, не 1 байт. Символьный литерал имеет тип int. И поэтому до 4 байт спокойно в него помещается, причём литерал из трёх букв, например 'rek', представлен в памяти как k, e, r, 0. ← А это валидная строка со \0 на конце. С 4 буквами строка уже без \0, и может печатать содержимое соседних переменных или мусор.
А компилятор ругается только на неявное приведение типов указателя, можно просто явно кастануть.
Аноним 14/07/24 Вск 08:16:54 3220679 715
>>3220528
> когда дизассемблишь непонятные для тебя моменты на Си
Ёбнулся что ли? Если непонятен кусок кода на С, то на асме будет ещё непонятнее, плюс туда вмешиваются оптимизации компилятора.
Аноним 15/07/24 Пнд 13:06:12 3221784 716
146c79c9f525151[...].jpg 382Кб, 868x1228
868x1228
Хочу сделать поддержку A/B для настроек одного проекта, который поддерживает одновременно ESP32/STM32 через platformio. Смысл в том чтобы нивелировать риск отключённого питания в момент записи. Внимание на эту проблему обратили как раз сработки по такому риску. Знающий анон может даже угадать, что за проект такой

в стм32 запись сразу в eeprom, и реализовать идею будет просто.
в есп32 какая-то хитровыебанная ёбань с nvs, который представляет собой апишку записи-чтения в формате key-value.
внимание вопрос, можно ли писать напрямую в память в есп32? Не случайно там используют эту ненужную хуйню. В esp8266 например эта апишка заботится о том, чтобы NOR-память чистилась как надо

в есп32 для nvs апи есть запись в большущий блоб, но при записи придётся писать сразу дохуя памяти ради маленькой 8битной настроечки


для того чтобы сделать атомизированную память в еспшках надо хитровыебаться в общем
Аноним 15/07/24 Пнд 15:10:22 3221896 717
>>3221784
для начала оденься обезьяна
Аноним 15/07/24 Пнд 16:56:38 3221965 718
image.png 42Кб, 931x759
931x759
>>3220586
почему x считается за int, если создаётся как char?
типа компилятор насильно превращает его в int из-за инициализации строкой?
Аноним 16/07/24 Втр 00:19:18 3222203 719
>>3221965
Потому что строка — это указатель. Т.о. образом ты инициализируешь char указателем, который неявно приводится к int'у.
Аноним 16/07/24 Втр 00:32:56 3222205 720
>>3221784
Если я правильно понимаю, это этот nvs — по сути какая-то библиотека для работы с flash-памятью? Ты напрямую можешь конечно в неё писать, но очень ограниченно. Если на пальцах, то у тебя есть две операции — стереть сектор целиком (по-моему обычно минимум 4096 байт, смотри к доки к своей железке), т.е. заполнить его 1, либо выставить произвольный бит в 0. Выставить произвольный бит обратно в 1 ты не можешь. Поэтому видимо этот nvs и пишет сразу большой блоб. Тебе часто менять эти настройки надо что-ли?
Аноним 17/07/24 Срд 19:51:15 3223658 721
Двач, я слышал что битовый сдвиг быстрее чем деление на степень двойки или деление по модулю. Стоит ли использовать битовые сдвиги, или умный компилятор сам всë заменяет?
Аноним 17/07/24 Срд 20:06:07 3223668 722
>>3223658
> умный компилятор сам всë заменяет?
This, хотя зависит от упоротости компиляторописателя. Китайцы, например, могут и не заморачиваться.
Аноним 17/07/24 Срд 20:19:26 3223673 723
>>3223658
>>3223668
Ещё была фишка в компиляторе от ARM, деление на константу преобразовывал в умножение на магическое число и сдвиги. Алгоритм известный, но больше такой магии ни в одном компиляторе не встречал.
указатели Аноним 18/07/24 Чтв 00:02:27 3223806 724
Можно ли быть уверенным, что размер под тип void будет такой, чтобы можно было обратиться к любой ячейке памяти?

Не будет ли так, что будут учейки, номера которых вне диапазона void
?
А вообще в чем смысл делать тип вида size_t?
Аноним 18/07/24 Чтв 14:55:55 3224420 725
>>3223806
Ну так посчитай сам диапазон адресуемой памяти для своей целевой платформы. Например на 64 битном процессоре это будет 2^64. Правда обычно ОС не даёт приложению напрямую обращаться к памяти, а делается это через виртуальную память и значимыми в указателе являются не все биты. В линуксе это вроде 48, т.е. 2^48=256 Tb, что всё равно является дохрена большим числом.

size_t это тип, который может хранить размер максимального объекта. Используется для всяких подсчётов длин и счётчиков в циклах. Если использовать какой-нибудь unsigned int для этих целей, то при запуске программы на другой платформе его может не хватить.
Аноним 22/07/24 Пнд 12:40:23 3227620 726
Может я не до конца догнал, но вроде видел как кто создаëт список через typedef enum, а кто то просто пишет enum, есть ли разница?
Аноним 22/07/24 Пнд 15:01:52 3227718 727
>>3227620
Это вкусовщина. Алиасы через typedef делают, чтобы не писать каждый раз enum или struct.
Аноним 23/07/24 Втр 10:49:29 3228484 728
>>3227718
Это то же вкусовщина. Алиасы через define делают, чтобы не писать typedef'ы в коде в котором все алиасы были заданы дефайнами например.
Аноним 25/07/24 Чтв 02:10:20 3230312 729
Если malloc'ом взять кусок памяти, то после завершения работы программы он освободится или будет висеть занятым?
Аноним 25/07/24 Чтв 09:01:33 3230399 730
Аноним 25/07/24 Чтв 10:49:23 3230469 731
>>3230312
Он будет висеть занятым, т.е. там будут те данные, которые твоя прога туда загнала, но этот кусок памяти будет помечен осью, как то, что могут юзать процессы, поэтому, если твоя следующая прога будет использовать этот же кусок памяти, то в нём ты сможешь обнаружить то, что оставила твоя предыдущая прога, это называется мусор.
Аноним 25/07/24 Чтв 11:38:54 3230507 732
двач я во всей этой теме не силён, простите мою возможную наивность.
допустим мне нужно прочитать данные по какому то рандомному адресу. просто так операционка мне это сделать не даст, сразу же выдаст сегфолт. а выдаёт она переменные с рандомными адресами. можно ли инициализировать переменные до тех пор, пока её адрес != нужному мне. и после этого прочитать. получается я могу получить доступ почти к любой свободной ячейки памяти и прочитать что там оставила прошлая программа
Аноним 25/07/24 Чтв 11:54:33 3230522 733
>>3230507
А почему ты просто сразу по нужному адресу не хочешь обратиться, разыменовать этот указатель и записать в переменную?
Аноним 25/07/24 Чтв 12:50:23 3230635 734
>>3230507
>>3230522
Аноны, подождите, а разве так можно делать:
>сразу по нужному адресу не хочешь обратиться, разыменовать этот указатель и записать в переменную?
Под каждый процесс же выделяется виртуальное адресное пространстов, следовательно, за это пространство мы же не можем выйти?

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

Или я в чём-то неправ? Тыкните мордочкой, анонсы!
Аноним 25/07/24 Чтв 12:53:42 3230646 735
>>3230469
Это не совсем так. Из-за вопросов безопасности ни одна ОС не делает так уже очень давно. Они держат пул свободных обнулённых страниц. Когда приложение запрашивает память ему выдаётся страница из этого пула с нулевыми значениями. Дальше с этой памятью работает аллокатор приложения, и если много раз освобождать и занимать её, то только тогда там появится мусор. После завершения работы приложения, ядро в бекграунде снова почистит эти страницы.

>>3230507
Нет, нельзя (на декстопных ОС). Приложение работает с виртуальной памятью, адреса которой ОС транслирует в реальные физические адреса. Области памяти разных приложений не пересекаются (в общем случае).
Аноним 26/07/24 Птн 14:22:52 3231634 736
Адреса, с которыми идёт работа в си, виртуальные или физические?
К примеру:
int main()
{
int i1=20;
void* i2=&i1;
}
В i2 физический адрес или виртуальный?
Аноним 26/07/24 Птн 14:36:21 3231641 737
>>3231634
Виртуальный конечно же. До физического тебя ОС не подпустит.
Аноним 27/07/24 Суб 02:49:52 3232394 738
>>3231634
>>3231641
ОС — это тоже программа на си, которая вполне работает с физическими адресами...

Правильный ответ — зависит от программы и среды.
Аноним 27/07/24 Суб 08:51:29 3232454 739
>>3232394
>конкретная программа.
>конкретный вопрос.
>а вот если у рыб были вши.
Куда ты лезешь, умничать, ебанашка?
Аноним 27/07/24 Суб 12:58:00 3232585 740
>>3232454
зашивайся убдаун, он прав
Аноним 27/07/24 Суб 14:27:15 3232690 741
>>3232454
>>3232585
>>3231641
>>3231634
Да вы все тут дауны, успокойтесь. Адрес в си это просто адрес, и сам ЯП не различает, физический он или виртуальный.
Аноним 31/07/24 Срд 15:52:29 3236660 742
#include <stdio.h>

int main() {
for (unsigned short i=0; i<256; i++)
printf("%d\n", 42 (i100000/255) / 100000);
return 0;
}

Если ПРОСТО конвертить во флоут будет по эффективности разница?
Аноним 31/07/24 Срд 15:53:01 3236662 743
image.png 30Кб, 776x541
776x541
Аноним 01/08/24 Чтв 00:39:40 3237025 744
>>3236660
смотря что ты вкладываешь в понятие эффективности
не пойми меня неправильно, но судя по твоим каракулям ты под этим словом можешь подразумевать как скорость исполнения/сложность алгоритмов так и получение хотя бы какого то числа отличного от нуля
Аноним 01/08/24 Чтв 09:32:05 3237203 745
>>3236660
Ты определенно точно ускоришь код поделив 10000 на 10000 в уме. Но лучше всё же уточнить, что имеется ввиду в реквесте.
Аноним 07/08/24 Срд 22:18:20 3243531 746
image 219Кб, 2172x192
2172x192
вниманиеблядствую своим вайлом проходите мимо
Аноним 08/08/24 Чтв 01:29:15 3243617 747
>>3243531
Уже три часа прошло, длина всё вычисляется? Чел, у тебя на куче 4 гига мусора по кольцу пересчитываются.
Аноним 08/08/24 Чтв 10:03:32 3243713 748
Аноним 08/08/24 Чтв 12:12:03 3243832 749
>>3243713
А почему не должно? Ты strlen написал
Аноним 08/08/24 Чтв 13:23:37 3243870 750
image 288Кб, 1178x894
1178x894
>>3243832
учи мемы, чтобы не быть баттхертом
Аноним 09/08/24 Птн 15:35:02 3244663 751
а как на ваешм си выполнять практические задачи? к примеру, хочу сам, своими ручками написать программу, которая при нажатии комбинации клавиш на клавиатуре открывает командную строку. Изучил синтаксис, функции, переменные, массивы, адресную арифметику, битовые операции, что дальше?
Аноним 09/08/24 Птн 18:47:20 3244904 752
>>3244663
используй клавиатуру
Аноним 09/08/24 Птн 19:25:17 3244943 753
>>3244663
Садишься сверху на прерывание обработки клавиши и отдаёшься
Аноним 09/08/24 Птн 22:57:36 3245137 754
>>3244663
Как можно быть таким дауном?
Аноним 10/08/24 Суб 00:04:03 3245165 755
Ну как всегда 0 полезной инфы, помню тут еще пол года назад спрашивал, как сделать программу, блокирующая клавиатуру, тоже никто ничего внятного ответить не смог
Аноним 10/08/24 Суб 01:57:47 3245193 756
>>3245165
ты за полгода так и не понял куда гуглить
>Как можно быть таким дауном?
/трид
Аноним 10/08/24 Суб 07:56:07 3245243 757
>>3245165
Это вопрос про особенности ОС и си как язык тут не причём. Это как спрашивать: научился забивать гвозди молотком, почему я не могу построить дом? Потому что это отдельный большой пласт знаний. К тому же ОС разные и твои хаки клавиатуры будут тоже отличаться на разных ОС по исполнению. Во времена MS-DOS действительно сами писали обработчики прерываний. Так что тебе верно ответили. Научись формулировать свои мысли точнее.
Аноним 10/08/24 Суб 08:21:51 3245252 758
>>3244663
Книги по системному программированию в UNIX/Windows тебе в помощь.
Аноним 10/08/24 Суб 21:27:51 3245976 759
Спашивал в треде ньюфагов, спрошу и тут на всякий. По чему учить С? Нашёл https://beej.us/guide/bgc/ и https://publications.gbdirect.co.uk/c_book/ но смотрю что большинтсво берут ту самую от Кернигана и Ритчи. В треде ньюфагов порекомендовали C Programming: A Modern Approach потому что там хорошие упражнения. Что скажете?
Аноним 10/08/24 Суб 22:05:21 3246005 760
>>3245976
>По чему учить С?
по любой из представленных на рынке книг
книга K&R прекрасна, но с подвохами, мы уже как то срались в другом тредике по поводу задачи, которая якобы то нерешаема, то это кривой перевод и имелось ввиду другое.
имелось ввиду то самое и она решаема, но вероятно анон так и не решил задачу
Аноним 10/08/24 Суб 22:11:26 3246009 761
>>3245976
upd:
срач был в этом итт треди вот задача -- >>3084105
сокеты и пакеты Аноним 10/08/24 Суб 22:15:40 3246014 762
1) Если с использованием функции send отправить сообщение, то оно отправится в одном пакете?
2) как вообще работать с пакетным уровнем в си?
Аноним 11/08/24 Вск 01:14:41 3246120 763
>>3245976
Учить его чтобы что? Вот вопрос, на который ты должен ответить. Если тебе на си задачки порешать или там отбор в школу 21 затащить, то поучи его в курсе на степике и не трать своё время.
Если именно серьёзно учить сам язык, то на мой взгляд есть два варианта:
Modern C for Absolute Beginners от Apress, очень круто именно для новичков, с задачками и примерами распространённых ошибок. Но я не знаю, есть ли она на русском.
В пару к ней Стивен Прата − Язык программирования С. Последнее издание, 6е. Это больше справочник, где те же темы разобраны глубже, если нужно.

K&R нахуй не нужно даже открывать, это ловушка. Это говно мамонта, в котором в принципе даже не рассмотрены важнейшие темы, по которым тебя будут ебать на собесах на си девелопера. А хорошая часть из того что рассмотрена, давно устарела.
Аноним 11/08/24 Вск 01:26:12 3246124 764
>>3246014
1. Зависит от типа сокета настроек сети, конечно. Если сообщение размером больше MTU, как оно отправится одним пакетом? Будет разбито. От типа сокета тоже. Потоковый сокет тоже не гарантирует один пакет, даже если сообщение меньше MTU.
2. Да как угодно, это же си! Можно работать с RAW_SOCKET и вручную собирать пакеты и заголовки, если хочется. Можно пользоваться готовыми. Можно подрубать библиотеки для упрощения, от pcap для работы всё ещё на низком уровне, до curl, где уже всё есть. Обычно конечно с curl, нахуй изобретать велосипед-то.
Аноним 11/08/24 Вск 01:29:08 3246127 765
>>3246124
>Обычно конечно с curl, нахуй изобретать велосипед-то.
Хотя это конечно уже не пакетный уровень, сорян. Libnet тогда.
Аноним 11/08/24 Вск 01:48:29 3246131 766
>>3246005
>>3246120
>книга K&R прекрасна
>K&R нахуй не нужно даже открывать, это ловушка.
duality of a man

>это кривой перевод
Я и не собирался на русском читать. Мне хватило просто увидеть перевод одной книги чтобы понять что переводы говно.
>Учить его чтобы что?
Делать 2д игры на SDL. Ну т.е., ебли всяких STM не предусматривается.

>>3246009
Знать бы ещё какая страница.
Аноним 11/08/24 Вск 02:21:11 3246138 767
>>3089393
А, вот. Ну, кстати, с наскока непонятно что просят. Типо чтобы длина хранилась прям любая но при этом сама строка может выводится не полностью?
Аноним 11/08/24 Вск 02:54:55 3246144 768
>>3246138
в переводе все таки яснее написано
Аноним 11/08/24 Вск 10:57:13 3246212 769
изображение.png 8Кб, 399x202
399x202
изображение.png 7Кб, 498x152
498x152
изображение.png 9Кб, 529x180
529x180
изображение.png 12Кб, 517x214
517x214
>>3246009
Анон, объясни, пожалуйста, а что тут сложного?
Если у нас в условии есть строка, то, следовательно, она либо где-то хранится, либо её подают на ввод. Следовательно, если её подают на ввод, то пик1; если уже есть строка, то пик2; если же надо таки посчитать длину строки, то пик3 или 4. Конечно, до пик3 и пик4 можно доебаться, что типа они ограничены длиной строки (2^31 - 1) и (2^64 - 1), а потому это всё не робит... Но типа мы ограничены тем, что только вкатываемся в кодинг, а потому ещё не про различные алгоритмы и структуры данных, которые позволили бы преодолеть рубеж длины строки в 2^64 - 1.

Короче, анон, я чёт не понял в чём подвох в этом задании, поэтому прошу помощи в пояснении.
Аноним 11/08/24 Вск 13:14:43 3246286 770
>>3246212
опять начинается это верчение жопой вокруг пня
книгу открой и почитай ой как сложна а пачиму ты проста ни сделаишь гетчар ой пук хрюк мы же проста вкатунишки и ограничение пазвалитильна пук пук
Аноним 11/08/24 Вск 15:56:22 3246401 771
>>3246131
>>книга K&R прекрасна
>>K&R нахуй не нужно даже открывать, это ловушка.
>duality of a man
Кернигана-Ритчи предлагают читать те, кто собственно не работает на си с какими-то реальными задачами. Преподы и студенты, в основном. Ебутся с какими-то бессмысленными сферовакуумными задачками и теорией CS, а потом удивляются, почему их красный диплом никому не интересен на собесах.
Аноним 11/08/24 Вск 16:03:35 3246404 772
>>3246401
Собственно, вся суть выше в треде с этой задачкой. Её решение никого не интересует, зато на собесе спросят, "Чё кодил по многопоточке, рассказывай."
Аноним 11/08/24 Вск 16:40:26 3246427 773
>>3246404
что мешает в свободное время покодить каэр? не все развиваются через аниме
Аноним 11/08/24 Вск 16:50:41 3246436 774
>>3246427
В основном отсутствие смысла. Если мне захочется кодить на си в свободное время, я в опенсорс буду что-нибудь полезное контрибьютить.
Аноним 11/08/24 Вск 17:00:24 3246443 775
>>3246436
коденг ето процесс, а не результат, совсем уже мозги пропил дед старый
Аноним 11/08/24 Вск 17:43:06 3246465 776
>>3246443
Хех, главное на собесе такое не говори.
А так да на здоровье, кому что нравится. Я действительно люблю результат. И ещё тестами обмазывать.
Аноним 11/08/24 Вск 19:58:52 3246624 777
изображение.png 32Кб, 775x477
775x477
>>3246286
Учитывая условия:
>Из доступных инструментов первой главы: ветвления ифами, циклы, массивы, функции (без поинтеров, векторов, макросов и всего прочего).

То пикрил. Конечно, если в системе хватит памяти, то MAXLINE можно установить в 2^64 - 2. Что-то большее использовать, учитывая условия, нельзя, потому что надо создавать другие структуры данных, а не исходить только из массива. Конечно, можно доебаться до того, что можно юзать динамический массив, а потому, если хватит памяти, то можно преодолеть и 2^64, но и там не обойтись только массивом, потому что арифметика указателей не позволит использовать целые неотрицательные, больше 2^64 - 1.
Аноним 11/08/24 Вск 20:52:06 3246671 778
>>3246624
да бля
там прикол как раз в том чтобы написать эту хуйню без хранения строки в массиве величиной макслайн
это же очевидно из слов без ограничений
в этой задаче ограничение это макслайн, ты его просто раздвинул, а без ограничений по макслайну могешь?
я написал без хранения строки в массиве (но у меня вроде все равно есть макс длинна ограниченная верхней планкой ансигнел лонг лонг инта для счетчика символов)
Аноним 11/08/24 Вск 20:57:59 3246676 779
17233630346043.png 11Кб, 517x214
517x214
>>3246671
Вот это твой код? А в чём ты хранишь строку, если не в массиве? Если это компилить на линуксе, то ты её вообще дважды хранишь, в сегменте .text и на стеке, а стек у тебя 8Мб ограничен по дефолту, и никакой ансигнел лонг лонг не нужен, эта шляпа вылетит в сегу задолго до того как переполнится обычный 32-битный uint.
В винде вообще 1Мб емнип.
Аноним 11/08/24 Вск 21:06:17 3246679 780
image 420Кб, 2198x1054
2198x1054
>>3246676
не, это не мой
ладно хуй с вами, раз сами не можете решить
храню в выводе консоли
Аноним 11/08/24 Вск 21:35:10 3246695 781
>>3246671
>>3246679
Чел, ну это хуцпа какая-то!
Прикол то в том, что нужно вывести максимальную строку из всех тебе поданных, а ты выводишь вообще все строки. И где здесь решение? Просто нужно признать, что эта задача с "подвохом" и "подвох" в том, что есть ограничения на размер массива, следовательно, и ограничение на массив символов. Это само ограничение даже исходит из того, что арифметика указателей не позволит тебе взять индекс массива больше 2^64 - 1, и не говоря уже о том, что есть ограничения по размеру памяти, ограничения в архитектуре проца, даже, если технические моменты считать преодолимыми, то ты упираешься в ограничение самого Си, а именно в ограничение арифметики указателей.
Поэтому моё решение самое верное! Оно позволяет выводить саму строку и её длину, независимо от длины этой строки, и насколько позволяет система.
Аноним 11/08/24 Вск 21:55:21 3246704 782
>>3246695
у моего решение есть проблемы, но чот мне лень над этим думать, писалось полгода назад на похуй, строку в 2 гига шлепает и ладно
твое решение позволит вывести строку в 2 гига?
Аноним 11/08/24 Вск 21:58:36 3246709 783
>>3246704
Ну, если попердолиться с ограничениями ОСи, то позволит.
Аноним 11/08/24 Вск 21:59:38 3246712 784
>>3246709
о, надо ради этой задачи свою ось написать, тогда попрет, да?
воистину ахуенная книга
Аноним 11/08/24 Вск 22:42:53 3246765 785
>>3246695
Подожди, какой вообще нахуй long long, это C99, а не K&R / ANSI C. В книжке нет никаких лонг лонгов и вообще 64-битных целочисленных, а есть максимум 32-битный лонг. Ну и конечно авторы не ебались с такой хуйнёй, потому что даже представить не могли строку в 2 гига.
Аноним 11/08/24 Вск 22:58:12 3246780 786
>>3246765
ну блядь сишник машинозависимый и на моей машине есть лонг лонги в чем предъява нахуй?
Аноним 12/08/24 Пнд 00:30:32 3246831 787
>>3246780
На твоей машине всё есть, можно и на С23 кодить. А в книжке-то нет, то есть ты не по ней си учишь, получается.
Аноним 12/08/24 Пнд 01:18:34 3246838 788
>>3246831
я учу по алфавиту и первая буква в нем это С
Аноним 12/08/24 Пнд 08:48:51 3246891 789
А вы про какую книжку говорите вообще?
Аноним 12/08/24 Пнд 12:50:24 3247102 790
image.png 494Кб, 800x1056
800x1056
image.png 27Кб, 701x239
701x239
>>3246891
Пикрил1.
>>3246624
>>3246671
Мне кажется, смысл задачи в том чтобы если MAXLINE будет скажем 10, а строка 25, то вывести первые 10 символов и 25 как длину. Это первый раздел, это не должно быть настолько заёбистым чтобы лезть во всякие ограничения ОС. Ну и там сказано редачить именно main что как бы намекает.

Тут такое дело, решил по приколу написать что-то типо стринга из плюсов чисто чтобы поиграться и получаю прикрил2. Код: https://privatebin.net/?c632c88f4bebc789#2D8HGjYGwhMswCYsfcVFwmoMUcu9HVrCtLbRCxLNn3xW
Я немного не вьехал, что имеется ввиду. Как s может быть невалидным? При том ворнинг висит только на getString() и deinitString().
Аноним 12/08/24 Пнд 14:35:37 3247212 791
>>3247102
А что это триггерится, статический анализатор? Может ему не нравится, что нет проверки на NULL после аллокации/перед деаллокацией.
Аноним 12/08/24 Пнд 14:36:25 3247213 792
изображение.png 8Кб, 629x124
629x124
>>3247102
size может быть равен нулю, тогда s->data будет указывать на NULL.
Аноним 12/08/24 Пнд 15:32:13 3247280 793
>>3247102
>Пикрил1
Ну так то я тоже такую читаю и у праты
Аноним 12/08/24 Пнд 20:10:21 3247531 794
>>3247212
Что-то в CLion, может clang-tidy, может Resharper C++.
Но это баг, судя по всему.
https://youtrack.jetbrains.com/issue/CPP-25277/Bogus-local-variable-may-point-to-deallocate-memory-warning
https://youtrack.jetbrains.com/issue/CPP-21666/Wrong-warning-Local-variable-data-may-point-to-deallocated-memory
>>3247213
Если бы.
https://en.cppreference.com/w/c/memory/malloc
>If size is zero, the behavior of malloc is implementation-defined. For example, a null pointer may be returned. Alternatively, a non-null pointer may be returned; but such a pointer should not be dereferenced, and should be passed to free to avoid memory leaks.
Ну и жаловалось оно не на data а именно на сам s целиком.
Пропал ворнинг когда я немного переписал код, чтобы init при size = 0 сразу NULL в казатель ебашил и потом проверку на NULL перед вызовом free в функции set добавил.
Новая версия: https://privatebin.net/?5c4248b0e27eb4d1#GgykRpdZD831tKTtCWnvBod2pn2R77ivk14Y49QhJ335
Что я мог забыть/упустить? в плане дыр в памяти и UB
Аноним 12/08/24 Пнд 20:34:58 3247540 795
>>3247531
>Что я мог забыть/упустить?
то что это нахуй ненужное говно?
Аноним 12/08/24 Пнд 22:16:47 3247608 796
>>3247540
Ну да, но это отличная практика. Знаю что есть дауны которые не могут в поинтеры вообще.
Аноним 12/08/24 Пнд 22:20:31 3247612 797
>>3247608
согласен с тобой
я придерживаюсь такой же мысли - лучше писать, чем не писать, даже если это никому не нужно говно
блокчейн и каскады ИИ то же в 50х никому нахуй не были нужны
Аноним 13/08/24 Втр 11:58:26 3247879 798
>>3245252
а можно конкретно автора, книгу?
Аноним 13/08/24 Втр 12:02:04 3247883 799
>>3245243
нет, ответили неверно
Аноним 13/08/24 Втр 12:05:15 3247889 800
>>3247883
Забей, ты всё равно не осилишь, даже если тебе дать всё необходимое.
Ты не хочешь программировать и тебе это не нравится.
Аноним 13/08/24 Втр 12:05:32 3247890 801
Аноним 13/08/24 Втр 12:06:36 3247893 802
Аноним 13/08/24 Втр 12:08:48 3247896 803
image.png 31Кб, 666x129
666x129
Аноним 13/08/24 Втр 12:10:20 3247898 804
>>3247896
Вот поэтому у тебя ничего и не получается.
Язык ты тоже не выучил.
Аноним 13/08/24 Втр 12:16:19 3247903 805
emoji-in-distre[...].gif 3366Кб, 630x640
630x640
Аноним 13/08/24 Втр 12:21:22 3247912 806
>>3246120
>В пару к ней Стивен Прата − Язык программирования С. Последнее издание, 6е. Это больше справочник, где те же темы разобраны глубже, если нужно.
Лучший учебник по программированию из тех, что мне доводилось читать. Базовые "почему" полностью закрывает.
Аноним 13/08/24 Втр 19:18:38 3248326 807
image.png 4Кб, 340x78
340x78
>>3247883
А как можно ответить на ебанутый вопрос? Всем уже и так известно что голый синтаксис как и стандартные либы зачастую в хуй никому не упёрлись и для написания конкретных программ решающих конкретные задачи надо учить ещё и как из твоего ЯП взаимодействовать с чем-то.
Аноним 13/08/24 Втр 19:50:14 3248354 808
>>3248326
>надо учить ещё и как из твоего ЯП взаимодействовать с чем-то.
Вот тут поподробнее, тоже думал с чем бы можно было перемешать синтаксис, например с картиночками или игрульку сделать простую, но смешную, или еще например микро приложение на шиндос для какойто мало нужной фигни. Например зацикленый платформер из знаков с увеличением скорости цикла
Аноним 13/08/24 Втр 21:49:37 3248489 809
Аноним 14/08/24 Срд 21:01:51 3249438 810
Эксперты русскоязычного Си-сообщества приглашаются в соседний тред для IT-аудита одной всем известной программы.

https://2ch.hk/pr/res/3249376.html
Аноним 14/08/24 Срд 23:34:18 3249628 811
>>3249438
носитесь по всем доскам как ужаленные со своим ютюбом?
Аноним 15/08/24 Чтв 02:42:04 3249657 812
Где почитать про то, какую оптимизацию делает clang/gcc?
Аноним 15/08/24 Чтв 02:56:27 3249658 813
>>3249657
вроде в мане была инфа по уровням оптимизации и конкретным флагам
ну еще в интернете почитай, надеюсь он у тебя есть
Аноним 15/08/24 Чтв 04:25:51 3249669 814
image 124Кб, 612x522
612x522
image 39Кб, 666x158
666x158
image 125Кб, 766x300
766x300
image 172Кб, 1644x394
1644x394
тесты компила лиспа в экзекьютабл бинарь и объектник
для сравнения компил сишника
профайлинг не делал, но думаю итак очевидно что лисповый бинарь отстает и по скорости исполнения то же (хотя по честному надо сделать)

что интересно объектники напоминают байткоды джавы
считай полноценное приложение, только ему нужна лисп машина, но в то же время исполняется она уже не в репле

просто балуюсь, вдруг кому интересно
Аноним 15/08/24 Чтв 15:57:39 3250109 815
>>3249657
В документации, очевидно же.
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
Но если вкратце, то O1-O3 это оптимизации бинаря по скорости в ущерб размеру и времени компиляции. О3 заметно раздувает бинарь по объёму. Os это оптимизация по размеру бинаря (но и скорости тоже, там включена большая часть флагов уровня О2). Полезно для дохлого железа типа контроллеров.
Из важного, оптимизация убирает из кода всё неопределённое поведение, и иногда получаются совершенно безумные ситуации, когда компилятор выкидывает целые куски кода или сводит целые функции к { return 0; } отлаживать код нужно без оптимизаций.
Аноним 19/08/24 Пнд 01:24:04 3252188 816
>>3250109
>оптимизация убирает из кода всё неопределённое поведение, и иногда получаются совершенно безумные ситуации, когда компилятор выкидывает целые куски кода или сводит целые функции к { return 0; }
Что? По-моему, предел это просчитать что-либо на этапе компиляции и заменить на константу в коде. Если какая-то функция, скажем, степени, должна считать 2³ то она вернёт 8 всегда и это будет захардкожено в итоге.
Аноним 19/08/24 Пнд 10:03:45 3252280 817
>>3252188
Не, смотри как он может. Вот есть код. Всё, что он делает − вызывает функцию по неинициализированному указателю. Там есть ещё куски кода, но они не используются. То есть прога ровным счётом ничего не делает. Казалось бы, такая хуйня не должна компилиться, а если компилится, то падать в сегу. Но нихуя, она компилится даже с флагами -Wall -Werror -Wextra -pedantic, а флаг оптимизации, достаточно даже O1, убирает из кода неопределённое поведение − компилятор шарится по коду и подставляет просто чё ему понравится, в данном случае неиспользуемый кусок кода. Скомпиленная с оптимизацией прога полностью валидна, не имеет ошибок и прекрасно работает, просто не совсем как задумано. Когда такая хуйня происходит в проге на десятки тысяч строк − удачи в отладке.
Вот, можешь попробовать у себя: :3
https://gcc.godbolt.org/z/bvT39cPfa
Аноним 19/08/24 Пнд 10:58:13 3252315 818
image 230Кб, 2726x836
2726x836
>>3252280
Чуть-чуть переписываем (добавил static для unused_2), чтобы у компилятора было побольше информации для оптимизаций и внезапно сегфолтов нет и UB куда-то пропал.
Аноним 19/08/24 Пнд 23:02:38 3252675 819
>>3252315
Спору нет, удобно, когда код написан так, что в нём внезапно сегфолтов нет и UB куда-то пропадает. Вот бы хотя бы почти все так код писали, а остальные знали, что именно нужно чуть-чуть переписать и добавить в небольшом проекте на 50к строк.
Аноним 20/08/24 Втр 00:29:26 3252725 820
>>3252675
ну если вы монолит пишите - земля пухом как говорится
мимо
Аноним 20/08/24 Втр 01:04:10 3252732 821
>>3252725
Вебушок, это не тот тред. Тут мой прадед улыбается мне с небес, наблюдая, как я рефакторю его труд. А твой?
Аноним 20/08/24 Втр 11:16:58 3252860 822
>>3252732
мои предки выбрали юниксвей и микросервисы, больная ты шиндузоскотина
Аноним 20/08/24 Втр 11:30:56 3252874 823
>>3252860
>микросервисы
Так это же рак ебаный. Нашел чем кичиться.
Аноним 20/08/24 Втр 11:32:57 3252876 824
Аноним 20/08/24 Втр 11:33:06 3252877 825
>>3252860
Какие предки, микросервисы хайпят от силы лет десять.
Аноним 20/08/24 Втр 11:34:21 3252878 826
>>3252877
это продолжение юниксвея, базейшая база еще с 50х
блокчейн то же хайпят недавно, а технологии уже ахуллион лет
Аноним 20/08/24 Втр 11:35:27 3252881 827
>>3252876
Потому что они всегда превращаются в колосса на глиняных ногах в итоге.
Это не значит, что монолит всегда заебись, но микросервисы от этого лучше не становятся.
Аноним 20/08/24 Втр 11:40:44 3252882 828
>>3252881
иди своей дорогой сталкер
Аноним 20/08/24 Втр 11:44:43 3252885 829
>>3252882
Хз почему ты тут, а не обсуждаешь раст. Там все твои соратники.
Аноним 20/08/24 Втр 11:48:14 3252889 830
>>3252885
мне нравится ретро, причем тут растобляди? может мне еще поzigовать?
Аноним 20/08/24 Втр 11:53:14 3252893 831
>>3252889
>причем тут растобляди?
Такие же любители модных в бизнесе подходов к разработке. У вас много общего. Не вижу никаких проблем в написании микросервисов за деньги, но нахуй за это на борде усираться?

>может мне еще поzigовать?
Зачем? Там ты не заработаешь.
Аноним 20/08/24 Втр 11:57:30 3252897 832
>>3252893
да кто усирается то, не бомби скибидимонолит
Аноним 20/08/24 Втр 12:02:59 3252901 833
>>3252897
Ну вот и выходит, что ты рак по всем понятиям.
Аноним 20/08/24 Втр 12:10:22 3252906 834
>>3252901
понятия на зоне надо было оставить, петушок
Аноним 20/08/24 Втр 12:18:10 3252910 835
>>3252906
Вот тебя и отпетушат за то, что микросервисы в губы целовал.
Аноним 20/08/24 Втр 12:27:10 3252919 836
>>3252910
монолит изо рта вынь
Аноним 20/08/24 Втр 22:12:50 3253261 837
Ребята а есть справочники по разным стандартам си? Хочу поглядеть отличия, сам чегото непоймумгде взять
Аноним 20/08/24 Втр 23:06:27 3253281 838
>>3253261
Официальные? На iso.org за солидные деньги, очевидно же. Документация по стандартам не бесплатная. Надеюсь, теперь понятно, почему было непонятно, где так просто её взять?
А так погугли, хуле. Наверняка есть дохуя сайтов со 100% скидочками на эти пдфки.
Аноним 20/08/24 Втр 23:21:18 3253283 839
>>3253281
Понял, спасибо за наводку, прост щас книгу у праты взял "лекции" Чуть члекции не написал там вроде пишет что код переписывать сильно не придеься, но это для тех книжных примеров лол
Аноним 21/08/24 Срд 00:51:01 3253306 840
>>3253283
у компилера есть флажок под нужный стандарт, так что даст консоль вообше не надо будет переписывать ничо
ну и си спроектирован с обратной совместимостью вдобавок
Аноним 21/08/24 Срд 08:25:27 3253354 841
>>3253283
Ну такое. По стандартам языка сильно переписывать не придётся, да. Даже если переписывать прадедовское говно из K&R. Где-то убрать deprecated говно типа gets(), переделать объявления и определения функций под нормальный стиль... и всё.
Но это только то, что абсолютно нужно для совместимости.
Аноним 22/08/24 Чтв 00:35:12 3253840 842
image.png 119Кб, 788x411
788x411
image.png 38Кб, 989x496
989x496
Ору. Задание в книге пик1, особое внимание на примечание про длину номеров. Угадайте что в ответах на сайте автора? Пик2. А что если какой-то из номеров будет начинаться нулями? Если что, запись в строку и/или даже базовые вещи типо if ещё не разобраны. Там задание было бы попроще.

Ну вот и нахуя, спрашивается, это уточнение про то, что, видишь-ли, нельзя предполагать длину чисел, т.к. она может быть разной, если это убивает суть задания?
Аноним 22/08/24 Чтв 07:19:35 3253878 843
image 61Кб, 1050x420
1050x420
>>3253840
>начинаться нулями?
думаю надо доделать форматный выпук модификатором длинны выпука %3d например
хотя хуй знает, нейронка говорит он пробелы будет ставить или я ее не понял
Аноним 22/08/24 Чтв 07:32:52 3253880 844
>>3253878
хотя не, хуйню несу, ничо не надо доделывать
если начинается нулями значит просто префикс такой вот короткий будет, не 978 а например 32 или 6 или вообще 0
так что все там у автора четко получается, однако он отдает задачу по проверке корректности данных пользователю, что хуево
Аноним 22/08/24 Чтв 09:46:22 3253914 845
>>3253878
Чтобы отбивало нулями, надо флаг 0 в спецификатор добавить: %03d
А вообще задача как задача, на такие мелочи похуй в целом.
Аноним 22/08/24 Чтв 10:16:35 3253927 846
>>3253306
>у компилера есть флажок под нужный стандарт, так что даст консоль вообше не надо будет переписывать ничо
Надо будет глянуть, у меня чегото сложно мингв ставился, но вроде я не везде галки наставил, посижу подумаю, понаблюдаю

>>3253354
>Даже если переписывать прадедовское говно из K&R.
Этим как раз и занимался, впринципе жить можно
Аноним 22/08/24 Чтв 16:53:47 3254162 847
>>3253878
>>3253914
Чтобы были нули надо %.5d для числа длинной 5, например. Но в задании сказано что нельзя предполагать что длина будет фиксированной при том что она фиксированная так-то. За %05d в книге, опять-таки, не написано, но да, это тоже решение.
Аноним 23/08/24 Птн 04:17:41 3254397 848
Так, я не понял, а почему оператор присваивания возвращает rvalue? Это же пиздец как неудобно и контринтуитивно.
Аноним 23/08/24 Птн 12:56:42 3254648 849
Аноним 23/08/24 Птн 22:40:16 3255062 850
>>3254648
Нет, блять, в плюсах и в принципе везде всё нормально.

int x = 25.5;
Вернёт 25. Имело бы смысл если бы вернуло 25.5. Или х. Но, сука, просто 25 это бред ебучий. Я понимаю что применений было бы не очень много (если вообще хоть какие-то), но я не понимаю почему нет. Выглядит как будто кто-то принял необъяснимое решение, а теперь менять уже поздно.
Аноним 24/08/24 Суб 02:59:01 3255105 851
>>3255062
Нет, почему, всё логично, если копнуть. Всё в си состоит из результатов выражений между сиквенс пойнтами. То есть идеальный валидный код на си выглядит как-то так:
7;
0;
-3;
(void);
25.5;
42;
Всё остальное − побочные эффекты. В твоём примере выражением будет (int)(25.5), каст подставится при препроцессинге или токенизации.
Если что-то менять в этой парадигме, то усложнится и компилятор, а ведь это одна из ключевых фишек си, что для любой залупы есть компилятор си, а если его нет, то его несложно портировать или даже написать.
Аноним 24/08/24 Суб 03:03:36 3255106 852
>>3255105
Ну ХЗ, я нахожу странным то что результат операции присваивания не соответствует ни одному из операндов. Я понимаю что каст делается неявно перед операцией и всё такое, но это всё равно контринтуитивно.
Аноним 24/08/24 Суб 03:12:26 3255108 853
>>3255106
Не спорю, действительно контринтуитивно, тем более в 2024-то году. Но и можно понять, почему так сделали и не трогали.
Аноним 24/08/24 Суб 15:53:52 3255415 854
image.png 301Кб, 2560x1388
2560x1388
image.png 170Кб, 2560x1388
2560x1388
Здравствуйте, девочки-байтоебы - извините, что не совсем по адресу, но я прям даже хз куда было бы правильно (старый /asm умер, /linux в /s засилье безмозглых чулочников меряющихся скриншотами), поэтому спрошу про pwndbg здесь.
Захотелось поковырять внутренности древней заезжанной вдоль и поперек CVE, но что-то оно не хочет мне корректно показывать содержимое кучи, если в прогу пихнуть достаточно данных и она под-map-пит несколько heap-ов (). Если пытаться скормить адрес кучи вручную, то структура с нужными данными все равно получается скоррапченная и мусорные чанки по итогу.
Знатоки потрохов glibc, помогите плес - чому так и как починить?
Аноним 27/08/24 Втр 02:26:23 3257099 855
image.png 156Кб, 771x782
771x782
Очередное мемное задание сразу даже два из этой же (>>3253840) книги.

Тут уже соль в том что в int не влазят числа которые просят прочитать. Решается банальным переездом на long long или сразу unsigned long long (unsigned int не поможет). Но угадайте что? Правильно: этого в книге пока не было. Знания читающего заканчиваются тем, что для целых чисел есть int и надо использовать %d. Про unsigned, long long и %llu пока ни слова.

Интересно, а дауны сами решали задания которые писали?
Аноним 27/08/24 Втр 04:44:02 3257101 856
AcrobatRQVNVwk8[...].png 15Кб, 726x392
726x392
>>3257099
>Правильно: этого в книге пока не было.
Этого в книге не будет и не может быть, потому что long long это C99, а книга по C89. Более того, это ты привык к 4-байтовому инту, а для авторов книги он был везде 2-байтовый, и в приложении даже даны типичные определения из limits.h для того времени.
Очевидно, авторы подразумевали какой-то другой способ решения. Думай. А лучше перестань тратить своё ценное время на какую-то музейную хуету и возьми нормальный учебник
Аноним 27/08/24 Втр 12:05:30 3257278 857
>>3257099
Интересно, если тебе дать аналогичную задачу, но со 100 цифрами в числе вместо 13, как ты оправдываться будешь?
Аноним 27/08/24 Втр 14:55:42 3257428 858
>>3257099
Ты реально такой тупой, или притворяешься?
Аноним 27/08/24 Втр 15:47:07 3257479 859
А что это за задачки?
Аноним 28/08/24 Срд 02:15:06 3257805 860
>>3257101
>>3257428
Бля, шизонул. Я криво прочитал, нужно чтобы пользователь ввёл всё число за раз но не сказано было что нужно всё прочитать в одно число. А я думал что нужно прочитать в одно число.
>long long это C99, а книга по C89
Ну вообще нет, во твором издании есть 99. Но он как side note, задачи делались под 89, то да.
>А лучше перестань тратить своё ценное время на какую-то музейную хуету и возьми нормальный учебник
Ну так я спрашивал какой. K&R это ещё более музейное говно, а больше никто ничего не предложил. Я и решил что прочитаю этот и потом по https://beej.us/guide/bgc/ пройдусь чтобы новые стандарты подучить.

>>3257278
Я буду читать в строку и потом буду парсить, а не буду создавать 11 переменных для каждой цифры. И парсить в массив скорее всего. Я понимаю что эти задачи сделаны чтобы потом показать как всё на самом деле можно охуенно сделать с массивами, но, как по мне, это уже трата времени.

>>3257479
Из http://knking.com/books/c2/
Аноним 28/08/24 Срд 12:06:07 3258002 861
>>3257805
Да не надо тебе ничего в строку читать и парсить какие-то массивы. Читай посимвольно с помощью getchar() и сразу же суммируй попеременно. Потом делаешь проверку по описанным правилам.
Аноним 28/08/24 Срд 12:48:31 3258043 862
image 236Кб, 3648x1988
3648x1988
Чот приспичило самому написать этот вариант.
Аноним 28/08/24 Срд 13:33:00 3258086 863
>>3257099
так может тебя подталкивают к реализации длинной арифметики исключительно на интах? ты так не подумал?
ваще я тут читал книгу по лиспу и там есть ахуенный пример почему мы решаем задачки так а не иначе - мы размышляем на уровне своих знаний языка. вот ты наешь что есть лонги и сразу про них подумал касательно решения, а если бы ты не знал про лонги (как и предполагалось)? а? а? а?
Аноним 28/08/24 Срд 13:35:36 3258088 864
>>3258043
шрифт уебищный
будто обратно в уник вернулся где на экране таймз нью роман ебаный а лабы надо в куриер нью печатать
боль и разочарование
моноширинный полужирный скачай себе чо как препод
Аноним 28/08/24 Срд 16:36:04 3258243 865
image.png 85Кб, 682x744
682x744
>>3258002
Ну или так. Но я как бы отталкиваюсь от того что уже было в книге. Поэтому решение там scanf("%1d%1d%1d%1d%1d...") ну ты понял. А чтение в строку хорошо для реальных программ так как проще потом проверять ввод, это я на опыте знаю.

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

>>3258088
> моноширинный
Значение слова знаешь? Потому что у него как раз моноширинный.
Аноним 28/08/24 Срд 17:34:10 3258280 866
>>3257428
>>3258243
> Ну или так.
Значит притворяешься...
Зачем эта хуеверть со степенями 10ки, scanf разве не может 16ку считывать?
Пихай её хоть в массив интов, а потом сдвиги со смазкой и сложение в цикле как анон с getchar сделал.
Только проверку диапазона 0..9 добавь, а то контролька может случайно сойтись.
Аноним 28/08/24 Срд 18:02:23 3258305 867
>>3258280
imho, конечно, но я байтоёб со стажем, и ещё узрел оптимизацию деления на константу на уровне компилятора. Вам такое не светит, похоже.
Аноним 28/08/24 Срд 20:22:56 3258420 868
g-e390ty54.jpg 28Кб, 443x180
443x180
>>3258243
Прикольные подсказки. Но сомнительно немного: как представлю какие-нибудь XSetWindowAttributes из X11...
Аноним 28/08/24 Срд 20:36:10 3258427 869
gbt4r7.jpg 9Кб, 341x174
341x174
>>3258088
>шрифт
Он просто какой-то очень узкий.
>куриер нью
Хороший. Ну кроме разве что этих
>1OO l00
приколов.
Аноним 28/08/24 Срд 21:29:38 3258461 870
>>3258420
поддвачну
за всю карьеру было пожалуй пару дней когда я кодил с этими блобами по причине лень было разбираться как из очередной говнины их выкорчевывать
у меня прототип перед глазами, нахуй мне эти подсказки, нахуй они вообще кому то нужны, засплить экран и посмотри протосы которые юзаешь

>>3258427
san francisco mono ебани, он вроде под фри лицензией
Аноним 28/08/24 Срд 22:50:21 3258503 871
есть случайное число. В первой итерации цикла, необходимо определить старший разряд числа. Во второй итерации последующий, и так до разряда единиц.

Стало интересно, это я такой тупой, что не смог навскидку решить задачу, или это действительно не тривиально?
Аноним 28/08/24 Срд 22:58:26 3258506 872
*значение разряда
Аноним 28/08/24 Срд 23:55:53 3258527 873
>>3258503
>Стало интересно, это я такой тупой
хз, навскидку это все равно что в первой итерации разбора строки определить последнюю букву. без знания длины самой строки невозможно понять где последняя буква, так же и тут думаю. классически число раскладвают с младших разрядов к старшим, а если тебе нужно это сделать в обратную сторону - сначала определи сколько вообще разрадов в этом числе, ну и дальше ловкость рук домножения на 10 для вытаскиваяния нужного разряда если мы про десятичные, на 16 - шестнадцатеричные и тд

так что думаю сама по себе задача с ебанцой вот и всё
Аноним 29/08/24 Чтв 02:15:51 3258566 874
>>3258280
Ещё раз, для тупых, я отталкиваюсь от того что уже было разобрано в книге. По-хорошему там и массивов быть не должно, но я ебал делать 11 переменных как в примере.

>>3258305
Бля, да выделять конкретные разряды из числа это вообще не про оптимизацию, getchar() энивей быстрее будет в разы. Считал, тут же посчитал как анон в >>3258043 и готово.

>>3258420
Отключаются. Просто пока не мешали, поэтому я этого не сделал.
https://www.jetbrains.com/help/clion/parameter-hints.html
Но думаю они полезны когда юзаешь слобознакомую либу или ищешь где какой-то долбоёб попутал порядок аргументов.

>>3258427
https://www.nerdfonts.com/

>>3258503
Спойлер: если ты поделишь число со, скажем, 5 разрядами на 10^5, то гарантированно получишь 0.
Аноним 29/08/24 Чтв 02:39:29 3258571 875
Аноним 29/08/24 Чтв 09:37:41 3258634 876
image.png 64Кб, 919x524
919x524
крч я попробовал так, повылезала куча ошибок (понятия не имею как этими динамическими массивами пользоваться)
Аноним 29/08/24 Чтв 09:37:53 3258635 877
>>3258571
>>3258527
log10 даст позицию старшего разряда числа, дальше сами.
Аноним 29/08/24 Чтв 10:00:02 3258642 878
image.png 50Кб, 817x529
817x529
а, догнал, надо было библиотеку подключить
Аноним 29/08/24 Чтв 10:01:33 3258644 879
>>3258527
Напечатай число в строку, а потом перебирай её посимвольно, азаза! Будь как веб-макака.
Аноним 29/08/24 Чтв 10:03:29 3258645 880
>>3258635
Логарифм сам по себе имеет сложность от n зависящую, насколько я знаю. Т.е. это то же самое решение, что как если вручную найти старший разряд.
Аноним 29/08/24 Чтв 11:58:20 3258810 881
ean.png 39Кб, 1103x526
1103x526
Аноним 29/08/24 Чтв 13:15:18 3258917 882
>>3258634
>>3258642
вы посмотрите какой умничка
приятный шрифт, классическая цветовая раскладка, все аккуратненько с разделителями строк, и даже комментарии
не пойму это вижуал студио?
учитесь оформлению у этого анония
Аноним 29/08/24 Чтв 15:45:27 3259082 883
image 84Кб, 2082x450
2082x450
нашел интересную хуйню
замкнутые списки
в качестве рубрики "ебанутые задачки" как бы вы реализовали такую механику? в конце массива поинтер на начало массива

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

нахуй оно надо вообще? а хуй знает, просто из мануала по лиспу увидел
Аноним 29/08/24 Чтв 16:33:26 3259134 884
>>3258810
Ну это уже шиза, тебе помимо этого кода надо будет ебануть ещё абзац документации по-хорошему. Но да, за оптимизацию зачёт.

>>3258917
Там комменты на русском и нету пробелов между запятой и следующим аргументом при вызове функции. Такое.

>>3258642
Не используй malloc.h, используй стандартную stdlib.h

>>3259082
LinkedList замкнутый сделать несложно. А делать именно массив в хипе в котором последний элемент будет указателем на первый это хуйня ненужная, но всё же делается через malloc(sizeof(T)*ARRAY_SIZE+sizeof(size_t)). И потом просто пишешь адрес первого элемента сразу за последним. Только нахуя? Типикал задача для даунов, ничего сложного в ней нет, практического применения тоже. Ладно если бы LinkedList, но если у тебя была выделена память через malloc то проще просто хранить размер который ты туда передавал чтобы знать насколько надо откатиться назад с конца чтобы достать первый элемент.
Аноним 29/08/24 Чтв 16:53:23 3259153 885
>>3259134
>проще просто
проще вообще не отвечать на пост

а касательно задачи, полагаю она должна проходить тот же тест что и на скрине
тобишь
arr[] = {1,2,3, *1};
printf("%d\n", arr[4]); // 2
Аноним 29/08/24 Чтв 17:11:30 3259165 886
>>3259134
> Ну это уже шиза
Если ты про проверку введённой строки, то это скорее привычка.
> Но да, за оптимизацию зачёт.
Ваше мнение очень важно для нас.

Кидай ещё, если найдёшь что-нибудь "мемное".
Аноним 29/08/24 Чтв 17:25:46 3259174 887
>>3259082
>>3259153
>должна проходить тот же тест что и на скрине
> тобишь
> arr[] = {1,2,3, *1};
> printf("%d\n", arr[4]); // 2
Интересно, что за гений такую хрень придумал. Зачем, а самое главное нахуя в конце линейного массива указатель на 1й элемент?
Предполагается, что размер массива нигде ге хранится и определяется перебором при каждом обращении? И это меня тут в шизе подозревпли, лол.
Аноним 29/08/24 Чтв 17:33:08 3259181 888
image 167Кб, 3648x1988
3648x1988
>>3259082
>>3259153
Очень просто, реализуется простым остатком от деления.
Аноним 29/08/24 Чтв 17:34:56 3259186 889
image 207Кб, 590x1400
590x1400
>>3259174
>что за гений такую хрень придумал
джон маккарти

>>3259181
ну а например arr[5]?
Аноним 29/08/24 Чтв 17:41:25 3259194 890
image 201Кб, 3648x1988
3648x1988
Аноним 29/08/24 Чтв 17:43:44 3259198 891
>>3259194
чота я пока не пойму, все еще думаю ты нас наебываешь, засунь в аррай числа 10 20 30
Аноним 29/08/24 Чтв 17:45:43 3259200 892
>>3259194
а вот еще что хотел у тебя попросить
можешь дать какой то годный гайдбук по емаксу?
хотел пощупать эту говнину, но в туторе половина хоткеев не работает, да и вцелом мало инфы, даже темка кастомизации не раскрыта
Аноним 29/08/24 Чтв 17:46:25 3259202 893
Аноним 29/08/24 Чтв 17:51:08 3259205 894
>>3259200
Я пересел с вима посмотрев ролики на канале System Crafters. Вот этот плейлист вроде бы https://www.youtube.com/playlist?list=PLEoMzSkcN8oPH1au7H6B7bBJ4ZO7BXjSZ
Тутор у меня прекрасно работал кстати, и не думаю что за четыре года после моего прохождения его сломали, но один хер я чистыми емаксовыми хоткеями не пользуюсь.
Аноним 29/08/24 Чтв 21:14:26 3259340 895
>>3259153
Лол, нахуя?

Вы тут типо всякие нереалистичные задачки без практического применения решаете?
Аноним 29/08/24 Чтв 21:20:15 3259343 896
>>3259198
Блять, ты настолько тупой? Просто бери остаток деления индекса на размер массива и ты никогда не сможешь вылезти за него, а будешь ходить кольцами. Только, имхо, это немного наеб, а не выполненная задача. Просто используется математика чтобы нельзя было вылезть за массив, никакого указателя там нету. Я ХЗ как это работает в оригинале правда, может там идея такая же была, за лисп не шарю.
Аноним 29/08/24 Чтв 22:20:12 3259382 897
image 106Кб, 755x278
755x278
Аноним 01/09/24 Вск 08:18:52 3261313 898
Можно вопрос знатокам? Нашел книги подбельского, впринципе вроде неплохо, читали или нет? Что можете сказать, я конкретно о си а не си плюс
Аноним 01/09/24 Вск 23:57:13 3261890 899
image 222Кб, 770x674
770x674
image 97Кб, 766x302
766x302
ля ковырял книжные задачки, думал хули у меня в форе в ифы не заходит нихуя, а силанг просто выкинул фор этот нахуй и все
пиздец
Аноним 02/09/24 Пнд 01:57:09 3261978 900
>>3261890
Чел, ну ты кринжулик конечно в i и j запутаться в одной строке
Аноним 02/09/24 Пнд 14:12:38 3262433 901
а как динамический массив пихают в структуру?
Аноним 02/09/24 Пнд 14:16:43 3262436 902
>>3262433
думаю поинтер на кучу + размер в байтах
тупа два поля, а там как хошь верти, инты у тибя там или даблы уже пахуям
ну я бы так сделол, но я тупой
Аноним 02/09/24 Пнд 14:41:36 3262447 903
не, ну можно канешна все красиво оформить
описать отдельно в файлике структуру динаррай или вектор
хуйнуть ей поинтер на кучу и размер байт
написать поп/пуш интерфейсы, и еще чтобы гап просчитывали при маллоке, потом из мейна прокинуть эту хуйню в основную структуру где тебе дин аррай нужен и дергать функции управления

но нахуй оно надо как говорится
Аноним 02/09/24 Пнд 16:06:05 3262515 904
image.png 47Кб, 776x586
776x586
так делается?
Аноним 02/09/24 Пнд 16:30:44 3262537 905
>>3262515
на с99 думаю делается
в новых стандартах по рукам бьют за пропуск аргументов функции
Аноним 02/09/24 Пнд 16:43:37 3262548 906
image 544Кб, 3648x1988
3648x1988
>>3262515
Делается, но это какой-то дедовский код у тебя. В С99 есть такая фишка как Flexible Array Member — когда последним полем в структуре объявляется массив без размера (обрати внимание на размер disp). Это позволяет осуществлять такую прикольную фишку, как на моём примере. Память выделяется сразу подо всю структуру вместе с этим массивом. При этом у тебя не будет происходит лишнего разыменовывания, не хранится лишнего указателя, а ещё все данные структуры располагаются рядом в памяти и попадают в кеш вместе. А для инициализации структур удобно применить механизм compund literals.
Аноним 02/09/24 Пнд 17:00:03 3262562 907
>>3262548
ля миня ажтрисет от этого шрифта
залей на пастебин .emacs гляну как у тебя выкрашены разделители фреймов, а то у меня дефолтные слишком контрастные какие то
с меня вот этот шрифт https://fonts-online.ru/fonts/san-francisco-mono
Аноним 02/09/24 Пнд 17:22:21 3262596 908
>>3262562
Причина тряски? Спасибо но этот шрифт меня устраивает, собираюсь им пользоваться примерно всю оставшуюся жизнь, если ничего в технологическом плане не изменится.

Сорян, весь конфиг выкладывать не хочу, там личное присутствует. Тебя эта однопиксельная линия вертикальная интересует, если я правильно понял?

(scroll-bar-mode -1)
(setq modus-themes-fringes nil)
(load-theme 'modus-operandi)
Аноним 02/09/24 Пнд 17:32:26 3262617 909
image.png 75Кб, 1147x255
1147x255
>>3262548
такие синтаксические штуки я первый раз вижу если честно
Аноним 02/09/24 Пнд 18:00:48 3262650 910
>>3262596
>(scroll-bar-mode -1)
у меня эта хуйня фейлилась вроде все равно попробую
>обираюсь им пользоваться
пидарас

>>3262617
а чо такова, малочит сайз поинтера + сайз 4 полей и сразу туда инциализирует структуру с полями
size: вероятно блобящая подсказка местной говнины
Аноним 02/09/24 Пнд 18:13:52 3262658 911
>>3262617
1. Подсказка от LSP, как здесь >>3258243 Бесполезная хуита кстати, никак руки не дойдут отключить её по умолчанию.
2. Вроде стандартный синтаксис: взять 0-ой элемент массива - поля структуры по указателю на неё.
3. Compound literal, C99. https://en.cppreference.com/w/c/language/compound_literal
Аноним 03/09/24 Втр 08:35:16 3263042 912
видел создают обьекты через struct (имя структуры) (имя обьекта), и иногда создают просто через (имя структуры) (имя обьекта). Есть ли какая то разница, при условии, что структура уже обьявлена?
Аноним 03/09/24 Втр 18:46:29 3263571 913
ля а как мне проверить изнутри приложуни был ли перенаправлен поток ввода?

мне вот надо не заходить в вайл если была вызвана $ ./a.out
и наоборот повайлить ввод когда $ ./a.out < filename

по argc/argv в обоих случаях не детектиться

мб копать в сторону stdin структуры? куда там поинтер смотрит или чо?
Аноним 04/09/24 Срд 00:27:44 3263887 914
FMtZK5HAI2.png 98Кб, 989x1101
989x1101
Аноним 04/09/24 Срд 07:42:55 3263945 915
image 242Кб, 960x752
960x752
image 127Кб, 652x454
652x454
Аноним 04/09/24 Срд 07:54:00 3263952 916
image 124Кб, 546x418
546x418
image 468Кб, 1954x510
1954x510
>>3263945
атмена
ето опять емакс мозги ебет с сохранением файлбуфера

алсо как починить, чтобы трим-вайтспей/формат-буффер и прочая хуйня норм работала? он из за этого нихуя не сейвит
пришлось закомментить вимом
Аноним 04/09/24 Срд 09:31:38 3263985 917
image.png 167Кб, 1747x1033
1747x1033
>>3262548
если я правильно понял, единственный вопрос почему умножаем на 4, а не на 3
Аноним 04/09/24 Срд 11:29:01 3264058 918
>>3263985
Не совсем так. Размер поля status - 0 байт, а размер всей структуры - 4 байта. В окошке gdb слева я распечатал это с помощью p sizeof(*disp), можешь сам убедиться. Зато размер первого элемента disp->status[0] — один байт, поэтому умножаем на 4.

Такое поле без размера может быть только одно в структуре и должно быть последним. Из подводных камней тут есть паддинг, который компилятор может задействовать под хранение элементов status. Это стоит учитывать, чтобы не перерасходовать память. В данном конкретном случае у нас общий размер получился 8 байт, поэтому ваще пофиг.

Впрочем так как ты описал тоже делают, если хотят чтобы гарантированно скомпилировать код на любом компиляторе, т.к. FAM это фича C99. Только для C89 нужно указать размер status, т.е. объявить его как unsigned char status[1];

>>3263952
>алсо как починить, чтобы трим-вайтспей/формат-буффер и прочая хуйня норм работала?
whitespace-mode настрой по вкусу, я так сделал:

(use-package whitespace
:hook (prog-mode . whitespace-mode)
:custom
(whitespace-action '(auto-cleanup))
(whitespace-style
'(face trailing tabs tab-mark lines-tail missing-newline-at-eof empty)))
Аноним 04/09/24 Срд 11:31:54 3264061 919
whitespace-mode правда автоматически форматирование не делает, но я как-то и не парюсь на эту тему, обычно ручками запускаю форматирование для региона при необходимости. Кажется можно eglot настроить на автоматическое форматирование, не пробовал.
Аноним 04/09/24 Срд 12:28:14 3264106 920
image.png 17Кб, 528x194
528x194
>>3264058
> В окошке gdb слева
окошко слева выглядит слишком страшно, что бы на него смотреть

ещё вопрос. Откуда древнеязыческий бог маллок знает, чему равен sizeof(disp) если disp ещё не создан? разве не должна сначала правая часть вычислится?
Аноним 04/09/24 Срд 12:28:55 3264107 921
звёздочку сьели
Аноним 04/09/24 Срд 12:35:03 3264113 922
выплюньте
Аноним 04/09/24 Срд 12:51:58 3264127 923
>>3264106
sizeof это оператор, который работает с типами, а не данными. Типы известны на этапе компиляции. Само выражение компилятор не вычисляет.
Довольно удобно писать именно выражения, тогда не надо обновлять строку с выделением памяти, если вдруг поменяешь тип переменной, под которую выделяется память. Звучит глупо, но это частая ошибка, которую очень легко пропустить, причём программа может работать корректно, пока очередные изменения в совершенно другом месте не перестанут работать.
Аноним 04/09/24 Срд 12:56:03 3264129 924
image 645Кб, 938x1326
938x1326
>>3264061
а я вот подумал повесить автоформат (ну эти три функции вов врайтин файл листе обернуть в новый дефун) на хоткей какой нить глобальный, ну типа мод+ку который регион форматит чтобы ваще все форматил например

ну просто вот у меня уже есть кусок кода на 300 строк и мне надо его в иф завернуть - я заебусь 500 строк вправо двигать, а так бы автоформат сюда и готово, ну крч ты понял, пойду чо нить поолдую
Аноним 04/09/24 Срд 13:17:40 3264156 925
>>3264127
Как я читаю эту строку в своей голове:
Создай объект структуры, размером больше на 4 байта чем создаваемый тобой объект структуры
Аноним 04/09/24 Срд 15:19:03 3264259 926
image 163Кб, 460x460
460x460
>>3264156
>Как я читаю эту строку в своей голове:
Аноним 04/09/24 Срд 16:10:15 3264336 927
>>3264259
Именно так я и выгляжу, только у меня ноутбук, я тощий, патлатый и не курю
Аноним 04/09/24 Срд 16:46:07 3264378 928
image 1089Кб, 886x856
886x856
>>3264336
>Именно так я и выгляжу
>, только совсем не так
Шиза прогрессирует.
Аноним 05/09/24 Чтв 11:38:25 3264838 929
image.png 9Кб, 349x238
349x238
чо тут происходит?
Аноним 05/09/24 Чтв 11:39:50 3264839 930
я из 4 байтового кота сделал 5 байтовый?
Аноним 05/09/24 Чтв 13:33:40 3264911 931
>>3264839
>сделал 5 байтовый
а схуяли ты так подумол? инт четырехбайтовый, поинтер интовый, ты попросил пять байт памяти чтобы засунуть инт, инт засунулся в первый байт (эндианы) еще 3 зануленные, и один байт с мусором
ебало?
Аноним 05/09/24 Чтв 20:36:42 3265320 932
>>3264838
>чо тут происходит?
Классическая ошибка — перепутаны размеры переменной и указателя на неё.
>>3264839
Скорее 9-байтовый, если ты на 64-битной ОС сидишь. Впрочем используются только 4.
Аноним 05/09/24 Чтв 20:40:13 3265323 933
>>3265320
8-байтовых интов я пока не встречал. Что значит "используются только 4"? Если я сделаю кучу интов и проверю их адреса, они отличаются друг от друга на 4.
Аноним 05/09/24 Чтв 20:52:11 3265332 934
>>3265323
Размер указателя на 64-битной системе 8 байт, а именно его ты написал в malloc.

sizeof(cat) == 8
sizeof(*cat) == 4
Аноним 05/09/24 Чтв 20:55:06 3265335 935
image 315Кб, 1384x660
1384x660
>>3265320
>Классическая ошибка — перепутаны размеры переменной и указателя на неё.
ля тачнягг
чота я то же проебланил что он не разыменовывал в сайзофе
да и хуй с ним
Аноним 05/09/24 Чтв 22:13:13 3265387 936
>>3265332
Лол. И правда, классика 🤡
Аноним 06/09/24 Птн 09:18:36 3265635 937
cat это просто адрес случайно выделенного мне байта (первого из пяти последующих друг за другом). это вроде понятно.

а что такое (звёздочка)cat? какой это тип? int, потому что указатель был типа int?
что будет если обратиться к звёздочка(cat + 1)? сегфолт, потому что программа попытается прочитать ещё три недоступных байта сверху?
Аноним 06/09/24 Птн 09:43:35 3265655 938
image 354Кб, 1176x740
1176x740
а чо а как
Аноним 06/09/24 Птн 09:54:52 3265668 939
>>3265635
да бля не три там сверху
✻(ptr + 1) это как если бы ты обращался к массиву интов arr[1]
поинтер интовый и сдвиг у него на 4 байта при попытке ++ (плюсануть) адрес
у тебя там 9 байт, поинтер смотрит в первые 4, +1 по адресу значит будет смотреть в следующие 4 байта а через звездочку ты их вытащишь сразу все как будто это инт
хочкшь перебрать свои 9 байт по 1 байту - делай чар поинтер и двигай
хочешь по 3 байта - делай типдеф структуры в которой лежит char[3] поле, от него делаешь поинтер и двигаешься со сдвигом 3 байта
дальше сам нафантазируешь себе сдвиги по 2 гига
Аноним 06/09/24 Птн 13:42:07 3265936 940
image 480Кб, 1950x740
1950x740
ля анонцы подсказывайте
что тут не так? почему первый файл он проходит (сначала срет итер при заходе и потом срет брейк когда feof(file)) а второй стабильно виснет?

я уже поинтер пробовал занулять, перекопал брейки, хуета какая то, какого хера он во втором файле не может найти признак конца файлв? тут что надо еще fseek хуячить? я же новый дескриптор получаю при fopene

пизда я нипанимаю в чем проблема, хелп
Аноним 06/09/24 Птн 13:51:58 3265947 941
image 592Кб, 2228x704
2228x704
image 122Кб, 1098x358
1098x358
Аноним 07/09/24 Суб 11:39:41 3266609 942
>>3265936
>>3265947
я нашел причину
но я все равно не понял почему так происходит

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

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

алсо просто заменил гетчары на фгетси

разве файл после фопена не является новым потоком вводы? хули гетчар просит чары с клавы?
Аноним 07/09/24 Суб 21:58:45 3267132 943
>>3265936
>>3265947
>>3266609
Во-первых, бога ради, отформатируй код. На FILE * file просто больно смотреть. Ну и переписать бы его, тут много можно сократить.

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

В-третьих, нету смысла использовать feof() в твоём коде. Просто сравнивай c EOF и всё. То что возвращает feof() всё равно засисит от последнего прочитанного символа.

Вот как я накидал прогу для переписывания файлов в консоль: https://privatebin.net/?9c46d536bffb7076#3jdBX2hgB2oU98QyQGe8bqd9EGJ6shiTCggD8NK9KfpA

Вместо (current_char = fgetc(current_file)) != EOF можно смело ебануть current_char = fgetc(current_file), !feof(current_file)? поменяется аж нихуя.

Ну а что за ошибка так и не понял, скорее всего где-то вне кода на скринах, потому что он выглядит валидным.
Аноним 07/09/24 Суб 22:01:46 3267136 944
Аноним 08/09/24 Вск 00:14:58 3267213 945
image 208Кб, 800x800
800x800
>>3267132
>То что возвращает feof() всё равно засисит от последнего прочитанного символа.
да хуй пойми, там какие то дебри с попыткоами чтения вне файла, а EOF это интовый минус адын, то бишь прям символ в файле должен быть

крч я бы не сказал что это идентичные хуйни

>>3267136
>Я долбоёб забыл файл закрыть.
>
похуй, я даже не смотрел пастбины твои, как высрать фалй в консоль я и так знал.

>>3267132
>отформатируй код. На FILE * file просто больно смотреть.
предлагай. я пораскинул мозгами и понял что мне достаточно один поинтер юзнуть, ну а раз это поинтер на файл - так и назвал. хз чо тебе не нравится. ptrFile на 3 символа длиннее, а мне лень длинные имена писать так что я часто вообще херачу алиасы в пару букв дефайнами в блоке где надо дохуя поюзать лонгнеймов или однотипных конструкций и потом андефаю

ну вот такой вот у меня кодстайл

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

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

я так и не понял
getchar достает чар с потока stdin
а fopen разве не присваивает поинтер stdin`а на файл?
getchar не работал в файле usage.c, это какая то бага полюбому, объективных причин этому случиться я не вижу
Аноним 08/09/24 Вск 01:13:10 3267247 946
>>3267213
> да хуй пойми, там какие то дебри с попыткоами чтения вне файла, а EOF это интовый минус адын, то бишь прям символ в файле должен быть
Боже, да сьебни в JS, раз читать доки не умеешь.
https://en.cppreference.com/w/c/io/feof
> This function only reports the stream state as reported by the most recent I/O operation, it does not examine the associated data source. For example, if the most recent I/O was a fgetc, which returned the last byte of a file, feof returns zero. The next fgetc fails and changes the stream state to end-of-file. Only then feof returns non-zero.
Иными словами, если ты пытаешься прочитать символ после того как вылез за файл то получишь EOF -1 это на твоей ОС, а так там может быть что-то другое, и да, его нету в файле, это тебе функция туда это суёт чтобы ты как раз и мог понять что файл всё.

Если по итогу последнего чтения было получено EOF, то вызов feof() вернёт не 0. Поэтому и нету смысла его вызывать если больше никаких проверок не делается, просто сравнивай символ с EOF. Ну а по-хорошему проверять получен ли EOF из-за того что файл закончился или ещё чего может быть ошибка во время чтения, тогда тоже будет EOF в переменной в которую читаешь.

+/- эталлонный пример оттуда-же:
int c;
while ((c = fgetc(fp)) != EOF)
putchar(c);

if (ferror(fp))
puts("I/O error when reading");
else if (feof(fp))
puts("End of file is reached successfully");

> предлагай
Поставь себе clang-format, выбери понравившийся стиль и формать автоматом. Я жаловался даже не сколько на нейминг а на положение символов. У тебя код будто в спешке обычным блокнотом писался. Никто не пишет FILE * file.
https://zed0.co.uk/clang-format-configurator/
Тут можешь сгенерить под себя, но я лично не запаривался и взял LLVM форматирование. Нейминги тоже лучше делать сос мыслом. Я в проектах юзаю гугловскую конвенцию.
https://google.github.io/styleguide/cppguide.html#Naming

> мб примитивную оопэшку прикрутить
Тебе в плюсы обмазываться RAII. Иначе что-то мне подсказывает что заебёшься распутывать.
Аноним 08/09/24 Вск 01:17:50 3267248 947
image.png 31Кб, 563x417
563x417
>>3267213
>getchar достает чар с потока stdin
>а fopen разве не присваивает поинтер stdin`а на файл?
не заметил этот рофл
Блять, ну вот опять же, либы ты не знаешь, доки читать тоже не удосуживаешься.

Используй то, что позволяет указать поток. А лучше то, что подразумевает файл.
Аноним 08/09/24 Вск 01:32:29 3267249 948
>>3267247
>Боже, да сьебни в JS, раз читать доки не умеешь.
>>3267248
> доки читать тоже не удосуживаешься
спакуха пердолик, ман отъебнул -> >>3265655

>стена доказательств что юзанье feof неравно юзанью EOF
я так и скозал

>положение символов
у меня стар нотэйшон, или я тебя не понял

>Тебе в плюсы
спакуха пердоля 2
пойди питон поковыряй раз так больно от моей сишечки
Аноним 08/09/24 Вск 03:09:51 3267263 949
>>3267249
>я так и скозал
Не, ты думаешь что эта разница имеет значение конкретно в твоём коде. Но это не так. Я думал объяснив принцип работы ты поймёшь что можно упростить, но, увы, для тебя всё утеряно.

>ман отъебнул
Боже, какие же деграданты плодятся нынче, это пиздец.
Аноним 08/09/24 Вск 10:38:38 3267374 950
>>3267263
>Но это не так.
тыскозал?
маня ты чот запизделся
Аноним 08/09/24 Вск 11:41:58 3267421 951
>>3267374
Пиздец ты говно, чел. Тебе всё объяснили и ссылочек дали, а ты агришься и набрасываешь в ответ.
Аноним 08/09/24 Вск 11:53:09 3267436 952
>>3267421
если по сабжу есть что сказать - говори или ебало стяни, копроскот экстасекс
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов