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


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
507 38 136

C Programming Language #50 /clang/ Аноним # OP 11/11/19 Пнд 21:12:17 15189191
C Programming L[...].png (78Кб, 792x1023)
792x1023
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

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

Что читать:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).
- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.

Прошлые треды:

- №47: http://arhivach.ng/thread/475391/
- №48: http://arhivach.ng/thread/495505/
- №49: http://arhivach.ng/thread/496205/ >>1500890 (OP)
Аноним 11/11/19 Пнд 21:49:05 15189532
Юбилейный тренд, всем итт шланг и хороший Линукс дистрибутив за мой счёт
Аноним 11/11/19 Пнд 21:49:48 15189543
алсо, верните наконец wandbox в шапку.
Аноним # OP 11/11/19 Пнд 22:47:24 15189814
>>1518953
Юбилейный будет еще через 14.

>>1518954
> wandbox
Спасибо, в следующий раз будет.
Аноним 12/11/19 Втр 02:06:46 15190655
>>1518919 (OP)
Нужно сохранить файл.
Так вот, он сохраняется куда-то в "С:\Documents and Settings\User\Application Data\proga\file.ololo"
А надо его сохранить рядом с папкой, откуда exe запускается.
Так вот, вопрос: как из строки С:\Documents and Settings\User\Application Data\proga\file.ololo получить file.ololo
и как правильно его сохранить так, чтобы путь указать относительный, и относительно папки с программой?
Путь содержится в переменной static char Жpath, где вместо Ж - звёздочка, от которой разметка здесь едет.
Аноним 12/11/19 Втр 09:33:00 15191546
>>1519065
>Так вот, он сохраняется куда-то
Так вот, ты программист или не туда зашел петушок? Файлы не сохраняются сами куда-то, они сохраняются куда ты написал сохраняться.
Аноним 12/11/19 Втр 15:16:52 15193517
>>1519154
Я спросил о том, как из полного пути в переменной
>const char ☀path = "С:\Documents and Settings\User\Application Data\proga\file.ololo получить file.ololo";
извлечь только имя файла
>char ☀name = "file.ololo";
Аноним 12/11/19 Втр 15:18:45 15193538
>>1519351
Ну и как правильно сохранить этот file.ololo в папку, рядом с exe-шником.
То есть, какой путь относительный должен быть у файла?
Ну, там "./file.ololo", или "/file.ololo" или же просто "file.ololo", чтобы оно сохранилось и не выёбывалось мне больше.
Аноним 12/11/19 Втр 15:26:36 15193609
>>1519351
Ты либо толстишь, либо очень очень очень очень очень тупой.
Аноним 12/11/19 Втр 16:08:45 151939310
>>1519360
Я только вкатился в этот говнокод. Трудно разобраться что к чему там.
Там столько всего изменили - пиздец просто. Нихуя не пашет и крашится.

Вот здесь где-то ошибку бьёт: https://github.com/uTox/uTox/blob/37dba1af57b0b615abd1c649ba551b21e796a9d0/src/windows/filesys.c#L95
И прога закрывается нахуй, засирая дебаггер.

Оно пытается лезть в "С:\Documents and Settings\User\Application Data\Tox\" какого-то хуя.
В то время как предыдущие версии были portable.
Аноним 12/11/19 Втр 17:56:59 151943911
Поясните за юнионы, зачем они вообще нужны? Я понимаю что они делают, я не понимаю зачем, где это может пригодиться?
Аноним 12/11/19 Втр 19:30:14 151949912
Почему эта адская херня компилится, как вы вообще живете сишники?
https://pastebin.com/9itmEmmz
Правильно лия понимаю что чтобы строки всегда хранятся в переменных под названием "буфер" на топ уровнях? А так же в одном буфере могут лежать разные типы?
Аноним 12/11/19 Втр 19:38:10 151950513
>>1519499
>Почему эта адская херня компилится, как вы вообще живете сишники?
Ну так это же не жс, а прокладка над ассемблером, понятное дело что тебя в написании подобной хуйни никто не ограничивает.
>Правильно лия понимаю что чтобы строки всегда хранятся в переменных
Да в каких хочешь храни, лол, нет.
>на топ уровнях
В скомпилированном бинарнике конечно в отдельную секцию вынесутся компилятором, но в коде — нет.
>А так же в одном буфере могут лежать разные типы?
Да, вопрос только в том как ты эти типы интерпретировать будешь. Си вообще похуй на подобные вещи, это же ебучий кроссплатформенный ассемблер, для него это всё байтики.
Аноним 12/11/19 Втр 19:42:31 151950814
>>1519499
И именно на подобной хуйне, кстати, базируется 80% "сливательных" уязвимостей и просто эксплойтов всего, что торчит в сеть (если например запихать туда снаружи нужное кол-во мусора, то можно получить доступ ко всем внутренним данным, или просто внедритьсвой код). Так что ты теперь у мамки хацкер, поздравляю.
Аноним 12/11/19 Втр 19:44:31 151950915
>>1519439
Ну так иди и реализуй какой нибудь variant тип без них, поймёшь, лол.
Аноним 12/11/19 Втр 20:15:43 151954416
>>1519439
union ieee754dp {
struct {
__BITFIELD_FIELD(unsigned int sign:1,
__BITFIELD_FIELD(unsigned int bexp:11,
__BITFIELD_FIELD(u64 mant:52,
;)))
};
u64 bits;
};
Аноним 12/11/19 Втр 20:27:20 151955917
>>1519439
помимо вариадиков, при помощи union ты можешь для одного и того же куска памяти иметь разные представления
к, примеру, можно (зная платформу) разобрать вещественное число на мантиссу-экспоненту или как оно там будет представляться
или к примеру, представить 64 разрядное целое как 2 32х разрядных
или представить пакет в бинарном протоколе как целый кусок памяти или как набор полей
или представить битовое поле как целый набор битов, так и как набор битовых полей
ну, в общем, наверное, уже понял, все такие применения (помимо эмуляции variant)



Аноним 12/11/19 Втр 20:36:13 151957618
>>1519351
> извлечь только имя файла
strrchr('\\'), strrchr('/'), выбираешь тот, у которого адрес больше, прибавляешь 1. Если оба NULL, то у тебя уже имя файла без директорий. Можешь сделать то же самое циклом, будет быстрее.

>>1519509
А в чем проблема реализовать? Просто переменные жирные получатся.

>>1519559
> зная платформу
> представить битовое поле как целый набор битов
И потом начинаются всякие -mms-bitfields. Нахуй. Если ты начал полагаться на то, как именно лежат биты в битфилде - у тебя уже проблема, просто ты о ней еще не знаешь.

> представить пакет в бинарном протоколе как целый кусок памяти
А потом ты такой портируешь свой код на мк (сейчас это модно, IoT всякие), а там выравнивание другое сказал бы про endianess, но PowerPC успешно сдох, и эта проблема уже не так актуальна. Пакеты парсят/собирают исключительно struct.field = get_u32() (руками, наколеночной кодогенерацией или какими-нибудь протобуферами). Если ты делаешь не так, у тебя опять же проблема, об которую ты однажды споткнешься.

Поэтому union - это такая хуйня для экономии памяти, не более. Ну еще можно сжав зубы иногда делать type punning (хотя проще -fno-strict-aliasing и скастить кастом).
Аноним 12/11/19 Втр 20:41:37 151958519
>>1519576
>А в чем проблема реализовать? Просто переменные жирные получатся.
Ни в чём, можно даже и без жирных переменных. Просто получится хуйня на постном масле вместо встроенной в язык конструкции.

>А потом ты такой портируешь свой код на мк
Михалыч, ну не хватает мужыкам на заводе работы, ну хуле ты докопался?
Аноним 12/11/19 Втр 21:01:19 151960020
>>1519585
> ну хуле ты докопался?
Потому что мне недавно дали вот такое:
struct smth {
...
union {
long xxx_offset_in_file; // Лежит в файле.
struct something_else ∗xxx_ptr; // Патчится при загрузке.
} some_field;
...;
};
Эта хуйня записана в файлы (тупо fwrite), формат файлов ломать нельзя, файлы обрабатываются софтом, а софт надо собрать под 64-битную машину (ну 2019 на дворе, пора бы уже). А еще эти юнионы не выровнены. Представляешь, как весело править это говно?
Аноним 12/11/19 Втр 21:17:46 151962321
>>1519600
А что плохого-то? Считай что создали тебе фронт работы, лол.
Аноним 12/11/19 Втр 21:24:32 151963222
>>1519576
у тебя пожатые структуры будут, без выравнивания..
которые ты будешь на сетевой пакет накладывать..
Аноним 12/11/19 Втр 21:25:09 151963423
>>1519576
>Если ты начал полагаться на то, как именно лежат биты в битфилде
для внутреннего представления в программе - норм
понятно что наружу это не должно торчать

Аноним 12/11/19 Втр 21:26:21 151963624
>>1519576
>union - это такая хуйня для экономии памяти
это стандартная ошибка, считать что union для экономии памяти
не для экономии, а для того чтобы представлять один кусок памяти разными способами

Аноним 12/11/19 Втр 21:43:14 151964825
>>1519632
> у тебя пожатые структуры будут, без выравнивания
Именно. А потом я их читаю там, где выравнивание обязательное, и ко мне приезжает автобус SIGBUS.
Аноним 12/11/19 Втр 21:53:56 151965826
Ну и как форматировать ваши ебаные реаллоки, когда они в 120+ знаков получаются (надо 79)?
Аноним 12/11/19 Втр 22:03:35 151966827
>>1519658
> надо 79
Ты к нам из 79?

> как форматировать ваши ебаные реаллоки
Считай размер заранее, переноси аргументы в соответствии со стайлгайдом (обычно после переноса либо просто втыкают дополнительный уровень табуляции, либо располагают аргументы ровно под предыдущими).
Аноним 12/11/19 Втр 23:33:27 151971028
>>1519668
>79
Удобно же. Можно лампово кодить в текстовом режиме 720x400 на ЭЛТ.
>Считай размер заранее
Точно! Как только не пробовал, а эта святая простота в голову не пришла.
Аноним 12/11/19 Втр 23:51:45 151974929
Рот ебал ваших макросов с бэкслешами! Вот вам приоритетная очередь, крч...
https://pastebin.com/K1E1VmxT
Пользуйтесь. За три бакса могу сделать, чтоб PQpop реаллокал обратно.
Аноним 13/11/19 Срд 00:29:33 151977530
>>1519749
> За три бакса могу сделать
Проиграл. Типичный сишник с десятью годами опыта ищет работу в реалиях 2020. Выживаете, дедушка?
Аноним 13/11/19 Срд 01:04:37 151978531
>>1519775
Ебало свое закрой и катись из треда нахуй
Аноним 13/11/19 Срд 01:09:08 151978732
>>1519775
Какой дедушка, я вообще зумер почти, лол...
Аноним 13/11/19 Срд 01:13:18 151979333
15734968168320s.jpg (3Кб, 200x200)
200x200
Аноним 13/11/19 Срд 03:49:37 151986034
Аноним 13/11/19 Срд 06:34:49 151987135
image.png (40Кб, 200x200)
200x200
бляяяяяяя..... это хуета не работает нормально. Чем больше файл, тем сильнее его раздувает после закодирования, а после раскодирования вообще пидорасит не по-детски. 50000 байт еще точь-в-точь восстанавливает, а 100000 уже по бороде. ЧЗХЙНЬСКНХЙБЛДЬ??
Аноним 13/11/19 Срд 06:38:53 151987236
>>1519871
>увеличивает размер
>не восстанавливает исходные данные
ну чисто анекдот про советскую программу для lossless-сжатия
Аноним 13/11/19 Срд 06:44:41 151987437
>>1519871
Невозможно с первого раза правильно написать хафмана. Смирись.
Аноним 13/11/19 Срд 07:04:36 151987638
>>1519871
Впрочем, я посмотрел и слегка охуел:
> rewind(fsrc);
> huffman_encode(stdout, stdin);
> rewind
> stdin
Аноним 13/11/19 Срд 07:22:22 151988039
>>1519871
Впрочем, я посмотрел еще.
> невозможно с первого раза правильно написать хафмана

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

#include <stdio.h>
int main(void){int a=0,b=1,n,i;for(i=34;i--;){n=a+b;a=b;b=n;while(n--)putchar('Q'-i);}}
Аноним 13/11/19 Срд 08:01:34 151988240
>>1518919 (OP)
Аноны, подскажите по вопросу.
Как правильно делать проверку переменной на превышение ее максимального значения.
Например длинну массива или некий счетчик.

Я всегда пишу <= >= < >
Но часто в другом коде встречаю ==

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


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

Как правильно то?
Аноним 13/11/19 Срд 14:48:00 152007441
>>1519880
так, эта штука пишет символы от '0' до 'Q':
'0' - fibonacci1 раз
'1' - fibonacci2 раз
и т.д.
С таким распределением получается
0
01
001
0001
00001
000001
...
Ладно, в худшем случае придется за раз класть больше 32 бит. Я предусмотрел 64, но надо бы 256. Фиксится как нефиг делать, и у меня другая проблема. Делал пресловутый дебаг принтфом, чтоб посмотреть, какие самые длинные коды получались (52). И почему именно первые 50000 байтов из Мартина Идена оно восстанавливает нормально, а если взять 100000 - то пиздос?
Аноним 13/11/19 Срд 14:51:16 152007742
>>1519876
Да лень было test.c красиво писать. Да, кто-то может не знать, не повесить какой-то файл на дескриптор и попробовать закодировать с клавиатуры.
Аноним 13/11/19 Срд 14:52:34 152007843
>>1519880
бляяяяяяя, я забыл суммировать веса дочерних узлов))))
Аноним 13/11/19 Срд 14:53:46 152007944
Ну ты и дон Хуан, анон. Не кормишь сухой инфой, а чистую пищу для размышлений даешь. Увожение.
Аноним 14/11/19 Чтв 14:25:20 152095445
>>1519787
Пиздуй тогда с борды, 18+.
Аноним 14/11/19 Чтв 15:06:01 152102146
>>1519600
>софт надо собрать под 64-битную машину (ну 2019 на дворе, пора бы уже)
Это не причина, а долбоебизм и вредительство - ломание работающего без причин и имитация деятельности этим якобы переписыванием.
Аноним 14/11/19 Чтв 16:18:17 152106847
>>1520954
я сказал
>почти
зумер 20-, я 20+
Аноним 14/11/19 Чтв 19:18:46 152120548
Анон, можно ли попросить ваш ебучий прекопроцессор логать всякую хуйню в процессе сборки?
Аноним 14/11/19 Чтв 19:44:15 152122249
Бляяяяяяяяяяяяяяяяяяядь!!!!!!!!!!!!!!!!! Какого хуя __stdcall не декорирует имя процедуры ja_pidoras(int,int) суффиксом @8? Рот ебал это хуйни, тушите мой пердак аноны суканахуйблядь..
Аноним 14/11/19 Чтв 20:06:39 152123950
Аноним 14/11/19 Чтв 20:36:28 152126451
>>1521205
> прекопроцессор
Не знаю такого слова, но подозреваю, что ты хочешь сс -E.

