gat3way
Последно редактирано на 20.08.2020 от gat3way, видяно: 1861 пъти. #5294
Дееба, бях потресен като го видях тва...
#define mul(x,y) (sizeof(char[x][y]))
johnfound
Създадено на 20.08.2020, видяно: 1858 пъти. #5295
Стига бе! 😂😆😆😆
ДонРеба
Създадено на 20.08.2020, видяно: 1846 пъти. #5296
ако беше джава щеше да бачка и рънтайм
gat3way
Създадено на 20.08.2020, видяно: 1843 пъти. #5297
Бачка си бе, ама с C99, то тва е още по-забавното.
Delegate
Създадено на 20.08.2020, видяно: 1837 пъти. #5299
sizeof нали гарантираше да връща колко байта, независимо от размера на байта на различните платформи ?
ДонРеба
Създадено на 20.08.2020, видяно: 1834 пъти. #5300
хммм, вярно че можеш да правиш статичен масив с рънтайм размер, подобно на alloca
Евлампи
Създадено на 20.08.2020, видяно: 1820 пъти. #5304
Тва сякаш е по-извратено от Дъф дивайса, ебати кви работи им щракат в главите на хората
gat3way
Създадено на 20.08.2020, видяно: 1805 пъти. #5307
Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.
johnfound
Създадено на 20.08.2020, видяно: 1795 пъти. #5309
Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.
Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.
Евлампи
Създадено на 20.08.2020, видяно: 1792 пъти. #5310
Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.
Чар май и по практика и по стандарт е байт така че това го виждам като начин да се смята compile time константа като произведение на други две такива. Никога не съм бил добър по тия тъмните ъгли на Це и може да бъркам де, ако е така е забавно каква нужда е покрило, на Дъф извращението е било пърформанс оптимизация поне като го е изобретил
ДонРеба
Създадено на 20.08.2020, видяно: 1784 пъти. #5311
така че това го виждам като начин да се смята compile time константа като произведение на други две такива.
а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи
gat3way
Създадено на 20.08.2020, видяно: 1776 пъти. #5312
Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.
Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.
Не е толко очевидно това, така де за Ц хората тея неща в почти всички случаи немат никакво значение, Цплюсплюсаджиите повече обръщат внимание, но то е валидно все пак и в двата случая. Ако обърнем нещата така (не е ли същото така), тогава дали изглежда като да се алокира памет все пак?
char x[a][b];
result = sizeof(x);
Обаче да де, sizeof() не е функция а некъв компилерски билтин и най-най-вероятно се сеща че нема нужда нищо да се алокира.
Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?
Евлампи
Създадено на 20.08.2020, видяно: 1757 пъти. #5318
Ако обърнем нещата така (не е ли същото така), тогава дали изглежда като да се алокира памет все пак?
char x[a][b];
result = sizeof(x);
Не е същото щото така масива е отделен стейтмънт което може да е дефиниция (или май даже винаги е дефиниция щом няма extern), иначе е анонимен подизраз аргумент на sizeof и нищо друго
Евлампи
Създадено на 20.08.2020, видяно: 1755 пъти. #5319
така че това го виждам като начин да се смята compile time константа като произведение на други две такива.
а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи
Затова се чудя що им е трябвало освен ако не е състезание по неразгадаем код (тоя бруталния французиндето е държал рекорда по сметнати цифри на пи, автор на TinyC, QEMU, FFMpeg, JSLinux, QuickJS и куп други неща го е печелил май точно с TinyC).
Може би за някаква процедурно генерирана таблица с повече константи от некви начални стойности където не може да се ползва *
Евлампи
Създадено на 20.08.2020, видяно: 1742 пъти. #5321
Дееба, бях потресен като го видях тва...
Междудругото откъде го видя това?
Намирам само неква изтрита тема на julialang щото било офтопик. Ебати, тука рахат, насекъде яко цензура по БЕЛИЯ свят
code2
Създадено на 20.08.2020, видяно: 1739 пъти. #5322
така че това го виждам като начин да се смята compile time константа като произведение на други две такива.
а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи
Затова се чудя що им е трябвало освен ако не е състезание по неразгадаем код (тоя бруталния французиндето е държал рекорда по сметнати цифри на пи, автор на TinyC, QEMU, FFMpeg, JSLinux, QuickJS и куп други неща го е печелил май точно с TinyC).
Може би за някаква процедурно генерирана таблица с повече константи от некви начални стойности където не може да се ползва *
Ако беше състезание за неразгадаем код, тогава дефиницията със сигурност щеше да е такава:
#define add(x,y) (sizeof(char[x][y]))
Delegate
Създадено на 20.08.2020, видяно: 1724 пъти. #5325
Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?
Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?
Бричед, опресни си знанията за "щифтовете" 😀
?
2 * 2 = 4 == 2 << 1 = 4
2 * 4 = 8 == 2 << 2 = 8
2 * 5 = 10 == (2 << 2) + 2 = 10
gat3way
Създадено на 20.08.2020, видяно: 1686 пъти. #5332
Дееба, бях потресен като го видях тва...
Междудругото откъде го видя това?
Намирам само неква изтрита тема на julialang щото било офтопик. Ебати, тука рахат, насекъде яко цензура по БЕЛИЯ свят