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

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

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 596 93 134
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному /clang/ Аноним 27/05/23 Суб 12:16:50 2713428 1
image.png 102Кб, 792x1023
792x1023
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь https://ideone.com/ или 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 (драфт)
- man/Dash/zealdocs

Чем компилировать:

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

Что еще почитать:

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

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

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

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

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

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

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

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

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

Онлайн-утилиты:

- https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).
- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.
Прошлый: >>2599695
Аноним 27/05/23 Суб 12:33:10 2713435 2
Сделал кривой перекат, извините меня, пожалуйста :3
28/05/23 Вск 10:14:23 2714002 3
>>2713435
>Сделал кривой перекат
Переделывай перекат!!
Аноним 28/05/23 Вск 10:17:27 2714004 4
1.PNG 283Кб, 985x561
985x561
2.PNG 272Кб, 932x587
932x587
3.PNG 273Кб, 924x567
924x567
4.PNG 271Кб, 922x589
922x589
Сразу вопрос, точнее продолжение выяснения.

Пик-1:
Состояние регистров после проверки условия в switch, и перед началом расчёта адреса инструкции, на которую надо прыгнуть по условию, которое сформировано в switch.

Пик-2:
Состояние регистров после того инструкций (красными чёрточками показываю какие регистры изменились):

lea rdx, [rax*4]

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

lea rax, [rel 0x560c7280f078]

т.к. переменные у меня типа int, а в условии switch значение равное 11-ти, то в rdx записывается значение 44, типа указатель нужно будет увеличить на 44.

Пока всё ясно, типа, как подсказал мне гугол, что при компиляции gcc создаёт таблицу с адресами, в которые записываются условия из switch/case.

Пик-3 и Пик-4:
Мне вот этот момент непонятен: типа, мы взяли адрес начала таблицы (не знаю, наверное, это не точно, потому что я не допираю для чего мы используем значение и что это за значение, которое у нас в регистре rax на пике-1) 0x560c7280f078, прибавили к нему 44 и получили то, что в регистре rax. Т.е. у нас есть указатель, который указывает на начало таблицы, к нему мы прибавляем 44 и получаем другой адрес, из которого мы берём значение и заносим его в eax, потом мы знак этого значения расширяем до rax, после чего значение fffffffffffff3a1 прибавляем к адресу (как мне кажется начала таблицы) 0x560c7280f078, после чего получаем конечное значение, которое у нас в rax на пике-2, по которому и прыгаем.

Но нахуя мы прибавляем два разных значения к одному и тому же адресу, это, во-первых? Во-вторых, что значат тогда 44 и fffffffffffff3a1?
Аноним 29/05/23 Пнд 09:15:29 2714732 5
>>2714004
Это винда? Какой компилятор? Можешь показать код?
Аноним 29/05/23 Пнд 10:25:21 2714777 6
>>2714004
Значение в ах отрицательное.
Назуя тебе и нам листинг без адресов?
Смотри cc -OS -o - с метками и коментами от клопилятора.
Аноним 29/05/23 Пнд 11:30:53 2714871 7
spanishrofl.jpg 8Кб, 480x360
480x360
Аноним 29/05/23 Пнд 12:14:40 2714926 8
>>2714871
Как же у скриптомакаки печёт то!! Любо дорого это лицезреть! Очень много книг про фундаментальные алгоритмы, про криптографические алгоритмы, про низкоуровневое устройство компьютера, про кибербезопасность когда будут написаны на этих ваших растах и цыгах, вот тогда и приходите. А сейчас извольте в первую очередь изучать язык Си, чтобы не быть скриптомакакой, коей вы являетесь.
Аноним 29/05/23 Пнд 12:25:34 2714940 9
>>2714926
>Как же у скриптомакаки печёт то!!
Старпер, у тебя галюны после валидола начались?
>Любо дорого это лицезреть!
Пока лицезрел, пустил подливу.
>Очень много книг про фундаментальные алгоритмы, про криптографические алгоритмы, про низкоуровневое устройство компьютера, про кибербезопасность когда будут написаны на этих ваших растах и цыгах, вот тогда и приходите.
Делирий или маразм.
>А сейчас извольте в первую очередь изучать язык Си, чтобы не быть скриптомакакой, коей вы являетесь.
Мания величия оподливившегося маразматика.
Аноним 29/05/23 Пнд 12:30:53 2714947 10
>>2714926
Да не отвечай, у этого макакошиза очередное обострение. Он сюда залетает периодически.
Аноним 29/05/23 Пнд 12:32:53 2714949 11
>>2714947
Да, я знаю, анонче. Это я больше не для него ответил, а для "юнцов" этого треда, которые могут повестись на этот его дегенеративный скрипто-макакный байт.
Аноним 29/05/23 Пнд 12:40:26 2714955 12
>>2714947
О, одинэсник из соседского корпуса пришел на помощь своему собрату по Альцгемеру. Похвально.
>>2714949
Хуя самомнение у старпера, которому даже войд стары не помогают справится с утечками подливы.
Аноним 29/05/23 Пнд 13:02:03 2714991 13
>>2714955
>своему собрату по Альцгемеру.
Проиграл
мимо шел
Аноним 29/05/23 Пнд 13:49:22 2715046 14
>>2714871
Из-за чего такая разница в производительности между растом и це? С чем это связано? Я думал раст это просто безопасная надстройка над си. Ну и ещё не понятно, по какому признаку измеряется производительность.
Аноним 29/05/23 Пнд 15:09:10 2715184 15
>>2715046
А си это просто безопасная надстройка над ассемблером.
Аноним 29/05/23 Пнд 16:07:33 2715272 16
>>2715046
Забей!! Это уебанский тест!!! Тем больше упрошений (для человека), тем больше приготовлений нужно сделать компьютеру, т.е. тем больше машинных инструкций нужно выполнить, прежде чем дойти до самой программы.
Аноним 29/05/23 Пнд 16:18:30 2715289 17
>>2715272
На си пишут реально дементивные. Я сначала пошутил, но теперь как-то не по себе даже.
Аноним 29/05/23 Пнд 16:23:45 2715297 18
>>2715289
Что за шутки такие скрипто-макакные, которые нужно объяснять, и говорить, что это на самом деле шутки? Может, просто ты обдристался и тебя обоссали, и может больше так не надо делать в этом треде?
Аноним 29/05/23 Пнд 16:25:56 2715299 19
Аноним 29/05/23 Пнд 16:55:02 2715344 20
1.PNG 267Кб, 1796x442
1796x442
2.PNG 186Кб, 2150x522
2150x522
>>2714732
>Это винда? Какой компилятор? Можешь показать код?

Это убунту, компилятор gcc, код прикладываю:
https://pastebin.com/ENdcGLDy
Это я просто в отладчике edb дизассемблю и изучаю Си.

>>2714777
>Смотри cc -OS -o - с метками и коментами от клопилятора.

Можешь это разжевать, пожалуйста?
Прикладываю новые скрины с адресами. На пике 2 отчётливо видно, что мы прыгаем на адрес 00005653:bd280424, как раз тот адрес, что и указан в rax, только без двоеточия.
Аноним 29/05/23 Пнд 17:37:00 2715443 21
>>2715344
>дизассемблю и изучаю Си
странный способ. В книге у денисова узнал о нём?
Аноним 29/05/23 Пнд 17:56:49 2715497 22
>>2715443
Нет, в этом треде подсказали, ну не прям подсказали, а был спор насчёт того, что в итоге получится (i = i++ + i++, при изначальной i равной 5), и там чел задиассемблил и всем всё стало ясно и спор прекратился. А я в этот момент как раз пыжился над одной функцией, и всё никак не мог понять, как она робит. Поэтому я также задисассемблил её и мне всё стало ясно.
Поэтому я временами дизассемблю различный код на Си, когда непонятно, либо, когда (как в этот раз), просто интересно как оно работает на уровне машинных команд.
Аноним 29/05/23 Пнд 18:01:43 2715516 23
>>2715497
Звучит неплохо. Просто иногда компилятор такое может сгенерировать, что по итогу больше смуты введёт.
Аноним 29/05/23 Пнд 18:18:01 2715565 24
>>2715516
>иногда компилятор такое может сгенерировать
Хз, это явно не про этот случай. Я уже несколько раз пересобирал код, и дизассемблированный код ничем не отличается, только в тех местах, что я менял.
>Звучит неплохо.
Вообще, если заинтересуешься этим способом, то советую отладчик ddd, если ты на линуксе. В нём, под основным окном с сурсом Си, можно включить окно с машинными инструкциями, и видеть, при каждом шаге на Си, на какую инструкцию прыгает твоя программа. Т.е. ты можешь чётко видеть границы твоего кода в машинных инструкциях. Плюс ddd построен на gdb, поэтому можно ещё и навык пользования gdb прокачивать. Правда, в этом отладчике ебала с отображением инфы в регистрах, в памяти, в стеке, поэтому я первым делом "разграничиваю" код, а потом иду в edb (когда не хочу ебстись с командами gdb), чтобы присмотреться к нему более детально.
Аноним 29/05/23 Пнд 19:40:48 2715737 25
>>2715344
Мне кажется, что я допёр до того, что делает gcc со switch/case: сначала он присваивает каждой инструкции адрес, затем он создаёт таблицу куда заносит разницу между и самой инструкцией и началом таблицы, которая должна выполнится при условии в switch. Расстояние между ячейками в таблице равно 4 байтам. В этих ячейках располагается отрицательное значение, которое соответствует разнице между инструкцией, которая должна выполниться по условию, и началом таблицы. Начало таблицы с адресами всегда располагается после ф-ции main, поэтому и в ячейках таблицы располагаются отрицательные значения.
Т.е. мы сначала узнаём то, что у нас получается в условии (т.е. в моём случае месяц), далее мы полученный результат умножаем на четыре, прибавляем к указателю на начало таблицы, берём из нужной ячейки необходимую разницу, затем мы расширяем её знак до 8 байт и прибавляем к началу таблицы. Теперь понятно, почему мы два раза прибавляем разные значения к одному и тому же адресу.
Аноним 29/05/23 Пнд 19:45:25 2715745 26
>>2715737
*быстрофикс

Мне кажется, что я допёр до того, что делает gcc со switch/case: сначала он присваивает каждой инструкции адрес, затем он создаёт таблицу куда заносит разницу между самой инструкцией, которая должна выполниться при условии в switch, и началом таблицы. Расстояние между ячейками в таблице равно 4 байтам. В этих ячейках располагается отрицательное значение, которое соответствует разнице между инструкцией, которая должна выполниться по условию, и началом таблицы. Начало таблицы с адресами всегда располагается после ф-ции main, поэтому и в ячейках таблицы располагаются отрицательные значения.
Т.е. мы сначала узнаём то, что у нас получается в условии (т.е. в моём случае месяц), далее мы полученный результат умножаем на четыре, прибавляем к указателю на начало таблицы, берём из нужной ячейки необходимую разницу, затем мы расширяем её знак до 8 байт и прибавляем к началу таблицы. Теперь понятно, почему мы два раза прибавляем разные значения к одному и тому же адресу.
Аноним 29/05/23 Пнд 19:49:47 2715750 27
Сидел я в Стиме искал во что бы подрочить и увидел хентай, ну думаю можно и так. Зашёл на порнолаб посмотреть что там по играм и вижу игры десятилетней давности на QSP, скачал и тут как стало противно от этой деревянном и, меня то на скиллбоксе научили красиво кнопки двигать. Ну думаю ща переделаю все на жабаскрипт провославный, а эта поебень на вашем дедовским написана. Так вот как срать? Где программа начинается и где заканчивается, как найти то что является компилятором для этого поделия. Вот в жабаскрипте все просто в вебпаке так и написано ЕНТРИ ПОИНТ, а тут не понимать.
https://github.com/QSPFoundation/qsp
Аноним 29/05/23 Пнд 20:47:43 2715802 28
Сегодня в хедере случайно заметил глобальную переменную
struct foo {
...
} х_fieldname;
Это я пару лет назад вытянул определение из другой структуры, чтобы поднять читаемость. Сука. И главное, никто не может предупредить о таком. 100% легальный С.
Аноним 29/05/23 Пнд 21:54:16 2715847 29
>>2715750
Bindings/default/default_control.c
Строка 374 вроде, явный инит, в мейк тоже входит.

Хотя где Мэйн сам не ебу, с телефона смотрю.
Аноним 29/05/23 Пнд 22:50:32 2715872 30
>>2714871
>П - производительность.
Видос не смотрел, но вангую классику растоблядей.
>код на Си написан через очко
>код на расте вылезан и используется специальная структура данных под задачу
Аноним 30/05/23 Втр 07:58:52 2715986 31
>>2715750
Ты просишь без должного уважения к старшим! Без должного внимания к нам! От чего мы должны помогать тебе?
Аноним 30/05/23 Втр 12:26:04 2716228 32
s-dn-m-okroshki.gif 67Кб, 480x315
480x315
>>2715986
Прости деда, что давно не звонил, замотался совсем. Заеду летом к тебе, посидим, поговорим нормально, а сейчас помоги пожалуйста.
Аноним 30/05/23 Втр 13:48:19 2716322 33
Аноним 31/05/23 Срд 02:05:25 2716998 34
Мне необходимо узнать всё по теме списки и структуры в C. Где читать. Надо сухо, я уже все знаю, хочу лишь пробежаться по полному списку всех нюансов
Аноним 31/05/23 Срд 02:08:06 2717000 35
1303041779689.png 77Кб, 872x1140
872x1140
Господа, поясните че за нах
Передаю в функцию в качестве параметра указатель на структуру
struct sockaddr_un paddr
По ману эта структура объявлена как:
struct sockaddr_un {
sa_family_t sun_family; /
AF_UNIX /
char sun_path[108]; /
Pathname */
};
Далее я делаю дебаг принт:
printf("%s\n", paddr->sun_path[1]);
и получаю сегфолт
А если делаю так:
printf("%s\n", paddr->sun_path + 1);
то сегфолт не получаю. Почему так?
Мне нужно напечатать sun_path не с нулевого байта а с первого, т.к. юзаю unix domain socket abstract namespace , где 0-й байт всегда 0
Аноним 31/05/23 Срд 09:14:43 2717110 36
>>2717000
Я бы сначала в gdb посмотрел с точкой останова перед сегфолтом, че там у тебя происходит. Глянь, мб сразу понятно станет.
Аноним 31/05/23 Срд 09:19:26 2717111 37
>>2717000
> paddr->sun_path[1]
Какой тип?
> paddr->sun_path + 1
Какой тип?
> paddr->sun_path
Какой тип?
Аноним 31/05/23 Срд 09:25:28 2717113 38
>>2717000
paddr->sun_path - указатель на область памяти с 108-ю байтами.

paddr->sun_path[1] - ты передаешь конкретный ascii знак

paddr->sun_path + 1 - ты передаешь адресс смещенный на 1 байт вправо

Принтф ждет от тебя указатель на строку, ты ему передаешь знак, он пытается использовать полученное значение как адресс и естественно сегфолтит
Аноним 31/05/23 Срд 10:11:45 2717135 39
>>2717113
Я не он, но как тогда лучше поступить в таком случае, если необходимо принтить этот массив?
В цикле через putchar() нормально будет?
Аноним 31/05/23 Срд 15:55:49 2717527 40
Аноним 31/05/23 Срд 22:06:11 2718035 41
Как научить С, если они не понимают ни концепции типов, ни объяснения на уровне железки...
Аноним 31/05/23 Срд 22:44:26 2718055 42
>>2718035
функциональщиков - нахуй
Аноним 31/05/23 Срд 23:26:42 2718089 43
14742780234230.jpg 72Кб, 650x567
650x567
>>2717113
Благодарю, чет думал что "arr[1]" и "arr + 1" в С - это одно и тоже, типа сахар.
Аноним 01/06/23 Чтв 09:23:54 2718238 44
>>2717527
Почему адрес первого элемента берется, а не нулевого?
&paddr->sun_path[0] тогда уж должно быть?
Аноним 01/06/23 Чтв 09:40:26 2718243 45
>>2718238
Это для случая, когда с первого элемента выводить нужно. Если с нулевого, то ничего дополнительно указывать не требуется.
Тут >>2717113 всё расписано.
Аноним 01/06/23 Чтв 09:54:18 2718249 46
>>2718243
Понял. И ласт вопрос, а если я не уверен, что у меня там есть символ конца строки, то лучше в цикле выводить посимвольно?
Аноним 01/06/23 Чтв 09:59:41 2718253 47
>>2718249
Лучше в каком смысле?
Аноним 01/06/23 Чтв 10:01:41 2718254 48
>>2718253
Ну в смысле что printf или puts требует наличие символа конца строки ведь, а если его нету то он будет дальше принтить.
Аноним 01/06/23 Чтв 10:17:04 2718258 49
>>2718249
> если я не уверен
Тогда си не для тебя.

Можно плюхнуть \0 в конец массива перед выводом, но это так себе выход.
Аноним 01/06/23 Чтв 10:26:42 2718267 50
>>2718258
Понял. Бтв щас проверил, если создать массив из 8 элементов типа char и заполнить первую половину случайными символами, а вторую половину оставить как есть, то puts выведет только первую половину, хотя \0 я в ручную не добавлял. Пробовал два варианта, инициализировал через char mas[8]; и char mas = (char ) malloc(sizeof(char) * 8); а потом первым 4 элементам массива присваивал значение.
Печатает только то, что я присвоил почему-то.
Аноним 01/06/23 Чтв 10:28:03 2718269 51
>>2718267
Макаба съела два указателя, ну там и так вроде понятно где.
Аноним 01/06/23 Чтв 10:30:50 2718273 52
>>2718267
Глобальный массив инициализируется нулями по старту, с маллоком просто повезло, там может быть любой мусор.
Аноним 02/06/23 Птн 10:48:56 2719286 53
Анонсы помогите советом. Какую IDE лучше использовать под Linux?
Скачал я от JetBrains -> Clion, но эту херню уже не купить из РФ (или может какие не замороченные варианты приобрести лицензию?).
Единственным более менее нормальным вариантом под Linux я так понимаю остается VS Code?
Вывод я сделал исходя из популярности, хотя сам не особый поклонник VS..но куле делать.
Аноним 02/06/23 Птн 11:49:40 2719358 54
>>2719286
Eclipse или Qt глянь, мб понравится.
Аноним 02/06/23 Птн 12:30:25 2719404 55
Аноним 03/06/23 Суб 00:05:00 2720099 56
>>2719286
Все говно. Это буквально кусок винды на бесплатных костылях из жевачки гну. Выбор только между емаксом и вимом.
Аноним 04/06/23 Вск 18:22:51 2721366 57
Стоит ли обратить внимание на zig любителям сишки?
Аноним 04/06/23 Вск 18:44:03 2721389 58
>>2720099
В каком месте vscode кусок винды? Это просто хром браузер с расширенным апи
Аноним 05/06/23 Пнд 14:26:03 2722177 59
>>2721389
Штааа, писать код в браузере? Ахахаха!!
Аноним 05/06/23 Пнд 18:14:54 2722474 60
>>2722177
браузер и есть, электрон же
Аноним 05/06/23 Пнд 19:21:41 2722582 61
>>2722177
Штааа, писать код в интерпретаторе лиспа? Ахахаха!!
Аноним 05/06/23 Пнд 19:36:48 2722609 62
Аноним 05/06/23 Пнд 19:41:49 2722618 63
Аноним 05/06/23 Пнд 20:15:10 2722652 64
>>2722618
навалить плагинов и будет как иде
Аноним 05/06/23 Пнд 22:41:26 2722779 65
>>2722652
в иде это все из коробки
Аноним 06/06/23 Втр 06:04:02 2722852 66
>>2722779
ага, да. большинство фич "изкаропки" мне нах не сдались. кроме кодкомплетинга, древа файлов и консоли от иде никогда ничего не было нужно. для дебага использую valgrind и немного gdb.
все иде что я пробовал пиздец тормозные (даже с моими 20гб озу). плюс у каждого языка есть свои, а вим один
Аноним 06/06/23 Втр 08:51:09 2722909 67
>>2722852
Какие плагины посоветуешь накатить?
Аноним 06/06/23 Втр 10:43:33 2722967 68
>>2722582
> Штааа, писать код в интерпретаторе лиспа? Ахахаха!!
А тут-то что смешного? Ну разве что лучше в нем писать на лиспе.
Аноним 06/06/23 Втр 20:19:30 2723808 69
>>2722909
1. nerdtree
2. vim-lsp для clangd/ccls. ещё есть vim-lsp-settings, его не пробовал, он сам ставит и настраивает lsp сервера
Аноним 06/06/23 Втр 21:11:42 2723845 70
>>2722909
предлагаю тебе написать 2-3 без плагинов полностью. Почувствуешь себя человеком
Аноним 06/06/23 Втр 21:12:04 2723846 71
>>2723845
> написать 2-3
написать 2-3 программы*
быстрофикс
Аноним 06/06/23 Втр 21:48:41 2723881 72
Чем построить график со стеком вызовов с рекурсией (конечной) ?
cflow ругается на любую рекурсию
Аноним 06/06/23 Втр 22:10:53 2723905 73
>>2723808
Спасибо, анонче!