>>1521222
Ну мы-то откуда знаем? Пример тащи, рассказывай, какой у тебя компилятор и т.д. Может у тебя 64-битный код вообще, а ты ему __stdcall пихаешь.
Аноним 14/11/19 Чтв 20:43:59 152127352
>>1521264
Под 32 бита все прекрасно компилилось и работало, а под 64 - хуй!
Аноним 14/11/19 Чтв 20:45:22 152127553
>>1521264
бля, я долбоеб по ходу
Аноним 14/11/19 Чтв 20:50:55 152128254
>>1521264
Все таки тихий час - чудодейственная мера. Там ведь библиотека только в собранном виде уже, а я когда инструментами 2008-й студии компилировал и линковал с ней, все было норм, но на 10-ке работало только в режиме совместимости (оно winsock юзает), и я в ответ на эту жалобу от пользователя решил поступить радикально, поставил на ноут 10-ку, инструменты сборки от новой студии и прописал путь к компилятору с целевой архитектурой x64. Пиздос. А ведь между XP и x64 огромная пропасть, в которой еще ой как много места для x32. Пиздос я кретин, только сейчас это осознал. Всем добра.
Аноним 14/11/19 Чтв 21:14:58 152129355
>>1519505
> для него это всё байтики.
То есть char это основная единица в C? Но ведь существуют только 256 битовых масок для одного байта, то есть можно получить всего ничего букв. А где в комплюктере можно поглядеть какой букве какое число соответсвует? То есть если инт состоит из 4 байт, а в байте у нас три десятичных разряда, то в инте 3x4 десятичных разряда, то если
456 789 987 899 какой либо инт,
из него можно выслюнить 4 char (456, 789, 987, 899) ?
Аноним 14/11/19 Чтв 21:51:39 152130856
>>1521293
> А где в комплюктере можно поглядеть какой букве какое число соответсвует?
Компьютеру по большей части похуй. Как запрограммируешь - так и будет. Где и как лежат кодовые таблицы - зависит от ОС. Но у нормальных людей уже юникод давно, юникод смотрят на unicode.org (если хватит усидчивости, чтобы продраться сквозь тысячи страниц стандарта).

> то в инте 3x4 десятичных разряда
Десятичные разряды неудобные, поэтому 32-битный int представляют как 4 char (даже в сишке есть распространенное расширение под это: char c = 'A'; unsigned int x = 'ABCD').
Аноним 14/11/19 Чтв 22:18:36 152132557
То есть с помощью инта можно закодировать строку из четырех символов?
Аноним 14/11/19 Чтв 23:34:47 152136158
>>1521325
Строку из трёх символов. наверное
Аноним 14/11/19 Чтв 23:38:33 152136359
А под парсером итт подразумевается вот это вот
c = getchar ();
//
/
/
которое всё в ассемблер переделает или что?
Аноним 14/11/19 Чтв 23:45:40 152137460
>>1521308
Думаю, без расширения можно:
int64_t istr = ∗(const int64_t ∗)"pidoras";
И потом передавать куда угодно без всяких выстрелов в ногу и медленных копирований. А распечатывать так:
puts((const char ∗)&istr);
Аноним 14/11/19 Чтв 23:51:34 152137961
>>1521374
Это не константа, а 'ABCD' - константа.
Аноним 14/11/19 Чтв 23:54:09 152138062
>>1521379
Сортировать на Little Endian неудобно, кстати.
Аноним 15/11/19 Птн 01:09:50 152140563
>>1521380
Просто сохраняй/загружай символы соответствующим образом.
Аноним 15/11/19 Птн 01:34:01 152140664
Аноним 15/11/19 Птн 01:36:30 152140765
>>1521405
Хотя с короткими строками один хрен быстрее поразрядная сортировка подсчетом, а не дженерик хуита с operator<...
Аноним 15/11/19 Птн 05:06:23 152142466
Аноны, мне тут интересно стало за RAR-архивы. Насколько я понял, сама магия сжатия является секретом фирмы, и опенсорснут только алгоритм декодирования, чтоб пользователи платформ, до которых не дотянулся компилятор разрабов, могли хоть существующие архивы распаковывать. Однако сказано, что этот опенсорс нельзя использовать в целях реверс-инжиниринга заветного сжатия. Вот мне любопытно, как это контролируется. Ведь если таки взломать тему и выдать за собственную разработку, то варианта два: либо WinRAR соснули, либо защита интеллектуальной собственности действительно жесткая, и тогда даже случайно изобрести то же самое нельзя. Но всякие алгоритмы - это целая научная дисциплина, которая в теории способна вскрыть целое множество возможных алгоритмов, и ее не заставишь обходить интеллектуальную собственность, как слепые пятна. Разработал, продал, красавчик, но пора и честь знать, ты ведь не из каменного века все это развил, сам небось юзал достижения дедов, как миленький, вот и свое, будь добр, в достояние общественности, так сказать... А я че спросить-то хотел - неужели никто так и не хакнул? Быть может, ты анон? м?? м??? м???? Или, как вариант, где-то существует сжималка, превосходящая RAR в одни ворота, и на последний знающим людям давно похуй.
Аноним 15/11/19 Птн 05:18:02 152142567
>>1521424
>А я че спросить-то хотел - неужели никто так и не хакнул
Неуловимый Джо. Нахуя это делать?
Аноним 15/11/19 Птн 05:21:20 152142768
>>1521424
>магия сжатия
Иагия хуяьия, он не намного лучше зипа
Аноним 15/11/19 Птн 07:41:00 152144269
>>1521406
Зато кто-то посмотрит в твои строки, а там "DCBAHGFEQLKJI...". Это само по себе немного круто.
Аноним 15/11/19 Птн 08:34:45 152145170
>>1521427
Намного лучше. Хотя бы тем, что любые архивы не из DOS поддерживают юникод, то есть все. А zip всё еще какашка, корраптящая имена файлов. И это в 2020 году, пиздец, интернету уже 20 лет, а zip всё еще говно говна из каменного века. Да, я знаю что теперь пропатчили, но уже поздно, слишком поздно, мир засран кривым zip дерьмом так что уже не вычистишь.
Аноним 15/11/19 Птн 08:41:16 152145371
Сегодня пол дня ебался с тем, что не мог писать в массив (писать то писал, но оно мне возвращало нули) который я статически объявил в хеадере. Где можно почитать про все этого говно чтобы настроить себе понимание как и куда я могу домогаться до данных в программе.
Аноним 15/11/19 Птн 08:43:57 152145572
>>1521451
ну ты и соня, тебя даже LZMA не разбудил
Аноним 15/11/19 Птн 08:52:48 152145673
>>1521455
При чем тут я? Ты качаешь из интернета rar и ты уверен что с ним всё в порядке. Ты качаешь zip и нет никаких гарантий что файлы там не попорчены, это русская рулетка. Zip зашкварен, им попросту нельзя пользоваться, т.к. нет никаких гарантий что все пользуются правильной его версией с правильными флагами.
Аноним 15/11/19 Птн 09:01:21 152145774
>>1521424
>где-то существует сжималка, превосходящая RAR
zpaq
Аноним 15/11/19 Птн 09:05:13 152145975
Си для прграмми[...].png (2842Кб, 300x420)
300x420
Аноним 15/11/19 Птн 10:38:25 152147376
>>1521459
int main() {
const char suit[4] = { "Hearts", "Diamonds", "Clubs", "Spades" };
printf ("suit[2]= %s\n", suit[2]);

printf ("
suit= %s\n", *suit);
return 0;
}

Подскажи почему printf ("suit= %s\n", suit);
printf ("&suit= %s\n", &suit); эти двестроки не выводят ничего.
Аноним 15/11/19 Птн 10:39:44 152147477
>>1519882
Ап, вы охуели, не отвечать.
Аноним 15/11/19 Птн 10:40:21 152147678
Аноним 15/11/19 Птн 10:42:00 152147879
>>1521473
потому что
const char suit[4] = { "Hearts", "Diamonds", "Clubs", "Spades" }
не совсем верно
Аноним 15/11/19 Птн 11:28:07 152150480
>>1521476
спасибо, я уже вкурил
тк переменная обьявлялась как static в хеадере, то каждый исходник, импортирующий его имел собственную его копию с одним именем.

теперь мне интересен вопрос по поводу возвращаемых данных, удобно чекать успешность выполнения через логику, те возвращать какой-либо значение отличное от null и 0. то что main() возвращает ноль - так сложилось исторически?
Аноним 15/11/19 Птн 11:30:51 152151081
>>1521478
у него астериск макаба съела
Аноним 15/11/19 Птн 11:54:36 152154182
Аноним 15/11/19 Птн 11:57:16 152154683
>>1521510
Что ты имеешь ввиду? Я к тому что массив чаров это одна строка, он же пытается сделать массив массивов. как то можно это сделать таким образом?
Аноним 15/11/19 Птн 11:58:38 152154884
>>1519882
Студень, ты задолбал! Иди лабы делай.
Аноним 15/11/19 Птн 13:08:05 152162285
>>1521548
Кек но я деньги этим зарабатываю. Подрыв на 3... 2... 1...

Я вообще серьезно спрашиваю.
Аноним 15/11/19 Птн 13:16:26 152162986
>>1519882
> ==
Это правильно. Почему? Гугли.
Аноним 15/11/19 Птн 13:20:56 152163387
>>1521546
Там звёздочка перед suit[4] , это пример массива указателей из Дейтелов. пробовал значение указателя получить.
Аноним 15/11/19 Птн 13:22:48 152163488
>>1521629
Я хз как правильно и коротко вопрос сформулировать. Кинь ссылкой хотя бы.
Аноним 15/11/19 Птн 13:44:27 152164389
Аноним 15/11/19 Птн 14:36:15 152167990
>>1521643
Тому шо в char помещается цифоры от -127 до 127. Твоя тыща прогоняется по этому диапазону начиная с нуля и останавливается на -24.
Аноним 15/11/19 Птн 17:56:11 152187391
56223562.jpg (40Кб, 720x408)
720x408
Привет, хороший тред.
Поскольку я на си вкатился со скриптовых языков, у меня в голове закрепилась привычка что рантайм в случае чего потом потычет в то место где что то не так. Когда особенно много изменений в код вношу и внезапно программа начинает падать, просто теряюсь, но помаленьку мне вносить изменения тоже некомфортно.
Можно ли какимнибудь дебагером эти драные нульпоинтеры отловить? Потому как остальное вроде как при компиляции отлавливается, особенно с -wall в llvm.
Аноним 15/11/19 Птн 19:29:54 152196592
>>1521873
дели модули, пиши тесты
Аноним 15/11/19 Птн 19:53:40 152199893
>>1521873
разрезай приложения на функционально отдельные части, для удобства контроля промежуточного состояния данных. ну и используй дебагер - все нормальные иде могут дебажить искоробки. если работаешь много с кучей - юзай valgrind
Аноним 15/11/19 Птн 20:51:34 152205694
Аноним 16/11/19 Суб 11:57:19 152245295
Народ, возвращаюсь к Си, давно его изучал. Ничего если я некоторые места в К&R пропускаю, там программы большие, просто лень их смотреть, лучше написать что-то свое. После КР планирую начать прату, и хочу написать какой-то свой проект. Все это делаю для того, чтобы начать изучать реверс инжиниринг. Все нормально у меня или нет?
Аноним 16/11/19 Суб 13:37:37 152253296
>>1522452
странный вопрос. начал изучение С лет 8 назад, за это время написал игру на спектрум (sdcc+asm), реверсить что-либо желание как не было так и не появилось.
Аноним 16/11/19 Суб 15:28:54 152264897
>>1522532
Может быть дашь совет какой? Как вкатиться в низкоуровневое программирование? Нравится СИ, вот теперь пересматриваю главы КР 4, чтобы хорошо все запомнить про области видимости, связывание и т.д. (курс на степике прохожу). Куда дальше двигаться, какие проекты писать? Какие проекты на Си написать, чтобы так сказать, был норм уровень, и можно было переходить к ассемблеру?
Аноним 16/11/19 Суб 15:56:37 152266498
>>1521873
>Поскольку я на си вкатился со скриптовых языков
В си надо вкатывать с архитектуры процессора и ассемблера.
Аноним 16/11/19 Суб 16:06:52 152266899
Аноним 16/11/19 Суб 16:32:58 1522685100
image.png (11Кб, 602x233)
602x233
Аноним 16/11/19 Суб 17:03:36 1522710101
>>1522685
> русская раскладка
> #
Fail

> error: macro names must be identifiers
Fail
Аноним 16/11/19 Суб 17:18:56 1522725102
f3c28fef4f.jpg (153Кб, 560x452)
560x452
>>1522664
> В си надо вкатывать с архитектуры процессора и ассемблера.
Что бы уверенней использовать запрещенные стандартом языка приемы и завязываться на архитектурно зависимые хаки?
Может в каком то ограниченном и архитектурно-зависимом коде это и допустимо, но во всех остальных случаях я бы предложил всем таким людям питаться путем прокачивания еды через трубочку введенную в анальное отверстие, ведь та самая дырка, в отличии от первой которая загружена еще и дыханием, большую часть времени все равно тупо простаивает, а архитектура организма вполне позволяет ее задействовать для подкачивания питания в желудок параллельно.
Аноним 16/11/19 Суб 21:01:11 1522872103
>>1522725
> Может в каком то ограниченном и архитектурно-зависимом коде это и допустимо
Когда подрастешь, ты узнаешь, что весь сколько-нибудь сложный код на Си напрочь непереносим. В лучшем случае непереносимые части лежат в отдельной либе, но они обязательно есть.
Аноним 16/11/19 Суб 21:17:49 1522882104
>>1522710
Пушто CLANG конпелятора здорового человека, а не ваши эти GCC тьху блядь накатят и ябутся потом..
Аноним 16/11/19 Суб 21:51:52 1522913105
>>1522648
для начала ответь себе на вопрос - зачем?
Аноним 17/11/19 Вск 03:43:31 1523016106
Есть какие-то адекватные практики для написания модулей с дженерик алгоритмами, которые принимают обработчик/предикат - типа лямбду, чтоб эта самая лямбда не была указателем на функцию и не вызывалась по 100500 раз, гоняя стек как дрочер в кустах, а инлайнилась? Очевидно, сам алгоритм должен компилиться отдельно с каждым исходником, юзающим его, то есть находиться в заголовочном файле, а стало быть самому являться inline, чтоб линкер не охуел. Сам прибегал к дефайну перед инклудом, типа макрос-обработчик, но это какая-то лютая дичь, к тому же в одном коде не получиться дважды с разными типами данных использовать. Писать еще и сам алгоритм макросом - какой-то оверкилл, хочется все таки компиляторной семантики, а не препроцессорной. Можно пойти дальше и предусмотреть несколько версий:
#ifdef YOBA_ALGO_CMP_1
inilne void yoba_algo_1(...) {...}
#endif
#ifdef YOBA_ALGO_CMP_2
inilne void yoba_algo_2(...) {...}
#endif
И так далее. Содержимое фигурных скобок идентично, тоже какими-то дефайнами можно его штамповать. Но это же лютая дичь.

Есть мысля, что для бытовых задач сойдет и производительность с вызовами функции, зато чистеньким интерфейсом, а для конкретных сложных высоконагруженных задач все вспомогательные структуры данных реализовывать эксклюзивно, монолитно с основным кодом, не претендуя на реюзабельность этой хуеты, абстрагированной математически, но не технически. Но ведь чувствуется, что вот она, заветная универсальность, всего-то пары синтаксических ништяков не хватает, эх... дискасс.
Аноним 17/11/19 Вск 03:57:58 1523017107
>>1523016
>для бытовых задач сойдет и производительность с вызовами функции
она всегда сойдёт. не знаю таких ситуаций когда CALL-RET был большой проблемой. на старых системах это ещё и выигрыш в размере кода.
Аноним 17/11/19 Вск 04:38:33 1523022108
>>1523017
ну, я бенчмаркал, норм так в пару раз скорость выросла, как захерачил инлайнами все
Аноним 17/11/19 Вск 05:00:13 1523025109
>>1523017
>на старых
Противоположность актуальных же. Где-то у Таненбаума читал, что узкие места смещается то в сторону гигагерцев, то в сторону гигабайтов. И вот в наше время предпочтительней загрузить память, которой жопой жуй, инлайнами и прочей векторизацией, чтоб процы, которые бедняжки уже давно уперлись в потолок по тактовой мощности, смог задействовать все свои альтернативные законы Мура вроде первых кешей, конвееров, хуееров и т.д.
Аноним 17/11/19 Вск 05:10:16 1523026110
>>1523016
>а для конкретных сложных высоконагруженных задач
Каких конкретно? Или конкретно напиздел?
Аноним 17/11/19 Вск 05:29:12 1523029111
>>1523016
>Сам прибегал к дефайну перед инклудом, типа макрос-обработчик, но это какая-то лютая дичь, к тому же в одном коде не получиться дважды с разными типами данных использовать
Самое адекватное. Смотри например gnu scientific library. И с типами спокойно используется.

//yoba.inc
inilne void yoba_algo_##YOBANUMBER_##YOBATYPE(...) { if (YOBAPREDICTATE) }

//yoba.h

#define YOBANUMBER 1
#define YOBANUMBER float
#define YOBAPREDICATE(a,b) ((a) < (b))
#include "yoba.inc"
#undef YOBAPREDICATE
#undef YOBATYPE
#undef YOBANUMBER
#define YOBANUMBER 2
#define YOBATYPE double
#define YOBAPREDICATE(a,b) ((a) > (b))
#include "yoba.inc"
#undef YOBAPREDICATE
#undef YOBATYPE
#undef YOBANUMBER

Еще лучше конечно взять С++
Аноним 17/11/19 Вск 08:02:05 1523054112
>>1523022
и что ты бенчмаркал? звучит как разница зависящая от компиляции и позиции солнца в системе - загрузки её другими процессами. давай конкретный воспроизводимый пример.

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

хотя этот тезис я слышу давно, что больше писать давно выгодней. ну хз, я не упираюсь в своих задачах в это.
Аноним 17/11/19 Вск 10:42:54 1523075113
>>1522913
Меня трясет от новых стандартов с++, языков высокого уровня. Я чисто для себя, вот
Аноним 17/11/19 Вск 12:11:59 1523102114
>>1523075
Тебе шашечки или ехать? Меня вот тоже от с++ ажтрясет, особенно от его перегруженности. Я си ковыряю только для хобби поделок, тк что-то серьезное на нем не написать, а для решения личных нужд он не подходит - питон лучше. Если ты хочешь связать с этим свою профессию - дрочить Си тоже не вариант, рынок узкий, вакансий мало, а поработав с любым динамическим языком/удобным статическим (например go или шарп) ты поймешь что нюансы этих языков не значительны на фоне знания фреймворка, и зная один можно с минимальными усилиями перекатываться в другой. Так что просто определись что ты в итоге хочешь получить от языка и нужно ли тебе вкатываться в низкоуровщину или хватит просто тыкать ее палкой для петпроектов.
Аноним 17/11/19 Вск 13:52:55 1523167115
>>1523054
>давай конкретный воспроизводимый пример
Да мне уже неловко как-то свою хуиту светить.
https://github.com/PolazhinetsA/lzwarc
Короче, скармливаю этому говну 212-мебагабайтовую оффлайн версию HTML-справочника по стандартной библиотеке C++ (cppreference.com), оно сжимает до 75, и после того, как захерачил всю хеш-таблицу инлайнами, стало делать это не за 10 сек, а за 5. Вот прям стабильно.
>от позиции солнца в системе
Ровно первый раз. Потом все, что надо, уже в нужных кешах, и жесткий диск перестает быть узким местом.
Аноним 17/11/19 Вск 16:26:38 1523340116
buf = (char*) malloc (100 байтов);
и
char buf[100];
это абсолютно одно и тоже, да?
Аноним 17/11/19 Вск 16:30:35 1523344117
Аноним 17/11/19 Вск 16:31:17 1523345118
а мемсетом можно насиловать const char?
Аноним 17/11/19 Вск 17:13:53 1523388119
>>1523340
1 хранится в куче, 2 в стеке
Аноним 17/11/19 Вск 19:18:42 1523494120
>>1523340
const можно сбрасывать, если значение не optimized out
Аноним 18/11/19 Пнд 02:49:34 1523808121
>>1523167
прикольно. только я пока не могу скомпилировать без ключа оптимизации. и у тебя варнингов столько, и это ещё без флагов. зачем ты ставишь перед аллоками конкретный тип, если присваиваешь другим типам? тогда уже присваивай к void@
Аноним 18/11/19 Пнд 02:59:59 1523811122
Аноним 18/11/19 Пнд 04:17:02 1523824123
>>1523808
>без -O3
Потому что я поскупился продублировать инлайны из htbl.h для линкера, а без оптимизаций конпелятор такие продвинутые пожелания не выполняет и херачит вызовы.
>каст маллоков
Где конкретно? В макросо-реализованных расширяемых структурах данных с заголовочными интами по отрицательным индексам - для арифметики указателей. Типа, выделил память начиная с этих интов, но взял указатель уже на однородный буфер, что парой слов дальше, ведь к элементам чаще обращаешься, чем к контрольным счетчикам.
Аноним 18/11/19 Пнд 04:23:55 1523825124
>>1523811
Ну, я и не хотел их юзать, пока не попробовал и не увидел значительную разницу в скорости. Именно htbl прям стопицот раз/нсек дергается. Не критичные вещи там чистенько по-отдельности идут, с инкапсуляцией (typedef в .c, void в интерфейсе) - так, чтоб потом эти ништяки в любой другой проект стащить можно было.
Аноним 18/11/19 Пнд 04:30:43 1523826125
>>1523824
> , а без оптимизаций конпелятор такие продвинутые пожелания не выполняет и херачит вызовы.
он вообще не соберёт проект. ты правила не знаешь, проставь везде static inline .

сегфаулт словил когда сжимал glext.h
lzwarc a ./tmp/arch.lzw ~/dwn/glext.h

компилировал на cygwin32.

./lzwarc x ./arch-inline.huff ./html_book-e.tar
а вот это выдало файл с названием html_book-e.tarhtml_book.tar
Аноним 18/11/19 Пнд 04:32:20 1523827126
Аноним 18/11/19 Пнд 04:39:14 1523829127
Сука, на днях думал запилить двухплатформенность, запилил ifdef-elif-endif(__linux__,_WIN32) хедер с обертками для pthread_create/_beginthread и т.д., сделал мютексы, добрался до condition variable и подгорела жопа. Почему Microsoft такое говно??? Почему всякие CRITICAL_SECTINO, SRWLOCK, всратые названия функций, которые без автодополнения заебешься печатать??? Почему не предусмотрели использование обычных няшных универсальных мютексов в атомиках ожидания cond.var? По ходу просто выпилю многопоточность, ебать бы и ебать для виндоблядей стараться...
Аноним 18/11/19 Пнд 04:42:59 1523830128
>>1523826
дык оно ж не умеет в тары, оно только свои)
>>1523827
у меня все норм, сжимает в добрых трое
Аноним 18/11/19 Пнд 04:48:07 1523832129
Аноним 18/11/19 Пнд 04:49:15 1523833130
>>1523830
>дык оно ж не умеет в тары, оно только свои)
какая разница, это просто файл. я думал можно один файл запаковать, а потом распаковать со своим именем.

