Сохранен 644
https://2ch.hk/pr/res/3304338.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Гении C объясните как это работает пожалуйста https://onlinegdb.com/Cpifzo8bE Здесь array это указат /clang/

 Аноним 21/10/24 Пнд 13:44:30 #1 №3304338 
image.png
Гении C объясните как это работает пожалуйста https://onlinegdb.com/Cpifzo8bE
Здесь array это указатель на выделенную память, в него не должно помещаться больше 2 элементов. В какую память он это сохраняет и почему?
Аноним 21/10/24 Пнд 13:59:53 #2 №3304358 
Просто повезло, что ничего лишнего не затёрли, когда вылезли за границу массива.
Смотри cppcheck

cppcheck test.c
Checking test.c ...
test.c:12:10: error: Array 'array[2]' accessed at index 2, which is out of bounds. [arrayIndexOutOfBounds]
array[2] = 3;
^
test.c:13:10: error: Array 'array[2]' accessed at index 3, which is out of bounds. [arrayIndexOutOfBounds]
array[3] = 4;
^
Аноним 21/10/24 Пнд 14:16:54 #3 №3304376 
>>3304358
Спасибо за ответ
Не думал, что это настолько ненадёжная штука и её нужно контролировать
Аноним 21/10/24 Пнд 16:09:51 #4 №3304507 
>>3304338 (OP)
Операционная система не может выдать тебе меньше одной страницы памяти (4KB), а аллокатор в зависимости от реализации может не работать с блоками меньше N байт, допустим 64. Но это в любом случае UB и гроб гроб кладбище.
Аноним 21/10/24 Пнд 17:30:20 #5 №3304613 
>>3304338 (OP)
На стеке надо было делать, дядь чтобы его распидорасило.
Аноним 21/10/24 Пнд 17:37:58 #6 №3304627 
image.png
>>3304507
>Но это в любом случае UB
Двачую, как конпелятор решит, так и будет.
Аноним 21/10/24 Пнд 18:04:42 #7 №3304662 
>>3304613
Не факт что распидорасит, есть такая штука, как https://en.wikipedia.org/wiki/Red_zone_(computing)
Аноним 26/10/24 Суб 04:12:27 #8 №3308219 
image.png
Книга K&R 2015 года. Тут ошибка локализации или можно не указывать тип возвращаемой функции? В других учебниках было так:
int main() {
return 0;
}.
Аноним 26/10/24 Суб 04:35:12 #9 №3308220 
>>3308219
void проебали
Аноним 26/10/24 Суб 17:42:39 #10 №3308530 
>>3308219
В КиР в деклараторе функции можно не указывать возвращемый тип, по соглашению конпелятор будет иметь в виду инт. Не помню, но вроде это в одном из стандартов было отменено.
Ещё с 99-го в main можно не возвращать результат, как у тебя на пике.
>>3308220
Убрали в штандарте 23
Аноним 26/10/24 Суб 19:29:15 #11 №3308591 
>>3308530
Если я делаю как в книге, то при компиляции выдает предупреждение. Компилятор gcc 12.2, OC Debian 12.
test.c:7:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
7 | main() {
| ^~~~
Program test.c compiled to program
Аноним 27/10/24 Вск 16:00:24 #12 №3308985 
>>3308591
А зачем тебе эта книга?
Аноним 27/10/24 Вск 18:56:07 #13 №3309099 
>>3308985
Arduino хочу потыкать, хоть какое-то интеллектуальное хобби.
Аноним 28/10/24 Пнд 17:03:05 #14 №3309652 
>>3309099
Так возьми учебник современного стандарта, что ж всех на музейную макулатуру-то тянет? Почему-то MS-DOS 3.3 вместо линуксов не учат, а Си по более древнему стандарту − за обе щеки.
Аноним 29/10/24 Втр 06:12:41 #15 №3309969 
>>3309652
Какой посоветуешь? Необязательно на русском. Я начал искать книги и везде этот КР был.
Аноним 29/10/24 Втр 06:45:50 #16 №3310006 
Acrobats14N8whJXH.png
>>3309969
Стивен Прата − Язык программирования С. Сейчас 6е издание. Теперь это классика и базовый учебник. Большой и подробный. Если не хочется читать тысячу страниц, то есть пара отличных вариантов втрое меньше:
Пикрелейтед, Modern C for Absolute Beginners от Apress
А если учишься не с нуля, то Jens Gustedt − Modern C. Отличная книга, но нужны начальные знания.
Аноним 29/10/24 Втр 08:12:25 #17 №3310051 
изображение.png
>>3310006
Душевно вам благодарен
Аноним 29/10/24 Втр 08:54:37 #18 №3310091 
почему по двумерному статическому массиву нельзя полностью пройтись вот так в цикле?
(array + i)
Аноним 29/10/24 Втр 09:00:21 #19 №3310098 
забыл что двач съедает звёздочки. (две такие перед началом скобок)
Аноним 29/10/24 Втр 09:29:50 #20 №3310110 
>>3304376
> C
> Не думал
Зря
Аноним 29/10/24 Втр 11:21:51 #21 №3310209 
>>3309099
В пердуине обрезаные плюсы. Мне кажется, на поиграться можно вообще взять по конкретно пердуине гайдики от васянов, для вката в C надо дохуя знаний не только по языку.
>>3309652
>учебник современного стандарта
Какую хуйню ты пишешь, я ебал. Начальная тема по C - это книжка Сикорда Effective C и условный гайдик по gdb.
Аноним 31/10/24 Чтв 08:50:27 #22 №3312211 
Как собирать большие проекты на Си? Есть ли какие-нибудь удобные инструменты типа cargo?
Аноним 31/10/24 Чтв 09:26:44 #23 №3312254 
>>3312211
Тебе уже ответили в педерастотреде.
Прям совсем "типа карго" есть xmake.
Если ты соя и тебе хочется чего-нибудь более мейнстримного и неудобного, то cmake + conan/vcpkg. Или meson какой-нибудь, хз. На крайняк Gradle, но нормальные люди на тебя будут смотреть косо.
Аноним 31/10/24 Чтв 11:42:03 #24 №3312388 
>>3310091
>>3310098
вопрос ещё актуален
Аноним 31/10/24 Чтв 12:12:59 #25 №3312433 
>>3310091
Ходи разрешаю.
Аноним 31/10/24 Чтв 12:26:42 #26 №3312442 
>>3312433
а компилятор нет
Аноним 31/10/24 Чтв 13:28:41 #27 №3312526 
>>3310091
Что по твоему array + 1? Когда ответишь на этот вопрос, тогда и поймёшь, почему нельзя.
Аноним 31/10/24 Чтв 14:57:36 #28 №3312629 
>>3312526
(ARRAY + 1) - это адрес, на 1 больший, чем первый элемент массива ARRAY (если размер каждого элемента массива 1 байт)
мне говорили, что какое то приведение типов неявное идёт, но зачем оно там я так не понял
Аноним 31/10/24 Чтв 15:10:29 #29 №3312640 
>>3312629
ну то есть если есть
int array[3][5];
и, допустим, адрес array = 100, то array + 1 это 101?
Аноним 31/10/24 Чтв 15:34:16 #30 №3312664 
>>3312640
нет, 104 скорее всего
Аноним 31/10/24 Чтв 15:42:07 #31 №3312672 
не, если array это указатель на указатель типа инт, то скорее всего там будет 120. теперь вроде догнал.
Аноним 31/10/24 Чтв 15:43:19 #32 №3312673 
или не донал. всё неоднозначно. всей правды мы не узнаем
Аноним 31/10/24 Чтв 15:45:02 #33 №3312675 
>>3312664
Ну нет, это не так. Иди проверяй на коде.

Ну если не хочешь проверять, то я объясню, что в array + 1 в том случае значит примерно array + sizeof(array).
sizeof(
array) == 5 sizeof(int). Практически это значит следующее:
представь array как матрицу, тогда array это указатель на первую строку, array + 1 это указатель на вторую строку, и так далее.
Чтобы пройти по всем элементам статического двумерного массива нужно делать (T
)array + i, где T - тип элемента массива
Аноним 31/10/24 Чтв 15:47:18 #34 №3312677 
>>3312675
Ну я еблан, перепишу

Ну если не хочешь проверять, то я объясню, что в array + 1 в том случае значит примерно array + sizeof(⚹array).
sizeof(⚹array) == 5 ⚹ sizeof(int). Практически это значит следующее:
представь array как матрицу, тогда array это указатель на первую строку, array + 1 это указатель на вторую строку, и так далее.
Чтобы пройти по всем элементам статического двумерного массива нужно делать (T⚹)array + i, где T - тип элемента массива
Аноним 31/10/24 Чтв 15:58:01 #35 №3312683 
Где скачать Стивена Прату 6-издание в хорошем качестве? Везде гуляет один и тот же корявый скан с нечитабельным текстом.
Аноним 31/10/24 Чтв 16:36:54 #36 №3312712 
CodepVmdGgW2dS.png
CodeS5JqsGDxuz.png
CodelUjKBF4s3p.png
CodeDM5NirTlz1.png
>>3312672
Смотри, что происходит. В данном скоупе array не указатель на int и не указатель на указатель на int, это указатель на то, что получается по первому разыменованию, а там лежит статический массив, sizeof которого равен его размеру. В данном примере там лежит int[3] размером 12, поэтому арифметика с ним (array + 1) → (array + sizeof(*array)) будет приводить к увеличению адреса на 12. Пикрелейтед 1-2, мы видим элементы 0, 3, 6, 9 и дальше мусор.
Алсо, несмотря на то что компилятор легко компилит это со всеми флагами, даже самый простой статический анализ типа cppcheck легко находит проблему. Пользуйся!
Чтобы всё работало как надо, надо явно кастануть array в указатель на int. Пикрелейтед 4. Всё работает, предупреждений нет.
Аноним 31/10/24 Чтв 22:56:19 #37 №3312965 
>>3304338 (OP)
Ты еще в цикле за пределы массива пойди, он не то что ошибок никаких не даст, а высрет все что найдет в памяти. Джаваскрипт какой-то, пиздец, как на нем еще операционные системы пишут
Аноним 31/10/24 Чтв 23:59:21 #38 №3312995 
>>3312965
Любые проверки ради безопасности это оверхед расходы ресурсов. Расходы ресурсов в ядре ОС это кратные расходы в юзерспейсе. Код на питончике, два числа сложить, транслируется в 1500 строк кода на си под капотом. Сколько будет с работой с двумерным массивом в цикле, даже не угадаю, счёт на десятки тысяч пойдёт. Зато просто и безопасно.
Аноним 01/11/24 Птн 10:57:05 #39 №3313223 
>>3312712
допустим у меня есть переменная uint64_t bubble
и есть указатель на эту переменную uint64_t bubble_pt

через
( (uint8_t*)bubble + i ) я могу обратиться к любому из 8 байтов этой переменной?
Аноним 01/11/24 Птн 10:59:31 #40 №3313228 
image.png
>>3313223
я не очень умный
Аноним 01/11/24 Птн 11:09:56 #41 №3313246 
>>3313223
Да.
Только надо написать
( (uint8_t)&bubble + i )
либо
( (uint8_t)bubble_pt + i )
И ещё учитывай порядок байт: little endian или big endian.
На википедии есть пример https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2#%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2
Аноним 01/11/24 Птн 11:11:26 #42 №3313247 
>>3313246
двач съел звёздочки в моих примерах.
Аноним 01/11/24 Птн 12:09:37 #43 №3313336 
image.png
>>3313246
не, не работает
Аноним 01/11/24 Птн 12:37:30 #44 №3313387 
CodeEjFh7Id54d.png
>>3313336
Нормально работает.
Аноним 01/11/24 Птн 13:36:44 #45 №3313433 
>>3304338 (OP)
потому что в Си нет проверки нарушения границ массивов, это типа ты сам должен делать
сохраняет он это в обычную память, которая по адресу идёт следующей
Аноним 01/11/24 Птн 15:55:21 #46 №3313571 
>>3313433
Ну как нету. Сказать, что их нету совсем, точно нельзя, лол.
Аноним 01/11/24 Птн 16:45:05 #47 №3313600 
>>3313571
А какие? Разве что средствами ОС? Система мягко и заботливо пришлёт SEGSIGV )))
Аноним 02/11/24 Суб 04:22:58 #48 №3313893 
>>3313387
Для каких практических задач такое может пригодиться?
Аноним 02/11/24 Суб 11:41:33 #49 №3314128 
>>3313893
Для бареметал залупы на 10-центовых контроллерах. Ну в целом байтоёбство это эмбед.
Аноним 02/11/24 Суб 16:10:27 #50 №3314376 
>>3313600
В стандарте же сказано UB, может быть, а может и не быть, ну.
Аноним 02/11/24 Суб 17:39:58 #51 №3314444 
>>3313600
Это если у тебя есть ОС
Аноним 03/11/24 Вск 10:33:56 #52 №3314762 
>>3314444
Да один хуй бус еррор приедет, только голый от железа.
Аноним 03/11/24 Вск 16:15:36 #53 №3314968 
>>3314444
>>3314762
Просто берёшь и катаешься еблом по клавиатуре с адрес санитайзером.
Аноним 03/11/24 Вск 17:51:32 #54 №3315054 
Подскажите пожалуйста или хотяб направте, что самое необходимое в си? Ну там я хз даже, я прост представляю си как промышленый язык, контроллеры, драйверы, ос. Его еще где то используют кроме перечисленного?
Аноним 03/11/24 Вск 18:49:15 #55 №3315108 
>>3315054
Где-то спустя 4 стандарта плюсы станут абсолютно неюзабельным говнищем и сишка останется единственной не-хипстерской альтернативой.
Аноним 03/11/24 Вск 20:10:38 #56 №3315154 
>>3315054
не, наврядли где-то еще используют
Аноним 04/11/24 Пнд 00:08:38 #57 №3315211 
>>3315154
К примеру, PostgreSQL написана на C.
Аноним 04/11/24 Пнд 00:16:46 #58 №3315216 
>>3315054
Ядра разных нагруженных систем и приложений, не только ОС. Производительные либы, в том числе для других языков. Когда ты на питончике пользуешься numpy − ты пользуешься кодом, написанным на си. Это всё ещё один из самых популярных языков и никуда не денется в обозримой перспективе.
Аноним 04/11/24 Пнд 02:11:05 #59 №3315253 
>>3315216
Вот, я о чем то таком имел ввиду, у меня интерес только в плане контролеров, но явно этим ограничиваться нельзя, системное пограмировоне незнаю насколько это вообще сложно, никогда не интересовался

>>3315211
И это, верная тема, спасибо
Аноним 04/11/24 Пнд 08:51:29 #60 №3315319 
>>3315216
Я напишу свой кросспайлер типа Vala, но с синтаксимом go и инструментом сборки типа cargo и все перейдут на мой язык
Аноним 04/11/24 Пнд 16:24:41 #61 №3315713 
>>3315054
>что самое необходимое в си
Не писать на нём, если не знаешь, зачем он тебе нужен.
Аноним 04/11/24 Пнд 16:38:26 #62 №3315730 
>>3315713
Только для контроллеров, пока что, а потом еще подумаю. Ты чего такой злой? Если не знаешь то как напишешь то, пьяный штоли?
Аноним 04/11/24 Пнд 16:47:48 #63 №3315739 
>>3315730
>Только для контроллеров
Тогда даташит своего контроллера читай.
>Ты чего такой злой?
Я не злой, а токсичный.
Аноним 04/11/24 Пнд 17:38:19 #64 №3315780 
>>3315739
Не хочу даташиты читать, чего-то другое надо
Аноним 04/11/24 Пнд 17:49:43 #65 №3315791 
>>3315054
Везде, лол. Ты же понимаешь, что из большинства современных разноцветных языков так или иначе можно дёргать сишный код?
Аноним 05/11/24 Втр 09:32:39 #66 №3316244 
image.png
по этому адресу хранится номер последнего введённого символа? а что за цифры выскакивают? почему они разные, если я перед запуском программы нажимаю одно и тоже
Аноним 05/11/24 Втр 10:16:38 #67 №3316297 
>>3316244
>почему они разные
Баг.
Аноним 05/11/24 Втр 10:44:35 #68 №3316323 
>>3316244
Что такое stdin? Поставь себе уже IDEшку и начни компилировать с флагами.
stdin это структура типа FILE, как ты её напечатаешь принтфом, ещё и с %d?
Если ты хотел посмотреть адрес stdin, то это делается так: printf("%p\n", stdin);
И он будет каждый раз рандомный, чтобы мамкиным хакерам было труднее жить. Это называется ASLR, рандомизация адресного пространства.
Аноним 05/11/24 Втр 11:03:52 #69 №3316359 
image.png
>>3316323
не, неправда
Аноним 05/11/24 Втр 11:23:34 #70 №3316401 
>>3316359
а если так сделаешь?
printf("%d", *stdin);
Аноним 05/11/24 Втр 12:22:20 #71 №3316460 
image.png
объясните?
Аноним 05/11/24 Втр 13:51:25 #72 №3316596 
>>3316359
Ну это значит какая-то виндопараша. Гугл говорит, что она поддерживает ASLR начиная с Висты, но судя по твоему скрину всё как обычно.

>>3316460
А тут дебаггером смотри, что он вообще прочёл из терминала.
Аноним 05/11/24 Втр 15:51:53 #73 №3316730 
Почему этот чел раскритиковал книгу Сикорда Эффективный Си? Книга же хорошая. По крайней мере лучше из нового ничего нет. Есть только протухшие и неактуальные книги по стандартам 80-90 годов.
https://rutube.ru/video/db9d6a57bb49ed316d0b60186de0dba2/
Аноним 05/11/24 Втр 15:56:19 #74 №3316738 
>>3316730
он же буквально в самом видео говорит о том, почему он её критикует, у тебя на ютубе только превьюшки грузит?
Аноним 05/11/24 Втр 16:12:56 #75 №3316762 
>>3316738
На мой взгляд он тупо захейтил книгу. Она как раз рассчитана на человека, который уже изучил какой-то язык программирования и хочет изучить си. А он рассматривает только два типа читателей: кто вообще программировать не умеет и профессионалов с кучей лет опыта.
Ютуб у меня не работает совсем.
Аноним 05/11/24 Втр 17:01:01 #76 №3316819 
image.png
>>3316730
>Почему этот чел раскритиковал книгу Сикорда Эффективный Си?
Потому что он долбоёб. Книга обзорная про большое количество вопросов связанных с языком (всего 200 страниц), но автор не упускает важных вещей про подводные камни, про тулинг. После прочтения новичок в Си получит более широкое представление о языке, но не глубокое понимание каких-то может быть вещей, но просто будет знать хотя бы базовые вещи и что такие-то штуки (санитайзеры например) присутствуют в языке и тп.
Второе издание: https://ipfs.io/ipfs/bafykbzacec4olm3nwzqh5blgmlkltg6ln36saclqf3rx6yvumarp5pmcvxdky?filename=Robert%20C.%20Seacord%20-%20EFFECTIVE%20C-No%20Starch%20Press%20%282024%29.pdf
Аноним 05/11/24 Втр 17:54:03 #77 №3316870 
>>3316762
>>3316819