>>2723845
Та я и так без плагинов (единственный плагин, который юзаю это дубликат скобок, кавычек и апострофов) программы пишу в виме. Правда, они у меня пока не особо большие (100-200 строчек).
Аноним 11/06/23 Вск 15:43:52 2729360 74
>>2723905
Дед в треде. Пишу в виме много лет, никаких плагинов не пробовал. Я даже не могу заставить себя использовать метки для перемещения.
Аноним 12/06/23 Пнд 07:56:21 2730041 75
image.png 470Кб, 1059x655
1059x655
а почему у меня вместо решёток пасьянс этот?
Аноним 12/06/23 Пнд 15:59:12 2730347 76
>>2730041
Включи предупреждения от компиятора. Прочитай их.
Аноним 17/06/23 Суб 14:42:29 2736291 77
А вы знали, что enum может быть беззнаковым, и тогда 1 - TWO > 0.
Аноним 17/06/23 Суб 14:46:45 2736298 78
>>2736291
enum по умолчанию беззнаковый.
> 1 - TWO > 0
В стандарте не прописано переполнение, поэтому это UB.
Аноним 17/06/23 Суб 17:34:52 2736568 79
>>2736298
> В стандарте не прописано переполнение, поэтому это UB.
Переполнение беззнаковых четко определено. Сравнение интов происходит беззнаковое, если одна сторона беззнаковая.
Аноним 18/06/23 Вск 10:26:39 2737074 80
начал учить си, вообше не могу понять смысл констант.
Типа, если я в самом коде, не даю возможностей для изменения переменной при запуске программы, она ведь и так не изменится. Зачем тогда нужны константы?
Аноним 18/06/23 Вск 11:19:52 2737109 81
>>2737074
чтобы ты, например, случайно сам не очистил указатель на константную область памяти. Это больше для программиста
Аноним 18/06/23 Вск 13:30:21 2737201 82
>>2737074
Костыли компилятора для сокращения ошибок программиста, к самому исполняемому коду это не относится.
Вот взять например строковые литералы: "тут текст", это адрес на память только для чтения, если случайно туда напишешь, может быть ошибка нарушения доступа (access violation). Поэтому, при попытке присвоить простому (не константному) указателю строковый литерал, компилятор ругнется. Короче, защита от дурака, просто компилятор нянчится ругаясь на типовые ошибки, хотя это конечно может быть не ошибка, а сделано намеренно, но тогда уже сам себе хозяин.
Аноним 18/06/23 Вск 13:45:43 2737222 83
>>2737201
> к самому исполняемому коду это не относится.
Справедливости ради, глобальная константа (число пи) будет одна на всю программу, а копии литерала могут оказаться во многих объектниках и в бинаре, если компоновщик не дозуя умный.
Аноним 19/06/23 Пнд 04:17:58 2737851 84
>>2737222
Разговор был вроде про константы. Нет константной памяти куда нельзя писать, нет константных указателей по которым нельзя писать, таких вещей не существует. Память бывает защищена и выдаст ошибку при обращении, но само обращение всегда возможно, не бывает такого что нельзя.

Поэтому константы это лишь маркеры на уровне исходных текстов для программиста, к коду это не относится. Ошибка констант это не ошибка кода, а просто защита от неправильного (по мнению программиста поставившего маркер) использования кода. Это просто маркер для себя, как например закладки в тексте. Вот ты читаешь книжку и расставил закладки, но в книге, в рассказываемой истории которую ты читаешь закладок нет, это метаданные чисто для читателя, для удобства чтения только. Так же и константы, в коде их нет, это мета-костыли на уровне редактирования кода только.
Аноним 19/06/23 Пнд 09:59:31 2737924 85
>>2737074
Напиши коротенькую программу, в которой будут использованы переменная и константа, и задисассембли эту программу, и посмотри что происходит.
Аноним 19/06/23 Пнд 11:12:51 2737959 86
>>2737924
ничего не будет происходить, в том же си можно спокойно менять константный указатель, а это значит что в исходных текстах констант не существует
Аноним 19/06/23 Пнд 11:36:31 2737970 87
image.png 3Кб, 727x288
727x288
image.png 12Кб, 905x308
905x308
image.png 12Кб, 492x198
492x198
image.png 28Кб, 715x186
715x186
>>2737959
Да, анонче, ты прав! На уровне машинных команд конст ничем не отличается от обычной переменной (пик 2), только компилятор ругается, когда ты пытаешься записать в область памяти, которая выделена под конст (пик 4).
Аноним 19/06/23 Пнд 11:43:33 2737980 88
>>2737970
Братишка, а ты чего под рутом то сидишь?
Аноним 19/06/23 Пнд 11:49:31 2737988 89
Аноним 19/06/23 Пнд 12:01:02 2738010 90
>>2737980
>>2737988
Я просто заёбся каждый раз у себя же спрашивать разрешение (вписывая пароль). Это, когда есть чёткая система, то можно сидеть под своим пользователем, а когда ты изучаешь, исследуешь новые программы, новые техники, то ебля с правами демотивирует.
Аноним 19/06/23 Пнд 12:58:24 2738074 91
>>2738010
Отключи запрос пароля или поставь большой таймаут.
Это БЭД ПРАКТИС, ёпта.
Аноним 19/06/23 Пнд 13:38:06 2738128 92
>>2737851
> Нет константной памяти куда нельзя писать, нет константных указателей по которым нельзя писать, таких вещей не существует.
Молодой падаван, ты еще не видел МК и ДСП.
Аноним 19/06/23 Пнд 14:57:36 2738225 93
Привет, обьясните почему программа криво работает, я старался придумывал всё это а она так себя так ведёт!!!

https://ideone.com/8GEFZN
Аноним 20/06/23 Втр 02:20:17 2738987 94
>>2715872
>код на расте вылезан и используется специальная структура данных под задач
мне всегда казалось что обратное это ошибка на равне с высратым на свет творчеством питухониста
впрочем наверное просто нормально написать код на расте тут приводилось в качестве противовеса высратому на свет творчеству питухониста но на языке си
я обрыгал сам себя, спасибо мне, расходимся тут не на что смотреть
Аноним 20/06/23 Втр 02:33:40 2738990 95
>>2730041
полагаю как минимум твой Cell[][] это символ в который ты пытаешься запихать строку "#" а в строке 2 символа, тобишь это массив символов, наверное еще с новарнингами пишешь, а так бы компилер тебе сказал что ващет негоже так класть одно в другое
Аноним 20/06/23 Втр 02:40:25 2738991 96
Снимок экрана 2[...].png 214Кб, 1742x966
1742x966
а вот такой вопросик у меня есть

почему на 24 строке мне кидает варнинг и просит кастануть поинтер к моему типоразмеру (6 байт) если целевое поле структуры такого же типоразмера (6 байт)
ведь поинтерам без разницы какой тип данных в них пишется или читается, им важен типоразмер, сколько байт за раз мы читаем или пишем
так вот почему варнинг то?
не обращайте внимания, это учебная программка по структуркам для одной девочки, которая учит си
Аноним 20/06/23 Втр 09:34:06 2739062 97
>>2738074
Да, анонче, понимаю, что это нехорошо, но пока меня это не напрягает. Может ещё посоветуешь что-нибудь, что можно сделать, чтобы некоторые программы (например, ddd) работали бы нормально под обычным пользователем, а не только под рутом?
Аноним 20/06/23 Втр 09:38:05 2739066 98
>>2738991
Закинь код на пастебин, чтобы можно было бы его "пощупать".
Аноним 20/06/23 Втр 09:53:08 2739074 99
>>2739062
Через sudoers можно настраивать.
Аноним 20/06/23 Втр 10:03:07 2739076 100
>>2739074
Я запускал и с помощью sudo, и в файлу sudoers ковырялся, но всё равно что-то не получалось. Отладчик под моим пользователем как-то криво работает, а под рутом всё норм. И так, кста, не только с ddd. Мб, я криворуко всё это настраиваю.
Аноним 20/06/23 Втр 11:39:00 2739146 101
А можно ли как то насильно запустить компилятор и исполнить код, если я где то пропустил точку запятую или что то вроде?
Аноним 20/06/23 Втр 11:47:29 2739153 102
>>2739146
На уровне компилятора -- нет, в лучшем случае есть костыли, которые детектируют опечатки и всякие очевидные ошибки вроде = вместо ==, но они обычно работают в виде подсказок и за тебя текст не редактируют. Может можно сделать их более агрессивными, типа чтобы они при сохранении файла исправляли, есть же форматтеры, которые при сохранении файла запускаются. Но это все равно хуевая практика, лучше поставить линтер и смотреть что он пишет перед запуском кода. В IDE линтер по дефолту должен быть включен.
Аноним 20/06/23 Втр 11:49:02 2739155 103
Аноны, задачка на подумать:

https://pastebin.com/Mtq0mwhb

Этот цикл остановится на 4-м шаге (когда u и v будут указывать на 4), но почему, после завершения цикла, u и v будут указывать на следующие (за 4-кой) элементы массива?
Аноним 20/06/23 Втр 12:30:52 2739217 104
>>2739155
Че там думать, постфиксные операторы сначала выдают значения, потом отрабатывают.
Аноним 20/06/23 Втр 12:34:36 2739222 105
>>2739217
Ну да, логично, но это же не объясняет почему так происходит?
Аноним 20/06/23 Втр 12:43:56 2739236 106
>>2739222
Вайл получает фолс, операторы отрабатывают, что не так-то?
Аноним 20/06/23 Втр 12:44:54 2739239 107
>>2738225
Люди памагите прошол целый день, а программа до сих пор сама себя не исправила капец!
Аноним 20/06/23 Втр 12:47:24 2739248 108
>>2739236
Так, если вайл получил фолс, тогда как могут операторы отработать? Вайл получил фолс, т.е. цикл закончился, значит ВСЁ!, идём дальше.
Аноним 20/06/23 Втр 12:48:21 2739250 109
>>2739239
Кидай код в пастебине.
Аноним 20/06/23 Втр 12:49:16 2739251 110
>>2739248
Операторы не в теле цикла, а в проверке условия, они в любом случае отработают, потому что выражение исполняется для проверки.
Аноним 20/06/23 Втр 13:01:05 2739266 111
image.png 31Кб, 646x153
646x153
>>2739251
Ладно, не буду вас мучать! Операторы первым делом берут адрес следующего значения lea rdx, [rax+4] и записывают его по адресу, где хранится указатель, а только после этого сравнивают текущие значения, после чего, если они не равны прыгают в начало цикла. Поэтому и получается, что на выходе из цикла мы имеем указатели, увеличенные на единицу.
Аноним 20/06/23 Втр 13:02:25 2739269 112
Аноним 20/06/23 Втр 13:03:32 2739272 113
>>2739266
Для этого не нужно было дебажить, лол.
Аноним 20/06/23 Втр 13:05:17 2739274 114
>>2739272
Хах, лучше же, когда всё видно наглядно.
Аноним 20/06/23 Втр 13:10:44 2739279 115
>>2739274
А если просто числа, то сначала отдаст, а потом инкрементнет?
Аноним 20/06/23 Втр 13:12:09 2739281 116
>>2739279
Где и какие числа? Распиши подробнее вопрос, я часика через два освобожусь и тебе отвечу.
Аноним 20/06/23 Втр 15:22:57 2739429 117
Аноним 20/06/23 Втр 15:25:45 2739431 118
>>2739279
мимопрохожу

постфиксные операторы сначала отдают значение а потом вычисляют инкремент
таим образом
int i = 0;
printf("%d\n",i++); //напринтил бы 0 а после принта i = 1
printf("%d\n",++i); //напринтил бы 2 а после принта i = 2
Аноним 20/06/23 Втр 15:47:02 2739453 119
>>2739066
только ради тебя анончик залил
https://pastebin.com/YFK15VQW

а вообще мне кажется я сам догадался в чем варнинг
в поле структуры висит массив, а по механике у массива то же есть поинтер типоразмером в одну ячейку (1 байт это же чары) и крч он волнуется что типоразмер ячейки массива не совпадает с типоразмером поинтера который смотрит на массив
Аноним 20/06/23 Втр 16:00:02 2739468 120
Снимок экрана 2[...].png 10Кб, 574x50
574x50
>>2739239
я тут кое что увидел в твоей программе
для ii по фору не задано условие брейка (не уверен может специально)

а вообще чо так сложно написано то?
куча библиотек
размер массива стрленом вычисляется

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

например вместо стрлен что нибудь такое sizeof(word)/sizeof(char) но делить на сайзоф чар не обязательно, размер чара 1 байт

какой нить сканф заместо гетча
все, ладно не бубню
Аноним 20/06/23 Втр 16:04:17 2739473 121
>>2739431
Речь о машкоде после коньпеляции. Сначала апдейтит указатель, а потом уже берёт текущее значение.
Аноним 20/06/23 Втр 16:13:33 2739478 122
>>2739473
ты всегда можешь делать асмавставки для мануального управления, если тебе не нравится как работают эти операторы
просто напоминаю

>>2739239
еще хотел сказать пару слов
в книге Крнигана и Ритчи как раз есть галава где обсасываются строчные лагоритмы над массивами чаров, ну там апперкейсы ловеркейсы и все такое и как они устроены на каких принципах
так вот довольно легко понять что внутри чаров или интов или других переменных лежат только нолики и единички, по сути как ты эти нолики и единички представляешь зависит только от тебя, можешь работать с символами как с числами напрямую
например
char c = 'a';
c = c + 20;
printf("%c -> %d\n",c,c); // выводим с как символ и с как число
Аноним 20/06/23 Втр 16:14:40 2739481 123
>>2739468
Ой, брейк надо было после фигурной скобки иф
Аноним 20/06/23 Втр 18:53:36 2739659 124
image.png 50Кб, 604x246
604x246
image.png 11Кб, 385x201
385x201
>>2739473
Анон, в корне ничего не меняется, только в регистры, которые в последствии сравниваются помещаются не указатели, а числа. Но суть остаётся той же:
мы сначала в edx помещаем текущее значение (для а) mov edx, [rbp-8], затем помещаем в rax значение а увеличенное на единицу (при этом значение в edx остаётся текущим, т.е. 0) lea rax, [rdx+1], после чего мы увеличенное не единицу значение заносим в область памяти, которая выделена под а mov [rbp-8], eax. Затем тоже самое, только с уменьшением на единицу, происходит с пtременной b , только её текущее значение заносится eax. Ну и после всех манипуляций идёт сравнение текущих значений a(edx) и b(eax) cmp edx, eax, и если не равны, то прыгаем в начало цикла.
Аноним 20/06/23 Втр 19:03:28 2739675 125
image.png 43Кб, 752x239
752x239
>>2739453
А что за компиллятор? У меня gcc без проблем всё сожрал.
Аноним 20/06/23 Втр 19:11:13 2739686 126
>>2739675
не, понятно что сожрал, ведь код запощен без ошибок и со всеми явными кастами, в нем нет ворнингов
но если убрать каст к типу поинтера в 24 строке будут варнинги, я про это писал
компилер не знаю какой в икскоде, гцц наверн то же с99 стандартом копилит с11 нет в икскоде ну в моем нету
Аноним 20/06/23 Втр 19:24:22 2739700 127
>>2739686
Ткни меня сейчас в какой строке у тебя ворнинги были, а то 24-я строка на пастебине у тебя сейчас пустая.
Аноним 20/06/23 Втр 19:31:07 2739713 128
>>2739700
а, да, извини, там же в начале студия еще комменты печатает несколько строк

на пастебине это 17 строчка
объявление поинтера и его инициализация адресом поля
Аноним 20/06/23 Втр 19:33:04 2739716 129
>>2739713
Ага, понял! Завтра поковыряюсь, сейчас как раз struct изучаю.
Аноним 21/06/23 Срд 00:02:04 2739979 130
А муществуют вообще графические библиотеки под сишечку?
Аноним 21/06/23 Срд 01:03:34 2740018 131
>>2739979
OpenGL жешь
а для рисования нативных окошечек и оконных приложунек windows.h
еще когда то давно я писал на Qt, но я бы не назвал это графической библиотекой, скорее это обертка над плюсами для упрощения всякой кастующейся фигни по типу обработки событий по дескриптору

а вообще философия си как бы намекает - сделай сам себе тот же транслятор CSS или Lua или MD или любого другого самописного скриптового языка при помощи которого ты опишешь графику в окне консоли или в окне виндов мэнеджера

в защиту такого способа я бы хотел напомнить что все 3 набора библиотек под жабку абсолютно нерелевантны до тошноты
Аноним 21/06/23 Срд 03:46:30 2740031 132
вообще, если заводить разговор о рисовании графики будь то псевдографика в консоли, или полноценный рассчет лучей с аппаратным ускорением - во всех вариантах фундаментом построения будут всего две вещи: умение рисовать точку и умение рисовать линию.
если с точкой все предельно понятно, то вот с линией не все так однозначно

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

но так или иначе написать тот же рейтрейсинг в псевдографике это задача того же уровня как и написать рейтрейсинг в полноценной игре, все рассчеты абсолютно такие же до момента вывода на "экран", разница начинается как раз в слое обработки при выводе на то или иное устройство вывода
Аноним 21/06/23 Срд 08:15:44 2740113 133
>>2739481
а нет, фигню сморозил
Аноним 21/06/23 Срд 08:17:22 2740116 134
>>2739468
> размер массива стрленом вычисляется

а почему стрленом нельзя?
Аноним 21/06/23 Срд 08:27:18 2740123 135
image.png 102Кб, 1659x865
1659x865
а почему заменяются буквы в слове Word, если условие if не выполняется ни для одного элемента массива? по идее он же должен был вернуть то же самое, что я и ввёл, без шифровки
Аноним 21/06/23 Срд 09:20:34 2740148 136
>>2740123
А ты задебажь и посмотри в чём дело. По шагам пройдись и тогда станет ясно.
Аноним 21/06/23 Срд 09:45:04 2740163 137
>>2740123
>WORDSIZE - 1
Шифр Цезаря?

Как по мне, дело в регистре букв. Ты задал для сравнения только большие буквы, а запрос написан маленькими
Аноним 21/06/23 Срд 10:01:25 2740174 138
image.png 162Кб, 500x500
500x500
>>2715289
>На си пишут реально дементивные
А как дело обстоит у скриптомакак при прямом обращении к ПАМЯТИ?
Аноним 21/06/23 Срд 10:03:30 2740176 139
>>2740174
Тише, ты чего?? Эта скрипто-макака только угомонилась, зачем ты её опять ворошишь?
Аноним 21/06/23 Срд 10:14:43 2740179 140
>>2740163
Ну, получается что ни одна буква не совпадет, значит ни одна буква не должна сместится
Аноним 21/06/23 Срд 10:34:45 2740198 141
image.png 89Кб, 1920x1080
1920x1080
>>2740179
Неа. Это особенность компилятора новарнинги короче. К примеру, если ты создашь массив, и выведешь его в неправильном диапазоне, он будет выдавать случайные символы юникода в произвольных местах
Аноним 21/06/23 Срд 11:14:00 2740244 142
image.png 40Кб, 786x202
786x202
image.png 11Кб, 425x189
425x189
>>2739473
Кстати, анон, если интересно, то вот так выглядит условие с префиксными инкрементом/декрементом. Отличие в том, что переменные увеличиваются/уменьшаются и полученные значения сравниваются, т.е., если с постфиксными инкрементом/декрементом сначала идёт запись текущего значения в регистр, после чего увеличенное/уменьшенное текущее значение записывается в область памяти переменной, и уже после этого происходит сравнение текущих значений, то в условиях с префиксными выражениями происходит сравнение сразу увеличенных/уменьшенных значений.
Аноним 21/06/23 Срд 17:07:51 2740686 143
Снимок экрана 2[...].png 54Кб, 1134x98
1134x98
>>2740123
объясните мне кто нибудь почему массив на пике проинициализирован вот так?
почему 'Z', } что это за пустое пространство после символа Z? это компилируется как '\0' ? наверное нихуя ведь нужно явно фигануть туда 0 или \0 как символ

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