>>1523830
>у меня все норм, сжимает в добрых трое
я кажется понял что я там повредил.
Аноним 18/11/19 Пнд 04:50:15 1523834131
assert'ы бы проставил. забыл в ините назначить каллбеки.
Аноним 18/11/19 Пнд 04:56:14 1523835132
image.png (156Кб, 814x872)
814x872
>>1523832
Неделю назад переписал на C++, но, не поверишь, только что, вот прям перед этим скрином психанул, взял и rm -rf cpp. Пофиг, она неактуальная была.
>>1523833
Аа.. по скрину не понял, в чем прикол.
>>1523834
htbl_init? Так там вместо каллбэков макросы перед инклудом. Лямбды через конструктор - на случай использования в менее замороченном и более красивом коде.
Аноним 18/11/19 Пнд 04:59:15 1523836133
>>1523826
>./lzwarc x ./arch-inline.huff ./html_book-e.tar
>а вот это выдало файл с названием html_book-e.tarhtml_book.tar
А, ну все правильно, там задается папка назначения, а не имя выходного файла. Ведь файлов в архиве может быть много, они со своими именами распаковываются. А слитно, потому что путь назначением со слешем в конце писать надо. Да, у меня с автоматизацией всех этих пользовательских нюансов вообще тьма-тьмущая, даже вскрывать не стоит)
Аноним 18/11/19 Пнд 05:02:50 1523837134
>>1523833
Там еще кое-какие пояснения в комментариях в arc.c - можно не разбираясь в коде все серое // глазами собрать.
Аноним 18/11/19 Пнд 05:28:05 1523839135
Спокойной ночи, анон. Надеюсь, перепилишь по всем правилам и продашь за 300кк.
Аноним 18/11/19 Пнд 05:34:43 1523840136
>>1523839
да я тебе патч с тестом дам. хотя я уже вижу разницу всего в 114 на 101 секнд. щас сделаю сборку без каллбеков но и без инлайнов, и думаю, будет тоже что и с инлайном.
Аноним 18/11/19 Пнд 05:50:34 1523844137
>>1523840
Думаю, с одним большим файлом не должно быть такой разницы, как с множеством маленьких, потому что словарь до 2^14 забивается и отпадают обращения к хеш-таблице по поводу добавления.
Аноним 18/11/19 Пнд 07:18:35 1523851138
>>1523836
>Да, у меня с автоматизацией всех этих пользовательских нюансов вообще тьма-тьмущая, даже вскрывать не стоит)
Типичная олимпиадная пердоля. Даже с командной строкой обосрался сделать нормально, что уж говорить про графические интерфейсы. Вот почему линукс говно и останется говном вечно.
Аноним 18/11/19 Пнд 09:20:50 1523857139
>>1523844
этот файл:
https://en.cppreference.com/w/File:html_book_20190607.zip
я его распаковал в ~/dwn/html_book/ и сделал ~/dwn/html_book.tar из содержания

в папке с проектом:
sh ./test.sh ~/dwn/html_book.tar
sh ./test.sh ~/dwn/html_book/

результат1 (cygwin32 на win7 ноуте с отвалом гпу. я плакал когда гонял на нём тест 3тий раз а он издавал истошный гул): https://pastebin.com/R90zydMM

результат2 (lubuntu32): https://pastebin.com/H5jwGHGj

патч: https://pastebin.com/a5cMBvS7

и того:
да хз. разница не значительна, как по мне. не понятно, будет ли она на больших числах увеличиваться. мне кажется тебе лучше задуматься, почему у тебя один файл кодируется в 2 раза дольше и сжимается в 2.5 хуже, чем сотни. я бы вообще не делал поддержку многофайловости - для этого есть tar.
Аноним 18/11/19 Пнд 09:31:46 1523861140
но, разница есть - что-то там работает. наверняка что-то можно переделать.
Аноним 18/11/19 Пнд 09:34:16 1523862141
можно ли из сей (clang) достучаться до гпу?
Аноним 18/11/19 Пнд 09:41:27 1523864142
Аноним 18/11/19 Пнд 11:07:24 1523877143
Довольно давно пишу на Си, но философскими вопросами начал задаваться не так давно.

Понимаю, что в Си нет конкретно понятия "модуль", но всё же хотелось бы понять с философской точки зрения структуру современного приложения на Си с высоты птичьего полёта. Как вообще в этом разобраться? Хотел скачать книжку Си в 21 веке на русском, но петухи поудаляли все ссылки с Вконтакта. Может есть у кого?

Есть ли какие-то принципы типа "Один .c файл - одна ответственность" для Си? Есть что-то типа SOLID для Си?
Аноним 18/11/19 Пнд 12:32:55 1523920144
15682768829290z[...].jpg (2800Кб, 300x420)
300x420
Аноним 18/11/19 Пнд 12:54:53 1523938145
>>1523877
>современного приложения на Си
На ноль не делишь?
Аноним 18/11/19 Пнд 13:21:35 1523958146
>>1523938

Нет, на нем же продолжают писать.
Аноним 18/11/19 Пнд 14:50:45 1523995147
>>1523877
Посмотри, как большие опен-сорсные проекты устроены. Блендер, например, или старые версии инкскейпа (до портирования на кресты).
Аноним 18/11/19 Пнд 15:10:30 1524006148
>>1523995

А у них есть какие-то документы описывающие архитектуру? Читать миллиарды кода не хочется, хочется взглянуть в целом, с высоты.
Аноним 18/11/19 Пнд 15:19:54 1524019149
image.png (167Кб, 480x360)
480x360
>>1524006
>с высоты
у нас новый мем?
Аноним 18/11/19 Пнд 15:31:56 1524028150
>>1524006
>А у них есть какие-то документы описывающие архитектуру? Читать миллиарды кода не хочется, хочется взглянуть в целом, с высоты.
Есть, но придется поискать по сайту. Плюс там обычно не вся архитектура, а какие-то отдельные куски. Да и код обычно не такой уж и сложный, можно за пару дней общее представление составить.
Аноним 18/11/19 Пнд 17:51:51 1524160151
>>1523958
Современные приложения? Серьезно? Какие например?
Аноним 18/11/19 Пнд 18:27:24 1524185152
>>1524160
обайтоебливание bmp-картинок с ватермаркой "laba2_2019"
Аноним 18/11/19 Пнд 18:33:58 1524189153
>>1524160

Работа с аудио и видео.
Работа со всяким компьютер виженом.
Низкоуровневая работа с сетью.
Создание утилит для Линукс.
Да ты ахуел такие вопросы задавать? М? :3
Аноним 18/11/19 Пнд 18:44:37 1524201154
>>1524160
Хард реал тайм, где запрещено динамическое выделение памяти. Навигационное оборудование, управление всякими рулями и тормозами, искусственные водители ритма сердца, вощим все от чего зависит твоя жопа ирл.
Аноним 18/11/19 Пнд 18:46:33 1524204155
>>1524201
Твой водитель ритма на сишке упадет с переполнением стека
Аноним 18/11/19 Пнд 18:54:42 1524208156
>>1524204
Какой стек, там 99% переменных - глобальные. Тот еще говнокод по сути, но по другому нельзя.
Аноним 18/11/19 Пнд 23:21:52 1524369157
Аноним 18/11/19 Пнд 23:24:32 1524373158
Аноним 18/11/19 Пнд 23:40:32 1524380159
Аноним 18/11/19 Пнд 23:55:02 1524389160
Что лучше зайдет для изучения сишечки: дейтелы или стивен прата?
Аноним 18/11/19 Пнд 23:59:46 1524393161
Аноним 19/11/19 Втр 00:11:04 1524399162
>>1524389
Очевидный страуструп
Аноним 19/11/19 Втр 00:21:31 1524407163
>>1524399
Хуяуструп. Вы ошиблись тредом.
Аноним 19/11/19 Втр 02:11:50 1524432164
>>1524208
Такое легче в класс обернуть и все.
Аноним 19/11/19 Втр 02:28:14 1524437165
>>1524389
чтение K&R c выполнением всех упражнений, обязательно несколько раз перечитать приложение где описана спецификация языка