Приём таблеток пропускать нельзя. Может и норм книга, но хули с ней так трястись-то, будто священное писание открыл.
Аноним 05/11/24 Втр 18:30:32 #78 №3316914 
Какие вообще сейчас актуальные книги по си можно почитать?
Аноним 05/11/24 Втр 21:41:15 #79 №3317036 
>>3316914
А тебе для чего? Для общего обзора в треде уже накидали советов, дальше всё узкоспециализированное.
Аноним 06/11/24 Срд 14:43:20 #80 №3317444 
>>3316870
>РЯЯЯ ТАБЛЕТКИ УААА
Выше челик задал вопрос, я ему ответил, причина тряски?
Аноним 06/11/24 Срд 16:23:45 #81 №3317496 
>>3316762
В 2000 книги были там Си и Си плюс в 100 страниц описывались, оба языка, стандарт 99, много бывает книжек где написано много лишнего, конкретно эту не читал, но правда добавлю что в тех книжках отдельно были задачки всякие, в 100 страниц описание двух языков с поверхностными примерами
Так что я даже хз, кто очень хочет – тот научится
Аноним 06/11/24 Срд 16:31:12 #82 №3317501 
>>3309099 ардуина для рывка норм покатит. Просто немного разберись что такое такое эта ембедед электроникс. Пойми что на них нет операционной системы, которая будет вытириать за тебя жопу. Потом ты поймёшь что ардуина это кастрированный AVR. для удобства школьников, чтобы не забивать им голову лишней информацией. Пиздюк потеряет интерес если от начала курса до мигания светодиодом пройдёт слишком много времени. Возможно потом перекатишься на ARM архитектурные камни, которые в разы лучше, и сука дешевле, ёбаного ардуино. Ещё немного погодя вдоволь наигравшись с внутренней машинерией придёт осознание что нахуй его, каждый раз писать велосипед чтобы накручивать ШИМ. И придёшь к RTOS, райлтайм операционным системам для встраиваемых систем.
Из всех шагов единственное рекомендую перешагнуть ардуину. Она выращивает в человеке плохие привычки. Помнится у AVR конторы есть свя нормальная IDE с вменяемыми либами а не ардуиновским позором. ну и скачай даташит на свои камни.
Сразу прыгать на stm32 - порежешь жопу, чтобы запустить это блядсвто надо со старта в шапку ассемблерный код присирать, в ней намного больше возможностей но и геморроя на порядок выше.
Аноним 06/11/24 Срд 16:43:06 #83 №3317508 
image.png
подскажите пожалуйста, что я делаю не так?... цель просто напечатать код кириллических символов. и у терминала и у блокнота одинаковая кодировка. знаю что у буквы А код 0xD090
Аноним 06/11/24 Срд 17:22:15 #84 №3317535 
>>3317036
Мне нужна хорошая книга для профессионалов, чтобы раскрывала всякие тонкие моменты. В универе что-то писал на си, но никогда его в полном объёме не знал.
Аноним 06/11/24 Срд 19:42:31 #85 №3317629 
>>3317535
Тогда Стивен Прата. Там подробно и глубоко.
Аноним 06/11/24 Срд 19:51:22 #86 №3317631 
>>3317508
Ты пользуешься функциями для работы с ASCII. Тебе нужно wprintf. И на винде ещё наверное выставить локаль, setlocale(LC_ALL, "en_US.utf8");
Аноним 07/11/24 Чтв 09:53:12 #87 №3317925 
Реально ли вдрочить язык си по этому гайду?
https://www.youtube.com/watch?v=m3irWOg6Aa0
Аноним 07/11/24 Чтв 11:21:20 #88 №3318007 
>>3317629
Проблема, что последнее 6 издание в плачевном качестве, там буквы как будто моль поела, после долгого чтения глаза начинают болеть. С книгами, где нормальный шрифт, такого не происходит.
Аноним 07/11/24 Чтв 12:11:09 #89 №3318073 
>>3317925
Как у тебя ютуб работает?
Аноним 07/11/24 Чтв 12:57:41 #90 №3318113 
>>3318073
Я скачал плагин для браузера типа какого-то ускорителя ютуба, скорей всего впн, но только для ютуба.
Вот знал бы си и сам мог писать такие штуки.
Аноним 07/11/24 Чтв 16:57:46 #91 №3318308 
>>3318007
На английском есть нормальное.
https://jmp.sh/Py71Gt7U
И русское 5е издание в нормальном качестве, там кажется раздела про многопоточку не хватает.
https://jmp.sh/apthuwE8
Аноним 07/11/24 Чтв 18:31:09 #92 №3318373 
>>3318308
5е издание совсем допотопное, его в 99 или 2000-м писали, это наши только в 2013 перевели.
Аноним 07/11/24 Чтв 19:35:35 #93 №3318436 
>>3318113
>Вот знал бы си и сам мог писать такие штуки.
Дак выучи и пиши, кто мешает то?
Аноним 07/11/24 Чтв 19:40:57 #94 №3318439 
>>3318373
Дак а в чем проблемы то? Синтаксис поменяешь и библиотеки добавишь, если этот код не сработает, то сработает другой, ещё что то добавь или измени, я вообще в книге видел, там было написано что процентов 80 времени нужно искать ошибки ебать код до совершенства, это как бы и есть начало учёбы, ты почему то решил что есть волшебная книжка где все будет рафинированным и чистым, ты напишешь и оно заработает сразу, не смеши а
Аноним 07/11/24 Чтв 19:46:36 #95 №3318442 
>>3318439
В чём проблемы старых учебников? Пролистает он его от корки до корки, придёт на работу устраиваться, а там его спросят про корутины и многопоточку в целом, про потокобезопасность. А в дедушкином талмуде этого не было. Как и epoll/kqueue, вагона ключевых слов и ещё дохуя всего. В мелких книгах на 300 страниц этого всего тоже нет тащемта, они не для тех, кто собирается искать работу на Си.
Аноним 07/11/24 Чтв 20:15:00 #96 №3318451 
>>3318442
>В чём проблемы старых учебников? Пролистает он его от корки до корки, придёт на работу устраиваться, а там его спросят про корутины и многопоточку в целом, про потокобезопасность. А в дедушкином талмуде этого не было. Как и epoll/kqueue, вагона ключевых слов и ещё дохуя всего.
Если есть базис, то остальное уже можно найти в других источниках не? К тому же это язык Си или не Си?
Аноним 08/11/24 Птн 11:57:42 #97 №3318717 
>>3317629
Честно говоря, выглядит как учебник для начинающих. Положим в переменную a значение 2, в переменную b значение 3, что же даст a + b? И всё в таком духе.
Аноним 08/11/24 Птн 14:55:29 #98 №3318888 
>>3318717
Там просто есть всё. Многие прогеры на си например не знают, что такое сиквенс поинты, что значит "всё в си это выражение" и побочные эффекты. А это основа, после которой сишный код гораздо легче читается и понимается. У Прата это есть.
Или например что символьный литерал это валидная строка на три элемента.
int x = 'kek';
printf("%s\n", (char*)&x);
Это очень подробный учебник для тех, кому нужно разобраться даже в ненужной хуйне.
Аноним 08/11/24 Птн 16:27:45 #99 №3318939 
Подскажите, почему не создается нормально большой двумерный массив чаров

char arr[1000][2048]; //Или любое другое большое число больше 1к

Компилятор компилирует, но программа перестает выполняться.
Где курить почему? И какое ограничение тут роляет?
Аноним 08/11/24 Птн 16:32:40 #100 №3318943 
>>3318939
Не влезает на стек. Сделай глобальный static
Аноним 08/11/24 Птн 16:33:08 #101 №3318944 
>>3318943
Или malloc.
Аноним 08/11/24 Птн 16:35:03 #102 №3318945 
>>3318943
Что сделать понял, спасибо.
>Не влезает на стек.
А где допустимый размер стека посмотреть, чтобы предел возможностей знать?
Аноним 08/11/24 Птн 16:40:11 #103 №3318946 
>>3318943
А всё. Нашел тред на тему. Дальше сам додумкаю. Спасибо ещё раз.
Аноним 08/11/24 Птн 16:40:22 #104 №3318947 
>>3318308
>многопоточку
Си тут каким боком?
Аноним 08/11/24 Птн 17:48:38 #105 №3318999 
>>3318947
Сразу видно читателя K&R.
Аноним 08/11/24 Птн 17:51:51 #106 №3319003 
>>3318999
Сразу видно вебмакаку.
Аноним 08/11/24 Птн 18:27:00 #107 №3319026 
>>3318947
Так у Си есть многопоточка, ты о чём?
Аноним 11/11/24 Пнд 08:53:15 #108 №3320162 
>>3318947
Функция fork() что для тебя шутка?
Аноним 11/11/24 Пнд 09:08:19 #109 №3320179 
>>3320162
форк ето же вроди мультипроцессинг, а не мультитрединг
но мультитрединг вроде то же был в сишке
мимо
Аноним 11/11/24 Пнд 09:21:14 #110 №3320185 
>>3320179
Да, прав. Для потоков pthread.h
Короче в си обмазываться параллелизмом можно по полной программе.
Аноним 11/11/24 Пнд 09:38:46 #111 №3320195 
как считать число, если я не знаю, сколько байтов оно будет занимать? типа, для любой функции записи, нужен адрес, куда записывать данные, но как мне создать переменную с этим адресом, если я не знаю размер считываемого числа?
Аноним 11/11/24 Пнд 09:41:08 #112 №3320199 
>>3320195
Прикинуть максимальное число и выделить с запасом
Уверен, что твое число будет длиннее long long?
Аноним 11/11/24 Пнд 09:44:37 #113 №3320200 
>>3320199
вопрос в том, как определять именно столько, сколько нужно
Аноним 11/11/24 Пнд 09:44:52 #114 №3320201 
>>3320195
>как считать число, если я не знаю, сколько байтов оно будет занимать?
звучит как задача для лиспа
реализовывай длинную арифметику тогда я хз
возможно на базе векторов/динмассивов
Аноним 11/11/24 Пнд 09:45:44 #115 №3320202 
>>3320200
а сколько цифор в числе ты знаешь?
Аноним 11/11/24 Пнд 09:47:04 #116 №3320203 
>>3320200
Никак. В общем случае сначала создаёшь какого-то фиксированного размера, потом при надобности аллоцируешь область, допустим, размером в 2 раза больше, и копируешь в неё старые данные.
Аноним 11/11/24 Пнд 09:51:46 #117 №3320204 
>>3320202
а в какой момент нужно реаллоцировать? допустим я попросил 8 байт, ввёл число, которое в 8 байт не засунешь, что дальше? как программа поймёт что надо просить больше?
Аноним 11/11/24 Пнд 09:52:12 #118 №3320206 
>>3320203
*
Аноним 11/11/24 Пнд 09:54:29 #119 №3320209 
>>3320204

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

узнали? согласны?
Аноним 11/11/24 Пнд 09:59:23 #120 №3320211 
>>3320209
С другой стороны тогда уже можно не си для этого брать, а на что-то поудобнее и привычнее пересесть.
Аноним 11/11/24 Пнд 10:00:59 #121 №3320215 
>>3320211
ты мог не ебать мозги и сразу в лиспе написать одну строчку
тут ситред и решения для си, а си это язык велосипедов
Аноним 11/11/24 Пнд 10:02:56 #122 №3320216 
>>3320215
Я не тот анон, который кидал реквест. Просто задача, ИМХО, неподходящая и надуманная. Исключительно поебать мозги.
Аноним 11/11/24 Пнд 10:07:21 #123 №3320220 
>>3320216
определить количество байт, занимаемых числом, капец надуманно и неестественно
Аноним 11/11/24 Пнд 10:08:28 #124 №3320222 
>>3320195
Тебе понадобится ресайзабл контейнер, вот и всё. Делаешь байтовый массив. Если число считываешь двоичное, то по 8 бит на ячейку, затем увеличиваешь размер контейнера и продолжаешь. Если десятичное, то проще по одному числу в ячейку. Считаешь записанное тобой мантиссой, сам массив заворачиваешь в структуру, где лежит ещё экспонента. Всё, у тебя получился безразмерный тип данных. Неэффективный по памяти, зато сделался на коленке за пять минут, и всю арифметику к нему можно написать ещё за 15, тупо в столбик.
Аноним 11/11/24 Пнд 10:08:54 #125 №3320223 
>>3320220
Ты часто в си гоняешь числа превышающие long long и long double?
Нахуя?
Аноним 11/11/24 Пнд 10:23:47 #126 №3320229 
>>3320223
Я сотрудник ателье, куда твоя маман за одеждой захаживает.
Аноним 11/11/24 Пнд 10:26:10 #127 №3320230 
>>3320229
так, тут опять за меня отвечают
Аноним 11/11/24 Пнд 10:32:24 #128 №3320235 
>>3320229
Пока ты больше похож на сотрудника родильного отделения для инвалидов.
Аноним 11/11/24 Пнд 10:49:21 #129 №3320249 
>>3320235
Ладно, раскусил, ложись уже на коечку, будем сейчас из тебя ОПа доставать.
Аноним 11/11/24 Пнд 10:55:53 #130 №3320255 
>>3320249
Так где в реальной жизни тебе, программируя на си, пришлось столкнуться с такими числами на инпуте разом? И почему ты предпочел си другому языку для решения этой задачи? И почему тебе надо ебашить всю колбасу целиком и никак иначе?
Аноним 11/11/24 Пнд 11:12:55 #131 №3320279 
>>3320249
И еще тебе вдогонку пара вопросов. Каким образом ты поймешь, что та область памяти, которую ты собрался читать, идентифицирует себя как число? И как выявишь, что оно закончилось и началась другая область, не относящаяся к нему? Да и вообще, как и нахрена оно вообще оказалось у тебя в памяти в таком виде?
Аноним 11/11/24 Пнд 11:30:04 #132 №3320290 
>>3320279
разве области памяти себя как то идентифицируют? я думал это мы их идентифицируем
Аноним 11/11/24 Пнд 11:34:02 #133 №3320295 
как говорится your type is my choice
Аноним 11/11/24 Пнд 11:53:33 #134 №3320304 
>>3320290
Мы. Но мы же в треде говорим о внезапно появившемся шматке байтов произвольного размера, о котором почему-то нихуя не знаем даже примерно, кроме того, что это число.
Аноним 11/11/24 Пнд 12:01:20 #135 №3320308 
>>3320304
задача по оцифровке дикпика
Аноним 11/11/24 Пнд 12:03:37 #136 №3320310 
>>3320195
Для начала нужно определиться откуда считать? Если из стандартного ввода, то это текстовые данные и считывать нужно посимвольно. Чтобы хранить эти данные можно выделить буфер на N байт. Если при чтении оказалось данных больше N байт, то выделить новый участок памяти на N*2 байт, скопировать туда из старого участка данные, продолжить чтение. Повторить пока не прочитаешь все данные.
Аноним 11/11/24 Пнд 12:06:28 #137 №3320311 
>>3320308
Тогда тебе нужен массив из char, шизло.
Аноним 11/11/24 Пнд 12:08:58 #138 №3320312 
>>3320310
> скопировать туда из старого участка данные
да можно ангетч просто ебануть обратно в поток ввода и начать сначала

>>3320311
>бабах
причина fire в твоем ass?
Аноним 11/11/24 Пнд 12:13:15 #139 №3320315 
>>3320312
>причина fire в твоем ass?
Как ты определил, что тебе в потоке ввода будет передаваться число, шиз?
Аноним 11/11/24 Пнд 12:18:49 #140 №3320318 
>>3320315
считываем с клавиатуры посимвольно, записываем в массив, с общим размером 1 байт. если код введённого символа не соответствует цифре, завершаем программу.
после каждый введённой цифры просим у компьютера ещё 1 байт для записи новой цифры (реалоцируем крч), так до условного завершающего символа. получаем массив, каждый байт которого хранит разряд нашей программы. задача выполнена на 90 процентов
Аноним 11/11/24 Пнд 12:19:57 #141 №3320320 
>>3320318
*хранит значение разряда нашего числа
Аноним 11/11/24 Пнд 12:20:03 #142 №3320321 
>>3320315
мы кодим на цифровой технике
причина баха, говно?
Аноним 11/11/24 Пнд 12:48:17 #143 №3320337 
>>3320321
Хуя себе, шизло. А число целое или дробное? А может массив стрингов твоей мамаши?
Аноним 11/11/24 Пнд 12:53:36 #144 №3320339 
>>3320337
набор парусов твоей мамаши это то же числа, и джипег это числа и даже буквы твои обосранные, которые ты тут с горелой сракой высираешь - числа
возвращайся в свою кнопкокрасочную, говно, а тут тред сишников
Аноним 11/11/24 Пнд 12:55:41 #145 №3320341 
>>3320339
И как ты их между собой различаешь в потоке, большой мальчик?
Аноним 11/11/24 Пнд 13:31:21 #146 №3320365 
>>3320341
по тз, маленький
тебе анон озвучил что на воде число хули ты тут серишь биля
Аноним 11/11/24 Пнд 13:43:57 #147 №3320381 
>>3320365
>по тз, маленький
Отлично, шизик. В итоге у нас всё таки существует некое тз, следуя которому тебе передают именно некое число, которое может превышать размер стандартного типа в Си.

Объясни мне теперь, ебланушка, раз уж разработчик любезно извещает тебя, что отдает некое число, сам инициализирует и завершает передачу данных, то прикрутит ли он в реальной жизни, зная, что отдает какой-то огромный нестандартный тип и при этом заодно заранее зная его размер, заголовок с размером этого числа или будет, как ты, весь день заниматься охуительными велосипедами?
Аноним 11/11/24 Пнд 13:51:36 #148 №3320387 
>>3320381
не прикрутит, раз не прикрутил
мозги включи, школяр и пойми, раз никто не обернул твой любимый джесончик, значит никто не обернул и не обернет, значит это просто число, поплачь теперь
Аноним 11/11/24 Пнд 13:53:46 #149 №3320389 
>>3320387
>не прикрутит, раз не прикрутил
Ты когда-нибудь программировал за деньги вообще?
Как раз изначальный реквест - это реквест школяра.
А всё остальное - это маневры. Когда тебе удобно, есть ТЗ, а когда тебе неудобно, то нет ТЗ. Давай-ка определяйся.
Аноним 11/11/24 Пнд 13:58:55 #150 №3320394 
>>3320389
изначальный реквест анона и есть тз
кто мы такие чтобы по первоначальному реквесту анона сразу бросаться на него ссаными тряпками и называть пиздаболом? а ну да мы это ты - пиздлявый эникейщик, неспособный в решение элементарных задачек, твой удел джейсончики перекладыва, ну вот и перекладывай, не трать время на этот тред
Аноним 11/11/24 Пнд 14:18:11 #151 №3320411 
>>3320394
В изначальном реквесте нет ни ху я. "Хочу заебашить динамическое число нестандартного размера и выполнять с ним те же операции, как со стандартными числами". Зачем-почему, нахуя для этого си и как в такой ситуации вообще возможно оказаться - хуй его знает.

Но мелкобуквенная уеба вместо ответа на эти вопросы и признания, что реквест достаточно странный(и ссаными тряпками в него никто не кидался, ебанат), сидит и расчесывает залупу, выдумывая мифические тз на ходу. Хуяк и из кустов появляется stdin, хуяк и по тз по нему передается именно число, хуяк и по тз передается только число, хуяк и составитель тз мгновенно отупел на этом шаге.

>решение элементарных задачек, твой удел джейсончики перекладыва
В чем разница между этой задачкой и перекладыванием джейсочиков, шиз?
Аноним 11/11/24 Пнд 14:27:00 #152 №3320417 
>>3320411
тебе, тупому ослу скозали
>Хочу заебашить динамическое число нестандартного размера и выполнять с ним те же операции, как со стандартными числами
вот с этим и работай, хватит мочу из моего хуя пить, выдумывая причины как не решать эту задачу
не хочешь решать задачку анона - вали нахуй, завайпал блять тред своей тупостью, гандонио ебливый

>В чем разница между этой задачкой и перекладыванием джейсочиков, шиз?
в том, что ты порвался
Аноним 11/11/24 Пнд 14:29:14 #153 №3320419 
>>3320417
>вот с этим и работай
Да с хуя ли?

>в том, что ты порвался
Но порвался-то ты, ебнутый, на простейшем вопросе: нахуй оно вообще надо городить ирл?
Аноним 11/11/24 Пнд 14:32:29 #154 №3320423 
>>3320419
на этот вопрос тебя другой анон подъебнул
красиво вышло, я поржекал
а тебе сраку разнесло в клочья
угомонись, керниганом и ритчи прошу
Аноним 11/11/24 Пнд 14:34:32 #155 №3320426 
>>3320423
Ну вот и выходит, что пиздабол тут ты и тот другой анон.
Аноним 11/11/24 Пнд 14:36:59 #156 №3320427 
>>3320426
пруфы будут, пиздабол?
Аноним 11/11/24 Пнд 14:41:55 #157 №3320428 
>>3320427
Что ты в ответ на простой вопрос выдумываешь хуету на ходу? Двумя постами выше, пиздабол.
Аноним 11/11/24 Пнд 14:49:14 #158 №3320439 
>>3320428
да тебя ебать не должно для чего это используется
тебе дали это понять шуточкой про твою мамашку
пиздец пориджи пошли, уже очевидные вещи надо разжевывать
Аноним 11/11/24 Пнд 14:52:23 #159 №3320443 
>>3320439
Заебись. Тогда надо положить в джейсон и помолиться, ебать. Гарантирую твоим мертвым батей, что будет работать.
Аноним 11/11/24 Пнд 14:56:33 #160 №3320448 
>>3320443
потише реви в этом итт треде
сишник слезам не верит
Аноним 11/11/24 Пнд 14:57:34 #161 №3320450 
капец вы тут наследили, простой же вопрос был
Аноним 11/11/24 Пнд 17:33:56 #162 №3320579 
>>3318888
>Или например что символьный литерал это валидная строка на три элемента.
Это вроде implementation defined вещь, и про это надо читать в мануале твоего конпелятора, а не у праты.
Аноним 11/11/24 Пнд 23:01:09 #163 №3320803 
>>3320579
Ну по стандарту это int, так что формально ты прав и надо смотреть на платформу, но двухбайтовый инт я только в музее видел.
Аноним 12/11/24 Втр 10:58:47 #164 №3320927 
image.png
image.png
научите великовозрастного дебила пользоваться сайтом, почему он не принимает ответ?
Аноним 12/11/24 Втр 11:46:33 #165 №3320965 
>>3317501
Спасибо, бро. Я немного знаю ассемблер, понимаю что такое даташит, но ничего более-менее серьезного не делал.
Аноним 12/11/24 Втр 12:02:17 #166 №3320970 
>>3320927
значит в кейсе вернулся NULL
вона у тибя аутпут пустой

я как то решал эту хуйню на литкоде, сайт пизда неудобный, так что тестил своим тулчейном и потом просто копипасту прогонял на сайте а то мало ли у них индусский конпелятор с припиздонью какой
Аноним 12/11/24 Втр 12:04:46 #167 №3320971 
>>3320927
* returnSize = 2;
Аноним 12/11/24 Втр 12:06:11 #168 №3320974 
>>3320927
Наверное надо ещё написать ⚹returnSize = 2;
Аноним 12/11/24 Втр 12:10:30 #169 №3320979 
>>3320974
где? зачем? вообще не понимаю нафига там эта переменная
Аноним 12/11/24 Втр 12:13:25 #170 №3320982 
>>3320979
Чтобы проверялка поняла длину массива, который ты возвращаешь. Правильнее было бы возвращать что-то типа струтуры { int *, int }, но так тоже можно.
Аноним 12/11/24 Втр 12:16:59 #171 №3320983 
>>3320982
ну так в задачке указано что у нас длина всегда 2, типо просто переменная ради переменной?
Аноним 12/11/24 Втр 12:20:23 #172 №3320984 
а чо ваще просят сделать? вроде изи кейс а вижу какой то брутфорс по матрице
пиривидити с нахрюка пж самому лень
Аноним 12/11/24 Втр 12:30:39 #173 №3320991 
>>3320983
У более сложных задач будет такой же интерфейс, и у тебя тренируют павловский рефлекс.
Аноним 12/11/24 Втр 12:43:57 #174 №3321007 
>>3320991
>>3320974
понял спасибо
Аноним 12/11/24 Втр 18:40:27 #175 №3321345 
>>3321007
покажи что там в итоге получилось
Аноним 13/11/24 Срд 06:56:53 #176 №3321516 
trapc.png
trapc.jpg
>>3304338 (OP)
>Гении C объясните как это работает пожалуйста
https://www.opennet.ru/opennews/art.shtml?num=62224
Аноним 13/11/24 Срд 08:39:33 #177 №3321526 
image.png
>>3321345
эм, а чего там показывать?
Аноним 13/11/24 Срд 12:47:34 #178 №3321641 
>>3321516
Чел пишет код, про который в литературе по C для начинающих пишут: не пишите так код. В итоге получает хуйню в виде переполнений буферов и бесконечных циклов.

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

