image.png23 Кб, 569x370
Гении C объясните как это работает пожалуйста https://onlinegdb.com/Cpifzo8bE Здесь array это указат /clang/ 3304338 В конец треда | Веб
Гении C объясните как это работает пожалуйста https://onlinegdb.com/Cpifzo8bE
Здесь array это указатель на выделенную память, в него не должно помещаться больше 2 элементов. В какую память он это сохраняет и почему?
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;
^
3 3304376
>>04358
Спасибо за ответ
Не думал, что это настолько ненадёжная штука и её нужно контролировать
4 3304507
>>04338 (OP)
Операционная система не может выдать тебе меньше одной страницы памяти (4KB), а аллокатор в зависимости от реализации может не работать с блоками меньше N байт, допустим 64. Но это в любом случае UB и гроб гроб кладбище.
5 3304613
>>04338 (OP)
На стеке надо было делать, дядь чтобы его распидорасило.
image.png30 Кб, 576x597
6 3304627
>>04507

>Но это в любом случае UB


Двачую, как конпелятор решит, так и будет.
7 3304662
>>04613
Не факт что распидорасит, есть такая штука, как https://en.wikipedia.org/wiki/Red_zone_(computing)
image.png94 Кб, 970x754
8 3308219
Книга K&R 2015 года. Тут ошибка локализации или можно не указывать тип возвращаемой функции? В других учебниках было так:
int main() {
return 0;
}.
9 3308220
>>08219
void проебали
10 3308530
>>08219
В КиР в деклараторе функции можно не указывать возвращемый тип, по соглашению конпелятор будет иметь в виду инт. Не помню, но вроде это в одном из стандартов было отменено.
Ещё с 99-го в main можно не возвращать результат, как у тебя на пике.
>>08220
Убрали в штандарте 23
11 3308591
>>08530
Если я делаю как в книге, то при компиляции выдает предупреждение. Компилятор 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
12 3308985
>>08591
А зачем тебе эта книга?
13 3309099
>>08985
Arduino хочу потыкать, хоть какое-то интеллектуальное хобби.
14 3309652
>>09099
Так возьми учебник современного стандарта, что ж всех на музейную макулатуру-то тянет? Почему-то MS-DOS 3.3 вместо линуксов не учат, а Си по более древнему стандарту − за обе щеки.
15 3309969
>>09652
Какой посоветуешь? Необязательно на русском. Я начал искать книги и везде этот КР был.
Acrobats14N8whJXH.png397 Кб, 783x1121
16 3310006
>>09969
Стивен Прата − Язык программирования С. Сейчас 6е издание. Теперь это классика и базовый учебник. Большой и подробный. Если не хочется читать тысячу страниц, то есть пара отличных вариантов втрое меньше:
Пикрелейтед, Modern C for Absolute Beginners от Apress
А если учишься не с нуля, то Jens Gustedt − Modern C. Отличная книга, но нужны начальные знания.
изображение.png374 Кб, 720x544
17 3310051
>>10006
Душевно вам благодарен
18 3310091
почему по двумерному статическому массиву нельзя полностью пройтись вот так в цикле?
(array + i)
19 3310098
забыл что двач съедает звёздочки. (две такие перед началом скобок)
20 3310110
>>04376

> C


> Не думал


Зря
21 3310209
>>09099
В пердуине обрезаные плюсы. Мне кажется, на поиграться можно вообще взять по конкретно пердуине гайдики от васянов, для вката в C надо дохуя знаний не только по языку.
>>09652

>учебник современного стандарта


Какую хуйню ты пишешь, я ебал. Начальная тема по C - это книжка Сикорда Effective C и условный гайдик по gdb.
22 3312211
Как собирать большие проекты на Си? Есть ли какие-нибудь удобные инструменты типа cargo?
23 3312254
>>12211
Тебе уже ответили в педерастотреде.
Прям совсем "типа карго" есть xmake.
Если ты соя и тебе хочется чего-нибудь более мейнстримного и неудобного, то cmake + conan/vcpkg. Или meson какой-нибудь, хз. На крайняк Gradle, но нормальные люди на тебя будут смотреть косо.
24 3312388
>>10091
>>10098
вопрос ещё актуален
25 3312433
>>10091
Ходи разрешаю.
26 3312442
>>12433
а компилятор нет
27 3312526
>>10091
Что по твоему array + 1? Когда ответишь на этот вопрос, тогда и поймёшь, почему нельзя.
28 3312629
>>12526
(ARRAY + 1) - это адрес, на 1 больший, чем первый элемент массива ARRAY (если размер каждого элемента массива 1 байт)
мне говорили, что какое то приведение типов неявное идёт, но зачем оно там я так не понял
29 3312640
>>12629
ну то есть если есть
int array[3][5];
и, допустим, адрес array = 100, то array + 1 это 101?
30 3312664
>>12640
нет, 104 скорее всего
31 3312672
не, если array это указатель на указатель типа инт, то скорее всего там будет 120. теперь вроде догнал.
32 3312673
или не донал. всё неоднозначно. всей правды мы не узнаем
33 3312675
>>12664
Ну нет, это не так. Иди проверяй на коде.

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

Ну если не хочешь проверять, то я объясню, что в array + 1 в том случае значит примерно array + sizeof(⚹array).
sizeof(⚹array) == 5 ⚹ sizeof(int). Практически это значит следующее:
представь array как матрицу, тогда array это указатель на первую строку, array + 1 это указатель на вторую строку, и так далее.
Чтобы пройти по всем элементам статического двумерного массива нужно делать (T⚹)array + i, где T - тип элемента массива
35 3312683
Где скачать Стивена Прату 6-издание в хорошем качестве? Везде гуляет один и тот же корявый скан с нечитабельным текстом.
36 3312712
>>12672
Смотри, что происходит. В данном скоупе array не указатель на int и не указатель на указатель на int, это указатель на то, что получается по первому разыменованию, а там лежит статический массив, sizeof которого равен его размеру. В данном примере там лежит int[3] размером 12, поэтому арифметика с ним (array + 1) → (array + sizeof(*array)) будет приводить к увеличению адреса на 12. Пикрелейтед 1-2, мы видим элементы 0, 3, 6, 9 и дальше мусор.
Алсо, несмотря на то что компилятор легко компилит это со всеми флагами, даже самый простой статический анализ типа cppcheck легко находит проблему. Пользуйся!
Чтобы всё работало как надо, надо явно кастануть array в указатель на int. Пикрелейтед 4. Всё работает, предупреждений нет.
37 3312965
>>04338 (OP)
Ты еще в цикле за пределы массива пойди, он не то что ошибок никаких не даст, а высрет все что найдет в памяти. Джаваскрипт какой-то, пиздец, как на нем еще операционные системы пишут
38 3312995
>>12965
Любые проверки ради безопасности это оверхед расходы ресурсов. Расходы ресурсов в ядре ОС это кратные расходы в юзерспейсе. Код на питончике, два числа сложить, транслируется в 1500 строк кода на си под капотом. Сколько будет с работой с двумерным массивом в цикле, даже не угадаю, счёт на десятки тысяч пойдёт. Зато просто и безопасно.
39 3313223
>>12712
допустим у меня есть переменная uint64_t bubble
и есть указатель на эту переменную uint64_t bubble_pt