Аноним 19/11/19 Втр 02:33:23 1524439166
>>1523877
компонентно-ориентированное прогаммирование, работа через интерфейсы (com, gtk..)
Аноним 19/11/19 Втр 03:14:53 1524446167
>>1523016
а попробуй на крестах
там есть, к примеру, обобщенные лямбда-функции, которые инлайнятся (при включении оптимизирующих флагов компилятора, само собой)
вдобавок ты всегда это сможешь контролировать просматривая ассемблерный листинг (даже онлайн godbolt)
да и обобщенный код приятней писать на шаблонах, чем на макросах
но я не настаиваю, и не ради холивара это написал
Аноним 19/11/19 Втр 03:24:24 1524448168
>>1523857
>патч
Ой, чувствую себя обезьяной. Я и свое-то добро заливаю через кнопку upload, потому что github перестал водить за руку, что в консольке прописать, при создании репозитория. А это вообще хз, как юзать.
>задуматься
Потому что в разных файлах разнохарактерные данные, а я сброс зажравшегося словаря поленился сделать. Файлы, уже сжатые более совершенным алгоритмом, даже больше становятся после LZW, но когда их отдельно прогоняешь, архиватор видит невыгодную разницу и оставляет исходный.
>для этого есть tar
Дык мне интересно все в комплексе пилить. Так-то без 10 лет опыта, квадратных очков и тельняшки вообще кроме велосипедов мало что сделаешь.
Аноним 19/11/19 Втр 03:27:34 1524449169
>>1524446
Да кресты вообще вкусная штука, позволяет на двух стульях сидеть: и синтаксический сахар со всякими автоматизациями, как у сверхвысокоуровневого языка, и как на сишечке пишешь, где надо. Но у меня пока вкус до чистой Сишечки.
Аноним 19/11/19 Втр 03:45:34 1524452170
>>1524449
попробуй тогда через реализацию интрузитивных структур данных сделать, это позволит реализовать adt без макросов..
Аноним 19/11/19 Втр 04:03:16 1524456171
15741161729290.png (122Кб, 316x320)
316x320
Решил написать пару трей куевин для мониторинга на сишном гтк и какой же ебаный пиздец
Работающий раньше в <3.14 функционал полностью помечен как депрекейтед, какая-то часть вообще пидорнута и нужно ролбечиться
На замену добавлен очередной велосипед связанный вообще с уведовлениями, где трей икон это седьмая вода на киселе и вообще ненужно. Еще и анально прикручено к дбусу


Я что-то делаю не так или тут и в правду полемеры проебаны и проще перекатиться на плюсы?
Мимо веб макакич
Аноним 19/11/19 Втр 04:36:32 1524458172
>>1524456
GTK это обоссаный кусок говна.

QT и кресты это стандарт индустрии нынче
Аноним 19/11/19 Втр 04:58:42 1524460173
>>1524458
Ибо нехуй. Напрямую через WinAPI ебашить надо. А под Linux отдельную препроцессорную ветку писать X11.
Аноним 19/11/19 Втр 06:15:25 1524468174
Аноним 19/11/19 Втр 06:49:20 1524469175
>>1524460
>Напрямую через WinAPI ебашить надо.
Лучше в сибилдере кинуть компонент мышкой на форму, клик, пык, и готово. С винапи можно баловаться если твоя программа уже написана на msvc, тогда уже деваться некуда. А линуксовые либы вроде qt и gtk на винде это как кушать шваброй через жопу.
Аноним 19/11/19 Втр 07:20:30 1524474176
15741226219940.jpg (15Кб, 400x400)
400x400
Раз тема про гуи развилась продолжу свой блог

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

Сначала было лень заморчаиваться и пошел ковырять JS
Вспомнив 200мб рам хромиум врапперах и ограниченном системном интерфейсе понял что затея так себе

Питон не люблю но попробовал и его
Накатив бинды на бинды биндов ffi я ибу что
Написал первый хеллоуворлд, скомплюклировал, рам все равно каким-то боком жрало 40мб+
Не люблю питон и решил просто катиться дальше

Поднимаю штангу DSLы в две строчки
Qt5 бинды отсутствуют, приходится пердолить GTK
Вдруг выясняется, что нужно писать свои сишные структы и прочий пездец разворачивая забинженные объекты в фп пердоленье и обратно
Нашел бинды повыше, поковырял формочки но нужным мне systemtray отсутствувал

Решил попробовать С, заодно разобраться в этих поентерах маллоках и прочей куйне
Опять какой-то пиздец с GTK, что указал выше


Похоже выучить кресты - самый простой вариант
Аноним 19/11/19 Втр 07:34:32 1524475177
>>1524458

Qt вроде бы какому-то наебизнесу продали и он ВСЁ. Или это уже устаревшая инфа?
Аноним 19/11/19 Втр 09:25:02 1524495178
>>1524474
вообще, по странному случаю вспоминаю подкаст слушал, там обсуждали это проблему. как не странно, но говорят на дельфи можно норм накросплатформить на эту тему.

а ещё wxWidget и что-то там ещё они упоминали, не помню уже...
Аноним 19/11/19 Втр 09:55:44 1524506179
>>1524448
>А это вообще хз, как юзать.
сохрани в файл. пропиши в гит-директории
git apply путь-до-патча

>Дык мне интересно все в комплексе пилить.
ну, если тебе интересно. я таким способом так ничего и не написал. а только когда начал себя ограничивать.
Аноним 19/11/19 Втр 10:44:15 1524521180
Анон, который делает трехмерные медицинские приложения тут?
Аноним 19/11/19 Втр 10:51:29 1524528181
Анон, помоги из оп пика
allocbuf + ALLOCSIZE - allocp >= n
как мы принтер сравниваем с интом?
Аноним 19/11/19 Втр 11:55:56 1524551182
>>1524528
А я понял,если из поинтера вычесть поинтер, то ответ будет количество элементов мнжду ними. Пипец
Аноним 19/11/19 Втр 12:20:24 1524565183
Аноним 19/11/19 Втр 12:34:24 1524570184
Аноним 19/11/19 Втр 13:28:17 1524608185
>>1524474
под линуксом? какой de? у каждого de есть не одно приложение, которое позволяет кастомизировать трей, всего лишь пиша высокоуровневые скрипты.. вплоть до однострочников на баше..

Аноним 19/11/19 Втр 13:42:49 1524612186
>>1524608
Сижу на ш3 и знаю про блокс и тд
Хотелось что-то все-таки накодить и может допилить в будущем билдер таких треев
Скопировал хеллоуворлд Qt5 C++, уже допердолелся до парса первой нужной страницы
Доволен как слон
Аноним 19/11/19 Втр 14:55:16 1524646187
Аноним 19/11/19 Втр 15:58:05 1524666188
>>1524646
>Tcl/Tk
А вроде неплохо, выглядит полегче WinAPI. Осталось понять, как вообще использовать.
Мимо
Аноним 19/11/19 Втр 16:33:08 1524690189
>>1524646

> А вообще мелкий гуй лучше на Tck/Tk делать.

Не лезь туда няшечка ты кавайная
Она тебя сожерт же, почто ты ...

> puts ААААаааааААаааааааа
Аноним 19/11/19 Втр 16:34:52 1524691190
Не ну сам по себе Tcl нормальный, но Tk ... Как будто в 90-е попал. Ебаш уж сразу под голый XWindow.
Аноним 19/11/19 Втр 18:42:37 1524786191
>>1524612
если чего то "хочется накодить" то пишешь програмку на си которая будет тебе выдавать инфу по нагрузке на впски в cout, настраиваешь i3status чтобы он подхватывал эту программку и все
вторая програмка будет выдавать твои балансы со счетов, также в cout
НО непонятно зачем, имхо скриптовыми обвязками (которых полно в i3status) либо заменами i3status можно это быстрее сделать

