Сохранен 510
https://2ch.hk/pr/res/1610764.html
Был обновлён парсер тредов Двача, просим анонов обращать внимание и сообщать об аномалиях с содержанием сохраняемых тредов.

C Programming Language #54 /clang/

 Аноним OP 21/02/20 Птн 22:27:17 #1 №1610764 
C Propaganda.jpg
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь https://ideone.com/#, https://wandbox.org/ или 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. [email protected] "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

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

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

https://github.com/kozross/awesome-c

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

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

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

- №51: http://arhivach.ng/thread/510484/
- №52: http://arhivach.ng/thread/529928/
- №53: http://arhivach.ng/thread/529929/ >>1593083 (OP)
Loading...
Аноним 21/02/20 Птн 22:35:48 #2 №1610778 
Есть книги по применению Си на практике?
Аноним 21/02/20 Птн 22:49:05 #3 №1610795 
>>1610778
Читай чужие исходники. Прочитай APUE для *nix, рихтера и руссиновича для винды, потом вкатывайся в интересующую предметную область.
Аноним 21/02/20 Птн 23:03:02 #4 №1610809 
>>1610795
>Читай чужие исходники.
Мне нужно не как код писать, а философия программирования на Си. Я не понимаю как Си взаимодействует с ОС, как пишут сетевые программы, как пишут кроссплатформенно на Си, вот это вот все.

>Прочитай APUE для *nix, рихтера и руссиновича для винды, потом вкатывайся в интересующую предметную область.
То есть изучать API ОС?
Аноним 21/02/20 Птн 23:12:21 #5 №1610827 
>>1610795
я не читаю русских авторов, всё слишком заумно и сложно постоянно обкладывают всякими ёба-терминами. мания у наших писать всё время книгу каким-то агадемическим языком. западные проще гораздо читаются
Аноним 21/02/20 Птн 23:14:41 #6 №1610833 
>>1610809
> Я не понимаю как Си взаимодействует с ОС
Ты дергаешь либу за функцию, либа что-то делает.

> как пишут сетевые программы
APUE для *nix, Network programming by Jones/Ohlund под винду. Как конкретно организовывать программы, подсматривай у других, ну и книги тоже есть.

>>1610827
Где ты увидел русских авторов?
Аноним 21/02/20 Птн 23:15:15 #7 №1610836 
Вкатился, а вот залетный зеленый со стеком в цпу и прочие питонодети пусть остаются тонуть в прошлом треде.
Аноним 21/02/20 Птн 23:45:02 #8 №1610876 
Только что посмотрел Pelles C идеху, боже мой какая же это милаха. Но как всегда минусы, это какой-то левый компилятор, ну и автокомплишена нету или есть?.

Самому написать что ли. Если взять тот-же clang, походу там есть куча уже готовых тулзов для автокомплишена, парсинга синтаксиса итд. А в качестве апи для гуя gtk, для кросплатформы. И забацать по быстрому идеху своей мечты?
Аноним 21/02/20 Птн 23:53:17 #9 №1610892 
>>1610876
Под винду то? VC/VS закастомь, плагины попиши. Поинтереснее будет думаю. Clang уже со студией совместим кстати, сам на таком билде сижу.
Аноним 22/02/20 Суб 00:15:23 #10 №1610917 
exercise.PNG
Аноны, снова я выхожу на связь. Посмотрите, пожалуйста, я правильно задание выполнил? 1-24 из k&r или нет? Если что о всяких switch и стеках не знаю, т.к. прочитал только первую главу, читаю главу > делаю упражнение.

https://pastebin.com/KmqvnGJH
Аноним 22/02/20 Суб 00:28:55 #11 №1610927 
>>1610917
> do not forget about quotes ... comments
> забывает о кавычках и комментариях
Все правильно сделал?
Аноним 22/02/20 Суб 00:30:32 #12 №1610929 
>>1610927
ну это понятно, я так набросок кинул. чисто первое предложение сделал, кавычки, цитаты я тоже сделаю. я имел в виду сам принцип правильно я понял задания или нет? чтобы семантически правльной по смыслу была программа.
Аноним 22/02/20 Суб 00:37:15 #13 №1610932 
>>1610929
По-хорошему [(1]) нихуя не верная программа, но для того, чтобы это обработать, нужно про массивы знать уже хотя можно скобки в int запихнуть побитовыми операциями, на 16 уровней хватит точно.
Аноним 22/02/20 Суб 00:48:22 #14 №1610947 
>>1610932
да понимаю, я.
ну я не знаю массивов пока.. начал язык с нуля сразу с книжки k&r. я думаю что он эти задания даёт с целью закрпления того что я прошёл в первой главе. циклов этих, скобочек, назначения переменных и прочих. думаю у него для массивов отдельные задачи припасены впереди.
Аноним 22/02/20 Суб 01:04:01 #15 №1610963 
fffffffff.png
Ребятки-ребятульки, выручайте. Проект усктроен следующим образом: есть корневая либа, в ней есть некий файлик driver.h с сотней экстернов (см пик).

Они объявлены уже во второй библиотеке "драйверов", и линковщик все это дело связывает вместе. Таким образом, корневой либе не нужно знать детали реализации, например, устройства хранения данных.

Проблема! Хочу эту хуйню инлайнить. Т.е. если имплементация __driver_storage_block_size возвращает тупо 512 то мне нахуй не нужно, чтобы основная либа мутила вызов функции, чтобы получить 512. Надо, чтобы линковщик сам понял, что надо блять, захардкодить 512. У меня стек по пизде от этой хуйни!

Что делать?
Аноним 22/02/20 Суб 01:07:51 #16 №1610970 
>>1610963
Сколько тебе лет? Мне просто интересно.
Аноним 22/02/20 Суб 01:08:50 #17 №1610971 
>>1610970
28
Аноним 22/02/20 Суб 01:10:22 #18 №1610973 
>>1610971
Норм. На самом деле я просто ньюфаня местная и я просто боялся что тебе 19 лет или 20 или 21, что ты младше меня и я такой дегенерат. Но вроде бы пока на своём уровне держусь.
Аноним 22/02/20 Суб 01:42:59 #19 №1610995 
>>1610963
> Надо, чтобы линковщик сам понял, что надо блять, захардкодить 512
Для начала делаешь -flto, если не помогает - тащишь нужные функции в хедеры, делаешь их static inline.
Аноним 22/02/20 Суб 01:45:19 #20 №1610998 
>>1610995
Я так и сделал. Охуенно получилось, только он падла посрезал мне interrupt vector. Ты часом не знаешь, как заставить gcc не трогать .S файл в плане оптимизаций? Ну или не трогать секцию, например.
Аноним 22/02/20 Суб 01:54:46 #21 №1611002 
>>1610998
Гугли дерективы, volatile пропихнуть попробуй, мб поможет.

мимо диван
Аноним 22/02/20 Суб 01:56:27 #22 №1611004 
Screenshot4.png
>>1611002
Я нихуя в этом не понимаю, для меня ассемблер это темный лес. Что такое директивы? Куда тут засунуть volatile?
Аноним 22/02/20 Суб 02:04:41 #23 №1611008 
>>1611004
https://bugs.launchpad.net/gcc-arm-embedded/+bug/1747966 (первое сообщение про KEEP и последнее про порядок файлов).
Аноним 22/02/20 Суб 02:18:32 #24 №1611018 
c857735e55115bc64e72570118f68156.jpg
>>1611008
Ебать-колотить! Передвинул ассемблер в самое начало и все собралось заебись!
Аноним 22/02/20 Суб 09:00:01 #25 №1611140 
В cpp треде задал вопрос, теперь спрошу здесь. Какие доводы использовать C++ вместо Си? Мне нравится Си своей простотой, и соответственно пугает C++ своей монструозностью. Или таки можно использовать ограниченное подмножество языка и забить на остальные 100500 тыщ фич?
Аноним 22/02/20 Суб 09:01:44 #26 №1611141 
>>1611140
Тебя кто-то заставляет пользоваться с++?
Аноним 22/02/20 Суб 09:26:14 #27 №1611157 
>>1611141
Я задал конкретный вопрос. Ты уводишь от темы.
Аноним 22/02/20 Суб 09:27:29 #28 №1611159 
>>1611140
Никто и не заставляет все фичи крестов использовать. Я по минимуму, только сахарок для удобства. А всякие обсуждаемые на C++20 возможности даже не понимаю.
Аноним 22/02/20 Суб 11:01:35 #29 №1611243 
>>1611140
Макака, пошла нахуй. Такие дегенераты не нужны ни в C, ни в C++. Катись обратно в свои скрипты, раб.
Аноним 22/02/20 Суб 11:23:25 #30 №1611267 
>>1610917
Строчка типа (dsfsgh{sdfsd)fsdf} проходит без ошибок, хотя она не кажется мне верной.
Какие инструменты уже есть? Массивы? Циклы? Функции (с рекурсиями)? Указатели с malloc-ом?
Аноним 22/02/20 Суб 13:10:50 #31 №1611326 
>>1610917
Ты не отвечаешь, загрузил твою книгу.
Массивы идут до задания 1-24. Фигнёй страдаешь, сделай массив на 10к элементов, этого хватит на любую адекватную си-программу - вряд ли где будет вложенность хотя бы сотого порядка, а 10к хватит уже совсем почти на всё.
Аноним 22/02/20 Суб 14:01:07 #32 №1611370 
>>1611267
массивы я делал только на уровне char m[10], ну ты понел.

цикл for и while про switch он написал в следующей главе расскажет

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

>>1611326
и что мне этот массив даст? как через массив то это сделать? я не понимаю.
Аноним 22/02/20 Суб 14:20:10 #33 №1611397 
>>1611370
>только на уровне char m[10]
Такого уровня достаточно. Не нужна не рекурсия, ни функции, простого char m[N] хватит.
Что-то типа такого (писал прям на ideone, мог накосячить): https://ideone.com/kgiiid
Аноним 22/02/20 Суб 14:31:29 #34 №1611409 
>>1611397
спасибо, огромное, анчоус. я очень признателен тебе, что ты даже сам полез в эту книгу пока я спал и раскопал там всё проходил ли я. ты очень много времени потратил на то чтобы помочь ньюфане, спасибо тебе ещё раз огромное
Аноним 22/02/20 Суб 14:35:26 #35 №1611414 
>>1611397
спасибо за решение ещё раз, я просто там про const не знал и это всё, но уже загуглил. сделаю по твоему варианту.
Аноним 22/02/20 Суб 14:38:58 #36 №1611418 
>>1611414
Можно убрать все const, они не необязательны и нужны лишь для человека (кожаного мешка).
Аноним 22/02/20 Суб 14:42:40 #37 №1611422 
Не осознаю.PNG
Уважаемые личности, у меня вопрос по запятой
Аноним 22/02/20 Суб 14:43:07 #38 №1611424 
>>1611422
Алсо, gcc
Аноним 22/02/20 Суб 14:46:19 #39 №1611429 
>>1611422
А, дошло, потому что 4 это скаляр и во втором случая запятая это не оператор, а сепаратор, как при перечислении аргументов. Сорян поцыки
Аноним 22/02/20 Суб 14:57:36 #40 №1611437 
изображение.png
>>1611422>>1611429
Во втором случае сначала выполняется присваивание, а потом запятая с более низким приоритетом, как и должно быть.
В первом случае вычисляются скобки (с наивысшим приоритетом), в рамках скобок вычисляется запятая, и уже только потом присваивание.

Зачем прикручивать какие-то понятия сепараторов и скаляров, если из приоритетов получается такой же вывод? В твоём примере нет сепараторов, так как нет вызова функций, разве не так?
Аноним 22/02/20 Суб 15:04:29 #41 №1611444 
Или вот представьте ситуацию: если есть переменная x = 10, то почему значение выражения (x++, x) не 10, а 11?
Постинкремент же должен увеличить x уже после выполнения данного выражения, значит, порядок выполнения должен типа быть такой:
Он видит, что у первого x постинкремент, запоминает, что после выполнения выражения нужно увеличить значение на 1
Видит второй х, который равен 10, как и первый
Дальше два варианта:
1) Выражение закончено, его значением является значение последнего операнда (10)
2) Но там ещё где-то инкремент (11)
А на практике вообще инкрементируется х сразу, как только встречается постинкремент, и значение x в обоих случаях 11, как и выражения
Я хуй знает, почему так...
Аноним 22/02/20 Суб 15:06:24 #42 №1611446 
>>1611437
Да, я тупанул жёстко. Таблицу с приоритетами помню, но меня переглючило и я снизу-вверх приоритеты воспринимал лел давно уже сижу...
Аноним 22/02/20 Суб 15:59:00 #43 №1611487 
Зачем в си все эти short, long, long long, double нужны? я знаю что их размеры изменяются в зависимости от компилятора и разрядности системы, но зачем это нужно?
Аноним 22/02/20 Суб 16:10:09 #44 №1611499 
>>1611444
Постинкремент выполняется после того как переменная отдала своё значение, а не после выполнения выражения.
Аноним 22/02/20 Суб 16:12:28 #45 №1611503 
>>1611499
Я не всосал, что значит "отдала выражение"
Аноним 22/02/20 Суб 16:16:20 #46 №1611504 
>>1611503
Тебе надо поспать. Совсем обпрограммировался уже.
Аноним 22/02/20 Суб 16:46:01 #47 №1611520 
exercise.PNG
Как решить 2-1 задание из k&r я вообще ничего не понимаю. ну вернее типы я вывел через <limits.h> а как диапазоны float искать вообще ума не приложу. очень сложно
Аноним 22/02/20 Суб 17:03:21 #48 №1611535 
>>1611520
Можешь использовать побитовый сдвиг, наверное
Аноним 22/02/20 Суб 17:24:06 #49 №1611559 
>>1611487
Это сложный вопрос ты медленно но верно засасываешься в бесконечную бездну байтоёбства, до точки невозврата осталось не так много... Пока что ты ещё молодая и шутливая ньюфаня...

https://www.cyberforum.ru/blogs/18334/blog69.html

Читай статью там ответы на твои вопросы.
Аноним 22/02/20 Суб 18:12:08 #50 №1611621 
а почему мы не используем short вместо int? у него же sizeof в два раза меньше (2 байта) в то время как у int 4 байта. И ограничение там 32к вполне можно short везде писать. Так же будет меньше памяти занимать. всё четенько
Аноним 22/02/20 Суб 18:39:57 #51 №1611649 
>>1611621
>inttypes.h
Проще уж сразу положиться на разработчика компилятора.
Аноним 22/02/20 Суб 18:59:00 #52 №1611675 
>>1611520
А у тебя есть дискорд? Дай дискорд! Я бы тоже порешал задачи, можно и обсудить какие.
Аноним 22/02/20 Суб 19:18:55 #53 №1611700 
>>1611243
Пидр
Аноним 22/02/20 Суб 19:49:07 #54 №1611726 
>>1611621
Я, например, пердолюсь с 32-х разрядными ARM, и там желательно использовать 32-х разрядные типы, особенно во всяких алгоритмах и циклах, иначе будут выполняться дополнительные команды на конвертирование в 32 разряда и обратно.
Аноним 22/02/20 Суб 20:04:00 #55 №1611733 
>>1611675
ты очень любезен, но у меня нет дискорда. я бы мог его зарегестрировать, но просто не понимаю как можно коллективно сидеть и решать одну задачу из книжки? я просто читаю книжку, вижу задачу, решаю, потом продолжаю читать

>>1611726
понял, мне пока рано в такое лезть
Аноним 22/02/20 Суб 20:44:40 #56 №1611801 
source.PNG
output.PNG
>>1611520
У меня прогресс уже, благодаря анонам и гугл разобрался в интеджерах и одну половину программы написал. но у меня теперь другая проблема: вычислить диапазон float чисел, как это делать я хз
Аноним 22/02/20 Суб 20:58:49 #57 №1611818 
>>1611801
>но у меня теперь другая проблема: вычислить диапазон float чисел, как это делать я хз

float.h

А вообще посмотри стандартную библиотеку C, что бы представление хотя бы иметь. Она не большая.

Тебе, кстати, ещё их вычислить надо, а не только из хеддера вывести. Задание внимательней перечитай.
Аноним 22/02/20 Суб 21:00:48 #58 №1611821 
>>1611818
>Тебе, кстати, ещё их вычислить надо, а не только из хеддера вывести.
вычислить минималки у unsigned чисел, потому что у них минималок нет.
да, я читаю там в книжке есть ссылки на приложения по этим двум бибилиотекам.
Аноним 22/02/20 Суб 21:07:45 #59 №1611832 
>>1611821
>потому что у них минималок нет.
Это как так? У тебя в консоли в выводе они есть.
Аноним 22/02/20 Суб 21:09:44 #60 №1611837 
>>1611832
потому что я их вычислил же. ты на код смотри. они имели ввиду вытащить константы и где нету констант вычислить нужно.
Аноним 22/02/20 Суб 21:18:03 #61 №1611857 
>>1611837
Мне кажется, здесь старик Ритчи имеет в виду вывести из констатнт и вычислить без использования констант.
Аноним 22/02/20 Суб 21:19:10 #62 №1611860 
>>1611857
ну и как ты это сделаешь?
Аноним 22/02/20 Суб 21:30:43 #63 №1611892 
>>1611140
> Какие доводы использовать C++ вместо Си
Шаблоны, неймспейсы, constexpr. Особенно последнее.

>>1611487
> Зачем в си все эти short, long, long long, double нужны?
В 1990 году кто-то написал код, в котором был 16-битный myint. Из-за этого в 2020 году 64-битный процессор, скрипя и спотыкаясь (pipeline stall) на каждой инструкции старается считать в 16 битах. Вот чтобы эта история осталась фантазией, размеры к примитивным типам не прибивали гвоздями. Потом, правда, осознали, что получилось не очень, и сделали еще int_leastN_t/int_fastN_t, но макаки продолжали тайпдефать инты в фиксированную ширину.
Аноним 22/02/20 Суб 21:34:51 #64 №1611902 
>>1611892
я твой ответ про типы интеджера вообще не понял, анон. слишком я ньюфаня уж ещё для этого всего.
Аноним 22/02/20 Суб 21:35:30 #65 №1611904 
>>1611860
unsigned int i = 0;
while (i + 1 > i) { i++; }
print("unsigned int max: %u\n", i);