Alphabet[] = "XYZ";

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

char* Alphabet = "XYZ";

просто держать в голове что у строки в конце допсимвол '\0' вотличие от натурального массива символов

дальнейшая работа с этим ничем не отличается, точно так же в Alphabet[0] будет лежать 'X' если вытаскивать в виде символа

но я не понимаю что за пустое пространство после Z что это означает?
Аноним 21/06/23 Срд 20:16:11 2740880 144
>>2740686
Посмотри в дебагере
Аноним 21/06/23 Срд 22:00:38 2740991 145
Аноним 22/06/23 Чтв 01:18:57 2741064 146
Анончики, здравствуйте.

Я очень тупой человек.

Как выводится 10-чное представление числа из памяти ЭВМ? Там же все представлено в 2-чном коде.

Условно, у нас есть 20байтовое число в памяти , как компьютер выведет его 10чное представление?
Аноним 22/06/23 Чтв 01:20:09 2741065 147
>>2741064
В десятичной системе счисления
Аноним 22/06/23 Чтв 01:32:50 2741066 148
>>2741064
И ещё вопрос, когда мы вводим число с консоли это же просто на просто текст условно:

int a;
scanf("%d", &a);

А как он переводит это значение в двоичное для хранения в памяти ЭВМ?
Аноним 22/06/23 Чтв 01:39:34 2741067 149
>>2741064
20ти байтовое целое можно пушнуть в канал вывода при помощи поинтера с шириной шага 20 байт, в стандарте таких длинных типов нет поэтому что то навроде такого будет

typedef struct {
_Bool b[20];
} pointer;

pointer p = &a;

printf("%lld\n",
p);

но я не уверен, %ll умеет в вывод long long'a но не в 20битное целое, а тот же puts пушит только строки, а у тебя в задаче число

интересная задачка на самом деле, пойду поломаю голову как на экран вывести число, с хранением и записью/чтением чисел так то проблем нет особых
Аноним 22/06/23 Чтв 01:41:50 2741068 150
>>2741067
То что ты написал выведет только 10-чное представление первых 8 байт этого 20 байтного числа
Аноним 22/06/23 Чтв 01:41:51 2741069 151
>>2741067
разметка макабы сожрала звездочки
Аноним 22/06/23 Чтв 01:43:40 2741070 152
>>2741068
я и говорю что %ll только в лонги умеет, я же это написал
ты вот лучше скажи какой спецификатор умеет в 20байтный формат
Аноним 22/06/23 Чтв 01:46:12 2741071 153
>>2741070
Нет такого, насколько знаю, слышал только, что некоторые компиляторы могут в 128битные числа, но это не 20байтовое все ещё, есть либы для работы с очень большими числами, так называемая длинная арифметика, на этом мои знания заканчиваются
Аноним 22/06/23 Чтв 01:59:32 2741073 154
>>2741071
крч я думаю на регистрах просто не хватит памяти чтобы вычислить 20ти байтное целое так что все равно надо костылить и проще всего наверное накостылить через строки раз уж вопрос с выводом на экран всяких там гиперчисел песчинок на пляже омаха
Аноним 22/06/23 Чтв 09:20:47 2741173 155
>>2741073
Нужен цикл, в котором через арифметику указателей мы берём единицы и нули из памяти 20-ти байтного числа и складываем их в переменную. Каждые 8 шагов (через байт) приводим эту переменную к десятичному виду и это число выводим. Только из-за литтлиндиана цикл надо начинать с конца.
Аноним 22/06/23 Чтв 10:13:56 2741214 156
>>2741173
Проще, конечно, использовать особенно принтфа, которая позволяет вывести 10 байт, т.е. в переменную загоняем арифметикой указателей 10 байт, приводим к десятичному виду, и после выводим.
Аноним 22/06/23 Чтв 10:14:36 2741215 157
>>2741214
*особенность принтфа

быстрофикс
Аноним 22/06/23 Чтв 10:29:59 2741222 158
image.png 24Кб, 942x784
942x784
image.png 23Кб, 931x775
931x775
image.png 23Кб, 1014x787
1014x787
>>2740686
Вот, анон, он на пустое место после Z никак не обращает внимание.
Аноним 22/06/23 Чтв 10:35:34 2741225 159
>>2740686
>>2741222
Такая хуйня есть в многих языках и она ничего не означает. Сделано для удобства перемещения строчек, добавления новых и т.п.
Аноним 22/06/23 Чтв 13:07:21 2741336 160
Аноним 22/06/23 Чтв 13:32:05 2741357 161
>>2741173
Мужик, а ты сколько программируешь вообще ? У тебя курс информатики в школе был или ты троллишь так охуенно? Просто с твоих постов жир течёт пиздец как, ты либо не очень шаришь за математику, либо охуенный тролль, а таких тут не надо, все таки жизнь новичкам портить не надо, а то некоторые на арифметике указателей Си бросают
Аноним 22/06/23 Чтв 13:59:42 2741394 162
>>2741357
Не, ну критикуешь - предлагай.
Аноним 22/06/23 Чтв 14:21:49 2741413 163
>>2741222
благодарствую, а то чуть кровь из глаз не пошла
уже собирался дух Ритчи пробуждать и насылать проклятия на жопу
Аноним 22/06/23 Чтв 14:36:48 2741425 164
Ребят, здравствуйте

Не хочу ебать свой ССД, но требуется загрузить файлы с телеграмма на гугл диск, можно ли это сделать путём выгрузки файла в оперативную память, а позже загрузить ее из оперативной памяти на гугл диск? Файлы размером в пределах 1,5Гб
Аноним 22/06/23 Чтв 14:44:17 2741430 165
>>2741173
Я не буду предлагать, но ты реально думаешь что у нас число, ты его засунул в buf и если по 8 байт и вывести, то получится 10 представление это 20байтового числа?

char buf[20];
void × start = buf;
for (int i = 0; i < 3; i++, start = (char ×)start + 8)
printf("%llu", (int64_t× )start);

Ты либо программирование бросай, либо матан учи
Аноним 22/06/23 Чтв 15:05:11 2741454 166
>>2741430
у тебя ашипка
%llu распечатает байтпоследовательность как ансигнеды а число ты засунул в сигнеды чаров ну и про 8 байт из 20ти мы уже тут обсуждали

мимодругой анон
Аноним 22/06/23 Чтв 15:08:58 2741459 167
>>2741430
Да, да, я понял, что у нас разрядность нарушается.
Аноним 22/06/23 Чтв 15:14:53 2741465 168
вообще вот касательно 20байтовой задачи я думаю а вот плюсы не могут пушнуть в канал вывода такую байтпоследовательность?
ну типа cout << xp; ???
прост если могут то почему бы не покопать как cout реализован в плюсах и не переложить на си рельсы
Аноним 22/06/23 Чтв 16:26:30 2741523 169
Аноним 22/06/23 Чтв 16:39:31 2741543 170
Аноним 22/06/23 Чтв 16:40:32 2741546 171
>>2741430
>матан учи
А матан тут к чему? в математике что ли проходят как числа представлены в памяти?
Аноним 22/06/23 Чтв 16:51:33 2741561 172
>>2741546
не ну с матаном он канеш перегнул слегка
преобразованиями форм счислений занимается арифметика
Аноним 22/06/23 Чтв 18:42:53 2741719 173
image.png 33Кб, 1333x441
1333x441
четвёртый символ это enter? типа переменная Word сохранилась здесь как ааа+ентер+конец строки?
Аноним 22/06/23 Чтв 18:57:50 2741739 174
>>2741719
не, последний символ это '\0' символ конца строки
обработка строк на этом принципе и основана
ты пихаешь в функцию адрес начала строки и функция без определения размера уже знает что в конце строки будет символ \0 и читать надо до него
например puts(conts char x) так работает да и спецификатор %s притэфа так же обрабатывается

в других вариантах переброса массивов в функцию ты вынужден передавать размер массива, функция изнутри не знает насколько большой твой массив, но только не со строками
Аноним 22/06/23 Чтв 18:59:53 2741744 175
>>2741739
но в определении стрлен написано что конец строки не читается
Аноним 22/06/23 Чтв 19:05:09 2741764 176
>>2741744
принтани sizeof(Text)
а еще можешь принтануть числовой вариант каждого символа и сравнить с табличкой ASCII юникодов чтобы понять чо там в строку запихалось
Аноним 22/06/23 Чтв 19:17:38 2741796 177
image.png 65Кб, 1254x527
1254x527
image.png 9Кб, 920x120
920x120
image.png 10Кб, 1052x139
1052x139
Аноним 22/06/23 Чтв 19:20:26 2741802 178
получается ентер и записался
Аноним 22/06/23 Чтв 19:21:38 2741805 179
>>2741796
окей это ентер, ты оказался прав, мои поздравления
а еще поздравляю тебя, ты только что научился делать юнит тесты и можешь не постить каждый вопрос сюда а провести тестирование самомстоятельно
Аноним 22/06/23 Чтв 19:23:42 2741809 180
Аноним 22/06/23 Чтв 20:43:10 2741910 181
>>2713428 (OP)
Сап программач, хочу поделиться болью. Я очень много пишу на сишке, ну и я вообще люблю низкоуровщену и поэтому на ней зарабатываю: bare metal, Linux kernel modules и прочее. На работе до определенного времени спокойно писал bare metal на сишке, потом коллектив выступил за переход на плюсы, но со стилем написания исходников «си с классами» — против этого я не выступал потому что не видел в этом смертельного. Замечу только то, что у нас нет практики постоянного code review, потому что у нас небольшой коллектив и просто нет ресурсов на регулярной основе такое делать. Когда мы использовали плюсы в си-стиле стало чуть чуть удобнее, как минимум, объекты собирали методы в свою сущность. Но недавно начался полный пиздец, потому что человек, который имеет большое влияние на коллектив предложил перейти на самые последние плюсы (темплейты, концепты, хорошо я отговорил от std::string и std::vector). Архитектура полностью пошла по пизде, темплейты теперь везде нахуй, в некоторых местах архитектура была поменяна только для того чтобы «так удобнее написать на темплейтах», интерфейс тоже стал ужасным, а сейчас я сижу на созвоне и слушаю как челы спорят о том, как лучше написать концепт. И мне было бы похуй, если мне давали делать мои низкоуровневые вещи (на уровне регистров), но нет, реализовывай наши криво написанные концепты (некоторые концепты написаны только ради того чтобы концепт был). Говоришь им что написанные концепты говно и это перетекает в 2-3х часовой созвон с обсуждением как правильно написать концепт. На вопрос: «как концепты и темплейты помогут мне реализовывать низкоуровневые интерфейсы (uart, spi и прочее)» — но кроме: «ну можно будет статически проверить некоторые куски кода» — я ничего не слышал. За то время, что я убил на все это дело, я бы покрыл все тестами, написал эмулятор и крутил бы систему днями и ночами на x86. В общем просто хотел высказать.
Аноним 22/06/23 Чтв 21:13:24 2741934 182
>>2741910
разве темплейты это не старый добрый си?
и разве объекты с методами это не старый добрый си?

typedef struct {
char x phrase;
void (xmessage) (void);
} className;

void sendMessage(void){
puts("idite nahuy dolboebi");
}

className Obj;
Obj.message = sendMessage;

int main(void){
Obj.message();
}
Аноним 22/06/23 Чтв 21:50:56 2741974 183
>>2741934
Да, классы то же самое, только методы находятся в пространстве имен класса, а твоя функция sendMessage попадёт в область видимости текущего файла. А темплейты (именно статический полеморфизм) нереализуемы на чистом си
Аноним 22/06/23 Чтв 22:01:03 2741991 184
>>2741974
а... ну хотите полиморфизм тогда страдайте чо я могу сказать
ооп паттерны вот это вот все говно с фабриками и вечным дебагом корявой наследственности жопы из говна а не говна из жопы, это же лучше чем pure c в котором ничо нельзя реализовать нахуй его вообще придумали говно какоето лол для дементивных как тут скриптомакака пишет
Аноним 22/06/23 Чтв 22:37:56 2742016 185
>>2741991
А что вы имели под темплейтами, если не полиморфизм? Еще темплейты удобны для задания параметров класса, которые не будут меняться в рантайме, например, буфер определить длину кэшурующего буфера для юарта: uart_class<256> foo(...);
Аноним 22/06/23 Чтв 22:43:21 2742020 186
>>2742016
я имел ввиду фразу "тыскозал?"
Аноним 23/06/23 Птн 00:04:29 2742087 187
>>2713428 (OP)
Управлению памятью только в итт япах можно научиться?
Аноним 23/06/23 Птн 09:51:55 2742348 188
>>2742087
Тебе лучше в асм-тред сходить, и вообще почитать/покодить на асме, если хочешь понять что такое память, как устроена память, как управлять памятью.
Аноним 23/06/23 Птн 10:00:01 2742356 189
Раз речь зашла о памяти, то задам ньюфажный вопрос.
Вот работал я с памятью только на уровне malloc(), calloc(), read() или write(), не превышая килобайта используемой памяти ща раз. А как с ней работают в больших приложениях, которые жрут по несколько гигов, типо всяких игровых движков и прочего?
Аноним 23/06/23 Птн 11:19:34 2742429 190
>>2742356
>А как с ней работают в больших приложениях, которые жрут по несколько гигов, типо всяких игровых движков и прочего?
А никак. Индусы просто засирают память, пока не придумают чипы мощнее.
Аноним 25/06/23 Вск 13:37:17 2743974 191
>>2742348
> sub esp, 10000000 ; doljno xvatit
Аноним 25/06/23 Вск 13:45:45 2743980 192
>>2742356
Пишут полезные обертки
- пул, из которого выделяют разные объекты для уровня, а потом целиком его уничтожают (защита от утечек)
- стек (вариант предыдущего)
- пул для объектов одного размера (скорость+экономия памяти)
Аноним 25/06/23 Вск 17:05:07 2744190 193
>>2743980
пул это бассейн, чо несешь то, поехавший
Аноним 25/06/23 Вск 19:16:04 2744258 194
Привет, а как выводить по 1 точке каждую секунду?
Аноним 25/06/23 Вск 19:52:02 2744288 195
>>2744258
функция sleep() в гугле
Аноним 25/06/23 Вск 20:25:06 2744313 196
>>2744288
Спасибо, еще вопрос: как напечатать символы массива, что бы один из них был большего размера чем остальные? Типа маленькие точки а потом огроменная
Аноним 25/06/23 Вск 20:37:51 2744320 197
image.png 323Кб, 500x500
500x500
>>2744313
а ты посмотри в таблице символов под каким номером твоя огроменная точка
Аноним 26/06/23 Пнд 00:09:00 2744408 198
>>2744313
блондинка залетела в кодинг?
Аноним 26/06/23 Пнд 00:14:26 2744409 199
>>2744313
Сменяй регистр точки.
Аноним 26/06/23 Пнд 00:27:57 2744413 200
аноны
может вопрос нубский будет, я просто никогда еще не писал с поддержкой вычислений на гпу, но вот хочу спросить
если я объявляю registered float несколько штук, то на регистрах какого чипа они будут сидеть? на цпу или на гпу? и есть ли механизм как ручками выбрать нужные ргистры если допустим я хочу просчитать флоаты именно на гпу чипе?
Аноним 26/06/23 Пнд 01:30:09 2744420 201
>>2713428 (OP)
Сап
Аноны, я тут придумал очередной сюжет игры и друг мне предлагает закодить её на Си. Есть ли годные библиотеки которые бы позволили это делать быстро и легко?
Я одно время пытался сделать игру на жс и знатно поел говна. В итоге забил. Потом ещё был небольшой опыт на джаве, там чуть лучше даже намного лучше, но тоже пришлось как следует поебаться с библиотекой и её установкой.
Короче стоит ли браться за Си? Из целей вкатиться в этот замечательный перспективный язык и сделать хоть простенькую игру.
Аноним 26/06/23 Пнд 01:33:33 2744422 202
>>2744420
О нет, только не си для игры, это не стоит того, честно
Аноним 26/06/23 Пнд 01:42:54 2744425 203
>>2744420
ебашь хоть на ассемблере всем поебать
можете еще рассмотреть такие варианты
игра на фортране
игра на паскале
игра на делфи
игра на окэмле
игра на руби

в любом случае язык лишь инструмент достижения целей, а си хорош тем, что для него нет нерешаемых задач
Аноним 26/06/23 Пнд 01:56:49 2744429 204
>>2744422
а в чем причина такой нелюбви к си?

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

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

но почему в играх не использовать си? там то как раз нужны сверхбыстрые вычисления в первую очередь, а переносимость уже вторична
Аноним 26/06/23 Пнд 07:45:56 2744454 205
>>2744409
Как сменить регистр?
Типа такой еще момент. Надо что бы размер символов менялся после вывода
Аноним 26/06/23 Пнд 10:00:02 2744502 206
>>2744420
>сделать хоть простенькую игру
Ну это ты можешь сделать на Си, а что-то более красивое и сложное лучше кодить на плюсах из-за большого кол-ва библиотек под игры на плюсах.
>в этот замечательный перспективный язык
Чел, ты должен понять, что Си это отвратительный язык, единственный плюс которого это zero runtime. Всё остальное, что пишут, особенно всё, что связано со стандартами выше С89, это ебантизм, потому что есть более удобные высокоуровневые языки программирования, с которыми пытаются конкурировать стандарты С99 и выше.
Поэтому, если ты не собираешься писать высокопроизводительные программы (всё что связано с драйверами, ядром ОСи, пизданутые числодробилки, где две альтернативы - Си со стандартом не выше С89 или ассемблер), то в Си можешь не вкатываться, либо ты можешь полгода-год потратить на ассемблер и Си (именно в таком порядке), чтобы лучше узнать то, как устроен компьютер. Этих знаний тебе будет более чем достаточно, чтобы освоить любой ЯП. Всё остальное, что будет иметь противоположную точку зрения от той, что я тебе привёл, что тебе будут писать местные петухи это от лукавого.
Аноним 26/06/23 Пнд 10:05:02 2744504 207
>>2744454
Чел, ты серьёзно? Регистр точки хочешь сменять, типа переводить точку в нижний и в верхний регистр? Короче, мой тебе совет это пойти загуглить, разобраться самому как напечатать "огроменную" точку, а потом прийти сюда и объяснить нам это.
Аноним 26/06/23 Пнд 11:34:49 2744639 208
>>2744504
Я не нашол нигде, почему то нигде нет понятных и однозначных обьяснений.
Аноним 26/06/23 Пнд 11:48:01 2744654 209
>>2744639
>>2744313
>как напечатать символы массива, что бы один из них был большего размера чем остальные? Типа маленькие точки а потом огроменная
Давай, чтобы тебя не продолжали троллить сразу отвечу.
Увеличить размер шрифта только одного символа из всей строки ты не сможешь, потому что такой функции в терминале нет. Размер шрифта меняется сразу для всей строки, поэтому у тебя остается несколько вариантов:
- смотреть эскейп последовательности для своей ОС и эмулятора терминала, а потом просто выводить нужный символ жирным шрифтом.
- если у тебя строка состоит из символов в нижнем регистре, то выводить нужный символ в верхнем регистре. При этом стоит учесть, что для символов никаких регистров не существует.
Аноним 26/06/23 Пнд 13:02:26 2744739 210
image.png 36Кб, 761x371
761x371
image.png 6Кб, 545x85
545x85
>>2744654
Алсо, вот как это может выглядеть на линуксе. Просто как пример.
Аноним 26/06/23 Пнд 13:07:04 2744743 211
>>2744739
А как, кстати, вывести то "огроменную" точку? Это получается, что нужно же её из каких-то элементов соединить? Или нужно окрашивать часть экрана?
Аноним 26/06/23 Пнд 13:20:17 2744751 212
>>2744743
Что значит огроменную точку? Ты задачу подробней опиши.
Можно составить массив символов по нарастанию яркости и использовать его, например, ".,-:;c3#@". Но, думаю, что для твоей задачи это не подойдет и тебе нужно просто символ юникода вставить.
Аноним 26/06/23 Пнд 13:25:36 2744757 213
>>2744751
Да я вообще мимироходил. Не знаю подробностей задачи. Просто стало интересно как вывести "огроменную" точку. Как я понимаю из вопроса анона про эту задачу, что у него идёт ряд точек, сначала энное кол-во обычных точек, а после этого кол-ва нужно вставить точку, которая будет больше обычных, скажем, раза в 4.
Аноним 26/06/23 Пнд 13:37:03 2744759 214
>>2744757
>Просто стало интересно как вывести "огроменную" точку. Как я понимаю из вопроса анона про эту задачу, что у него идёт ряд точек, сначала энное кол-во обычных точек, а после этого кол-ва нужно вставить точку, которая будет больше обычных, скажем, раза в 4.
Если для вывода используется терминал, то произвольно увеличивать отдельные символы не получится. Это тебе не ОпенГЛ, где можно умножить вектора на скаляр и изменить размер обьекта. В данном случае можно: использовать другие символы(т.е. заменить огромную точку на что-то похожее), рендерить изображение в памяти, а затем выводить его на экран(т.е. создать большую точку из маленьких точек), использовать жирный шрифт.
Аноним 26/06/23 Пнд 13:39:50 2744764 215
>>2744759
> рендерить изображение в памяти, а затем выводить его на экран(т.е. создать большую точку из маленьких точек)
Примерно так и предполагал.
Понял, анон, спасибо!
Аноним 26/06/23 Пнд 13:52:33 2744782 216
блять звездочку напечатайте уже хватит мозги ебать
Аноним 26/06/23 Пнд 14:00:50 2744789 217
Рубрика ответов чат-гпт:
В кодировке Юникод символы представлены шестнадцатеричными числами, называемыми кодовыми точками. Жирная точка, также известная как точка среднего веса, кодируется в Юникоде и имеет следующий код: U+2022.

