gat3way
Последно редактирано на 20.08.2020 от gat3way, видяно: 1884 пъти. #5294
Дееба, бях потресен като го видях тва...
#define mul(x,y) (sizeof(char[x][y]))
johnfound
Създадено на 20.08.2020, видяно: 1881 пъти. #5295
Стига бе! 😂😆😆😆
ДонРеба
Създадено на 20.08.2020, видяно: 1869 пъти. #5296
ако беше джава щеше да бачка и рънтайм
gat3way
Създадено на 20.08.2020, видяно: 1866 пъти. #5297
Бачка си бе, ама с C99, то тва е още по-забавното.
Delegate
Създадено на 20.08.2020, видяно: 1860 пъти. #5299
sizeof нали гарантираше да връща колко байта, независимо от размера на байта на различните платформи ?
ДонРеба
Създадено на 20.08.2020, видяно: 1857 пъти. #5300
хммм, вярно че можеш да правиш статичен масив с рънтайм размер, подобно на alloca
Евлампи
Създадено на 20.08.2020, видяно: 1843 пъти. #5304
Тва сякаш е по-извратено от Дъф дивайса, ебати кви работи им щракат в главите на хората
gat3way
Създадено на 20.08.2020, видяно: 1828 пъти. #5307
Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.
johnfound
Създадено на 20.08.2020, видяно: 1818 пъти. #5309
Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.
Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.
Евлампи
Създадено на 20.08.2020, видяно: 1815 пъти. #5310
Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.
Чар май и по практика и по стандарт е байт така че това го виждам като начин да се смята compile time константа като произведение на други две такива. Никога не съм бил добър по тия тъмните ъгли на Це и може да бъркам де, ако е така е забавно каква нужда е покрило, на Дъф извращението е било пърформанс оптимизация поне като го е изобретил
ДонРеба
Създадено на 20.08.2020, видяно: 1807 пъти. #5311
така че това го виждам като начин да се смята compile time константа като произведение на други две такива.
а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи
gat3way
Създадено на 20.08.2020, видяно: 1799 пъти. #5312
Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.
Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.
Не е толко очевидно това, така де за Ц хората тея неща в почти всички случаи немат никакво значение, Цплюсплюсаджиите повече обръщат внимание, но то е валидно все пак и в двата случая. Ако обърнем нещата така (не е ли същото така), тогава дали изглежда като да се алокира памет все пак?
char x[a][b];
result = sizeof(x);
Обаче да де, sizeof() не е функция а некъв компилерски билтин и най-най-вероятно се сеща че нема нужда нищо да се алокира.
Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?
Евлампи
Създадено на 20.08.2020, видяно: 1780 пъти. #5318
Ако обърнем нещата така (не е ли същото така), тогава дали изглежда като да се алокира памет все пак?
char x[a][b];
result = sizeof(x);
Не е същото щото така масива е отделен стейтмънт което може да е дефиниция (или май даже винаги е дефиниция щом няма extern), иначе е анонимен подизраз аргумент на sizeof и нищо друго
Евлампи
Създадено на 20.08.2020, видяно: 1778 пъти. #5319
така че това го виждам като начин да се смята compile time константа като произведение на други две такива.
а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи
Затова се чудя що им е трябвало освен ако не е състезание по неразгадаем код (тоя бруталния французиндето е държал рекорда по сметнати цифри на пи, автор на TinyC, QEMU, FFMpeg, JSLinux, QuickJS и куп други неща го е печелил май точно с TinyC).
Може би за някаква процедурно генерирана таблица с повече константи от некви начални стойности където не може да се ползва *
Евлампи
Създадено на 20.08.2020, видяно: 1765 пъти. #5321
Дееба, бях потресен като го видях тва...
Междудругото откъде го видя това?
Намирам само неква изтрита тема на julialang щото било офтопик. Ебати, тука рахат, насекъде яко цензура по БЕЛИЯ свят
code2
Създадено на 20.08.2020, видяно: 1762 пъти. #5322
така че това го виждам като начин да се смята compile time константа като произведение на други две такива.
а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи
Затова се чудя що им е трябвало освен ако не е състезание по неразгадаем код (тоя бруталния французиндето е държал рекорда по сметнати цифри на пи, автор на TinyC, QEMU, FFMpeg, JSLinux, QuickJS и куп други неща го е печелил май точно с TinyC).
Може би за някаква процедурно генерирана таблица с повече константи от некви начални стойности където не може да се ползва *
Ако беше състезание за неразгадаем код, тогава дефиницията със сигурност щеше да е такава:
#define add(x,y) (sizeof(char[x][y]))
Delegate
Създадено на 20.08.2020, видяно: 1747 пъти. #5325
Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?
Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?
Бричед, опресни си знанията за "щифтовете" 😀
?
2 * 2 = 4 == 2 << 1 = 4
2 * 4 = 8 == 2 << 2 = 8
2 * 5 = 10 == (2 << 2) + 2 = 10
gat3way
Създадено на 20.08.2020, видяно: 1709 пъти. #5332
Дееба, бях потресен като го видях тва...
Междудругото откъде го видя това?
Намирам само неква изтрита тема на julialang щото било офтопик. Ебати, тука рахат, насекъде яко цензура по БЕЛИЯ свят