Для signed можно закрыть глаза на UB, сказать -fwrapv и сделать аналогично unsigned. Для плавающей точки можно узнать размер мантиссы, найдя момент, когда i + 1 будет равно i + 2, а размер экспоненты получить банальным вычитанием. Хотя я не помню уже, что там в задании требуется.
Аноним 22/02/20 Суб 21:40:08 #66 №1611914 
>>1611902
Да там уже ответили выше, я проебал пост просто. Суть в том, чтобы размер интов придумывали разработчики конкретного компилятора, и чтобы они выбирали размеры, которые проще всего обрабатывать процессору, для которого пишется компилятор.
Аноним 22/02/20 Суб 21:45:27 #67 №1611925 
>>1611904
спасибо, анчоус, частично понял. мне нужно время чтобы осмыслить это.
Аноним 22/02/20 Суб 21:52:29 #68 №1611940 
изображение.png
>>1611904
Оптимизировал твой код.

мимо быдлокомпилятор
Аноним 22/02/20 Суб 21:56:38 #69 №1611947 
>>1611801
Вычислить программно?
Предположим, что о внутренней структуре числа ничего не известно (про мантиссу и прочее) и известно лишь что значения доходят до примерно равного значения по модули в положительных и отрицательных. Ещё придётся учесть, что float-ы переполняются.
Я бы вот такое написал: https://godbolt.org/z/S6DGPg (чтобы понять define просто замени type на тип и name на имя функции - я не знаю в каком виде шаблоны си, и потому просто через дефайн сделал много функций - лучше чем ctrl+c/ctrl+v на миллион строк)

К переменной прибавляется добавка пока число остаётся положительным и продолжает прибавлять, и добавка удваивается по тем же правилам. Если переменная становится отрицательной, то значит максимум достигнут и нужно снижать добавку, пока не подберёшься к нужному значению. Если t2-t1==t2 (переменная с плавающей запятой дошла до бессмысленной бесконечности и больше операции с ней не несут смысла), то значит тоже нужно уменьшать добавку. Вроде бы корректные значения вышли.

>>1611733
>просто не понимаю как можно коллективно сидеть и решать
Я не предлагаю коллективно сидеть и решать. Просто интересные задачи потом сверить друг и друга, может быть кто-то более интересную концепцию найдёт.
Например, мне интересно посмотреть как ты с комментариями и экранированием символов в строках через \ разобрался, но спрашивать это в треде не уместно, тому что флуд.
Аноним 22/02/20 Суб 21:58:16 #70 №1611950 
>>1611947
>Например, мне интересно посмотреть как ты с комментариями и экранированием символов в строках через \ разобрался
ты имеешь ввиду задачу в которой нужно было удалить комментарии из кода си программы?
Аноним 22/02/20 Суб 21:59:31 #71 №1611953 
>>1611940
А потом ты такой пересобираешь 16-битным компилятором, и твой ответ неверен, потому что UINT_MAX может быть 65535.
Аноним 22/02/20 Суб 22:01:37 #72 №1611958 
>>1611950
Нет, я про 1-24 с проверкой корректности расстановки скобок.
Аноним 22/02/20 Суб 22:02:27 #73 №1611961 
>>1611958
я не разобрался. я продолжил книгу читать и дошёл до 2-1 задания сейчас на нём сижу, потом откачусь назад 1-24...
Аноним 22/02/20 Суб 22:10:03 #74 №1611966 
изображение.png
>>1611953
Аноним 22/02/20 Суб 23:34:01 #75 №1612065 
>>1611892
>В 1990 году кто-то написал код, в котором был 16-битный myint. Из-за этого в 2020 году 64-битный процессор, скрипя и спотыкаясь (pipeline stall) на каждой инструкции старается считать в 16 битах. Вот чтобы эта история осталась фантазией, размеры к примитивным типам не прибивали гвоздями. Потом, правда, осознали, что получилось не очень, и сделали еще int_leastN_t/int_fastN_t, но макаки продолжали тайпдефать инты в фиксированную ширину.
Сук, нахуй так жить?! Все эти ебаные киворды, я его рот.... Братан, нахуя вникать во все это байтоебство? Я просто не понимаю. Смысл в чем? Ты же вероятно не пишешь ОС. И даже не пишешь стек сетевых протоколов. Нахуй так жить, расскажи? Какие цели, зачем все эти базворды?
Аноним 22/02/20 Суб 23:38:08 #76 №1612069 
image.png
>>1610764 (OP)
А кто нибудь пробовал складывать два указателя?
Аноним 22/02/20 Суб 23:40:02 #77 №1612071 
>>1612065
> зачем все эти базворды
Какие? Это базовые вещи. Предполагается, что если ты вкатываешься в Си, то до или после этого ты осилил что-нибудь фундаментальное по архитектуре, и хотя бы смутно представляешь, как работает процессор. Ту же "архитектуру компьютера" таненбаума хотя бы.

> нахуя вникать во все это байтоебство
Чтобы писать быстрый код, чтобы делать низкоуровневые вещи. Если тебе не нужно байтоебство - нахуй тебе си?

> Ты же вероятно не пишешь ОС
Зато написал несколько эмулей, например.
Аноним 23/02/20 Вск 00:23:56 #78 №1612137 
>>1612065
Мне вообще 21, я сижу у мамке на шее уже 2 года, из образования только шарага. В итоге как-то решил сделать ВАЙТИ, начал учить питон, там html\css, но проблевался от всего этого гавна. Но вот C почему-то зацепил нравится, его учить хотя я понимаю что занимаюсь хуетой и работы не найду на нём, но мне почему-то настолько уже похуй на ирл что я давно всё на самотёк пустил..

Короче это просто нравится, я вообще знаю только то что на этом языке драйвера сейчас пишут, а даже для ос предпочтение C++ отдают. Может быть я когда-нибудь в C++ вкачусь, но только после Cи и это явно нескоро будет с такими нулевыми знаниями как у меня.
Извиняюсь за вниманеблядство.
Аноним 23/02/20 Вск 04:34:45 #79 №1612227 
>>1611966
Нормальный человек:
>Решите задачу
>Вот
>А так?
>Ммм, падажди-ка, тут так, а тут эдак, ясно. Вот.

Пердоля:
>Решите задачу
>Вот
>А так?
>Э? Что? Ваша задача неправильная и не нужна. Идите нахуй!
Аноним 23/02/20 Вск 06:13:35 #80 №1612246 
int ★foo[5]; и int (★foo[5]); одно и то же ведь - массив из 5 указателей на тип int?
Аноним 23/02/20 Вск 09:25:56 #81 №1612277 
>>1612071
>Если тебе не нужно байтоебство - нахуй тебе си?
Потому что могу, потому что хочу, потому что это язык общего назначения.
Аноним 23/02/20 Вск 17:47:23 #82 №1612759 
>>1610917
Хмммм. Понимаю, что это сишный тред. Но вброшу свое охуенное решение https://pastebin.com/WXqNzR4H. Вроде как тут же разница в языке не особо играет роли. Про комментарии забыл, но там тот же принцип вроде как.
Аноним 23/02/20 Вск 17:55:20 #83 №1612767 
>>1612759
Хотя нет, понял в чем фишка комментариев, нужно не учитывать скобки которые в них попали. Ну, это вполне легко, просто проверяем, что последний элемент на стеке открывающих это начало коментария и пока его конец не найдем, ничего в стек открывающих не кладем. У однострочного закрывающим будет '\n', у многострочного */, только нужно не массив символов использовать, а массив строк. Ну или чуть поебаться с символами.
Аноним 23/02/20 Вск 18:01:21 #84 №1612780 
>>1611904
По-моему это всё таки маразам какой-то зачем ритчи такое ебанутое занятие давать? Тот анон всё правильно понял, зачем эти рассчёты того что уже рассчитано вручную?
Аноним 23/02/20 Вск 19:14:54 #85 №1612869 
>>1610764 (OP)
Спрошу тут.

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

С чего лучше начать:
ASMx86
Linux
Таненбаум архитектура ПК?

Вопрос довольно тупой, но на самом деле вводит меня в ступор. Т.к. архитектуру +\-, ну очень начально я знаю.

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

А линукс - а начальные знания линукса, могут оказаться не тем что я от него ожидаю
Аноним 23/02/20 Вск 20:16:53 #86 №1612935 
>>1612759
>как тут же разница в языке не особо играет роли
Развеселил, лол.
У тебя (у меня твоя) программа падает от строчки "}", если что. С комментариями и строчками самое интересное же, там есть всякие многострочные строки вида "asaf\"a//s\
sdg\\fa"
И то же самое с комментариями, которые /**/
Аноним 23/02/20 Вск 20:28:44 #87 №1612953 
>>1612869
>не знаю, что под капотом
Nand to tetris (он же nand2tetris) гугли - и вперёд! Там как раз весь подкапот: от логического "и-не" через проектирование собственного канплюхтера к написанию и запуску на нём тетриса. Все стадии от и до.
Ещё вариант - купи себе книжку Харрисов Digital Design and Computer Architecture, простенькую ПЛИС-плату с али и всё то же, что выше - фигачишь от "и-не" к созданию компа.
Аноним 23/02/20 Вск 20:34:06 #88 №1612964 
>>1612869
У Массачусетского универа есть курс nand 2 Tetris. Ты начинаешь с одного логического вентиля not and, и начинаешь на hdl создавать логические операторы, биты, регистры, память, алу, целиком комп с переферийными устройствами, потом пилишь виртуальную машину с ассемблером и компилятор си под нее.
Не знаю насколько ещё больше можно узнать что под капотом.
Курс платный, но можно спиратить.
мимокрестовик
Аноним 23/02/20 Вск 20:35:27 #89 №1612965 
>>1612953
Лол, great minds think alike.
Аноним 23/02/20 Вск 20:38:01 #90 №1612967 
>>1612964
>>1612953
Слишком глубоко копнули, я по совместительству электроникой и микроконтроллерами занимаюсь, так что мне нужно не настолько глубоко и конкретно х86, причем было бы круто в современном контексте с практическими примерами.

Т.е. интересует какие регистры обычно каким образом дрочатся, что в них лежит, как реализуется соглашение о вызове, переключение контекста и прочая хуйня.
Я потому в линь и полезть думаю.
Аноним 23/02/20 Вск 20:39:43 #91 №1612973 
>>1612967
На выходе хочется уметь понимать дизасм сложнее 3х строк с получасовым гуглением.
Аноним 23/02/20 Вск 21:20:25 #92 №1613012 
>>1612246
Да, скобки в данном случае никак не меняют приоритет.

>>1612780
> зачем эти рассчёты того что уже рассчитано вручную
Задание:
> by printing appropriate values from standard headers
and by direct computation
Хотя там скорее всего сдвиги имелись в виду.

>>1612973
Таненбаум, потом любая книжка по асму для x86 (посмотри только, чтобы не с доса начиналось - все эти сегменты и int 21h тебе в жизни вряд ли пригодятся, и понимания не прибавят, особенно в x86-64).
Аноним 23/02/20 Вск 22:29:38 #93 №1613095 
>>1612780
>зачем эти рассчёты
Эти расчёты для того, чтобы понять представление чисел разной разрядности и почему у них именно такие пределы.
Аноним 23/02/20 Вск 23:12:06 #94 №1613144 
>>1612935
> Развеселил, лол.
Ну ведь серьзно тут разницы особой нет. Там стеки, тут стеки. Мне просто лень было си вспоминать.
> У тебя (у меня твоя) программа падает от строчки "}", если что
Я просто чет не подумал что кто-то передаст такую строчку.
Быстренько переделал, чтобы и комменты поддерживало. Можно будет потом нормально переписать, чтобы такой хуйни с кучей ифов не было.
https://pastebin.com/GkKjyZqd
Аноним 23/02/20 Вск 23:14:08 #95 №1613146 
>>1613144
Блин, тут небольшая беда с регулярками, но думаю можно опять же, принцип-то ясен.
Аноним 23/02/20 Вск 23:28:10 #96 №1613156 
image.png
А в вашем низкококоуровневом Си никак не отображена фича x86 класть старшую часть результата умножения в dx? Я не слышу, блядь! Я есть нуждающийся в этом.
Аноним 24/02/20 Пнд 00:21:44 #97 №1613213 
>>1613156
>никак не отображена фича x86 класть старшую часть результата умножения в dx?
Это забота не си, а компилятора - си этого вообще ни разу не обязан отображать. Напиши ассемблерную вставку на полторы строчки или используй long long же.

>>1613144
>Там стеки, тут стеки.
Я бы не стал использовать стек в реальной задаче, например. Идеалогически тут нужен стек, но намного эффективнее по памяти и быстродействию использовать массив. В случае переполнения заводить ещё один или просто массив+стек - вряд ли большой уровень вложенности будет в типичном коде.

Ты же понимаешь во сколько десятков раз твоё решение с дополнительными стеками и другим выделением-освобождением памяти, регулярками и другой дичью будет менее эффективнее одного прохода с массивом и несколькими переменными-флагами для комментариев и скобок? Это же просто дичь невероятная, прикручивать регулярку сюда.
Давай я склею или найду кучу исходников и проверим время по фану? В шарпе есть возможность учитывать расход памяти с учётом внутренних затрат твоих стеков и регулярок? Просто в холостую (без выхода раньше времени в случае ошибки) запустить на крупных файлах (дефайны могут сломать всю малину), при этом тестовые строчки вроде "}" оно должно верно проверять, естественно.
Ответь в 53 (прошлый) тред, чтобы не мусорить в этот тред, если интересно.
Аноним 24/02/20 Пнд 00:51:13 #98 №1613233 
>>1613213
> Я бы не стал использовать стек в реальной задаче
> намного эффективнее по памяти и быстродействию использовать массив
Ну это толсто даже для этого треда.
Реализация Stack в .NET (как и у любых других вменяемых людей):
> private T[] _array;
Аноним 24/02/20 Пнд 01:33:33 #99 №1613255 
>>1613095
почему у них такие пределы кстати?
Аноним 24/02/20 Пнд 03:43:10 #100 №1613291 
>>1613233
Да, не намного, верно.
Именно поэтому, если использовать стандартный плюсовый стек (на деке), то для 100 элементов он вызывает 2 new, а для 1000 - 10 new и 1 delete. И потом после использования нужно будет ещё всё это очищать. Для вектора ещё хуже. А куча медленная, если есть возможность обойтись без неё - лучше так и сделать. Не знаю что это за тип в шарпе, но вряд ли он работает лучше без внешней информации о количестве элементов в общем случае.

Я просто поехавший, не обращай внимание.
Для 100 элементов рукописный костыль обгоняет стандартный стек на деке в 7 раз (на векторе в 11, и даже для единоразового вызова malloc в 3), для 1000 - 3 (5), для 100000 - 1.2 (3).


>>1613255
А какие должны быть?
Такое внутреннее представление выбрали.
https://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%BE_%D0%BE%D0%B4%D0%B8%D0%BD%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D0%B8
Аноним 24/02/20 Пнд 08:58:54 #101 №1613325 
Реквестирую пример программы на Си, которая парсит файл с данными (чтобы и вложенные скобки, и разные типы). Желательно без флекса с бизоном.
Аноним 24/02/20 Пнд 10:25:12 #102 №1613354 
>>1612967
Анон, что-то куда-то не туда ты, кажись, рулишь! Прям как я в своё время. Тоже считал, что "слишком глубоко копаю", а в результате просрал кучу времени. Сейчас жалею, что таки не начал "слишком глубоко" копать. Оно, кстати, оказалось намного проще, чем изначально думал.

>я по совместительству электроникой и микроконтроллерами занимаюсь
Ну, я тоже этим занимаюсь. Точнее, микроконтроллерами в контексте мехатронства.
>так что мне нужно не настолько глубоко и конкретно х86
Фундаментальная ошибка у тебя тут. Тебе на примере какой-нибудь простой - лучше, учебной - архитектуры нужно понять, как оно в принципе всё устроено и работает. Шагнуть к частностям типа конкретных не-учебных архитектур будет совсем несложно.
>причем было бы круто в современном контексте с практическими примерами
Мне кажется, это будет херь типа "покажи приёмчик". Ты нахватаешься частностей, а фундаментального понимания в голове так и не будет.
>Т.е. интересует какие регистры обычно каким образом дрочатся, что в них лежит, как реализуется соглашение о вызове, переключение контекста и прочая хуйня.
О, вот это классика! Подозреваю, что ты взялся за ассемблер и относишься к нему, как к обычно-языку типа си, джавы и т.д. А на изучение асма как раз нужно заходить со стороны цифровой схемотехники. Поверь умудрённым собственной глупостью анонам.

Итого: Не еби мозга и не пытайся обмануть жизнь! На примере "детской" архитектуры пройди это всё: от уровня логических вентилей до высокоуровневого программирования. И не читай Таненбаума этого сраного! У него книжка обо всём и ни о чём.
Аноним 24/02/20 Пнд 10:41:42 #103 №1613362 
>>1612967
https://www.ozon.ru/context/detail/id/147450389/
https://www.ozon.ru/context/detail/id/143292187/
Аноним 24/02/20 Пнд 11:19:46 #104 №1613398 
>>1613255
Про вещественные числа тебе скинули ссылку, а в целочисленных всё гораздо проще.

Можно на примере char разобрать. Предположим, что char имеет размер 1 байт, тогда unsigned char будет иметь диапазон значений от 0 до 255. От 0 потому, что unsigned не имеет отрицательных значений и это минимальное значение байта когда во всех разрядах 0 (0х00 в шестнадцатеричной СС, 0000 0000 в двоичной СС). До 255 потому, что это максимальное значение, которое можно представить одним байтом в котором во всех разрядах 1 (0xFF в шестнадцатеричной СС, 1111 1111 в двоичной СС).
В signed char самый старший бит отвечает за знак, 1 - это отрицательное число, 0 - положительное.
-128 == 1000 0000 в двоичной СС
-1 == 1111 1111 в двоичной СС
0 == 0000 0000 в двоичной СС
127 == 0111 1111 в двоичной СС

Для других целочисленных типов с размерами 2 байта, 4 байта, 8 байт и т.д. всё аналогично.
Аноним 24/02/20 Пнд 11:34:21 #105 №1613406 
>>1613354
Господи, когда вы начнете полный контекст читать. Писал выше, на примере детских - знаю все это. На AVR асме писал проги, на других 8бит асмах пишу вставки.