Аноним 19/11/19 Втр 18:46:50 1524789192
>>1524786
или возможно тебе будет удобней выводить информацию не в строку, а вообще иметь системный монитор на экране, тогда и вообще надо conky настраивать
Аноним 20/11/19 Срд 07:02:42 1525081193
>>1524646
>imgui
Прикольная тема. Можно делать окошки интерфейсов прямо в играх с полноценной графикой, и я не заметил тормозов даже на старом ноутбуке.
Аноним 20/11/19 Срд 16:39:28 1525415194
Пацаны,я ебал,подкиньте идей каким способом найти определить матрицы выраженной блядским бинарным деревом
Аноним 21/11/19 Чтв 17:33:30 1526092195
Вычитал что linux гораздо лучше подходит для программирования на Си чем Виндовз и установил Линукс Минт. Что то пошло совсем не так. Я думал поставлю Clion прокликивая кнопочки далее, в автоматическом режиме там всё найдётся, со всем состыкуется, интегрируется и вот это вот всё и я буду сидеть да прогать свои хелловорлды. Но нет. Оказалось надо поставить cmake, надо поставить gdb, надо поставить libc6-dew и потом я обнаружил что Clion справляется с хелловорлдом, а вот с вычислением квадратного корня уже не справляется. Не знает что такое sqrt() и оказалось что дело даже не в Clion, набрал код в текстовом редакторе, запустил на выполнение консольной командой и ошибка
/tmp/cch0LAjo.o: In function `main':
main.c:(.text+0x4f): undefined reference to `sqrt'
collect2: error: ld returned 1 exit status
(строка #include <math.h> в наличии)
Что это за нахер вообще? Чем же линукс лучше виндовз в контексте программирования на си?
Аноним 21/11/19 Чтв 17:37:19 1526095196
>>1526092
Тем что ты юзаешь gcc/make/smth из консоли и добавляешь -lmath
Аноним 21/11/19 Чтв 17:41:25 1526097197
>>1526095
И так вот для каждой потребовавшейся мне в программе библиотеки?
Аноним 21/11/19 Чтв 17:44:16 1526100198
>>1526097
Нууу, почти.
Стандартную же библиотеку он не требует явно, потому что gcc несколько более интеллектуален в отношения с ld, чем ты.
Аноним 21/11/19 Чтв 17:53:46 1526107199
>>1526100
В любой IDE под Windows достаточно всего лишь указать подключаемые библиотеки в самом коде программы, который ещё и проверяется как минимум на синтаксические ошибки и запускай программу на здоровье. А тут пердолинг какой то
В Clion установленной в Windows были непонятные мне и не работающие в Windows опции: профилировщик, валгринд мемчек, чего-то там с гитхабом. Я ожидал что в линуксе это всё заработает само собой, а в итоге получил что теперь данная IDE без пердолинга с терминалом реально ничего сложнее хеллоуворлда не пишет
Аноним 21/11/19 Чтв 17:56:57 1526109200
Ладно, хрен с ним с Clion. Я думал в линуксе присутствует некая стандартная IDE для языка Си, из палаты мер и весов, отполированная десятилетиями, но и тут я оказался неправ. Сразу два проёба, никакой золотой IDE нет и Clion установить в Линуксе оказалось сложнее чем в Windows
Аноним 21/11/19 Чтв 17:59:10 1526110201
>>1526107
Я не знаю, попробуй начать свой путь самурая с С, а не с IDE.
Разберись, что делает препроцессор, что компоновщик, а что на твоей совести.
Аноним 21/11/19 Чтв 18:05:33 1526119202
>>1526110
Но команды терминала к самому языку не относятся
Аноним 21/11/19 Чтв 18:09:57 1526124203
>>1526092
Так ты ставь генту, а не коляски для домохозек.
Аноним 21/11/19 Чтв 18:48:33 1526155204
Аноним 21/11/19 Чтв 18:49:06 1526158205
Аноним 21/11/19 Чтв 19:11:31 1526175206
>>1526158
Нудно, да и ничему тебя не научит, кроме копипаста команд.
Аноним 21/11/19 Чтв 21:26:42 1526241207
>>1526119
Команды терминала всего лишь отображают этапы сборки проекта, что в свою очередь относится к знанию языка. Ну, то бишь, знание, как это все конпелируемое работает, есть мастхев именно для Сишника.
Аноним 21/11/19 Чтв 22:56:20 1526293208
Selection011.jpg (8Кб, 310x93)
310x93
Задачка на ночь.
Правильно ли работает эта функция?
Аноним 21/11/19 Чтв 22:57:34 1526295209
Selection012.jpg (13Кб, 423x116)
423x116
>>1526293

Не ожидал что будет так мелко. Вот покрупней.
Аноним 22/11/19 Птн 01:43:24 1526367210
Утром иду на лекцию Брайана Кернигана(один из авторов всем известной книжки). Какой вопрос ему задать?
Аноним 22/11/19 Птн 06:57:58 1526418211
>>1526367
хуйцы сосал, бочку делал?
Аноним 22/11/19 Птн 08:07:05 1526434212
>>1526367
>Какой вопрос ему задать?
Что он думает о современных ЯП и смузихлебах?
Аноним 22/11/19 Птн 08:10:23 1526435213
>>1526367
Нравится ли ему борщ.
Аноним 22/11/19 Птн 09:49:06 1526462214
image.png (26Кб, 592x297)
592x297
https://pastebin.com/9yrr5X56

Почему это ебаное программирование такое? Почему после вывода одного символа - идёт всё по пизде.
Аноним 22/11/19 Птн 10:50:52 1526511215
>>1526462
>Почему это ебаное программирование такое?
Потому что в него лезут дебилы.
Аноним 22/11/19 Птн 10:58:54 1526523216
>>1526462
Скажи спасибо, что сегфолт не выдает.
Аноним 22/11/19 Птн 11:15:20 1526541217
>>1526511
Си это ебаный язык для ёбнутых, меня знакомый попросил задачку решить а я не могу заставить это дерьмо из функции массив символов передать нормально.
Аноним 22/11/19 Птн 11:31:13 1526557218
>>1526295
Да, не могу найти наёбку.
Аноним 22/11/19 Птн 11:38:29 1526563219
>>1526462

BLYAD - это имя локальной переменной, которая содержит в себе адрес первого элементам массива, память под который выделена в стеке. Функция SUKA завершила своё работу и пямять, которую занимали её локальные переменные в стеке - совободилась. Поэтому, когда ты обращаешься к этой памяти, программа тебе говорит: ТЫ ЧЁ АХУЕЛ ПЕС? ИСПОЛЬЗУЙ MALLOC ЕСЛИ ХОЧЕШЬ СОЗДАТЬ МАССИВ НЕ В СТЕКЕ, А В КУЧЕ!
Аноним 22/11/19 Птн 11:39:35 1526564220
>>1526557

Подсказка: не вызывает ли подозрение аргумент ms и его тип?
Аноним 22/11/19 Птн 11:40:57 1526566221
>>1526541
Чё, хорошо, когда за тебя джава сама управляет ресурсами?
Ты выделил на стеке массив чаров в функции, после выхода за область видимости он удаляется, а ты возвращаешь указатель на эту область памяти.
Ты должен его через new объявлять и не забыть после вызова функции через delete[] удалить.
Аноним 22/11/19 Птн 11:42:54 1526568222
>>1526564
The type suseconds_t is a signed integral type capable of storing values at least in the range [-1, 1,000,000].
Ну и?
Ну юзай useconds_t.
Аноним 22/11/19 Птн 11:44:30 1526569223
Аноним 22/11/19 Птн 11:45:11 1526570224
>>1526566
это такой троллинг?
Аноним 22/11/19 Птн 11:46:35 1526572225
>>1526568

А ms это что? Тоже от -1 до 1,000,000?
Костанты MSisS (то есть MS in S, то есть MicroSeconds in Second) тоже до 1,000,000?
Микро - это сколько так-то?
Аноним 22/11/19 Птн 11:52:27 1526577226
>>1526572
MicroSeconds in Second?
Ну, в секунде 10^6 микросекунд, кста.
И где ты тип ровно на миллион найдёшь?
Причём тут С, б?
Аноним 22/11/19 Птн 11:56:41 1526583227
>>1526570
Нет, это я долбоеб и на автомате привычный для меня new написал.
Анон выше верно написал, нужен malloc.
Аноним 22/11/19 Птн 12:01:51 1526588228
>>1526583
я просто смотрю ты регулярно так ошибаешься тут.
Аноним 22/11/19 Птн 12:04:27 1526590229
>>1526583
Бля так и знал, пригорел что нихуя не получается и не мог нормально головой подумать. Благодарю.
Аноним 22/11/19 Птн 12:15:22 1526599230
>>1526155
пиши по английски, наверно русский тебе не родной.
Аноним 22/11/19 Птн 12:16:36 1526601231
Selection015.jpg (132Кб, 1210x663)
1210x663
Аноним 22/11/19 Птн 12:19:58 1526609232
>>1526601
нет. a - это не указатель, это само начало памяти.
Аноним 22/11/19 Птн 12:27:56 1526616233
>>1526601

Лучше второй printf заменить вот на такой, чтобы понятней было, что a и b - это почти одно и то же:

// Выведет 1 1 2 2
printf("%d %d %d %d\n", a[0], b[0], (a + 1), (b + 1));
Аноним 22/11/19 Птн 12:29:07 1526618234
Selection016.jpg (4Кб, 364x38)
364x38
>>1526616

Ох уж эта разметка в /pr/
Аноним 22/11/19 Птн 12:37:27 1526626235
>>1526588
Да если бы. В си тред я в первый раз пишу.
Аноним 22/11/19 Птн 12:47:34 1526632236
>>1526541
Не ебанутый, просто си это машинный язык, а не алгоритмический. Массивы и другие большие объекты нельзя возвращать, стек обосрется.
Аноним 22/11/19 Птн 13:23:38 1526662237
Аноним 22/11/19 Птн 14:29:54 1526712238
>>1526662
устанавливаешь все нужное
Аноним 22/11/19 Птн 15:03:07 1526751239
>>1526662

CentOS либо Fedora.
10 лет сижу на Fedora, полёт нормальный. Никогда ни с чем проблем не было.
Аноним 22/11/19 Птн 16:09:01 1526810240
Аноним 22/11/19 Птн 16:41:35 1526837241
Аассс
Аноним 22/11/19 Птн 17:02:12 1526850242
image.png (114Кб, 1366x768)
1366x768
>>1526541
Да ты ж просто рукожоп. Даже такая параша, как пикрелейтед, вполне работает и делает то, что нужно - возвращает массив строк.
Аноним 22/11/19 Птн 19:10:45 1526941243
>>1526810
ээээ мутный какой-то подходи на наш ftp-сервер, побазарим за GNU
22/11/19 Птн 19:28:33 1526967244
>>1526632
> Массивы и другие большие объекты нельзя возвращать
Массивы нельзя возвращать, потому что синтаксис не позволяет, а синтаксис не позволяет по историческим причинам. Структуры любого размера (в том числе структуры, внутри которых массив) возвращать можно, там внутри немного магии, но все равно можно.

>>1526601
> "a" константный
Это просто следствие того, что массивы нельзя присваивать. А нельзя присваивать, потому что массив по правую сторону от = как обычно деградирует до указателя.

> нельзя написать
Еще как можно. int ∗b = (int[]) {4, 5};
Аноним 22/11/19 Птн 19:32:39 1526976245
>>1526632
>язык программирования
>процедурный
Аноним 22/11/19 Птн 20:00:43 1527027246
>>1526967
ты сабж читал? если ты создаёшь массив внутри функции и вызываешь её, то в стеке инициализируется несколько полей памяти, которые закрепляются за массивом, после того как функция завершается все эти поля изымаются из стека и сразу же занимаются перемнными из следующих команд. Как ты собрался их возвращать?
Аноним 22/11/19 Птн 23:13:50 1527159247
>>1527027
А как ты возвращаешь числовую переменную? Она же тоже в стеке и освобождается при выходе.
Аноним 23/11/19 Суб 00:06:24 1527192248
>>1527159

Тебе стоит изучить как работает вызов функции на ассемблере. Во-первых, значение этой переменной может быть не обязательно в стеке, а может быть в регистре. Во-вторых, у каждой функции есть адрес возврата, куда она возвращает управления по окончанию своей работы и есть специальное соглашение, куда функция записывает то что называется её возвращаемым значением, чтобы это значение можно было использовать в вызывавшем функцию коде.
Аноним 23/11/19 Суб 02:39:19 1527248249
23/11/19 Суб 04:27:20 1527263250
>>1527027
> ты сабж читал
Ты мой пост читал?

> после того как функция завершается все эти поля изымаются из стека и сразу же занимаются перемнными из следующих команд
Все так. Только тебя это ебет в одном лишь случае: если ты вернул указатель на локальные переменные. Так делать не нужно. Если ты возвращаешь структуру, и эта структура в регистры не влезает, то вызывающая функция неявно создает под нее переменную, и результат в эту переменную копируется, т.е. фактически struct s func(void) { struct s result = {0}; return result; } преобразуется к struct s∗ func(struct s ∗hidden_buffer) {struct s result = {0}; ∗hidden_buffer = result; return hidden_buffer; }. И никаких проблем. Можно было бы возвращать и массивы точно таким же образом, но вот беда: когда ты пишешь return array, сишка видит return &array[0]. Такие дела.
Аноним 23/11/19 Суб 05:43:41 1527273251
>>1527192
Какая мерзость пиздабольная.
Аноним 23/11/19 Суб 06:32:13 1527282252
Какой стандартный способ вернуть несколько значений из функции в сишечке?
Аноним 23/11/19 Суб 06:47:24 1527285253
>>1527282
обернуть в структуру и передать указатель. возврат оставить для кода ошибки.
Аноним 23/11/19 Суб 07:01:10 1527288254
Буквально вчера узнал про такое заведение , как школа 21 / 42 и т д. Пишу в этот тред, так как там учат велосипедному Си и интересует мнение блатных анонов. Стоит ли лезть в это болото, если на дворе 21 век, а мне не обязательно знать как мои предки выкапывали сральник на улице? И почему их взгляд остановился на Си, че не Ассемблер?

Конкретно к Си у меня нет никаких претензий или негатива, как может показаться. У меня есть негатив к тому, что я должен делать банальные задачи в каловом редакторе, не используя некоторые дефолтные функции (да-да по типу printf). И кому эти навыки нужны в 21веке, где все стремится к скорости, а не к качеству.

Если что, то это мелкий слив заданий - https://github.com/jraleman/42 . Piscines - бассеин, местный жаргон, прописка в хату. 4 недели по 10 часов в день.

Пока челики пыхтят по 70 часов в неделю, то другие проходят питон+ дата сайенс на курсере и устраиваются через пол года за 100 к девальвированных рублей. И где нуб трапа?

Аноним 23/11/19 Суб 07:22:06 1527293255
> Стоит ли лезть в это болото, если на дворе 21 век, а мне не обязательно знать как мои предки выкапывали сральник на улице?
мне похуй, можешь не знать.

> И почему их взгляд остановился на Си, че не Ассемблер?
а то ты сам не знаешь ответ на этот вопрос.

> И кому эти навыки нужны в 21веке, где все стремится к скорости, а не к качеству.
> И где нуб трапа?
хуй знает, я не работаю, мне лень.
Аноним 23/11/19 Суб 09:32:54 1527321256
>>1527318
А мог бы на нормальном языке писать
Аноним 23/11/19 Суб 09:35:15 1527322257
>>1527321
Не себе пишу, в этом то и дело.
Аноним 23/11/19 Суб 09:36:49 1527323258
Screenshot20191[...].jpg (224Кб, 1080x1920)
1080x1920
Screenshot20191[...].jpg (130Кб, 1080x1920)
1080x1920
>>1527316
ЯННП, в чем проблема-то?
Аноним 23/11/19 Суб 09:53:13 1527330259
image.png (5Кб, 296x86)
296x86
Аноним 23/11/19 Суб 09:56:51 1527334260
>>1527330
Да напиши уже, что накодить-то пытаешься.
Аноним 23/11/19 Суб 10:07:10 1527339261
Аноним 23/11/19 Суб 10:08:41 1527340262
Аноним 23/11/19 Суб 10:17:25 1527342263
Подскажите чому не одно из этих быстрых сортировок не работает?: https://pastebin.com/eqaaQSdp
Аноним 23/11/19 Суб 10:39:37 1527351264
Selection013.jpg (158Кб, 902x448)
902x448
Selection014.jpg (190Кб, 943x708)
943x708
>>1527273

Пиздабольная мерзость - это твой среньк.

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

Или может ты отрицаешь, что когда я пишу на ассемблере ret, то я ПЕРЕХОЖУ по адресу откуда мою процедуру вызвал вызывающий код?

Я хотя бы потрудился чё-то в памяти освежить из универского курса асемблера, прежде чем пукнуть, а ты просто сренькаешь.
Аноним 23/11/19 Суб 11:02:54 1527358265
CI5fHxS6Cgw.jpg (80Кб, 668x331)
668x331
Аноним 23/11/19 Суб 11:08:33 1527359266
>>1527159
Тут проблем намного меньше. Значение возвращается так же как возвращается указатель, это по факту стандартный тип языка, инт, флот, чар, поинтер, которым язык может свободно оперировать. В C нет механизмов оперировать с массивами как с отдельными юнитами.
> C does not provide any operators for processing an entire string of characters as a unit.
page 87
Аноним 23/11/19 Суб 11:35:08 1527383267
>>1527358
Проблема в том, что есть char и есть char, и к char нужно добавить char, но ещё проблема в том что нельзя из char* взять рандомный элемент и перенести его в другую функцию.
Аноним 23/11/19 Суб 11:35:45 1527384268
image.png (9Кб, 429x99)
429x99
Аноним 23/11/19 Суб 12:41:02 1527422269
>>1527383
>>1527384
Епт, ну ты хоть ошибки компилятора покидай.
Аноним 23/11/19 Суб 13:06:04 1527460270
Аноним 23/11/19 Суб 13:08:11 1527461271
>>1527460
хз, я в сортировки не умею. в любой ситуации пиздярю список и всё.
Аноним 23/11/19 Суб 13:10:44 1527463272
>>1527461
Только не говори мне что ты нашел работу...
Аноним 23/11/19 Суб 13:15:51 1527468273
>>1527463
я её даже не искал. но если бы меня спросили за сортировку, я бы из жопы пузерёк достал и был бы таков. зачем мне это говно запоминать даже? если нужно прочитаю на википедии - освежу в памяти.
Аноним 23/11/19 Суб 13:24:07 1527483274
>>1527468
+1, тем более сейчас всё на генериках. Ну так для общего развития можно пропердолится в рекурсию в отпуске.
Аноним 23/11/19 Суб 13:32:51 1527501275
>>1527468

Мне кажется, что когда спрашивают за сортировку, то они не хотят этим сказать, что ты её будешь писать, а хотят проверить какие ты знаешь методы сортировки и знаешь ли ты как они работают, то есть понимаешь ли какую сортировку в каком случае применять.
Аноним 23/11/19 Суб 13:50:56 1527545276
>>1527501
ничего я не понимаю, я знаю только квиксорт и всё. объяснить я его не смогу. сортировка это узкоспециализированная хуйня, над ней бьются серьёзные математики, а мы просто пользуемся, как мы пользуемся процессором не переизобретая его.

но сколько я программирую, я не понимаю, откуда вообще может взяться массив памяти в один момент который ещё и нужно отсортировать? чаще данные приходят последовательно, или ты их обрабатываешь последовательно. и зачем заниматься свопом данных, быстрей формировать список.
Аноним 23/11/19 Суб 13:57:46 1527553277
ну я условно - список, хеш-таблица списков, дерево красно-чёрноё-родимое.
Аноним 23/11/19 Суб 14:55:54 1527598278
>>1527545
сортировать то по разному надо
кому то быстро, не учитывая того что в наихудшем случае будет провал по скорости (привет быстрая сортировка)
кому то нужно делать частичные сортировки (например, осортировать только для 5ти первых)
кому то нужно делать стабильные сортировки (те у которых не меняется порядок следования одинаковых элементов)
кому то нужно делать вообще сортировку последовательностей, те данных которые не влезают целиком в доступную оперативную память
и оказывается, что все те виды сортировок, что препод тебе в вузике на втором курсе уныло рисовал на доске, потребны..

Аноним 23/11/19 Суб 14:56:44 1527599279
>>1527598
еще есть и специфичные сортировки, типа сортировки куч, к примеру..
Аноним 23/11/19 Суб 15:24:30 1527626280
>>1526850
и правда, код функции, напичканой внутри мемсетами, реалоками и каллоками иначе как "парашей" не назовешь

Аноним 23/11/19 Суб 15:33:57 1527636281
>>1527358
первый признак непрофессионала: по любому поводу срать маллоками, каллоками, реалоками, мемсетами и прчоей аналогичной парашей

Аноним 23/11/19 Суб 15:54:33 1527651282
>>1527636
ну а что ты имеешь против мемсетов и мемкопи, например?
Аноним 23/11/19 Суб 17:19:24 1527736283
17.jpg (111Кб, 891x786)
891x786
Коданы, подскажите ...
Аноним 23/11/19 Суб 17:23:39 1527742284
>>1527736
ты мне лучше скажи, что вас к этому ведёт, заниматься всякой хуйнёй помимо стандарта?
Аноним 23/11/19 Суб 17:25:07 1527746285
>>1527736
и нет блять, это не вопрос производительности.
Аноним 23/11/19 Суб 17:26:32 1527748286
>>1527742

Что ты имеешь ввиду?
Нет, не подумай что я UDP считываю, внутри UDP лежит другой пакет со своим заголовками.
Аноним 23/11/19 Суб 18:00:56 1527801287
>>1527748
ну то есть, и как ты с одной машины на другую будешь передавать типы отличные от char ? а если у них отличаются порядок байт в типах.
Аноним 23/11/19 Суб 18:12:03 1527804288
>>1527801
Сейчас бы в серьез думать о bigendian в своем васянокоде. Какой милый мальчик, играется во взрослого.
Аноним 23/11/19 Суб 18:14:17 1527805289
>>1527736
Сбрасывать память целиком не надо, потому что вписать какой-нибудь char в новую версию структуры, в итоге проебаться в alignment'ом и долго искать баги.
Аноним 23/11/19 Суб 18:26:25 1527813290
Сложно ли написать свою виртуальную машину в целях обучения? Сам на С никогда не работал (вебмакака та самая я). Но давно уже хотел попробовать что-то низкоуровневое, интересно как это все работает. Вот пока железо изучаю, ассемблер, потом Си подключить хочу
Аноним 23/11/19 Суб 18:43:08 1527828291
>>1527801

В смысле переносить на другую машину? У нас ни каких машин кроме обычных компьютеров из DNS в принципе не было, нет и не будет никогда.
Аноним 23/11/19 Суб 19:21:26 1527856292
>>1527828
>В смысле переносить на другую машину?
На IBM Mainframe.
Аноним 23/11/19 Суб 19:24:19 1527860293
>>1527828
>>1527804
да пошли вы оба на хуй. я с такими мудаками в си-треде даже разговаривать не хочу. для вас придумали языки получше.
23/11/19 Суб 19:47:29 1527877294
>>1527813
> Сложно ли написать свою виртуальную машину в целях обучения?
Нет, не сложно. Простейшая виртуальная машина это switch(opcode) внутри бесконечного цикла.

>>1527736
Если задача - хранить, то можно использовать битфилды (хотя в первую очередь стоит подумать, нужна ли тебе такая экономия на памяти за счет процессора).
Если задача - передавать между машинами, тогда однозначно маски, потому что про битфилды обещаний со стороны языка мало, а компиляторов много.
В крайнем случае, если тебе пиздец как нужна скорость (т.е., если вариант с масками и сборкой из байтиков уже написан и тормозит), тогда можно и memcpy поверх структуры с битфилдами, но с проверкой внутри сборочного скрипта, что компилятор реализует все так, как ты ожидаешь, а не как ему больше нравится.
Аноним 23/11/19 Суб 20:26:48 1527907295
>>1527877

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

О, а я тоже подумал, что хорошо бы написать некий тест, который проверяет всё ли располагается в памяти "как ожидается" и если да, то через указатель, если нет, копируем с масками.
Аноним 23/11/19 Суб 20:32:50 1527913296
Аноним 23/11/19 Суб 20:44:08 1527929297
Selection015.jpg (107Кб, 514x854)
514x854
Аноним 23/11/19 Суб 20:54:02 1527941298
Аноним 23/11/19 Суб 21:05:40 1527962299
Как через printf вывести double/float только то что после запятой?
Например при вводе 42.005 должно вывести .005
Аноним 23/11/19 Суб 21:23:04 1527970300
>>1527962
Пока на ум приходит только одна идея, сконвертировать float/double в char через snprinf() или asprinf() найти '.' через strchr() и дальше уже напечатать через %s
Это единственно верное решение?
Аноним 23/11/19 Суб 21:26:22 1527971301
Аноним 23/11/19 Суб 21:35:54 1527975302
%0.3f
Аноним 23/11/19 Суб 21:37:40 1527977303
>>1527962

На сколько я знаю, у printf есть модификатор, которые позволяет урезать число цифр после запятой, но не до запятой.

Если написать printf("%1.1f", 13.14);
То вывод будет 13.1
Если написать printf("%10.1f", 13.14);
То вывод будет ________13.1 (где _ - это пробел)
То есть модификатор для целой части может выводить дополнительные пробелы, но не может уменьшать количество цифр в целой части.

Так что выход для тебя - выделить дробную часть и вывести её как отдельное число.

Можешь сильно упороться, разобраться побитово как хранится в памяти число с плавающей точкой и выделить оттуда дробную часть. Погугли, "как хранится в памяти double", слабоумие и отвага!
Аноним 23/11/19 Суб 21:40:46 1527979304
float f = 42.0976;
int i = f;
float r = f - i;
printf("%.3f", f);
Аноним 23/11/19 Суб 21:53:03 1527994305
точнее так
float f = 45,676;
int i = f;
float fraction = f - i;
float intermediate = fraction *1000;
int r = intermediate;
printf(".%d", r);
как же клево знать арифметику.
и немножко алгебры
Аноним 23/11/19 Суб 21:54:34 1527996306
>>1527626
>>1527636
И чо, мне костылить тысячи циклов? Один хрен я в настоящее программирование на Си не попаду.
Аноним 23/11/19 Суб 22:22:48 1528012307
Screen Shot 201[...].png (27Кб, 315x401)
315x401
>>1527994
Если float > INT_MAX твой код сосет, если после запятой идет 005, то у тебя будет 5 а не 005
Аноним 24/11/19 Вск 01:10:47 1528112308
>>1527996
>>1527340
да я хотел просто выебнуться, сейчас признаю свое хуевое поведение
попробовал сделать сам, и в итоге не меньший говнокод получился:
https://pastebin.com/V7mAKBBi
Аноним 24/11/19 Вск 02:16:39 1528142309
>>1527288
"питон+ дата сайенс на курсере и устраиваются через пол года за 100 к девальвированных рублей" Инфа сто процентов или "но есть один ньюанс" ?
Аноним 24/11/19 Вск 03:11:23 1528160310
Аноны, норм практика объявлять структуры типа
struct {
type1 memb1;
type2 memb2;
...
char stroka[0x1000];
};
но не маллокать для каждого экземпляра все 4+ килобайта? Типа, именно эта строка в конце дается только один раз, и места требует ровно под свою длину, но лежит в виде фиксированного массива внутри структуры, чтоб обращаться по офсету от адреса самой структуры, а не дополнительные указатели разыменовывать. И менеджер кучи вдвое меньше дрочится, когда таких структур 100500, и память экономится...
24/11/19 Вск 03:20:51 1528166311
>>1528160
Ты, вероятно, имел в виду:
struct {
type1 memb1;
type2 memb2;
...
char stroka[]; // char stroka[1] в С89
};
Да, абсолютно нормальная практика.
Аноним 24/11/19 Вск 03:48:01 1528181312
>>1528166
ох, мне пора баеньки.. Действительно, к чему это 0x1000, когда никто смотреть не будет, по размеру ли я индексируюсь. Не знал, что в C99 можно без [1]. Спасибо, анон.
Аноним 24/11/19 Вск 04:13:47 1528182313
>>1527359
>В C нет механизмов оперировать с массивами как с отдельными юнитами.
>>1526632
Вдумайся в смысл. То что нет способоа это ежу поеятно, капитан, это аообще не вопрос. Проблема в том что само желание возвращать массивы в си это дебилизм, признак незнания языка. Возможности нет не потому что разработчикам было лень или еще что, а потому что и ре должно быть такой возможности, в стек нельзя совать большие объекты. Да, структуру можно, но структура не большая по дефолту, лишь несколько чисел, а массивы большие как правило, их смысл - хранилище данных, база, а смысл структуры лишь обертка для нескольких переменных.

Весь вопрос не в доках к языку, что есть или нет, а в непонимании что си это не алгоритмический язык абстрагированный от железа, в таком случае естественно ожидать возвратов всего, а машинный язык, привязанный к аппаратной архитектуре, чем является стек.
Аноним 24/11/19 Вск 08:55:05 1528226314
>>1521021
Биткоин вот переписали на 11 стандарт.
Аноним 24/11/19 Вск 10:13:06 1528242315
Аноним 24/11/19 Вск 11:04:44 1528256316
>>1528226
интересно, биткоин это какой-нибудь фронт енд для ллвм с поддержкой куда?
Аноним 24/11/19 Вск 11:14:36 1528259317
Сап, Сяч. Глюпий вопрос, но как мне получить значение из регистров вроде r8, r9, r10 итд?
Вот к примеру, чтобы взять значение из rsi, делается так:

asm ("команда" : "=S" (переменная назначения));

Проще говоря, какой дескриптор тут нужен вместо S, чтобы получить пронумерованный регистр?
Аноним 24/11/19 Вск 14:52:39 1528375318
>>1528259
почему это гулпый вопрос? но нужно добавить, это вопрос про gcc(?).

хз как на x86-64, но на 32:

asm ("movl %%eax, %0 \n" :"=m"(x))

гугли там модификаторы, =m - это вроде в глобальную переменную прописать.
Аноним 25/11/19 Пнд 06:01:32 1528974319
>>1528375
>это вопрос про gcc(?).
А разве инлайны в гцц и clang обрабатываются по-разному?
Аноним 25/11/19 Пнд 09:32:49 1529009320
чё вообще делает инлайн?
Аноним 25/11/19 Пнд 09:35:12 1529012321
я как понимаю это нужно для ABI stability. А ABI Stability это то что позволяет компилировать .с файлы с уже скомпилированными .o файлами?
Аноним 25/11/19 Пнд 10:42:54 1529031322
>>1529009

Это вежливая просьба к компилятору, что хорошо бы чтобы ассемблерный код этой функции был вставлен прямо в ассемблерный код программы в каждом том месте, где функция вызывается. Это, при правильном использовании, позволяет сэкономить на "... passing arguments variables, return address, return value, stack mantle and its dismantle, etc."

https://www.thegeekstuff.com/2013/04/c-macros-inline-functions/
Аноним 25/11/19 Пнд 21:28:52 1529557323
>>1518919 (OP)
Где сейчас вообще используется С или это просто по фану?
Аноним 25/11/19 Пнд 22:26:30 1529608324
>>1529557
Везде. И если тебе так не кажется - присмотрись! Все в мире пропитано духом Си, и без K&R не видать тебе просветления ни в одной отрасли погроммизма.
Аноним 25/11/19 Пнд 22:47:53 1529622325
>>1529608
А духом Си можно пропитаться без Кернигана Ричи? Устаревший типа. Мне напели что там вообще примеры из книги не компилируются
Аноним 25/11/19 Пнд 22:58:32 1529628326
>>1529622
Ой, один хуй вводный курс не наденет тебе на голову все детали стандарта, ибо на то он и вводный, чтоб осилить. Так лучше читать годноту.
Аноним 25/11/19 Пнд 23:29:05 1529647327
>>1529622
k&r - шедевр, а не книга
образец как надо писать техническую обучающую литературу

Аноним 26/11/19 Втр 00:31:32 1529670328
Почему все такие мудаки и не хотят запилить <threads.h>? Что стоит просто взять и сделать? Могу сейчас сам обертки pthread набросать и за деньги продать, раз такое дело.
Аноним 26/11/19 Втр 00:38:30 1529673329
>>1529670
так бля, разобрался, у меня glibc 2.27, а потоки c11 завезли в 2.28, но ОС не спешит перекатываться на свежие версии, а накатить прям вместо той, что стоит по-дефолту, чревато поломкой при обновлениях. pizdos
Аноним 26/11/19 Втр 01:11:59 1529685330
>>1529622
>примеры из книги не компилируются
Только из последней главы, где системные вызовы. И это не сильно мешает разбирать сами примеры.

>Устаревший типа
Багаж в виде K&R тебе только поможет врубиться в нововведения, обузой он уж точно не будет.
Там всего 200 страниц, остальное справочник.
Аноним 26/11/19 Втр 09:01:45 1529761331
>>1529670

Чем pthreads не устраивает? Вроде ниче сложного.
Аноним 26/11/19 Втр 10:10:55 1529781332
>>1529761
ни в коем случае не жалуюсь, но хотелось бы няшного стандартного интерфейса, переносимого наконец куда-то на винду
Аноним 26/11/19 Втр 11:11:15 1529829333
>>1529761
ооо либераху порвало
Аноним 26/11/19 Втр 12:22:09 1529898334
Снимок экрана 2[...].png (330Кб, 1417x837)
1417x837
Кто помнит книгу, аноны?
Я правильно понимаю что все строки сохраняются в огромный буфер, который мы делали в прошлой главе, и который является екстернал переменной?
Аноним 26/11/19 Втр 12:27:37 1529904335
>>1529898
Нет.
Теперь в буфере сохраняются только указатели на строки, но не сами строки.
Аллок, который ты подсветил как раз выделяет ровно столько памяти, сколько нужно под текущую строчку.
Аноним 26/11/19 Втр 12:55:04 1529924336
Снимок экрана 2[...].png (309Кб, 1433x672)
1433x672
>>1529904
Так без этого кода эта программа не будет работать? У нас же есть функция strcpy(char , char ), которая копирует в огромный буфер allocbuf[] наши строчки одна за другой? И указатели, которые лежат в массиве ведут на куски этого буфера?
Аноним 26/11/19 Втр 13:30:15 1529938337
>>1529924
А бля, да, я вперед забежал.
В твоей текущей версии все строки пишутся в один буфер.
Аноним 26/11/19 Втр 19:43:40 1530191338
Аноним 26/11/19 Втр 19:48:15 1530193339
>>1518919 (OP)
>- 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 или до.
Ролл. От 0 до 4 Мозг и Денис, от 5 до 9 Стивен
Аноним 26/11/19 Втр 20:06:20 1530211340
Аноним 26/11/19 Втр 20:08:05 1530213341
>>1530193
Глупо роллить вот так на мертвой доске.
Аноним 26/11/19 Втр 20:22:33 1530227342
Аноним 26/11/19 Втр 20:27:30 1530232343
>>1530193

И то и другое не вариант?
Сначала КНР, он потоньше.

У меня, кстати, ещё вот такая книжка есть:
https://www.ozon.ru/context/detail/id/928388/

Очень мне нравилась, когда по Си угарал. Многое оттуда почерпнул. Если найдешь где скачать без СМС, полистай.
Аноним 26/11/19 Втр 20:29:28 1530236344
>>1530232
>И то и другое не вариант?
Я хотел сначала ролл, потом второе.
>Если найдешь где скачать без СМС, полистай.
Спасибо, обязательно полистаю.
Аноним 26/11/19 Втр 22:06:24 1530328345
>>1530227
Очень легко предугадать по последнему бампу на доске.
Аноним 27/11/19 Срд 03:41:58 1530446346
>>1529898
этаж хуйня не будет работать. == выполняется раньше чем =
Аноним 27/11/19 Срд 07:16:11 1530470347
>>1530328
Так я не знаю, какой тут последний бампер на доске
Аноним 27/11/19 Срд 08:40:34 1530485348
>>1530470
Боже, ты тупой? Мой пост заканчивается на 485 сейчас, например.
Аноним 27/11/19 Срд 08:42:30 1530487349
Рекурсия, епт.
>>1530487
Аноним 27/11/19 Срд 13:26:28 1530614350
Так, блядь, я верю, что вы мне поможете. Я написал программу для одной конторы, которая косплеит HTTP на сокетах, и встал вопрос, как именно, без всяких АПИшечек и прочих ништяков, собрать правильную строку "HTTP/1.1 200 OK" и "HTTP/1.1 400 Bad Request" ДА ХОТЬ ПО БАЙТАМ 0xb 0x7 0xJa 0xPidoras вообще похуй, чтоб для браузера клиента это не мусор был. м???? м???????????
Аноним 27/11/19 Срд 13:38:56 1530625351
Аноним 27/11/19 Срд 13:43:56 1530627352
>>1530625
предвидел эту ссылку
Аноним 27/11/19 Срд 13:46:53 1530630353
>>1530627
сорян, тебе нужен лейаут фрейма? Самому интересно
Аноним 27/11/19 Срд 13:48:14 1530634354
>>1530630
send(_sock, "HTTP/1.1 400 Bad Request\r\n", 26, 0);
Что не так в этой божественной строке кода?
Аноним 27/11/19 Срд 13:52:06 1530639355
>>1530634
мейби что то с портами, типа клиент стучится на сокет порт, и не знает что придёт хттп
Аноним 27/11/19 Срд 13:55:06 1530643356
>>1530634
там же ещё есть аутентификация
Аноним 27/11/19 Срд 13:55:59 1530645357
>>1530634
попробуй 500 ошибку кинуть (ошибку сервера)
Аноним 27/11/19 Срд 14:01:40 1530651358
>>1530634
напиши плагин для браузера который работает с твоим сокетом и радуйся
Аноним 27/11/19 Срд 14:42:04 1530697359
>>1530643
какая аутентификация? Короче, моя программа полностью хавает POST-запрос с JSON-ом в конце, парсит всю хуйню и т.д. и т.п., после чего сразу отвечает 200 или 400. Там еще какая-то промежуточная перекличка должна быть??
Аноним 27/11/19 Срд 14:44:43 1530702360
Аноним 27/11/19 Срд 14:46:27 1530705361
Аноним 27/11/19 Срд 14:50:09 1530713362
Аноним 27/11/19 Срд 16:59:11 1530832363
>>1530713
бля, у меня уже все жестко написано по-байтоебски, мне бы только разобраться с последней траблой - чтоб клиент, который не догадывается, что его запросы обрабатываются на уровне laba2.c, видел серьезный такой, усатый в тельняшке респонс
Аноним 27/11/19 Срд 17:51:41 1530855364
>>1518919 (OP)
Как лучше всего (в плане оптимизации - скорость выполнения, количество тактов) заполнять память по указателю?
char offset;
for(offset = 0; ... ; offset++)
{
(char ∗)(0x123 + offset) = data;
}

Или

char ∗ptr;
for(ptr = (char ∗)0x123 ; ... ; ptr++)
{
∗ptr = data;
}
Аноним 27/11/19 Срд 17:57:30 1530861365
>>1530855
Забыл про условия циклов
1) offset < 1337
2) ptr < (char ∗)(0x123 + 1337)
Аноним 27/11/19 Срд 17:57:56 1530862366
>>1530855
Я бы посмотрел как устроен memset

