Дееба, бях потресен като го видях тва...
#define mul(x,y) (sizeof(char[x][y]))
Дееба, бях потресен като го видях тва...
#define mul(x,y) (sizeof(char[x][y]))
gat3way Дееба, бях потресен като го видях тва...
#define mul(x,y) (sizeof(char[x][y]))
Стига бе! 😂 😆 😆 😆
Бачка си бе, ама с C99, то тва е още по-забавното.
sizeof нали гарантираше да връща колко байта, независимо от размера на байта на различните платформи ?
gat3way Бачка си бе, ама с C99, то тва е още по-забавното.
хммм, вярно че можеш да правиш статичен масив с рънтайм размер, подобно на alloca
gat3way Дееба, бях потресен като го видях тва...
#define mul(x,y) (sizeof(char[x][y]))
Тва сякаш е по-извратено от Дъф дивайса, ебати кви работи им щракат в главите на хората
Дон Реба gat3way Бачка си бе, ама с C99, то тва е още по-забавното.
хммм, вярно че можеш да правиш статичен масив с рънтайм размер, подобно на alloca
Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.
gat3way Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.
Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.
johnfound Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.
Чар май и по практика и по стандарт е байт така че това го виждам като начин да се смята compile time константа като произведение на други две такива. Никога не съм бил добър по тия тъмните ъгли на Це и може да бъркам де, ако е така е забавно каква нужда е покрило, на Дъф извращението е било пърформанс оптимизация поне като го е изобретил
Евлампи така че това го виждам като начин да се смята compile time константа като произведение на други две такива.
а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи
johnfound gat3way Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.
Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.
Не е толко очевидно това, така де за Ц хората тея неща в почти всички случаи немат никакво значение, Цплюсплюсаджиите повече обръщат внимание, но то е валидно все пак и в двата случая. Ако обърнем нещата така (не е ли същото така), тогава дали изглежда като да се алокира памет все пак?
char x[a][b];
result = sizeof(x);
Обаче да де, sizeof() не е функция а некъв компилерски билтин и най-най-вероятно се сеща че нема нужда нищо да се алокира.
Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?
gat3way Ако обърнем нещата така (не е ли същото така), тогава дали изглежда като да се алокира памет все пак?
char x[a][b]; result = sizeof(x);
Не е същото щото така масива е отделен стейтмънт което може да е дефиниция (или май даже винаги е дефиниция щом няма extern), иначе е анонимен подизраз аргумент на sizeof и нищо друго
Дон Реба Евлампи така че това го виждам като начин да се смята compile time константа като произведение на други две такива.
а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи
Затова се чудя що им е трябвало освен ако не е състезание по неразгадаем код (тоя бруталния французиндето е държал рекорда по сметнати цифри на пи, автор на TinyC, QEMU, FFMpeg, JSLinux, QuickJS и куп други неща го е печелил май точно с TinyC).
Може би за някаква процедурно генерирана таблица с повече константи от некви начални стойности където не може да се ползва *
gat3way Дееба, бях потресен като го видях тва...
Междудругото откъде го видя това?
Намирам само неква изтрита тема на julialang щото било офтопик. Ебати, тука рахат, насекъде яко цензура по БЕЛИЯ свят
Евлампи Дон Реба Евлампи така че това го виждам като начин да се смята compile time константа като произведение на други две такива.
а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи
Затова се чудя що им е трябвало освен ако не е състезание по неразгадаем код (тоя бруталния французиндето е държал рекорда по сметнати цифри на пи, автор на TinyC, QEMU, FFMpeg, JSLinux, QuickJS и куп други неща го е печелил май точно с TinyC).
Може би за някаква процедурно генерирана таблица с повече константи от некви начални стойности където не може да се ползва *
Ако беше състезание за неразгадаем код, тогава дефиницията със сигурност щеше да е такава:
#define add(x,y) (sizeof(char[x][y]))
Courvoisier Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?
Бричед, опресни си знанията за "щифтовете" 😀
Delegate Courvoisier Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?
Бричед, опресни си знанията за "щифтовете" 😀
?
2 * 2 = 4 == 2 << 1 = 4
2 * 4 = 8 == 2 << 2 = 8
2 * 5 = 10 == (2 << 2) + 2 = 10
Евлампи gat3way Дееба, бях потресен като го видях тва...
Междудругото откъде го видя това?
Намирам само неква изтрита тема на julialang щото било офтопик. Ебати, тука рахат, насекъде яко цензура по БЕЛИЯ свят
Ба ли го...едно аверче ми го сподели.