Мне интересна именно практическая х86 ака серьезных процов с защищенным режимом и их взаимодействие с ОС.
Аноним 24/02/20 Пнд 11:53:56 #106 №1613415 
>>1610764 (OP)
Интересно сколько здесь юзеров в треде. Наверняка не мало. Так вот, вы что-нибудь уже написали? Хочется увидеть реальные проекты. Какой смысл изучать язык ради изучения. Где работающие программы?
Аноним 24/02/20 Пнд 13:39:06 #107 №1613500 
image.png
>>1613325
Алсо, оцените обоссыте, будем честны кусок моего кода, который решает аналогичную задачу.
Аноним 24/02/20 Пнд 13:47:40 #108 №1613512 
>>1608964 →
В питоне модно сделать исполняемый файл, который будет работать на других ПК? Или обязательно надо питон ставить каждый раз?
Аноним 24/02/20 Пнд 13:48:30 #109 №1613514 
>>1613512
> Можно

Быстрофикс
Аноним 24/02/20 Пнд 14:15:15 #110 №1613532 
>>1613512
можно
есть всякие py2exe, python freeze и всякие другие
но они все устроены так: берется интерпретатор и засовывается во внутрь бинаря
крч полная хуйня, на питоне лучше desktop аппликухи не писать возьми c#
Аноним 24/02/20 Пнд 14:22:06 #111 №1613535 
>>1613532
>возьми c#
Ехало ООП через ООП, сложна! Даже в хелловорлде неймспейс и класс.
Мимо
Аноним 24/02/20 Пнд 14:26:36 #112 №1613542 
>>1613532
>>1613535
В сторону какого языка смотреть для несложных десктопных приложений?
Аноним 24/02/20 Пнд 14:46:59 #113 №1613561 
>>1613542
Сказали же блядь, С#.
Аноним 24/02/20 Пнд 15:30:33 #114 №1613595 
>>1611904
правильно я понимаю что этот метод называется переполнением(overflow)?

>>1613398
спасибо, анчоус, понял. а в каких случаях нужно использовать эти unsigned, short и лонг. скажи, пожалуйста, молююю
Аноним 24/02/20 Пнд 15:32:06 #115 №1613597 
>>1613535
Ncurses просто.
Аноним 24/02/20 Пнд 15:33:01 #116 №1613598 
>isalnum
Аллаху акбар.

Пиши названия нормально блядь, а не как дебичи, что стандартные функции писали у них были на то причины, что все равно не делает им чести
Аноним 24/02/20 Пнд 15:33:18 #117 №1613599 
>>1613598
>>1613500
Аноним 24/02/20 Пнд 16:08:11 #118 №1613619 
>>1611904
хоть бы код свой сначала проверил прежде чем кидать.
Аноним 24/02/20 Пнд 16:18:16 #119 №1613626 
>>1613595
>>1613595
>а в каких случаях нужно использовать эти unsigned, short и лонг

Ну signed, unsigned в зависимости от того, нужны ли тебе отрицательные числа или нет.

А про short и long.
Да, что хочешь то и используй. Главное, чтобы результат выражения/операции попадал в диапазон значений типа. Обычно просто int используют и всё. Если тебе нужны будут специфичные типы ты сам это поймёшь (это скорей всего будет связанно с оптимизацией по памяти, по скорости выполнения, специфическими структурами данных и т.п. Пока тебе рано ещё об этом думать).

И лучше посмотри stdint.h из стандартной библиотеки и возьми за привычку использовать типы оттуда, потому что там разрядность гарантированна стандартом.
Аноним 24/02/20 Пнд 16:22:30 #120 №1613630 
чуваки, не занимайтесь х..ней
учите си в 2к20, дак открывайте исходный код modern си проэктов и читайте его, к пример гугловскую фуксию..
удачи ..
Аноним 24/02/20 Пнд 16:46:39 #121 №1613642 
>>1613626
анон я сделал, определение интедежеров по типу переполнения, ручное вычисление. щас скоро код скину. с floataми пока всё туго, не понимаю нихуя. скоро буду к вам приставать с ними.
Аноним 24/02/20 Пнд 17:01:07 #122 №1613650 
Наверняка, анон, тебе всегда было интересно, как выглядит 2 в овердохуятой степени. Дарю уникальную возможность, так сказать. Осталось запилить деление, заменить спринтфы какими-нить шустрыми макросами, ну и всяких корней, логарифмов по-мелочи нахуярить...
https://pastebin.com/rHpxn65x
Аноним 24/02/20 Пнд 17:01:55 #123 №1613651 
>>1613626
https://pastebin.com/Q20Bmgcz

Вот, анчоусы. Решил задачу 2-1 из k&r теперь и с ручным вычислением диапазанов целых типов. Там вычисления в районе 10-20 секунд идут подождите, вывод не сразу будет. Этот метод переполнение же называется, да?

>>1611904
Анон, твой код бесконечный цикл создаёт. Не работает, он.

Осталось только с floatами разобраться
Аноним 24/02/20 Пнд 17:02:19 #124 №1613652 
>>1613651
Я запостил свой код чтобы вы оценили как вам.
Аноним 24/02/20 Пнд 17:02:41 #125 №1613653 
image.png
я требую внимания, мне скучно блядь
Аноним 24/02/20 Пнд 17:03:21 #126 №1613654 
>>1613650
>>1613653
Аноним 24/02/20 Пнд 17:08:36 #127 №1613655 
>>1613626
>И лучше посмотри stdint.h из стандартной библиотеки и возьми за привычку использовать типы оттуда, потому что там разрядность гарантированна стандартом.
я возьму это на заметку, анчоус. спасибо, но потом. меня сейчас интересует строго книга k&r её пройду и если там этой библиотеки не косунь, потом ещё твою посмотрю.
Аноним 24/02/20 Пнд 17:09:30 #128 №1613656 
>>1613651
Ты посмотрел мой код с годболта (>>1611947)?
Там нет цикла на миллионы итераций и это намного лучше, чем добавлять по 1. И он работает с флоатами и даблами.
Аноним 24/02/20 Пнд 17:16:10 #129 №1613661 
>>1613656
нет, я медленно всё переварию. здесь мне очень много помогают и кидают ссылок и я всё это читаю. пока я ещё до твоего пост даже не дошёл, анчоус.
Аноним 24/02/20 Пнд 17:22:00 #130 №1613667 
>>1613656
а смотрел твой код и после незнакомой библиотеки закрыл вкладку. потому что я учусь по книге мне итак нелегко, а здесь ещё в нагрузку всякие незнакомые библиотеки о которых я вообще не знаю. я уже писал уже неоднократно что меня интересуют только решения при помощи инструментов описанных в книге на тот момент когда появилась задача.

извини, анчоусы, но варианты с незнакомыми мне функциями, библиотеками и прочим с чем я ещё не знаком я не рассматриваю пока.
Аноним 24/02/20 Пнд 17:28:35 #131 №1613672 
>>1613667
Она не нужна. Просто float и double не достаточно, потому я ещё 128-битную плавающую запятую прикрутил для проверки.

Вот без неё. Там нет библиотек, и max_float я раскрыл без дефайна, можешь только на него смотреть проигнорировав другой код. max_float превращается в max_int заменой float на int без изменения другого кода.
https://godbolt.org/z/vyrk8E
Аноним 24/02/20 Пнд 17:34:29 #132 №1613675 
>>1613667
Вот вообще безо все, если тебе мозолит глаза и отвлекает эта дичь: https://ideone.com/YoThYK
Аноним 24/02/20 Пнд 17:35:40 #133 №1613677 
>>1613672
>>1613675
спасибо, большое что делаешь это ради меня. уже смотрю...
Аноним 24/02/20 Пнд 17:37:26 #134 №1613680 
>>1613675
ну не совсем уж без всего continue и <stdlih.h> мне тоже незнакомы. но я попытаюсь разобраться.
Аноним 24/02/20 Пнд 17:44:51 #135 №1613688 
>>1613650
>2 в овердохуятой степени
Это элементарно в уме считается.
Аноним 24/02/20 Пнд 18:11:18 #136 №1613709 
>>1613680
><stdlih.h>
Не нужен, случайно оставил.
>continue
Синтаксический сахар, во всех случаях можно заменить на цикл без него: https://ideone.com/8BYmnI
Ещё добавил чтобы на каждом шаге значения переменных выводились для long long и для float, чтобы было понятна суть алгоритма.
Аноним 24/02/20 Пнд 18:12:36 #137 №1613710 
>>1613709
спасибо, анчоус. буду смотреть.
Аноним 24/02/20 Пнд 18:13:45 #138 №1613713 
>>1613709
спасибо, идеально. мне там всё понятно. буду теперь на основе этого разбираться и высирать свой кодэ, спасибо ещё раз. скоро решение скину как с floatами. а потом вернусь 1-24 со скобками допиливать
Аноним 24/02/20 Пнд 22:15:31 #139 №1614008 
>>1613354
> изучение асма как раз нужно заходить со стороны цифровой схемотехники
Это совершенно лишнее, если у тебя не embedded. И даже в таком случае некоторое время можно без этого понимания жить.

> как к обычно-языку типа си, джавы и т.д
Это и есть обычный язык. Для программиста x86 ничем не отличается от виртуальной машины этой самой джавы. Даже если ты полезешь в конвейер и ниже.
Аноним 26/02/20 Срд 14:21:22 #140 №1615474 
>>1613709
анон, а как работает пустой цикл for(;;) без аргументов? я что-то не понимаю. читаю сейчас твой код и не могу понять как пустой for работает. там же условие должно выполняться чтоб он работал а его нету.
Аноним 26/02/20 Срд 14:23:16 #141 №1615475 
>>1613709
>>1615474
я так понял пустой for автоматически по условию становится равен постоянно true до тех пор пока программа не завершит его returnом
Аноним 26/02/20 Срд 14:26:42 #142 №1615481 
>>1615475
не щас проверил он не работает.

>>1613709
АНОН ПОЯСНИ ЗА ЭТОТ FOR(;;) ПУСТОЙ КАК ОН РАБОТАЕТ
Аноним 26/02/20 Срд 14:31:33 #143 №1615488 
>>1615475>>1615481
Можешь заменить на for (;1;) или while(1). Просто бесконечный цикл до return-а.

Всё ещё не уверен, что это хорошая (полезная) задача - 1.24 в разы более программистическая, чем какая-то фигня, где нужно знать про специальные значения по типу inf, про количество значащих запятых (1e40+124e20 строго равно 1e40, что может быть не очень очевидно) - всё это на стадии, когда ещё даже не знаком с continue/break точно лишь замусорит голову, лучше что-то полезное изучить.
Аноним 26/02/20 Срд 14:38:10 #144 №1615501 
>>1615488
>Можешь заменить на for (;1;) или while(1). Просто бесконечный цикл до return-а
спасибо, я уже провери у себя. да это просто цикл бесконечный, просто в первый раз с синтаксисом проебался.

>Всё ещё не уверен, что это хорошая (полезная) задача - 1.24 в разы более программистическая, чем какая-то фигня, где нужно знать про специальные значения по типу inf, про количество значащих запятых (1e40+124e20 строго равно 1e40, что может быть не очень очевидно) - всё это на стадии, когда ещё даже не знаком с continue/break точно лишь замусорит голову, лучше что-то полезное изучить.

Всегда можно будет вернуться с более большими знаниями и переделать. В любом случае лишним не будет. Сегодня желатлеьно 2.1 доделать, а потом 1-24
Аноним 26/02/20 Срд 14:45:19 #145 №1615512 
>>1615488
а ты ещё функции вначале не описываешь. в k&r они сперва строчку функции делали, а потом уже её саму писали в конце. надеюсь ты понел о чём я
Аноним 26/02/20 Срд 14:48:43 #146 №1615519 
>>1615488
разобрался, анчоус, в алгоритме твоём. прикольный, сам придумал или где увидел когда-то? анон, а вот когда я делал +1 постоянно это же переполнение называется, да?
Аноним 26/02/20 Срд 15:55:43 #147 №1615674 
>>1615512
Если функция описывается до ее вызова - то прототип в этом файле не нужен.
Аноним 26/02/20 Срд 16:06:48 #148 №1615704 
Capture.PNG
>>1615674
спасибо, анон. огромное возьму на заметку. алгоритм хороший ты мне подсказал, я теперь его буду везде применять когда нужно будет узнать максимально возможное кол-во чего либо.

а вот здесь в библиотеки флоатов, много различных вариантов их все нужно выводить и рассчитывать? я честно говоря даже не каждый из них понимаю...
Аноним 26/02/20 Срд 16:42:17 #149 №1615758 
Capture1.PNG
>>1615674
>>1613709
анон, ты по-моему ошибся здесь с float'ом там -e38 должно быть
Аноним 26/02/20 Срд 16:42:36 #150 №1615760 
Capture.PNG
>>1615758
отклеилось.
Аноним 26/02/20 Срд 17:42:58 #151 №1615864 
Короче сложно слишком, голова уже болит. Лучше продолжу книгу читать и другие задания к этим потом вернусь. К тому же я щас начал читать идущиц подпункт за 2.1 про константы и это то что мне нужно было чтобы граммотно принтить диапазоны раличных типов. В книге действительно задания как-то поспешны даются, не очень удобно
Аноним 26/02/20 Срд 18:26:59 #152 №1615912 
>>1615758
Тому что это был код для целых, и под минимальным подразумевалось отрицательное с максимальным модулем, а не число больше нуля с минимальным модулем.
Для дробных стоило бы вовсе другой алгоритм сделать, чтобы для 300 степени не требовалось под 300k шагов, а log(300)*k шагов.

https://ideone.com/LEgATu
Можно заметить, что значение получается ниже чем -38 степень. Там идут так называемые денормализованные числа с пониженной точностью (умножение на 0.75 не изменяет значения в последнем шаге), про которые можно вовсе не знать, если ты не связан напрямую с вычислительными методами.
Аноним 26/02/20 Срд 18:29:18 #153 №1615917 
>>1615912
анон, я пока книгу продолжу читать и на упражнения забью, т.к. у меня уже мозг тупо не соображает. может быть я потом вернусь к ним. ты реально тут мне так всё загибаешь, слишком сложно уже
Аноним 26/02/20 Срд 22:50:14 #154 №1616293 
Подхватываю парад тупости, делаю задания от 2. по K&R щя...
Почему у меня UINT_MAX и ULONG_MAX в <limits.h> имеют значения -1? gcc
Аноним 26/02/20 Срд 22:51:17 #155 №1616294 
>>1616293
Потому что я тупой, всё, дошло до меня. Пздц, стоило только в тред пукнуть... извините
Аноним 26/02/20 Срд 23:04:22 #156 №1616313 
Снимок.PNG
>>1616293
Короче, знаете, как в <limits.h> определены UINT_MAX и ULONG_MAX? 0xffffffff и 0xffffffffUL
Я всё понимаю, но ничего не понимаю. Почему, если константу-адрес максимального unsigned int'a просто превратить в unsigned long-константу, должны получится разные числа? И как мне вывести само число printf'ом? Эта задача заставляет ебаться меня вовсе не с тем, что предполагал автор задачи, мде...
Аноним 26/02/20 Срд 23:06:10 #157 №1616315 
>>1616313
Ну, не "определены", наверное, это же именованные константы, я не знаю, как они и где хранятся, но это неважно
Аноним 26/02/20 Срд 23:08:34 #158 №1616318 
>>1616313

скачай лучше вижуал студию, не позорься
Аноним 26/02/20 Срд 23:09:18 #159 №1616320 
>>1616318
Для laba1 чисто поебать
Аноним 26/02/20 Срд 23:14:26 #160 №1616330 
>>1616313
Сейчас заметил ещё такую хуиту:
unsigned char i = -13 "печатает" i как 243, как и положено
НО unsigned int оставляет -13, хотя, по идее, должно быть, как с char'ом
Меня эти байтоёбские перипетии с ума сведут, объясните, умоляю...
Аноним 26/02/20 Срд 23:29:10 #161 №1616342 
>>1616313
>должны получится разные числа
Уточню, что я понимаю, почему они разные с U потому что представление разное, дополнение до 2, вся хуйня, а почему L как-то его меняет с тем же количеством байт, я не понимаю
Аноним 26/02/20 Срд 23:30:25 #162 №1616344 
>>1616342
С чего ты взял, что оно его меняет?
Аноним 26/02/20 Срд 23:40:39 #163 №1616348 
>>1616313>>1616330
>И как мне вывести само число printf'ом?
%d для signed, %u для unsigned. Ещё можешь написать (long long)n и вывести его через %lld, чтобы гарантированно.
printf не знает тип, который ты передаёшь. Ты можешь туда хоть float засунуть под %d, и он напечатает float предполагая что переданные биты - это биты целого числа; естественно выведенное значение не будет иметь ничего общего с числовым значением флоата.
Аноним 27/02/20 Чтв 00:23:50 #164 №1616367 
>>1616348
А почему он unsigned char тогда правильно обработал?
>>1616344
Не знаю, мне казалось, что раз на современных машинах лонг лонг есть, то он не просто так. Хотя, судя по адресу, наверное, просто так. Я лишь предположил, что я что-то не ебу
Аноним 27/02/20 Чтв 00:30:39 #165 №1616369 
>>1616367
Бля, при чём тут лонг лонг. Короче, не меняет, я понял, окей
Аноним 27/02/20 Чтв 00:52:43 #166 №1616374 
>>1616369
Кстати, поменялась, действительно, когда я стал использовать %u по совету >>1616348-джентельмена. Тогда вопрос, почему поменялось?
Аноним 27/02/20 Чтв 01:54:43 #167 №1616391 
>>1616374
Бля, объясни что ты делаешь и что у тебя получается, в коде желательно, словами ты не умеешь
Аноним 27/02/20 Чтв 02:15:37 #168 №1616394 
изображение.png
>>1616374
Вот это тебя смущает? Что только unsigned char работает в соответствии с ожиданиями?
https://ru.wikipedia.org/wiki/Printf
Ищи в поиске по статье "продвижени". Продвижение типа. Там даже конкретно про unsigned char указано, вроде бы.
Аноним 27/02/20 Чтв 07:45:25 #169 №1616441 
>>1613406

>Мне интересна именно практическая х86 ака серьезных процов с защищенным режимом и их взаимодействие с ОС.

Там внутренняя кухня так меняется каждый год, каждое новое поколение, что в /hw/ у амуде-интело-срачеров в режиме 24/7/365 жопы горят, каких подробностей ты хочешь?