Наверняка самый быстрый способ с использованием 64 бит значения или вообще SIMD

Что-то вроде:
long values; // fill it with 'value'
for (ptr = start; ...; p += 8)
{
(long)ptr = values;
}


Аноним 27/11/19 Срд 18:52:38 1530970367
>>1530485
Нет, я просто зашёл в тред и написал пост, не обращая внимания на циферки.
Аноним 27/11/19 Срд 21:57:47 1531179368
Анон, N тредов назад советовавший мне делать HTTP сервер велосипедами на сокетах, ебучий ты содомит!
>что ты как джавист
сказал он мне, когда я приперся с вопросами про HTTP Server API для Windows... Нахуй это ваше байтоебство - психическое отклонение.
Аноним 27/11/19 Срд 22:00:01 1531183369
>>1531179
>этот подрыв неосилятора
27/11/19 Срд 23:04:20 1531225370
>>1530634
> Что не так в этой божественной строке кода?
У нас TCP. В редких, но все же вероятных ситуациях строка может отправиться не полностью, счастливой отладки. Алсо, где вторая пара \r\n в конце?

>>1530855
ptr + offset не всегда возможно оптимизировать до ptr += offset автоматически (алиасинг и все такое).

Аноним 27/11/19 Срд 23:36:32 1531239371
>>1531225
Я уже и \r\n, и \r\n\r\n, и \r\n\r\n\r\n\r\n пробовал. А кейс с разбиением 30-байтовой строки на части (лол) - не моя ответственность, я респонс отправляю, а принимает его полноценная реализация протокола.
Аноним 28/11/19 Чтв 00:12:52 1531248372
>>1531179
Так если винда, то чем тебе winhttp.h не нравится?
Аноним 28/11/19 Чтв 00:19:47 1531252373
>>1531239
Ты можешь его и не отправить, лол. Буферизация, Нагл.
По tcpdump проверил?
Аноним 28/11/19 Чтв 01:21:44 1531279374
>>1531248
В тестовом клиенте (ниже) его и юзаю, но winhttp - это же только для клиентского и есть, нет? Непонятно, как там серверную очередь делать, для этого видимо HTTP Server API существует. Я ошибаюсь?
>>1531252
После закрытия дочернего сокета разве не должно флашиться? И нет, проблема не в этом. Мой тестовый клиент все распечатывает (200/400). А нормальным программам почему-то похуй.
28/11/19 Чтв 01:40:43 1531282375
>>1531239
> пробовал
Хорошо, а что именно у тебя не работает? Какого поведения ты хочешь от браузера, и что происходит? Ты хочешь вежливо послать нахуй браузер? Так отправляй полный респонс: "HTTP/1.1 400 Bad request\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\nGo fuck yourself."
Аноним 28/11/19 Чтв 02:36:40 1531291376
>>1531282
А браузер не отображает status line, если кроме нее ничего нет? Вообще, это я с браузером решил поиграться. Там свой клиент, и мне жалуются, что вообще никакого ответа с сервера нету, хотя знающе так говорили, что хватит любой хуйни типа 200/400. Неловко ламповый Си-тредик этим загружать... Пойду спать, забей анон.
Аноним 28/11/19 Чтв 04:20:07 1531301377
>>1531291
>получил ответ
>блабла, ну я пойду, забей
28/11/19 Чтв 06:45:35 1531321378
>>1531291
> знающе так говорили, что хватит любой хуйни типа 200/400
Хватит, чтобы браузер понял, что у тебя ошибка. А чтобы еще и пользователь понял, нужно посылать тело.