через
( (uint8_t*)bubble + i ) я могу обратиться к любому из 8 байтов этой переменной?
image.png11 Кб, 567x213
40 3313228
>>13223
я не очень умный
41 3313246
>>13223
Да.
Только надо написать
( (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
42 3313247
>>13246
двач съел звёздочки в моих примерах.
image.png27 Кб, 1115x369
43 3313336
>>13246
не, не работает
CodeEjFh7Id54d.png42 Кб, 980x488
44 3313387
>>13336
Нормально работает.
45 3313433
>>04338 (OP)
потому что в Си нет проверки нарушения границ массивов, это типа ты сам должен делать
сохраняет он это в обычную память, которая по адресу идёт следующей
46 3313571
>>13433
Ну как нету. Сказать, что их нету совсем, точно нельзя, лол.
47 3313600
>>13571
А какие? Разве что средствами ОС? Система мягко и заботливо пришлёт SEGSIGV )))
48 3313893
>>13387
Для каких практических задач такое может пригодиться?
49 3314128
>>13893
Для бареметал залупы на 10-центовых контроллерах. Ну в целом байтоёбство это эмбед.
50 3314376
>>13600
В стандарте же сказано UB, может быть, а может и не быть, ну.
51 3314444
>>13600
Это если у тебя есть ОС
52 3314762
>>14444
Да один хуй бус еррор приедет, только голый от железа.
53 3314968
>>14444
>>14762
Просто берёшь и катаешься еблом по клавиатуре с адрес санитайзером.
54 3315054
Подскажите пожалуйста или хотяб направте, что самое необходимое в си? Ну там я хз даже, я прост представляю си как промышленый язык, контроллеры, драйверы, ос. Его еще где то используют кроме перечисленного?
55 3315108
>>15054
Где-то спустя 4 стандарта плюсы станут абсолютно неюзабельным говнищем и сишка останется единственной не-хипстерской альтернативой.
56 3315154
>>15054
не, наврядли где-то еще используют
57 3315211
>>15154
К примеру, PostgreSQL написана на C.
58 3315216
>>15054
Ядра разных нагруженных систем и приложений, не только ОС. Производительные либы, в том числе для других языков. Когда ты на питончике пользуешься numpy − ты пользуешься кодом, написанным на си. Это всё ещё один из самых популярных языков и никуда не денется в обозримой перспективе.
59 3315253
>>15216
Вот, я о чем то таком имел ввиду, у меня интерес только в плане контролеров, но явно этим ограничиваться нельзя, системное пограмировоне незнаю насколько это вообще сложно, никогда не интересовался

>>15211
И это, верная тема, спасибо
60 3315319
>>15216
Я напишу свой кросспайлер типа Vala, но с синтаксимом go и инструментом сборки типа cargo и все перейдут на мой язык
61 3315713
>>15054

>что самое необходимое в си


Не писать на нём, если не знаешь, зачем он тебе нужен.
62 3315730
>>15713
Только для контроллеров, пока что, а потом еще подумаю. Ты чего такой злой? Если не знаешь то как напишешь то, пьяный штоли?
63 3315739
>>15730

>Только для контроллеров


Тогда даташит своего контроллера читай.

>Ты чего такой злой?


Я не злой, а токсичный.
64 3315780
>>15739
Не хочу даташиты читать, чего-то другое надо
65 3315791
>>15054
Везде, лол. Ты же понимаешь, что из большинства современных разноцветных языков так или иначе можно дёргать сишный код?
image.png28 Кб, 426x520
66 3316244
по этому адресу хранится номер последнего введённого символа? а что за цифры выскакивают? почему они разные, если я перед запуском программы нажимаю одно и тоже
67 3316297
>>16244

>почему они разные


Баг.
68 3316323
>>16244
Что такое stdin? Поставь себе уже IDEшку и начни компилировать с флагами.
stdin это структура типа FILE, как ты её напечатаешь принтфом, ещё и с %d?
Если ты хотел посмотреть адрес stdin, то это делается так: printf("%p\n", stdin);
И он будет каждый раз рандомный, чтобы мамкиным хакерам было труднее жить. Это называется ASLR, рандомизация адресного пространства.
image.png23 Кб, 684x262
69 3316359
>>16323
не, неправда
70 3316401
>>16359
а если так сделаешь?
printf("%d", *stdin);
image.png37 Кб, 651x647
71 3316460
объясните?
72 3316596
>>16359
Ну это значит какая-то виндопараша. Гугл говорит, что она поддерживает ASLR начиная с Висты, но судя по твоему скрину всё как обычно.

>>16460
А тут дебаггером смотри, что он вообще прочёл из терминала.
73 3316730
Почему этот чел раскритиковал книгу Сикорда Эффективный Си? Книга же хорошая. По крайней мере лучше из нового ничего нет. Есть только протухшие и неактуальные книги по стандартам 80-90 годов.
https://rutube.ru/video/db9d6a57bb49ed316d0b60186de0dba2/
74 3316738
>>16730
он же буквально в самом видео говорит о том, почему он её критикует, у тебя на ютубе только превьюшки грузит?
75 3316762
>>16738
На мой взгляд он тупо захейтил книгу. Она как раз рассчитана на человека, который уже изучил какой-то язык программирования и хочет изучить си. А он рассматривает только два типа читателей: кто вообще программировать не умеет и профессионалов с кучей лет опыта.
Ютуб у меня не работает совсем.
image.png69 Кб, 471x463
76 3316819
>>16730

>Почему этот чел раскритиковал книгу Сикорда Эффективный Си?


Потому что он долбоёб. Книга обзорная про большое количество вопросов связанных с языком (всего 200 страниц), но автор не упускает важных вещей про подводные камни, про тулинг. После прочтения новичок в Си получит более широкое представление о языке, но не глубокое понимание каких-то может быть вещей, но просто будет знать хотя бы базовые вещи и что такие-то штуки (санитайзеры например) присутствуют в языке и тп.
Второе издание: https://ipfs.io/ipfs/bafykbzacec4olm3nwzqh5blgmlkltg6ln36saclqf3rx6yvumarp5pmcvxdky?filename=Robert%20C.%20Seacord%20-%20EFFECTIVE%20C-No%20Starch%20Press%20%282024%29.pdf
77 3316870
>>16762
>>16819

Приём таблеток пропускать нельзя. Может и норм книга, но хули с ней так трястись-то, будто священное писание открыл.
78 3316914
Какие вообще сейчас актуальные книги по си можно почитать?
79 3317036
>>16914
А тебе для чего? Для общего обзора в треде уже накидали советов, дальше всё узкоспециализированное.
80 3317444
>>16870

>РЯЯЯ ТАБЛЕТКИ УААА


Выше челик задал вопрос, я ему ответил, причина тряски?
81 3317496
>>16762
В 2000 книги были там Си и Си плюс в 100 страниц описывались, оба языка, стандарт 99, много бывает книжек где написано много лишнего, конкретно эту не читал, но правда добавлю что в тех книжках отдельно были задачки всякие, в 100 страниц описание двух языков с поверхностными примерами
Так что я даже хз, кто очень хочет – тот научится
82 3317501
>>09099 ардуина для рывка норм покатит. Просто немного разберись что такое такое эта ембедед электроникс. Пойми что на них нет операционной системы, которая будет вытириать за тебя жопу. Потом ты поймёшь что ардуина это кастрированный AVR. для удобства школьников, чтобы не забивать им голову лишней информацией. Пиздюк потеряет интерес если от начала курса до мигания светодиодом пройдёт слишком много времени. Возможно потом перекатишься на ARM архитектурные камни, которые в разы лучше, и сука дешевле, ёбаного ардуино. Ещё немного погодя вдоволь наигравшись с внутренней машинерией придёт осознание что нахуй его, каждый раз писать велосипед чтобы накручивать ШИМ. И придёшь к RTOS, райлтайм операционным системам для встраиваемых систем.
Из всех шагов единственное рекомендую перешагнуть ардуину. Она выращивает в человеке плохие привычки. Помнится у AVR конторы есть свя нормальная IDE с вменяемыми либами а не ардуиновским позором. ну и скачай даташит на свои камни.
Сразу прыгать на stm32 - порежешь жопу, чтобы запустить это блядсвто надо со старта в шапку ассемблерный код присирать, в ней намного больше возможностей но и геморроя на порядок выше.
image.png116 Кб, 1386x842
83 3317508
подскажите пожалуйста, что я делаю не так?... цель просто напечатать код кириллических символов. и у терминала и у блокнота одинаковая кодировка. знаю что у буквы А код 0xD090
84 3317535
>>17036
Мне нужна хорошая книга для профессионалов, чтобы раскрывала всякие тонкие моменты. В универе что-то писал на си, но никогда его в полном объёме не знал.
85 3317629
>>17535
Тогда Стивен Прата. Там подробно и глубоко.
86 3317631
>>17508
Ты пользуешься функциями для работы с ASCII. Тебе нужно wprintf. И на винде ещё наверное выставить локаль, setlocale(LC_ALL, "en_US.utf8");
87 3317925
Реально ли вдрочить язык си по этому гайду?
https://www.youtube.com/watch?v=m3irWOg6Aa0
88 3318007
>>17629
Проблема, что последнее 6 издание в плачевном качестве, там буквы как будто моль поела, после долгого чтения глаза начинают болеть. С книгами, где нормальный шрифт, такого не происходит.
89 3318073
>>17925
Как у тебя ютуб работает?
90 3318113
>>18073
Я скачал плагин для браузера типа какого-то ускорителя ютуба, скорей всего впн, но только для ютуба.
Вот знал бы си и сам мог писать такие штуки.
91 3318308
>>18007
На английском есть нормальное.
https://jmp.sh/Py71Gt7U
И русское 5е издание в нормальном качестве, там кажется раздела про многопоточку не хватает.
https://jmp.sh/apthuwE8
92 3318373
>>18308
5е издание совсем допотопное, его в 99 или 2000-м писали, это наши только в 2013 перевели.
93 3318436
>>18113