В х86 настолько помойка в системе инструкций что там существуют аж 3 команды (int 80h, sysenter, syscall в 64-битном режиме) делающих одно и то же.

> практическая х86 ака серьезных процов с защищенным режимом и их взаимодействие с ОС.

Взаимодействие через прерывание и передачу команд.

Взаимодействие с устройством из юзермода, в nix, например, идет через крайне замороченную и дырявую абстракцию типа "специальный файл" обычными fprint fscan , но когда нужно сделать что то странное типа настройки передать - то через системный вызов ioctl


Аноним 27/02/20 Чтв 07:49:57 #170 №1616443 
>>1616441

А зачем в линуксе развели эту бадягу, с устроством-файл и этими "тут играем, тут не играем а тут ioctl"
Аноним 27/02/20 Чтв 08:34:59 #171 №1616459 
char ✸buf = "abcde";
Есть ли способ узнать размер константы? strlen() не подходит, нужен настоящий размер, а там в середине могут быть нули. Компилятор же знает, есть ли способ вытянуть это знание?
Аноним 27/02/20 Чтв 08:38:47 #172 №1616460 
>>1616459
sizeof(✸buf)
Аноним 27/02/20 Чтв 08:40:26 #173 №1616461 
>>1616459
sizeof на литерал
Аноним 27/02/20 Чтв 09:05:47 #174 №1616481 
>>1616460
Разыменовывание в char дает его размер - 1.

>>1616461
Лол, круто конечно, но зачем нужен литерал без доступа к нему. Как на него сослаться в таком случае?
Аноним 27/02/20 Чтв 09:14:11 #175 №1616494 
>>1616481
>Разыменовывание в char дает его размер - 1.
Ой, действительно, это же не указатель на массив. Нет, тогда не получить по buf его размер, делай sizeof("abcde").
Аноним 27/02/20 Чтв 09:42:23 #176 №1616528 
1568001858945.png
>>1616494
>делай sizeof("abcde")
Так получается литерал-сирота без ссылок на него.
Попытался накостылять решение. Какого хрена???
Почему у меня на двух разных компиляторах, микрософта и борланда эта скотина конвертирует в указатель, выдавая "4", а на сайте нормально размер литерала "6"?
https://ideone.com/VIRj03
Аноним 27/02/20 Чтв 09:47:33 #177 №1616535 
>>1616481
#define IMPORTANT_STRING "abcdef"

sizeof(IMPORTANT_STRING)

printf(IMPORTANT_STRING)
Аноним 27/02/20 Чтв 09:49:09 #178 №1616538 
image.png
>>1616528
>>1616459
Аноним 27/02/20 Чтв 09:51:45 #179 №1616540 
>>1616528
>Так получается литерал-сирота без ссылок на него.
Ну ты так его создаёшь. Хочешь знать размер, делай массивом, а не указателем.
Аноним 27/02/20 Чтв 09:53:48 #180 №1616544 
>>1616535
Таких строк много, нужно копипастить, а define нельзя переопределять.

>>1616538
Вопрос был про получения размера литерала, а не массива.
Аноним 27/02/20 Чтв 09:57:10 #181 №1616550 
>>1616544
>Таких строк много, нужно копипастить
Копипасти. В чем проблема?
>define нельзя переопределять.
Зачем его переопределять? Каждый дефайн на один литерал.
Аноним 27/02/20 Чтв 09:57:15 #182 №1616551 
>>1616535
>>1616544
>а define нельзя переопределять
Упс, а ведь можно! Спасибо! >>1616535
Аноним 27/02/20 Чтв 09:57:19 #183 №1616552 
image.png
>>1616544
>Вопрос был про получения размера литерала, а не массива.
А что не так то? Какой размер тогда должен быть по твоему? Даже с терминальным нулем по середине нормально измеряет.
Аноним 27/02/20 Чтв 09:58:19 #184 №1616554 
>>1616550
>Копипасти. В чем проблема?
>Каждый дефайн на один литерал.
Ты у мамы не очень умный.
Аноним 27/02/20 Чтв 09:59:07 #185 №1616555 
>>1616554
Мне кажется, ты не совсем понимаешь, что такое литерал.
Аноним 27/02/20 Чтв 10:15:31 #186 №1616583 
1455762891746.png
>>1616555
Мне кажется, ты не понимаешь что такое копипастить код когда нужно выполнять несколько одинаковых действий. Обрати внимания, что код одинаковый, кроме собственно литерала, чтобы можно было добавлять и удалить произвольное количество действий простой копипастой и ничего не ломалось.
Аноним 27/02/20 Чтв 10:19:36 #187 №1616587 
>>1616583
Мда.
Так вот, литерал - это уникальная константа. Поэтому и дефайны должны быть на каждый дефайн свои

#define YOU_LITERAL "you"
#define ARE_LITERAL "are"
#define DUMBER_LITERAL "dumber"
Аноним 27/02/20 Чтв 10:22:33 #188 №1616594 
>>1616583
Поскольку в сях нельзя включать директивы препроцессора внутрь других, то для этого пользуются инклюдами.
#define LITERAL "one"
#include "printsize.inc"
//в конце можно #undef LITERAL

#define LITERAL "on"
#include "printsize.inc"
Аноним 27/02/20 Чтв 10:22:41 #189 №1616595 
>>1616587
Лол, просто без комментариев.
Аноним 27/02/20 Чтв 10:26:19 #190 №1616600 
>>1616583
>>1616587
I'm dumber than you both combined, why don't you fuckers use arrays for its intended fucking purpose, when you need to know the size?
Аноним 27/02/20 Чтв 10:37:35 #191 №1616619 
>>1616594
Здорово. Спасибо за хитрость и дополнение.
Аноним 27/02/20 Чтв 10:51:36 #192 №1616650 
>>1616595
Чтож, как я и подозревал, ты не понимаешь что такое литерал. Например, 5 это буквально число пять. Ты же пытаешься работать с ним как с переменной.
Аноним 27/02/20 Чтв 10:55:49 #193 №1616655 
>>1616600
Безымянные литералы массивов нельзя присваивать одной и той же переменной несколько раз. Как результат, копипастить не получится. Хотя, выше запостили трик со скобочками, тоже вариант.
Аноним 27/02/20 Чтв 11:03:40 #194 №1616663 
>>1616650
Чувак, был запрос на помощь в решении конкретной задачи, простой и ясной. Умные люди помогли найти решение, а ты погрузился в отрицание "почему эта задача неправильная и не нужна", типичный недоумок.
Аноним 27/02/20 Чтв 11:19:38 #195 №1616678 
>>1616663
В том виде, как ты сформулировал, действительно неправильная и не нужна. Скорее всего ты действительно ламер который делает какую-то ненужную чушь не тем инструментом.
Аноним 27/02/20 Чтв 11:56:55 #196 №1616718 
Снимок.PNG
флоти-бой.PNG
>>1616663
Почему он посыпался на строке, выделенной синим?
Аноним 27/02/20 Чтв 11:57:23 #197 №1616720 
>>1616718
Адресовал случайно, вопрос всем, конеш
Аноним 27/02/20 Чтв 12:03:01 #198 №1616735 
>>1616718
Кто куда посыпался? Читай про двоичную систему счисления. Какбе нельзя в ней точно выразить деление на 10. (Вроде бы потому что у 5 и 2 нет общего делителя)
Аноним 27/02/20 Чтв 12:04:00 #199 №1616739 
>>1616735
На пике умножение
Аноним 27/02/20 Чтв 12:04:49 #200 №1616741 
>>1616739
Да неважно. Десятичные цифры то это десятки.
Аноним 27/02/20 Чтв 12:12:53 #201 №1616758 
>>1616741
Пойду применю свой мегамозг в попытке понять, чё происходит
Аноним 27/02/20 Чтв 12:20:59 #202 №1616776 
>>1616739
Лень расписывать все научно, ну как хранятся флоаты в двоичном виде? Это некое число mantiss*2exp
Но под мантиссу выделено фиксированное число битов.
Соответственно в какой-то момент у тебя число перестанет в него влезать. Младшие биты мантиссы потеряются, а множитель мантиссы продолжит расти.
Грубо говоря, было 11111111b x 64, умножаем на 10, там должно было бы стать что то вроде 010011111011b x 128, но в 8 бит это не влезет, поэтому придется порезать мантиссу до 8 старших бит 01001111b и увеличить экспоненту до 1024, в результате мы получаем 162816 вместо 163200
Иными словами шаг между соседними числами будет расти с ростом числа кратно степени двойки, поэтому и вылезет противоречие с десятичными знаками.
Float не подходит для точного поцифрового хранения числа, se la vi.
Аноним 27/02/20 Чтв 14:09:38 #203 №1616982 
>>1611904
Ночью с ней пердолился, сделал просто (unsigned int) -1 и забил хуй
Аноним 27/02/20 Чтв 14:54:25 #204 №1617041 
>>1612227
>>1616663
Может вам в JavaScript перекатиться? Там можно спокойнее класть хуй на стандарты, писать всякую дичь, браузер и пипл схавает
Аноним 27/02/20 Чтв 15:56:58 #205 №1617155 
>>1616678
Какой я ламер и какой вопрос глупый нет не имеет значения вообще. Понимаешь, был задан вопрос. Ответов, В ПРИНЦИПЕ может быть только два:
1. Это невозможно.
2. Решение.
Разговор о неправильности задачи и переводе на другую, В ПРИНЦИПЕ не может начаться пока не получен предыдущий ответ. Потому что, только тогда можно (либо/либо):
1. Перейти на другую задачу ввиду невозможности решения предыдущей.
2. Сравнить два решения, старое и новое, и если новое лучше, ТОЛЬКО ТОГДА перейти на него.

Говорить же, что "другая задача лучше", когда не решена предыдущая, это абсурд. Пустое кукарекание дебила, вытащенное из жопы.
Аноним 27/02/20 Чтв 16:07:58 #206 №1617182 
>>1616718
Потому что float ограничен по размеру и не годится для вычислений. Даже сам язык об этом говорит. Любая дробная константа, например 1.5, это double, float же можно сделать только специально ограничив размер как 1.5f. Короче, float не нужен, за исключением случаев когда действительно именно он нужен по спецификациям.
Аноним 27/02/20 Чтв 16:09:09 #207 №1617184 
>>1617155
>Аноны, как забивать гвозди микроскопом?
>Лол, микроскопом не стоит забивать гвозди, и вообще в наши дни лучше заменить гвозди на закручивание саморезов
>Неет, ответов В ПРИНЦИПЕ может быть только два
>Это невозможно
>Решение как забивать гвозди микроскопом
Как скажешь.
Аноним 27/02/20 Чтв 16:10:07 #208 №1617187 
>>1617182
double тут ничем не поможет, ты столкнешься с той же проблемой, просто на пару десятков циклов позже.
Аноним 27/02/20 Чтв 16:16:44 #209 №1617199 
>>1617187
>double тут ничем не поможет
>тут
Тут нет проблем, вычислений нет, тупо опыт по ломанию переменной.
А я говорю про использование для вычислений, там только double, с float напорешься на косяки в обычных вычислениях.
Аноним 27/02/20 Чтв 16:20:23 #210 №1617201 
>>1617184
"Выбор", "лучше" подразумевает сравнение - наличие минимум двух вариантов. А у тебя только один, но но утверждаешь что лучший всё равно. Это вера, следствие фундаментальной тупости отдельного человека. Тот, кто предпочитает верить, а не думать, это дебил.
Аноним 27/02/20 Чтв 16:23:15 #211 №1617204 
>>1617199
А я тебе говорю про использование для вычислений, не используй double, он ничем не поможет будет так же криво, все равно понадобится библиотека для bigint/bignumber а то и символьных вычислений. На крайняк строки.
Аноним 27/02/20 Чтв 16:25:35 #212 №1617208 
>>1617201
Твоя проблема называется проблема XY. Пока ты не объяснишь, что именно ты хочешь сделать, а только говоришь с помощью чего, никуда продвинуться невозможно. Если тебе нужны строки и их длины, то может оказаться проще вообще генерировать .h файл где будут дефайны и для того и для другого, так и переводить программу на другие языки легче. А может проще взять c++ и нагородить там компайл-тайм строк на шаблонах.
Аноним 27/02/20 Чтв 16:27:55 #213 №1617212 
Снимок.PNG
>>1617187
Автор вопроса ИТТ, я немного изучил по вашим наводкам этот вопро и вот што я из этого понял:
Он поплыл при прибавлении к числу ста миллионов, как мы видим. Т.е, при сложении (base 10):
11 111 111
и
100 000 000
происходит какая-то залупа, которая добавляет к числу единицу. Фактически это т.н. floating point rounding error, то есть, десятичное число по основанию 10
1 111 111 111
Не может быть представлено на бинарном уровне (т.е. по основанию 2) как конечная десятичная дробь -- она будет иметь период. Комплюктер, чтобы сделать её конечной, округляет её, выходит число на единицу больше. Я не собираюсь считать это в лоб, потому что мне поебать, но на гипотетическом уровне происходит то, что я сейчас сказал. Т.е. это могло быть и меньшее число в другой арифметической прогрессии.
Дальше идёт тупо накопление погрешностей округления (пикрил). ПОТОМ в какой-то момент заканчивается место в мантиссе числа, и n младших разрядов представления числа по основанию 10, соответственно, выражаются через экспоненту, которая записывается во младших битах, поэтому там тупо нолики хуячат. А потом просто уже переполняется максимально возможное число, разрешённое компилятором и, возможно, при этом архитектурой процессора, но это я не ебу, очевидно, чё там происходит, но он кидает в тебя бесконечность. Всё
Аноним 27/02/20 Чтв 16:29:48 #214 №1617218 
>>1616459
Никак, char* не сохраняет размер.
Если хочешь размер - напиши char buf[]="", тогда в тебя в типе сохранится и его можно будет через sizeof получать, что в любом случае придётся сделать, если нужно печатать строку через printf.
Я бы вот так сделал: https://ideone.com/TBunV4
printf отказывается печатать строку, даже если явно указать что там 12 символов, но символов 12. Выглядит лучше, чем define/undef, но лишние переменные.


>>1616718
У флоата 7-8 значащих цифр, у дабла 15-16. Что такое значащие цифры сам найдёшь.
Вот код: https://ideone.com/ZEj7su
Аноним 27/02/20 Чтв 16:31:14 #215 №1617223 
>>1617204
Ты прав наверное, просто помню, как-то раз понадобилось, и с float вылез косяк, а double его убрал. Понимаю, что для калькулятора не пойдет, только подумал, что в обычной программе не требуется прям чисто-пречисто.
Аноним 27/02/20 Чтв 16:33:40 #216 №1617230 
>>1617212
Алсо, пусть это примерно предоставит возможность понять, на какой ответ я рассчитывал, а то тут проблемы с коммуникацией частенько, как я понял
Аноним 27/02/20 Чтв 16:34:52 #217 №1617232 
>>1617212
Вроде все так.
Аноним 27/02/20 Чтв 16:35:34 #218 №1617234 
>>1617208
Твоя проблема называется:
>Я не знаю ответа на вопрос и искать его не хочу, но признавать свою тупость не желаю, поэтому буду агитировать за отмену вопроса. Нет вопроса - нет проблем, я всё знаю, нигде не ошибаюсь.
Исповедь идиота.
Аноним 27/02/20 Чтв 16:38:20 #219 №1617242 
>>1617234
— Двач-медач, вот у меня почему-то раны вокруг рта…
— Так ты ж ешь с ножа. Ложку попробуй.
— Ложкоблядь закукарекала. Ложкой мне неудобно.
— Тогда йодом помажь, лалка.

— Двач, а почему я суп так медленно ем? И мне очень неудобно.
— Потому что ты ножом суп ешь? Ложкой ешь.
— Ложкобляди не нужны! Бамп! Еще варианты? Бамп!
— Ну отхлебни из тарелки тогда.
— Ебанутые...

— Двач, почему на меня в ресторане так странно поглядывают?
— Потому что ты с ножа ешь!
— Каждый раз одно и то же, что за дебильные анонимусы. А другого объяснения нет?
— Может и есть, но это не важно. Важно есть твердое вилкой, а жидкое ложкой.
— Кажется, я совсем не понимаю мира и не гожусь для этой жизни.
— Да все с тобой нормально, просто возьми ложку, когда принесут суп.
- ПРОСТО! аххахахах! ПРОСТО! Ахуительная история. Угу. ПРОСТО блять. Спасибо, идиоты, за совет, блять.

— Двач, двач! Мне так больно, у меня кровь течет! За что мне это?
— Чем суп ел, дебилушка?
— Ножом, конечно.
— А ложку не пробовал взять?
— Почему анонимусы так безжалостны ко мне, а еще двач-помогач?! Это невыносимо!
— Ложку взять не пробовал?
— Нет!
— А что тебе помешало?
— Я не хочу об этом говорить. Всё. Тред закрыт. САЖИ ТРЕДУ САЖИ. Вайп!

— Знал бы ты, двач, как я хочу макарошек!
— У каждого своя судьба.
— Как ты думаешь, анон, когда-нибудь у меня получится поесть макарон? Я ведь не хочу ничего особенного.
— Так свари макарон, возьми вилку и ешь.
— Да? Хорошо, я подумаю.

— Двач, и как люди манную кашу едят и не режутся?
— Ложкой, блять!!
— А чего ты ругаешься сразу? Я ж нормально спросил...

— Анон, поговори со мной.
— Я обедаю.
Аноним 27/02/20 Чтв 16:59:26 #220 №1617264 
>>1617218
>Я бы вот так сделал: https://ideone.com/TBunV4
Красиво, ничего не скажешь.
Аноним 27/02/20 Чтв 17:35:02 #221 №1617294 
>>1617218
>Вот код: https://ideone.com/ZEj7su
Чекнул, это ты эпсилон нашёл, получается?
Аноним 27/02/20 Чтв 18:29:54 #222 №1617342 
>>1610764 (OP)
Чем автоматически доступ мимо массива найти? Его нет, но мне кажется, что может быть, а считать в голове сложно, я что калькулятор?
Аноним 27/02/20 Чтв 18:54:23 #223 №1617368 
>>1617342
>Чем автоматически доступ мимо массива найти? Его нет, но мне кажется, что может быть, а считать в голове сложно, я что калькулятор?