> жалуются, что вообще никакого ответа с сервера нету
А ты точно соединение правильно закрываешь? SO_LINGER там или shutdown() какой-нибудь? Может там клиент не хочет неожиданно получать -1 от recv().
Аноним 28/11/19 Чтв 09:11:47 1531349379
Кстати необязательно серверу закрывать соединение после каждого пука. Достаточно на клиенте запустить в паралельном треде цикл который читает из сокета а в главном функцию которая в него пишет.
Аноним 28/11/19 Чтв 12:58:19 1531482380
>>1531301
>>1531321
Я выспался, и сейчас обязательно попробую с телом.
>>1531349
Не похоже на мой случай.
Аноним 28/11/19 Чтв 13:00:07 1531484381
>>1531482
попей сладкий чай с бтером
Аноним 28/11/19 Чтв 13:08:53 1531496382
>>1531484
Ценный совет, замечу. Вчера пренебрег, что привело к полету стеклянной бутылки в стену и метлы в монитор РОТ ЕБАЛ ЭТОЙ ВИНДЫ ССУУККАА
Аноним 28/11/19 Чтв 16:59:55 1531687383
>>1531496
Дядь, лечи нервы, я не представляю, как бы ты на реальной работе прогером психовал.
Аноним 29/11/19 Птн 22:17:14 1533263384
>>1531496
Установи линукс, там всё просто и понятно.
Аноним 29/11/19 Птн 22:22:43 1533277385
>>1533263
Только им и пользуюсь для себя.
Аноним 29/11/19 Птн 22:24:05 1533278386
>>1533277
>КО-КО-КО! Ебусь консолькой в срачельничек!
Аноним 30/11/19 Суб 00:56:10 1533373387
>>1533278
Да я и на винде в консольке.
Аноним 30/11/19 Суб 02:59:42 1533427388
>>1531687
Линуксоид это не лечится.
Аноним 30/11/19 Суб 12:22:11 1533552389
>>1533427
Ой, иди ты нахуй, я умный и красивый.
inb4 пруф - мать подтвердит
Аноним 30/11/19 Суб 13:10:52 1533618390
>>1533552
хуй сосёшь?

гентушник
Аноним 30/11/19 Суб 20:08:14 1533972391
Аноним 01/12/19 Вск 09:45:36 1534226392
>>1533552
>я умный и красивый
И что? Это ни как не связано с тем, на что ты отвечаешь. Видимо не такой уж и умный, раз не понимаешь, что "ум" - вещь многогранная, в зависимости от ситуации и контекста означающая совсем разные вещи. Видишь, в данном контексте ты довольно тупой, но в других можешь быть и умным.
Аноним 02/12/19 Пнд 08:57:41 1535571393
Ну это, мне надо буффер символов, в который с одной стороны можно класть символы, с другой вытаксивать. Как такое заебенить? Дабл линкед лист очевидно говно мочи, т.к. пойнтер занимает больше места чем символ.
Аноним 02/12/19 Пнд 09:41:10 1535587394
>>1535571
ну, к примеру, у тебя будут так называемые "чанки", это массивы фиксированной длины, связанные между собой в список, память под чанки же может выделяться через организацию пула
это один из вариантов реализации, коих много

Аноним 02/12/19 Пнд 09:42:51 1535588395
>>1535587
возможно, подойдет и простейший кольцевой буффер..

Аноним 02/12/19 Пнд 09:55:57 1535594396
>>1535587
>>1535588
то есть обычно очереди реализуют как подвид дек, а деки в свою очередь имеют несколько возможных реализаций, к примеру через кольцевой буфер, либо как набор чанков, связанных списком или еще как..
посмотри на википедии, лол

Аноним 02/12/19 Пнд 12:38:53 1535764397
Я маллочу память в указатель, и затем опять маллочу, не подчищая его перед этим.
Так можно?
Аноним 02/12/19 Пнд 15:05:02 1535902398
>>1535764
а первое кто освобождать будет?
Аноним 02/12/19 Пнд 15:06:31 1535905399
>>1535764
Ну, если, например, в цикле маллочишь и передаешь указатель функции, делегируя ей ответственность за free, то ок, какие проблемы.
Аноним 02/12/19 Пнд 22:07:56 1536207400
>malloc
Орнул
Аноним 03/12/19 Втр 18:05:03 1536869401
2019-12-0317-45[...].png (9Кб, 461x221)
461x221
https://ideone.com/4bcVv1#stdin
Аноны, поясните, пожалуйста, что не так?
Выходит пикрил.
Думал что это из-за того что использую i-1 в строке, которая с нуля идет, но попробовал переписать с начальным i - единицей, все равно эта ошибка вылазит, в чем проблема?

(на сайте не компилируется, т..к не открывает string.h, через vs19 компилируется, но выходит пикрил при попытке ввода слов)
03/12/19 Втр 22:08:07 1537094402
>>1536869
> Аноны, поясните, пожалуйста, что не так?
1) Пользуешься уебищными функциями с _s.
2) gets_s() хочет два аргумента, передаешь один.
3) Не проверяешь конец строки (не ввел точку в конце - получил вот эту самую С0000005). И во внутреннем цикле тоже не проверяешь.
4) Не проверяешь, что symb сам пробел.
Остальное вроде ок.
Аноним 04/12/19 Срд 11:27:05 1537372403
как вы обозначаете тип указателя
char^ alloc(int n)
или
char ^alloc(int n)

в книге настаивается на втором варианте, так как это мнемоник который показывает нам что чтобы его развернуть надо поставить перед переменной звёздочку. Но я никак не могу привыкнуть как не пытаюсь (после плюсов) и подмывает юзать первый вариант.
Аноним 04/12/19 Срд 11:31:12 1537376404
>>1537372
Писать звездочку слитно с типом кажется хорошей идеей ровно тогда, когда объявляешь одну переменную, являющуюся простым указателем (или указателем на простой указатель). Как только начинаются указатели на функции, указатели на многомерные массивы, много указателей char ∗p, ∗q; сразу приходит понимание, что первый вариант - полная хуета.
Аноним 04/12/19 Срд 12:16:37 1537396405
>>1537376
Не приходило в голову, что при одной переменной, правильнее слитно с типом, а с несколькими правильнее слитно с переменной?
Аноним 04/12/19 Срд 14:21:48 1537479406
>>1537396
А зачем мешать? Что за двоемыслие? Смысл всех этих декорирующих звездочек, скобок и прочего в том и только в том, чтоб отобразить последовательность операций, приводящих к описанному типу. Нечего тут косплеить.
Аноним 05/12/19 Чтв 00:58:48 1537874407
Привет. Вопрос про кодогенерацию. Есть ли какие-то нативные средства, чтоб вместо
ja[0] += pidoras[0],
ja[1] += pidoras[1],
ja[2] += pidoras[2]

Писать
YOBA_MACRO(ja, +=, pidoras, 3)
?
Отдельно для трех, например, легко сделать
#define COMBINE3(dst, op, src) \
(dst[0] op src[0], dst[1] op src[1], dst[2] op src[2])

Но умеет ли препроцессор генерировать N аналогичных строк по шаблону?
05/12/19 Чтв 01:12:07 1537882408
>>1537874
> Есть ли какие-то нативные средства
Да. Внешний кодогенератор на питоне, перле, баше или даже на самой сишке.

> Но умеет ли препроцессор генерировать N
Сорт оф. Ты можешь дважды вызывать combine3 из другого макроса, тот другой тоже вызывать дважды, и... тридцати двух уровней вложенности тебе точно хватит.
Аноним 05/12/19 Чтв 02:01:59 1537888409
>>1537874
если не нужна помтоянная автоматизация, то такое генерится в экселе или блокноте++ за пару минут
Аноним 05/12/19 Чтв 02:24:59 1537895410
>>1537882
>>1537888
В принципе, можно цикл в макросе сделать, а его уже конпелятор векторизует. Но меня привлекает именно через запятую в круглых скобках, чтоб можно было таким же элементарным выражением где угодно вставлять, как настоящий вызов функции. Хотя, на практике мне это не нужно...
Аноним 05/12/19 Чтв 05:01:27 1537917411
>>1537479
Смысл написания чтобы было натурально человеку. Это машинному парсеру удобнее единообразие, но не человеку. Если у тебя ведро с болтами на плечах, тогда вопросов нет.

>>1537874
Цикл for
Аноним 05/12/19 Чтв 09:36:40 1537959412
Хочу взять все файлы из дериктории и скормить силангу
ls ../LearnC/ | clang
ЧОМУ ЭТА ХЕРНЯ НЕ РАБОТАЕТЙ
Аноним 05/12/19 Чтв 09:51:18 1537963413
>>1537372
оба варианта говно, делай тайпдеф pchar
>>1537376
>char ∗p, ∗q;
а с pchar p,q; ни у кого не будет сомнений в семантике и тупых ошибок
асло больше одного обьявления на строку в большинстве случаев - говнокод
мимокрестовик
Аноним 05/12/19 Чтв 10:54:32 1537988414
157549313219204[...].jpg (704Кб, 700x1244)
700x1244
>>1537963
>больше одного обьявления на строку в большинстве случаев - говнокод
>мимокрестовик
Всегда стараюсь объявлять переменные одной строкой и в самом начале подпрограммы.
Аноним 05/12/19 Чтв 11:54:46 1538056415
почему не работает
моя утилита которая выковыривает юрл | clang

clang не может быть частью пайпа?
Аноним 05/12/19 Чтв 13:21:35 1538144416
>>1537372
Если объявляется переменная, то звезда относится к этой переменной, соответственно и место ей рядом с именем переменной.
Если объявляется функция, то звезда относится к типу возвращаемого значения, а переменной как таковой нету, соответственно ее уместнее приклеить к типу.
Так подсказки intellisense более внятно читаются, на мой взгляд.

Алсо, в с++ не во всех контекстах возможно придерживаться строго одного стиля.
Аноним 05/12/19 Чтв 15:25:18 1538277417
Объясните, чем отличается размер от выравнивания в памяти?
Аноним 05/12/19 Чтв 15:44:41 1538294418
Аноним 05/12/19 Чтв 17:23:15 1538374419
>>1538144
Нет таких условностей, анон. Функция тоже может возвращать указатель на многомерный массив или указатель на функцию, например. Только отображение последовательности операций, чтоб получить тип слева, и никак иначе. Остальное от гуманитариев. Привыкнув к написанию слитно с типом даже в отдельных случаях, неизбежно будешь путаться, столкнувшись, скажем, с
typedef float (EdgeList ∗)[2][3];
Если в голову приходят мысли писать иначе, значит логика Сишных деклараций НЕ ОСИЛЕНА, поциент не мыслит верными категориями, и каждый нетривиальный случай для него мини-головоломка, что есть совсем не айс.
Аноним 05/12/19 Чтв 17:27:37 1538377420
>>1538277
Ну, например, ты хранишь какие-то 24-битовые штуки по адресам, кратным dword. Размер 3 байта, выравнивание 4 байта. А еще в многомерных массивах бывает выравнивание начал строк. В bmp каждый пуксель - 3 байта (RGB), но даже если шириника картинки - 611, все равно каждая строка будет начинаться с адреса, кратного 4.
Аноним 05/12/19 Чтв 17:29:34 1538380421
image.png (216Кб, 590x518)
590x518
>шириника
Аноним 05/12/19 Чтв 17:30:50 1538382422
>>1538144
>c++
Тут не понял. Ссылки?
Аноним 05/12/19 Чтв 17:32:01 1538383423
>>1538374
typedef float (∗EdgeList)[2][3];
перепрошую, панове, трошки обiсрався
Аноним 05/12/19 Чтв 17:35:01 1538385424
Бля, ладно, я никто, на самом деле. Хз, как там у седых усатых дядь в тельняшках принято промышленный код оформлять. Всем добра.
Аноним 05/12/19 Чтв 18:16:09 1538424425
сап сикуны! посоветуйте видеоуроки по С годные на русском плз.
Аноним 05/12/19 Чтв 18:17:35 1538425426
Аноним 05/12/19 Чтв 18:26:25 1538428427
>>1538425
ну да видеоуроки
я с книжки засыпаю
на рутрекере уроков C нет
Аноним 05/12/19 Чтв 19:12:53 1538447428
>>1538377
Не совсем понял
ок 24 битовая штука.. 24 / 8 = 3 байта
пусть есть массив
ХХХOOOOO|XXXOOOOO|XXXOOOOO|...
То есть X это полезная нагрузка, O это пустые байты, чтобы
блок XXXOOOOO делился на dword ?
То есть XXX - размер (3)
OOOOO - выравнивание (4)
а что тогда XXXOOOOO ?
05/12/19 Чтв 19:15:44 1538449429
>>1537959
Используй find, а не ls.