Вот так это и работает.

Например, в первой программе чел говорит про небезопасность strcpy(), которая позволяет по адресу массива въебать строку, выходящую за его пределы. Перезаписать область памяти переменной success, которая становится из-за этого ненулевой. И что это проблема.

Открыв же учебник для начинающих мы можем прочитать следующее:
Функции strcpy () присуща та ж е проблема, что и strcat () — ни одна из них не проверяет, умещается ли на самом деле исходная строка в целевую строку. Более безопасный способ копирования строк предусматривает применение функции strncpy ().
Эта функция принимает третий аргумент, в котором указывается максимальное количество копируемых символов.


Возможно предлагаемый диалект важен и нужен кому-то, но по текущим примерам я не очень понимаю чем это лучше зигов, растов и еще кучи всего, что пытается быть безопасным си.
Аноним 13/11/24 Срд 13:47:08 #179 №3321671 
ЗДРАСТВУЙТЕ, можно два тупых вопроса?
быстрее ли switch case чем if else
быстрее ли ? : чем if else
или буквально это одно и тоже
Аноним 13/11/24 Срд 13:53:09 #180 №3321675 
>>3321516
TrapC для трапов что ли?
Аноним 13/11/24 Срд 14:15:05 #181 №3321692 
>>3321671
Зависит от того, как твой код оптимизирует компилятор. После оптимизаций вполне может быть одним и тем же.
Аноним 13/11/24 Срд 15:37:12 #182 №3321755 
image.png
написал, пользуйтесь
Аноним 13/11/24 Срд 15:39:42 #183 №3321759 
image.png
поправочки
Аноним 13/11/24 Срд 16:11:16 #184 №3321781 
image.png
ещё поправочки (теперь работает, честно!)
Аноним 13/11/24 Срд 17:05:06 #185 №3321825 
Я не понял, компилятор выбросит ошибку во время исполнения кода или на этапе компиляции? Если во время исполнения, то следует ожидать, что это не будет сообщение "ой" с неизвестной причиной, и он будет выдавать строчку с лажей. Или я должен буду расставлять маркеры по всему коду, выведывая, где протекло?

>>3321641
Но это же профессор. Ты возражаешь профессору?

>>3321675
Там была шутка, что надо было назвать TrumpC, дополнив слоганом "make C great again!". Хотя бы посмеялись.
Аноним 13/11/24 Срд 17:14:17 #186 №3321832 
Тут ещё вопрос, что лучше - программа работает, но где-то мимасит слегка, или программа вылетает нафиг. Допустим, памяти освобождается 16 байт для 9 целевых, из-за выраванивания. Ну промажет он на пару байт иногда, но работать будет. А тут гакнется. Лучше, если это будет опционально всё-таки...
Аноним 13/11/24 Срд 17:22:15 #187 №3321838 
Ещё там пишут, что вся память будет обнуляться... Ну, мягко говоря, сомнительная возможность. Очень часто нафиг не нужно - дрючить РАМу 2 раза вместо 1, каждый раз.
Аноним 13/11/24 Срд 22:48:28 #188 №3322007 
>>3320423
>керниганом и ритчи прошу
Поржал и помолился
Аноним 13/11/24 Срд 22:58:49 #189 №3322010 
173152705919665335.jpg
173152760779375143.jpg
Ребята проблема такова, домики деревянные, набегают солдаты дворца и злодеи
Обновил андроид и у меня перестал мобильный компилятор работать, и работал ли? Я имею ввиду адекватно работал ли.

Есть какой-то заменитель?
Аноним 13/11/24 Срд 23:25:09 #190 №3322018 
173152896936761542.jpg
А вообще вроде работает. Но вопрос остаётся, вдруг кто чего хорошее подскажет
Аноним 14/11/24 Чтв 06:00:00 #191 №3322062 
>>3321755
>>3321759
>>3321781
ума не приложу где твой массив может пригодиться
Аноним 14/11/24 Чтв 09:04:13 #192 №3322128 
image.png
>>3322062
ясно, что никакого практического смысла в этом нет, просто пытался написать функцию суммирования без знака +

Думал, что из за little-endian будет какая то фигня при битовом сдвиге, оказывается нет, всё работает как и должно, можно и адресную арифметику выкинуть
Аноним 14/11/24 Чтв 09:25:17 #193 №3322138 
>>3322128
>Думал, что из за little-endian будет какая то фигня при битовом сдвиге
а почему ты так думал? эндианы прикованы к хранению данных, а байтсдвиги это операции над данными. между ними нет связи, эти процессы поисходят в разных местах
Аноним 14/11/24 Чтв 12:18:35 #194 №3322221 
>>3321825
Я так понимаю, что на этапе компиляции.

>Ты возражаешь профессору?
Я ему еще и пойти и отсосать предложу, если он мне такую хуйню без веских пояснений, как и зачем он в таком положении оказался, расскажет.
Аноним 14/11/24 Чтв 14:17:27 #195 №3322317 
Сап. Что пишут на C? Возможно ли найти работу на C джуну?
Аноним 14/11/24 Чтв 14:54:10 #196 №3322327 
>>3322317
В основном прошивки, драйвера, микроконтроллеры, ядро UNIX-подобных ОС. Реже работа с сетью (файерволлы и т.д.), СУБД (PostgreSQL написана на C).

Без опыта обычно берут студентов/выпускников всякие НИИ, ФГУПы и заводы.
sage[mailto:sage] Аноним 14/11/24 Чтв 17:01:28 #197 №3322399 
>>3322327
>ядро UNIX-подобных ОС
Ядро для других ОС пишут сразу в двоичном коде?
Аноним 14/11/24 Чтв 17:15:03 #198 №3322414 
>>3322399
На вижуал бейсике же.
Аноним 15/11/24 Птн 04:07:27 #199 №3322689 
>>3322414
>вижуал
Аноним 15/11/24 Птн 09:25:18 #200 №3322763 
image.png
а списки вот так делаются?
Аноним 15/11/24 Птн 09:39:33 #201 №3322768 
>>3322763
Нет.
Аноним 15/11/24 Птн 09:40:51 #202 №3322770 
>>3322763
У тебя при добавлении элемента выход за пределы массива.
Аноним 15/11/24 Птн 09:53:06 #203 №3322784 
image.png
>>3322770
исправил
Аноним 15/11/24 Птн 09:54:32 #204 №3322787 
>>3322763
я наверное что то пропустил, но схуяли ты функции внутри структуры описываешь? это плюсы штоле?
Аноним 15/11/24 Птн 09:59:33 #205 №3322797 
>>3322787
меня алиса убедила что так можно
Аноним 15/11/24 Птн 10:00:33 #206 №3322799 
но компилятор пока не согласен такое принимать
Аноним 15/11/24 Птн 10:09:13 #207 №3322803 
>>3322797
поколение жэпэтэдебилов....
Аноним 15/11/24 Птн 10:18:22 #208 №3322812 
Почему в си не хотят добавить пространство имён, чтобы можно было писать типа:
mylib::calc(a, b);
stdio::printf("hi!\n");
Аноним 15/11/24 Птн 10:28:24 #209 №3322815 
Вот по логике тип int должен представлять естественный размер данных для конкретной машины. Но при этом его ограничили, чтобы он был не меньше 16 бит. Но что если нужно реализовать компилятор си на 8-битной машине, где естественный размер данных - это 8 бит. К примеру, на Z80A регистр аккумулятора 8-битный и получается, что int там должен быть тоже 8 битный. Но это не будет соответствовать стандарту.
Аноним 15/11/24 Птн 10:55:42 #210 №3322826 
>>3322812
зачем? чтобы больше писать приходилось?
Аноним 15/11/24 Птн 10:58:09 #211 №3322828 
>>3322815
int типизируется под один жмых шины данных, чтобы за один жмых машина всосала один word, а не под размер регистров
под Z80F своя сдлиба со своим интом, как и на любой другой машине (уверен в этом но не проверял)
Аноним 15/11/24 Птн 10:59:45 #212 №3322831 
>>3322826
Вдруг мне надо определить свой printf и просто пишу:
mylib::printf("my out!\n");
и это ни как не будет конфликтовать со стандартным:
stdio::printf("std out!\n");
Если лень много писать, то можно добавить ещё оператор use или import
Аноним 15/11/24 Птн 11:02:50 #213 №3322834 
>>3322831
в чем проблема определить свой принтф и не линковать принтф из стд либы?
или например в чем проблема определить свой принтф без этих пространств?
myprintf()
printf()

vs

huyzalupa228::printf()
stdlib::printf()

зачем блять? чтобы больше писать пришлось?
Аноним 15/11/24 Птн 11:18:15 #214 №3322846 
>>3322803
получается наоборот, типа не вызываешь функцию структуры, а вызываешь функцию, и передаёшь ей указатель на структуру?
Аноним 15/11/24 Птн 11:40:44 #215 №3322856 
>>3322846
может тебе стоит почитать какой нибудь учебника по си а не высеры ии хуиты? в си можно и так и эдаки вообще как хочешь, лучший язык эвар
Аноним 15/11/24 Птн 12:51:03 #216 №3322914 
Аноны, а _Атомик, регистр, рестрикт, волатил есть смысла нарабатывать или ими не пользуются и компилятор может без них?
Аноним 15/11/24 Птн 12:58:08 #217 №3322922 
>>3322914
> рестрикт, волатил
Есть
> регистр
Нет
> _Атомик
Вообще не знаю что это, хуйня какая-то, на цппреференс написано что компиляторы вообще не обязаны это поддерживать.
Аноним 15/11/24 Птн 13:00:11 #218 №3322924 
>>3322914
>регистр
спорная хуйня
надо вырубать все оптимизейшон флаги, чтобы управлять фетчем в регистр, что в свою очередь спорное решение, так как компилер (а с некоторых пор и сама железка) зачастую лучше оптимизирует, чем макака это делает руками
Аноним 15/11/24 Птн 13:02:35 #219 №3322926 
>>3322922
>Вообще не знаю что это
У Пратта вычитал. Там написано, что из C11 пришло. Тоже не очень понял зачем.

>>3322922
>Нет
>>3322924
>спорная хуйня
Спасибо, принял. По регистру примерно так и думал, но решил у вас проконсультироваться, т.к. мб что-то упустил.
Аноним 15/11/24 Птн 13:06:02 #220 №3322930 
атомики это вроде для мультитрединга что промисами не срать
не силен в этом, краем уха слышал на конфе яндекса по крестам
Аноним 15/11/24 Птн 13:09:51 #221 №3322931 
>>3322930
>атомики это вроде для мультитрединга что промисами не срать
Записал, спасибо. Значит мне туда пока рано лезть.
Аноним 15/11/24 Птн 13:18:38 #222 №3322942 
А вообще существуют вакансии по си на удалёнку? Или это онли офис, где будешь ещё и паять.
Аноним 15/11/24 Птн 13:25:33 #223 №3322954 
>>3310006
первые две - говнище, лучше k&r ничего пока не написали и не напишут
третья - норм
Аноним 15/11/24 Птн 13:27:13 #224 №3322958 
>>3322942
Наверняка какая-нибудь хуйня, связанная с блокчейном, распределенными сетями и протоколами есть.
Только зачем тебе си, если тебе кровь из носу надо зарабатывать? Садись на фронт на JS и не еби голову.
Аноним 15/11/24 Птн 13:39:07 #225 №3322980 
>>3322958
Не хочу на фронт, хочу в тыл бэкенд
Аноним 15/11/24 Птн 13:40:20 #226 №3322985 
>>3322954
Почему это Прата - говнище?
Аноним 15/11/24 Птн 14:01:10 #227 №3323003 
>>3322980
>бэкенд
Всё ещё не нужен си. Ты просто пойми, что для заработка это хуевый язык.
Си нужен для клевых вещей в свободное время или за миску риса(в среднем по рынку). Либо застартапить, если у тебя кубышка батька позволяет.
Аноним 15/11/24 Птн 14:47:00 #228 №3323051 
>>3323003
А если создать свой язык типа homoC и на нём как-то зарабатывать?
Аноним 15/11/24 Птн 14:53:35 #229 №3323059 
>>3323051
круто, когда начнёшь?
Аноним 15/11/24 Птн 14:55:16 #230 №3323063 
>>3323051
>А если создать свой язык типа homoC и на нём как-то зарабатывать?
Вопрос не мальчика, но первокурсника.
Аноним 15/11/24 Птн 16:11:17 #231 №3323117 
prata-scanf.jpg
Вот читаю Прату, дошёл до того момента, где он объясняет scanf и почему надо аргумент функции передавать через &, и какую же ересь я читаю (см. пикрил). И это лучшая книга по С?
Аноним 15/11/24 Птн 16:15:15 #232 №3323123 
>>3323117
прата - в голове насрато
Аноним 15/11/24 Птн 16:17:24 #233 №3323127 
>>3323123
а чо, надо сразу вывалить из штанов указатели, адресацию и адресную арифметику, что бы напугать читателя?
Аноним 15/11/24 Птн 16:19:21 #234 №3323129 
>>3323127
Да, он хочет этого. То что Прата постепенно объясняет он не дочитал. Я сначала тоже горел с этого, а на середине книги понял, что способ изложения неплохой для новисов.
Аноним 15/11/24 Птн 16:21:57 #235 №3323130 
>>3323127
нет, ну давайте будем завуалированно объяснять, чтобы читатель нидай бох не испугался
высрем код и скажем имаджинируйте как он делает магию
ну а регистры адресацию кучу и стек оставьте пердунам на ассемблерах, у нас тут клуб современных чтецов гомогеев на homoC
Аноним 15/11/24 Птн 16:23:13 #236 №3323132 
>>3323130
Либо ты затерпиш 4 главы и про магию тебе объяснят там.
Аноним 15/11/24 Птн 16:30:11 #237 №3323136 
терпеть!
Аноним 15/11/24 Птн 16:30:50 #238 №3323137 
>>3323136
Ну по твоей логике изучение Си надо начинать с инструкции по сборке PDP-11.
Аноним 15/11/24 Птн 16:32:52 #239 №3323140 
>>3323130
ну значит из тебя хреновый преподаватель. объяснять темы надо там, где это уместно. Рассказывать человеку, который пять минут назад радовался тому, что вывел строку в терминал, про смысл & это просто неуместно.
Аноним 15/11/24 Птн 16:36:49 #240 №3323143 
>>3323140
ну да, у меня то же был хуевый препод по крестам, так как еще до лаб где мы впервые высирали хуйню в консоль, объяснял указатели на указатели на указатели
а еще помню на дискретке рекурсии в тетрадке писали и имаджинировали стек

но ты конечно умнее всех, ты бы рассказал как оно курсе на четвертом, когда все уже затерпели
Аноним 15/11/24 Птн 16:42:58 #241 №3323146 
>>3323143
Сдается мне ты пиздишь на своего препода, старый, и наверняка он перед указателями на указатели сперва нехуйственный пласт инфы на вас вылил.
Аноним 15/11/24 Птн 16:52:10 #242 №3323151 
>>3323127
Можно просто написать, что смысл будет объясняться в такой-то главе, а сейчас просто пишите &. Но вместо этого он начинает выдумывать ложные объяснения.
Аноним 15/11/24 Птн 16:55:37 #243 №3323152 
>>3323151
И создать дополнительное давление на новичка, что он выучил какую-то залупу и до 4 главы ему будут ссать в глаза.
Аноним 15/11/24 Птн 16:58:41 #244 №3323154 
>>3323146
да обычный пласт, точки с запятой, декларативность, признаки императивности, основные типы данных, всю эту хуйню вкатунскую, и указатели
поинтеры это база, их надо сразу ебашить, чем раньше тем лучше
я понимаю это больно для питономакак, но что поделать, так работает машина
Аноним 15/11/24 Птн 17:06:08 #245 №3323159 
>>3323154
Ну хотя бы выражения тебе раньше поинтеров показали.

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

Странный у тебя доеб.

Эта книга написана так, что если ты в каком-то моменте затупил, то тебе это последовательно разжуют и в конце дадут упражнения, соответствующие твоему текущему уровню, для закрепления, а также вопросы с ответами. Она не идеальная, но достаточно хороша для самообучения основам. Зря ты мандишь на неё.
Аноним 15/11/24 Птн 17:12:00 #246 №3323161 
>>3322763
> а списки вот так делаются?
https://github.com/torvalds/linux/blob/master/include/linux/list.h
В структурах через container_of получаешь указатели на овнера узла.
Аноним 15/11/24 Птн 17:15:09 #247 №3323162 
>>3322812
>Почему в си не хотят добавить пространство имён
Судя по тому, куда идёт стандарт, добавят в си30.
Аноним 15/11/24 Птн 17:16:42 #248 №3323164 
>>3322954
Сикорд збс.
Аноним 15/11/24 Птн 17:37:50 #249 №3323178 
>>3323159
>Так а хули не с автоматических выключателей-то начали и сборки щитков?
потому что это другой факультет другого института
устройство эвм на базе х86 дают на вмк, там и логические вентили и самореплицирующие автоматы, а у нас пм - то бишь матмодели, глубже в машину нет смысла погружаться
Аноним 17/11/24 Вск 12:50:42 #250 №3324133 
Может кодик какой то скинете, подумаем посидим
Аноним 17/11/24 Вск 16:36:52 #251 №3324268 
Ещё один безопасный клон си подвезли.
https://www.opennet.ru/opennews/art.shtml?num=62241
>На текущем этапе развития, собираемые в Fil-C программы медленнее примерно в 1.5-5 раз, по сравнению со сборкой обычными компиляторами.
Как будто и не удивительно. Как же иначе?
>При помощи Fil-C без внесения изменений могут быть собраны проекты bzip2, zip, pcre и ncurses. С незначительными модификациями поддерживается сборка OpenSSH, OpenSSL, CPython, SQLite, Lua, Curl, Lynx, jpeg6b, zsh, xzutils и simdutf.
>В случае ошибок при работе с памятью приложение сразу аварийно завершается, что не позволяет эксплуатировать возможные уязвимости.
Ну вот фиг его знает. Мне видится это прежде всего как инструмент отладки. Допустим, запускаем утиль сначала через этот компиль, тестим по-всякому. А если в результате всё гладко - бинарим уже по-классике, без защитных механизмов.
Аноним 17/11/24 Вск 17:09:20 #252 №3324279 
>>3324133
могу чо нито скинуть из старого
давеча вот пришла идея как по честному допилить задачку и каэр, а то моя версия кривенькая

>>3324268
даже как отладчик не котируется
на холодном старте все гладко, а на рантайме 75д крашнуло
ну и сколько тогда тестировать? откуда взять время на тесты? хуита
клоны си нинужны, кроме крестов, но кресты это коммерческий си чтобы тяпляп и в продакшин
Аноним 17/11/24 Вск 17:24:37 #253 №3324289 
image
>>3324133
суть: выставляет биты по номерам, понадобилось когда писал не помню чо памятезависимое, там была куча флагов и я решил их "упаковать" в пару чаров, так родился этот хидер можно было бы конечно сделать таблицу девайнов, но я не очень люблю такой подход

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

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

хидер не прогонял никакими тестами, просто влепил в живой проект и закоммитил так как усё работало
Аноним 17/11/24 Вск 17:40:43 #254 №3324299 
>>3324279
>из старого
>давеча вот пришла идея как по честному допилить задачку и каэр, а то моя версия кривенькая
Кидай, тут хз, а так яндексдиск или ещё чего, я прост хз что такое каэр
Сам думаю чем заняться, или вообще начать библиотеки под себя писать. На будущее
Аноним 17/11/24 Вск 17:48:35 #255 №3324304 
>>3324289
Этоо точноо си?
Аноним 17/11/24 Вск 18:44:36 #256 №3324340 
>>3324304
да, это точно си, самый настоящий
https://pastebin.com/CRHTAUyN
Аноним 18/11/24 Пнд 08:43:19 #257 №3324590 
image.png
>>3324289
я биты меняю так, никогда ничего не ломалось (вроде бы)
Аноним 18/11/24 Пнд 12:16:47 #258 №3324744 
>>3324590
Почему не написать восемь масок в макросах и не заставлять процессор тратить циклы?
Аноним 18/11/24 Пнд 12:27:26 #259 №3324766 
>>3324744
не уверен, что понимаю, что это значит
Аноним 18/11/24 Пнд 12:32:40 #260 №3324780 
>>3324340
Да, это макросы ебаные.
Аноним 18/11/24 Пнд 12:37:16 #261 №3324785 
>>3324590
Глобальные автоматом обнуляются. Можно равно не писать = {0}.
Аноним 18/11/24 Пнд 12:38:52 #262 №3324789 
>>3324780
>ебаные
извинись
Аноним 19/11/24 Втр 03:43:23 #263 №3325287 
Может кто знает где книжку прата от 2015 года можно скачать?
Аноним 19/11/24 Втр 03:48:41 #264 №3325288 
>>3325287
Не в пдф само собой. А в формате fb2
Аноним 19/11/24 Втр 07:22:58 #265 №3325309 
>>3325288
в яндексе
Аноним 19/11/24 Втр 09:51:38 #266 №3325336 
>>3325288
Есть только скан, а сканы не могут быть в fb2
Аноним 19/11/24 Втр 09:55:22 #267 №3325338 
>>3322954
k&r не актуальна же, там древний стандарт и на первом же примере хеллоу ворлда современный компилятор выдаст если не ошибку, то предупреждение. К тому же авторы ограничились сугубо языком си, а всё остальное типа библиотек и каких-то практик к нему не относящимся, но по факту эту инфу тоже надо знать. Так что книга имеет скорее историческое значение и не подходит в качестве учебника.
Аноним 19/11/24 Втр 10:48:58 #268 №3325359 
почему функция возвращает 0 при любых отрицательных значениях x?