Ты по-русски сначала писать научись, мысли свои выражать, а там и с массивами приложится всё.
Аноним 27/02/20 Чтв 19:11:28 #224 №1617377 
>>1617368
Я не думаю, что ты способен мне помочь, но объясню попроще. Есть массив int foo[10]. Мне надо найти, если вдруг где-то в программе есть bar = foo[11], или baz = foo[10]. Программа не валится с sigsegv, значит сейчас этого нет, но может быть при определенной комбинации параметров это может случиться. Нужна программа, которая может найти такие параметры, или сказать, что таких параметров 100% нет.
Аноним 27/02/20 Чтв 19:21:23 #225 №1617384 
>>1617377

ну в Си вообще плохо всё с проверками границ массивов. Некоторые параноики пишут макросы(функции) - обёртки, которые проводят рантайм проверки. Ещё тебе могут помочь всякие статические анализаторв кода. Но общая задача статического анализа кода на такие ошибки равносильна решению задаче останова, так что 100% не будет тебе.
Аноним 27/02/20 Чтв 19:24:27 #226 №1617387 
>>1617377
>bar = foo[11]
У меня ide выдаёт предупреждение от такого.

Посмотри что такое valgrind, например - даже если тебе нужен не он, с него выйдешь на схожие инструменты.
Аноним 27/02/20 Чтв 19:27:16 #227 №1617388 
>>1617342
Уфф, мой начальник что то подобное на плюсах делал.
В общем, для начала надо обернуть создание таких массивов в функцию или макрос (new же вроде тут нет) да и доступ лучше сделать не через [] а через геттер.
Суть в том чтобы создавать массив больше размером, и снизу и сверху. И заполнять его контрльными данными. Например
55 AA 55 AA 55 AA 00 01 02 03 04 05 55 AA 55 AA 55 AA
А в геттере проверять что данные не совпали с контрольными. Конечно там будут ложные срабатывания, но хоть что-то.
Аноним 27/02/20 Чтв 19:31:26 #228 №1617393 
>>1617342
Еще нагуглил что если размеры известны то что-то может найти статический анализатор, например опция -fsanitize=bounds
Аноним 27/02/20 Чтв 19:31:39 #229 №1617394 
>>1617384
Не, ну классно. Взял, расширил мой вопрос до статического анализа, и сказал, что на этот вопрос ответа не существует. Спасибо.

>>1617387
>valgrind
У них даже на википедии написано, что именно это он не умеет. Да и вообще я просто небольшой текстовый анализатор хотел, а не рантаймовый. В рантайме, как я уже сказал, всё и так работает.

>>1617388
Да это понятно, что можно, но мне просто найти
foo[bar]
for (int i; i<=bar;bar++)
{foo=3};
даже аллоки без фри искать не надо.
Аноним 27/02/20 Чтв 19:34:42 #230 №1617401 
>>1617387
>У меня ide выдаёт предупреждение от такого.
Ну и да, естественно, foo[11] и компилятор находит. А foo[bar ⛧ bar - 3 ⛧ baz],
Аноним 27/02/20 Чтв 19:35:18 #231 №1617402 
>>1617394
>{foo=3};
{foo=3};
Аноним 27/02/20 Чтв 19:36:16 #232 №1617403 
>>1617402
Макаба, перестань есть мою [ i ]
Аноним 27/02/20 Чтв 19:47:24 #233 №1617410 
>>1617401
Попробуй загнать в статический анализатор. PVs Studio например.
Аноним 28/02/20 Птн 01:36:08 #234 №1617652 
image.png
Вырезаю из строки часть выделенную / /. Чому p_end не ищет то шо нужно?
#include <stdio.h>
#include <string.h>
int main() {
char test1[50] = "2ch pomozhet/ ne pomogay podumoy /vsegda";
char p_start, p_end;
// for(int i = 0; '\n' != (str = getchar()); i++);
p_start = strcspn(test1, "\");
p_end = strcspn(test1, "
/");
printf("p_start = %d\n", p_start);
printf("p_end = %d\n", p_end);
for(int i = 0; i < p_start-1; i++) {
printf("%c", test1);
}
for(int i = p_end; i <= '\0'; i++) {
printf("%c", test1);
}
printf("\n");
return 0;
}
Аноним 28/02/20 Птн 04:37:05 #235 №1617702 
>>1617388
>Уфф, мой начальник изобретал C++ из соплей и палок
Необучаемые.
Аноним 28/02/20 Птн 07:55:48 #236 №1617741 
>>1617702
ООП на С для тебя странность?
Аноним 28/02/20 Птн 11:37:24 #237 №1617835 
>>1617702
Ты не понял, я писал о том, что он реализовывал это в C++ (переопределяя new/delete)
Аноним 28/02/20 Птн 16:14:26 #238 №1618081 
>>1617394

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

ты не очень умный. я тебе объяснил, почему вопрос не имеет ответа на "100 процентов", твой "небольшой текстовый анализатор" эквивалентен задаче останова. Потом дал два практичеких приближения. но как я уже говорил, твоя проблема не массивах и сишечке, а в неспособности символы переводить в смыслы и обратно.
Аноним 28/02/20 Птн 19:45:43 #239 №1618248 
>>1618081
>Найти bar = foo[11]
>Ета задача останова! И ты тупой!
Ебать ты долбоёб, братишка, соболезную.
Аноним 28/02/20 Птн 19:50:37 #240 №1618253 
>>1618248
Даня Крюгер, ты?
Аноним 28/02/20 Птн 22:28:03 #241 №1618408 
>>1618248

Если тебя интересует (не рантайм)проверка выхода за границы массива по константным индексам, то тебе кланг например, сам выдаст ворнинг. Если по индексам, которые хитровыебанно вычисляются - то это эквивалентно задаче останова. напиши интерпретатор брейнфака или любого другого тьюринг полного языка, пускай есть переменная j, в начале там 0. ты периодически выполняешь по шагу своей программы в интепретаторе, а потом выдаёшь на печать значение массива foo[j]. если интерпретируемая программа заканчивается, пишешь в о 12. Так вот если бы твоя простенькая статическаая проверка существовала, ты бы решил задачу останова таким нехитрым образом.

но мне кажется, ты толлишь тупостью.
Аноним 28/02/20 Птн 22:36:36 #242 №1618416 
>>1618408
Двачую. А то может у него вообще размер пользователем вводится, тогда вообще можно тушить свет.
Аноним 29/02/20 Суб 04:17:02 #243 №1618562 
А я просто эту хуйню решаю, если размер много где используется, то объявляю его в дефайне, а потом этот дефайн везде подкладываю, где возможен выход за границы. Правда яшитаю в 90% массивы зло и нахуй не нужны. Дали тебе маллок и фри - нет хочу говно есть и дрочить несчастный стек
Аноним 29/02/20 Суб 04:54:32 #244 №1618572 
>>1618562
> дефайн везде подкладываю
Пиздец. Держи забытые технологии древних: #define countof(array) (sizeof(array) / sizeof((array)[0])) только с указателем не вызови случайно
Аноним 29/02/20 Суб 05:29:59 #245 №1618576 
>>1618572
Ага, и везде вместо говорящего дефайна использовать макрос, который ещё каждый раз в рантайме будет считать значение из констант. Охуенно, производительно
Аноним 29/02/20 Суб 05:54:38 #246 №1618580 
>>1618576

Если у тебя компилятор не от хлебушка, то на нормальном уровне оптимизации заменится на константу (для не ВЛА).
Аноним 29/02/20 Суб 07:14:34 #247 №1618588 
1475270884194.png
1560061737075.png
Забытые технологии древних.
Аноним 29/02/20 Суб 09:34:20 #248 №1618620 
А в чем разница, если я объявляю j внутри цикла или в скобках for? Я вижу, что поведение j от этого меняется, а как и почему - не понимаю.
for (int i = 2, j = 2; i < len; i++)//можно объявить j здесь
{
    int j = i; //а можно здесь
}
Аноним 29/02/20 Суб 11:17:33 #249 №1618670 
>>1618620
Сорян, затупил на несвежую голову. Очевидно, что если объявлять в for, то она только 1 раз объявится и будет сохранять значение на все итерации, а если внутри, то с каждой итерацией значение будет перезаписывать на i.
Аноним 29/02/20 Суб 12:12:35 #250 №1618694 
>>1618670
Если не брать в расчёт оператор continue, то цикл
for (чёто1; чёто2; чёто3) { хуйня };
Эквивалентен
чёто 1; while(чёто2) { хуйня; чёто3 };
Аноним 29/02/20 Суб 12:13:38 #251 №1618695 
>>1618694
Кстати, мне компилятор не разрешает объявлять переменную внутри for, хз как вы ето делоете
Аноним 29/02/20 Суб 12:17:53 #252 №1618696 
>>1618695
На си никто не пишет.
Аноним 29/02/20 Суб 12:26:26 #253 №1618701 
>>1618695
C99?
Аноним 29/02/20 Суб 12:42:53 #254 №1618719 
>>1618695
Это еще что, раньше вообще так писали
func(x, s)
int x;
char* y;
{
...
}
Аноним 29/02/20 Суб 12:53:52 #255 №1618728 
>>1618719
На класс похоже. Опередили время.
Аноним 29/02/20 Суб 16:12:27 #256 №1618931 
>>1617652
бамп
Аноним 29/02/20 Суб 16:19:48 #257 №1618939 
>>1618931
У тебя разметка поехала. Непонятно что в коде.
Но вроде все правильно, ты искал слеш - нашел первое вхождение слеша.
Аноним 29/02/20 Суб 16:36:43 #258 №1618968 
>>1617652
Если ты имеешь в виду найди позиции обоих слешей, то можно делать что-то вроде
p_start = strchr(str, '/');
p_end = strchr(p_start+1, '/');
Естественно тут надо проверять что p_start не вылезает за границы строки.
Аноним 29/02/20 Суб 21:11:36 #259 №1619268 
>>1618576
>>1618580
VLA нинужны, для всего остального sizeof гарантированно считается на этапе компиляции, с любым уровнем оптимизации. И да, countof(unique_names) гораздо понятнее, чем всякие NUNQNM да, почему-то экономить буквы любят именно адепты подхода "задефайним размер массива где-нибудь в жопе"

>>1618588
Кого ты наебать пытаешься? У одного байткод (и да, UBOUND был в старых бейсиках?), у второго дебаг-сборка.

>>1618968
> Естественно тут надо проверять что p_start не вылезает за границы строки
Оно NULL вернет, если что. Но там не нужны никакие strchr, нужно просто завести флажок и идти циклом по строке. По / менять состояние флажка. С взведенным флажком мы символы пропускаем, со сброшенным - копируем.
Аноним 29/02/20 Суб 21:21:06 #260 №1619275 
>>1618968
https://pastebin.com/jVwxcRR4
Сорян шо сразу на пастбин не выложил
Ну я ищу две строки "/" и "/"
p_end мне выдает тоже шо и p_start, счас снова прочел описания функций и понел шо я не правильно понял их назначения, блят вот я слоупок.

Здравым ли будет алгоритм искать сначала например слеши и потом проверять нужную звездочку с необходимой стороны?
Аноним 29/02/20 Суб 23:11:53 #261 №1619391 
>>1619268
>VLA нинужны

Так то самый удобный способ работать с динамическими двумерными(многомерными) массивами.
Аноним 01/03/20 Вск 01:01:05 #262 №1619519 
>>1619391
Этот вопрос тут поднимался много раз. Вкратце: если у тебя VLA неизвестного размера, ты всегда можешь выделить слишком много и получить переполнение стека, которое по-нормальному хуй обработаешь. Если ты заранее знаешь максимальный размер, то тебе не нужны VLA - ты можешь сразу выделить массив этого размера на стеке. Если ты не знаешь и не можешь предсказать размер, тогда у тебя есть malloc(), ошибки которого, в отличие от VLA, можно худо-бедно обработать. Все это касается в том числе и alloca() - нужно сильно подумать перед тем, как ее использовать.
Аноним 01/03/20 Вск 01:17:38 #263 №1619522 
>>1619268
>VLA нинужны
Ты просто не умеешь ими пользоваться.
Аноним 01/03/20 Вск 04:21:26 #264 №1619584 
>>1619268
>Кого ты наебать пытаешься этой годнотой? Я лучше говна пожру.
Сам себя наебал и доволен. Дожили.
Аноним 01/03/20 Вск 05:45:25 #265 №1619601 
>>1619391
Что за VLA? Почему бы не использовать связные списки для этого?
Аноним 01/03/20 Вск 06:30:30 #266 №1619604 
>>1619601
>Что за VLA?
Нестатические массивы:
int i = get_random_number();
int a;
Такого нигде нет, кроме какой-то новой версии именно Си (в плюсах тоже нет).
Массивы обычно статические, в объявлении размер должен быть только константой.

>Почему бы не использовать связные списки для этого?
Потому что вкатывальщикам так проще. Лепишь тупо массивы везде, и оно работает на уровне лаба1, не нужно больше ни о чем думать.
Аноним 01/03/20 Вск 06:33:03 #267 №1619605 
>>1619604
> int i = get_random_number();
> int a[i];
скобки съело
Аноним 01/03/20 Вск 06:48:06 #268 №1619608 
>>1619604
У GCC/MinGW такое прокатывает.
Аноним 01/03/20 Вск 06:53:48 #269 №1619609 
>>1619604
>кроме какой-то новой версии именно Си

Этой "новой версии" сто лет в обед. С99 называется.

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

Положняк такой: не нужно использовать VLA для явного выделения массива на стеке. Но VLA очень хороши для маллоканья двумерных(многомерных) массивов, передачи многомерных массивов в виде аргументов в функции. Обычный способ маллокать двумерный массив - либо делать ручную арифметику(БУЭЭ!!) либо делть массив указателей на указатели, маллокать в цикле, освобождать потом тоже в цикле(БУЭЭЭ!!!11)
Двумерный массив n x m выделяется так с помощью VLA.

int (ж mas)[m] = malloc (sizeof(int) ж m ж n);
или
int (ж mas)[m] = malloc (n ж sizeof mas[0]);
но последний способ технически UB (в этом месте в стандарте по-ебанутому написано)

потом обращаешься
mas[j] = hui;
как к обычному двумерному массиву.

освобождаешь
free(mas);

Замечу, что в тот момент когда VLA описывается. фиксируется его размер, в смысле, если мы после того маллока поменяем m, поведение массива не поменяется.

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


Аноним 01/03/20 Вск 06:54:59 #270 №1619610 
>>1619609
>потом обращаешься
>mas[j] = hui;

mas[a] = hui;

парсер
Аноним 01/03/20 Вск 06:55:45 #271 №1619611 
>>1619610с

аа!!

mas[k][l] = hui;
Аноним 01/03/20 Вск 06:56:19 #272 №1619612 
>>1619604
А, ок, спасибо. Ну тоже хорошая вещь, в яве такое прокатывает, почему бы и в си не?
Аноним 01/03/20 Вск 08:00:31 #273 №1619616 
>>1619609
>Обычный способ маллокать двумерный массив - либо делать ручную арифметику(БУЭЭ!!)
>так с помощью VLA
>int (ж mas)[m] = malloc (sizeof(int) ж m ж n);
>sizeof(int) ж m ж n
А это что, не арифметика, или может НЕ ТА арифметика, лол?

>>1619612
>в яве такое прокатывает, почему бы и в си не?
Вот именно, тут кроется огромная ловушка для подобных макак. И из за того, что "прокатывает" они так ничему и не научатся и будут писать неправильный код, даже не подозревая об этом. А когда потом где-нибудь программа от этого выпадет, они скажут: "си - нестабильное говно, вот на моей джаве всё заебись".
Аноним 01/03/20 Вск 08:28:11 #274 №1619620 
>>1619616

>>1619616
>А это что, не арифметика, или может НЕ ТА арифметика, лол?

mas[k ж m + l] не в кайф писать, когда можно mas[k][l].
Если массивы многомерные, то первый вариант вообще станет уродливым. Вот что я под ручной арифметикой подразумеваю.
Аноним 01/03/20 Вск 08:29:42 #275 №1619622 
>>1619620

для обрашения к элементам массива, конечно же
Аноним 01/03/20 Вск 09:30:49 #276 №1619629 
>>1619620
Точно. С одномерным и так работает, а про многомерный не подумал, что в типе нужно хранить еще размер массива. Статический можно объявить, а динамический без VLA нет.
Аноним 01/03/20 Вск 20:21:12 #277 №1620169 
>>1619609
Окей, убедил, имеет некоторый смысл.
Аноним 01/03/20 Вск 20:40:03 #278 №1620208 
1583084398374.png
1583084398381.png
Подскажите плз, как сделать внутренний цикл добавляющим символ$.
Аноним 01/03/20 Вск 20:45:46 #279 №1620222 
>>1620208
for (i=1; i<=5; i++)
{
for(j=1;j<=i;j++)
{
printf("$");
}
printf("\n");
}
Аноним 01/03/20 Вск 20:45:59 #280 №1620223 
>>1620208
Чиво бля?
[code]
int main() {
for (int ii = 1; ii < 6; ++ii) {
for (int i = 1; i <= ii; ++i) {
putchar('$');
}
putchar('\n');
}
return 0;
}
[/code]
Аноним 02/03/20 Пнд 15:36:23 #281 №1621060 
Аноны, как на пердолю mint накатить компилятор и вообще какие там компиляторы for perdoliya есть?
Аноним 02/03/20 Пнд 15:50:45 #282 №1621068 
>>1621060
>какие там компиляторы for perdoliya есть

пиши в терминале

gcc govno_proga.c

чё это вообще означает, "для пердоли", он должен сам за тебя код писать?
Аноним 04/03/20 Срд 16:14:58 #283 №1622971 
Пишу для ананасов, с которыми общался месяц назад на счет реализации SWIM прошивальщика для STM8 на другом, более мощном, микроконтроллере.

Таки вышло эту хуйню запилить, данные отправляю обычным GPIO bit-bang, написанном на ассемблере для исключения влияния оптимизаций компилятора, пайплайна процессора и прочей хуйни. Принимаются же данные с помощью счетчик+DMA на другом пине, который тоже подключен к SWIM пину стмки (отправлять и отправлять данные на одном пине одновременно ну никак не выйдет).
Аноним 05/03/20 Чтв 08:00:56 #284 №1623526 
>>1622971
1-Wire протокол и принимает и передаёт данные по одному pin-у
Аноним 05/03/20 Чтв 22:14:28 #285 №1624529 
unnamed.jpg
Аноны, хэлпаните. Хочу написать программу которая получает значения, делает по ним форумул согласно методу Наименьших квадратов и строит функцию этой формулы на графике типа пикрил.

Так вот, есть ли на си какие-нибудь либры нестандартные чтобы подобные графики как пикрил принтить? разумеется в консоле рисовать его мне нахуй не надо это маразм.
Аноним 06/03/20 Птн 00:17:23 #286 №1624695 
image.png
Просто делюсь с вами, какой я феерический мудак, еблан, бес, черт и хуила. Вот эту хуету меня просят уже год. Да, до сих просит, потому что она хуево работает. dhnetsdk конечно показывать не буду, посадят нахуй, а cJSON - маленькая штука, спизженная с гита какого-то чела (внезапно влом руками жсонить). Это пиздос, как же я проигрываю с говнокода лютого. Захожу через удаленный рабочий стол на серверный комп, чтоб вручную там файлы менять и запускать, и потом через веб-клиент проверять результат работы, о я ебу. Она у них на полном серьезе крутится, логи хуярит, я не шучу, нахуй.
https://pastebin.com/9WvRhej9
https://pastebin.com/4ax0NV1V
первое - собсно ПРОДУКТ (ух бля)
второе - тестовый клиент
я ебал
Аноним 06/03/20 Птн 01:40:55 #287 №1624738 
>>1624695
>я ебал
Си тут нинужон, любая реализация на скриптовом яп будет на 10 строк.
Аноним 06/03/20 Птн 02:10:07 #288 №1624766 
>>1624738
>скриптовом
Вот так просто. А там же API китайский хуйти какой
Аноним 06/03/20 Птн 02:58:34 #289 №1624781 
>>1624695
И сколько такой пиздец стоит?
Аноним 06/03/20 Птн 09:50:11 #290 №1624871 
>>1624781
Да нисколько, просто ковыряю (раз в два месяц, бля), как свое дите проблемное. Насосусь хуев на настоящей работе, вечером зайду на полчасика "пофиксить" и дальше забиваю.
Аноним 06/03/20 Птн 09:51:05 #291 №1624874 
>>1624781
Хотя изначально говорили заплатят, но мне сейчас похуй
Аноним 06/03/20 Птн 15:56:24 #292 №1625086 
#define debug_print(fmt, ...) do { if (DEBUG) fprintf(stderr, fmt, __VA_ARGS__); } while (0)

Проблемный макрос. Так "debug_print("message");" - не работает, нужно указать второй аргумент - "debug_print("message", i);" - тогда пашет. Можно как-то сделать чтобы оба варианта работали?
Аноним 06/03/20 Птн 16:14:49 #293 №1625115 
>>1625086
>#define debug_print(fmt, ...) do { if (DEBUG) fprintf(stderr, fmt, ## __VA_ARGS__); } while (0)
Аноним 06/03/20 Птн 16:15:30 #294 №1625117 
>>1625115
Но это для gcc
https://gcc.gnu.org/onlinedocs/gcc/Variadic-Macros.html
Аноним 06/03/20 Птн 17:10:46 #295 №1625159 
>>1625117
Сойдет, спасибо.
Аноним 06/03/20 Птн 17:51:33 #296 №1625224 
Сап.
Вот могу я обьявить функцию так: void funk(struct a){...}

И могу так: void funk(struct &a){...}

Сама структура является указателем: typedef struct zopa
a;

Вопрос: какое из двух объявлений будет самым эффективным по памяти? Или разницы вообще нет?
Аноним 06/03/20 Птн 17:52:23 #297 №1625225 
>>1625224
Ебал я в рот эти сраные звёзды *.
Аноним 06/03/20 Птн 17:57:06 #298 №1625228 
>>1625224
Если у тебя уже
>typedef struct zopa a;
То ты нигде не должен писать funk(struct &a), а должен писать funk(a entity)
Аноним 06/03/20 Птн 18:11:14 #299 №1625246 
>>1625228
Там
>>typedef struct zopa звезда_ебаная a;
И в gcc запись &а тащит.
А чо за entity?
Аноним 06/03/20 Птн 18:26:47 #300 №1625253 
>>1625246
>>>typedef struct zopa звезда_ебаная a;
Это означает, что вместо struct zopa звезда_ебаная ты должен писать a.
>И в gcc запись &а тащит.
Ты скорее всего не понял, откуда она там взялась и что означает. В определениях функций вообще так
void funk(type &a){...}
быть не может в С. Это сиплюсплюсный синтаксис, который называется ссылкой.
>А чо за entity?
Просто слово, чтобы обозначить структуру, или переменную, или функцию. То, на что можно указать. В
int k = 4;
k будет entity, переменная типа int.
Аноним 06/03/20 Птн 18:27:56 #301 №1625254 
>>1625224
>>1625253
Вот кароч: https://ideone.com/QoA13D

>>1625228
Блин, и правда, похоже что это фишка плюсов... Но вопрос про память остается открытым
Аноним 06/03/20 Птн 18:30:14 #302 №1625256 
>>1625253
Тогда в догонку:
А можно объявить массив ф-ций?
entity a[10];
a[0] = printf;
Аноним 06/03/20 Птн 18:33:53 #303 №1625261 
>>1625256
Я плохо объяснил, что такое entity, и ты не понял. Это никакой не термин, так что просто не используй его.

Массив функций объявить нельзя, потому что функции разного размера, а массивы состоят из элементов одного размера.
Аноним 06/03/20 Птн 18:37:27 #304 №1625265 
>>1625254
>Блин, и правда, похоже что это фишка плюсов... Но вопрос про память остается открытым
Спрашивай в с++ треде, я не знаю.
Аноним 06/03/20 Птн 19:03:54 #305 №1625274 
>>1625256
Можно объявить массив указателей на функции
Аноним 06/03/20 Птн 19:36:02 #306 №1625305 
>>1625256
Функции это код, массив структура для хранения данных, так что массив функций сделать не выйдет, но можно сделать массив указателей на функции.
Аноним 06/03/20 Птн 22:00:42 #307 №1625478 
>>1625305
>>1625274
Как это можно устроить?
Аноним 06/03/20 Птн 22:05:36 #308 №1625481 
>>1625478
Зависит от функции.
Аноним 06/03/20 Птн 22:18:09 #309 №1625486 
>>1625481
Допустим обычный abs()
Аноним 06/03/20 Птн 22:30:39 #310 №1625494 
>>1625486
int (*pabs[10])(int x);
Аноним 06/03/20 Птн 22:42:12 #311 №1625504 
>>1625086
Все гениальное (и портабельное, в отличие от трюка с ##) просто: #define debug_print(/∗fmt, ∗/...) do { if (DEBUG) fprintf(stderr, __VA_ARGS__); } while (0). Найди два отличия. Алсо, if (DEBUG) плохой тон (если это не переменная, конечно), надо делать #ifdef DEBUG. Банально потому что иначе какой-нибудь компилятор может высрать тонну предупреждений про unreachable code.

Аноним 06/03/20 Птн 22:46:55 #312 №1625506 
>>1625494
Ok, попробую
Аноним 06/03/20 Птн 22:47:53 #313 №1625508 
>>1625494
А шоб разные ф-ции были? Ну та
Аноним 06/03/20 Птн 22:49:16 #314 №1625511 
>>1625508
ну там abs и inc?
Аноним 06/03/20 Птн 22:54:16 #315 №1625519 
>>1625508

массив указателей на разные функции можно, если у них одинаковые сигнатуры (типы параметров и тип результата), ну это просто следствие того, что все элемнты массива должны быть одного типа.
Аноним 06/03/20 Птн 22:59:35 #316 №1625526 
>>1625511
Самый простой способ - кастить к uintptr_t, но это формально UB. Правильный способ:
1) Ты собираешься вызывать эти функции, поэтому ты по определению знаешь их типы. И если типы разные, кладешь их в uinon:
typedef int IntFuncType(int);
typedef double DoubleFuncType(double);
typedef union { IntFuncType ∗as_int; DoubleFuncType ∗as_double; } FuncPtrType;
2) Возможно, что тебе понадобится запоминать еще и тип:
typedef struct { FuncPtrType ptr; enum { INT_FUNC, DOUBLE_FUNC } kind; } FuncPtr;
3) Ну и складываешь:
FuncPtr pointers[10];
pointers[0].ptr.as_int = abs;
pointers[0].ptr.kind = INT_FUNC;
pointers[1].ptr.as_double = fabs;
pointers[1].ptr.kind = DOUBLE_FUNC;
Разумеется, все это можно обернуть в макросы, а макросы в _Generic.
Аноним 06/03/20 Птн 23:00:53 #317 №1625527 
>>1625526
>>1625511
Ахда, никогда не делай >>1625494 так, если не хочешь, чтобы тебя проклинали. Еще ни у кого не отвалилилсь руки от одного тайпдефа.
Аноним 06/03/20 Птн 23:03:34 #318 №1625535 
>>1625527
Я люблю эзотерические объявления. Хе-хе. Но не делать, а читать.
Аноним 07/03/20 Суб 00:14:28 #319 №1625671 
err000.png
>>1625504
> Алсо, if (DEBUG) плохой тон (если это не переменная, конечно), надо делать #ifdef DEBUG
У меня так и записано, то я пример со стековерфлоу скопировал.

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