>>1537963
> тайпдеф pchar
Фу блядь, фу нахуй, сходи проверься, ты заразился от винды чем-то нехорошим.

>>1538447
Почему у тебя так много O? 24 бита = три байта, размер дворда 32 бита = четыре байта. XXXO.
Аноним 05/12/19 Чтв 19:31:36 1538456430
>>1538447
Выравниваем по 4 байтам. Включая полезную инфу. Количество O - это не шаг выравнивания, а пэддинг.
Аноним 05/12/19 Чтв 19:38:00 1538457431
>>1537959
Ты хочешь дать шлангу в stdin имена файлов через пробел? Я понимаю, если бы единственный исходник распечатать в пайп, это еще логично (тоже не работает). Короче, палю годноту. Обратные кавычки есть.
$ clang `find ../LearnC/`
Команда внутри выполняется и ее вывод встает заместо кавычек. Да, анон выше поправил, потому что ls папки не печатает путь, а конпелятор не знает, где ты ls-ил. Алсо, хз зачем даже find, когда можно просто
clang ../LearnC/∗.c
Аноним 05/12/19 Чтв 19:40:41 1538459432
>>1538428
Естественный отбор.
Аноним 05/12/19 Чтв 19:46:52 1538461433
>>1538449
>венда = плохо
петух безработный, ты?
05/12/19 Чтв 19:53:48 1538470434
>>1538461
Я не говорил, что винда плохо. Я говорил, что к тебе LPCTSTR прилип.
Аноним 05/12/19 Чтв 19:53:51 1538471435
>>1538461
Хуя ты от первоначального тезиса оторвался в 2 хода... Говно - интерфейс сишных библиотек от мелкомягких. Используются они на винде. Чувствуешь? Анон назвал X говном, потому что X говно, обозначив то, что имеет ввиду, более кратким названием Y, где используется X. Ты же обвинил его в предвзятости к Y. Трагически погибни. Добрый вечер.
Аноним 05/12/19 Чтв 19:54:15 1538473436
Аноним 05/12/19 Чтв 19:58:31 1538475437
>>1538461
Тем не менее, венда то еще говно. ГНУ Операционная Система Имени Профессора Компьютерных Наук Ричарда Столлмана - выбор здоровых людей.
Аноним 05/12/19 Чтв 21:35:23 1538572438
>>1538475
Софта тонет, игор тонет, на ноуте не пашет. Лучше я на семерке сидеть продолжу.
Мимо
Аноним 05/12/19 Чтв 21:46:23 1538585439
>>1538572

Чё там у тебя нет?
10 лет на Линуксе сижу, всё есть.

И даже игори Габен завез, играй-нехочу. Накатил Стим и погнали.

Жалею только что WoW работает только через Wine, а да и хрен с ним, давно пора отказаться от этой ммо наркомании.

Линукс - топовая платформа для программиста - моё личное мнение.
Аноним 05/12/19 Чтв 22:03:14 1538603440
>>1538585
Т-с-с, тему разбудите! Она у нас такая, храпит-храпит, как вдруг ХУЯК 4 БАМПЛИМИТА!!!
Аноним 05/12/19 Чтв 22:31:34 1538665441
>>1538603

Ага, вот бы так Си обсуждали :3
Аноним 05/12/19 Чтв 22:53:21 1538715442
Аноним 05/12/19 Чтв 23:00:37 1538722443
>>1538715
>Шаблоны
Препроцессорные макросы, что их обсуждать
Аноним 06/12/19 Птн 00:30:00 1538784444
>>1538715
Ну, в Си тоже есть касты, где приходится всю матрешку без имени описывать. И что? Абсолютно та же логика. Имя предполагается под первоприоритетным оператором.
Аноним 06/12/19 Птн 00:31:41 1538786445
image.png (1106Кб, 1080x1051)
1080x1051
или я не о том?
Аноним 06/12/19 Птн 01:44:35 1538811446
Аноним 06/12/19 Птн 02:41:27 1538829447
>>1538811
(int (∗[])(char ∗, const char ∗))ptr
Интерпретировать ptr, как массив указателей на функцию, принимающую две строки и вовращающую целое число. Такое же "анонимное" обозначение типа применяется в шаблонах
std::vector<int (∗[])(char ∗, const char ∗)> v;
Вот и вектор таких массивов. В обоих случаях логика описания типа та же, что и при объявлении переменной
int (∗pfunc[])(char ∗, const char ∗)
Аноним 06/12/19 Птн 09:54:30 1538909448
>>1538665
Нельзя обсуждать совершенство, его надо познавать.
Аноним 06/12/19 Птн 11:15:35 1538968449
>>1538829
>std::vector<int (∗[])(char ∗, const char ∗)> v;
Думаю в 2019 году нормальный человек напишет
using proc = int(string, const string);
vector<vector<proc>> v; // опционально array
а не вот это легаси бяку
Аноним 06/12/19 Птн 11:58:53 1538997450
Brian Kernighan, Dennis Ritchie "The C Programming Language

Перевод на русский какого года самый лучший?
Аноним 06/12/19 Птн 12:25:17 1539011451
>>1538968
Нормальному человеку вряд ли понадобится многомерный массив функций, но речь не об этом.
Аноним 06/12/19 Птн 12:48:42 1539030452
А, ну я о том же, только под другим нубским углом.
Аноним 06/12/19 Птн 12:56:00 1539038453
>>1538997
У которого обложка как на оп-пике. Он тоже не идеален, но ошибки там обычно очевидны. Можешь держать под рукой на всякий случай оригинальное издание.
Аноним 06/12/19 Птн 13:06:54 1539055454
Как в C распечатать бинарное представление переменной?
Аноним 06/12/19 Птн 13:09:21 1539061455
>>1539055
а так же задать через переменную,
например
char c = 0b00001111
Аноним 06/12/19 Птн 13:11:20 1539066456
>>1539055
Вот, блядь, не знаю, почему в Си не завезли двоичные литералы из ассемблера. Просто рофл какой-то. Они даже в Java есть, Карл!
Аноним 06/12/19 Птн 13:13:22 1539070457
Где-то читал маняоправдания, что HEX с головой, и компактнее, и у бородатого сишника спинной уже научен мысленно превращать bbc1a23 в нули и единицы, и то, и сё, но это БЛЯДЬ не оправдания! Это ж пиздос какой-то.
Аноним 06/12/19 Птн 13:14:04 1539073458
>>1539066
то есть можно только десятичное распечатать %d ?
Аноним 06/12/19 Птн 13:17:48 1539081459
image.png (230Кб, 1280x960)
1280x960
Нет, я конечно восхищен чистокровностью языка, насколько его серьезно оберегают от избытка фич и все такое, но... seriously?!?! Это же базовейшая хуйня из ассемблера!!
Аноним 06/12/19 Птн 13:19:02 1539082460
Аноним 06/12/19 Птн 13:27:41 1539095461
Аноним 06/12/19 Птн 13:39:10 1539114462
>>1539095
Расширение компилятора.
Аноним 06/12/19 Птн 13:42:22 1539120463
>>1539114
А если я скомпилю либу и дам на какую нибудь винду, она будет работать?
Аноним 06/12/19 Птн 13:43:30 1539123464
>>1539120
Это всего лишь integer константы, которые, как и любые другие, превращаются в 010010110.
Аноним 06/12/19 Птн 13:52:12 1539132465
чому
char 11110000 это 15
а unsigned char 11110000 это 240
хотя 00000001 и сигнед и унсигнед это 1?
Аноним 06/12/19 Птн 17:09:44 1539368466
>>1539132

Мне кажется (пусть аноны поправят, если что) что когда ты пишешь:

char c = 0xF0;

то происходит переполнение, так как char может принимать значения от 1111 1111 = -127 до 0111 1111 = +127 И из-за этого переполнения у тебя вместо 0xF0 в "c" оказывается 0x0F но почему это так происходит, вместо того чтобы в char оказалось число 1.111 0000 = -112, я не знаю.
Аноним 06/12/19 Птн 17:13:22 1539374467
>>1539132
>char 11110000 это 15
Это 240
Аноним 06/12/19 Птн 17:15:03 1539377468
>>1539132
>>1539374

Если написать

char c = 0xF0;
printf("c=%d", c);

То вывод будет c=-16
Аноним 06/12/19 Птн 17:20:37 1539386469
>>1539374
char не может быть таким большим

но да я ошибся, то есть
char 11110000 это -16
а unsigned char 11110000 это 240

но например 00001111 и сигнед и унсигнед чар это 15

Аноним 06/12/19 Птн 17:23:22 1539391470
просто где логика мапа бинарника в унсигнд чар, когда 0 мапится в 0
Аноним 06/12/19 Птн 17:26:37 1539397471
>>1539011
да легко, например надо по разному обрабатывать данные в зависимости от айди источника и приемника, причем набор обработчиков задается динамически
>>1539132
отрицательные числа кодируются в дополнительном коде, гугли
Аноним 06/12/19 Птн 17:30:49 1539407472
>>1539386
>char не может быть таким большим
Чего бля? чар 8 бит, один байт, открой калькулятор и посчитай
Аноним 06/12/19 Птн 17:32:02 1539408473
>>1539407
>>1539386
>это -16
P.S.
Крайний левый бит это флаг знака у сигнед.
Аноним 06/12/19 Птн 17:33:13 1539412474
>>1539407
ну давай посчитай... ты не поситаешь, а я нарыл формулу уже посчитал
nk
где n количество состояний, k количество бит
Аноним 06/12/19 Птн 17:35:35 1539416475
Аноним 06/12/19 Птн 17:36:32 1539419476
>>1539397

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

И-и-и-и-и-и у нас победитель!
Аноним 06/12/19 Птн 17:38:04 1539420477
>>1539416
кажется такая простая задача, посчитать сколько состояний может закодировать 8 последовательно расположеных бит, но вот хуй ты сможешь обьяснить как это сделать и посчитать.
Если сомневаешься, скажи мне слёту как посчитать сколько состояний может закодировать 2 байта
Аноним 06/12/19 Птн 17:42:21 1539424478
Безымянный.png (250Кб, 664x749)
664x749
>>1539420
>2 байта
Первый и последний раз показываю малолетним дебилам как пользоваться калькулятором.
Аноним 06/12/19 Птн 18:03:45 1539441479
>>1539424
>не учел 0000 0000 0000 0000
проиграл с тебя
Аноним 06/12/19 Птн 18:13:53 1539451480
>>1539441
За исключением тебя, все это прекрасно понимают
Аноним 06/12/19 Птн 18:19:19 1539455481
image.png (603Кб, 794x798)
794x798
>>1539132
Как же я с вас хуею. Значит так, бля! Слушаем внимательно. Сначала был унцыгнед:
00000000 = 0
. . .
11111111 = 255 (= 256-1 = 2^8-1)

Потом появился цыгнед:
XXXXXXXX
цыгн подчеркнут. Если цыгн=0, то все как обычно, а если цыгн=1, то берется значение унцыгнед минус мощность типа 2^8. Таким образом, 11111111 из примера выше превращается в 0-1. И таким же образом мы по-христиански делим весь набор на негатительные и позитительные, при чем операции сложения и вычитания дрочат биты точно так же, выдавая корректный результат после всех переполнений.
Аноним 06/12/19 Птн 18:20:25 1539456482
Аноним 06/12/19 Птн 18:25:27 1539461483
>>1539456
>я другой анон
к тебе это тоже относится
Аноним 06/12/19 Птн 18:26:50 1539462484
>>1539461
Да нет, я умный. Честно-честно.
Аноним 06/12/19 Птн 18:28:51 1539466485
>>1539424
пфф взял программистский калькулятор. ну ты и даун
Аноним 06/12/19 Птн 19:24:24 1539519486
image.png (6Кб, 905x42)
905x42
image.png (9Кб, 711x140)
711x140
image.png (29Кб, 548x306)
548x306
И как это работает? Почему длина везде одинаковая? Всего занято 60, на 15 элементов получается по 4 на элемент, он среднее пишет что ли?
Аноним 06/12/19 Птн 19:27:43 1539524487
>>1539081
Типичное пердольное "нинужно". Сидят царьки и командуют. А как реализовывается власть? Конечно через угнетение: не даешь что плебсам надо и получаешь удовольствие от их мучений и беспомощности исправить положение.
Аноним 06/12/19 Птн 19:28:48 1539527488
Аноним 06/12/19 Птн 19:30:18 1539529489
>>1539519
32 бит, так скомпилирована твоя программа.
Аноним 06/12/19 Птн 19:33:35 1539536490
>>1539519
>Почему длина везде одинаковая?
это длина указателей на строки, естественно она везде 32 битная
длину строк считает strlen
Аноним 06/12/19 Птн 19:35:43 1539537491
>>1539527
>>1539529
То есть int sizeof(TW) / sizeof(TW[0]) равно sizeof(TW) / sizeof(char*)&
Аноним 06/12/19 Птн 19:46:21 1539550492
Аноним 06/12/19 Птн 20:20:58 1539585493
1.png (32Кб, 520x380)
520x380
Какой же убогий в Windows калькулатор. Что только делает с интерфейсом этот материал спид. Как излечить от него дизайн интерфейсов?
Аноним 07/12/19 Суб 15:14:05 1540049494
Как из инта
int z 00001000 00001001 00001011 00001111
получить 4 чара
char a 00001000, char b 00001001, char c 00001011, char d 00001111 ?
Аноним 07/12/19 Суб 16:35:00 1540111495
Аноним 07/12/19 Суб 17:22:35 1540162496
>>1540111
Спасибо, хотелось бы без дополнительных либ и на чистом C
Аноним 07/12/19 Суб 17:28:47 1540168497
>>1540049
a = z & 0xff;
b = (z >> 8) & 0xff;
...
Аноним 07/12/19 Суб 17:29:15 1540169498
Аноним 07/12/19 Суб 17:31:53 1540172499
а как из
char a 00001101 и char b 00001011
слепить
int c 00000000 00000000 00001101 00001011 (xxab)?
Аноним 07/12/19 Суб 17:33:38 1540175500
>>1540172
Не спеши постить, подумой
Аноним 07/12/19 Суб 17:35:20 1540178501
Аноним 07/12/19 Суб 18:22:16 1540217502
Копия photo2019[...].jpg (71Кб, 800x600)
800x600
ух, теперь я тоже байтотрах
Аноним 07/12/19 Суб 18:28:02 1540219503
>>1540169
лучше зделать and 0xff с этим интом чтобы получить последний байт присвоить его в чар. потом сдвигай вправо на 8 бит и опять делай этот and. получиш второй байт и так далее в цикле ебони 4 раза
Аноним 07/12/19 Суб 18:28:48 1540220504
>>1540219
да в цикле пиши байты в массив из чаров
после цикла присвоиш их в тдельные переменные если нужно
Аноним 07/12/19 Суб 20:01:55 1540402505
ПЕРЕКАТ Аноним # OP 07/12/19 Суб 20:30:23 1540432506
Аноним 07/12/19 Суб 20:31:06 1540434507
Аноним 18/12/19 Срд 21:15:00 1550511508
>>1540434
if (x >= 0)
for (Int32 i = 0; i <= x; i++) { u = u + 1; }
else
for (Int32 i = 0; i >= x; i--) { u = i - 1 }
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов