gat3way
Последно редактирано на 20.08.2020 от gat3way, видяно: 1860 пъти. #5294
Дееба, бях потресен като го видях тва...
#define mul(x,y) (sizeof(char[x][y]))
johnfound
Създадено на 20.08.2020, видяно: 1857 пъти. #5295
Стига бе! 😂😆😆😆
ДонРеба
Създадено на 20.08.2020, видяно: 1845 пъти. #5296
ако беше джава щеше да бачка и рънтайм
gat3way
Създадено на 20.08.2020, видяно: 1842 пъти. #5297
Бачка си бе, ама с C99, то тва е още по-забавното.
Delegate
Създадено на 20.08.2020, видяно: 1836 пъти. #5299
sizeof нали гарантираше да връща колко байта, независимо от размера на байта на различните платформи ?
ДонРеба
Създадено на 20.08.2020, видяно: 1833 пъти. #5300
хммм, вярно че можеш да правиш статичен масив с рънтайм размер, подобно на alloca
Евлампи
Създадено на 20.08.2020, видяно: 1819 пъти. #5304
Тва сякаш е по-извратено от Дъф дивайса, ебати кви работи им щракат в главите на хората
gat3way
Създадено на 20.08.2020, видяно: 1804 пъти. #5307
Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.
johnfound
Създадено на 20.08.2020, видяно: 1794 пъти. #5309
Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.
Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.
Евлампи
Създадено на 20.08.2020, видяно: 1791 пъти. #5310
Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.
Чар май и по практика и по стандарт е байт така че това го виждам като начин да се смята compile time константа като произведение на други две такива. Никога не съм бил добър по тия тъмните ъгли на Це и може да бъркам де, ако е така е забавно каква нужда е покрило, на Дъф извращението е било пърформанс оптимизация поне като го е изобретил
ДонРеба
Създадено на 20.08.2020, видяно: 1783 пъти. #5311
така че това го виждам като начин да се смята compile time константа като произведение на други две такива.
а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи
gat3way
Създадено на 20.08.2020, видяно: 1775 пъти. #5312
Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.
Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.
Не е толко очевидно това, така де за Ц хората тея неща в почти всички случаи немат никакво значение, Цплюсплюсаджиите повече обръщат внимание, но то е валидно все пак и в двата случая. Ако обърнем нещата така (не е ли същото така), тогава дали изглежда като да се алокира памет все пак?
char x[a][b];
result = sizeof(x);
Обаче да де, sizeof() не е функция а некъв компилерски билтин и най-най-вероятно се сеща че нема нужда нищо да се алокира.
Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?
Евлампи
Създадено на 20.08.2020, видяно: 1756 пъти. #5318
Ако обърнем нещата така (не е ли същото така), тогава дали изглежда като да се алокира памет все пак?
char x[a][b];
result = sizeof(x);
Не е същото щото така масива е отделен стейтмънт което може да е дефиниция (или май даже винаги е дефиниция щом няма extern), иначе е анонимен подизраз аргумент на sizeof и нищо друго
Евлампи
Създадено на 20.08.2020, видяно: 1754 пъти. #5319
така че това го виждам като начин да се смята compile time константа като произведение на други две такива.
а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи
Затова се чудя що им е трябвало освен ако не е състезание по неразгадаем код (тоя бруталния французиндето е държал рекорда по сметнати цифри на пи, автор на TinyC, QEMU, FFMpeg, JSLinux, QuickJS и куп други неща го е печелил май точно с TinyC).
Може би за някаква процедурно генерирана таблица с повече константи от некви начални стойности където не може да се ползва *
Евлампи
Създадено на 20.08.2020, видяно: 1741 пъти. #5321
Дееба, бях потресен като го видях тва...
Междудругото откъде го видя това?
Намирам само неква изтрита тема на julialang щото било офтопик. Ебати, тука рахат, насекъде яко цензура по БЕЛИЯ свят
code2
Създадено на 20.08.2020, видяно: 1738 пъти. #5322
така че това го виждам като начин да се смята compile time константа като произведение на други две такива.
а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи
Затова се чудя що им е трябвало освен ако не е състезание по неразгадаем код (тоя бруталния французиндето е държал рекорда по сметнати цифри на пи, автор на TinyC, QEMU, FFMpeg, JSLinux, QuickJS и куп други неща го е печелил май точно с TinyC).
Може би за някаква процедурно генерирана таблица с повече константи от некви начални стойности където не може да се ползва *
Ако беше състезание за неразгадаем код, тогава дефиницията със сигурност щеше да е такава:
#define add(x,y) (sizeof(char[x][y]))
Delegate
Създадено на 20.08.2020, видяно: 1723 пъти. #5325
Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?
Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?
Бричед, опресни си знанията за "щифтовете" 😀
?
2 * 2 = 4 == 2 << 1 = 4
2 * 4 = 8 == 2 << 2 = 8
2 * 5 = 10 == (2 << 2) + 2 = 10
gat3way
Създадено на 20.08.2020, видяно: 1685 пъти. #5332
Дееба, бях потресен като го видях тва...
Междудругото откъде го видя това?
Намирам само неква изтрита тема на julialang щото било офтопик. Ебати, тука рахат, насекъде яко цензура по БЕЛИЯ свят