error: expected parameter name, found "/"
#define derr(/ fmt, /...) fprintf(stderr, __VA_ARGS__); stop();
Аноним 07/03/20 Суб 01:42:34 #320 №1625809 
>>1625671
> да и я такого рода запись вижу впервые
Да это обычный многострочный комментарий, лол. А ты между / и ∗ пробелов понатыкал, еще бы оно работало. Имелось в виду "убери fmt из аргументов, оставь только __VA_ARGS__", а комментарий - напоминание читающему о том, каким именно должен быть первый аргумент макроса.
Аноним 07/03/20 Суб 01:58:51 #321 №1625826 
zvezd.png
>>1625809
Ну это очень не очевидно было учитывая отображение на борде.

Способ крутой конечно, как я только сам до этого не додумался, спс.
Аноним 07/03/20 Суб 12:03:31 #322 №1626076 
>>1625826
Линукс поди. Такой-то дерьмошрифт.
Аноним 07/03/20 Суб 12:18:10 #323 №1626090 
>>1626076
Откуда вы такие лезете, блять?
Аноним 07/03/20 Суб 12:43:16 #324 №1626131 
>>1623526
1-wire - низкопроизводительная и простая хуита для датчиков, спроектированная специально чтобы иметь возможность крутиться на медленных мк; SWIM несопоставимо сложнее и быстрее.
Для 1-wire ни счетчик, ни DMA не нужны, можно отправить сигнал по гпио и сразу же брать и ебать гпио инпут регистр в цикле.
В SWIM, помимо проблемы большой частоты, еще в некоторых случаях нужно получать входной сигнал с стмки и в то же время отправлять сигнал.
Аноним 07/03/20 Суб 22:38:48 #325 №1626774 
Capture.PNG
Аноны. КАК СДЕЛАТЬ ПОДОБНЫЙ ГРАФИК НА СИ? КАКИЕ ЕСТЬ БИБЛИОТЕКИ? ЧТО ЕСТЬ? Или мне в С++ тред идти сразу?
Аноним 07/03/20 Суб 22:39:38 #326 №1626775 
>>1626774
OpenGL же

Причём просто точками и всё
Аноним 07/03/20 Суб 22:40:28 #327 №1626776 
>>1626775
всмысле просто точками, а что он линию провёл как на графике никак низя?
Аноним 07/03/20 Суб 22:41:22 #328 №1626778 
>>1626775
хоршо, спасибо большое. а можно через визуалку(визуал студио) прикрутить на сишную программу gui?
Аноним 07/03/20 Суб 22:43:34 #329 №1626783 
>>1626776
>>1626778

Я любитель, но вот как я себе это представляю

Создаёшь массив двухмерный - ссылка одномерная на блок памяти.

Там для DrawArrays надо и координаты двухмерные и массив на цвета

Создаёшь этот массив с координатами и прозрачными цветами

Потом в цикле согласно функции закрашиваешь каждую точку

Возможно есть и либы, которые это проще рисуют
Аноним 07/03/20 Суб 22:45:50 #330 №1626787 
>>1626783
>Создаёшь этот массив с координатами и прозрачными цветами

>Потом в цикле согласно функции закрашиваешь каждую точку

Пиздец нахуй.
Аноним 07/03/20 Суб 22:47:39 #331 №1626791 
>>1626787
Даже не знаю что тебе ответить. Если знаешь вариант проще, то даже лучше.
Аноним 07/03/20 Суб 22:50:10 #332 №1626796 
>>1626791
ну ладно, я так глянул open gl там впринципе можно даже 3d игры писать. помню ретурн вольф на нём был. ладно, спасибо. щас пойду осваивать.

а можно gui формы через визуалку на си программу прилепить чтобы она консольный вид не имела?
Аноним 07/03/20 Суб 22:53:22 #333 №1626800 
>>1626796
>а можно gui формы через визуалку на си программу прилепить чтобы она консольный вид не имела?


Можно, я использую glut, он для создания окна, он значительно проще прикручивания окна для винды, просто текста меньше.

GLFW альтернатива, я её ещё пока не использовал, но англ сайтах пишут, что она круче glut
Аноним 07/03/20 Суб 22:55:18 #334 №1626804 
>>1626800
Да, для тебя GLFW будет даже лучше, ща гялнул, там намного проще даже glut
Аноним 07/03/20 Суб 22:56:19 #335 №1626807 
>>1626800
>>1626804
спасибо огромное понел. анон, а вот то что я на opengl напишу, это на том компьютере где оно будет запускаться должен быть он установлен да?
Аноним 07/03/20 Суб 22:57:26 #336 №1626808 
>>1626774
https://github.com/google/skia/blob/master/experimental/c-api-example/c.md
Но да, с GUI у сишки все традиционно хуево. Если у тебя винда, можешь на Windows API нарисовать, это относительно просто. Можешь вообще осилить слинковаться с gnuplot.

>>1626800
> я использую glut
> GLFW альтернатива, я её ещё пока не использовал
Как там в 2000х?

>>1626796
> а можно gui формы через визуалку на си программу прилепит
Создаешь .rc-файл, рисуешь диалог, потом DialogBoxParam, все.
Аноним 07/03/20 Суб 22:58:06 #337 №1626809 
>>1626807
>это на том компьютере где оно будет запускаться должен быть он установлен да

Он в венде есть по умолчанию, только подключение Lib GLFW потребуется - скачать и подключить

>>1626808
>Как там в 2000х?

Напиши альтернативы, я сам не знаю.
Аноним 07/03/20 Суб 23:03:07 #338 №1626814 
>>1626808
>>1626808
спасибо анон. два винда у меня, и использоваться она будет под окнам.
Аноним 07/03/20 Суб 23:06:56 #339 №1626816 
>>1626809
> я сам не знаю.
Ты сам написал - glfw. Но рисовать на OpenGL двадэ графики линиями это такое себе. Например, glLineWidth уже овердохуя лет как "сломана" в не-legacy контекстах.

>>1626814
Если тебе на один раз - рисуй через GDI и не еби себе мозг. Примеров в сети овердохуя. Вот рандомный: http://www.cplusplus.com/forum/windows/227328/
Аноним 07/03/20 Суб 23:08:52 #340 №1626817 
>>1626816
>Но рисовать на OpenGL двадэ графики линиями это такое себе

Точками же, это с моей точки зрения максимально просто и понятно.

Я просто с 2013 на freeglut и удивлён чего это его все так поносят. Что с ним не так, кроме старости?
Аноним 07/03/20 Суб 23:11:35 #341 №1626821 
>>1626816
это для 2д графиики лучше подойдёт?
Аноним 07/03/20 Суб 23:11:57 #342 №1626822 
>>1626817
Контекст у тебя какой? 2.1? glBegin/glMatrixMode и вот это все? А так, хуже glut только aux, а с glfw работать приятно, он для людей.
Аноним 07/03/20 Суб 23:12:57 #343 №1626824 
>>1626816
Анон, может мне лучше на с++ написать её тогда раз Си с графикой не дружит?
Аноним 07/03/20 Суб 23:16:13 #344 №1626829 
>>1626822
>Контекст у тебя какой? 2.1?

Хы, да.

>glBegin/glMatrixMode и вот это все?

Нет, glDrawElements или glDrawArrays

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

Управление, да, но решение нашёл.

Однако я нашёл LearnOpenGL, так что скорее всего перекачусь на него, потому что я малость повоевал и сделал свой аналог дельты.
Аноним 08/03/20 Вск 00:37:22 #345 №1626954 
>>1626774
https://github.com/vurtun/nuklear/wiki/Chart
Аноним 08/03/20 Вск 02:29:21 #346 №1626994 
>>1626824

используй sdl2 и не еби вола
Аноним 08/03/20 Вск 02:55:03 #347 №1627009 
1
Аноним 08/03/20 Вск 07:20:13 #348 №1627058 
Этот тред это полный пиздец. Ебучая нейросеть
Аноним 08/03/20 Вск 07:30:47 #349 №1627059 
>>1627058
Что тебе не нравится? Собираем массивы фукций, со дня на день уже ООП прикрутим.
Аноним 08/03/20 Вск 17:43:36 #350 №1627632 
>>1626824
Этот товарищ тебе тоже не особо поможет.
Хочешь просто - пиши на шарпах, даже не придется другую IDE качать.
Аноним 08/03/20 Вск 20:30:27 #351 №1627875 
>>1627632
шарпы мне не нужны, спасибо.
Аноним 08/03/20 Вск 20:30:58 #352 №1627877 
>>1627632
да я вот сомтрю в визуалке есть gui для c++ его заюзать может?
Аноним 08/03/20 Вск 21:04:09 #353 №1627922 
>>1627632
Этот товарищ уже посоветовал Skia и GDI из Windows API. С тех пор график уже можно было десять раз нарисовать.
Аноним 08/03/20 Вск 21:06:33 #354 №1627926 
>>1627922
Я уже изучаю. спасибо, анчоусы. решил что буду на с++ писать использую gui от визуалки.
Аноним 08/03/20 Вск 22:51:45 #355 №1628028 
>>1627922
>>Этот товарищ
В смысле с++ ему не поможет.