https://pastebin.com/d305yGq0
Аноним 19/11/24 Втр 11:07:08 #269 №3325369 
догнал, функция power дурная была
Аноним 19/11/24 Втр 13:12:52 #270 №3325457 
>>3325336
В том и проблема.
Читаю с телефона, сканы с него не очень читать.
Бумажную книгу тоже неудобно читать - она приличного размера.
Аноним 19/11/24 Втр 14:09:09 #271 №3325515 
>>3325457
А чем пдф-то плох? Спокойно на шестом размере читал. Глаза не выламывало.
Аноним 19/11/24 Втр 14:40:54 #272 №3325544 
>>3325457
Читай 5-е издание, оно было в электронном формате, а различия с 6-м изданием там минимальные.
Аноним 19/11/24 Втр 15:12:18 #273 №3325567 
krhello.jpg
>>3325338
Проверил, действительно выдаёт предупреждения, потому что старый стандарт. Хотя написано, что это ANSI.
Аноним 19/11/24 Втр 15:13:43 #274 №3325573 
>>3325338
Я просто код меняю частично и всё работает
Аноним 19/11/24 Втр 15:14:49 #275 №3325574 
>>3324289
Ща я ещё дня на джва занят, дела по работе, потом опять вернусь к обдумываниям
Аноним 19/11/24 Втр 15:23:09 #276 №3325581 
>>3325573
Как узнать что менять?
Аноним 19/11/24 Втр 15:36:52 #277 №3325591 
>>3325567
>Хотя написано, что это ANSI.
какой смысл ты вложил в это "хотя"?
Аноним 19/11/24 Втр 15:42:17 #278 №3325596 
image
>>3325567
у тебя кстати то же старый стандарт в компилере
патамушта типерь ета еррор
Аноним 19/11/24 Втр 15:42:49 #279 №3325598 
>>3325591
Прата пишет, что стандарт требует писать int main(void), а K&R пишут на своём стандарте 70-х годов, хотя второе издание они писали по стандарту ANSI, но на деле ему не соответствует.
Аноним 19/11/24 Втр 15:44:40 #280 №3325601 
>>3325598
все стандарты си это стандарты анси, ведь без американ нэйшинал стандарт инститьют невозможно записать очередную редакцию языка как стандарт билять
что за дырявая логика у тебя
Аноним 19/11/24 Втр 15:45:56 #281 №3325602 
>>3325601
Не было в 70-е ни каких стандартов. Первый только в 89 году появился. Сразу видно, что Прату не читал.
Аноним 19/11/24 Втр 15:47:55 #282 №3325606 
>>3325602
у праты в голове насрато
Аноним 19/11/24 Втр 16:00:22 #283 №3325619 
>>3325596
Это только на макпуках так
Аноним 19/11/24 Втр 16:05:48 #284 №3325630 
>>3325619
щас бы кодить не на макпуке
Аноним 19/11/24 Втр 16:19:01 #285 №3325645 
>>3325596
Как будто бы дело не в стандарте, а в кланге.
Аноним 19/11/24 Втр 17:00:55 #286 №3325691 
>>3325645
да не
думаю дело в стандарте
там же хотели закрыть потенциальные дыры в безопасности этими явными объявлениями сигнатур
а кланг то же тупенький, даже ворнинги не бросает за отсутствие описания параметров
Аноним 19/11/24 Втр 21:13:56 #287 №3325808 
>>3325581
Жонглируют библиотеками, добавляю разные слова, и иногда код работает, процентов 90, это и есть задача научиться программировать, понять неработающий код и запустить
Аноним 19/11/24 Втр 21:17:48 #288 №3325811 
>>3325808
Дополню, там ещё бывают разные версии компиляторов, ну иногда изменить, дописать, убавить в сумме является решить задачку, но это простой уровень, вот написать код чтоб удовлетворял условиям задачи, следующий уровень, я поэтому то и попросил каких-нибудь вариантов чужих кодов, вместо кроссвордов или игр телефонных, ну крч как хобби, сидеть и ебать себе мозги
Аноним 19/11/24 Втр 22:14:52 #289 №3325829 
>>3325544
>а различия с 6-м изданием там минимальные.
Различия огромные, например в 5м издании нет многопоточки. Которую спросят везде, если пытаться устроиться на работу на си.
Аноним 19/11/24 Втр 22:20:42 #290 №3325832 
>>3325829
Так в шестом тоже нет многопоточки. Там просто упоминается, что на есть и какие слова под неё зарезервированы в стандарте.
Аноним 19/11/24 Втр 23:05:32 #291 №3325844 
>>3325811
>сидеть и ебать себе мозги
K&R порешай
13 задачу так никто и не решил в этом итт тредие или какая там была холиварная я уже забыл
Аноним 20/11/24 Срд 01:59:55 #292 №3325884 
>>3325844
Надеюсь речь не про 1.13 гистограмму?
Аноним 20/11/24 Срд 10:21:43 #293 №3325962 
image.png
а почему long long не может сохранить все 8 значений?
Аноним 20/11/24 Срд 10:29:47 #294 №3325966 
>>3325962
Лонг лонг может, а символьный литерал − нет. Что такое '12345678', какой это тип? А у Прата написано.
Аноним 20/11/24 Срд 11:38:08 #295 №3326019 
>>3325966
>А у Прата написано
Да тут и без праты понятно, что символьный литерал промоутится до инта, который потом представляется в long long.
Причём промоушен символьного литерала до инта это - implementation defined behavior, а про это читать в доке конпелятора.
Аноним 20/11/24 Срд 11:52:10 #296 №3326034 
>>3326019
>промоутится
что делает?
Аноним 20/11/24 Срд 12:03:45 #297 №3326051 
>>3326034
Гугли C стандарт, integer promotion. "Короткие" типы повышаются до signed int/unsigned int, но представление символьного литерала из нескольких символов не описано в стандарте, конкретно в гцц это число по основанию 256.
Аноним 20/11/24 Срд 12:30:34 #298 №3326081 
>>3326051
> повышаются
спасибо, что не высрал портянку вместо русского слова
Аноним 20/11/24 Срд 12:45:43 #299 №3326093 
>>3326081
И это тоже есть у Праты
Аноним 20/11/24 Срд 12:53:10 #300 №3326099 
>>3326093
пратасимп захватил тред
Аноним 20/11/24 Срд 13:00:36 #301 №3326103 
>>3326099
Я другой анон. Просто недавно пролистывал его и решил тебя еще раз им подъебать.

Что про Клеменса "C 21 века" скажешь?
Аноним 20/11/24 Срд 15:45:28 #302 №3326194 
>>3325962
Да хоть 16.
>0123456789ABCDEF
typedef struct { char v[16]; } anytype;
anytype x= ✴(anytype ✴)("0123456789ABCDEF");
fwrite(&x, sizeof(anytype), 1, stdout); puts("");
Аноним 21/11/24 Чтв 08:46:56 #303 №3326511 
>>3326194
не понял, зачем создавать отдельную структуру, что бы просто напечатать строку. и вопрос ведь не про строки был
Аноним 21/11/24 Чтв 16:57:31 #304 №3326839 
>>3326511
тебе слово anytype ни о чём не говорит?
long long x= ✴(long long ✴)("12345678");
ну вот тебе твои 8 значений, символами; все в x, как ты и хотел; зачем - мне не ведомо... )
Аноним 21/11/24 Чтв 16:57:44 #305 №3326840 
Поцаны, можете проверить нет ли в fb2 формате вируса? Не распидорасит?
https://librusec.org/ru/book/stiven-prata/yazik-programmirovaniya-c-lektsii-i-uprazhneniya-6-e-izd-2015
Аноним 21/11/24 Чтв 22:28:53 #306 №3326982 
173221712850067482.jpg
>>3326840
https://librusec.org/ru/book/stiven-prata/yazik-programmirovaniya-c-lektsii-i-uprazhneniya-6-e-izd-2015
Вот эта без вирусов 18 метров правда, и без меню
Ебать меня на работе заебали

>>3324340
Я всё ещё на связи, как освобожусь, займу голову, ибо это полезно
Аноним 21/11/24 Чтв 22:29:56 #307 №3326983 
Ну йуу меня покрайнейй мере доктор веб норм отнёсся к файлу
Аноним 22/11/24 Птн 12:30:58 #308 №3327219 
talkbackprata.jpg
Почему имя состоит из 16 букв, а не из 8?
Аноним 22/11/24 Птн 12:49:53 #309 №3327241 
>>3327219
кодировка мейби? например в UTF-16 каждый символ это два байта, возможно strlen из за этого как то криво читает

попробуй напечатать каждый элемент массива через %d
Аноним 22/11/24 Птн 12:50:34 #310 №3327243 
>>3327241
> каждый символ это два байта
*минимум два байта
Аноним 22/11/24 Птн 12:52:38 #311 №3327247 
>>3327241
99%, что кодировка. Прогнал этот код у себя на пк ради интереса. Всё нормально показывает.
Аноним 22/11/24 Птн 13:53:31 #312 №3327299 
>>3327219
тут надо бы сделать нормальный разбор потому что я ебу был бы ответ на твою хуйню
закладывай защиту от дурака
Аноним 22/11/24 Птн 14:03:51 #313 №3327308 
image
>>3327299
отклеилось
Аноним 22/11/24 Птн 14:47:39 #314 №3327344 
>>3327299
Это пример из книжки. Условия и циклы Прата ещё не рассказывал.
Аноним 22/11/24 Птн 16:11:53 #315 №3327407 
гении цэ
Аноним 22/11/24 Птн 19:48:49 #316 №3327542 
>>3327219
В UTF-8 кириллица 2 байта.
Аноним 22/11/24 Птн 19:52:07 #317 №3327546 
>>3327542
И вообще, дополню, что многие базовые функции и принципы работы со строками рассчитаны только на ASCII/Extended ASCII. Для широких символов есть другие стандартные либы и другие функции.
Аноним 23/11/24 Суб 13:43:28 #318 №3327756 
>>3327407
Цэ шо?
Аноним 23/11/24 Суб 13:47:57 #319 №3327759 
>>3326982
>Вот эта без вирусов 18 метров правда, и без меню

Я не понял.
Там каждый раз когда открываешь одну и ту же ссылку - вес у файлов меняется. Чо за хрень.
Аноним 23/11/24 Суб 14:10:57 #320 №3327762 
>>3327756
цэ гении
Аноним 23/11/24 Суб 20:34:28 #321 №3327984 
>>3327759
Ну да вес немного другой, 17 с чём-то, я тоже обратил внимание, но объяснить причину не могу, иногда кстати такое бывает, округляет может? У меня доктор веб или пускает или нет, вроде так, мне кажется меня б на сайт даже не пустило если б там была хуета говна, но иногда при скачке бракует и просто не пускает, так что придётся поверить на слово, или потом перепроверять
Аноним 23/11/24 Суб 20:35:55 #322 №3327989 
Один фиг подозрительно, вдруг файлы подменивают, и кому то 50 на 50 может хуета говна залететь
Аноним 25/11/24 Пнд 14:51:35 #323 №3329011 
Что-то по си совсем как-то туго с книгами. Вот по С++ дофига всего, причём много крутых книг от именитых авторов и рассматривают не только синтаксис, а как правильно писать программы, избегая типовых ошибок.
Аноним 25/11/24 Пнд 16:48:48 #324 №3329097 
>>3329011
>Что-то по си совсем как-то туго с книгами.
Да потому что он нахуй никому не всрался. Си использует узкая прослоечка системщиков и программистов микроконтроллеров. Но на модулях ядра сильно не заработаешь. Это интересно только энтузиастам и ценителям "чистого программирования".
Аноним 25/11/24 Пнд 17:25:52 #325 №3329124 
>>3329097
Получается лучше учить С++?
Аноним 25/11/24 Пнд 18:08:03 #326 №3329156 
>>3329124
Ну никаких других же языков на свете нет. Си. Си плюс плюс. Таненбаум. Сикп. Чистый код. И книг других тоже нету. Если сделаешь шаг вправо, шаг влево - расстрел.

>лучше учить
Лучше иметь свежие идеи. А не обсасывать одно и то же по миллиону раз.
Аноним 25/11/24 Пнд 19:07:26 #327 №3329205 
>>3329156
>Ну никаких других же языков на свете нет
Неиронично, это так. Конечно, если считать сделанные на ллвм обёртки для дёрганья сисколов за языки, то тут можно поспорить.
Аноним 25/11/24 Пнд 19:18:49 #328 №3329216 
>>3329205
Почему не сделают обёртку в стиле го, чтобы не было сборщика мусора и тяжёловесного рантайма, чтобы можно было писать такие же минималистичные программы, а также со встроенным менеджером больших проектов, а не как сейчас всякие make?
Аноним 25/11/24 Пнд 19:30:49 #329 №3329231 
>>3329216
https://dlang.org/spec/betterc.html
https://ziglang.org/
В каком-то виде Nim.
Аноним 25/11/24 Пнд 19:38:34 #330 №3329239 
>>3329231
Точки с запятой
Скобки вокруг условий
Нет сборщиков проектов (также предлагают дрочить make)
Вечно какая-то хрень в стиле С++, а не С
Аноним 25/11/24 Пнд 19:59:25 #331 №3329251 
>>3329216
потому что... получится Си.
Аноним 25/11/24 Пнд 20:48:55 #332 №3329267 
так мейк ахуенен в чем претензия
Аноним 26/11/24 Втр 00:04:06 #333 №3329375 
>>3329124
Я тебе неделю назад написал, что учи Джаву и ДжавуСкрипт. Тебе легаси с долларовыми зарплатами хватит до конца жизни. Люди всё ещё зарплату за код на Дельфи получают.

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

Зачем тебе дрочить мозг си и плюсами, если цель - исключительно зарабатывать деньги в качестве гребца на галере? Полно же более оптимальных путей.
Аноним 26/11/24 Втр 07:45:12 #334 №3329429 
>>3329267
Я вот тут уже набросал концепт будущего сборщика homo. Будет конфиг файл, но его ковырять руками не обязательно, всё делается через команды: homo new [project_name], homo build, homo run.
По сути ничего сложного. Нужно рекурсивно пройтись по дереву каталогов и сформировать список файлов исходников. Затем для каждого сформировать объектный файл. Затем всё это скомпоновать и на выходе получил бинарник.
Почему эта простая идея до сих пор не реализована в си-сообществе - не понятно.
Аноним 26/11/24 Втр 08:53:34 #335 №3329456 
>>3329429
манют трехколесный лисапед изобретает?
Аноним 26/11/24 Втр 10:05:24 #336 №3329511 
8479406.jpg
>>3329456
Ну пока все сборщики напоминают пикрил
Аноним 26/11/24 Втр 10:15:25 #337 №3329519 
>>3329239
Проблема Си не в в точках с запятой и отсутствии свистелок и перделок.
Аноним 26/11/24 Втр 10:43:49 #338 №3329530 
>>3329519
Прогрессивным разработчикам нужны новые веяния
Аноним 26/11/24 Втр 10:52:05 #339 №3329534 
>>3329429
Чел, твоя идея реализуется в мейке в несколько строк. Если кому-то нужно.
Но мне например нет − часть каталогов это модули, которые подключаются в бинарь в зависимости от того под какую систему/с какой периферией он собирается, а половина это вообще юнит-тесты.
Аноним 26/11/24 Втр 10:59:13 #340 №3329536 
>>3329429
так это то, чем смак занимается, не?
Аноним 26/11/24 Втр 11:00:40 #341 №3329539 
>>3329534
Это невозможно сделать в мейке. Там жесткие пути до файлов и надо каждый файл прописывать. В итоге на один файл у тебя будет по 10 строчек конфига мейка. Когда проект на сотни файлов, то задолбаешься писать и где-то обязательно ошибёшься.
Аноним 26/11/24 Втр 11:25:03 #342 №3329554 
>>3329530
Это ты про раст и лгбт? бггг))