Этот символ представляет собой круглую точку, часто используемую для обозначения элементов списка или маркеров. В различных языках программирования и системах можно использовать разные способы ввода жирной точки, например, с использованием управляющих последовательностей или специальных символов, в зависимости от контекста и требований конкретной платформы.
Для вывода жирной точки в кодировке Юникод в языке программирования C в терминале Ubuntu 22.04 можно использовать последовательность управления ANSI-escape или использовать функцию printf с необходимой последовательностью Юникод-символа.

Вот пример двух способов для вывода жирной точки в кодировке Юникод в языке программирования C в терминале Ubuntu 22.04:

### Способ 1: Использование последовательности ANSI-escape

#include <stdio.h>

int main() {
printf("\u2022\n"); // Использование Юникод-кода точки
return 0;
}


### Способ 2: Использование функции printf с UTF-8 символом

#include <stdio.h>
#include <wchar.h>

int main() {
wchar_t dot = L'\u2022'; // Объявление Юникод-символа точки
wprintf(L"%lc\n", dot);
return 0;
}


Компилируйте и запускайте код в терминале Ubuntu 22.04, и вы увидите вывод жирной точки в кодировке Юникод в вашем терминале.

Обратите внимание, что поддержка Юникод-символов может зависеть от включенных шрифтов и настроек вашей терминальной программы.
Аноним 26/06/23 Пнд 15:39:50 2744940 218
>>2744789
с чем связано такое точное время запуска программы? лунное солнцестояние?
Аноним 26/06/23 Пнд 19:12:50 2745214 219
>>2744940
Я попробую запустить в 20.04, потому что в 18.04 и 16.04 чёт не пошла программа.
Аноним 26/06/23 Пнд 20:36:36 2745315 220
>>2744789
а что такое терминал
Аноним 26/06/23 Пнд 21:37:14 2745427 221
image.png 869Кб, 900x536
900x536
Аноним 26/06/23 Пнд 21:40:06 2745431 222
>>2745315
Настоящий чед, нихуя не шарит, а полез в си.
Или сейчас ещё какую-то студентоту на нём дрочат?
Аноним 26/06/23 Пнд 21:42:09 2745435 223
>>2745431
да брось, студендота как и все вкатыну в мире дрочат ооп, а это плюсы как минимум
Аноним 26/06/23 Пнд 22:15:30 2745482 224
>>2744429
Что не так с гитом?
/offtop
Аноним 26/06/23 Пнд 22:16:41 2745483 225
>>2744425
Только потом как отвернешься от монитора, забудешь в чем смысл программы
Аноним 26/06/23 Пнд 22:18:46 2745485 226
>>2744502
А ассемблер на кой?
Аноним 26/06/23 Пнд 22:36:24 2745501 227
image.png 140Кб, 640x463
640x463
Аноним 26/06/23 Пнд 22:47:12 2745509 228
>>2745483
1C программист в треде, всем в табличку!
Аноним 26/06/23 Пнд 22:57:45 2745521 229
>>2745485
Ну, мне он помогает, потому что я могу смело дизассемблить любые непонятные мне функции, и, читая дизассемблированный код, лучше понимать, как эти ф-ции работают.
Аноним 27/06/23 Втр 02:14:42 2745612 230
image.png 4921Кб, 2000x3008
2000x3008
Не понимаю как работают эскейпы.
Во всех мануалах пишут что \b это бэкспейс, но принтф "0\b1" печатает 01. Еще пишут что \a это звуковой алерт, но он чота не звучит. Еще пишут, что \r это возврат каретки, возврат куда? Он просто с новой строки печатает как будто это \n.

В общем я ничо не понял. Объясните. Или эти эскейпы только на настоящих терминалах работают и мне надо блять купить стойку AT&T чтобы работала эта параша ебаная?

Задача напечатать символ, стереть, напечатать другой. Хочу попердолить псевдографику но не хочу раздувать хистори консоли всеми кадрами отрисовки, лучше стирать символ и печатать заного.
Аноним 27/06/23 Втр 07:06:47 2745642 231
>>2745612
\r точно работает. Он возвращается в начало и можно поверху старой строки хуярить. Так делают все эти прогрессбары соснольные.

> Задача напечатать символ, стереть, напечатать другой. Хочу попердолить псевдографику но не хочу раздувать хистори консоли всеми кадрами отрисовки, лучше стирать символ и печатать заного.
https://tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html
Аноним 27/06/23 Втр 07:34:03 2745647 232
>>2745642
А в каких системах эти анси трюки работают?

>\r точно работает. Он возвращается в начало и можно поверху старой строки хуярить. Так делают все эти прогрессбары соснольные.
Блять мой эмулятор терминала игнорит эту хуйню.
Аноним 27/06/23 Втр 09:22:11 2745697 233
>>2745647
>Блять мой эмулятор терминала игнорит эту хуйню.
Что ты выводишь после \r? Если только один символ, то его сложно заметить.
Аноним 27/06/23 Втр 10:43:11 2745800 234
>>2745612
> чтобы работала эта параша ебаная?
Пхахах, ты виндузятник?
Для отладки выводи по символу, делая fflush и sleep.
Аноним 27/06/23 Втр 18:25:41 2746317 235
>>2745697
Да ничо не сложно. "0\r1" выводит 0 и 1 на разных строках. Я же говорю как \n
Ладно пойду попердолюсь, чота работает не так как должно работать.

Алсо \r и \v это экспейпы для принтеров говорят.
Аноним 27/06/23 Втр 19:31:08 2746444 236
image.png 298Кб, 550x367
550x367
Окей я разобрался. В эклипсе эмулятор консоли (наверное как и в любой студии) не умеет в эскейпы. Родная консолька все стирает как и положено. Алярмы отменяются. Спите спокойно, жители моря.
Аноним 28/06/23 Срд 00:09:17 2746692 237
>>2746444
Уффф, анон, успокоил! Спасибо!
Аноним 28/06/23 Срд 00:11:55 2746694 238
image.png 314Кб, 626x417
626x417
>>2746444
Хммм
А вот цвета не работают в родной консольке.