>>1627926
Ты хотел просто нарисовать, я тебе про шарпы говорю про той причине, что там есть в коробке, например, Chart - подавай массив точек в него и у тебя уже будет нарисован график, который тебе конструктор форм в два клика сделает.
Но ты сам выбрал писать всю логику заново на плюсовом гуе, где это более заебно.
Аноним 08/03/20 Вск 23:42:32 #356 №1628094 
>>1610764 (OP)
Напомните кто-нибудь, как быстро и наиболее эффективно, посчитать количество единичных бит в байте?
Что-то вроде:
>n = (n>>1)&0x55 + (n&0x55);
но это не то...
Аноним 08/03/20 Вск 23:43:48 #357 №1628097 
>>1628094
https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetNaive и далие
Аноним 08/03/20 Вск 23:44:01 #358 №1628099 
>>1628094
>посчитать количество единичных бит в байте?
Циклом, ну или портянкой if'ов
Аноним 08/03/20 Вск 23:47:25 #359 №1628103 
Попас
Аноним 08/03/20 Вск 23:57:46 #360 №1628118 
>>1628094
((a & (1 << 0)) >> 0) + ((a & (1 << 1)) >> 1) + ((a & (1 << 2)) >> 2) + ((a & 1 << 3)) >> 3) + ((a & (1 << 4)) >> 4) + ((a & (1 << 5)) >> 5) + ((a & (1 << 6)) >> 6) + ((a & (1 << 7)) >> 7)
Аноним 09/03/20 Пнд 00:00:38 #361 №1628125 
>>1628097
Оно каждый бит считает.
>>1628099
Пффф, ещё лучше.

Вот, нашёл, на хабре - в три инструкции:
https://habr.com/ru/post/276957/
>n = ((n>>1) & 0x55) + (n & 0x55);
>n = ((n>>2) & 0x33) + (n & 0x33);
>n = ((n>>4) & 0x0F) + (n & 0x0F);
Есть чё нить более эффективное для произвольных длин?
Скажем, задача, подсчитать количество единичных бит в большом - байтовом массиве.
Аноним 09/03/20 Пнд 00:00:43 #362 №1628126 
>>1628118
Уж лучше тогда цикл. По крайней мере, развернуть его компилятор и сам может. И даже на popcnt осилит заменить.
Аноним 09/03/20 Пнд 00:02:07 #363 №1628128 
>>1628125
> Оно каждый бит считает.
Лолшто? Каждый бит - это sizeof(n) * CHAR_BIT.
Аноним 09/03/20 Пнд 00:05:58 #364 №1628134 
>>1628118
a = 100; //1100100, (3 ones)
result = 2.
Аноним 09/03/20 Пнд 00:16:51 #365 №1628144 
>>1628128
Я имел в виду, что оно каждый бит пробегает: https://rextester.com/IAXZKO9143 , а потом складывает.
8 итераций цикла для числа 255
Аноним 09/03/20 Пнд 00:21:31 #366 №1628147 
>>1628144
Там ниже ускоренные варианты есть. Правильное решение такое: тестить в рантайме, есть ли popcnt, и если он есть, юзать его (лучше интринсиком, но можно и ассемблерной вставкой), а на случай, если нету, сделать лукап-табличку (которая тоже есть и по моей ссылке, и по твоей на хабре) для байта и бегать по ней.
Аноним 09/03/20 Пнд 00:30:15 #367 №1628154 
>>1628147
Благодарочка.
Аноним 09/03/20 Пнд 04:37:46 #368 №1628225 
>>1610764 (OP)
Аноны поясните вот этот эффект

>>405430
>>405476
>>405477

Почему там не получается без volatile?
Аноним 09/03/20 Пнд 04:39:28 #369 №1628227 
>>1628225
https://2ch.hk/ra/res/298779.html#405430
Аноним 09/03/20 Пнд 04:49:57 #370 №1628228 
>>1628227
Потому что компилятор соптимизировал твою it нахуй в while(it). Программа может туда попасть из while(1) только если it==1, никаких других действий между этими моментами нет, значит it всё ещё равно 1.
Аноним 09/03/20 Пнд 04:58:04 #371 №1628230 
>>1628228
Есть прерывание.
Аноним 09/03/20 Пнд 05:14:14 #372 №1628235 
>>1628230
Оно в коде меняет значение it?
Аноним 09/03/20 Пнд 05:15:37 #373 №1628236 
>>1628235
Да. Там же второй скрин.
Аноним 09/03/20 Пнд 05:47:36 #374 №1628243 
>>1628236
Поигрался с фоагами и компиляторами на https://godbolt.org, не нашёл такой комбинации, которая оставляла бы первую проверку и съедала бы вторую. Но всё равно считаю, что такое возможно и именно это происходит.
Аноним 09/03/20 Пнд 05:55:37 #375 №1628244 
>>1628243
Оно не оставляет первую проверку (ну как я понял из вопроса). Оно не смотря на то, что переменная изменяется, считает ее неизменяемой и равной 0. Видит while и просто ебашит while(true);

Судя по описанию.
Аноним 09/03/20 Пнд 05:58:37 #376 №1628245 
>>1628244
Я так понял, у него в нужный момент он мигает, а вот потом уже не пищит, или что он там задумал сделать после while(it);
Аноним 09/03/20 Пнд 06:13:54 #377 №1628250 
>>1628245
Вот сгенерил тебе пример на AVR, т.к. по себе знаю он такой же херней страдает.

https://godbolt.org/z/7j5vTU

Асм там довольно человекочитаемый.

>Я так понял, у него в нужный момент он мигает, а вот потом уже не пищит, или что он там задумал сделать после while(it);

Да я протупил. У него действие 2 должно дрочится пока кнопку не нажмет.

Аноним 09/03/20 Пнд 06:21:32 #378 №1628252 
>>1628250
К слову сгенерилось не такое же, но похожее - первый раз проверка i выполняется, а потом оно тупо подвисает.

Причем если выполнено i - подвисает дроча do_something
А если не выполнено - будет до посинения дрочить do_something_else

Т.е. код генерится в:

if(i) {
do_something_else++;
while(1);
}
else {
while(1) do_something++;
}
Аноним 09/03/20 Пнд 06:24:16 #379 №1628253 
>>1628252
Небыстрофикс.

Если выполнено i - один раз выполнит do_something и зависнет.
Если не выполнено - до посинения дрочит do_something_else

if(i) {
do_something++;
while(1);
}
else {
while(1) do_something_else++;
}
Аноним 09/03/20 Пнд 09:07:48 #380 №1628270 
>>1628094>>1628097>>1628099>>1628118>>1628125>>1628128>>1628134>>1628144>>1628147>>1628154

Заебенил вот такую шнягу, на C#, правда, а не на шланге: https://rextester.com/XMF85756
Зато хорошо откомментировал. Кому надо - забирайте, хуитка считает биты не более чем за 4 итерации.
Аноним 09/03/20 Пнд 14:11:28 #381 №1628497 
>>1628270
Словил кринжульки-танцульки с этого кривого английского вкатывальщика
Аноним 09/03/20 Пнд 16:56:58 #382 №1628646 
>>1628270
>не более чем за 4 итерации.
И в чём выигрыш и эффективность? Ты делаешь кучу операций за итерацию, плюс к этому сверху полируешь это всё умножением (которое, в принципе, можно заменить на iterations << 1). Я чёт очень сильно сомневаюсь, что это эффективней, чем просто в цикле проверять пока в байте есть единицы.

Аноним 09/03/20 Пнд 17:12:12 #383 №1628657 
>>1628094
https://docs.microsoft.com/en-us/cpp/intrinsics/popcnt16-popcnt-popcnt64
Аноним 10/03/20 Втр 02:04:36 #384 №1629149 
iHRiGfZZvc.jpg
Двач, помогай
Недавно решил в катиться в си, но столкнулся с проблемой что мне нужно указывать в этих скобках число большее единицы
Может есть какая нибудь фича чтобы не писать каждый раз по 20 раз "++"?
Аноним 10/03/20 Втр 02:08:48 #385 №1629150 
>>1629149
++far это сахар для far+=1
так что пиши far+=20
Аноним 10/03/20 Втр 03:12:01 #386 №1629176 
>>1628657
Элитная программа, работает только у каждого второго.
Аноним 10/03/20 Втр 11:59:52 #387 №1629303 
>>1629149
>>1629150

Там вообще можно любой стейтмент, можешь даже несколько - через запятую, если долбоёб и ненавидишь читающего код
sageАноним 10/03/20 Втр 12:28:30 #388 №1629326 
>>1629150
far=far+20, забытые технологии древних.
Аноним 10/03/20 Втр 13:19:56 #389 №1629369 
>>1629326
Двачую, хотел написать.
Аноним 10/03/20 Втр 17:20:18 #390 №1629533 
есть список списков на питоне
[ [123, 34543, 3454, 'str'],
[3453, 43534, 345, 'str'],
]
как мне создать подобную структуру на си
типо знаю про существование стурктур, enum, union, но всё ли ето вместе использовать мне.
типо
https://pastebin.com/KXQ3iAmf
нужна подсказка как сделать многомерный mixed array
Аноним 10/03/20 Втр 17:36:41 #391 №1629541 
>>1629533

void* твой друг для разнородной херни.
Но в твоём примере, вроде, обычный массив структур, тока ты скобки квадратные забыл после объявления там.
Аноним 10/03/20 Втр 21:53:16 #392 №1629674 
>>1629541
Правильно ли я сделал? И теперь чтобы инициализацию сделать мне надо типо конструктора написать? типо что куда ложить? Блет надо снова перечить справку в кернигана
https://pastebin.com/EY244Dnu
Руководствовался этим
https://stackoverflow.com/questions/18577404/how-can-mixed-data-types-int-float-char-etc-be-stored-in-an-array
Аноним 10/03/20 Втр 23:20:26 #393 №1629729 
А main без return - это UB или нет? А то в тьюториалах пишут, а меня чего-то передергивает.
Аноним 10/03/20 Втр 23:45:12 #394 №1629740 
>>1629674
Если тебе надо, чтобы в одной ячейке массива хранилось несколько типов, то тебе надо использовать массив структур Скорей всего это тебе и нужно , например:
https://godbolt.org/z/4c7UXh

Если тебе надо разные ячейки массива интерпретировать как разные типы, то нужно использовать, то что ты нашёл на стаке. Но ты походу не так понял, судя из твоего примера. Я пофиксил твой пример. https://godbolt.org/z/YTzSzG
Тут сложно в тексте объяснить, короче говоря, ты с помощью enum константы определяешь тип данных который хранится в определённой ячейке и соответствующим образом её обрабатываешь.
Аноним 11/03/20 Срд 00:33:15 #395 №1629776 
>>1610892
Аноним 11/03/20 Срд 03:39:37 #396 №1629831 
1
Аноним 11/03/20 Срд 04:00:51 #397 №1629838 
>>1629740
Массив союзов ему нужен и доступ по указателю. Ты хуйню не оптимальную предлагаешь какую то.

typedef union{
void addr;
uint32_t
as_int;
char* as_string;
}my_union;

my_union array_of_unions[16];
Аноним 11/03/20 Срд 05:08:42 #398 №1629851 
>>1629838

два чаю
можно ещё добавить енум тэга содержимого.
Аноним 11/03/20 Срд 05:24:15 #399 №1629852 
Господа сишники, кто нибудь прогал с libusb? Никак не могу найти функцию, которая бы отправляла данные на мышку, которая, в свою очередь, меняла бы цвет.
Эти дескрипторы для всех девайсов почти одинаковые, есть хотя бы мысль на что смотреть? На endpoint, али как?
Аноним 11/03/20 Срд 05:55:09 #400 №1629857 
>>1629838
>>1629851
Там макаба указатели сожрало.

Короче вся хуйня должна быть указателями.
Хранить в союзе указатель и данные это какая то ворошиловская стрельба по коленам.
Аноним 11/03/20 Срд 06:37:05 #401 №1629863 
>>1629852
А мышка может? Я вот только вчера пробовал моргать светодиодом CapsLock и вычитал что на USB для этого каждый производитель каждой клавиатуры должен делать поддержку специальной залупы, на которую понятно, все хуй клали и в итоге нигде не работает.
Аноним 11/03/20 Срд 10:10:20 #402 №1629932 
>>1629852
> которая, в свою очередь, меняла бы цвет
И не надейся. Нестандартная хуйня, может реализовываться кучей разных способов, особенно в программируемых игровых мышах (там вообще пиздец). Возьми USB сниффер любой и посмотри, как родное приложение делает.

>>1629863
> все хуй клали и в итоге нигде не работает
Чо, правда? Оно еще в 1.1 было, и везде работает. Попробуй вот так проверить: https://pastebin.com/raw/q082MYZk А вот напрямую переключить у тебя не получится, потому что винда (если у тебя винда) запрещает без дров работать с системными устройствами ввода.
Аноним 11/03/20 Срд 10:13:23 #403 №1629937 
>>1629932
Как написать драйвера?
Аноним 11/03/20 Срд 10:17:33 #404 №1629939 
>>1629937
Для капслока? Нахуй? Я имел в виду, что напрямую через libwinusb клавиатурой управлять не получится. А чтобы просто поморгать не влияя на ввод, существует IOCTL_KEYBOARD_SET_INDICATORS.
Аноним 11/03/20 Срд 10:20:29 #405 №1629940 
>>1629939
Хочу управлять клавиатурой, как ahk, только стандалон.
Аноним 11/03/20 Срд 10:21:27 #406 №1629941 
>>1629940
Я не знаю, как ahk. Но судя по названию, тебе SendInput нужен.
Аноним 11/03/20 Срд 10:23:06 #407 №1629944 
>>1629941
Ладно, хорошо, спасибо.
Аноним 11/03/20 Срд 13:11:11 #408 №1630052 
>>1629729
После C99, и в C++, return 0 можно не писать. До этого хз, возможно не UB а implementation defined.
sageАноним 11/03/20 Срд 13:17:09 #409 №1630059 
>>1629932
> может реализовываться кучей разных способов, особенно в программируемых игровых мышах
Спасибо за совет со сниффером, теперь мне более понятно, какие байты за что отвечают при передаче данных на мышь.

Теперь самое интересное, через какую функцию передаются RAW данные в libusb. libusb_fill_bulk_transfer() может?

http://libusb.sourceforge.net/api-1.0/group__libusb__asyncio.html#gad4ddb1a5c6c7fefc979a44d7300b95d7
sageАноним 11/03/20 Срд 13:18:20 #410 №1630062 
image.png
>>1630059
>>1629932
Вот эти байтики.
Аноним 11/03/20 Срд 14:56:14 #411 №1630178 
>>1630062
А теперь внимательно посмотри на три строчки ниже. Поэтому нет, тебе нужен control transfer, а не bulk. И да, если эта хуйня через set report работает, то это совсем даже не костыль.
Аноним 11/03/20 Срд 15:45:54 #412 №1630221 
>>1630178
Я не могу найти функцию set report в libusb, попробуй найти сам в доках. Я сам склоняюсь к control transfer, но будет ли это работать, хуй знает.
Аноним 11/03/20 Срд 16:45:36 #413 №1630264 
>>1630221
Set report - это запрос из спецификации HID. Вот тут посмотри: https://www.usb.org/sites/default/files/documents/hid1_11.pdf (страница 62). И оттуда же:
> Feature and Output reports must be initiated by the host via the Control pipe or an optional Interrupt Out pipe.
Я бы на твоем месте хоть краем глаза, но просмотрел спеку целиком.
sageАноним 12/03/20 Чтв 01:16:48 #414 №1630647 
>>1630264
Спасибо за помощь :)

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

Теперь можно будет прихуярить что-нибудь для изменения DPI и можно прикрутить GUI ко всему этому, с ползунками :)
Аноним 12/03/20 Чтв 12:12:01 #415 №1630887 

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

Интересно, но вот от примеров кода глаза вытекают, особенно шокирует предложение в некоторых случаях для краткости не использовать фигурные скобки, что ещё больше усложняет процесс чтения кода.
Аноним 12/03/20 Чтв 12:50:29 #416 №1630944 
1.png
>>1630887
> не использовать фигурные скобки, что ещё больше усложняет процесс чтения кода
Программистам на питоне расскажи. Фигурные скобки используют постоянно не потому, что читаемее, а потому, что можно случайно сделать пикрил. Конечно, если бы все люди пользовались IDE, проблемы бы не возникало, но вот когда у тебя обычный текстовый редактор, то при попытке дописать второй стейтмент, тебе нужно самому не забыть поставить скобки, а не забыв, еще и курсором побегать туда-сюда. Проще поставить заранее.
Аноним 12/03/20 Чтв 12:57:57 #417 №1630954 
>>1630887
Вот бы в сишечку контроль отсутпов... ммммммм
Аноним 12/03/20 Чтв 13:04:06 #418 №1630961 
>>1630944
>но вот когда у тебя обычный текстовый редактор

Ах линуксоиды!

Ну ничего! Есть же всякие геану и прочия редакторы!

Кстати, я в основном использую 2010 ВС, там нету такого, чтобы что-то автоматом подставлялось, я как автомат всё делаю, а вот в 2019 уже это дело есть, удобно.

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

Так же удивляет, что почему-то в С++ при обучении тыкают в лицо cin и cout, когда есть более удобный и логичный printf, странно.

Ну и блядские строки символов вместо string, ммммм, чуть что не так и исключение.