>>3329539
CMake через include_directory обходит дерево проекта и генерит соотв. make-файлы, для очень больших проектов, например, для огнелиса используется другой тул Ninja. Если нужна кастомизация мэйкфалов "извне", то так повелось, что их обычно генерят из шаблонов, либо тулы сами их выплёвывают.
Аноним 26/11/24 Втр 11:46:48 #343 №3329567 
>>3329511
>все
Назови хотя бы 5
Аноним 26/11/24 Втр 11:47:07 #344 №3329568 
>>3329554
И чем это ковыряние конфигов лучше, чем написать команду homo build?
Аноним 26/11/24 Втр 11:52:13 #345 №3329572 
>>3329568
Х3, контроля больше, кастомизации больше. В растоговне же тоже можно скрипты ебануть на расте, которые будут при сборке запускаться.
Аноним 26/11/24 Втр 11:57:34 #346 №3329576 
>>3329567
Make
CMake
Ninja
Bazel
Autotools
Аноним 26/11/24 Втр 12:12:27 #347 №3329585 
CodeRa6m9i27uJ.png
CodelW2zIr1UaE.png
>>3329539
> Там жесткие пути до файлов и надо каждый файл прописывать
С $(shell find и $(wildcard и прочим? Чел, ты хоть раз нормальный мейк видел?
Аноним 26/11/24 Втр 12:24:57 #348 №3329600 
>>3329576
>Autotools, Make
Дед, привет
Аноним 26/11/24 Втр 12:29:38 #349 №3329609 
>>3329600
Привет, пердеж.
>>3329267
Отмотал нить в начало для тебя.
Аноним 26/11/24 Втр 14:36:13 #350 №3329713 
>>3329585
дополню этого оратора
еще можно переменные окружения юзать и в разных шеллах запускаться
а еще можно запускать сторонние сценарии мейка
и вообще хуячить рекурсивно мультипоточную хуергу
мейк буквально полный по тьюрингу и может всё

я вот автотесты мейком запускал с линтерами перед ребилдом
и где то лежал мейк нью для автозапила дерева проекта
Аноним 26/11/24 Втр 14:55:52 #351 №3329739 
>>3329585
Ни в одной книге не пишется, как писать такие макефайлы. Есть только игрушечные примеры. А подавляющие количество книг вообще обходит тему сборки проектов стороной. Тот же Прата ни слова про это не говорит вообще.
Аноним 26/11/24 Втр 14:58:27 #352 №3329741 
>>3329739
>Тот же Прата ни слова про это не говорит вообще.

>В Unix имеется команда make, которая автоматизирует управление многофайловыми программами, но эта тема выходит за рамки настоящей книги.

Извинись
Аноним 26/11/24 Втр 15:00:03 #353 №3329743 
>>3329267
Ну какой мейк, ребят, у вас пробелы вместо таба поставить нельзя, и кроссплатформенность в жопе
Аноним 26/11/24 Втр 15:02:02 #354 №3329744 
>>3329743
>пробелы вместо таба поставить нельзя, и кроссплатформенность в жопе
Теперь это питонотред?
Аноним 26/11/24 Втр 17:17:04 #355 №3329861 
>>3329744
в мейкфайле управляющая строка начинается с имвола табуляции наверное он про это
и что и чиво? поставь таб да и все в чем проблема
Аноним 26/11/24 Втр 19:09:09 #356 №3329947 
>>3329861
В душе не ебу. Мб под виндой мейк не смог написать/нагуглить.
Просто кому еще в голову придет написать про пробелЫ вместо табов?
Аноним 26/11/24 Втр 19:22:02 #357 №3329962 
image.png
image.png
image.png
Сап! Как выкачать либу с гита, так что бы можно было использовать так же как, если это было из своей же папки include/x/*.h?
Аноним 26/11/24 Втр 20:33:51 #358 №3330004 
>>3329962
качаешь файлик.h
кладешь в папку
пишешь
#include "файлик.h"
профит???
Аноним 26/11/24 Втр 21:03:06 #359 №3330019 
>>3330004
Классно, а если мне нужно скачать не просто файлик, а целый репозиторий с кучей подпапок? Как здесь github.com/tlsa/libcyaml
Аноним 26/11/24 Втр 21:12:24 #360 №3330026 
image
image
>>3330019
>github.com/tlsa/libcyaml
Аноним 26/11/24 Втр 21:55:08 #361 №3330055 
image.png
>>3330026
Я скачал репозиторий, разместил его в lib. Хэдер скопировал туда, где лежат мои собственные. Как мне это дело теперь прилинковать то?
Аноним 26/11/24 Втр 22:43:41 #362 №3330084 
>>3330055
ударь себя ладошкой по лицу
Аноним 27/11/24 Срд 00:15:14 #363 №3330119 
>>3330055
Бля, чел, 90% что оно скорее всего собирается стандартным make/make install, да и там же в ридми сто проц есть инструкция. На крайняк собираешь ручками и кидаешь либы в /usr/local/lib, а хедеры в /usr/local/include.
Аноним 27/11/24 Срд 00:31:13 #364 №3330126 
>>3330119
>сто проц есть инструкция
Она там есть.
>оно скорее всего собирается стандартным make/make install
Там именно это и написано.

>>3330055
Читай Прату.
Аноним 27/11/24 Срд 08:25:42 #365 №3330208 
>>3330119
А был бы сборщик homo, то достаточно было бы написать homo build
Аноним 27/11/24 Срд 09:17:37 #366 №3330230 
>>3330208
>достаточно написать homo build
>вместо make install
оптимизация уровня б
Аноним 27/11/24 Срд 10:05:40 #367 №3330262 
image.png
image.png
>>3330126
Вот он Прата. make упоминается всего 1(!) раз. Где можно найти инфу про сборку с внешними зависимостями?
Аноним 27/11/24 Срд 10:18:32 #368 №3330274 
image.png
А как вообще с юникодом (UTF-8 например) в си работать? типо вместо char создавать строки wchar_t? и перед строками везде ставить L?
Аноним 27/11/24 Срд 12:29:33 #369 №3330377 
>>3329429
Твой homoвелосипед уже несколько раз изобрели. На вскидку - xmake, meson, basel, ya.make, buck scons

Сборка проекта это вообще наименьшая из проблем сборочных систем. Проблема в том что тебе хочется в сборке ещё иметь менеджер пакетов и запуск автотестов, а в языке очень хуёвые инструменты и для того, и для того.
Аноним 27/11/24 Срд 12:32:07 #370 №3330380 
>>3330262
Да хуй его знает, браток. В интернете, например. Позаебывай нейронку, прочитай гайдик на опеннете, глянь видосик на ютубе.

Но похоже в твоём случае остается только читать Прату до просветления.
Аноним 27/11/24 Срд 12:47:09 #371 №3330398 
>>3330274
> А как вообще с юникодом (UTF-8 например)
> типо вместо char создавать строки wchar_t?
Чтобы успешно работать с чем-то, надо сначала знать, что это такое.
Аноним 27/11/24 Срд 13:40:29 #372 №3330461 
>>3330398
глупости
Аноним 27/11/24 Срд 14:21:02 #373 №3330497 
>>3330398
Двачая. Я помню у дж спольского был прекрасный блог-пост про тупых кодерков и юникод, тут как раз этот случай.
Аноним 29/11/24 Птн 16:13:53 #374 №3331958 
Вроде хорошо объясняет, но я всё равно ничего не понял
https://www.youtube.com/watch?v=mrm39JmvJ1c
Аноним 29/11/24 Птн 23:33:16 #375 №3332229 
Почему в конструкции
k; someshit; main() {continue shitting}

1) Необъявленная k не дает ошибку и компиляторы послушно компилируют код?

2) Правильно ли, что ; напрочь забивает на свои подвязки с операторством, не отсекает нихуя и вся портянка до мейна считается его типом? Если да, то почему так, а не ошибка компиляции?
Аноним 29/11/24 Птн 23:55:06 #376 №3332239 
>>3332229
А почему он должен давать ошибку? Ты не указываешь флаги, а компилятор С по умолчанию доверяет программисту. Видя такой код, он подразумевает, что его автор не долбоёб, а просто пишет на языке времён Ритчи-Кернигана, где для таких объявлений по дефолту подразумевался тип инт. То есть он скомпилил на ANSI C или C89 и создал две глобальные переменные типа int.
И вообще почитай, что такое ; в Си. Что такое сиквенс поинт и как устроен язык.
И компилируй свои поделия с флагами как минимум -Wall -Wextra -g -std=c11 (или другой стандарт, но явно указывай).
Аноним 30/11/24 Суб 00:43:48 #377 №3332245 
>>3332239
>А почему он должен давать ошибку?
Я воспринимал всегда ; как конец оператора и то, что после неё, условно, начало следующего оператора. Ведь есть еще блоки с фигурными скобками
Тем более учитывая, что перед мейном могут быть как сами функции, так и их прототипы, помимо макросов.

>То есть он скомпилил на ANSI C или C89 и создал две глобальные переменные типа int.
Т.е. компилятор автоматически "привел" этот код под подходящий по его мнению стандарт, т.к. я не указал флаги, ограничивающие его. Ну логично. Не задумывался об этом.

Правда не очень понял при чем тут тогда точка следования, если по твоим словам инты подставляются по умолчанию и всё дело в этом.

>И компилируй свои поделия с флагами как минимум -Wall -Wextra -g -std=c11 (или другой стандарт, но явно указывай)
Записал. Свои поделия я пока пишу правильно и не хардкожу ничего, в т.ч. даже бегло еще не читал стандарты. Поэтому и был удивлен такому эффекту.
Аноним 03/12/24 Втр 21:35:37 #378 №3334360 
(читать голосом Лапенко) Да, я чего то просел совсем, хотел на неделю отлучиться, а видимо на месяц или джва, не получается нифига, и вы чего то попритихли
Аноним 04/12/24 Срд 12:13:31 #379 №3334611 
image.png
image.png
image.png
Аноны, сап. Решил озадачиться вопросом о том, можно ли читать файл и писать в него одновременно через режим "r+" и "rb+".
Вот небольшой кусок говно-года, который написал -> https://pastebin.com/QM8E6R7A
Пароль: puts("pass");
Точка с запятой часть пароля


Первый вопрос — по поводу строчки 52, функция fseek, раньше в 52 было

if ( ( position != -1 ) && !fseek(f, -(int)readed_bytes, position) ) {

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

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

Пик1 - размер файла в байтах, Пик2 - его содержимое, Пик3 - состояние переменных, по идее feof_flag должен иметь ненулевое значение, ибо конец файла был достигнут, но он почему-то его не отлавливает, да и он откуда-то нули считал, хотя должен был только 2 байта, собственно, в readed_bytes значение 8, хотя должно быть 2, по идее.

OS - win10, но это и так понятно по блокноту.
Аноним 04/12/24 Срд 12:18:27 #380 №3334615 
>>3334611
ПЕРВЫЙ ВОПРОС НЕМНОГО МОДИФИЦИРУЕТСЯ, Я ДЕБИЛ

я забыл, что можно указывать SEEK_CUR, что будет аналогичным тому, что я хотел написать изначально в 52 строчке, но мне всё равно непонятно почему то, что я хочу написать не работает.
Аноним 04/12/24 Срд 12:28:34 #381 №3334625 
>>3334611
https://learn.microsoft.com/en-us/windows/win32/memory/file-mapping
Не благодари.
Аноним 04/12/24 Срд 12:32:09 #382 №3334630 
>>3334625
Это ответ на какой вопрос или сразу на оба? Спасибо
Аноним 04/12/24 Срд 12:39:08 #383 №3334637 
>>3334625
>>3334630
Окей, эта статья чуть ответила на вопрос как система оперирует с файлами посредством RAM. Но у меня файл крайне мал и мне всё ещё непонятно почему fread не возвращает 2, ибо он как раз успешно смог бы прочитать только 2 единицы данных, далее уже конец файла.

Самое странное, что если размер файла меньше 8 байт, то программа прекрасна работает и видит конец файла...
Аноним 04/12/24 Срд 12:55:11 #384 №3334656 
>>3334637
Хотел сказать, забудь что в stdlib есть работа с файлами и пользуйся мемори маппингом.

Ну и кстати, чтобы писать в файл, нужно открывать через "rw".
Аноним 04/12/24 Срд 13:11:22 #385 №3334674 
>>3334656
> мемори маппингом
В первый раз об этом от тебя услышал, анон, спасибо, буду знать, а это с какого стандарта появилось?

> "rw"
Насколько понял, то rb+/r+ режим так же позволяет писать в файл, отличительная особенность в том, что если указанного файла/пути не существует, то он будет создан.
Аноним 04/12/24 Срд 13:26:52 #386 №3334679 
>>3334674
>В первый раз об этом от тебя услышал, анон, спасибо, буду знать, а это с какого стандарта появилось?
>
Это появилось еще в первой версии Windows NT, и еще раньше на Юниксах, но в стандартной либе до сих по нет. Хер знает почему.

>Насколько понял, то rb+/r+ режим так же позволяет писать в файл, отличительная особенность в том, что если указанного файла/пути не существует, то он будет создан.

r означает чтение. w в любом случае создаст файл, но w затрет старый файл, а w+ начнет писать в конец.
Аноним 04/12/24 Срд 15:28:07 #387 №3334759 
>>3334611
не откывал твои коды
но судя по пирилам ты пытаешься навелосипедить FEOF
а раз так - велосипедь уж по классике
FEOF = тру только если ты попытался прочитать байты из файла и не смог
Аноним 04/12/24 Срд 15:34:35 #388 №3334766 
image.png
>>3334759
А зря не открывал, feof там есть...

Погоди, feof возвращает ненулевое только в том случае, если мы достигли конца файла, разве нет?

У меня скорее вопрос в том, почему fread возвращает не то значение успешно прочитанных единиц данных.
Аноним 04/12/24 Срд 15:52:28 #389 №3334777 
1000018452.mp4
>>3334766
>Погоди, feof возвращает ненулевое только в том случае, если мы достигли конца файла, разве нет?
да, но механизм понимания конца файла заложен в попытке чтения и ловле сегфолта
все равно что пытаться глубину стека через оверфлоу

этот пикрил я уже видел, держи вот такой для разнообразия
Аноним 04/12/24 Срд 15:53:30 #390 №3334778 
>>3334777
>пытаться
пытаться понять
самосделал
Аноним 04/12/24 Срд 15:57:23 #391 №3334780 
>>3334777
Тогда можешь объяснить пик3 отсюда -> >>3334611?

Файл имеет размер 10 байт, откуда fread взял ещё 6 байт успешно прочитанных?
Аноним 04/12/24 Срд 16:22:03 #392 №3334806 
вторая итерация цикла где ты сделал фрид 1 8
Аноним 04/12/24 Срд 16:27:04 #393 №3334809 
>>3334806
Да, но в файле больше не осталось байт для чтения, откуда он взял 6 успешно прочитанных нулей?

Хотя тут какая-то хуйня с fwrite замешана, я изменил размер буфера на 1 байт и тут пошли свестопляски с чтением символов.
Аноним 04/12/24 Срд 16:44:43 #394 №3334820 
image.png
image.png
>>3334611
https://pastebin.com/zct3dQVe

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

Пик1 - запуск программы, скомпилированной на основе содержащегося в пастбине.

Пик2 - запуск программы, скомпилированной на основе содержащегося в пастбине, но строчки с 74 по 79 закомментированы, программа вошла в бесконечный цикл.
Аноним 04/12/24 Срд 16:51:06 #395 №3334823 
а может это преколы венды?
Аноним 04/12/24 Срд 16:53:14 #396 №3334825 
>>3334823
Возможно, попробую на Убунте на ВМ запустить
Аноним 04/12/24 Срд 17:03:20 #397 №3334830 
image.png
>>3334823
Да, анон, ты прав. Приколы винды, а почему так-то ебать? Вроде никакая логика не нарушена, указатель буквально в одном и том же месте, какой-то кринж пиздец, ненавижу программирование, блять, из-за какой-то пиздец неочевидной хуйни проебал 5 часов
Аноним 04/12/24 Срд 17:12:42 #398 №3334839 
>>3334830
ну винда известная коляска
за ответами заходи в десктоп тред а тут мы лучший язык в мире обсуждаем
Аноним 04/12/24 Срд 17:30:15 #399 №3334853 
>>3334839
Не, мне просто непонятно в чём причина, это магия для меня, я никогда об этой ошибке или жалобе на винду не слышал, мне просто совсем-совсем непонятно, указатель файла буквально в одном и том же месте, логика программы не нарушена, логика работы с файлом не нарушена, но в бесконечный цикл она вошла...
Аноним 05/12/24 Чтв 00:33:36 #400 №3335134 
>>3310110
База, он себе пока обе ноги не отстрелит не поймёт с чем имеет дело, вообще забавно, что сейчас свой код с сишки или плюсов не ревёрсят в ассемблер, чтоб ахуеть сколько там лишнего говна компилятор загнал, плюс ассемблер уже единицы понимают, эх во в нулевые были времена
Аноним 05/12/24 Чтв 01:17:35 #401 №3335152 
>>3332229
>не дает ошибку и компиляторы послушно компилируют код?
Боится, деды в 80ых зашугали.
Аноним 05/12/24 Чтв 20:30:31 #402 №3335643 
Есть ли тут опытные сишники, которые считают, что на языке go не стоит ничего писать? Можете привести технические аргументы по этому поводу?
Аноним 06/12/24 Птн 00:06:39 #403 №3335756 
>>3335643
Повзрослей.
Аноним 06/12/24 Птн 00:37:42 #404 №3335773 
>>3335756
Повзрослевшие на двачах не зависают.
Ладно, если сами не можете технически грамотно сформулировать претензии к go, то может у других видели? Мне нужно именно мнение опытных сишников, а не жабо-шарпо-макак.
Аноним 06/12/24 Птн 01:33:20 #405 №3335787 
>>3335773
Ни почему. Все зависит всегда от прокладки между креслом и клавиатурой.

Критика от программистов C/C++ современных ЯП всегда одна и та же: ради того, чтобы подтереть тебе жопу и недопустить всяких переполнений-утечек, создатели режут тебе возможность говнокодить, но из-за этого сами программы жрут больше системных ресурсов, чем программы на C/C++.

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

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

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

Ну и главное: если пишешь код за деньги, то пиши на том, чем сказали, и не выебывайся.
Аноним 06/12/24 Птн 02:05:39 #406 №3335789 
>>3335643
>ничего
Чё там в говно уже завезли ффай, как в петушином?
Аноним 06/12/24 Птн 03:04:35 #407 №3335792 
>>3335773
>технически грамотно сформулировать претензии к go
Название больше 1 символа, избыточное потребление памяти.
Аноним 06/12/24 Птн 03:07:36 #408 №3335793 
>>3335792
База
Аноним 06/12/24 Птн 06:38:45 #409 №3335815 
>>3335787
В Пиструне также можно выйти за границы массива, только вместо SF - он ошибку выкинет, да и по факту ОС тоже много от чего Си/Си++ программистов спасает. Да и по сути под капотом библиотек Питона очень много сишного и плюсового кода, а Питон это просто инструмент для математиков/инженеров, которые, собственно, не обязаны учить ЯП, а просто хотят получать результаты вычислений.
Аноним 06/12/24 Птн 09:35:05 #410 №3335869 
>>3335787
>Писать же можешь хоть на го, хоть на си, хоть на расте, хоть на брейнфаке. Если же знаешь и понимаешь подводные камни этих языков, то еще и применять будешь их эффективно.
Ой, а что ж этих профессионалов даже Валгринд не спасает от дыр?
Аноним 06/12/24 Птн 10:07:53 #411 №3335886 
>>3335792
сокрушительный панч, смогут ли госимпы парировать?
Аноним 06/12/24 Птн 10:15:45 #412 №3335893 
>>3334679
Мне просто интересно, много ли в профессиональном коде односимвольных имён переменных дай Бог в циклах и может некоторые указатели в заголовках функций, больше придумать не могу
Аноним 06/12/24 Птн 10:27:34 #413 №3335901 
>>3335893
в профессиональном коде нет имен переменных
Аноним 06/12/24 Птн 13:05:34 #414 №3336082 
>>3335893
Если ты умножаешь две матрицы или что-то тупое делаешь со строчкой, то что-то кроме a, b, c и не нужно ничего выдумывать. Глобальную переменную, которая отвечает за коннект в базе данных, называть P не стоит.
Аноним 06/12/24 Птн 21:39:53 #415 №3336444 
>>3335893
В nginx в каждой функции r.
Аноним 08/12/24 Вск 10:09:56 #416 №3337131 
Стандарт си вообще описывает работу с каталогами файловой системы? Или получается стандартно я могу только работать с отдельным файлом, а если надо манипулировать папками, то для каждой ОС своя специфика?
Аноним 08/12/24 Вск 10:32:26 #417 №3337141 
>>3337131
А типо можно манипулировать с каталогами не использую windows.h и команду " system("mkdir %new_path%"); " ?
Аноним 08/12/24 Вск 11:31:44 #418 №3337149 
>>3337131
В плюсы добавили недавно. В Си лет через 20 может добавят. Пока либо winapi или какая-то кросплатформенная обёртка.
https://learn.microsoft.com/en-us/windows/win32/api/fileapi/
Аноним 08/12/24 Вск 13:16:26 #419 №3337213 
>>3337141
>>3337149
Точно надо делать современную версию си с кроссплатформенной библиотекой и сборщиком проектов
Аноним 08/12/24 Вск 13:17:42 #420 №3337217 
>>3337131
>Стандарт си вообще описывает работу с каталогами файловой системы?
а схуяли должен? это слой операционки а не языка
Аноним 08/12/24 Вск 14:24:02 #421 №3337277 
>>3337217
Слой операционки - это системные вызовы, а у нас библиотека libc, которая должна давать кроссплатформенные обёртки.
Аноним 08/12/24 Вск 16:34:33 #422 №3337375 
>>3337277
ничего она тебе не должна
Аноним 08/12/24 Вск 16:43:16 #423 №3337380 
>>3337213
Было бы неплохо! Типо зига?

>>3337141
Да, на джаббе
Аноним 08/12/24 Вск 17:49:58 #424 №3337401 
>>3337380
Типа го, но без сборщика мусора
Аноним 08/12/24 Вск 19:07:37 #425 №3337434 
>>3337401
ну так это зиг
Аноним 08/12/24 Вск 19:50:20 #426 №3337449 
>>3337434
В зиге точки с запятой и ещё куча всякой бесполезной шизы
Аноним 09/12/24 Пнд 03:15:10 #427 №3337568 
>>3312965
Если бы там везде были проверки на ошибки, ты пока играл бы в какого нибудь ведьмака, ОС говорила бы: падажжи, куда кадр новый грузить, давай я сейчас сначала проверю, вот у меня тут пол миллиона строк кода, нет ли там где-то ошибки которую не заметили разрабы ОС, тогда и отобразим следующий кадр, а пока жди, ёпта
Аноним 09/12/24 Пнд 11:44:30 #428 №3337757 
>>3337277
Напомни, где обертка наносекундного времени.
Аноним 09/12/24 Пнд 19:18:18 #429 №3338169 
>>3337568
> пока играл бы в какого нибудь ведьмака, ОС говорила бы: падажжи, куда кадр новый

Ведьмак на Юнити/C# написан, там все эти проверки есть, дальше что?
Аноним 09/12/24 Пнд 21:36:09 #430 №3338239 
>>3337449
тогда карбон
Аноним 10/12/24 Втр 00:35:28 #431 №3338358 
>>3338169
Графические либы-то все на си. Да и не только графические, да и .net либы небось тоже. И любые системные вызовы тоже сишный код дёргают.
Аноним 10/12/24 Втр 01:54:33 #432 №3338375 
>>3313387
Для пирсинга реинтерпретом или си-стайл кастом как здесь любых сырых байт, которые тебе высрали по сети или любым иным способом, лол. Вкатуны нынче вообще недалёкие.
Аноним 10/12/24 Втр 01:56:53 #433 №3338376 
>>3313893
>>3338375
Аноним 10/12/24 Втр 06:12:12 #434 №3338417 
>>3338375
А что такое пирсинг? Пробивание дырки?
Аноним 10/12/24 Втр 08:32:23 #435 №3338437 
>>3338417
это парсинг, броу
Аноним 11/12/24 Срд 10:17:44 #436 №3339215 
Дедушка вам расскажет, шо не так с С:

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

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

- нихуя нет, базовых вещей нет, туалетной бумаги. Списков нет (sys/queue нестандарт). Условной компиляции если ЛОНГ ШИРЕ ИНТ - нельзя. Атомарные операции только из __билтынов или __асм.

- встроенные типы нефиксированной ширины, чар неизвестной знаковости, битовые поля неизвестного направления, приколы в сдвигах, приколы в преобразованиях, приколы в сравнения.
Аноним 11/12/24 Срд 10:34:49 #437 №3339220 
>>3339215
неосилятор спок
Аноним 11/12/24 Срд 10:46:18 #438 №3339229 
>>3339215
>Атомарные операции только из __билтынов или __асм.
Появились в С11. Или ты из тех, кто не признаёт что-то кроме ANSI C?
Аноним 11/12/24 Срд 10:53:55 #439 №3339233 
>>3339215

> - низкий уровень абстракции.
А это плохо разве?
> под конкретные случае.
Вроде говорят, что в каждой компании каждая СД допиливается напильником под свои нужды в целях оптимизации.
> Естественно, всюду лезут войд указатели,
Это же имба, войд можно преобразовать в какой угодно тип данных и перегрузка не нужна, хах
> contaneirof
А что это такое?

> - какая-то мразь то и дело портит память.
Привидите пример, пожалуйста, а то я только знаю, что в винде какая-то ебень с работой с файлами в режиме чтения и записи

> Атомарные операции только из __билтынов или __асм.
Раскройте темы, с понятием знаком, но думал, что это скорее про язык ассемблера.

А для чего вообще нужны битовые поля? Про приколы в сдвигах и сравнениях не понял, если про вещественные, то во всех языках с ними проблемы же, в Си же нет циклических сдвигов битов, насколько помню.
Аноним 11/12/24 Срд 12:27:34 #440 №3339298 
>>3339229
Во многих проектах не вижу их.
>>3339233
>А это плохо разве?
Когда ты написал йобу, а потом тебе говорят, что йоба заебись, надо бы йобу еще добавить в пуку (в трех разных местах), а пука использует другие типы данных. В плюсах для этого есть хотя бы есть темплайты.
>Вроде говорят, что в каждой компании каждая СД допиливается напильником под свои нужды в целях оптимизации.
Даже когда Аптимизация не нужна (часто), абстрактных СД в С нет, там нельзя без жвачки и напильника
var t1: red_black_tree of mystruct;
> что такое?
Гугли container_of
>Раскройте темы, с понятием знаком, но думал, что это скорее про язык ассемблера.
В многопоточке нужно то, шо в 86 ассемблере делается xchg или xadd или mfence.
>А для чего вообще нужны битовые поля?
Чтобы не определять флажки через дефайн.
> Про приколы в сдвигах и сравнениях не понял.
-1 << 1 непортируемо
-1 > 1u !!!
Аноним 11/12/24 Срд 12:52:20 #441 №3339313 
>>3339215
>- встроенные типы нефиксированной ширины, чар неизвестной знаковости, битовые поля неизвестного направления, приколы в сдвигах, приколы в преобразованиях, приколы в сравнения.

Пердикс, ты? Вроде все по логике сделано, не вижу проблем.
Главная проблема Си - это то что нет денежных вакансий.
Аноним 11/12/24 Срд 13:18:41 #442 №3339345 
image
image
>>3339298
Сравнение нужно дополнительно дизассмеблировать, чтобы посмотреть, что на выходе будет. Хотя понятное дело, что UB, но cppcheck не ругался почему-то
Аноним 11/12/24 Срд 13:55:19 #443 №3339362 
image
image
image
>>3339345
Да, всё в ассемблер скатывается, а он всё воспринимает как число со знаком, поэтому будут приколы, как на 2ом скрине.
Аноним 11/12/24 Срд 14:05:18 #444 №3339371 
>>3339362
В пиструне то понятное дело по-другому будет, но у них там целое каких-то гиганских размеров, байтов 16, возможно, что на основе GMP, но не проверял и не вникал, если честно
Аноним 11/12/24 Срд 14:45:11 #445 №3339394 
>>3339298
>-1 > 1u !!!
>>3339345
>>3339362
пердежоникс познает мир
Аноним 11/12/24 Срд 14:50:49 #446 №3339399 
>>3339394
Я действительно пердикс, но автор поста не, как запруфать это хз, ибо мог и код-страницы отредактировать, и с телефона первый пост писать.

Я вот этот анон >>3339233.

И вот этот >>3334820

Си нравится, но он очень сложный и боюсь, что никогда не смогу его понять :(
Аноним 11/12/24 Срд 15:01:28 #447 №3339407 
image
image
>>3339394
Ты если знаток Си и ОСей, то помогит >>3339399, пожалуйста, я выделил память в первом процессе и хочу получить доступ к этой памяти во втором процессе, но мне сыпет SF даже, если через sudo второй процесс запускать, всё делал под Убунтой, ибо до нормального дистрибутива не дорос ещё, хотя дядя взрослый, пусть и пердикс, просто тупой

Пик1 - первый процесс, пик2 - второй процесс
Аноним 11/12/24 Срд 15:09:17 #448 №3339424 
>>3339407
>хочу получить доступ к этой памяти во втором процессе
соснешь, нужна специально разлеляемая память
Аноним 11/12/24 Срд 15:12:30 #449 №3339427 
>>3339424
да по SF даже через sudo понял, что сосну.

А как тогда крутые хакеры получают доступ к памяти процесса через другой процесс?

Я просто быдло тупое, про разделяемую память впервые слышу
Аноним 11/12/24 Срд 15:18:56 #450 №3339434 
>>3339215
Всё ещё хуже, чем этот типо дед описал.
>>3339233
>А что это такое?
https://github.com/torvalds/linux/blob/master/include/linux/container_of.h
>>3339399
>Си нравится, но он очень сложный и боюсь, что никогда не смогу его понять :(
Не нужен он тебе, пердикс.
>>3339427
>А как тогда крутые хакеры получают доступ к памяти процесса через другой процесс?
Например, подменяешь динамический символ.
Аноним 11/12/24 Срд 15:23:41 #451 №3339435 
>>3339434
Да что ты сразу обижаешь, мне правда Си нравится и очень хочу вкатиться в обратную разработку...

>динамический символ
Как всё сложно то :(
Аноним 11/12/24 Срд 15:32:47 #452 №3339443 
>>3339434
Слушай, я пересмотрел свои сообщения и не совсем понял, а почему ты меня в совсем слабоумные-то записал? Самые-самые азы Си и программирования я знаю, вроде бы.
Аноним 11/12/24 Срд 15:35:32 #453 №3339446 
>>3339443
>почему ты меня в совсем слабоумные-то записал?
Нейросеть поломалась?
Аноним 11/12/24 Срд 15:37:23 #454 №3339449 
>>3339446
> Не нужен он тебе, пердикс.
> пердежоникс познает мир
Аноним 11/12/24 Срд 15:41:36 #455 №3339452 
>>3339449
Про пержоникса писал не я. Зачем конкретно нужен тебе Си?
Аноним 11/12/24 Срд 15:49:00 #456 №3339462 
>>3339452
Обратная разработка, любовь к языку, ибо очень сильно люблю, после Паскаля всё будет мёдом, с восприятием ООП проблемы, поэтому плюсы, Джава и шарпы отпадают.
Аноним 11/12/24 Срд 15:55:06 #457 №3339470 
>>3339462
>Обратная разработка
Це шо?
>с восприятием ООП проблемы, поэтому плюсы, Джава и шарпы отпадают
У тебя список с инструментами для разных задач.
Аноним 11/12/24 Срд 16:21:10 #458 №3339488 
>>3339470
Реверс инжиниринг на пендоском, он, конечно, больше на ассемблер нацелен, но и Си необходим.

Джава, плюсы и шарпы строятся полностью на ООП, в джаве всё объект, в плюсах тоже, судя по всему, ибо при инициализации базовой переменой автоматом вызывается конструктор, который ей нуль присваивает.
Аноним 11/12/24 Срд 16:30:29 #459 №3339501 
>>3339488
А ну норм тогда, главное, чтобы на Си не надо писать бгг)). В принципе въезжать в обучение подводных камный и мин не очень и нужно тогда.
Джава и шарпы для цуи-кодомакакинга, плюсы для всего остального, короче нахуй не нужны тебе они.
У тебя вообще задачи больше не в обучении языку, а скорее про предметную область, какие форматы файлов бывают, выше там словосочетание динсимвол тебя поставил в тупик, как ОС загружает в память эти файлы и тп.
Аноним 11/12/24 Срд 16:46:16 #460 №3339506 
>>3339313
Та не, вот например чар. Он сначала был знаковый, потому что в pdp-11 байты грузились со знаковым расширением. А с первыми портируемыми кумпиляторами решили перестраховаться и сделали хз как.
>>3339345
Аахах, дизазм покажет тебе особенность одной архитектуры на одном кумпиляторе с одним набором опций.
>>3339394
10 лет коммерческой разработки на сях и асемблерах тащем-то. От сегфолтов не спасает.
Аноним 11/12/24 Срд 17:01:07 #461 №3339512 
>>3339506
>От сегфолтов не спасает.
Просто чтобы понимать, имаджинируйте ебало гуглеров, которые фузят хром ночами и годами на своих мейнфреймах.
Аноним 11/12/24 Срд 18:59:30 #462 №3339574 
>>3339215
>надо пилить на своей коленке и приклеивать жвачкой под конкретные случае
>нихуя нет, базовых вещей нет, туалетной бумаги
Разве не в этом смысл? Взять только то, что надо, и запилить под конкретную железку, чтобы быстро летало?
Аноним 11/12/24 Срд 19:29:19 #463 №3339589 
>>3339574
Он наверное имеет в виду, что этого нету в стандарте.

А так да, в этом особенность Си, что даже для вывода в консоль надо подключать бибилиотеку, что в питоне из-под коробки доступно, никакие пакеты не нужны
Аноним 11/12/24 Срд 20:46:33 #464 №3339618 
>>3339215
>Всякие деревья, хэши, массивы надо пилить на своей коленке и приклеивать жвачкой под конкретные случае. Естественно, всюду лезут войд указатели, contaneirof и макросы.
это не проблема языка, пилить либы могут все, проблема комьюнити что они не сошлись на какой-то стандартной либе, потому что в си каждый - кулибин, а стандартизация - для лошков двигающих джейсоны, поэтому каждый норовит изъебнуться, ведь он же не лох. Ну да, написал полностью свою стандартную либу, но ведь зато сэкономил 200 байт!
>>3339215
>чар неизвестной знаковости
шо? вообще не знал о такое, что это?
Аноним 11/12/24 Срд 23:20:17 #465 №3339693 
>>3339506
>10 лет коммерческой разработки на сях и асемблерах тащем-то.

Чо платят? В какой сфере разработка?
Аноним 11/12/24 Срд 23:23:26 #466 №3339695 
>>3339313
>Главная проблема Си - это то что нет денежных вакансий.
Вот это. Люблю байтоёбить, просто обожаю сеги дебажить. Но за крудошлёпство платят наполовину больше, плюс работаешь два часа в день, так что увы.
Аноним 12/12/24 Чтв 09:43:03 #467 №3339801 
>>3339618
>это не проблема языка
Чел. Это проблема языка. Или ты не знаешь даже про
https://en.cppreference.com/w/cpp/container/unordered_map
Аноним 12/12/24 Чтв 12:50:34 #468 №3339931 
>>3339801
Ну у меня 2 вопроса:
Причем здесь С++?
Разве анордеред мап - часть стандарта С++?
Аноним 12/12/24 Чтв 12:57:51 #469 №3339938 
>>3339931
> std::unordered_map
>Разве анордеред мап - часть стандарта С++?
Аноним 12/12/24 Чтв 17:42:58 #470 №3340139 
>>3339313
>Главная проблема Си - это то что нет денежных вакансий.

А почему так? Ведь рынок встраиваемых устройств за последнее десятилетие превзошел традиционный ПКашный. А на встраиваемых Си же доминирует. Или если создают новое железо с архитектурой, то туда, как правило, первым делом сишный компилятор портируют.
Аноним 12/12/24 Чтв 17:49:50 #471 №3340140 
>>3340139
Ебмедед пертровичам всегда платили сильно ниже рынка.
Аноним 12/12/24 Чтв 18:12:13 #472 №3340157 
>>3340139
>А почему так
В машиностроении и электронике зарплаты всегда были ниже чем в банках например, ну или в рекламе. Просто потому что маржинальность бизнеса ниже и деньги из воздуха ты не сделаешь.
Аноним 12/12/24 Чтв 19:37:29 #473 №3340187 
>>3340157
В боенге за миску риса работают, ясно.
Аноним 12/12/24 Чтв 20:30:03 #474 №3340209 
>>3340187
В боенге и зарплаты значительно меньше чем в гугле или citadel например.
Аноним 12/12/24 Чтв 21:52:44 #475 №3340253 
>>3339938
да, это часть стандартной библиотеки, а не часть языка
Аноним 12/12/24 Чтв 22:49:50 #476 №3340275 
∗ * ∗
Аноним 13/12/24 Птн 03:15:56 #477 №3340329 
>>3340253
По такой логике и работа с потоками ввода/вывода не часть языка, но простите
В таком случае большая часть языков не многим отличается от языка ассесблера
Аноним 13/12/24 Птн 05:11:29 #478 №3340339 
>>3340329
Все языки - это абстракции (синтаксический сахар, если удачные) азмы. Тот же прототип сишной функции - это макрос, например.
Аноним 13/12/24 Птн 12:05:52 #479 №3340474 
>>3340339
> Все языки - это абстракции (синтаксический сахар, если удачные) азмы.
Да знаю, Более того, даже цикл for сахар, его не было до стандрта с90даже питон можно дизассемблировать, правда так какие-то странные конструкции для переменных, а-ля store и подобное.
> Тот же прототип сишной функции - это макрос, например.
Разве? А для чего тогда всякие fastcall, stdcall? Макрос в Си прямо в текст программы же вставляется при препроцессинге.
Аноним 13/12/24 Птн 16:01:54 #480 №3340632 
>>3322812
Добавить ещё возможность нормально объявлять функции в структурах, и вот уже плюсы
Аноним 13/12/24 Птн 16:10:01 #481 №3340642 
>>3340632
Указатель на функции для кого придумали, солнышко?
Аноним 13/12/24 Птн 17:23:26 #482 №3340677 
>>3340642
Солнышко, мне не в кайф писать
struct hui {
void (function)(hui , int, int);
}
void zalupa(hui
this, int, int);

hui var;
var.function = zalupa;

Я хочу
struct hui {
void function(int, int) {
print this->value;
do smth;
}
}
Аноним 13/12/24 Птн 17:51:27 #483 №3340700 
>>3340632
>нормально объявлять функции
Свеклушин положил портфель на колени, улыбаясь, вздохнул:

- Да, Серега, Серега. Морщины вон у тебя. Надо же.

- Ну и чего странного? Нормально.

- Чего ж нормального? Мастер спорта по самбо, тридцать пять лет.

- Да у тебя тоже, кстати, морщин хватает. Так что не расстраивайся шибко на мой счет. Береги нервные клетки.

Засмеялись. Свеклушин шлепнул Трофименко по коленке:

- Вот что, деятель. Давай мотай на вокзал, забирай свой угол и дуй к нам. Живо. А я щас Верке звякну, чтоб сварганила что-нибудь. Она поди дома уже. Давай, быстро.

Он встал, но вдруг вспомнил:

-Только вот погоди-ка. Норму сжую щас, чтоб домой не тащить. Хорошо, что вспомнил.

Он сел, раскрыл портфель. Трофименко курил, стряхивая пепел на асфальт.

- Где она... ага вот.

Свеклушин вытащил упакованную в целлофан норму.

- Ух ты, - Трофименко потянулся к аккуратному пакетику. - Смотри, какие у вас... А у нас просто в бумажных упаковках таких. И бумага грубая. И надпись такая оттиснутая плохо, криво. Синяя такая. А у вас смотри-ка, во как аккуратненько. Шрифт такой красивый...

- Столица, чего ж ты хочешь, - Свеклушин разорвал пакет, вытряхнул норму на ладонь, отщипнул кусок и сунул в рот. Трофименко потрогал норму:

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

- А вы написали бы куда надо, - Свеклушин жевал, периодически отщипывая.

- Написали, бля! - Трофименко швырнул папиросу, придавил ногой. - Не смеши, Саша.

- Не помогает?

- Да конечно. Всем до лампочки. А потом, говорят, почему периферия тянет слабо! Смешно. Сказка про белого бычка. Везут, везут опять пакеты эти. А там шуршит засохшая, лежалая. Норму уж могли бы наладить. Странно это все...

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

- Дай мне, не выкидывай. Жене покажу.

Он разгладил пакетик, спрятал в карман.
Аноним 13/12/24 Птн 17:57:35 #484 №3340702 
>>3340677
Приходится мириться, сладенький :3
Да и зачем Си превращаться в Си++?
Аноним 13/12/24 Птн 23:07:50 #485 №3340856 
>>3340677
зачем тебе псевдо объекты в Си? Пиши на плюсах
Аноним 14/12/24 Суб 15:24:05 #486 №3341173 
>>3340856
Потому что это удобно, а плюсы пиздец перегруженны всяким дерьмецом
Аноним 14/12/24 Суб 16:31:42 #487 №3341202 
>>3341173
Ну так и зачем ты опять тащишь это дерьмецо в мои плюсы?
Аноним 14/12/24 Суб 16:32:17 #488 №3341203 
>>3341202
*в си, очевидно
Аноним 14/12/24 Суб 21:17:35 #489 №3341378 
пишите на минусах заебали ныть
Аноним 14/12/24 Суб 21:24:00 #490 №3341380 
>>3341378
https://ru.wikipedia.org/wiki/C--
Аноним 17/12/24 Втр 03:53:22 #491 №3342858 
>>3340677
>hui var;
>var.function = zalupa;
hui (ЗВЕДЗДОЧКА) var = hui_new(ТВОЯ, ХУЙНЯ);
hui var = hui_new(ТВОЯ, ХУЙНЯ);

Формат:
hui var;
var.призыв_хуйни(1, 2);
Идет нахуй. Потому что объекты без инициализации идут нахуй.
Аноним 18/12/24 Срд 05:59:51 #492 №3343621 
>>3340677
Структура не функция. У меня всё.
Аноним 18/12/24 Срд 06:00:32 #493 №3343622 
>>3340677
И да отпустит Прата тебе грехи.
Аноним 22/12/24 Вск 20:35:00 #494 №3347460 
>>3339506
Не уверен, тут скорее от компилятора зависит, в gcc если есть хотя бы один signed, то делает SETB byte; после инструкции сравнения, если оба unsigned, то SETG byte;
Аноним 26/12/24 Чтв 22:36:38 #495 №3350649 
А я люблю обмазываться санитайзерами и фаззить. Каждую неделю я хожу по инфре и выпрашиваю хосты для фаззинга. В среднем 80% сру мой код тратит на проверки границ, ассерты, валидацию указателей. У меня свой отладочный маллок, отладочные функции str и mem, обертки для десятков сисколов. Блюющий пони и странное поделие svace проверяют даже мой код, написанный для проверки тестов для одноразовой тулзы.
Аноним 28/12/24 Суб 04:07:48 #496 №3351286 
image.png
FizzBuzz уложился в 16 строк лол.
Аноним 28/12/24 Суб 09:56:18 #497 №3351359 
>>3351286
Эээ, ты в школе учишься?
Аноним 28/12/24 Суб 10:30:39 #498 №3351395 
>>3351286
#include <stdio.h>
#include <string.h>

int main()
{
char str[1024];
char buffer[5];

str[0] = '\0';

for (int i = 1; i < 101; i++) {

if ( !(i % 3) ) {
strcat(str, "Fizz ");
}
else if ( !(i % 5) ) {
strcat(str, "Buzz ");
}
else {
sprintf(buffer, " %d ", i);
strcat(str, buffer);
}

}

puts(str);

return 0;
}

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

Ну, и у тебя в коде странности какие-то, а-ля того, что у тебя строка на первом же символе и заканчивается.

Добра тебе, учись и всё у тебя в жизни будет хорошо, иначе вырастешь таким мудаком, как я, и в жизни счастья тебе не видать.
Аноним 28/12/24 Суб 11:15:30 #499 №3351428 
image.png
>>3351395

> Если число кратно и 3, и 5, то программа должна выводить слово FizzBuzz
Аноним 28/12/24 Суб 11:16:57 #500 №3351429 
>>3351395
>если бы в школе Си учил
Столяров считает, что надо с Паскаля начинать. Си деформирует мозги новичкам.
Аноним 28/12/24 Суб 11:21:10 #501 №3351432 
image.png
>>3351395
>>3351428
привет кстати ты уволен
Аноним 28/12/24 Суб 12:19:39 #502 №3351488 
image.png
>>3351429
>>3351432
А, проебался по условию и по сути, я думал, что надо сохранить результат в str, а оно эво как...
>>3351429
Паскаль противный, там надо прописывать что передаёшь функции, значение переменной, саму переменную(её) адрес ( var name_var: type ). Чем Си может испортить людей - не понимаю, но Столяров всё таки старая школа, когда он учился программировать ещё наверное Фортран учили, не то что Паскаль. Единственный плюс Паскаля в том, что он как бы показывает, что у нас вот в начале главного цикла программа идёт объявление переменных, хотя перед функциями и процедурами тоже надо было, если не ошибаюсь, которые потом в стэк занесутся, в Си же так тоже делать надо было, до с90 стандарта. Ещё в Паскале неудобная работа с кучей и с файлами.
Аноним 28/12/24 Суб 12:42:50 #503 №3351508 
>>3351488
Фортран в нашей стране никогда не учили. В 1985 году ввели информатику и учили в основном Бейсик, потому что он был вшит в ПЗУ в большинство тогдашних ЭВМ. В бедных школах вообще учились на программируемых калькуляторах или просто блок-схемы на доске рисовали.
Аноним 28/12/24 Суб 16:15:08 #504 №3351665 
>>3351286
>>3351286
Уместил в две строки
#include <stdio.h>
int main(){int i=1,mod3,mod5;while(i<101){m3=i%3;m5=i%5;if(!m3)printf("Fizz");if(!m5)printf("Buzz");if(m3&&m5)printf("%d",i);putchar(' ');i++;}return 0;}
Аноним 28/12/24 Суб 18:38:24 #505 №3351788 
>>3351665
А на доске какие правила переката, а то забыл уже? Просто в некоторых разделах, например, ai, тред перекатывают не после бамплимита, а после 1000 постов.
Аноним 28/12/24 Суб 18:53:13 #506 №3351804 
Вот шапка

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

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

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

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

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

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

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

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

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

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

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

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

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

https://github.com/kozross/awesome-c
Аноним 28/12/24 Суб 22:40:55 #507 №3351939 
>>3351804
>содержит или ∗.
Юникод птши
Аноним 29/12/24 Вск 00:07:53 #508 №3351953 
>>3351488
>>3351665
Я бы выкинул ретерн и либу стринг. А принтф заменил на путсы.
Аноним 29/12/24 Вск 08:12:12 #509 №3352036 
>>3339407
>free(p);
Этот сегмент памяти забыт навсегда.
Аноним 29/12/24 Вск 08:17:28 #510 №3352039 
>>3351359
Уже лет двадцать как нет.
Аноним 29/12/24 Вск 13:08:54 #511 №3352165 
>>3351804
Хуёвая шапка нету про санитайзеры, нету про фазеры, это точно шапка про язык си?
Аноним 29/12/24 Вск 18:03:15 #512 №3352359 
>>3352036
Там перед этим getchar() стоит и процесс всё ещё активным остаётся и до освобождения памяти не дошёл.
Аноним 29/12/24 Вск 18:03:40 #513 №3352360 
>>3352165
Что такое санитайзеры и фазеры?
Аноним 29/12/24 Вск 23:39:40 #514 №3352604 
>>3352359
Ты про виртуальную адресацию почитал? Всё понятно стало, почему так не работает?
Аноним 30/12/24 Пнд 00:04:12 #515 №3352611 
>>3339407
Если ты не пшешь под микроконтроллеры или древние ОС, то у ОС с CPU реализовано разделение памяти, где каждый процесс получает своё виртуальное адреcное пространство.
>>3339427
> А как тогда крутые хакеры получают доступ к памяти процесса через другой процесс?
Или через права на отладку, или через ядро ОС. Или это не через другой процесс, а как-то иначе.
Аноним 30/12/24 Пнд 03:51:24 #516 №3352655 
>>3352604
Нет, если честно, но мне очень хороший человек и по совместительству няшный кунчик пояснил, что процесс создаёт своё виртуальное адресное пространство, с которым и оперирует...
Аноним 30/12/24 Пнд 03:58:11 #517 №3352656 
>>3351286
.686

option casemap: none

include c:\masm32\include\masm32rt.inc

.data
str1 DB "Fizz", 0
str2 DB "Buzz", 0
str_format_out DB "%d", 0

.code
main:
MOV EBX, 1
SUB ESP, 8
PUSH EBP
MOV EBP, ESP
LOOP1:
CMP EBX, 101
JGE LOOP1_OUT
MOV EAX, EBX
CDQ
MOV ECX, 3
IDIV ECX
MOV [EBP + 4], EDX
CMP EDX, 0
JNE T1
PUSH offset str1
call crt_printf
ADD ESP, 4
T1:
MOV EAX, EBX
CDQ
MOV ECX, 5
IDIV ECX
MOV [EBP + 8], EDX
CMP EDX, 0
JNE T2
PUSH offset str2
call crt_printf
ADD ESP, 4
T2:
CMP DWORD PTR [EBP + 4], 0
JZ T3
CMP DWORD PTR [EBP + 8], 0
JZ T3
PUSH EBX
PUSH offset str_format_out
call crt_printf
ADD ESP, 8
T3:
PUSH 32d
call crt_putchar
ADD ESP, 4
INC EBX
JMP LOOP1
LOOP1_OUT:
POP EBP
XOR EAX, EAX
ret
end main

Уложил в 61 строку на MASM32, пусть и с говнокодом, но да похуй, кто меньше сможет?
Аноним 30/12/24 Пнд 18:49:24 #518 №3353088 
extern printf
global main
section .data
fizz db "Fizz", 10, 0
buzz db "Buzz", 10, 0
fizzbuzz db "FizzBuzz", 10, 0
num db "%d", 10, 0
section .text
main:
mov ebx, 1
.loop:
xor rdi, rdi
mov eax, ebx
mov ecx, 15
cdq
div ecx
test edx, edx
jz .set_fizzbuzz
mov ecx, 3
mov eax, ebx
cdq
div ecx
test edx, edx
jz .set_fizz
mov ecx, 5
mov eax, ebx
cdq
div ecx
test edx, edx
jz .set_buzz
lea rdi, [num]
jmp .print
.set_fizzbuzz:
lea rdi, [fizzbuzz]
jmp .print
.set_fizz:
lea rdi, [fizz]
jmp .print
.set_buzz:
lea rdi, [buzz]
.print:
mov rsi, rbx
mov rax, 0
call printf
inc ebx
cmp ebx, 101
jne .loop
xor eax, eax
ret

49 строк на NASM Linux-amd64. Тоже говнокод, конечно.
Аноним 30/12/24 Пнд 19:09:17 #519 №3353097 
>>3352656
>include c:\masm32\include\masm32rt.inc

Но вообще, если подумать, то есть и такое решение:

global main
%include "fizzbuzz.inc"
section .text
main:
call fb
ret
Аноним 31/12/24 Втр 06:39:18 #520 №3353255 
>>3353088
.686
include c:\masm32\include\masm32rt.inc
.data
str1 DB "Fizz", 0, "Buzz", 0, "%d", 0
.code
main:
MOV EBX, 1
LOOP1:
MOV EAX, EBX
CDQ
MOV ECX, 3
IDIV ECX
MOV EBP, EDX
TEST EDX, EDX
JNZ T1
PUSH offset str1
call crt_printf
ADD ESP, 4
T1:
MOV EAX, EBX
CDQ
MOV ECX, 5
IDIV ECX
MOV ESI, EDX
TEST EDX, EDX
JNZ T2
PUSH offset str1 + 5
call crt_printf
ADD ESP, 4
JMP T3
T2:
TEST EBP, EBP
JE T3
TEST ESI, ESI
JE T3
PUSH EBX
PUSH offset str1 + 10
call crt_printf
ADD ESP, 8
T3:
PUSH 32d
call crt_putchar
ADD ESP, 4
INC EBX
CMP EBX, 101
JNE LOOP1
XOR EAX, EAX
RET
end main

Я добил до 49 строк тоже, но признаю поражение, Вы пишете на асемблере сильно лучше меня.

>>3353097
Ну, это победа.
Аноним 31/12/24 Втр 19:15:56 #521 №3353620 
С Новым Годом, товарищи! Извините за тупые вопросы в этом году, удачи вам.
Аноним 03/01/25 Птн 03:02:42 #522 №3354805 
>>3312211
cmake, make, yocto.
обычно в больших проектах что-то из этого используется. вполне нормальная штука.
я пишу под openWrt и там как раз такая штука.
Аноним 04/01/25 Суб 01:43:18 #523 №3355406 
>>3351665
Мой метот от Тсаря Ссей:

#include <stdio.h> main(){int (*p)()=printf;for(int i=1;i<101;i++)!(i%15)?p("FizzBuzz\n"):!(i%3)?p("Fizz\n"):!(i%5)?p("Buzz\n"):p("%d\n",i);return 0;}
Аноним 04/01/25 Суб 02:03:50 #524 №3355419 
>>3355406
Почему звёздочку не скушало?
Аноним 04/01/25 Суб 12:55:49 #525 №3355567 
>>3355406
Уверен, что одна ошибка будет на всех компиляторах, а вот вторая - не знаю.
>>3355419
Потому что она только одна, анончик.
Аноним 04/01/25 Суб 22:55:22 #526 №3355825 
>>3355406
Опытные аноны, я правильно понимаю, что из-за отсутствия скобок операции с вопросами будут разбираться отпизды компиляторами, т.е. поведение неопределено или я не прав?
Аноним 05/01/25 Вск 00:59:56 #527 №3355859 
>>3355567
Чем оно у тебя вообще компилится в одну строку? gcc и clang не видят код после инклюда. Если перенести main, то gcc таки компилит с варнингами, а clang эти варнинги рассматривает как ошибки и отказывается. Плюс смешаны стандарты, например в С99 и новее нельзя объявить функцию без возвращаемого типа, а до С99 нельзя объявлять счётчик в цикле.

>>3355825
У тернарного оператора могут быть проблемы с отсутствием скобок, но компилятор кинет варнинг на двусмысленный код. Всегда пользуйся дополнительными флагами как минимум -Wall -Wextra.
Аноним 05/01/25 Вск 04:28:36 #528 №3355878 
>>3355859
>но компилятор кинет варнинг на двусмысленный код
Понял. А имеет смысл в 2к25 предпочитать его для сложных составных выражений вместо if-else иили case, кроме йоба обфускации? Или бустов от его использования компилятор уже не даст?
Аноним 05/01/25 Вск 17:32:19 #529 №3356127 
>>3355878
Если компилишь с оптимизациями, то не даст. Дадут ключевые слова, атрибуты, выравнивание структур. Но в 99% случаев это бессмысленный дроч ради дроча, а на работе нужно писать читабельный код, а не быстрый. За три вложенных тернарника уволят сразу нахуй.
Аноним 05/01/25 Вск 18:19:53 #530 №3356155 
>>3356127
Здравствуйте, я другой анон, но ведь тернарные операции это синтаксический сахар, они же в коде будут теми же самыми cmp, test и последующими j[] TAG.
И использование Си и означает, что нам нужно байтоёбить и это будет делать опытный человек за много деняк.
Аноним 05/01/25 Вск 19:50:35 #531 №3356195 
>>3356155
>Здравствуйте, я другой анон, но ведь тернарные операции это синтаксический сахар
Не-а, они имплементированы отдельно, и далеко не любое выражение с тернарником можно заменить на if/else, не переписывая окружающий код.
>И использование Си и означает, что нам нужно байтоёбить и это будет делать опытный человек за много деняк.
Да нет, обычно это означает, что нужно копаться в очень тухлом говне, которое едва компилится с триллионом варнингов, или переведённой промтом документации на китайский контроллер, а заниматься этим за миску риса будет лошпед, ещё не перекатившийся в веб. Ничего личного, но зп у сишников реально хуёвые, при этом требования выше, чем в вебе. Хотя конечно дела всё ещё лучше, чем у плюсовиков.
Аноним 06/01/25 Пнд 10:22:42 #532 №3356445 
Почему в большинстве книг или учебных материалов пытаются накидывать кучу знаний по си: всякие указатели, структуры, работа с файлами. Но не объясняют как это всё компилировать?
Аноним 06/01/25 Пнд 14:45:55 #533 №3356593 
>>3356445
>кучу
>указатели, структуры, работа с файлами
Аноним 06/01/25 Пнд 16:01:30 #534 №3356713 
>>3356445
Что ты имеешь в виду анон, ты имеешь в виду ключи компиляции или что? Или ты про байтоёбское расмещение данных, попадание их в кэш и прочее? Или про то, как это компилируется в язык асемблера?
Аноним 06/01/25 Пнд 16:02:45 #535 №3356716 
>>3356593
Главу про указатели можно спокойно растянуть на страниц 100 и всё по делу будет. А про работу с потоками в пору писать отдельную книгу, на самом деле.
Аноним 06/01/25 Пнд 16:51:57 #536 №3356757 
>>3356445
Потому что это описано в толстой книге Компиляторы?
Аноним 06/01/25 Пнд 18:12:21 #537 №3356802 
>>3356713
Я про make
Аноним 06/01/25 Пнд 20:32:58 #538 №3356899 
>>3356802
А, это описано в толстой книге Managing Projects with GNU Make.
Аноним 07/01/25 Втр 08:22:06 #539 №3357060 
Вот пишут, что эти make можно описать более обощенно, но при этом не избавляет нас от необходимости прописывать каждый новый c-файл в список в Makefile. Почему нет инструмента, который бы автоматически сканировал папку ./src на наличие всех вложенных папок с c-файлами?
Аноним 07/01/25 Втр 12:17:56 #540 №3357156 
Друзья у нас перекатик намечается после 500 или после 1000?
Аноним 07/01/25 Втр 12:44:06 #541 №3357181 
>>3357156
После 1000 треды исчезают, а не перекатываются
Аноним 07/01/25 Втр 15:15:18 #542 №3357309 
>>3357060
>Почему нет
Си тред 2025 итоги.
Аноним 07/01/25 Втр 19:55:38 #543 №3357586 
maker.jpg
>>3357309
И как сделать? Все примеры, какие я нашёл в интернете, предлагают ручками прописывать каждый файл в Makefile. Универсального решения нет, хотя за 50 лет наверно можно было додуматься, что людям не нужна всякая эта хрень с гибкостью, а нужно чтобы просто собрались все файлы из папки.
Почему в других языках пишут: cargo build и всё собирается без изучение отдельного языка для сборщика?
Аноним 07/01/25 Втр 21:15:02 #544 №3357663 
>>3357181
Эх печаль, надо шапку скопировать и доправить
Аноним 07/01/25 Втр 21:18:07 #545 №3357669 
>>3357663
Бля, а шляпы треда нет, давайте сделаем хотяб это, полезные ссылки, кого читать, компиляторы и онлайн компиляторы, ну и остальное, а то у нас нитка как будто случайная, не надо так
Аноним 08/01/25 Срд 13:08:20 #546 №3357750 
>>3357669
>>3351804
Аноним 08/01/25 Срд 14:27:14 #547 №3357799 
>>3357750
О, спасибо, надо засейвить
Аноним 08/01/25 Срд 18:04:02 #548 №3357968 
изображение.png
изображение.png
Кто с sdl работал? Пытаюсь сделать освещение и почему то с SDL_BLENDMODE_ADD текстура перестаёт рендерится. С другими режимами он вообще рендерится одиннакого. Походу это проблема вообще только у меня.

Геты если что возвращают обычные указатели.
Весь день уже голову ломаю и понять не могу что за хуйня
Аноним 08/01/25 Срд 18:11:13 #549 №3357972 
Блин, я тут такое заметил, подвязал с си на пару месяцев, и теперь как заново в него вкатываю, голова неслушается, всё чужое, видимо нельзя бросать
Аноним 08/01/25 Срд 20:05:12 #550 №3358066 
>>3357586
Есть базовый пример:
```
# Define the compiler
CC = gcc

# Define the compiler flags (e.g., -Wall for all warnings)
CFLAGS = -Wall

# Define the source file and the output executable
SRC = main.c
OUT = main

# The default target
all: $(OUT)

# Rule to build the executable from the source file
$(OUT): $(SRC)
$(CC) $(CFLAGS) -o $(OUT) $(SRC)

# Clean up generated files
clean:
rm -f $(OUT)

```
Почитай об использовании %.c, %.o, $@ и прочих штуках
https://stackoverflow.com/questions/54854128/use-of-o-c-in-makefile

Дальше дефайнишь каждый таргет отдельно, если нужно.
Ну например, у тебя еще надо бы прогнать тесты перед тем как, то пишешь таргет test, ставишь зависимость
all: test
#Other build actions

Вот у этого персонажа классно сделан мейкфайл и юнит-тестирование. есть чему поучиться.
https://github.com/zedshaw/liblcthw

-----
>за 50 лет наверно можно было додуматься
Додумались, но каждый суслик был сам себе агроном.Сначала чисто скриптами билдили, потом додумались написать make, кроме того не было систем контроля версий и они не были всем нужны и доступны.
Просто скидывали патчфайлы и все.
Плюс не было задачи сделать единую ЭКОСИСТЕМУ библиотек.Некому было следить за этим.
Это весьма минималистичный язык программирования, который дает базу. Нужны пакеты?ты решаешь это сам сам. хотя билд система openWRT в мейкфайле пакета позволяет указать пакет, вверсию, хеш архива с исходниками и превосходно тебе все соберет

> в других языках пишут
И что, что пишут? У раста нет стабильного ABI.
https://www.reddit.com/r/rust/comments/ss2p6c/what_does_it_mean_when_people_say_that_rust_does/?rdt=56074
Каждый язык имеет свои идиомы и проблемы. тут важно решать задачу, а это не всегда про твой личный комфорт.

можно прямо из-под N/Vim :make выполнить и оно соберет тебе твою программу.

>без изучение отдельного языка для сборщика
Можно кодить на С через Visual studio/Codeblocks/DevCpp, там эта система сборки под капотом и тебе не нужно будет заморачиваться с добавлением файлов.

Но.
В реальной вакансии там может быть какой-то эмбеддед и тебе нужно будет пользоваться make/cmake или другой системой сборки и иногда там что-то добавлять. К примеру, у тебя будет SDK вендора с уже собранными дровами и ты свое приложение с ним линкуешь.
Так что я ничего плохого не вижу в знаниях, анон.
Аноним 08/01/25 Срд 20:17:36 #551 №3358074 
image.png
image.png
image.png
image.png
>>3356445
все там пишут. найди норм книгу.
Аноним 08/01/25 Срд 22:08:24 #552 №3358140 
CodeUyImscr1m6.png
Code9jibDdCAbX.png
>>3357586
Всё очень просто сделать. А ещё есть CMake.
И даже если не хочешь учить − мы в 2025 году живём, кидаешь дерево репозитория в жпт, и она тебе нарисует мейк.
Аноним 09/01/25 Чтв 00:57:40 #553 №3358189 
image.png
>>3357586
>cargo build и всё собирается
Раньше нажимали make && make install и тоже всё собиралось.

>за 50 лет наверно можно было додуматься
ты сейчас спрашиваешь вопрос уровня : Почему в момет Большого Взрыва не появились сразу люди?

На момент создани Си и Юникса, не было Ничего. Были отдельно выполненные ОС на языке ассемблера какой-то
конкретной ЭВМ и люди трудились годами перед релизом.
Не было даже текстового редактора. Не было возможности сохранить данные, не было возможности поработать дома над проектом.
Потом появился Си и Юникс. Потом уже люди написали ed, sed, vi и так работали примерно до середины 80х.
Си УЖЕ был на тот момент прорывом.
даже в совке было большой крутизной получить Сишный компилятор на советские машины.
Аноним 09/01/25 Чтв 05:53:19 #554 №3358228 
image.png
>>3357968
Что это блять
Аноним 09/01/25 Чтв 14:49:25 #555 №3358569 
>>3358189
>написали ed, sed, vi
На этом этапе уже стоило задумать о сборке больших проектов с сотнями файлов. У меня почему-то такая мысль возникла сразу, как появились другие файлы, кроме main.c, а у них почему-то нет.
Аноним 09/01/25 Чтв 16:48:46 #556 №3358680 
>>3358569
Это потому что ты умный, анон, а они дебилы конченые.
Аноним 10/01/25 Птн 14:42:32 #557 №3359212 
>>3358074
Кочан даже поленился в конце нормальный Makefile привести, так и оставил игрушечный, где надо вручную прописывать .c и .o файлы.
Аноним 12/01/25 Вск 18:36:52 #558 №3360511 
>>3358066
>Так что я ничего плохого не вижу в знаниях, анон.
Поддвачну немного, тоже сначала не понял а зачем так заморачиваться? Хотя у меня были проблемы с девси2плюс, и я не смог вспомнить пароль от антивируса и тут многое обдумал, и решил не возращаться к компилированию через консоль, так как это муторно и отбивает желание к хуям, просто установил кодеблок, с ним нет никаких проблем.
И я к тому что действительно важная тема, а я только щас подумал что это важно. Спасибо за пост и объяснение друг. Вот так вдруг задумался что будет если все-таки встретишься с такой вот проблемой. Спасибо друзья. Я пойду опять обдумывать весь сахар гениев
Аноним 13/01/25 Пнд 00:52:06 #559 №3360639 
Аноны, подскажите в чем прикол структуру через typedef инициализировать?
Чтобы при объявлениях struct не писать(повысить читаемость) или как-то с обратной совместимостью связано?
Аноним 13/01/25 Пнд 05:55:50 #560 №3360715 
>>3360639
>typedef
Бесполезное слово, дедам платили за новые слова в стандарте.
Аноним 13/01/25 Пнд 08:23:14 #561 №3360752 
>>3360715
Ну с указателем на функцию вроде бы смотрится симпатично.

typedef void (V_FP_CHARP)(char );
V_FP_CHARP pfun;

И может иметь место.


Мув же со структурами я как не понимал, так и не понимаю.

typedef struct lens (
float foclen;
float fstop;
char brand[30];
) LENS;

Ведь тут LENS всего лишь заменяет struct lens.
Аноним 13/01/25 Пнд 08:25:06 #562 №3360753 
>>3360752
Звезды проебались, но суть должна быть ясна.
Аноним 13/01/25 Пнд 10:34:02 #563 №3360823 
Есть смысл учить плюсы после сей, для самообразования? С одной стороны в плюсах есть объекты и классы, с другой плюсы это такая говнина что пиздец.
Аноним 13/01/25 Пнд 13:55:24 #564 №3361055 
>>3360823
Если не планируешь ничего писать на С++, то смысла учить нет. Лучше глубже погружайся в си, повышай экспертность в одном языке.
Аноним 13/01/25 Пнд 14:04:40 #565 №3361077 
>>3361055
Я и в Си для продакшена ничего особенно не планировал. Мне просто понравилась вся эта тема с указателями и прочим "средним уровнем", тут дается понимание как устроена память, плюс мне нравится что язык не дает права на ошибку, оставаясь при этом минималистичным. Мне кажется что каждому программисту, вне зависимости от языка, полезно это все знать и уметь. Но вот именно плюсы кажутся потерей времени впринципе.
Аноним 13/01/25 Пнд 14:30:25 #566 №3361114 
>>3361077
Что ты имеешь в виду под средним уровнем?
Аноним 13/01/25 Пнд 14:42:23 #567 №3361129 
>>3361114
Работа с указателями, адресами, выделение и очистка памяти вручную и пр
Аноним 13/01/25 Пнд 14:46:17 #568 №3361138 
>>3361129
Это всё ещё высокий уровень, если с головой уйти в реализация malloc и API взаимодействия с ОСью, можно обратно не выйти, это месяца 3 усердной работы. В плюсах также выделяется память через new, только нет проблем с преобразованием типа данных, ибо malloc войд* возвращает.
Аноним 13/01/25 Пнд 14:48:35 #569 №3361145 
Сорри за может быть неактуальный/тупой вопрос, но кто-нибудь читал учебники Столярова? Есть смысл их читать для изучения CS?
Аноним 13/01/25 Пнд 15:24:25 #570 №3361189 
>>3361145
Прямо сейчас читаю. Классная книжка. Но стоит учитывать, что автор на многие вещи смотрит через чур радикально, поэтому не стоит воспринимать близко к сердцу.
Аноним 13/01/25 Пнд 15:58:36 #571 №3361239 
>>3361189
Ты про введенеие в профессию или какую-то другую книгу?
Аноним 13/01/25 Пнд 16:00:11 #572 №3361243 
>>3360753
А у того чувака звезды не скушались
Аноним 13/01/25 Пнд 16:20:28 #573 №3361271 
>>3361239
http://stolyarov.info/books/programming_intro/e2
Аноним 13/01/25 Пнд 16:25:07 #574 №3361281 
>>3361189
Вкрации посмотрел содержание всех книжек. Если заменить паскаль и tcl на что-то посвежее, то должно быть ок. Разделы введение, асм, си, плюсы и хаскель выглядят интересно.
Аноним 13/01/25 Пнд 16:36:37 #575 №3361300 
>>3361281
>Если заменить паскаль
Сначала прочитай книгу. Автор своё решение обосновывает.
Аноним 13/01/25 Пнд 18:18:36 #576 №3361369 
>>3360823
да, можно поучить. у тебя база есть.
Дальше учишь ООП, STL и будет нормально все.
На плюсах многие вещи уже есть искаропки, потому тебе легче будет освоить.

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

>>3361145
Читал Столярова. Неплохое чтиво, но лучше взять что-нибудь другое.
У Столярова своя методика преподавания - Паскаль, потом си и потом плюсы. Это его видение. Я не осуждаю, но считаю, что если уж ты сишник, то лучше найди в электронном виде Искусство программирования на С или Дейтел и Дейтел "как программировать на Си" что-то такое. У меня бумажная есть урвал.
Еще Язык Си в XXI веке и разные другие штуки, которые помогут тебе в разработке.

Просто по CS тебе было бы лучше поискать книгу Теоретический минимум по CS Владстона Фило. или взять талмуд:
https://is.ifmo.ru/books/2016/digital-design-and-computer-architecture-russian-translation_July16_2016.pdf

Потому что вопросы по архитектуре, прерываниям, MMU и прочее часто задают на собесах.
Аноним 13/01/25 Пнд 18:37:48 #577 №3361388 
>>3361300
>Сначала прочитай книгу. Автор своё решение обосновывает.
Если ты уже знаешь какой-то высокоуровневый язык, то дрочить паскаль необязательно.
Аноним 13/01/25 Пнд 19:29:12 #578 №3361426 
>>3361388
Многие, кто начинал с си, не понимают что такое побочный эффект и откровенные хаки, принятые в си, воспринимают естественными конструкциями. Представление о программировании у них деформированное.
Аноним 13/01/25 Пнд 19:37:58 #579 №3361432 
>>3361426
О чем то подобном слышал, я ещё вспомнил как лет 10 назад нашёл учебник Семакина, там было не всё, но там и паскаль и си и си плюс, неслучайно паскаль обрисован в учебниках, язык это средство получения результата, ану хотя си это для души, в моём случае, я не спешу, занимаюсь когда есть время. Но паскаль явно не случайный выбор некоторых авторов
Аноним 13/01/25 Пнд 20:04:11 #580 №3361450 
>>3361432
Паскаль был создан для изучения программирования
Аноним 13/01/25 Пнд 20:14:21 #581 №3361460 
>>3361432
Неслучайно да, а потом паскаль выбросили на помойку и главным языком для обучения стал пистон. Тоже не случайно.
Аноним 13/01/25 Пнд 20:26:11 #582 №3361467 
>>3361450
Да, спецом привить определённые навыки, и видимо сложит профессиональный характер. Да и язык очень уж благодушный.

>>3361460
Тик ток тоже появился случайно ли? И мышление клиповое появилось не спроста.
Я вот любитель, но есть ведь и профессионалы, пусть си занимаются увлечённые люди, случайные тут не нужны. Без оскорблений в сторону питухона и петухонщиков, я думаю и питонить грамотно надо уметь, но туда идут возможно из-за лёгкого вката не так ли?
Аноним 13/01/25 Пнд 20:35:18 #583 №3361472 
>>3361467
Работа с кучей и с файлами в Паскале отвратительная.
Аноним 13/01/25 Пнд 20:39:30 #584 №3361473 
>>3361472
Жизнь меня научила одному, деньги дают за то что сделать не могут или сами это делать не хотят, вывод: дело - грязная хуйня или сложная хуйня. Научись делать сложное и устанавливай свои ценники. Скажи спасибо себе за терпение и старание
Аноним 14/01/25 Втр 06:10:24 #585 №3361645 
>>3361473
База
>>3361472
Не читал Столярова, но как будто в паскале ты просто привыкаешь к базовым конструкциям: что такое переменная, что такое функция, что такое аргументы функции, области видимости и т.д. И учишься учить язык программирования. Язык-то действительно небольшой.
>>3361460
Пистон учит форматировать свой код.
Пистон не учит программировать.
>>3361369
>Язык Си в XXI
Спрашивал мнение в прошлый раз. Никто в треде не ответил.
Не кажется тебе, что там перебор с рокенролом и черезмерная любовь к макросам? Или в реальном коде обязательно пол программы должно быть устряпано директивами препроцессора и дженериками и без этого сейчас никуда?
Аноним 14/01/25 Втр 09:37:47 #586 №3361708 
>>3361473
>деньги дают за то что сделать не могут или сами это делать не хотят
Деньги дают прежде всего за то, на что есть спрос (что приносит деньги кабанычу), а потом уже сложность влияет на ценник. Приносит паскаль деньги кабанычу? Вопрос риторический.
Аноним 14/01/25 Втр 09:59:12 #587 №3361720 
>>3361708
>Приносит паскаль деньги кабанычу? Вопрос риторический.
Да, приносит.
Рекомендую попутешествовать по областным заводам. Там много некоторого дерьмокода и интересных решений.
Аноним 14/01/25 Втр 11:26:45 #588 №3361765 
>>3361645
>черезмерная любовь к макросам?
Имхо, макросы -важная часть Сишного кода.
можно написать некоторые вещи довольно просто используя макрос.
Да, не во всех проектах макросы уважают, но тот код, который я чинил, часто содержал логирование в виде вариадик макроса, манипуляции с очередью, проверки памяти на NULL или размерность массива (вариации на тему _countof от компании майкрософт)
https://stackoverflow.com/questions/4415524/common-array-length-macro-for-c
Аноним 14/01/25 Втр 12:11:30 #589 №3361799 
>>3361708
>Деньги дают прежде всего за то, на что есть спрос (что приносит деньги кабанычу), а потом уже сложность влияет на ценник. Приносит паскаль деньги кабанычу? Вопрос риторический.
Ст из стандарта мэк, яп для плк на производстве. Вполне похож на паскаль.
Аноним 14/01/25 Втр 12:58:43 #590 №3361838 
>>3361765
Не, у меня нет проблемы с макросами, как таковыми. Хороший инструмент и почему бы и да, когда он в тему.

Просто в процессе чтения создалось впечатление, как будто автор хочет весь код хаками захуярить и напихать столько макросов сколько сможет.

Вот поэтому и созрел вопрос: мейнстрим это или нет?
Аноним 15/01/25 Срд 09:29:22 #591 №3362537 
>>3361300
>Автор своё решение обосновывает.
Автори пишет, что Паскаль в обучении хорош тем, что он с одной стороны является высокоуровневым языком, с другой там есть указатели и для ньюфага это удобный вариант перед изучением в частности Си. Чем его не устроил Go, который тоже высокоуровневый и тоже с указателями и тоже быстро учится хз.
Аноним 15/01/25 Срд 09:38:04 #592 №3362547 
>>3362537
В го полным полно побочных эффектов и подводных камней. Он унаследовал многие "плохие" практики из си, поэтому совсем не подходит в качестве первого языка. Когда я слышу, что рекомендуют учить го новичкам, мне всегда кажется, что это какой-то троллинг.
Ещё го довольно специфический в техническом плане и не позволяет писать многие программы общего назначения. Столяров же использует простые средства стандартной библиотеки Паскаля для работы с текстовой псевдографикой, чтобы заинтересовать новичков красивостями. А что на го? Нужно скачать какую-то "левую" библиотеку с гитхаба, которая работает через пень-колоду, а через пару лет автор может там всё поменять и она перестанет работать. Явно такой подход не для новичков.
Аноним 15/01/25 Срд 09:40:39 #593 №3362551 
>>3362547
Я кстати так и не понял что Столяров понимает под побочными эффектами, на эту тему даже как-то срач был. Он например пишет что любой код на Си будет с побочным эффектам, но на Паскале - нет. Хз почему.
Аноним 15/01/25 Срд 09:49:10 #594 №3362564 
>>3362551
Он про это много пишет вообще-то в своей книге. Там целые разделы посвященны побочным эффектам. В основном там про то, что в си функции вызываются не ради возвращаемого значения, а ради побочного эффекта. В Паскале же для этого используют процедуры. Также все присваивания - это операции, которые возвращают после себя результат присваивания, но их используют как правило ради побочного эффекта - присвоить новое значение переменной:
x = y = z;
Аноним 15/01/25 Срд 15:46:59 #595 №3362849 
помогите?

муравей на нитке проползает на 1 см вперёд, после нить растягивается на 100 самнтиметров. Начальная длина нити 100 сантиметров, позиция муравья 0. Дойдёт ли муравей когда нибудь до конца?

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


https://pastebin.com/TjkWThba
Аноним 15/01/25 Срд 19:09:38 #596 №3363097 
>>3362849
Какое условие ебанное, ты оригинал можешь скинуть? Если это оригинал, то шли автора задачи нахуй, ибо формулировки пиздец ебанные.
Аноним 15/01/25 Срд 20:05:49 #597 №3363142 
image.png
>>3362849
Про растяжение пройденного пути не понял вообще, к задаче была приложена картинка или схема хотя бы с пятью первыми итерациями, а то из условия нихуя не понятно. Я буквально так понял задачу.
Аноним 15/01/25 Срд 22:33:54 #598 №3363225 
Эм ладно кто не понял
1. муравью надо пройти 100 сантиметров по прямой, муравей двигается шагами (ходами) по 1 сантиметру, после кажого шага длина нити увеличивается на 100 сантиметров, нить растягивается равномерно, к примеру если муравей прошел 25 процентов пути, 75 сантиметров закинется вперед муравья, 25 назад

2. На первом ходу муравей двинулся вперед на 1 сантиметр, после чего ниь растянулась на 100 см.
Его положение было равно 1/100 относительно конечной точки, значит 99/100 закинется вперед, 1/100 закинется назад, в итоге муравей имеет 2 см позади себя и 198 впереди, очевидно отношение пройденного расстояния к общему после растяжки не меняется

На втором ходу он двинулся еще на 1см, тперь отстоит от края на 3 см и впереди него 197 сантимптров, растягмваем дальше... (Функция мап все делает)


Прогнал через десмос, там на миллиардной иьерации муравей проходит 20 процентов пути, значит скорее всего проблема именно в переполнении и была
Аноним 15/01/25 Срд 22:40:07 #599 №3363232 
>>3363225
А тут разве не через обычную арифметическую прогрессию решать?
Аноним 16/01/25 Чтв 06:55:08 #600 №3363377 
>>3362849
Вот и подросло поколение, которое не слышало про Ахиллеса и черепаху
Аноним 16/01/25 Чтв 08:50:45 #601 №3363414 
image.png
>>3363377
f(x) = f(x-1) / 2
вот функция черепахи, а там немношко по другому.
Аноним 16/01/25 Чтв 12:24:43 #602 №3363546 
image.png
>>3363225
Аноним 16/01/25 Чтв 12:50:30 #603 №3363576 
image.png
>>3363546
Даже пусть так будет, а то Си-шные математики меня загнобят.
Аноним 16/01/25 Чтв 13:08:44 #604 №3363608 
image.png
image.png
он посчитает? или просто зависнет?
Аноним 17/01/25 Птн 05:59:53 #605 №3364258 
>>3363608
>1
У тебя переполнение всего стандарта в 5ой строке.
Аноним 17/01/25 Птн 08:36:58 #606 №3364299 
>>3363608
limits.h
Аноним 20/01/25 Пнд 16:10:00 #607 №3367272 
Аноны, объясните пожалуйста.

У функции connect() второй параметр - это указатель на структуру struct sockaddr.

При этом фактически в примере я передаю указатель на адрес переменной структуры struct sockaddr_in.

При этом struct sockaddr_in состоит из 3х целочисленных элементов, а struct sockaddr из 2х: одного целочисленного и второго массива типа char.

При этом компилятору норм, функции норм, мануальщикам норм, компам норм, а я нихуя не понимаю, как это должно работать и почему оно так.

Только вычитал, что функция рассчитана, как универсальная для разных Address Family, но как она из sockaddr_in мутирует в sockaddr?
Аноним 20/01/25 Пнд 16:22:54 #608 №3367294 
>>3367272
Дополню еще вопрос.
Нахуя хвост пакуют в массив именно чаров?
Почему просто не взяли понятный указатель на void?
Аноним 20/01/25 Пнд 20:19:56 #609 №3367589 
>>3357586
У makefile есть собственные возможности к шаблонизации, но обычно для генерации конечных сборочных make-файлов используют meson/cmake/xmake/ninja.
Аноним 20/01/25 Пнд 20:25:33 #610 №3367593 
>>3357586
>Почему в других языках пишут: cargo build и всё собирается без изучение отдельного языка для сборщика?
Потому что старые сборочные системы максимально гибкие в силу непонимая у их создателей что людям на самом деле нужно.
А максимальная гибкость достигается описанием сборки кодом.

Примерно с начала нулевых сборочные системы перешли к convention-over-configuration, где гибкость всю замели под коврик и сказали что для сборки ты должен раскладывать файлы проекта особым образом, иначе сборка не сработает.
Аноним 20/01/25 Пнд 21:07:07 #611 №3367603 
image.png
image.png
>>3367272
У меня не компилируется, но вот cppcheck ошибку не выдаёт, очень странно.
Аноним 20/01/25 Пнд 21:30:06 #612 №3367607 
image.png
image.png
>>3367603
>>3367272
А вот в онлайн компиляторе спокойно съел.

Причина есть, мы работает с указателем, адресом памяти, хотя типы данных не совпадают, но для машины, что то адрес памяти размером в длину машинного слова, что то, на уровне асемблера мы можем спокойно обрабатывать его содержимое, только если в неположенную область памяти не зайдём и процесс объявит SG fault.
Аноним 20/01/25 Пнд 22:00:13 #613 №3367622 
image.png
>>3367272
Держи в дополнение код-приколюху. Плевать на тип, по факту мы работаем с областью памяти и с данными в ней, поэтому всё обработается одинаково.
Аноним 20/01/25 Пнд 22:45:10 #614 №3367645 
>>3367272
Странно, что про void ты знаешь, про асемблер знаешь, про сети знаешь, а вот почему код скомпилировался не мог даже предположить что-ли? Это подозрительно, я считаю, что ты затролил тред и я попрошу модератора забанить твой IPv4(только по IPv6 тебя на двач не пустит, на хроме точно) на пару недель, ибо ты привлекаешь внимание на себя без повода.
Аноним 21/01/25 Втр 08:07:39 #615 №3367808 
>>3367645
Ну чтобы это знать достаточно за пару недель книжку прочитать.
Про ассемблер в реквесте ни слова нет. Хотя на уровне игры Shenzhen I/O я понимаю как он работает. Но это не то.
>>3367603
>>3367607
>>3367622
Спасибо анончик.
Аноним 21/01/25 Втр 08:14:02 #616 №3367809 
>>3367622
А есть предположение почему они именно в чар кладут?
Аноним 21/01/25 Втр 14:11:21 #617 №3368082 
>>3367809
Я не видел реализацию кода, где бы использовался sockadrr_in, поэтому хз, но в теории можно вообще любой указатель передать и кастовать его до нужного тебе типа. char* удобно побайтово обрабатывать из-за специфик адресной арифметики.
>>3367808
Ну, ты силён, асемблер с сетями за пару недель, я до сих пор Си учу.
Аноним 21/01/25 Втр 14:41:06 #618 №3368119 
>>3368082
>Ну, ты силён, асемблер с сетями за пару недель, я до сих пор Си учу.
Ну у меня программирование - это просто хобби. И си я точно также учу.

Сети я знаю по Таненбауму.
Это 2 месяца чтения его книги и этого достаточно, чтобы базово понимать концепцию адрес-порт-сокет.
Прату я читал тоже 2 месяца, потому что конспектировал и с перерывами на сериалы.
Еще месяц упражнения решал.
Всё это учится достаточно быстро, когда есть стремление и время.
Ассемблер я не знаю. Хз почему вы решили, что знаю.

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

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

Такие дела.
Аноним 21/01/25 Втр 15:07:05 #619 №3368160 
>>3368119
Молодость это классно, завидую.
Аноним 21/01/25 Втр 19:55:40 #620 №3368412 
>>3368119
Тебе 16 лет? Достойный выбор литературы, далеко пойдёшь, удачи в начинаниях.
Аноним 22/01/25 Срд 09:06:30 #621 №3368703 
>>3368412
Спасибо, анон. Приятно, что ты одобрил.
Аноним 22/01/25 Срд 14:27:03 #622 №3369009 
>>3368703
А ты где учишься?
Аноним 23/01/25 Чтв 09:44:57 #623 №3369706 
>>3369009
Нигде. Я же написал, что это хобби.
Аноним 25/01/25 Суб 15:34:57 #624 №3371910 
Sup /pr/.
Есть задачка по С. За деньги, уровня арканоида. Пишите фейкомылы, обсудим, если фрилансерам интересно.
Аноним 25/01/25 Суб 15:43:55 #625 №3371924 
>>3371910
Или пишите на @deform91
[mailto:[email protected]Аноним 26/01/25 Вск 20:06:18 #626 №3373105 
>>3371924
>>3371910
А что за задачка, если по подроюнее?
Аноним 28/01/25 Втр 10:48:43 #627 №3374404 
image.png
собой доволен
Аноним 30/01/25 Чтв 10:15:53 #628 №3376240 
крч было так:
array = (array >> 1) | (0b10000000*carry_previous)

carry_previous либо 0 и бит не добавляется, либо 1 и бит соответственно меняется

но чат ГПТ не унимается, утверждая что умножение это не очень эффективно и правильнее делать так:
array = (array >> 1) | (0b10000000 & (carry_previous << 7) )

я как хороший мальчик всё привык делать правильно, но второй эстетически не очень, послушать чат или оставить как было?
Аноним 30/01/25 Чтв 12:07:16 #629 №3376332 
>>3376240
>бит
Причина битоебства?
Аноним 30/01/25 Чтв 12:21:34 #630 №3376356 
>>3376240
Ну можешь часть примера ГПТ завернуть в промежуточную переменную. Компилятор её потом всё равно оптимизирует, а читаемость сохранится, хоть и будет на строчку кода больше.
Аноним 30/01/25 Чтв 13:22:16 #631 №3376409 
>>3376332
пишу игру, где можно направо и налево флексить характеристиками персонажа, закиданными в массив
Аноним 30/01/25 Чтв 14:01:11 #632 №3376430 
>>3376240
Битовые операции быстрее умножения.
Только я бы вообще заменил на
array = ( array >> 1 ) | ( carry_previous << 7 )
Аноним 30/01/25 Чтв 14:04:47 #633 №3376437 
>>3376430
> array = ( array >> 1 ) | ( carry_previous << 7 )
реально, чёто я затупил
Аноним 30/01/25 Чтв 14:08:20 #634 №3376440 
>>3376437
Это ирония?
А тебе сколько лет? Почему с маленькой буквы пишешь? На бордах так не принято.
Аноним 30/01/25 Чтв 14:09:47 #635 №3376442 
>>3376440
с большой буквы писать признак внутренних комплексов
Аноним 30/01/25 Чтв 14:11:04 #636 №3376445 
>>3376442
Окей, но старайся равняться на остальных, мне неприятно читать сообщение, которое начинается с маленькой буквы.
Сколько лет то?
Аноним 30/01/25 Чтв 14:12:03 #637 №3376447 
>>3376445
извиняюсь, больше конкретно вам писать не буду, мне 25
Аноним 30/01/25 Чтв 14:15:38 #638 №3376449 
>>3376447
А по первому впечатлению — 15.
Удачи в изучение Си.
Аноним 30/01/25 Чтв 14:16:29 #639 №3376452 
>>3376449
15 намного лучше чем 25
Аноним 30/01/25 Чтв 14:21:10 #640 №3376455 
>>3376452
Да, но прийти к выводу, что
> array = ( array >> 1 ) | ( carry_previous << 7 )
очевидно лучше
> array = (array >> 1) | (0b10000000 & (carry_previous << 7) )
почему-то не способны.
Хотя неудивительно, использование трансформеров для написания кода в начале изучения языка уже говорит о многом.
Аноним 03/02/25 Пнд 10:37:17 #641 №3379473 
какие библиотеки для удобной работы со строками в си считаются наилучшими?
Аноним 03/02/25 Пнд 12:23:37 #642 №3379542 
>>3379473
А что тебе нужно? Обработка с использованием регулярных выражений или что?
Да не пиши ты с маленькой, пожалуйста.
Аноним 03/02/25 Пнд 20:23:31 #643 №3379970 
>>3379542
Что-нибудь типа https://pkg.go.dev/strings или https://nim-lang.org/docs/strutils.html
Аноним 03/02/25 Пнд 20:33:35 #644 №3379983 
>>3379970
И чтоб с юникодными строками можно было удобно работать.
comments powered by Disqus