Я имею ввиду ANSI секвенции.
Для курсор позишина все гуд printf("\033[%d;%dH",L,C); отлично отрабатывает.
А вот обертка для цветов не отрабатывает.
Сама ANSI строка задается как \[\033[<COLOR>m\] и в нее на место <COLOR> мы записываем например 0;32 (это зеленый цвет)
Но как бы я не пердолил эту ANSI строку она печатает символ '[' заместо переключения цвета.
Вот теперь я думаю мой эмулятор zsh не поддерживает цветовые секвенции ANSI и надо пердолить в tty например без гуев.

Или в чем трабла?
Аноним 28/06/23 Срд 00:21:39 2746696 239
Снимок экрана 2[...].png 308Кб, 968x958
968x958
>>2746694
Ну ваще выглядит так будто реально zsh не поддерживает цвета. Вывод ls никак не маркирует по цветам папки и файлы. Хмм
Аноним 28/06/23 Срд 00:56:47 2746702 240
Снимок экрана 2[...].png 96Кб, 308x456
308x456
>>2746696
В общем я не знаю. На хабре пишут все гуд, в мануале пишут все гуд только для x-term'a. Но вот моя палитра "цветов" для zsh. И цветов я тут не наблюдаю.

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

Ну и как мне блин написать реализацию cmatrix для этой залупы? Цветов то нет!
Аноним 28/06/23 Срд 01:17:47 2746706 241
>>2746702
Цвета, вроде бы, нужно печатать дригим способом. Завтра покажу.
Было бы неплого, если бы ты прислал исходники
Аноним 28/06/23 Срд 01:23:25 2746707 242
>>2746706
https://pastebin.com/FtVsbm2G
Держи исходник. Я тут уже с психу ебанул 0-99 значения в попытке поймать хоть какой то цвет. Но все тщетно.
Аноним 28/06/23 Срд 02:14:57 2746716 243
https://pastebin.com/ZBJFSkTT
Анон у меня тут undefined behaviour или что?
Почему первый символ инпута заполняет весь array?
Аноним 28/06/23 Срд 03:08:50 2746726 244
image.png 147Кб, 500x500
500x500
>>2746716
какой аррей? пиздец конечно у тебя разметка уебанская, как будто у тебя дисплей из складного метра (пикрилейтед) состоит
у тя гетчар читает в ц, а потом если ц не 0 тогда ++ все 10 индексов аррея
нахуя тебе это я не ебу, но ты так написал

ну судя по принтам ты там какие то символы должен считать я хз
Аноним 28/06/23 Срд 03:27:25 2746729 245
2023-06-28 0325[...].png 9Кб, 732x205
732x205
Аноним 28/06/23 Срд 03:37:02 2746730 246
>>2746729
а чо это такое на скрине? пхп какой то
крч я не знаю где ты наебался анон, надо было юнит тесты хуярить на каждом шаге чтобы быть в курсе правильно у тебя считает вот здеся или нет, а ты походу нахуярил логику и ща будешь дебажить ее, удачи
потыкай шаги вайла в дебагере
Аноним 28/06/23 Срд 03:41:49 2746732 247
>>2746729
алсо вот тебе лайфхак для твоих флажков фора
found != 1 это то же самое что и !found
сишник булы извлекает как 0 и как все что не 0

тобишь if(0) = if(false), if(124124124) = if(true)
Аноним 28/06/23 Срд 03:52:10 2746733 248
>>2746732
хотя с интами не должно прокатывать
операция нот (!) это операция над булевыми и наверн надо кастарунть инт к улам прежде чем юзать булевы операции
!(_Bool)found
или просто флаг нормально объявить как булевый
Аноним 28/06/23 Срд 03:56:54 2746734 249
>>2746730
>а чо это такое на скрине?
gnu debugger
Аноним 28/06/23 Срд 04:02:45 2746735 250
вот я думаю теперь над твоей задачей, ну точнее не совсем над ней а над тем что 4 байта для хранения символа это дохера

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

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

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

есть еще варианты?
Аноним 28/06/23 Срд 04:35:51 2746737 251
>>2746716

j=j2; to j=j2-1
и заработало
Аноним 28/06/23 Срд 05:25:37 2746740 252
image.png 188Кб, 626x351
626x351
>>2746737
круто что нашел! молодец!

>>2746735
я тут поколдовал
походу надо свою матешу писать для извлечения чисел из трехбайтной последовательности

но вот например хранение числа матчей в соседнем байте инта
https://pastebin.com/yzcBWVcY
Аноним 28/06/23 Срд 05:45:39 2746744 253
>>2746740
>надо свою матешу
туплю
надо просто локальный инт создать, прочитать в него три байта которые лежат в инте массива справа от байта в котором лежит символ
затем заплюсовать локальный инт
затем записать три левых байта из локального инта на место трех правых байтов инта массива где лежит символ в первом байте

бля дохуя операций и ваще ритчи писал что есть машины с двухбайтными интами, так что такое решение через чар поинтер даже лучше
Аноним 28/06/23 Срд 09:02:35 2746792 254
>>2746744
>машины с двухбайтными интами
Инт это четыре байта. Шорт это два байта.
Аноним 28/06/23 Срд 10:18:41 2746835 255
Аноны, помогите разобраться, пожалуйста! Столяров пишет, что в Си отсутствуют средства ввода/вывода, а всевозможные printfы и scanfы - это библиотечные ф-ции, которые сами написаны на Си. Так вот, где в заголовочном файле stdio.h (и где искать этот заголовочный файл в убунте, там есть несколько заголовочных файлов stdio.h) мне прочитать код этих функций? Просто интересно как это реализуется средствами самого языка.
Аноним 28/06/23 Срд 12:43:59 2746982 256
>>2746835
Могу ошибаться, но код ты посмотреть скорее всего не сможешь.
Ты можешь посмотреть используемые библиотеки в директории /usr/lib, например. Используемые библиотеки у скомпиленного исполняего файла можно посмотреть через readelf, а используемые системные вызовы через strace.
Аноним 28/06/23 Срд 12:48:44 2746989 257
image.png 8Кб, 449x73
449x73
image.png 41Кб, 789x227
789x227
image.png 68Кб, 707x593
707x593
>>2746835
>и где искать этот заголовочный файл в убунте, там есть несколько заголовочных файлов stdio.h
Ты можешь посмотреть код библиотеки stdio.h, но ничего полезного кроме внешнего вызова ты там не найдешь.
Основная реализация находится в системной библиотеке libc( glibc в linux), поэтому копай в эту сторону. Исходники можно найти в интернете.
Аноним 28/06/23 Срд 13:06:46 2747027 258
>>2746792
хочешь сказать что я пиздабол и сам придумал сайзофать инты заместо подстановки цыфры 4? нахуй иди долбоеб
Аноним 28/06/23 Срд 13:11:11 2747042 259
>>2746835
А это какой том Столярова судя по всему речь о "Введение в проыессию"
Аноним 28/06/23 Срд 13:14:02 2747054 260
>>2746740
Так у тебя получилось цвета пофиксить?
28/06/23 Срд 13:42:26 2747106 261
Аноним 28/06/23 Срд 13:54:37 2747120 262
Снимок экрана 2[...].png 2245Кб, 2540x1404
2540x1404
>>2747054
Да. Надо было флажок нажать "показать цвета". Мои догадки про то что именно этот zsh не умеет в цвета оправдались. Именно этот и не умел.
Аноним 28/06/23 Срд 14:19:15 2747161 263
>>2747120
>Мои догадки про то что именно этот zsh не умеет в цвета оправдались
Это не проблема zsh, потому что оболочка этим не занимается, плюс она является ПОСИКС совместимой. Это у тебя эмулятор терминала цвета не выводил, потому что функция отключена была.
Аноним 28/06/23 Срд 16:43:07 2747384 264
Чот не пойму как в printf'e сделана перегрузка необязательных параметров?

int printf(const char х __restrict, ...) __printflike(1, 2);

#define __printflike(fmtarg, firstvararg) \
__attribute__((__format__ (__printf__, fmtarg, firstvararg)))
#define __printf0like(fmtarg, firstvararg) \
__attribute__((__format__ (__printf0__, fmtarg, firstvararg)))

Кто то может расшифровать? Это макрос или чо? И как оно работает? Как вот мне написать аналогичную функцию myfunc(int a, ...) __myfunc(1,2);


?????????
Аноним 28/06/23 Срд 17:12:51 2747426 265
>>2747384
man stdarg
> перегрузка
Брысь
Аноним 28/06/23 Срд 17:21:34 2747439 266
image.png 60Кб, 1133x542
1133x542
>>2747384
>Кто то может расшифровать? Это макрос или чо? И как оно работает? Ка
Попытаюсь обьяснить как я это вижу, так что могу быть не прав.
Это вариадик функция. Первым аргументом передается обязательная часть(fmtarg - formatting argument?), а потом передается специальная структура, которая содержит в себе произвольное количество аргументов(firstvararg - first variadic argument?)

>#define __printflike(fmtarg, firstvararg) \
>__attribute__((__format__ (__printf__, fmtarg, firstvararg)))
>#define __printf0like(fmtarg, firstvararg) \
>__attribute__((__format__ (__printf0__, fmtarg, firstvararg)))
Тут никакой магии нет, просто повышение уровня абстракций и обертка над оберткой.

>ак вот мне написать аналогичную функцию myfunc(int a, ...) __myfunc(1,2);
пикрил
Аноним 28/06/23 Срд 17:42:38 2747458 267
>>2747426
Что с тобой не так челик?
Аноним 28/06/23 Срд 18:14:32 2747492 268
>>2747384
printf -- функция с переменным количеством параметров

Для работы с функциями с переменным количеством параметров используется макрос stdarg, ты прав
Аноним 28/06/23 Срд 18:23:35 2747504 269
>>2746982
>>2746989
Аноны, спасибо за ответы!

>>2747042
Это второй том, в котором речь идёт об ассемблере и введении в Си.
Аноним 28/06/23 Срд 18:26:31 2747508 270
>>2747027
2 байта инт был на 16-ти битных машинах, на 32-х битных машинах инт вырос до 4-х байтов, в 64-х битных машинах инт размер не поменял и остался быть 4-х байтным.
Аноним 28/06/23 Срд 18:38:53 2747529 271
>>2747508
Зависит от компилятора, на самом деле вроде как
Аноним 28/06/23 Срд 19:31:05 2747612 272
почему консоль мигает, когда чищу её через систем цлс?
есть какие то другие команды, что бы сделать это без мигания?
Аноним 28/06/23 Срд 19:33:32 2747615 273
>>2747529
Да, это правда, тогда, возможно у него компиллятор считает инт, как двухбайтный тип. Тогда, анон >>2747027, сорян, что я решил поумничать.
Аноним 28/06/23 Срд 19:39:18 2747620 274
>>2747612
Эмм, потому что ты спавнишь целый процесс на такую хуйню?
28/06/23 Срд 19:41:36 2747622 275
>>2747620

Что-то подсказывает, что он делает около-аскии графику и хочет, чтобы этот процесс отрисовки консоли заново не был таким.

У меня собственно тоже такой вопрос хочу сделать АСКИИ морской бой
Аноним 28/06/23 Срд 19:48:01 2747631 276
>>2747622
А хз, надо смотреть как в всяких ncurses сделано, там вроде не фликерит.
Аноним 28/06/23 Срд 19:48:06 2747632 277
image.png 119Кб, 1743x631
1743x631
>>2747622
>чтобы этот процесс отрисовки консоли заново не был таким.
Аноним 28/06/23 Срд 19:52:20 2747635 278
image.png 13Кб, 1100x476
1100x476
>>2747622
да, хочу покрутить квадрат
Аноним 28/06/23 Срд 19:52:31 2747637 279
>>2747615
Да ничего страшного, мы все тут сидим и умничаем друг перед другом. Дэнис Ритчи сам написал что надо не забывать делать сайзофы инта потому, что есть машины с двухбайтными интами. Я это не придумал.
Аноним 28/06/23 Срд 19:57:28 2747641 280
>>2744789
попробовал оба варианта, у меня вместо точки какие буквы вылезли. Значит терминал у меня какой то не такой или что?
Аноним 29/06/23 Чтв 13:27:16 2748152 281
>>2737924
предполагаю что в С константы будут заменены своими значениями мимо жс бибизян
Аноним 29/06/23 Чтв 20:34:51 2748493 282
>>2748152
Дальше по треду мы уже разобрали этот момент.
Аноним 29/06/23 Чтв 20:37:41 2748496 283
image.png 9Кб, 224x224
224x224
>>2748493
Он асинхронно ответил.
Аноним 29/06/23 Чтв 21:10:00 2748531 284
>>2748496
Судя по скорости его ответа, то
>мимо жс бибизян
здесь он не соврал.
Аноним 29/06/23 Чтв 22:37:21 2748603 285
Снимок экрана 2[...].jpg 590Кб, 1826x1108
1826x1108
Снимок экрана 2[...].png 473Кб, 1044x940
1044x940
Собрал свой хидер если кому надо покрасить консольку.
Сам исходник подкатом.
https://pastebin.com/MhqV7p9X
Аноним 29/06/23 Чтв 23:41:14 2748641 286
>>2748603
Алсо вот такой вопросик возник.

Можно ли как то в сишнике инкапсулировать прототипы функций? Ну вот допустим я заинклюдил хидер и там лежать фукнции всякие. Можно ли как то сделать так, чтобы я не мог из мейна напрямую юзать функции, а только через обертки публичные? Ну крч как инкапсулировать то? Статик не решает эту задачу.
Аноним 30/06/23 Птн 00:13:28 2748654 287
>>2748641
Никак. #include просто вставляет текст указанного файла.
Аноним 30/06/23 Птн 00:19:19 2748658 288
>>2748654
А если допустим не инклюдить, а компилить в отдельный объектный файл и потом уже мейком собирать? Тогда поидее статик ограничит область видимости до объектника и все. Разве нет?
Аноним 30/06/23 Птн 10:43:49 2748796 289
>>2748603
out() небезопасен
include ограждать не надо
Аноним 30/06/23 Птн 11:51:52 2748884 290
>>2748152
В глаза долблюсь, сори
>>2737970
Нубский вопрос по второму пику. Почему компилятор компилирует мертвый код и почему раз уж он его компилирует, то не делает свертку констант?
В javascript этот же код будет условно одной строкой
REX.W movq rax,0x600000000
Аноним 30/06/23 Птн 14:42:06 2749116 291
>>2748884
>мертвый код
Что значит мёртвый код? Это код, который показывает как выглядит программа, что на пике 1, в виде машинных инструкций.
>REX.W movq rax,0x600000000
Я так понимаю, что интерпретатор джээс использует макросы, т.е. эта строчка, которую ты привёл, на самом деле, на каком-то этапе развёртывается в код, который похож на пик 2, поэтому и такое различие.
Аноним 30/06/23 Птн 15:57:51 2749183 292
image.png 18Кб, 322x204
322x204
>>2749116
>Что значит мёртвый код
Это код который никогда не выполнится или который ничего не делает. По идее компилятор должен понять что main не несет никакой полезной нагрузки и просто выкинуть этот код.
>Я так понимаю, что интерпретатор джээс использует макросы
Не, это как раз строчка скомпиллированого кода аналогичной функции на js, компилятор видит что мы просто складываем статичные числа и заменяет две операции a = 3; b = a * 2; одной операцией b = 6;
Просто стало интересно почему С компилятор не делает аналогичную свертку. Может надо флаги какие-то задать?
Аноним 30/06/23 Птн 16:14:31 2749194 293
>>2748884
Потому что аноны не знают, как включить оптимизации.
Аноним 30/06/23 Птн 16:34:30 2749216 294
>>2749183
Ну вот ответ >>2749194
Я просто не включал оптимизацию, потому что мы же изучаем строение языка.
Аноним 30/06/23 Птн 16:39:17 2749226 295
>>2749216
>>2749194
Теперь понял. Странно что оптимизации не включены по умолчанию.
Аноним 30/06/23 Птн 16:46:21 2749244 296
>>2749226
Не странно. По умолчанию код должен быть такой какой пишешь, а всякая самодеятельность компилятора ведет к багам, поэтому это опционально под твою ответственность, если что сам себе злобный буратино.
Аноним 30/06/23 Птн 16:47:28 2749246 297
>>2749226
В этом и мощь языка Си, потому что оптимизация это лишняя память, плюс лишние такты, которых может не быть на устройстве, под которое пишется код.
Аноним 30/06/23 Птн 18:08:39 2749389 298
>>2749246
Уже давно на копеечном ембедде мощи больше, чем тебе надо, хуярят иотовые питоны и жабаскрипты. Это тебе к дедам на лавочке послушать про байты и такты.
Аноним 30/06/23 Птн 18:49:57 2749434 299
>>2749389
Ты скозал? Чёт на моём шлагбауме, который открывается по нажатию кнопочки, я не заметил много гигабайт памяти и супермощный процессор.
Аноним 30/06/23 Птн 19:07:31 2749472 300
>>2749434
У тебя и банкоматы на районе на списанных шиндовс нт, который старше тебя. Есть проблески, но проще купить готовое решение.
Аноним 30/06/23 Птн 19:18:03 2749481 301
>>2749472
Банкомат, который занимает, как минимум, кубический метр, и всегда подключён к сети, сравниваешь со шлагбаумом, "голова" которого не больше 0,008 кубического метра...
Всё с тобой ясно, скрипто-макакыч.
Аноним 30/06/23 Птн 19:22:42 2749488 302
>>2749481
Задачи банкомата может решать мк за полтора бакса, но функционал проверен комиссиями, стандартами и прочими капитализьмами. Купить полтора тонны сертифицрованного мусора дешевле, чем заниматься этим с нуля.
Вообще, задачи бизнеса важнее твоей технической хуйни. Как только ты это поймешь, так перестанешь быть ойти-мальчиком, а станешь солидным господином. Но ты не поймешь, т.к. ты наёмный работник, а не господин.
Аноним 30/06/23 Птн 19:34:32 2749501 303
>>2749488
Одна из задач бизнеса это максимизация прибыли, что включает в себя, также разумные траты на технические средства, которые могли бы обеспечить выполнение той задачи, которая на них положена, а это означает, что не нужно тратить много денях на доп. оперативную память и процессор с несколькими сотнями мегагерц, чтобы обеспечить быструю и не "лагающую" работу интерпретатора питона, на котором так приятно кодить скрипто-макаке, которую я нанял.
>Задачи банкомата может решать мк за полтора бакса
Чёт я сомневаюсь, что безделушка за полтора бакса сможет потянуть оптимизацию пайтона или жээс, так ещё и обеспечить "приятную" работу с сенсорным дисплеем.
Аноним 30/06/23 Птн 19:40:41 2749513 304
>>2749501
Существующий мусор это дешево и работает с колёс, что и нужно бизнесу. Можно делать с нуля на будущее, но это противоречит философии постсовкого бизнеса, у которого суть получить прибыль здесь и сейчас, пока что-то не наебнулось. И это вполне разумно, не так ли?
Аноним 30/06/23 Птн 19:43:40 2749521 305
>>2749513
>И это вполне разумно, не так ли?
Согласен, это разумно, но до определённых пределов. Просто не понимаю, что ты хочешь до меня донести?
Аноним 30/06/23 Птн 19:48:24 2749528 306
>>2749521
Хочу до тебя донести, что твоя технологическая целесообразность очень редко пересекается с бизнес целесообразностью, для которой тебя нанимают.
Тебя наняли выкопать яму, а для чего её копают и какими средствами это не твоего ума дело, если тебя об этом не спросили.
Аноним 30/06/23 Птн 19:49:31 2749529 307
>>2749528
Так, и что мне делать - перестать изучать Си и кодить на нём?
Аноним 30/06/23 Птн 19:58:36 2749547 308
>>2749529
Изучать си и предоставлять услуги, или вкладывать деньги и получать услуги.
Но ты не годишься ни для того, ни для гругого, по-моему.
Ты из тех водителей троллейбусов, у которых какие-то фантомные амбиции. Да, любой хуй в постсовке имел окно, чтобы чего-то добиться. Сейчас этого нет. Сейчас в постсовке выжить это уже заебись, если у тебя есть возможность выехать и работать таксистом это уже замечательно. Не всем получать заработок на уровне потомственной ренты. Чисти трубы и живи достойно, сука, хули ты выебываешься?
Аноним 30/06/23 Птн 20:13:44 2749565 309
>>2749547
>И это вполне разумно, не так ли?
Скрипто-макакыч разорвался!!! Ладно, анон, хватит флудить в этом треде. Если хочешь позаниматься хернёй, то иди в б, и там загоняй свою философию, а нормальные ребята и так понимают, что из-за автоматизации, скоро и светофоры станут "умными", а для этого их нужно будет подключать к сети, чтобы мощные серваки, которые обладают овердохера памятью и суперпроизводительными процессорами, выдавая "красивое" окошко уведомляли оператора (скрипто-макаку), что в том или ином месте прогнозируется затор, следовательно он должен в "красивом" окошке переключить режим работы светофора. Но вот, чтобы светофор, своим маленьким микроконтроллером, понял, что скрипто-макакыч хочет преключить режим его работы, и нужны будут такие ребята, как я, и как многие из этого треда, которые напишут под этот маленький мк код на Си. И таких светофоров, шлагбаумов, турникетов, и т.д, и т.п. с каждым годом будет становиться всё больше и больше. Поэтому, анонче, флуд в б, а здесь только сишный, с ассемблерными вставками, хардкор.
Аноним 30/06/23 Птн 21:36:03 2749719 310
>>2749529
Да лучше уж Си дрочить в свободное время, чем какой-нибудь лисп или еще хуже хаскелль. Хотя лисп еще минимально интересен за счет интерактивности, но это давно и в Питоне с Джулией есть. А в Джупитер и C++ запилили уже.
Аноним 30/06/23 Птн 22:01:04 2749769 311
>>2749719
Да я хз откуда такая ненависть к Си! Это афигенный язык, благодаря ему и ассемблеру, я просто лучше стал понимать компьютер, да и благодаря этим знаниям, даже мой код на питоне стал красивее, лаконичнее, быстрее, просто потому что я теперь понимаю как бегают байтики в компьютере. Плюс к этому теперь ещё и логические операции со сдвигами обрели какой-то внятный окрас, просто я понимаю, что эти операции гораздо проще выполнять процу, да и благодаря этому теперь ещё и математика для меня совсем другой окрас обрела.
Аноним 30/06/23 Птн 23:03:02 2749848 312
>>2749226
Это как раз логично, а не странно. Например для криптографии полезно размазать управляющие команды всяким мусором, чтобы очередной кулхацкер джиэсбибизян по дизасемблу не смог накодить кейген для очередной денувы.
Аноним 01/07/23 Суб 02:33:44 2749968 313
>>2749769
А денег больше получать стал, пониматель компьютеров?
Аноним 01/07/23 Суб 03:34:31 2749980 314
>>2749769
>Да я хз откуда такая ненависть к Си!
>Это афигенный язык, благодаря ему и ассемблеру, я просто лучше стал понимать компьютер
Именно отсюда. Раз си помогает лучше узнать компьютер, его ненавидят те, кто ненавидит компьютеры, не хотят ничего про них знать. Большинство не хочет лезть разбираться в кишках компьютера, им надо наоборот, чтобы было проще, меньше думать, меньше делать, чтобы тык и стало заебись, чем дальше от компьютера, тем лучше, они стремятся к языкам более высокого уровня, более далеким от настоящей архитектуры железа.
Аноним 01/07/23 Суб 04:26:51 2749991 315
image.png 704Кб, 800x777
800x777
>>2749980
Так уже придумали скратч. Зачем они теряют время на пустословия в топике морей, когда можно лампово чиллить на хайлевел джипег бейзед ультрапоредж лангуаге?
Вопрос риторический, повторяю вопрос риторический.
Аноним 01/07/23 Суб 09:49:46 2750045 316
>>2749968
Нет, денег больше не стал получать. Но и программированием занимаюсь не потому что тут все 300 кк/наносеки, а потому что мне это интересно, потому что я получаю некое эстетическое удовольствие, когда написанный мною код делает то, что я запланировал. А Си и ассемблер я стал изучать, потому что, кодя на питоне, компьютер для меня так и оставался магией, даже пытаясь освоить книги по его архитектуре. Или у тебя, дебича, всё меряется деньгами?
Аноним 01/07/23 Суб 22:05:09 2750646 317
image.png 10Кб, 462x196
462x196
image.png 14Кб, 616x280
616x280
image.png 31Кб, 1048x474
1048x474
Аноны, что это такое? Зачем в этом примере приводить к типу uint64_t на пике 1? Мой код на пике 2 не принимает и выдаёт ошибку на пике 3, причём всегда после после 2^30. Собственно, вопрос в чём я не прав?
Аноним 01/07/23 Суб 23:36:20 2750714 318
>>2750646
наверн потому что ты делаешь сдвиг в инте?
Аноним 02/07/23 Вск 00:00:09 2750723 319
>>2750714
Анон, рили! Получается, что цилочисленные литералы имеют тип инт. Спасибо, анон, просвятил.
Аноним 02/07/23 Вск 00:28:13 2750727 320
>>2750723
ну вот у меня теперь вопрос к знатокам. почему компилер идентифицирует единичку как инт? наверное зависит от флагов компила? ну логичнее же представлять единичку как ансигнед чар, чем как инт, а с флагами омпила наверное он еще и мог бы предугадать что ты тут подразумеваешь ансигнед лонги и представить единичку как ансигнед лонг (или ансигнед лонг лонг, наразных машинах это разные типы)
Аноним 02/07/23 Вск 12:21:21 2750911 321
Аноним 02/07/23 Вск 12:34:28 2750913 322
>>2750911
Ты, наверное, хотел сказать, что есть суффиксы для литералов для таких случаев.
Аноним 02/07/23 Вск 12:44:28 2750915 323
>>2750727
> ну логичнее же представлять единичку как ансигнед чар
Да! Который все равно станет int из-за integer promotion.
Аноним 02/07/23 Вск 14:52:44 2750988 324
почему квадрат сплющивается в начале и стягивается к центру?

сильно не бейте, моя первая программа

https://pastebin.com/WKzji6Sb
Аноним 02/07/23 Вск 15:15:25 2751013 325
Какая максимальная допустимая длина переменной?
Аноним 02/07/23 Вск 15:16:01 2751015 326
Тема про open и бинарные файлы. 02/07/23 Вск 15:25:40 2751027 327
Добрый день.
Изучаю Си.
Так вышло, что в моём понимании fopen вызывает open и что-то потом делает.

Собственно вопрос: как open может открыть бинарный файл? Вот fopen("bla_bla_bla","rb") позволяет читать бинарный файл, fopen("bla_bla_bla","wb") записывает в бинарный (и создаёт, если его нет), а как такое проделать с open?


Мои попытки записывать через open+write приводили к появлению текстового файла.
Аноним 02/07/23 Вск 16:04:06 2751079 328
>>2751027
В юниксе, откуда твои open+write, не было такой педерсии, как текстовые vs двоичные файлы.
Аноним 02/07/23 Вск 16:15:03 2751085 329
>>2751027
Если ты про шиндовс, то там нет никакого open. Если про linux, то вызову open фиолетово что там
Аноним 03/07/23 Пнд 04:56:09 2751752 330
не могу понять почему на пинус так и не накодили аналог conio.h с индикатором kbhit
неужели кбхит ненужен? а если и так тогда через какие средства мне накодить самый обыденный интерактив:
for(;;){
if(kbhit()){ switch( c=getchar() ){} }
}
Аноним 03/07/23 Пнд 04:59:58 2751753 331
>>2751752
точнее нет не так вопрос должен звучать.
вопрос должен звучать вот как - существует ли какое либо кроссплатформенное решение по замене гетча через кбхит?
ну я не знаю, может читать байты из буфера консоли можно и на пинусе и на шинде одинаково (в чем я сильно сомневаюсь, команд лайн это какая то каляска по лекалам павершелла а не копия)
Аноним 03/07/23 Пнд 11:49:23 2751925 332
>>2750988
немношко поправил код, теперь квадрат не сплющивает, но по прежнему все точки тянет в центр
Аноним 03/07/23 Пнд 11:51:00 2751928 333
Аноним 03/07/23 Пнд 20:22:29 2752546 334
>>2751925
>>2751928
ну не знаю, я не буду дебажить твой код, но я не вижу у тебя мат окургления флоатов до интов, походу ты просто отрезаешь дробную часть
Аноним 04/07/23 Втр 07:48:59 2752916 335
image.png 5Кб, 543x79
543x79
Аноним 04/07/23 Втр 08:03:51 2752921 336
Объясните плз, как работает обратный вызов, для чего его вообще использовать?
Сделал пару примеров с указателями на функции, где в функцию передается указатель и потом по очереди в цикле по указателю вызываются разные функции из массива указателей на функции. Но как при этом себя ведет поток управления? Пишут, что он идет в обратную сторону, потому и обратный вызов, но я не могу этого понять. Как работает стек при использовании обратных ввзовов тоже не понятно.
Аноним 04/07/23 Втр 08:32:58 2752928 337
>>2752916
а, окей я не заметил при беглом листинге
а что значит жмутся к центру? может надо на радиус умножить корды?

у = син(а) х радиус
х = кос(а) х радиус
иначе корды в разбеге -1 to 1 по флоатам будут и околонулевые по интам
Аноним 04/07/23 Втр 09:02:26 2752935 338
>>2752921
для чего обратный вызов я не знаю, но указатель можно положить в структуру и будет классно
Аноним 04/07/23 Втр 09:25:15 2752943 339
image.png 9Кб, 1123x733
1123x733
>>2752928
радиус это константа, на какую константу не умножай, с каждой следующей итерацией, они всё сильнее и сильнее тянутся к центру
вплоть до сингулярности
Вот как это выглядит (чем больше угол поворота, тем быстрее сплющатся)
Аноним 04/07/23 Втр 09:30:56 2752947 340
Аноним 04/07/23 Втр 10:35:41 2752979 341
>>2752943
Такие алгоритмические задачи надо делать на подходящем языке, как питон или бейсик. Вот когда отладишь алгоритм, тогда можно его переносить на си. Иначе непонятно, то ли у тебя в алгоритме косяк, то ли ты наступил на сишные грабли по незнанию языка или неосторожности, как например выход за пределы массива или неправильная арифметика чисел.
Аноним 04/07/23 Втр 10:51:56 2752987 342
>>2752979
Бог дал человеку инструменты дебага, но человек не перестал млеть
от мыслей о высоком уровне, и тогда Бог обозлился на человека, и сделал его скрипто-макакой.
Аноним 04/07/23 Втр 11:05:50 2752999 343
image.png 50Кб, 200x200
200x200
Аноним 04/07/23 Втр 16:58:32 2753424 344
>>2752979
Единственный язык, который нужен дополнительно, это ассемблер (nasm, так с ним много рарных книг), и то на уровне, чтобы ты мог читать дизассемблированный код. Знаешь Си и ассемблер, можешь дебажить, плюс правильно дизассемблить (как бы с элементами дебага, главное, чтобы можно было ходить по дизассемблированному коду по шагам), значит можешь приступать к фундаментальным алгоритмам. И поверь, ни одна книга, сайт, статья, препод, т.е. ни один источник информации, откуда ты будешь черпать её, посвящённый любому высокоуровневому ЯПу, не расскажет тебе о фундаментальных алгоритмах столько, сколько ты сам сможешь выудить, используя связку си-асм-дизассм-дебаг. А огрехи в понимании этих алгоритмов будут стопроц., потому что в их структуре (особенно, если используется любой высокоуровневый ЯП) столько уровней абстракции, что ебанёшься!!!
Аноним 04/07/23 Втр 17:02:39 2753436 345
>>2753424
Художественная книжка кернигана про юникс даст тебе больше, чем мильйоны абасракций, которые ты даже не осилишь.
Аноним 04/07/23 Втр 17:05:38 2753451 346
>>2753436
Скрипто-макакыч, ты то чего порвался? Хочешь сказать, что я не прав, что ли?
Аноним 04/07/23 Втр 17:08:22 2753454 347
>>2753451
Да, ты кондовый снулист, который думает, что если он начнет прорабатывать букварь, то станет дохуя писателем-философом. Не станет.
Будет дристать такими максималисткими выпадами в сторону всех подряд, пока не стухнет окончательно.
Аноним 04/07/23 Втр 17:27:06 2753500 348
>>2753454
>прорабатывать букварь
Скрипто-макакыч, ты пойди хотя бы один уровень абстракций пойми!! Как букварь, где описаны лишь символы, т.е. атомарные частицы языка, можно сравнивать с целыми языками, на которых написаны целые системы? Дебич, хватит здесь дристать! Просто пойми уже наконец, что ты ни за что не освоишь рекурсию на питоне, пока не посмотришь на то, как она выглядит на уровне машинных команд (на самом деле ничего сложного). Если ты до сих пор не осилил рекурсию, мы не виноваты. За что ты нам тут постоянно срёшь тупостью?
Аноним 04/07/23 Втр 17:29:26 2753507 349
>>2753500
> > Будет дристать такими максималисткими выпадами в сторону всех подряд, пока не стухнет окончательно.
Сколько лет, сколько лет прорабатываешь?
Аноним 04/07/23 Втр 17:29:56 2753509 350
>>2753454
>кондовый снулист
Поди, ведь, все выходные и понедельник искал это выражение, чтобы высрать нам его в этом треде. Вот шизик, пиздос!!
Аноним 04/07/23 Втр 17:52:41 2753554 351
>>2753509
Что там искать, это главный инфоцыганский термин. Любого овоща можно вкатить в зарабатывание миллионов, но именно С НУЛЯ. Потому что у него нет никаких знаний, он НОЛЬ.
А тут проработает вопросик с Анатолием Пиздунковым и уже ПРОФЕССИОНАЛ.
Аноним 04/07/23 Втр 18:46:17 2753643 352
>>2753507
Ты типа ругаешься на то, что это долго? На самом деле, прорабатываю может полгода, даже меньше. Пара месяцев ушло на то, чтобы понять, что Си без асма не осилю, потом пара месяцев ушло на то, чтобы осилить асм на уровне, чтобы можно было бы читать дизассемблированный код. И сейчас прошло ещё, наверное, пара месяцев, когда я дизассемблю всё, что мне не понятно, продолжая изучать Си. Ясен пень, что всё это не без перерывов, тому что 24/7 не могу уделять Си, но то, что после освоение асма обучение ускорилось и улучшилось это сто процентов.
Аноним 04/07/23 Втр 18:55:02 2753654 353
>>2753643
Ты за деньги работал когда-то? Сколько?
Аноним 04/07/23 Втр 18:56:22 2753657 354
>>2753654
Программистом не работал. А так, конечно, работал и работаю.
Аноним 04/07/23 Втр 18:58:05 2753663 355
>>2753657
Ну пиздец, так сразу и надо сообщать первой строчкой перед своими постами.
Аноним 04/07/23 Втр 19:00:06 2753668 356
>>2753663
Извини, в следующий раз воспользуюсь твоим советом.
Аноним 04/07/23 Втр 19:32:25 2753738 357
image.png 562Кб, 1054x1500
1054x1500
Аноним 04/07/23 Втр 19:45:45 2753774 358
image.png 1572Кб, 969x1500
969x1500
image.png 688Кб, 637x822
637x822
>>2753738
>Нотацией примеров теперь служит Оберон/Компонентный Паскаль – наиболее совершенный потомок старого Паскаля по прямой линии.

А мой хитрый план состоит в том, чтобы сразу на Си нырнуть в фундаментальные алгоритмы.
Аноним 04/07/23 Втр 19:49:57 2753784 359
>>2753774
Ловите столярова и топите его в бочке с тухлой рыбой.
Чо он там, кстати, высказался или молчит как уёбище?
Аноним 04/07/23 Втр 19:58:00 2753807 360
>>2753784
>Ловите столярова и топите его в бочке с тухлой рыбой.
А его за что?
Аноним 04/07/23 Втр 20:07:07 2753822 361
>>2753784
так столяров же с Паскаля начинает, не? или ты про какого-то другого столярова?
Аноним 04/07/23 Втр 20:09:43 2753832 362
>>2753822
Да забей! Наш скрипто-макака сегодня совсем обезумел.
Аноним 04/07/23 Втр 20:34:21 2753883 363
image.png 371Кб, 793x784
793x784
>>2753774
>фундаментальные алгоритмы
мне так нравится это выражение
вот наши то алгоритмы фундаментальные, не то что у ваших там виртов

фундаментальные это вот такие как
алгоритм сложения двух чисел return a + b;
?

а соответственно нефундаментальные это основанные на фундаментальных? тоесть квик сорт уже не фундаментальный будет

уууу вирт собака сутулая хуйне всякой учит
Аноним 04/07/23 Втр 21:23:43 2753939 364
>>2753883
Чёт ты переборщил с тупостью! Ты бы хоть оглавление этих книг прочитал, а потом оглавление книги Вирта, и тогда понял бы, что это суть одно и тоже (практически). Только тут примеры на Си, а у Вирта на Паскале. Видать из-за жары сегодня и скрипто-макака с цепи сорвался, и другие аноны подтупливают...
Аноним 04/07/23 Втр 21:28:53 2753946 365
>>2753939
да у меня нет претензий к книгам
у меня претензия к фразе
Аноним 04/07/23 Втр 21:37:40 2753959 366
>>2753946
Ну, это похоже надмозги так перевели.
Аноним 05/07/23 Срд 02:53:10 2754240 367
>>2753774
Не могу понять, зачем нужны эти книги? Просто выложили бы исходники на гитхаб и всё. Зачем мне как дебилу перепечатывать с книжки? Что в башке этих идиотов творится?
Аноним 05/07/23 Срд 09:12:32 2754299 368
>>2754240
Чего ты ругаешься? Обычно, в книге есть ссылка на сайт, где можно все исходники из этой книги найти.
Аноним 05/07/23 Срд 16:39:08 2754780 369
>>2753454
>начнет прорабатывать букварь
твой уровень абстракции близок к инфантильному, скриптоманя. Это почти что магическое мышление.
Аноним 05/07/23 Срд 16:41:48 2754784 370
>>2754780
Ты в своей абстракции уже преисполнился?
Аноним 05/07/23 Срд 18:07:18 2754940 371
двач простой вопросесли я использую символ которого нет в аски и меняется кодировка, получается каждый символ кодируется уже не одним байтом а двумя?
Аноним 05/07/23 Срд 18:09:46 2754949 372
>>2754940
В утф8 переменный размер, тот же аски это его подмножество с теми же кодами.
Аноним 05/07/23 Срд 18:13:41 2754954 373
>>2754949
это значит меняется? или нет?
типа не может же быть что бы одни символы кодировались одним байтов, а другие двумя (или может)?
Аноним 05/07/23 Срд 18:16:44 2754961 374
>>2754954
Может, именно так и есть.
Аноним 05/07/23 Срд 18:42:49 2755028 375
>>2754961
типа когда я пишу char var
откуда он знает сколько памяти выделить? (один или два байта)
я ведь ещё не записал в него никакой символ...
Аноним 05/07/23 Срд 19:08:27 2755064 376
>>2755028
Там отдельные типы и функции, которые с этим работают, обычные вроде latin-1.
05/07/23 Срд 19:40:00 2755148 377
>>2755028
Копай в сторону uchar16_t, uchar32_t, wchar.
Аноним 05/07/23 Срд 19:41:01 2755152 378
>>2755148
Извиняйте, парни, что случайно саганул.
Аноним 05/07/23 Срд 19:51:40 2755169 379
>>2754949
Так, стоп. Переменный размер в каком смысле? Вот есть например японское предложение(условно), каждый символ будет(так же условно, я не знаю сколько там конкретно байт на символ используется) 2 байта, но тут вдруг в этом предложении встречается слово, написанное на английском, то есть умещается в 1 байт каждый символ. Это слово английское тоже будет на каждый символ 2 байта занимать, или тут будет какая-то вуду магия и в данном случае будет уже 1 байт? То есть половина предложения из 2 байт, а другая из 1?
Аноним 05/07/23 Срд 20:08:52 2755200 380
>>2755169
Ну почитай вики, штоле. Там битмаска, которая кодирует длину последующего символа. Суть та же, что в компрессии - самые ходовые символы (аски) занимают минимум в один байт, самые залупные и нинужные больше.
https://ru.wikipedia.org/wiki/UTF-8#%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F
Аноним 05/07/23 Срд 20:18:59 2755223 381
>>2755200
просто это не совсем стыкуется с тем что я читал до этого.
вот например я инициализирую переменную char, но пока не присваиваю ей никакое значение.
Для неё выделяется ровно 1 байт (или ровно два байта)
количество байт не может увеличиться или уменьшится после присвоения. Если в тексте есть символы не из аски, то компилятор заранее как то должен об этом узнать и кодировать всё двумя байтами. Если нет, то и смысла в двух байтах нет и на всё выделяется только один байт.
\Что из этого неверно?
Аноним 05/07/23 Срд 20:24:58 2755231 382
>>2755223
Я же говорю, там другой тип wide char, он резервирует больше, что-то не используется, очевидно.
Аноним 05/07/23 Срд 20:30:09 2755236 383
Аноним 05/07/23 Срд 20:37:23 2755254 384
Аноним 05/07/23 Срд 21:03:34 2755297 385
Как можно получить доступ к видеокарте чтобы отрисовывать пиксели? Я хочу для своих нужд написать простейшую графическую библиотеку, чтоб она точки да линии рисовала. Находил только гайды по SDL, но мне лень её изучать, хочу свою написать.
Аноним 05/07/23 Срд 21:13:10 2755318 386
>>2755297
SDL этим не занимается, насколько мне известно. Это грубо говоря обертка для openGL
Аноним 05/07/23 Срд 21:13:58 2755321 387
>>2755297
А так надо смотреть исходники mesa наверное. И кстати тебе действительно легче свою написать, чем изучить готовое, годами проверенное решение? оптимистично
Аноним 05/07/23 Срд 22:32:05 2755467 388
>>2755297
пихнуть на шину байты?
Аноним 06/07/23 Чтв 01:24:14 2755666 389
image.png 30Кб, 275x183
275x183
аноны
а вот такой вопрос
допустим есть какие то данные (похеру пусть числа будут) как их организовать чтобы поиск по ним был максимально быстрый?

с одной стороны самый быстрый поиск проходит по б-три, но с другой стороны есть префетч сортированных массивов
ну так и что быстрее то в итоге?

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

блять у меня реально зогошиза с этой хуйни начинается, храдварщики сознательно откатывают технологии на 50 лет назад иил чо?
Аноним 06/07/23 Чтв 01:32:12 2755675 390
>>2755666
>храдварщики сознательно откатывают технологии на 50 лет назад иил чо?
Какие еще "технологии", лол?
Все "технологии" были созданы для обхода костылей железа. И половину проблем, которые решают "технологии", можно было решить, отказавшись от x86 в свое время, но срыночек и нужные связи выблядков из intel порешали , поэтому имеем, что имеем.
Аноним 06/07/23 Чтв 01:33:11 2755677 391
>>2755675
Алсо, нет ничего удивительного, что выкидываются костыли, когда проблему решают на фундаментальном уровне.
Аноним 06/07/23 Чтв 01:41:57 2755682 392
>>2755675
>>2755677
а при чем тут костыли? бинарные деревья какой костыль железа обходят? за тайм ты делаешь шаг по массиву или шаг по поинтеру, а теперь хардварщики начитерили и за тайм ты либо делаешь шаг по поинтеру либо 10 шагов по массиву

какие костыли то? мне кажется ты путаешь
Аноним 06/07/23 Чтв 01:56:44 2755693 393
>>2755675
>проблемы можно было решить, отказавшись от x86 в свое время...
>"Весь старый мир мы разрууууушим! До основааанья, а затееем! Мы наш, мы новый мир построооим! С чистогоооо листаааа!"
Слыш, тупое говно, это называется деградация, взять и заруинить достижения прошлого, откатившись в болото недоразвитости. Переписывальщики херовы, каждого такого пидараса надо клеймить как дегенерата и больше ни к чему не подпускать, кроме работы дворником и мойщиком полов, да и то с осторожностью, и там умудрятся нагадить всё испортив.
Аноним 06/07/23 Чтв 02:05:22 2755698 394
>>2755693
Шиз, деградация - это когда еще в 90х годах ты знаешь о том, что твой продукт говно и продолжаешь его пилить. Вот сейчас инцелам полная пизда, потому что лимита по нанометрам достигли, а расширяться больше некуда, архитектура говно, о чем, повторюсь, знали еще в конце прошлого века и другие компании решали эту проблему, но срыночек порешал.
Аноним 06/07/23 Чтв 02:11:02 2755700 395
>>2755698
слыш хардарщик билять хватит говно мне в жопу заливать атвичай пачиму ультрасовременные бинарные деревья с логарифмическим биг оу работают медленнее чем скуфидонские массивы с линейным биг оу

а ну к стенке становись, из за тебя проебываем алгоритмы
Аноним 06/07/23 Чтв 02:42:26 2755710 396
>>2755700
>пачиму ультрасовременные бинарные деревья с логарифмическим биг оу работают медленнее чем скуфидонские массивы с линейным биг оу
Ты же сам ответил на свой вопрос постом выше. На одинаковой железной базе выбор правильного алгоритма или структуры данных могут зарешать, но если на уровня железа есть прикольные фичи, то можешь хоть обосраться со своими алгоритмами.
Это вопрос уровня "Почему программы дидов, которые оптимизировали код сотни часов, лагал, пердел и свестел, а модный и молодежный питончик даже при сортировке пузырьком работает быстро?"
Аноним 06/07/23 Чтв 02:45:50 2755713 397
>>2755698
>рыночек порешал
Я про то и говорю, раньше был качественный профессиональный софт, а сейчас браузерные высеры из говна и палок. Софт деградирует не по дням, а по часам, все плюются. Деграданты отбрасывальщики старого переписыватели дорулились, всё изгадили и опустили на днище.

Как наглядный пример, посмотри на линукс. Уже 40 лет пишут графическую среду, но всё никак не напишут. Каждый раз выкидывают старое и переписывают по новой, и каждый раз становится только хуже и хуже.
Аноним 06/07/23 Чтв 02:49:08 2755716 398
>>2755710
так я тебя и спрашиваю нахуя вы откатываете технологии взад дебилы вы дремучие рептилоиды сука с нибиру иншала вертел нибиру тваю маму рот наоборот
Аноним 06/07/23 Чтв 02:57:39 2755719 399
>>2755716
Какие технологии назад, шиз? Раньше ты пользовался хуйней Х, чтобы обойти косяк копроархитектуры. Теперь это пофиксили и ты пользуешься Y. А все твои технологии в ИТ остановились в развитии где-то в 80-90х. С тех пор ничего прорывного и фундаментального не изменилось. Даже современные ЯП пиздят фичи из старых и малопопулярных языков и выдают за неебаца прорыв.
Аноним 06/07/23 Чтв 03:00:24 2755720 400
>>2755719
сука ты чо меня бесишь рептилоид ты хоть раз назови блять этот косяк который обхиодит костыль в виде бинарного дерева тупая ты хуета блять дремучая заладил про костыли и пояснить нихуя не можешь выйди нахуй с треда
Аноним 06/07/23 Чтв 03:00:26 2755721 401
>>2755713
>Я про то и говорю, раньше был качественный профессиональный софт, а сейчас браузерные высеры из говна и палок. Софт деградирует не по дням, а по часам, все плюются. Деграданты отбрасывальщики старого переписыватели дорулились, всё изгадили и опустили на днище.
Когда у меня приступы такой шизы находят, то я ставлю старую винду(хотя бы xp/vista(про линукс тех времен даже говорить не буду)) на некропеку из чулана и начинаю пользоваться. Сразу пропадают все эти манямысли про НАСТОЯЩИЙ софт дедоф. Это не более чем искажение восприятия и ностальгия.
Аноним 06/07/23 Чтв 03:07:06 2755723 402
>>2755720
>ряяя не смейте делать процессоры быстрее
Лол.
Причина подрыва, шизло? У тебя горит попа с того, что материальный мир побеждает твою идеалистическую хуйню? Если кто-то запиливает ускорение определенных операций на физическом уровне, то очевидно, что они будут работать быстрее всего остального.
Наверное, если создадут такой процессор, который сможет нативно исполнять ФП код, то у тебя вообще анус треснет?
Аноним 06/07/23 Чтв 03:20:23 2755728 403
>>2755723
тебе задали вопрос
ответа ты не знаешь
нахуй ты дальше пукаешь тут уебащие?
Аноним 06/07/23 Чтв 03:28:28 2755730 404
>>2755728
Какой вопрос, выблядок? Ты кроме своего рявканья ничего не с силах сказать. Сначала удивился, что физическая оптимизация оказывается эффективней программной, а потом из-за этого порвался и начал всех рептилоидами обвинять, которые как оказалось манямирок дегенерату сломали. Воистину долбоеб.
Аноним 06/07/23 Чтв 03:33:03 2755733 405
>>2755730
третий раз вопрос повторить?
Аноним 06/07/23 Чтв 03:34:49 2755734 406
>>2755733
Очевидно, да. Ибо ты в каждом из своих постов что-то другое спрашиваешь.
Аноним 06/07/23 Чтв 03:37:26 2755735 407
>>2755734
какой косяк/костыль/маняхуйнянейм архитектуры обходит алгоритм поиска в бинарном дереве?
Аноним 06/07/23 Чтв 04:10:09 2755738 408
image.png 113Кб, 221x228
221x228
ебаный рептилоид билять напердел в тред своих маняфантазий рака хвоста тебе уебище
Аноним 06/07/23 Чтв 06:53:19 2755755 409
>>2755721
>я ставлю старую винду(хотя бы xp/vista(про линукс тех времен даже говорить не буду)) на некропеку из чулана и начинаю пользоваться
Перевожу на человеческий язык: дегенерат пытается запустить хром под хр, тот не запускается, бабах, говно нинужно кал, виндоус11 фарева, во имя святого гугла, аминь

Какое там искаженное восприятие, когда биологический урод без мозгов, у которого восприятие реальности отсутствует за пределом одноклеточной браузеропараши и насасывания корпорации-барину.
Аноним 06/07/23 Чтв 17:16:39 2756376 410
>>2755721
Э, слыш. У меня 98 на Р4 моментом грузится. Почему современный пука так не может, пока не прикупишь еба-ссд?
Аноним 06/07/23 Чтв 17:55:24 2756420 411
изображение.png 9Кб, 298x132
298x132
Я правильно понимаю, что в такой структурке, если я буду выделять память динамически под data, то у меня при выводе contents будет выыводиться адрес, смещенный на 8 относительно наачла структуры?
Аноним 06/07/23 Чтв 18:33:10 2756489 412
Аноним 06/07/23 Чтв 22:56:00 2756857 413
пачаны есть у кого реализация getchar()?
уже весь stdio.h перерыл не могу найти реализацию
Аноним 07/07/23 Птн 01:02:29 2756989 414
image.png 20Кб, 329x210
329x210
image.png 10Кб, 588x59
588x59
Педерасты, объясните, почему сысоев выбрал размещение sentinel где-то в левом месте а не в самой структуре ngx_rbtree_t. Т.е. у него sentinel лежит всегда в каких других местах. Какой в этом смысл?
Аноним 07/07/23 Птн 01:02:38 2756990 415
Аноним 07/07/23 Птн 01:12:18 2756993 416
Аноним 07/07/23 Птн 01:14:10 2756994 417
>>2756993
Педераст, проходи мимо, если не шаришь. Этот тред для серьёзных дядек
Аноним 07/07/23 Птн 01:21:10 2756995 418
>>2756994
ты давай не обзывайся младший инженегр говна
Аноним 07/07/23 Птн 01:21:52 2756996 419
>>2756993
Причем тут троленг? Я тебе скинул вполне доступную реализацию getchar, дальше можно самому найти все что надо. Думаешь в glibc ты что-то найдёшь? там написано все так, чтобы любопытные глазки ТОЧНО НИЧЕГО не смогли понять, вот и гпл весь
Аноним 07/07/23 Птн 01:25:52 2756997 420
>>2756996
меня интересует реализация гетчар а не его дефайны оберток над обертками так что это был траленг с твоей стороны
ладно толку от вас все равно нет пойду дальше копать
Аноним 07/07/23 Птн 09:54:16 2757116 421
в цикле для i желательно указывать char вместо int? что бы типо занимало на три байта меньше, или нет разницы?
Аноним 07/07/23 Птн 10:04:28 2757119 422
>>2757116
В беззнаковый чар можно впихнуть всего 255 значений, поэтому, если твой цикл меньше 255 итераций, то можешь и чар использовать.
Аноним 07/07/23 Птн 10:40:25 2757142 423
>>2757116
смотря как создавать счетчик
если создаешь вне цикла - можешь задумываться о размерах памяти
если создаешь внутри фора - похеру локальная переменная будет уничтожена сразу как только цикл закончит работу

unsigned char i;
for(i = 0; i< 256; i++){}

for(long long i = 0 ; i < size; i++){}
Аноним 07/07/23 Птн 11:31:15 2757180 424
>>2756995
Ты тупой, если е читаешь чужие исходники и не умеешь их понимать. Исходинки великих людей. Замолчи и выйди из треда. От тебя толку нет. Ты ничего полезного в тред не приносишь
Аноним 07/07/23 Птн 12:08:55 2757218 425
>>2757180
Скрипто-макакыч, ты стиль общения поменял, что ли? Теперь ты хочешь казаться самым полезным аноном этого треда?
Аноним 07/07/23 Птн 12:38:04 2757257 426
>>2757218
>Скрипто-макакыч
Докажи, что ты не скриптомокака, глянь исходники величпйщего nginx'а, уверенно занявшую свою нишу от скромного автора, который даже не пиарил его. Потому что код - гениальный. Или ты вопросы только увроня char не char можешь пояснять?! Я же сказал, если ты мимо - то иди назуй просто, не отвечай на сообщения, которые тебе не нужны. Нахуй такие гниды как ты засираете инет своими комментыми нулевыми?
Аноним 07/07/23 Птн 12:42:46 2757264 427
>>2757257
Пояснить не могу, потому что я только учусь. А ты, уёбок, если хочешь что-то серьёзное узнать, то разговор надо начинать не с ёбнутых обращений, а просто с хорошо поставленного вопроса; тогда, возможно, аноны сочтут, что ты достоин ответа.
Аноним 07/07/23 Птн 12:49:23 2757274 428
>>2757264
Если ты только учишься, тогда хуле встреваешь в разговор. А моё обращение отсеивает дебилов, которые ждут на дваче (да и ваще в инете) этикета. А вопрос простой, хуле sentinel для красно-чёрного дерева расположен не в самой структуре дерева ngx_rbtree_t
Аноним 07/07/23 Птн 12:58:25 2757286 429
Аноним 07/07/23 Птн 13:01:09 2757289 430
да просто игнрьте этого даунидзе девопса
пришел тут срать в тред своей хуетой заместо того чтобы начеркать себе юмл диаграммы
такие тупездни достойны только информационной изоляции
Аноним 07/07/23 Птн 13:06:42 2757299 431
Пидорасы со своим срачем не по сабжу тред вайпают суки
Аноним 07/07/23 Птн 13:07:21 2757300 432
>>2756857
алсо макросы гетчара и путчара вкомпилены намертво и голой реализации в стдлибе не будет
реализацию можно было бы найти в исходниках гцц или силанга, но мне лень
кажется прочитать сигналы на ножках проца гораздо проще, чем ковырять исходники компилера

на случай если анон захочет сам реализовать кбхиты
Аноним 07/07/23 Птн 13:08:25 2757301 433
>>2757300
зачем библиотечная функция в компиляторе?
Аноним 07/07/23 Птн 13:11:45 2757305 434
Аноним 07/07/23 Птн 14:03:01 2757376 435
>>2757301
>>2757305
вообще
это HAL ядра, тот самый нативный кусок позволяющий остальные части ядра, такие как например ретранслятор адресов или диспетчер процессов сделать более переносимыми

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

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

так что буду колдовать на асмовставках свой кбхит да я знаю что на стаковерфлоу лежит готовая реализация кбхита свой гетчар/путчар свои потоки
Аноним 07/07/23 Птн 14:59:58 2757437 436
b61da83787ecf9a[...].jpg 29Кб, 500x500
500x500
>2k23
>bool
Аноним 07/07/23 Птн 16:32:37 2757550 437
Двач, какой тип переменных использовать для указателей? Лонг или инт
Аноним 07/07/23 Птн 16:34:38 2757557 438
Аноним 07/07/23 Птн 17:03:40 2757586 439
Аноним 08/07/23 Суб 00:39:21 2758226 440
Аноним 08/07/23 Суб 00:40:39 2758228 441
>>2757437
enum{false,true};
В каждом файле.
Аноним 08/07/23 Суб 15:27:42 2758748 442
Есть прога с байтоеблей. Она падает в какой то момент. Дебагер не подключается по причине того, что исполняемый файл слеплен из разных исходников. Для дебага хочу писать
printf ("text\n"); fflush(stdout); но программа падает и ничего не выводит
Аноним 08/07/23 Суб 21:23:11 2759228 443
двач, допустим я через принтф несколько строк вывел
как вернуть всё на первую строчку и запробелить что бы всё типа удалилось (обьясните, как обьяснили бы своей училке по русскому)
Аноним 08/07/23 Суб 23:14:08 2759278 444
>>2759228
Скорей всего только стирать все. Одну строку можно перезаписывать \r.
Аноним 09/07/23 Вск 00:50:31 2759314 445
>>2758228
>enum{false, true};
>int i = 2;
>if (i == true) printf("anon molodez);
>else printf("anon durak);
ыыы

Лучше уж так
#define false 0
#define true !false

мимо поумничал
Аноним 09/07/23 Вск 01:09:56 2759319 446
1688854195177.jpg 76Кб, 807x935
807x935
Аноним 09/07/23 Вск 02:15:55 2759346 447
Аноним 09/07/23 Вск 04:30:40 2759356 448
>>2759228
>бойся 228 когда пудришь носик

ты печатаешь в консоль символы туда где стоит каретка |
есть юникод управляющие символы последовательности секвенции как удобнее \b вернуться назад на 1 символ и \r вернуться в начало строки
есть анси если твой терминал умеет жрать анси
есть написанные на основе этих штух библиотеки, например curses https://www.ibm.com/docs/ru/aix/7.2?topic=concepts-curses-library
ну и конечно же есть ответы в гугле )
Аноним 09/07/23 Вск 08:17:28 2759401 449
>>2759356
допустим текст 300 символов
тогда надо наспамить 300 раз /b?
Аноним 09/07/23 Вск 09:40:20 2759441 450
>>2759401
Просто попробуй. Ни один стандарт такого не гарантирует.
Аноним 09/07/23 Вск 16:28:07 2759791 451
a[52514],b,c=52514,d,e,f=1e4,g,h;main(){for(;b=c-=14;h=printf("%04d",
e+d/f))for(e=d%=f;g=--b2;d/=g)d=db+f*(h?a:f/5),a=d%--g;}

Какими байтиками нужно манипулировать, чтобы терминировать луп тогда когда захочется?
Аноним 09/07/23 Вск 16:43:28 2759804 452
Аноним 09/07/23 Вск 16:54:48 2759816 453
>>2759791
ладно хрен с тобой поведусь на твой траленг
делай
- goto
- EXIT(1)
- return 0
- raise(15)
Аноним 09/07/23 Вск 17:01:10 2759829 454
Аноним 09/07/23 Вск 17:03:16 2759837 455
>>2759829
>ололо сам моряч как остановить цикол форе
>не траленг
Аноним 09/07/23 Вск 17:04:32 2759840 456
>>2759837
Что тебе не понравилось?
Аноним 09/07/23 Вск 17:08:15 2759848 457
Аноним 09/07/23 Вск 17:09:07 2759852 458
>>2759848
Ладно. подожду более компетентного специалиста.
Аноним 09/07/23 Вск 19:01:37 2760054 459
>>2759791
А g у этого тралля всегда равно мусору? Збс, конечно, циклы, но чему равно g?
Аноним 09/07/23 Вск 19:03:35 2760056 460
>>2760054
Забей!!! Это пост инцелла, у которого при розыске g, эта самая g стремится к бесконечности.
Аноним 09/07/23 Вск 19:09:08 2760062 461
>>2760056
Сук в голос...
Я понимаю, что у инцеллов g при любом раскладе стремится к бесконечности, но мне интересен ответ самого автора цикла.
допустимое число функций. 09/07/23 Вск 20:02:34 2760116 462
Добрый день.
У меня теоретический вопрос.
В результате реверса специально сделанных программ мне удалось прийти к предположению, что число функций в c в рамках одной компиляции ограничено.
К примеру пусть имеется такая программа:
int f1(){}
int f2(){}
int f3(){}
...
int fN(){}
int main(){}


Теперь вопрос:
Какое наибольшее значение N в такой ситуации? Я правильно понимаю, что какой-нибудь gcc не будет работать при достаточно большом N?
Аноним 09/07/23 Вск 20:16:04 2760123 463
image.png 7Кб, 625x53
625x53
>>2760116
Во-первых, первоклассному траллю, на мой взгляд, мешает сажа пикрилл один.
Во-вторых, кол-во функций всегда можно загнать в константу ОСи плюс один шурупишь о чём я?
В-третьих, могу сделать смелый вывод - ты наиглупейшая скриптомакака, которая пытается траллить тред умных ребят, а потому...шёл бы ты отсюда подальше, дебич, пока обоссаны, у тебя, только карманы за щеками
Аноним 09/07/23 Вск 21:02:29 2760190 464
>>2760054
При чем тут тролль?
>>2760056
При чем тут инцел?

Тут старперы любят вонять, как они байты ебут, не то что сейчас молодежь в своих джаваскриптах, а по итогу даже чужой год прочитать не могут.
Аноним 09/07/23 Вск 21:05:16 2760196 465
>>2760123
Умный, подскажи как модифицировать код, чтобы можно было указать число итераций тут>>2759791.
Аноним 09/07/23 Вск 21:06:20 2760198 466
>>2760116
Ограничено размерами стека скорей всего.
Аноним 09/07/23 Вск 21:17:46 2760211 467
>>2760190
>Тут старперы любят вонять, как они байты ебут
Ахахах, узнаю почерк "любимого" скриптомакаки! g чему равно?
>>2760196
Ещё раз, дебильнейшая скриптомака, у тебя второй цикл имеет условие:
>g=--b2;d/=g
А дальше сам цикл равен:
>d=db+f*(h?a:f/5),a=d%--g;}
В котором неясно что такое "g"!!!
Так же как и неясно, что такое g из первого цикла и из, как я понимаю, констант, что ты хотел ввести в программу:
>a[52514],b,c=52514,d,e,f=1e4,g,h;
>{for(;b=c-=14;h=printf("%04d",
e+d/f))

Так о чём ты хочешь ещё узнать, дебич? Ты пытаешься троллить в стиле майндфак??? Но из-за твоей тупости у тебя это не получается, скриптомакакыч. Хотя, то, что ты задал интересно с точки зрения внимательности, следовательно, "когнитивки".
Аноним 09/07/23 Вск 21:20:11 2760216 468
>>2760211
Почему тогда все работает?
Аноним 09/07/23 Вск 21:23:09 2760220 469
>>2760211
Там просто два умножения и макаба заменила их италиком. Смотри где начинается итаилик и где заканчивается.
Аноним 09/07/23 Вск 21:23:57 2760221 470
>>2760216
Пиздос! Потому что в где-то в программе "объясняется" что такое g, Либо, работает не так, как изначально планировал ты, когда писал программу.
Аноним 09/07/23 Вск 21:24:53 2760223 471
>>2760221
Не понятно, что ты имеешь в виду.
Аноним 09/07/23 Вск 21:28:07 2760226 472
>>2760223
Я имею ввиду, что ты конч!! Какое ещё двойное умножение, блять???? У тебя явное деление на g. Короче, дебич, кидай код на пастебин, где нельзя будет обвинить макабу.
Аноним 09/07/23 Вск 21:32:20 2760231 473
Аноним 09/07/23 Вск 21:35:10 2760233 474
>>2760231
Ахахахах, какая же предсказуемая скриптомакака, которую взяли за жопу!!!!
Аноним 09/07/23 Вск 21:35:47 2760235 475
Аноним 09/07/23 Вск 21:52:30 2760243 476
image.png 9Кб, 597x117
597x117
>>2760235
Не, сорян! На пастебине этот код имеет немного больше смысла, чем на дваче, но всё же это хуита. Чему равен пикрилл?
Аноним 09/07/23 Вск 22:10:51 2760260 477
image.png 17Кб, 582x83
582x83
Аноним 09/07/23 Вск 22:12:09 2760263 478
>>2760123
1) Если ответа не знаешь, не пиши.
2) Смотри пункт 1).
Аноним 09/07/23 Вск 22:15:23 2760266 479
image.png 18Кб, 722x77
722x77
>>2760260
Здесь тоже мусор находится.
D в этом коде вообще ничего не присваивается. Единственное что можно предположить, что какой-то конченый компилятор занулил стековую переменную(что очень маловероятно), к тому же в коде в функции main() типа нет, 89 стандарт какой-то.
Тролляка со своей говно laba1.c завайпал тред, поздравляю
Аноним 09/07/23 Вск 22:19:44 2760270 480
>>2760266
А, ну всё верно, d это и не стековая переменная, ей 0 изначально объявлен
Аноним 09/07/23 Вск 22:27:25 2760275 481
>>2760266
>D в этом коде вообще ничего не присваивается.
Равна нулю.
>main() типа нет
int не обязательно писать.
Аноним 09/07/23 Вск 22:28:37 2760276 482
image.png 10Кб, 651x137
651x137
image.png 17Кб, 582x83
582x83
>>2760275
>Равна нулю.
Каким образом?
Аноним 09/07/23 Вск 22:28:45 2760277 483
>>2760275
В текущем стандарте обязательно
Аноним 09/07/23 Вск 22:29:09 2760279 484
>>2760276
Таким что это статичная переменная, которая инициализируется нулём. Это факт, база
Аноним 09/07/23 Вск 22:33:57 2760282 485
>>2760277
Текущий вышел пару недель назад.
Аноним 10/07/23 Пнд 02:06:18 2760382 486
вот вам не лень разбирать какой то кал говна