>>1630954
Смотря на чём писать, я просто забил и проверяю на ВС 2010, мне сойдёт.
Аноним 12/03/20 Чтв 13:51:00 #419 №1630992 
1584010259961.png
>>1630944
Статические анализаторы такое ловят тащемта
Аноним 12/03/20 Чтв 15:22:11 #420 №1631058 
>>1630961
>Так же удивляет, что почему-то в С++ при обучении тыкают в лицо cin и cout, когда есть более удобный и логичный printf, странно.
printf это си, а не плюсы, он не понимает классы. А еще printf это целое минное поле подводных камней почитай википедию, страшнее
>Ну и блядские строки символов, ммммм, чуть что не так и исключение.
строк. А плюсы и классы сделаны как раз для избежания подобного. Так что в плюсах преподают потоки совершенно правильно.
Аноним 12/03/20 Чтв 16:05:24 #421 №1631129 
Анон который пару тредов назад кидал скрин Ваткома с отладкой со значениями переменных как это настроить?
Аноним 12/03/20 Чтв 16:07:47 #422 №1631135 
>>1631058
> это целое минное поле подводных камней
Да хотя бы одно только то, что параметры форматирования у потоков перманентые, сразу нахуй перекрывает все очевидные неудобства printf. Какая-нибудь говнолиба сделает cout << hex , а обратно вернуть забудет, а потом ты такой cout << 120, и все нахуй взрывается, потому что на выходе не 120, а очень даже 78.
Аноним 12/03/20 Чтв 16:16:27 #423 №1631143 
>>1631135
Манюнь, ты пишешь какую то дичь, а вот от принтфов повзрывалось буквально программ на миллиарды.
Аноним 12/03/20 Чтв 16:18:35 #424 №1631144 
>>1631135
Интересная информация, но не относится к сказанному, да и даже если пиздеть на эту отвлеченную тему, неправильный вывод это не UB и чтение не той памяти.
Аноним 12/03/20 Чтв 16:42:32 #425 №1631159 
>>1631144
> чтение не той памяти
Для этого крестопотоки не нужны. Достаточно было просто не пихать пользовательский ввод первым аргументом.
Аноним 12/03/20 Чтв 17:02:51 #426 №1631171 
>>1629838
на помню шо хочу сделать подобный список списков на питоне
[ [123, 34543, 3454, "str"],
[3453, 43534, 345, "str"],
]
Я не правильно инициализирую числа, строка записывается, у меня каша от юнионов структур и перечислений, юнионы где то читал шо такая же структура только ссылается на один участок памяти
https://godbolt.org/z/ChrHYE
Аноним 12/03/20 Чтв 17:08:54 #427 №1631175 
>>1631171
Заебал. Тебе уже написали, что тебе нужна структура, а юнионы тебе не нужны. Юнионы тебе понадобятся, когда ты захочешь, чтобы любой элемент мог быть любого типа.
Аноним 12/03/20 Чтв 17:12:34 #428 №1631177 
>>1631175
еще раз ветку перечитал, вроде понел, спасибо анон
Аноним 12/03/20 Чтв 19:10:58 #429 №1631249 
>>1630992
Такое и гцц ловит, даже анализаторов не нужно.
Аноним 12/03/20 Чтв 20:09:30 #430 №1631294 
>>1631249
Такое нужно специально писать ради троллинга. А остальные шероховатости решаются автоформатированием в студии по нажатию пары кнопок.
Аноним 12/03/20 Чтв 20:12:54 #431 №1631302 
image.png
начиная с какого стандарта си позволяет так инициализировать поля структуры по имени?
Аноним 12/03/20 Чтв 20:15:17 #432 №1631310 
Стикер
>>1631302
>структура
>as_int, as_string
Аноним 12/03/20 Чтв 20:27:54 #433 №1631324 
>>1631294
> 2к20
> студия
Аноним 12/03/20 Чтв 20:29:00 #434 №1631327 
>>1631324
Студия последняя как раз ультрагоднота и мастхэв.
Аноним 12/03/20 Чтв 20:40:14 #435 №1631344 
>>1631327
Vs code, dude.
Аноним 12/03/20 Чтв 20:51:21 #436 №1631357 
>>1631249
Каким образом? Сейчас проверяю, 0 варнингов
Аноним 12/03/20 Чтв 20:57:37 #437 №1631366 
Хорошие ресурсы по векторизации в gcc?
Атрибуты на выравнивание, интрины, терминология (фетчи, перфетчи, етц.).
Уклон скорее в понимание, чем именно в гцц.
Аноним 12/03/20 Чтв 20:59:23 #438 №1631372 
>>1631058
Да, только что сам подорвался, беру свои слова обратно. Впрочем, я итак использую cout и cin, printf мне показался удобным.
Аноним 12/03/20 Чтв 21:00:28 #439 №1631375 
>>1631357
Ты -Wall-то включил?
Аноним 12/03/20 Чтв 21:55:22 #440 №1631435 
>>1631302
>начиная с какого стандарта
C99
Аноним 12/03/20 Чтв 22:34:46 #441 №1631473 
for (int i = 0; 1; ++i)
printf("E\n");

вот здесь что сперва происходит printf или ++i. По-моему printf я так понял что ++i делается после каждого выполнения тела цикла. Я прав?
Аноним 12/03/20 Чтв 22:39:49 #442 №1631492 
image.png
>>1631473
Аноним 12/03/20 Чтв 22:43:06 #443 №1631503 
>>1631492
выполняем выражения это я так понимаю тело цикла выполняется, а потом уже count да? спасибо за баивую картиночку, понял.
Аноним 12/03/20 Чтв 22:59:31 #444 №1631552 
Зачем вы вкатываетесь в си в 2020-ом году?
Аноним 12/03/20 Чтв 23:01:24 #445 №1631556 
>>1631552
Драйвера писать.
Аноним 12/03/20 Чтв 23:04:31 #446 №1631560 
>>1631556
Я выучил СИ, как мне писать драйвера?
Аноним 12/03/20 Чтв 23:05:09 #447 №1631561 
А зачем Enum нужен я так и не понял. Читаю книжку из оп поста на английском и мой аннглийский не такой хороший чтобы хорошо там всё понимать.
Аноним 12/03/20 Чтв 23:10:15 #448 №1631569 
>>1631344
чо qt creator и codeblocks в помойку? даже vim?
Аноним 12/03/20 Чтв 23:12:14 #449 №1631574 
>>1631560
Это только часть того, что нужно знать.
Аноним 12/03/20 Чтв 23:13:43 #450 №1631577 
>>1631569
> qt creator
Нахуй.
> codeblocks
Студентикам норм
> vim
Для линуксобольных пердоликов.
Аноним 12/03/20 Чтв 23:13:55 #451 №1631578 
>>1631574
Что дальше учить?
Аноним 12/03/20 Чтв 23:14:44 #452 №1631583 
>>1631578
Устройства, протоколы.
Аноним 12/03/20 Чтв 23:16:40 #453 №1631585 
>>1631583
Есть книги по устройствам и протоколам? Дай гайды, молю.
Аноним 12/03/20 Чтв 23:18:28 #454 №1631587 
>>1631585
Нет, только документация.
Аноним 12/03/20 Чтв 23:19:05 #455 №1631590 
>>1631587
Как научиться читать документацию по устройствам и протоколам?
Аноним 12/03/20 Чтв 23:19:45 #456 №1631592 
>>1631590
Что у тебя не получается?
Аноним 12/03/20 Чтв 23:20:51 #457 №1631595 
>>1631592
Я не знаю. Я ещё ничего даже не открывал. Ну просто я помню по программированию что документацию сложно читать если у тебя отсуствует представление об этом.
Аноним 12/03/20 Чтв 23:27:55 #458 №1631597 
>>1631595
Получи представление тогда.
Аноним 13/03/20 Птн 01:08:55 #459 №1631754 
>>1631577
Щяс потыкал, да согласен, лёгким движением мышки всё настраивается, но чому оно на електроне то?
Аноним 13/03/20 Птн 05:55:33 #460 №1631849 
>>1631754
Тому, что на пердоликсах из графических интерфейсов только браузер.
Аноним 13/03/20 Птн 06:55:05 #461 №1631857 
>>1631569
Qt Creator официальный редактор, конечно ты должен в него, если собираешься серьезно заниматься Qt
Codeblocks и Geany обычные хорошие IDE, если ты хочешь гуй
Vim и VStudio для поехавших задротов, проще поставить имакс со всеми фишками из коробки и не ебать мозг
Аноним 13/03/20 Птн 08:56:03 #462 №1631883 
>>1631129
Бамп
Аноним 13/03/20 Птн 09:34:57 #463 №1631891 
>>1631569
Что это? Зачем они нужны?
Аноним 13/03/20 Птн 10:18:24 #464 №1631905 
>>1631891
Ребенок, а что было нужно до появления вскода, подарка от майкрософт? Он же только недавно вышел.
sageАноним 13/03/20 Птн 10:32:36 #465 №1631909 
Qt creator пиздатая ide, не надо тут.
Аноним 13/03/20 Птн 10:40:11 #466 №1631913 
>>1631905
Саблим.
Аноним 13/03/20 Птн 11:21:38 #467 №1631925 
>>1631913
Разговор вроде про иде, которые понимают код, а не текстовые редакторы.
>>1631909
Позвони когда Qt станет стандартом. Никогда, ведь в юниксах только консолька стандарт, остальное васянские поделки, никому не нужные.
Аноним 13/03/20 Птн 11:23:55 #468 №1631928 
>>1631925
>иде, которые понимают код,
Самосознание ИИ пока не завезли.
Аноним 13/03/20 Птн 14:47:05 #469 №1632089 
>>1631344
CodeLite, мне норм.
Аноним 13/03/20 Птн 15:37:16 #470 №1632143 
>>1631569
блят зря я вброс сделал, сорян аноны
Аноним 13/03/20 Птн 21:49:55 #471 №1632461 
Пиздец, этот тред просто мертв. На 10 перекатов выше 90% одни шизостуденты, троечники и просто полнейшие уебки, какой-то долбоеб спрашивает блин пачиму в кристах заставляют в паток писать када можна писать чуть более высокоуровневой обёрткой для потока из сишки!!)) другой дегенерат ему ниже отвечает ахах ну ты дурееень классооов-то неееет!!))) Спасибо школе 21 за это
Аноним 13/03/20 Птн 21:51:38 #472 №1632463 
>>1632461
Что должно по-твоему в этом треде происходить? Новости по сишке обсуждать?
Аноним 13/03/20 Птн 21:57:14 #473 №1632471 
>>1632463
Открой треды хотя бы двухгодичной давности, там ещё были адекваты, а посты вроде Я ПОЛЬЗУЮСЬ ВСКОД А ТЫ.. или ЗАЧЕМ НУЖЫН СТРУКТ просто игнорировались
Аноним 13/03/20 Птн 22:00:15 #474 №1632475 
>>1632471
Практика показала, что адекватам здесь скучно, и они все свалили. А игнорировать посты тебе и сейчас никто не запрещает.
Аноним 13/03/20 Птн 22:12:23 #475 №1632486 
>>1632463
>>1632471
Ну давайте новости обсудим. Кто уже успел поиграть в [[скобочки]]? Что сказала о [[скобочках]] ваша IDE? Как вы думаете, через сколько лет можно будет писать код со [[скобочками]] и ожидать, что он соберется не только в гцц?
Аноним 13/03/20 Птн 23:22:22 #476 №1632533 
>>1632471
Что ты до вскода доебался? Там обсуждали серьезную проблему выравнивания кода в ифах. Я считаю что статический анализ надежнее, чем как кто то предложил что студия сама везде скобочки расставит.
Аноним 14/03/20 Суб 01:38:04 #477 №1632597 
>>1629149
ты ебанулся?
Аноним 14/03/20 Суб 06:39:35 #478 №1632626 
>>1632533
Не пойму твоих рассуждений. Вот в студии можно нажать кнопочку и работает, а еще там решарпер есть сверху. А что такое "статический анализ"? Гдн это, что нажать? В перде? Извините, не надо такое.
Аноним 14/03/20 Суб 11:15:50 #479 №1632665 
>>1632626
> А что такое "статический анализ"?
Это когда компилятор вместо компиляции или параллельно с ней внимательно смотрит на исходник и говорит, что код говно, и автор мудак. С пруфами, разумеется.

> Гдн это, что нажать?
cl /analyze (есть в виде кнопочки в студии), scan-build (он же clang --analyze), единорог, ну и прочие убогие цппчеки и сплинты, про которые вспоминать стыдно.
Аноним 14/03/20 Суб 11:41:57 #480 №1632674 
>>1632626
Так бы и сказал что ты писатель laba1. Забыл нажать форматирование в студии = самолет упал, кому такое нахуй надо? Анализатор настраивается один раз, запускается при каждой сборке.
Аноним 14/03/20 Суб 17:18:54 #481 №1633036 
>>1632665
>scan-build (он же clang --analyze), единорог, ну и прочие убогие цппчеки и сплинты, про которые вспоминать стыдно.
Это, что пердолить консольку, а потом глаза ломать об высер в неё же? Не понимаю, какой смысл. Покажи гифку или видео как ты этим пользуешься. А то у меня впечатление, что это всё настолько бла-бла, что на практике упоминать в конкретике.

>>1632674
Какой анализатор? Что настраивается? Давай конкретно. А пока у тебя ничего нет, только пустая брехня. Я конкретно сказал про студию и решарпер. От тебя не слышу такой же конкретики что использовать, для чего и как.
Аноним 14/03/20 Суб 17:57:07 #482 №1633065 
>>1633036
Нахуй иди школьник
Аноним 14/03/20 Суб 21:05:26 #483 №1633166 
>>1633036
> потом глаза ломать об высер в неё же
Специально для тебя оно умеет html.
Аноним 14/03/20 Суб 21:23:24 #484 №1633179 
>>1633065
Дегенерата видно издалека.

>>1633166
Умеет что?
Вроде была речь про ИДЕ, как следствие понимание редактором кода, как следствие возможность форматирование кода, а конкретно выделенного в редакторе текста по нажатию снопок.
Ну так что твой генератор простыней может и зачем нужен?
Аноним 15/03/20 Вск 00:08:34 #485 №1633359 
>>1633179
> Вроде была речь про ИДЕ, как следствие понимание редактором кода
Речь была о >>1630944 неправильно расставленных скобках. IDE умеет их авторасставлять, и на приведенном пике, когда ты bar начнешь писать, скобки у if появятся. А вот если код уже написан, или вот эта автоматическая вставка не сработала по каким-то причинам, IDE тебе больше ничем помочь не может. Между тем, в твоем коде баг. Для поиска этого и других, гораздо более хитровыебанных багов помогает статический анализ (ну и чтение кода человеками тоже, разумеется).
Аноним 15/03/20 Вск 05:15:33 #486 №1633547 
>>1633359
Скобки автоматически появляются через строчку выше из за отстцпа через строчку ниже? Занятно. У меня такого нет и если бы было, отключил. Текст должен вставляться только после текущего положения и срямо после него, а не прыгать через строчки и тем более назад, это само по сабе генератор багов. Больше похоже на питонодебила, который хочет натянуть на си свои дурные привычки, где отступы это главное, а скобки лишь следствие. Какой-то жирный троллинг в си треде. Да и вообще фича ненужной сомнительности , а развели столько разговоров.
Аноним 15/03/20 Вск 13:50:50 #487 №1633729 
Зачем ENUM в си нужен? я не понимаю. ещё бы понял если бы он список чего то содержал, так он же список констант содержит нахуй он нужен вообще?
Аноним 15/03/20 Вск 13:58:16 #488 №1633734 
>>1633729
у д а л и т ь
Аноним 15/03/20 Вск 13:58:44 #489 №1633735 
>>1633734
не понял.
Аноним 15/03/20 Вск 13:59:32 #490 №1633737 
Стикер
>>1633735
как и то, зачем enum
Аноним 15/03/20 Вск 14:01:45 #491 №1633738 
>>1633737
блять съеби нахуй с треда ёбаная тварь уже заебал своими смехуечками гнида ёбаная блядь
Аноним 15/03/20 Вск 14:02:46 #492 №1633739 
>>1633738
нет, ты
Аноним 15/03/20 Вск 14:16:07 #493 №1633741 
>>1633729
Посмотри хотя бы на (псевдо)syscall'ы
Ты можешь писать в программе OK / EXIT / CRASH с опциональными числовыми преобразованиями или тупо вговнокаживать 0 / 1 / 2 с комментами рядом, что это syscall
Структы какие-нибудь в этом случае излишни
Аноним 15/03/20 Вск 14:59:43 #494 №1633777 
>>1633729
enum необходим чтобы показать какие значения может принимать та или иная переминная и никаких других кроме тех что в Enum.
Аноним 15/03/20 Вск 15:09:18 #495 №1633791 
>>1633729
Для удобства. Забей хуй, когда в си прокачаешься до определённого уровня сам поймёшь. Enum это необязательная фича.
Аноним 15/03/20 Вск 15:09:42 #496 №1633793 
>>1633777
Так в Си же тип не проверяется? Там вроде неявный каст. enum class это только в c++11
Аноним 15/03/20 Вск 15:11:42 #497 №1633797 
>>1633793
я не знаю честно, я сказал всё что знал.
Аноним 15/03/20 Вск 15:26:51 #498 №1633802 
1561153635167.png
1470316497229.png
>>1633797
Увы.
Аноним 15/03/20 Вск 15:32:40 #499 №1633804 
>>1633802
тогда такое же назнчание как у #define
Аноним 15/03/20 Вск 15:33:07 #500 №1633805 
1509123085145.png
1582075882077.png
>>1633802
Для сравнения, в c++
Аноним 15/03/20 Вск 17:22:59 #501 №1633874 
>>1633793
Не проверяется. Никаких кастов нет, enum - это какой-нибудь сорт int (по факту всегда signed int). Но ты можешь прочитать код и увидеть, что именно ожидается.
Аноним 15/03/20 Вск 23:59:39 #502 №1634070 
0x02f шестнадцатиричное число

0x это же не элемент его? это просто индикатор что число шестанадцатиричное, так?
Аноним 16/03/20 Пнд 00:11:56 #503 №1634074 
>>1634070
Дожили. Да, так.
Аноним 16/03/20 Пнд 00:15:38 #504 №1634075 
>>1634074
я ньюфаня, на 43- странице книги k&r
Аноним 16/03/20 Пнд 00:39:25 #505 №1634081 
>>1634080 (OP)
>>1634080 (OP)
>>1634080 (OP)
>>1634080 (OP)
>>1634080 (OP)
Аноним 16/03/20 Пнд 00:41:02 #506 №1634082 
Ээээ, где моя тема? Перекат, в общем.
Аноним 16/03/20 Пнд 03:58:18 #507 №1634116 
>>1634070
Лол. На этой замечательной ноте можно закрывать тред.
Аноним 16/03/20 Пнд 18:59:52 #508 №1634496 
>>1634082
дизлайк атписка
Аноним OP 16/03/20 Пнд 19:36:43 #509 №1634510 
>>1634496
Надо хотя бы до круглого числа дотерпеть. Десять тредов осталось!
Аноним 16/03/20 Пнд 21:39:30 #510 №1634603 
>>1634510
ого, сам ОП ответил, ну я типо отписался от етого треда, а на новый канешно подписалса!
comments powered by Disqus

Отзывы и предложения