>Вот знал бы си и сам мог писать такие штуки.


Дак выучи и пиши, кто мешает то?
94 3318439
>>18373
Дак а в чем проблемы то? Синтаксис поменяешь и библиотеки добавишь, если этот код не сработает, то сработает другой, ещё что то добавь или измени, я вообще в книге видел, там было написано что процентов 80 времени нужно искать ошибки ебать код до совершенства, это как бы и есть начало учёбы, ты почему то решил что есть волшебная книжка где все будет рафинированным и чистым, ты напишешь и оно заработает сразу, не смеши а
95 3318442
>>18439
В чём проблемы старых учебников? Пролистает он его от корки до корки, придёт на работу устраиваться, а там его спросят про корутины и многопоточку в целом, про потокобезопасность. А в дедушкином талмуде этого не было. Как и epoll/kqueue, вагона ключевых слов и ещё дохуя всего. В мелких книгах на 300 страниц этого всего тоже нет тащемта, они не для тех, кто собирается искать работу на Си.
96 3318451
>>18442

>В чём проблемы старых учебников? Пролистает он его от корки до корки, придёт на работу устраиваться, а там его спросят про корутины и многопоточку в целом, про потокобезопасность. А в дедушкином талмуде этого не было. Как и epoll/kqueue, вагона ключевых слов и ещё дохуя всего.


Если есть базис, то остальное уже можно найти в других источниках не? К тому же это язык Си или не Си?
97 3318717
>>17629
Честно говоря, выглядит как учебник для начинающих. Положим в переменную a значение 2, в переменную b значение 3, что же даст a + b? И всё в таком духе.
98 3318888
>>18717
Там просто есть всё. Многие прогеры на си например не знают, что такое сиквенс поинты, что значит "всё в си это выражение" и побочные эффекты. А это основа, после которой сишный код гораздо легче читается и понимается. У Прата это есть.
Или например что символьный литерал это валидная строка на три элемента.
int x = 'kek';
printf("%s\n", (char*)&x);
Это очень подробный учебник для тех, кому нужно разобраться даже в ненужной хуйне.
99 3318939
Подскажите, почему не создается нормально большой двумерный массив чаров

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

Компилятор компилирует, но программа перестает выполняться.
Где курить почему? И какое ограничение тут роляет?
100 3318943
>>18939
Не влезает на стек. Сделай глобальный static
101 3318944
>>18943
Или malloc.
102 3318945
>>18943
Что сделать понял, спасибо.

>Не влезает на стек.


А где допустимый размер стека посмотреть, чтобы предел возможностей знать?
103 3318946
>>18943
А всё. Нашел тред на тему. Дальше сам додумкаю. Спасибо ещё раз.
104 3318947
>>18308

>многопоточку


Си тут каким боком?
105 3318999
>>18947
Сразу видно читателя K&R.
106 3319003
>>18999
Сразу видно вебмакаку.
107 3319026
>>18947
Так у Си есть многопоточка, ты о чём?
108 3320162
>>18947
Функция fork() что для тебя шутка?
109 3320179
>>20162
форк ето же вроди мультипроцессинг, а не мультитрединг
но мультитрединг вроде то же был в сишке
мимо
110 3320185
>>20179
Да, прав. Для потоков pthread.h
Короче в си обмазываться параллелизмом можно по полной программе.
111 3320195
как считать число, если я не знаю, сколько байтов оно будет занимать? типа, для любой функции записи, нужен адрес, куда записывать данные, но как мне создать переменную с этим адресом, если я не знаю размер считываемого числа?
112 3320199
>>20195
Прикинуть максимальное число и выделить с запасом
Уверен, что твое число будет длиннее long long?
113 3320200
>>20199
вопрос в том, как определять именно столько, сколько нужно
114 3320201
>>20195

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


звучит как задача для лиспа
реализовывай длинную арифметику тогда я хз
возможно на базе векторов/динмассивов
115 3320202
>>20200
а сколько цифор в числе ты знаешь?
116 3320203
>>20200
Никак. В общем случае сначала создаёшь какого-то фиксированного размера, потом при надобности аллоцируешь область, допустим, размером в 2 раза больше, и копируешь в неё старые данные.
117 3320204
>>20202
а в какой момент нужно реаллоцировать? допустим я попросил 8 байт, ввёл число, которое в 8 байт не засунешь, что дальше? как программа поймёт что надо просить больше?
118 3320206
119 3320209
>>20204

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

узнали? согласны?
120 3320211
>>20209
С другой стороны тогда уже можно не си для этого брать, а на что-то поудобнее и привычнее пересесть.
121 3320215
>>20211
ты мог не ебать мозги и сразу в лиспе написать одну строчку
тут ситред и решения для си, а си это язык велосипедов
122 3320216
>>20215
Я не тот анон, который кидал реквест. Просто задача, ИМХО, неподходящая и надуманная. Исключительно поебать мозги.
123 3320220
>>20216
определить количество байт, занимаемых числом, капец надуманно и неестественно
124 3320222
>>20195
Тебе понадобится ресайзабл контейнер, вот и всё. Делаешь байтовый массив. Если число считываешь двоичное, то по 8 бит на ячейку, затем увеличиваешь размер контейнера и продолжаешь. Если десятичное, то проще по одному числу в ячейку. Считаешь записанное тобой мантиссой, сам массив заворачиваешь в структуру, где лежит ещё экспонента. Всё, у тебя получился безразмерный тип данных. Неэффективный по памяти, зато сделался на коленке за пять минут, и всю арифметику к нему можно написать ещё за 15, тупо в столбик.
125 3320223
>>20220
Ты часто в си гоняешь числа превышающие long long и long double?
Нахуя?
126 3320229
>>20223
Я сотрудник ателье, куда твоя маман за одеждой захаживает.
127 3320230
>>20229
так, тут опять за меня отвечают
128 3320235
>>20229
Пока ты больше похож на сотрудника родильного отделения для инвалидов.
129 3320249
>>20235
Ладно, раскусил, ложись уже на коечку, будем сейчас из тебя ОПа доставать.
130 3320255
>>20249
Так где в реальной жизни тебе, программируя на си, пришлось столкнуться с такими числами на инпуте разом? И почему ты предпочел си другому языку для решения этой задачи? И почему тебе надо ебашить всю колбасу целиком и никак иначе?
131 3320279
>>20249
И еще тебе вдогонку пара вопросов. Каким образом ты поймешь, что та область памяти, которую ты собрался читать, идентифицирует себя как число? И как выявишь, что оно закончилось и началась другая область, не относящаяся к нему? Да и вообще, как и нахрена оно вообще оказалось у тебя в памяти в таком виде?
132 3320290
>>20279
разве области памяти себя как то идентифицируют? я думал это мы их идентифицируем
133 3320295
как говорится your type is my choice
134 3320304
>>20290
Мы. Но мы же в треде говорим о внезапно появившемся шматке байтов произвольного размера, о котором почему-то нихуя не знаем даже примерно, кроме того, что это число.
135 3320308
>>20304
задача по оцифровке дикпика
136 3320310
>>20195
Для начала нужно определиться откуда считать? Если из стандартного ввода, то это текстовые данные и считывать нужно посимвольно. Чтобы хранить эти данные можно выделить буфер на N байт. Если при чтении оказалось данных больше N байт, то выделить новый участок памяти на N*2 байт, скопировать туда из старого участка данные, продолжить чтение. Повторить пока не прочитаешь все данные.
137 3320311
>>20308
Тогда тебе нужен массив из char, шизло.
138 3320312
>>20310

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


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

>>20311

>бабах


причина fire в твоем ass?
139 3320315
>>20312

>причина fire в твоем ass?


Как ты определил, что тебе в потоке ввода будет передаваться число, шиз?
140 3320318
>>20315
считываем с клавиатуры посимвольно, записываем в массив, с общим размером 1 байт. если код введённого символа не соответствует цифре, завершаем программу.
после каждый введённой цифры просим у компьютера ещё 1 байт для записи новой цифры (реалоцируем крч), так до условного завершающего символа. получаем массив, каждый байт которого хранит разряд нашей программы. задача выполнена на 90 процентов
141 3320320
>>20318
*хранит значение разряда нашего числа
142 3320321
>>20315
мы кодим на цифровой технике
причина баха, говно?
143 3320337
>>20321
Хуя себе, шизло. А число целое или дробное? А может массив стрингов твоей мамаши?
144 3320339
>>20337
набор парусов твоей мамаши это то же числа, и джипег это числа и даже буквы твои обосранные, которые ты тут с горелой сракой высираешь - числа
возвращайся в свою кнопкокрасочную, говно, а тут тред сишников
145 3320341
>>20339
И как ты их между собой различаешь в потоке, большой мальчик?
146 3320365
>>20341
по тз, маленький
тебе анон озвучил что на воде число хули ты тут серишь биля
147 3320381
>>20365

>по тз, маленький


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

Объясни мне теперь, ебланушка, раз уж разработчик любезно извещает тебя, что отдает некое число, сам инициализирует и завершает передачу данных, то прикрутит ли он в реальной жизни, зная, что отдает какой-то огромный нестандартный тип и при этом заодно заранее зная его размер, заголовок с размером этого числа или будет, как ты, весь день заниматься охуительными велосипедами?
148 3320387
>>20381
не прикрутит, раз не прикрутил
мозги включи, школяр и пойми, раз никто не обернул твой любимый джесончик, значит никто не обернул и не обернет, значит это просто число, поплачь теперь
149 3320389
>>20387

>не прикрутит, раз не прикрутил


Ты когда-нибудь программировал за деньги вообще?
Как раз изначальный реквест - это реквест школяра.
А всё остальное - это маневры. Когда тебе удобно, есть ТЗ, а когда тебе неудобно, то нет ТЗ. Давай-ка определяйся.
150 3320394
>>20389
изначальный реквест анона и есть тз
кто мы такие чтобы по первоначальному реквесту анона сразу бросаться на него ссаными тряпками и называть пиздаболом? а ну да мы это ты - пиздлявый эникейщик, неспособный в решение элементарных задачек, твой удел джейсончики перекладыва, ну вот и перекладывай, не трать время на этот тред
151 3320411
>>20394
В изначальном реквесте нет ни ху я. "Хочу заебашить динамическое число нестандартного размера и выполнять с ним те же операции, как со стандартными числами". Зачем-почему, нахуя для этого си и как в такой ситуации вообще возможно оказаться - хуй его знает.

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

>решение элементарных задачек, твой удел джейсончики перекладыва


В чем разница между этой задачкой и перекладыванием джейсочиков, шиз?
152 3320417
>>20411
тебе, тупому ослу скозали

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


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

>В чем разница между этой задачкой и перекладыванием джейсочиков, шиз?


в том, что ты порвался
153 3320419
>>20417

>вот с этим и работай


Да с хуя ли?

>в том, что ты порвался


Но порвался-то ты, ебнутый, на простейшем вопросе: нахуй оно вообще надо городить ирл?
154 3320423
>>20419
на этот вопрос тебя другой анон подъебнул
красиво вышло, я поржекал
а тебе сраку разнесло в клочья
угомонись, керниганом и ритчи прошу
155 3320426
>>20423
Ну вот и выходит, что пиздабол тут ты и тот другой анон.
156 3320427
>>20426
пруфы будут, пиздабол?
157 3320428
>>20427
Что ты в ответ на простой вопрос выдумываешь хуету на ходу? Двумя постами выше, пиздабол.
158 3320439
>>20428
да тебя ебать не должно для чего это используется
тебе дали это понять шуточкой про твою мамашку
пиздец пориджи пошли, уже очевидные вещи надо разжевывать
159 3320443
>>20439
Заебись. Тогда надо положить в джейсон и помолиться, ебать. Гарантирую твоим мертвым батей, что будет работать.
160 3320448
>>20443
потише реви в этом итт треде
сишник слезам не верит
161 3320450
капец вы тут наследили, простой же вопрос был
162 3320579
>>18888

>Или например что символьный литерал это валидная строка на три элемента.


Это вроде implementation defined вещь, и про это надо читать в мануале твоего конпелятора, а не у праты.
163 3320803
>>20579
Ну по стандарту это int, так что формально ты прав и надо смотреть на платформу, но двухбайтовый инт я только в музее видел.
164 3320927
научите великовозрастного дебила пользоваться сайтом, почему он не принимает ответ?
165 3320965
>>17501
Спасибо, бро. Я немного знаю ассемблер, понимаю что такое даташит, но ничего более-менее серьезного не делал.
166 3320970
>>20927
значит в кейсе вернулся NULL
вона у тибя аутпут пустой

я как то решал эту хуйню на литкоде, сайт пизда неудобный, так что тестил своим тулчейном и потом просто копипасту прогонял на сайте а то мало ли у них индусский конпелятор с припиздонью какой
167 3320971
>>20927
* returnSize = 2;
168 3320974
>>20927
Наверное надо ещё написать ⚹returnSize = 2;
169 3320979
>>20974
где? зачем? вообще не понимаю нафига там эта переменная
170 3320982
>>20979
Чтобы проверялка поняла длину массива, который ты возвращаешь. Правильнее было бы возвращать что-то типа струтуры { int *, int }, но так тоже можно.
171 3320983
>>20982
ну так в задачке указано что у нас длина всегда 2, типо просто переменная ради переменной?
172 3320984
а чо ваще просят сделать? вроде изи кейс а вижу какой то брутфорс по матрице
пиривидити с нахрюка пж самому лень
173 3320991
>>20983
У более сложных задач будет такой же интерфейс, и у тебя тренируют павловский рефлекс.
174 3321007
>>20991
>>20974
понял спасибо
175 3321345
>>21007
покажи что там в итоге получилось
176 3321516
>>04338 (OP)

>Гении C объясните как это работает пожалуйста


https://www.opennet.ru/opennews/art.shtml?num=62224
image.png38 Кб, 662x723
177 3321526
>>21345
эм, а чего там показывать?
178 3321641
>>21516
Чел пишет код, про который в литературе по C для начинающих пишут: не пишите так код. В итоге получает хуйню в виде переполнений буферов и бесконечных циклов.

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

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

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

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


Возможно предлагаемый диалект важен и нужен кому-то, но по текущим примерам я не очень понимаю чем это лучше зигов, растов и еще кучи всего, что пытается быть безопасным си.
179 3321671
ЗДРАСТВУЙТЕ, можно два тупых вопроса?
быстрее ли switch case чем if else
быстрее ли ? : чем if else
или буквально это одно и тоже
180 3321675
>>21516
TrapC для трапов что ли?
181 3321692
>>21671
Зависит от того, как твой код оптимизирует компилятор. После оптимизаций вполне может быть одним и тем же.
image.png45 Кб, 761x754
182 3321755
написал, пользуйтесь
image.png44 Кб, 743x744
183 3321759
поправочки
image.png37 Кб, 645x871
184 3321781
ещё поправочки (теперь работает, честно!)
185 3321825
Я не понял, компилятор выбросит ошибку во время исполнения кода или на этапе компиляции? Если во время исполнения, то следует ожидать, что это не будет сообщение "ой" с неизвестной причиной, и он будет выдавать строчку с лажей. Или я должен буду расставлять маркеры по всему коду, выведывая, где протекло?

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

>>21675
Там была шутка, что надо было назвать TrumpC, дополнив слоганом "make C great again!". Хотя бы посмеялись.
186 3321832
Тут ещё вопрос, что лучше - программа работает, но где-то мимасит слегка, или программа вылетает нафиг. Допустим, памяти освобождается 16 байт для 9 целевых, из-за выраванивания. Ну промажет он на пару байт иногда, но работать будет. А тут гакнется. Лучше, если это будет опционально всё-таки...
187 3321838
Ещё там пишут, что вся память будет обнуляться... Ну, мягко говоря, сомнительная возможность. Очень часто нафиг не нужно - дрючить РАМу 2 раза вместо 1, каждый раз.
188 3322007
>>20423

>керниганом и ритчи прошу


Поржал и помолился
189 3322010
Ребята проблема такова, домики деревянные, набегают солдаты дворца и злодеи
Обновил андроид и у меня перестал мобильный компилятор работать, и работал ли? Я имею ввиду адекватно работал ли.

Есть какой-то заменитель?
173152896936761542.jpg76 Кб, 752x967
190 3322018
А вообще вроде работает. Но вопрос остаётся, вдруг кто чего хорошее подскажет
191 3322062
>>21755
>>21759
>>21781
ума не приложу где твой массив может пригодиться
image.png49 Кб, 852x838
192 3322128
>>22062
ясно, что никакого практического смысла в этом нет, просто пытался написать функцию суммирования без знака +

Думал, что из за little-endian будет какая то фигня при битовом сдвиге, оказывается нет, всё работает как и должно, можно и адресную арифметику выкинуть
193 3322138
>>22128

>Думал, что из за little-endian будет какая то фигня при битовом сдвиге


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

>Ты возражаешь профессору?


Я ему еще и пойти и отсосать предложу, если он мне такую хуйню без веских пояснений, как и зачем он в таком положении оказался, расскажет.
195 3322317
Сап. Что пишут на C? Возможно ли найти работу на C джуну?
196 3322327
>>22317
В основном прошивки, драйвера, микроконтроллеры, ядро UNIX-подобных ОС. Реже работа с сетью (файерволлы и т.д.), СУБД (PostgreSQL написана на C).

Без опыта обычно берут студентов/выпускников всякие НИИ, ФГУПы и заводы.
sage 197 3322399
>>22327

>ядро UNIX-подобных ОС


Ядро для других ОС пишут сразу в двоичном коде?
198 3322414
>>22399
На вижуал бейсике же.
199 3322689
>>22414

>вижуал

image.png37 Кб, 618x718
200 3322763
а списки вот так делаются?
201 3322768
>>22763
Нет.
202 3322770
>>22763
У тебя при добавлении элемента выход за пределы массива.
image.png823 Кб, 1280x720
203 3322784
>>22770
исправил
204 3322787
>>22763
я наверное что то пропустил, но схуяли ты функции внутри структуры описываешь? это плюсы штоле?
205 3322797
>>22787
меня алиса убедила что так можно
206 3322799
но компилятор пока не согласен такое принимать
207 3322803
>>22797
поколение жэпэтэдебилов....
208 3322812
Почему в си не хотят добавить пространство имён, чтобы можно было писать типа:
mylib::calc(a, b);
stdio::printf("hi!\n");
209 3322815
Вот по логике тип int должен представлять естественный размер данных для конкретной машины. Но при этом его ограничили, чтобы он был не меньше 16 бит. Но что если нужно реализовать компилятор си на 8-битной машине, где естественный размер данных - это 8 бит. К примеру, на Z80A регистр аккумулятора 8-битный и получается, что int там должен быть тоже 8 битный. Но это не будет соответствовать стандарту.
210 3322826
>>22812
зачем? чтобы больше писать приходилось?
211 3322828
>>22815
int типизируется под один жмых шины данных, чтобы за один жмых машина всосала один word, а не под размер регистров
под Z80F своя сдлиба со своим интом, как и на любой другой машине (уверен в этом но не проверял)
212 3322831
>>22826
Вдруг мне надо определить свой printf и просто пишу:
mylib::printf("my out!\n");
и это ни как не будет конфликтовать со стандартным:
stdio::printf("std out!\n");
Если лень много писать, то можно добавить ещё оператор use или import
213 3322834
>>22831
в чем проблема определить свой принтф и не линковать принтф из стд либы?
или например в чем проблема определить свой принтф без этих пространств?
myprintf()
printf()

vs

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

зачем блять? чтобы больше писать пришлось?
214 3322846
>>22803
получается наоборот, типа не вызываешь функцию структуры, а вызываешь функцию, и передаёшь ей указатель на структуру?
215 3322856
>>22846
может тебе стоит почитать какой нибудь учебника по си а не высеры ии хуиты? в си можно и так и эдаки вообще как хочешь, лучший язык эвар
216 3322914
Аноны, а _Атомик, регистр, рестрикт, волатил есть смысла нарабатывать или ими не пользуются и компилятор может без них?
217 3322922
>>22914

> рестрикт, волатил


Есть

> регистр


Нет

> _Атомик


Вообще не знаю что это, хуйня какая-то, на цппреференс написано что компиляторы вообще не обязаны это поддерживать.
218 3322924
>>22914

>регистр


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

>Вообще не знаю что это


У Пратта вычитал. Там написано, что из C11 пришло. Тоже не очень понял зачем.

>>22922

>Нет


>>22924

>спорная хуйня


Спасибо, принял. По регистру примерно так и думал, но решил у вас проконсультироваться, т.к. мб что-то упустил.
220 3322930
атомики это вроде для мультитрединга что промисами не срать
не силен в этом, краем уха слышал на конфе яндекса по крестам
221 3322931
>>22930

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


Записал, спасибо. Значит мне туда пока рано лезть.
222 3322942
А вообще существуют вакансии по си на удалёнку? Или это онли офис, где будешь ещё и паять.
223 3322954
>>10006
первые две - говнище, лучше k&r ничего пока не написали и не напишут
третья - норм
224 3322958
>>22942
Наверняка какая-нибудь хуйня, связанная с блокчейном, распределенными сетями и протоколами есть.
Только зачем тебе си, если тебе кровь из носу надо зарабатывать? Садись на фронт на JS и не еби голову.
225 3322980
>>22958
Не хочу на фронт, хочу в тыл бэкенд
226 3322985
>>22954
Почему это Прата - говнище?
227 3323003
>>22980

>бэкенд


Всё ещё не нужен си. Ты просто пойми, что для заработка это хуевый язык.
Си нужен для клевых вещей в свободное время или за миску риса(в среднем по рынку). Либо застартапить, если у тебя кубышка батька позволяет.
228 3323051
>>23003
А если создать свой язык типа homoC и на нём как-то зарабатывать?
229 3323059
>>23051
круто, когда начнёшь?
230 3323063
>>23051

>А если создать свой язык типа homoC и на нём как-то зарабатывать?


Вопрос не мальчика, но первокурсника.
prata-scanf.jpg37 Кб, 1067x65
231 3323117
Вот читаю Прату, дошёл до того момента, где он объясняет scanf и почему надо аргумент функции передавать через &, и какую же ересь я читаю (см. пикрил). И это лучшая книга по С?
232 3323123
>>23117
прата - в голове насрато
233 3323127
>>23123
а чо, надо сразу вывалить из штанов указатели, адресацию и адресную арифметику, что бы напугать читателя?
234 3323129
>>23127
Да, он хочет этого. То что Прата постепенно объясняет он не дочитал. Я сначала тоже горел с этого, а на середине книги понял, что способ изложения неплохой для новисов.
235 3323130
>>23127
нет, ну давайте будем завуалированно объяснять, чтобы читатель нидай бох не испугался
высрем код и скажем имаджинируйте как он делает магию
ну а регистры адресацию кучу и стек оставьте пердунам на ассемблерах, у нас тут клуб современных чтецов гомогеев на homoC
236 3323132
>>23130
Либо ты затерпиш 4 главы и про магию тебе объяснят там.
237 3323136
терпеть!
238 3323137
>>23136
Ну по твоей логике изучение Си надо начинать с инструкции по сборке PDP-11.
239 3323140
>>23130
ну значит из тебя хреновый преподаватель. объяснять темы надо там, где это уместно. Рассказывать человеку, который пять минут назад радовался тому, что вывел строку в терминал, про смысл & это просто неуместно.
240 3323143
>>23140
ну да, у меня то же был хуевый препод по крестам, так как еще до лаб где мы впервые высирали хуйню в консоль, объяснял указатели на указатели на указатели
а еще помню на дискретке рекурсии в тетрадке писали и имаджинировали стек

но ты конечно умнее всех, ты бы рассказал как оно курсе на четвертом, когда все уже затерпели
241 3323146
>>23143
Сдается мне ты пиздишь на своего препода, старый, и наверняка он перед указателями на указатели сперва нехуйственный пласт инфы на вас вылил.
242 3323151
>>23127
Можно просто написать, что смысл будет объясняться в такой-то главе, а сейчас просто пишите &. Но вместо этого он начинает выдумывать ложные объяснения.
243 3323152
>>23151
И создать дополнительное давление на новичка, что он выучил какую-то залупу и до 4 главы ему будут ссать в глаза.
244 3323154
>>23146
да обычный пласт, точки с запятой, декларативность, признаки императивности, основные типы данных, всю эту хуйню вкатунскую, и указатели
поинтеры это база, их надо сразу ебашить, чем раньше тем лучше
я понимаю это больно для питономакак, но что поделать, так работает машина
245 3323159
>>23154
Ну хотя бы выражения тебе раньше поинтеров показали.

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

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

Эта книга написана так, что если ты в каком-то моменте затупил, то тебе это последовательно разжуют и в конце дадут упражнения, соответствующие твоему текущему уровню, для закрепления, а также вопросы с ответами. Она не идеальная, но достаточно хороша для самообучения основам. Зря ты мандишь на неё.
246 3323161
>>22763

> а списки вот так делаются?


https://github.com/torvalds/linux/blob/master/include/linux/list.h
В структурах через container_of получаешь указатели на овнера узла.
247 3323162
>>22812

>Почему в си не хотят добавить пространство имён


Судя по тому, куда идёт стандарт, добавят в си30.
248 3323164
>>22954
Сикорд збс.
249 3323178
>>23159

>Так а хули не с автоматических выключателей-то начали и сборки щитков?


потому что это другой факультет другого института
устройство эвм на базе х86 дают на вмк, там и логические вентили и самореплицирующие автоматы, а у нас пм - то бишь матмодели, глубже в машину нет смысла погружаться
250 3324133
Может кодик какой то скинете, подумаем посидим
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.


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


Ну вот фиг его знает. Мне видится это прежде всего как инструмент отладки. Допустим, запускаем утиль сначала через этот компиль, тестим по-всякому. А если в результате всё гладко - бинарим уже по-классике, без защитных механизмов.
252 3324279
>>24133
могу чо нито скинуть из старого
давеча вот пришла идея как по честному допилить задачку и каэр, а то моя версия кривенькая

>>24268
даже как отладчик не котируется
на холодном старте все гладко, а на рантайме 75д крашнуло
ну и сколько тогда тестировать? откуда взять время на тесты? хуита
клоны си нинужны, кроме крестов, но кресты это коммерческий си чтобы тяпляп и в продакшин
image229 Кб, 1090x1326
253 3324289
>>24133
суть: выставляет биты по номерам, понадобилось когда писал не помню чо памятезависимое, там была куча флагов и я решил их "упаковать" в пару чаров, так родился этот хидер можно было бы конечно сделать таблицу девайнов, но я не очень люблю такой подход

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

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

хидер не прогонял никакими тестами, просто влепил в живой проект и закоммитил так как усё работало
254 3324299
>>24279

>из старого


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


Кидай, тут хз, а так яндексдиск или ещё чего, я прост хз что такое каэр
Сам думаю чем заняться, или вообще начать библиотеки под себя писать. На будущее
255 3324304
>>24289
Этоо точноо си?
256 3324340
>>24304
да, это точно си, самый настоящий
https://pastebin.com/CRHTAUyN
image.png40 Кб, 1156x536
257 3324590
>>24289
я биты меняю так, никогда ничего не ломалось (вроде бы)
258 3324744
>>24590
Почему не написать восемь масок в макросах и не заставлять процессор тратить циклы?
259 3324766
>>24744
не уверен, что понимаю, что это значит
260 3324780
>>24340
Да, это макросы ебаные.
261 3324785
>>24590
Глобальные автоматом обнуляются. Можно равно не писать = {0}.
262 3324789
>>24780

>ебаные


извинись
263 3325287
Может кто знает где книжку прата от 2015 года можно скачать?
264 3325288
>>25287
Не в пдф само собой. А в формате fb2
265 3325309
>>25288
в яндексе
266 3325336
>>25288
Есть только скан, а сканы не могут быть в fb2
267 3325338
>>22954
k&r не актуальна же, там древний стандарт и на первом же примере хеллоу ворлда современный компилятор выдаст если не ошибку, то предупреждение. К тому же авторы ограничились сугубо языком си, а всё остальное типа библиотек и каких-то практик к нему не относящимся, но по факту эту инфу тоже надо знать. Так что книга имеет скорее историческое значение и не подходит в качестве учебника.
268 3325359
почему функция возвращает 0 при любых отрицательных значениях x?

https://pastebin.com/d305yGq0
269 3325369
догнал, функция power дурная была
270 3325457
>>25336
В том и проблема.
Читаю с телефона, сканы с него не очень читать.
Бумажную книгу тоже неудобно читать - она приличного размера.
271 3325515
>>25457
А чем пдф-то плох? Спокойно на шестом размере читал. Глаза не выламывало.
272 3325544
>>25457
Читай 5-е издание, оно было в электронном формате, а различия с 6-м изданием там минимальные.
krhello.jpg59 Кб, 711x427
273 3325567
>>25338
Проверил, действительно выдаёт предупреждения, потому что старый стандарт. Хотя написано, что это ANSI.
274 3325573
>>25338
Я просто код меняю частично и всё работает
275 3325574
>>24289
Ща я ещё дня на джва занят, дела по работе, потом опять вернусь к обдумываниям
276 3325581
>>25573
Как узнать что менять?
277 3325591
>>25567

>Хотя написано, что это ANSI.


какой смысл ты вложил в это "хотя"?
image866 Кб, 2004x1394
278 3325596
>>25567
у тебя кстати то же старый стандарт в компилере
патамушта типерь ета еррор
279 3325598
>>25591
Прата пишет, что стандарт требует писать int main(void), а K&R пишут на своём стандарте 70-х годов, хотя второе издание они писали по стандарту ANSI, но на деле ему не соответствует.
280 3325601
>>25598
все стандарты си это стандарты анси, ведь без американ нэйшинал стандарт инститьют невозможно записать очередную редакцию языка как стандарт билять
что за дырявая логика у тебя
281 3325602
>>25601
Не было в 70-е ни каких стандартов. Первый только в 89 году появился. Сразу видно, что Прату не читал.
282 3325606
>>25602
у праты в голове насрато
283 3325619
>>25596
Это только на макпуках так
284 3325630
>>25619
щас бы кодить не на макпуке
285 3325645
>>25596
Как будто бы дело не в стандарте, а в кланге.
286 3325691
>>25645
да не
думаю дело в стандарте
там же хотели закрыть потенциальные дыры в безопасности этими явными объявлениями сигнатур
а кланг то же тупенький, даже ворнинги не бросает за отсутствие описания параметров
287 3325808
>>25581
Жонглируют библиотеками, добавляю разные слова, и иногда код работает, процентов 90, это и есть задача научиться программировать, понять неработающий код и запустить
288 3325811
>>25808
Дополню, там ещё бывают разные версии компиляторов, ну иногда изменить, дописать, убавить в сумме является решить задачку, но это простой уровень, вот написать код чтоб удовлетворял условиям задачи, следующий уровень, я поэтому то и попросил каких-нибудь вариантов чужих кодов, вместо кроссвордов или игр телефонных, ну крч как хобби, сидеть и ебать себе мозги
289 3325829
>>25544

>а различия с 6-м изданием там минимальные.


Различия огромные, например в 5м издании нет многопоточки. Которую спросят везде, если пытаться устроиться на работу на си.
290 3325832
>>25829
Так в шестом тоже нет многопоточки. Там просто упоминается, что на есть и какие слова под неё зарезервированы в стандарте.
291 3325844
>>25811

>сидеть и ебать себе мозги


K&R порешай
13 задачу так никто и не решил в этом итт тредие или какая там была холиварная я уже забыл
292 3325884
>>25844
Надеюсь речь не про 1.13 гистограмму?
image.png14 Кб, 493x443
293 3325962
а почему long long не может сохранить все 8 значений?
294 3325966
>>25962
Лонг лонг может, а символьный литерал − нет. Что такое '12345678', какой это тип? А у Прата написано.
295 3326019
>>25966

>А у Прата написано


Да тут и без праты понятно, что символьный литерал промоутится до инта, который потом представляется в long long.
Причём промоушен символьного литерала до инта это - implementation defined behavior, а про это читать в доке конпелятора.
296 3326034
>>26019

>промоутится


что делает?
297 3326051
>>26034
Гугли C стандарт, integer promotion. "Короткие" типы повышаются до signed int/unsigned int, но представление символьного литерала из нескольких символов не описано в стандарте, конкретно в гцц это число по основанию 256.
298 3326081
>>26051

> повышаются


спасибо, что не высрал портянку вместо русского слова
299 3326093
>>26081
И это тоже есть у Праты
300 3326099
>>26093
пратасимп захватил тред
301 3326103
>>26099
Я другой анон. Просто недавно пролистывал его и решил тебя еще раз им подъебать.

Что про Клеменса "C 21 века" скажешь?
302 3326194
>>25962
Да хоть 16.

>0123456789ABCDEF


typedef struct { char v[16]; } anytype;
anytype x= ✴(anytype ✴)("0123456789ABCDEF");
fwrite(&x, sizeof(anytype), 1, stdout); puts("");
303 3326511
>>26194
не понял, зачем создавать отдельную структуру, что бы просто напечатать строку. и вопрос ведь не про строки был
304 3326839
>>26511
тебе слово anytype ни о чём не говорит?
long long x= ✴(long long ✴)("12345678");
ну вот тебе твои 8 значений, символами; все в x, как ты и хотел; зачем - мне не ведомо... )
305 3326840
Поцаны, можете проверить нет ли в fb2 формате вируса? Не распидорасит?
https://librusec.org/ru/book/stiven-prata/yazik-programmirovaniya-c-lektsii-i-uprazhneniya-6-e-izd-2015
173221712850067482.jpg346 Кб, 1080x2400
306 3326982
>>26840
https://librusec.org/ru/book/stiven-prata/yazik-programmirovaniya-c-lektsii-i-uprazhneniya-6-e-izd-2015
Вот эта без вирусов 18 метров правда, и без меню
Ебать меня на работе заебали

>>24340
Я всё ещё на связи, как освобожусь, займу голову, ибо это полезно
307 3326983
Ну йуу меня покрайнейй мере доктор веб норм отнёсся к файлу
talkbackprata.jpg150 Кб, 866x804
308 3327219
Почему имя состоит из 16 букв, а не из 8?
309 3327241
>>27219
кодировка мейби? например в UTF-16 каждый символ это два байта, возможно strlen из за этого как то криво читает

попробуй напечатать каждый элемент массива через %d
310 3327243
>>27241

> каждый символ это два байта


*минимум два байта
311 3327247
>>27241
99%, что кодировка. Прогнал этот код у себя на пк ради интереса. Всё нормально показывает.
312 3327299
>>27219
тут надо бы сделать нормальный разбор потому что я ебу был бы ответ на твою хуйню
закладывай защиту от дурака
image154 Кб, 1048x98
313 3327308
>>27299
отклеилось
314 3327344
>>27299
Это пример из книжки. Условия и циклы Прата ещё не рассказывал.
315 3327407
гении цэ
316 3327542
>>27219
В UTF-8 кириллица 2 байта.
317 3327546
>>27542
И вообще, дополню, что многие базовые функции и принципы работы со строками рассчитаны только на ASCII/Extended ASCII. Для широких символов есть другие стандартные либы и другие функции.
318 3327756
>>27407
Цэ шо?
319 3327759
>>26982

>Вот эта без вирусов 18 метров правда, и без меню



Я не понял.
Там каждый раз когда открываешь одну и ту же ссылку - вес у файлов меняется. Чо за хрень.
320 3327762
>>27756
цэ гении
321 3327984
>>27759
Ну да вес немного другой, 17 с чём-то, я тоже обратил внимание, но объяснить причину не могу, иногда кстати такое бывает, округляет может? У меня доктор веб или пускает или нет, вроде так, мне кажется меня б на сайт даже не пустило если б там была хуета говна, но иногда при скачке бракует и просто не пускает, так что придётся поверить на слово, или потом перепроверять
322 3327989
Один фиг подозрительно, вдруг файлы подменивают, и кому то 50 на 50 может хуета говна залететь
323 3329011
Что-то по си совсем как-то туго с книгами. Вот по С++ дофига всего, причём много крутых книг от именитых авторов и рассматривают не только синтаксис, а как правильно писать программы, избегая типовых ошибок.
324 3329097
>>29011

>Что-то по си совсем как-то туго с книгами.


Да потому что он нахуй никому не всрался. Си использует узкая прослоечка системщиков и программистов микроконтроллеров. Но на модулях ядра сильно не заработаешь. Это интересно только энтузиастам и ценителям "чистого программирования".
325 3329124
>>29097
Получается лучше учить С++?
326 3329156
>>29124
Ну никаких других же языков на свете нет. Си. Си плюс плюс. Таненбаум. Сикп. Чистый код. И книг других тоже нету. Если сделаешь шаг вправо, шаг влево - расстрел.

>лучше учить


Лучше иметь свежие идеи. А не обсасывать одно и то же по миллиону раз.
327 3329205
>>29156

>Ну никаких других же языков на свете нет


Неиронично, это так. Конечно, если считать сделанные на ллвм обёртки для дёрганья сисколов за языки, то тут можно поспорить.
328 3329216
>>29205
Почему не сделают обёртку в стиле го, чтобы не было сборщика мусора и тяжёловесного рантайма, чтобы можно было писать такие же минималистичные программы, а также со встроенным менеджером больших проектов, а не как сейчас всякие make?
329 3329231
330 3329239
>>29231
Точки с запятой
Скобки вокруг условий
Нет сборщиков проектов (также предлагают дрочить make)
Вечно какая-то хрень в стиле С++, а не С
331 3329251
>>29216
потому что... получится Си.
332 3329267
так мейк ахуенен в чем претензия
333 3329375
>>29124
Я тебе неделю назад написал, что учи Джаву и ДжавуСкрипт. Тебе легаси с долларовыми зарплатами хватит до конца жизни. Люди всё ещё зарплату за код на Дельфи получают.

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

Зачем тебе дрочить мозг си и плюсами, если цель - исключительно зарабатывать деньги в качестве гребца на галере? Полно же более оптимальных путей.
334 3329429
>>29267
Я вот тут уже набросал концепт будущего сборщика homo. Будет конфиг файл, но его ковырять руками не обязательно, всё делается через команды: homo new [project_name], homo build, homo run.
По сути ничего сложного. Нужно рекурсивно пройтись по дереву каталогов и сформировать список файлов исходников. Затем для каждого сформировать объектный файл. Затем всё это скомпоновать и на выходе получил бинарник.
Почему эта простая идея до сих пор не реализована в си-сообществе - не понятно.
335 3329456
>>29429
манют трехколесный лисапед изобретает?
8479406.jpg935 Кб, 1721x1469
336 3329511
>>29456
Ну пока все сборщики напоминают пикрил
337 3329519
>>29239
Проблема Си не в в точках с запятой и отсутствии свистелок и перделок.
338 3329530
>>29519
Прогрессивным разработчикам нужны новые веяния
339 3329534
>>29429
Чел, твоя идея реализуется в мейке в несколько строк. Если кому-то нужно.
Но мне например нет − часть каталогов это модули, которые подключаются в бинарь в зависимости от того под какую систему/с какой периферией он собирается, а половина это вообще юнит-тесты.
340 3329536
>>29429
так это то, чем смак занимается, не?
341 3329539
>>29534
Это невозможно сделать в мейке. Там жесткие пути до файлов и надо каждый файл прописывать. В итоге на один файл у тебя будет по 10 строчек конфига мейка. Когда проект на сотни файлов, то задолбаешься писать и где-то обязательно ошибёшься.
342 3329554
>>29530
Это ты про раст и лгбт? бггг))

>>29539
CMake через include_directory обходит дерево проекта и генерит соотв. make-файлы, для очень больших проектов, например, для огнелиса используется другой тул Ninja. Если нужна кастомизация мэйкфалов "извне", то так повелось, что их обычно генерят из шаблонов, либо тулы сами их выплёвывают.
343 3329567
>>29511

>все


Назови хотя бы 5
344 3329568
>>29554
И чем это ковыряние конфигов лучше, чем написать команду homo build?
345 3329572
>>29568
Х3, контроля больше, кастомизации больше. В растоговне же тоже можно скрипты ебануть на расте, которые будут при сборке запускаться.
346 3329576
>>29567
Make
CMake
Ninja
Bazel
Autotools
347 3329585
>>29539

> Там жесткие пути до файлов и надо каждый файл прописывать


С $(shell find и $(wildcard и прочим? Чел, ты хоть раз нормальный мейк видел?
348 3329600
>>29576

>Autotools, Make


Дед, привет
349 3329609
>>29600
Привет, пердеж.
>>29267
Отмотал нить в начало для тебя.
350 3329713
>>29585
дополню этого оратора
еще можно переменные окружения юзать и в разных шеллах запускаться
а еще можно запускать сторонние сценарии мейка
и вообще хуячить рекурсивно мультипоточную хуергу
мейк буквально полный по тьюрингу и может всё

я вот автотесты мейком запускал с линтерами перед ребилдом
и где то лежал мейк нью для автозапила дерева проекта
351 3329739
>>29585
Ни в одной книге не пишется, как писать такие макефайлы. Есть только игрушечные примеры. А подавляющие количество книг вообще обходит тему сборки проектов стороной. Тот же Прата ни слова про это не говорит вообще.
352 3329741
>>29739

>Тот же Прата ни слова про это не говорит вообще.



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



Извинись
353 3329743
>>29267
Ну какой мейк, ребят, у вас пробелы вместо таба поставить нельзя, и кроссплатформенность в жопе
354 3329744
>>29743

>пробелы вместо таба поставить нельзя, и кроссплатформенность в жопе


Теперь это питонотред?
355 3329861
>>29744
в мейкфайле управляющая строка начинается с имвола табуляции наверное он про это
и что и чиво? поставь таб да и все в чем проблема
356 3329947
>>29861
В душе не ебу. Мб под виндой мейк не смог написать/нагуглить.
Просто кому еще в голову придет написать про пробелЫ вместо табов?
357 3329962
Сап! Как выкачать либу с гита, так что бы можно было использовать так же как, если это было из своей же папки include/x/*.h?
358 3330004
>>29962
качаешь файлик.h
кладешь в папку
пишешь
#include "файлик.h"
профит???
359 3330019
>>30004
Классно, а если мне нужно скачать не просто файлик, а целый репозиторий с кучей подпапок? Как здесь github.com/tlsa/libcyaml
360 3330026
>>30019

>github.com/tlsa/libcyaml

image.png267 Кб, 1689x1234
361 3330055
>>30026
Я скачал репозиторий, разместил его в lib. Хэдер скопировал туда, где лежат мои собственные. Как мне это дело теперь прилинковать то?
362 3330084
>>30055
ударь себя ладошкой по лицу
363 3330119
>>30055
Бля, чел, 90% что оно скорее всего собирается стандартным make/make install, да и там же в ридми сто проц есть инструкция. На крайняк собираешь ручками и кидаешь либы в /usr/local/lib, а хедеры в /usr/local/include.
364 3330126
>>30119

>сто проц есть инструкция


Она там есть.

>оно скорее всего собирается стандартным make/make install


Там именно это и написано.

>>30055
Читай Прату.
365 3330208
>>30119
А был бы сборщик homo, то достаточно было бы написать homo build
366 3330230
>>30208

>достаточно написать homo build


>вместо make install


оптимизация уровня б
367 3330262
>>30126
Вот он Прата. make упоминается всего 1(!) раз. Где можно найти инфу про сборку с внешними зависимостями?
image.png21 Кб, 614x358
368 3330274
А как вообще с юникодом (UTF-8 например) в си работать? типо вместо char создавать строки wchar_t? и перед строками везде ставить L?
369 3330377
>>29429
Твой homoвелосипед уже несколько раз изобрели. На вскидку - xmake, meson, basel, ya.make, buck scons

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

Но похоже в твоём случае остается только читать Прату до просветления.
371 3330398
>>30274

> А как вообще с юникодом (UTF-8 например)


> типо вместо char создавать строки wchar_t?


Чтобы успешно работать с чем-то, надо сначала знать, что это такое.
372 3330461
>>30398
глупости
373 3330497
>>30398
Двачая. Я помню у дж спольского был прекрасный блог-пост про тупых кодерков и юникод, тут как раз этот случай.
374 3331958
Вроде хорошо объясняет, но я всё равно ничего не понял
https://www.youtube.com/watch?v=mrm39JmvJ1c
375 3332229
Почему в конструкции
k; someshit; main() {continue shitting}

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

2) Правильно ли, что ; напрочь забивает на свои подвязки с операторством, не отсекает нихуя и вся портянка до мейна считается его типом? Если да, то почему так, а не ошибка компиляции?
376 3332239
>>32229
А почему он должен давать ошибку? Ты не указываешь флаги, а компилятор С по умолчанию доверяет программисту. Видя такой код, он подразумевает, что его автор не долбоёб, а просто пишет на языке времён Ритчи-Кернигана, где для таких объявлений по дефолту подразумевался тип инт. То есть он скомпилил на ANSI C или C89 и создал две глобальные переменные типа int.
И вообще почитай, что такое ; в Си. Что такое сиквенс поинт и как устроен язык.
И компилируй свои поделия с флагами как минимум -Wall -Wextra -g -std=c11 (или другой стандарт, но явно указывай).
377 3332245
>>32239

>А почему он должен давать ошибку?


Я воспринимал всегда ; как конец оператора и то, что после неё, условно, начало следующего оператора. Ведь есть еще блоки с фигурными скобками
Тем более учитывая, что перед мейном могут быть как сами функции, так и их прототипы, помимо макросов.

>То есть он скомпилил на ANSI C или C89 и создал две глобальные переменные типа int.


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

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

>И компилируй свои поделия с флагами как минимум -Wall -Wextra -g -std=c11 (или другой стандарт, но явно указывай)


Записал. Свои поделия я пока пишу правильно и не хардкожу ничего, в т.ч. даже бегло еще не читал стандарты. Поэтому и был удивлен такому эффекту.
Обновить тред
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

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