запомните мрази
плохой код с хорошим неймингом - говнокод
хороший код с плохим неймингом - кал говна
Аноним 10/07/23 Пнд 08:32:42 2760446 487
>>2760190
А причём тут байтоебля? Там же просто нечиьаемый говнокод какой-то.
Аноним 10/07/23 Пнд 10:28:50 2760538 488
изображение2023[...].png 191Кб, 1920x1080
1920x1080
бля, кодить на винде, да ещё и в виме, ебать я крутой
Аноним 10/07/23 Пнд 10:48:37 2760546 489
image.png 18Кб, 510x231
510x231
Здравствуйте. Нашел одну программку(https://github.com/henrypp/memreduct/tree/master), ради интереса захотелось разобраться в исходниках и вижу тут такое(пик1), в проекте идет какой-то относительный путь, видимо, текущего проекта(не работал под вижлой), но на гитхабе то этих исходников нет, я если загружу эти исходники, то у меня не будет этих файлов, которые используются в программе. Как ее собирать-то тогда? бред какой-то
Аноним 10/07/23 Пнд 10:53:18 2760551 490
>>2760546
бля, хуй знает. почитай на странице репозитория, может там какие-то зависимости есть
Аноним 10/07/23 Пнд 12:01:59 2760604 491
image.png 56Кб, 868x284
868x284
image.png 200Кб, 1190x887
1190x887
>>2759791
Анон, а что ты имеешь в виду под байтиками, на которые ты хочешь влиять? Очевидно, что влиять ты можешь, отталкиваясь от кол-ва итераций, где "1" это переменная b, которая у тебя уменьшается на 14 в первом цикле, а "2" это уже введённая мною переменная, которая считает кол-во итераций во вложенном цикле.
А вообще твой внутренний цикл выглядит так - пикрилл один. Участки кода, которые я выделил, зависят от переменной g, поэтому ты можешь ею манипулировать, чтобы не вводить доп. переменную. И, кста, у тебя какая-то бестолковая первая итерация (можешь глянуть на пикрилл один) на переменную d.
Аноним 10/07/23 Пнд 12:03:17 2760605 492
>>2760604
>А вообще твой внутренний цикл выглядит так - пикрилл один.
*пикрилл два
быстрофикс
Аноним 10/07/23 Пнд 12:54:49 2760650 493
>>2760604
Разобрался. Не b, а с. b нужна для второго цикла.
>>2760446
Обычный код безо всякой смуззи хуйни.
Аноним 10/07/23 Пнд 13:06:38 2760667 494
>>2760650
Указание типов и соблюдение разметки это смузи хуйня чтоли?
Аноним 10/07/23 Пнд 13:14:11 2760683 495
>>2760667
>Указание типов
Отсутствие типа это указание инта
>соблюдение разметки
Это не Питон.
Аноним 10/07/23 Пнд 13:15:46 2760687 496
>>2760650
>Не b, а с. b нужна для второго цикла.
Ну это да, просто у тебя b приравнивается с уже в условии фора, следовательно, т.к. фор начинается с проверки условий (т.е. нет никаких инициализаций), то первым делом программа прыгает в участок кода (машинного), где происходит проверка этого условия, т.е. получается, что первым делом b присваивается с уменьшенная на 14, и дальше уже программа исходит из этого. А так да, уменьшается на 14 с.

>>2760667
>Указание типов и соблюдение разметки это смузи хуйня чтоли?
Да ладно тебе! Это было весело. Если бы я вчера самогоном не нахерячился, то всё уже вчера решил бы (заместо того, чтобы писать вчера тут пьяную хернь), а так этот код мне сегодня даже снился в каком-то лютом, пьяно-угарном сне.

>>2760683
Анон, давай ещё что-нибудь подобное неси сюда.
Аноним 10/07/23 Пнд 13:28:52 2760704 497
>>2760667
смузихлебы были папущины
интересно когда перекат
Аноним 10/07/23 Пнд 13:43:55 2760722 498
>>2760683
При чем тут питон, когда речь о читаемости. Ты же, что бы ответить на пост, воспользовался гринтекстом для разметки. Почему это не стоит делать в коде для читаемости?
Аноним 10/07/23 Пнд 14:10:40 2760759 499
16019882052961.mp4 1361Кб, 704x576, 00:00:04
704x576
>>2760704
>смузихлебы были папущины
Аноним 10/07/23 Пнд 14:14:24 2760764 500
>>2760722
Потому что в случае двача, разметка имеет свое поведение.
Аноним 10/07/23 Пнд 14:38:09 2760789 501
>>2760764
не хочу хвастаться, но я юзаю Си в связке с питоном
Аноним 10/07/23 Пнд 15:53:15 2760881 502
>>2760789
я юзаю си а в руке питон
Аноним 10/07/23 Пнд 16:05:05 2760887 503
>>2760764
Ты либо тралишь, либо просто виляешь жепой до последнего, ну дело твое.
Аноним 10/07/23 Пнд 16:46:45 2760945 504
>>2760881
хорошо хоть не СиШарп
Аноним 10/07/23 Пнд 16:48:45 2760949 505
Аноним 10/07/23 Пнд 16:53:42 2760957 506
>>2760887
Закономерное врети смузихлёба.
Аноним 10/07/23 Пнд 16:58:25 2760967 507
>>2760949
сыглы. норм пацаны ебашат на си и мыслят системными вызовами
Аноним 10/07/23 Пнд 16:58:55 2760969 508
>>2760949
сыглы. норм пацаны ебашат на си и мыслят системными вызовами
Аноним 10/07/23 Пнд 18:15:00 2761142 509
Подскажите , пожалуйста, есть ли в C перегрузка функций?
Я раньше думал, что нет в чистом C перегрузки, однако сегодня узнал, что функция open() имеет два набора параметров:
int open(const char pathname, int flags);
int open(const char
pathname, int flags, mode_t mode);


Это как-то макросами сделано или тут какой-то совсем иной уровень знания C?
Аноним 10/07/23 Пнд 18:29:26 2761149 510
>>2761142
да, макросами. в С нет перегрузки функций, эта фича, как и многие другие, были добавлены только в С++
Аноним 11/07/23 Втр 00:11:16 2761627 511
Есть ли ограничение на размер открытого файла в си?.
Я так понимаю, что если off_t может иметь число значений от 0 до 2^(32)-1, то всего можно адресовать в файле 2^(32) байт=2^(22) КБ=2^(12)МБ=4 ГБ.
Я прав или где-то ошибаюсь?
Аноним 11/07/23 Втр 03:52:21 2761680 512
>>2761627
Во-первых, "сикать" можно многократно от текущего положения указателя. Во-вторых есть всякие lseek64, llseek.
Аноним 11/07/23 Втр 03:58:34 2761681 513
Я, правда, не проверял вышесказанное. ) Теоретически ответил.
Аноним 11/07/23 Втр 08:40:57 2761732 514
>>2761627
это вроде пределы для адресной архитектуры памяти при 32битном машинном слове так что полагаю анон с сиком64 вырулит ситуацию
Аноним 11/07/23 Втр 13:25:16 2761911 515
16887439373881.jpg 136Кб, 564x564
564x564
>>2761627
> Есть ли ограничение на размер открытого файла в си?.
В Си нет. В отдельных функциях типа fseek есть.
Аноним 11/07/23 Втр 13:32:22 2761921 516
>>2761911
Ограничение обусловлено только количеством разрядов или там какая-то конкретная цифра есть?
Аноним 11/07/23 Втр 13:53:07 2761938 517
>>2761921
Количество разрядов + особенности библятеки и ОС. Тебе никто не гарантирует, что файловая система поддержит файлы до 12345 байт.
Аноним 12/07/23 Срд 08:02:54 2762677 518
что именно определяет тип переменной?
Аноним 12/07/23 Срд 08:07:31 2762680 519
image.png 2711Кб, 2048x1365
2048x1365
>>2760704
чо против смузи имеешь?
Аноним 12/07/23 Срд 08:27:48 2762691 520
>>2762680
да я и сам люблю хлебнуть кефирчика с ягодами под макарошки с сосисками
ой прости, переведу на ваш
да я и сам люблю полакомиться смузи под напоритан
Аноним 12/07/23 Срд 08:28:19 2762692 521
Аноним 12/07/23 Срд 08:35:30 2762698 522
Аноним 12/07/23 Срд 08:55:41 2762707 523
>>2762698
Допустим я произнес божье слово int.
Что оно определяет для переменной (кроме размера выделяемой памяти)
Аноним 12/07/23 Срд 09:04:41 2762709 524
>>2762707
то как по дефолты будут декодироваться биты в памяти, в данном случае как знаовые целочисленные
Аноним 12/07/23 Срд 09:45:03 2762730 525
>>2762707
Грубо говоря, какие операции имеет смысл выполнять.
Аноним 12/07/23 Срд 09:48:51 2762734 526
>>2762730
А зачем тогда нужны спецификаторы, если тип уже все определил?
Аноним 12/07/23 Срд 09:48:59 2762735 527
>>2762730
да и ето то жи, флоаты вроде на отдельном матядре штампуются
Аноним 12/07/23 Срд 09:56:50 2762740 528
>>2762734
какие спецификаторы?
спецификатор области видимости сообщает компилятору область видимости
спецификатор регистровости сообщает компилятору желание присобачить переменную непосредственно на регистр
спецификаторы знаков сообщают как следует читать старший бит
спецификаторы длины сообщают компилятору о модификациях длины байт для чтения записи данных
чо там еще есть?
Аноним 12/07/23 Срд 10:13:31 2762746 529
>>2762740
Я имел ввиду %d %c %f
Не знаю как они называются
Аноним 12/07/23 Срд 10:45:24 2762763 530
>>2762746
это "гнезда" для форматного ввода/вывода чтобы туда подставлять переменные
я не копал реализации форматных вводов/выводов, но думаю там что то по типу войд поинтера который кастуется к типу который вычисляется из форматной строки например %d вычислит что нужно кастануть к (int*) типа того
Аноним 12/07/23 Срд 12:09:38 2762866 531
>>2762734
>если тип уже все определил
В языках выше уровнем тип учитывается автоматически. В си этим управляет программист.
Аноним 12/07/23 Срд 12:50:46 2762891 532
>>2762746
Форматные специкаторы.
printf не знает тип переданных переменных, он видит только кусок памяти на вершине стека, где эти переменные одна за другой + выравнивание. scanf там видит только ряд указателей на что-то.
Аноним 12/07/23 Срд 15:37:39 2763092 533
Аноним 12/07/23 Срд 21:35:40 2763593 534
#include <stdio.h>
int main(){
int b = 0;
char a[] = "Hello world";
while ( &a != "/0"){
printf("%c",a);
b++;
}
return 0;}

че не получается, что за ошибка
Аноним 12/07/23 Срд 21:53:32 2763610 535
Аноним 12/07/23 Срд 23:24:40 2763694 536
>>2763593
попробуй так:

#include <stdio.h>

int main()
{
char a[] = "Hello world!";
short b = sizeof(a)/sizeof(char);

for(short i=0; i<b; i++)
printf("%c",a);

return 0;
}
Аноним 12/07/23 Срд 23:29:40 2763698 537
Аноним 12/07/23 Срд 23:30:54 2763700 538
>>2763694
эм... крч хз не отоброжается почемуто, поставь квадратные скобки с i
Аноним 12/07/23 Срд 23:53:06 2763724 539
>>2763694
> short b = sizeof(a)/sizeof(char);
Правильно sizeof a - 1
Аноним 13/07/23 Чтв 00:13:23 2763747 540
>>2763724
Что бы не засчитывать \0?
А почему нет?
Аноним 13/07/23 Чтв 05:51:41 2763821 541
>>2763593
>while ( &a != "/0"){
while( a != '\0' )

>printf("%c",a);
printf ("%c",a);

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

printf("%s", a);
puts(a);

без всяких там вайлов и проверок на символ конца строки
к тому же например компилятор считает две строки записанные друг за другом одной строкой а твой алгоритм так считать не будет
Аноним 14/07/23 Птн 08:19:15 2765297 542
Вот такой вопрос назрел.
Функция ведь где то хранится, правильно? Ее так сказать исполняемый код загружается в рам? Тоесть она сама по себе занимает место в раме? А если функцию реализовать макросом? Макрос так же занимает место в раме? Имеет ли смысл переписывать функции макросами вообще? Часто встречаю фул листы макросов в юниксовых микропрограммах, которые заменяют простые двустрочные функции. Зачем это сделано? А если например больше строк замакросить? В чем профит так сказать?
Аноним 14/07/23 Птн 08:24:03 2765299 543
>>2765297
Могу ошибаться, но таким образом ты инлайнишь код, чтобы не вызывать каждый раз функцию. То есть, этот макрос просто подставляет записанный код на место его использования.
Аноним 14/07/23 Птн 08:28:17 2765300 544
>>2765299
Тобишь нет хождения по памяти в другой сегмент и теоретически код быстрее? Так что ли?
Аноним 14/07/23 Птн 10:21:53 2765369 545
>>2765300
Как бы да, но таким образом код занимает больше памяти, потому что каждый раз вставляется на месте использования макроса.
Аноним 14/07/23 Птн 10:32:22 2765377 546
>>2765369
Тоесть выбор либо жирнее по РАМ и быстрее, либо тоньше и медленее? Правильно я понял?
Аноним 14/07/23 Птн 10:54:28 2765399 547
>>2765377
Да, но мб позже кто прошаренее придет и лучше пояснит.
Аноним 14/07/23 Птн 11:04:30 2765409 548
Аноним 14/07/23 Птн 11:13:30 2765413 549
>>2765409
Потому что в строке есть символ конца строки.
Слово из 5 букв Hello если записывать посимвольно имеет длину 5 байт, а если как строку то 6 байт.
Аноним 14/07/23 Птн 11:14:03 2765414 550
>>2765409
потому что sizeof возвращает размер массива в байтах, а строка это массив символов, ограниченных нулем. Размер строки заранее известен на этапе комплияции, так, строка "Hello world!" на самом деле является "Hello world!\0"
Аноним 14/07/23 Птн 11:14:39 2765415 551
>>2765413
а почему его нельзя считать?
Аноним 14/07/23 Птн 11:17:17 2765417 552
>>2765415
Потому что Стетхем запретил. Вопросы?
Аноним 14/07/23 Птн 11:19:59 2765418 553
>>2765399
>>2765377
Да нечего тут объяснять. Вот цитата из книги Ван Гуйа про программирование на ассемблере, из которой можно понять, что макросы выгоднее тогда, когда есть очень большое кол-во вызовов одной и той же ф-ции, следовательно, код становится объёмнее, но зато производительнее:

При многократном использовании в программе одного и того же набора ин
струкций можно создать функцию и вызывать ее каждый раз, когда необхо
димо выполнить эти инструкции. Но для функций характерно снижение про
изводительности: при каждом вызове функции поток выполнения переходит
к вызываемой функции в некоторой области памяти, а после ее завершения
возвращается обратно в вызывающую программу. Вызов функции и возврат
из нее требуют определенного времени.
Чтобы избежать подобных проблем с производительностью, можно вос
пользоваться макрокомандами (или просто макросами – macros). Как и функ
ция, макрос представляет собой последовательность инструкций. Макросу
присваивается имя, и когда нужно выполнить этот макрос в коде, вы просто
указываете его имя, возможно, сопровождаемое аргументами.
Важное отличие от функции: во время ассемблирования везде, где в исход
ном коде встречается «вызов» макроса, NASM заменяет имя этого макроса
на набор инструкций, записанных в его определении. Во время выполнения
не происходит никаких переходов и возвратов, потому что NASM уже вставил
машинный код во всех необходимых местах.
Макросы не являются функциональным свойством языка ассемблера Intel,
но эта функциональность предоставляется NASM (или другой версией про
граммы ассемблирования). Макросы создаются с помощью директив препро
цессора, и NASM использует макропроцессор для преобразования макросов
в машинный язык и вставляет инструкции машинного языка в соответствую
щие места в коде программы.
Макросы позволят улучшить скорость выполнения кода, но они увеличива
ют объем кода, потому что во время ассемблирования инструкции из опреде
ления макроса вставляются в каждую локацию, где используется макрос.
Аноним 14/07/23 Птн 11:40:45 2765436 554
>>2765418
Ну а вот применительно к современным процам как оно? Однообразные инструкции префетчатся на кеши или так только сортед байты умеют делать?
Аноним 14/07/23 Птн 18:19:37 2766064 555
>>2765436
>Ну а вот применительно к современным процам как оно?
А хз! Надо эксперементнуть! Написать простенькую программу, которая будет вызывать овер9000 раз одну и ту же ф-цию, а потом ту же прогу, которая подставит овер9000 раз один и тот же макрос в код, и запустить эти проги через какую-нибудь утилиту вроде time.
Аноним 14/07/23 Птн 18:24:36 2766065 556
>>2766064
То же об этом думал. Но замер времени на эвм необъективный когда прога исполняется в авм слое. Объективные замеры могут быть на слое самой ОС.

Ну или самый близкий к объективному замер - читать регистр в котором хранится число тактов, надеясь на то что проц параллельно не будет тратить такты на какой то другой процесс.
Аноним 14/07/23 Птн 18:32:34 2766083 557
> пориджи задротят
Аноним 14/07/23 Птн 18:36:17 2766098 558
>>2766083
это тредик морей, а не питухонов
Аноним 14/07/23 Птн 18:37:59 2766105 559
>>2766065
>надеясь на то что проц параллельно не будет тратить такты на какой то другой процесс.
Ну тут же математика, которая позволяет просто вычесть, либо прибавить кол-во тактов.
Аноним 14/07/23 Птн 19:04:22 2766162 560
>>2766105
Я имею в виду, что у той же утилиты time кол-во тактов, которая она тратит на запуск программы всегда одинаковое, т.е. этими тактами можно пренебречь, суть же в том, что time запустила процесс (записала куда-то время запуска), а после того, как процесс вернул управление time вычла из времени окончания процесса время начало процесса. Правда, я не знаю точный алгоритм этой утилиты, но логика подсказывает, что алгоритм должен быть подобный, т.к. в такой реализации эта утилита не лезет в сам процесс и не мешает его тестировать. Если кто-то знает как робит time, то поделитесь инфой, ибо мне самому это интересно.
Аноним 14/07/23 Птн 19:14:58 2766184 561
>>2766162
Да блин просто прочти какие нить доки по time.h все ноги оттуда растут и никакой волшебной палочки нет. Как я уже писал замеры на авм слое необъективные.
Аноним 14/07/23 Птн 19:21:04 2766195 562
>>2766184
>никакой волшебной палочки нет
А хотя.. А вот что насчет UTC? Она ведь где то просчитывается параллельно. Или нет? Понятно что если в ОСи стоит синхронизация с интернетом то UTC пингуется и возможны веббаунд шумы в вычислениях, но поидее она так же параллельно должна считаться на камне, только вот на каком? Ну неужели на центральном?
Аноним 14/07/23 Птн 19:26:29 2766196 563
>>2766195
Чёт ты, по-моему, перебарщиваешь! Даже, если программу запускать без замера, то время же всё-равно процессор будет просчитывать, поэтому этой твоей заморочкой тоже можно пренебречь.
Аноним 14/07/23 Птн 19:31:23 2766206 564
>>2766196
Ну тогда у меня только одна идея. Вкомпилить тестовый кусок в ядро для замеров. Только так можно дать объективную оценку скорости выполнения.
Аноним 14/07/23 Птн 19:40:20 2766213 565
>>2766206
Я тебя поддерживаю! Мне уже безумно интересно какой код быстрее.
Аноним 15/07/23 Суб 04:50:47 2766634 566
блять, епта, дорогие сэры, откройте уже для себя BPF и замеряйте сколько влезет
Аноним 15/07/23 Суб 07:59:41 2766690 567
>>2766634
>BPF
Блять я читая этот поток воды их жопы на хабре надеялся что ты что то умное принесешь. Тьфу ты.
Аноним 15/07/23 Суб 08:52:31 2766720 568
>>2766213
Я нашел ответ без трогания ядра посредство kmload например.
Отдельные инструкции (по крайней мере на х86_64) не фетчатся на кешлинии. Зато инструкции функций фетчатся на кешлинии, но если хочется максимальной оптимизации их надо выравнивать по кешам проца. Ну дальше то вы сам знаете.

Крч вердикт такой.

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

спасибо
Аноним 15/07/23 Суб 10:30:02 2766764 569
>>2766720
Спасибо, но я, если честно, ничего не понял! Что выгоднее то: функции или макросы?
Аноним 15/07/23 Суб 10:34:22 2766765 570
>>2766764
Если на процах с кешлиниями - функции быстрее макросов, массивы быстрее связных списков.
Если на процах без кешлиний - макросы быстрее функций, связные списки (ака б-три) быстрее массивов.
Аноним 15/07/23 Суб 10:59:53 2766779 571
Аноним 15/07/23 Суб 16:25:37 2767240 572
>>2766690
причем тут bpf и хабр вообще. задача какая нахуй, твердо и четко?
>Вкомпилить тестовый кусок в ядро для замеров
нахуй что-то вкомпиливать в ядро для объективности замеров, вы ебанутые?
Аноним 15/07/23 Суб 16:41:53 2767275 573
>>2767240
Да уже все выяснили, обтекай.
Аноним 15/07/23 Суб 17:21:19 2767321 574
Аноним 18/07/23 Втр 00:55:52 2770725 575
чуханы, перекатывать буем?
Аноним 18/07/23 Втр 09:31:20 2770895 576
>>2770725
Сам и перекати, чухан.
Аноним 20/07/23 Чтв 19:15:31 2775243 577
В общем аноны, у меня трабол.
Пару дней уже пишу аналог cal/ncal потому что мне ваще посрать на его функции по выводу григорианского календаря или юлианского. Мне нужны заметки по датам вот и все. Но я столкнулся с рядом проблем.

Проблема номер 1 - как бы проще вытянуть из файла структурки? Я пробовал fscanf но этот пидор не возвращает EOF хоть вот обоссысь. Гавно какое то. Я пробовал fgets и потом раскладывать строку по структуре в том числе при помощи atoi() и всякое такое, но это пизда дрочь ебаная, шаг в право шаг влево сегментейшен фаулт.

И вообще вот поскажите если я fgets прочитал в условный char str[], то как мне положить строковый литерал куда нить в другое место, чтобы потом из структуры по тупому чар поинтер на это место поставить и забыть?

Проблема номер 2 - я заебался бороться с АНСИ стандартом. Вот я разметил себе два поля слева и справа одно для календарика на месяц (уже распечатал все красиво) и для всяких там тасков. Но когда я пытаюсь вернуть каретку наверх чтобы напечатать правый блок у меня тупо затираются уже напечатанные строки. Тоесть был например напечатан календарик на 10 строк, делаю MoveUp(8) и остается 2 напечатанных строки календарика. Блять!

Крч есть идеи?
Аноним 20/07/23 Чтв 20:55:46 2775375 578
Аноним 20/07/23 Чтв 21:09:44 2775384 579
>>2775375
Не подходит. Там по структуре должна лежать строка произвольного размера. Числа числа числа флаги и строка.

Так что fgets самый норм варик с последующим разбором.

Лучше подскажи, вот если например я положу байты из char str[] в локальную хуету char str_copy[], то после удаления локальой хуеты там останется литерал? Ну если я туда поинтер загоню он найдет этот кусок или кусок то же исчезает?
Аноним 20/07/23 Чтв 21:29:14 2775402 580
>>2775384
Хотя чот я туплю, можно же салоцировать просто кусок байт какого нужно размера и сразу заебшить на него поинтер.

А как в итоге два текстовых блока напечатать? Опять собирать супердлинную строку и за раз ее ебашить путсом? Бля вот я капец как не хочу этот прием юзать, но пока не вижу решений. АНСИ неадекватно кареткой управляет.
Аноним 21/07/23 Птн 12:58:06 2776012 581
Снимок экрана 2[...].png 217Кб, 1278x400
1278x400
Ну и в чем я не прав?
Я не понимаю где блять косяк то? Алоцирую, разбираю строку на детальки (это работает заебись), переключаю поинтер на некст, некст не алоцируется.

ПАЧИМУ БЛЯТЬ
Аноним 21/07/23 Птн 13:05:13 2776028 582
>>2776012
Потому что переприсваиваю. Блять я тупой пизда. Лучше бы я в психолухи пошел.
Аноним 22/07/23 Суб 04:02:22 2777106 583
есть какой нибудь однострочный метод определения ширины консоли? по символам всмысле. да я в курсе там буферы хуюферы, подключи курсес и не парься хуярься. а есть вот 2 строки ебаных мне больше ничо не надо кроме как знать ширину по символам в момент захода в мейн
Аноним 22/07/23 Суб 20:00:39 2777950 584
>>2777106
Похоже я тут единственный постер.

#include <sys/ioctl.h>
//macro
#define _getTermSizestruct winsize w;ioctl(STDOUT_FILENO, TIOCGWINSZ, &w)
#define COLUMNS(w.ws_col)
Аноним 22/07/23 Суб 20:02:45 2777951 585
Снимок экрана 2[...].png 126Кб, 1510x158
1510x158
>>2777950
Отступы проебались. Пик релейтед на юниксах.
Аноним 25/07/23 Втр 00:54:24 2780348 586
>>2741910

Как решаешь проблему написания "подобных" структур данных?

Я сам предпочитаю Си остальным языкам, но в программах то и дело приходится реализовывать множество списков/стеков/очередей/..., которые мало чем отличаются между собой. Естественно само написание доведено до автоматизма, но иметь десяток похожих методов "push" - сомнительная практика. Можно конечно макросами обернуть, но выглядит это не очень.

Имхо, шаблоны в C++ являются самой полезной фичей, которую добавил Страуструп. Причём тот их вариант, который описывается во втором издании "Cpp prog lang" уже достаточен.
Аноним 25/07/23 Втр 15:33:14 2780933 587
>>2780348
Ды хазы, как по мне макросы легче читать, чем шаблоны.
Аноним 26/07/23 Срд 11:47:03 2781991 588
>>2741910
>«си с классами» —
Кал говна. Дальше не читал.
Аноним 27/07/23 Чтв 16:39:02 2784166 589
Какой конпилятор самый лучший?
Аноним 30/07/23 Вск 13:39:16 2787762 590
Аноним 03/08/23 Чтв 11:34:23 2792311 591
image.png 8Кб, 336x51
336x51
Есть вопрос по поводу порядка байт. В памяти переменная u будет представлена как 0xddccbbaa, почему при сдвиге вправо на 16 бит мне выдает 0xaabb, как если бы это было big endian?
Аноним 03/08/23 Чтв 18:22:05 2792937 592
>>2792311
>В памяти переменная u будет представлена как 0xddccbbaa
Проверь на всякий случай.
Аноним 03/08/23 Чтв 18:27:06 2792944 593
>>2792937
А, не, нет сымслв. бит шифты не зависят от эндианов.
Аноним 04/08/23 Птн 00:53:28 2793303 594
>>2792311
Пиздец. Не могу понять чему ты удивляешься. Двинул вправо осталась только левая часть. Пачиму так двачик?

Может быть ты путаешь операции и представление байтов на шине/регистрах/в рам?
Аноним 04/08/23 Птн 01:11:55 2793313 595
>>2793303
>Двинул вправо осталась только левая часть
Дальше не читал, как и ты, видимо.
Аноним 04/08/23 Птн 01:51:20 2793319 596
>>2793313
Ну так ты почитай. Или хочешь тебе образовательный материал притащу в видивоформате, если читать для тебя сложно.
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов