<bgdev />free

Вход

Умножение
0

#5294 (ツ) gat3way
Последно редактирано на 20.08.2020 от gat3way, видяно: 1684 пъти.

Дееба, бях потресен като го видях тва...

#define mul(x,y) (sizeof(char[x][y]))
#5295 (ツ) johnfound
Създадено на 20.08.2020, видяно: 1681 пъти.
gat3way

Дееба, бях потресен като го видях тва...

#define mul(x,y) (sizeof(char[x][y]))

Стига бе! 😂 😆 😆 😆

#5296 (ツ) Дон Реба
Създадено на 20.08.2020, видяно: 1669 пъти.

ако беше джава щеше да бачка и рънтайм

#5297 (ツ) gat3way
Създадено на 20.08.2020, видяно: 1666 пъти.

Бачка си бе, ама с C99, то тва е още по-забавното.

#5299 (ツ) Delegate
Създадено на 20.08.2020, видяно: 1660 пъти.

sizeof нали гарантираше да връща колко байта, независимо от размера на байта на различните платформи ?

#5300 (ツ) Дон Реба
Създадено на 20.08.2020, видяно: 1657 пъти.
gat3way

Бачка си бе, ама с C99, то тва е още по-забавното.

хммм, вярно че можеш да правиш статичен масив с рънтайм размер, подобно на alloca

#5304 (ツ) Евлампи
Създадено на 20.08.2020, видяно: 1643 пъти.
gat3way

Дееба, бях потресен като го видях тва...

#define mul(x,y) (sizeof(char[x][y]))

Тва сякаш е по-извратено от Дъф дивайса, ебати кви работи им щракат в главите на хората

#5307 (ツ) gat3way
Създадено на 20.08.2020, видяно: 1628 пъти.
Дон Реба
gat3way

Бачка си бе, ама с C99, то тва е още по-забавното.

хммм, вярно че можеш да правиш статичен масив с рънтайм размер, подобно на alloca

Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.

#5309 (ツ) johnfound
Създадено на 20.08.2020, видяно: 1618 пъти.
gat3way

Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.

Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.

#5310 (ツ) Евлампи
Създадено на 20.08.2020, видяно: 1615 пъти.
johnfound

Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.

Чар май и по практика и по стандарт е байт така че това го виждам като начин да се смята compile time константа като произведение на други две такива. Никога не съм бил добър по тия тъмните ъгли на Це и може да бъркам де, ако е така е забавно каква нужда е покрило, на Дъф извращението е било пърформанс оптимизация поне като го е изобретил

#5311 (ツ) Дон Реба
Създадено на 20.08.2020, видяно: 1607 пъти.
Евлампи

така че това го виждам като начин да се смята compile time константа като произведение на други две такива.

а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи

#5312 (ツ) gat3way
Създадено на 20.08.2020, видяно: 1599 пъти.
johnfound
gat3way

Забавното е че с голяма вероятност тва изобщо не бута стек пойнтера ами директно си се свежда до умножение, компилаторите ич не са прости.

Сега, не съм сигурен как точно ще се компилира това, но със сигурност за да знаеш размера на масив не е нужно да го създаваш реално. Тоест, sizeof() не би трябвало да алокира памет при каквито и да е параметри... Още повече, че sizeof() изобщо не е функция, а е оператор.

Не е толко очевидно това, така де за Ц хората тея неща в почти всички случаи немат никакво значение, Цплюсплюсаджиите повече обръщат внимание, но то е валидно все пак и в двата случая. Ако обърнем нещата така (не е ли същото така), тогава дали изглежда като да се алокира памет все пак?


char x[a][b];
result = sizeof(x);

Обаче да де, sizeof() не е функция а некъв компилерски билтин и най-най-вероятно се сеща че нема нужда нищо да се алокира.

#5317 (ツ) Courvoisier
Последно редактирано на 20.08.2020 от Courvoisier, видяно: 1586 пъти.

Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?

#5318 (ツ) Евлампи
Създадено на 20.08.2020, видяно: 1580 пъти.
gat3way

Ако обърнем нещата така (не е ли същото така), тогава дали изглежда като да се алокира памет все пак?


char x[a][b];
result = sizeof(x);

Не е същото щото така масива е отделен стейтмънт което може да е дефиниция (или май даже винаги е дефиниция щом няма extern), иначе е анонимен подизраз аргумент на sizeof и нищо друго

#5319 (ツ) Евлампи
Създадено на 20.08.2020, видяно: 1578 пъти.
Дон Реба
Евлампи

така че това го виждам като начин да се смята compile time константа като произведение на други две такива.

а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи

Затова се чудя що им е трябвало освен ако не е състезание по неразгадаем код (тоя бруталния французиндето е държал рекорда по сметнати цифри на пи, автор на TinyC, QEMU, FFMpeg, JSLinux, QuickJS и куп други неща го е печелил май точно с TinyC).

Може би за някаква процедурно генерирана таблица с повече константи от некви начални стойности където не може да се ползва *

#5321 (ツ) Евлампи
Създадено на 20.08.2020, видяно: 1565 пъти.
gat3way

Дееба, бях потресен като го видях тва...

Междудругото откъде го видя това?

Намирам само неква изтрита тема на julialang щото било офтопик. Ебати, тука рахат, насекъде яко цензура по БЕЛИЯ свят

#5322 (ツ) code2
Създадено на 20.08.2020, видяно: 1562 пъти.
Евлампи
Дон Реба
Евлампи

така че това го виждам като начин да се смята compile time константа като произведение на други две такива.

а можеш и просто с * , не се безпокой, само най-първите компилатори са слагали реален код при умножение на константи

Затова се чудя що им е трябвало освен ако не е състезание по неразгадаем код (тоя бруталния французиндето е държал рекорда по сметнати цифри на пи, автор на TinyC, QEMU, FFMpeg, JSLinux, QuickJS и куп други неща го е печелил май точно с TinyC).

Може би за някаква процедурно генерирана таблица с повече константи от некви начални стойности където не може да се ползва *

Ако беше състезание за неразгадаем код, тогава дефиницията със сигурност щеше да е такава:

#define add(x,y) (sizeof(char[x][y]))
#5325 (ツ) Delegate
Създадено на 20.08.2020, видяно: 1547 пъти.
Courvoisier

Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?

Бричед, опресни си знанията за "щифтовете" 😀

#5327 (ツ) Courvoisier
Последно редактирано на 20.08.2020 от Courvoisier, видяно: 1537 пъти.
Delegate
Courvoisier

Аз съм прост и питам, това по- малко работа ли е от шифт налево? То верно, трябва да знам колко шифта искам... Или ви е само да знаете компайл тайм сумата от умножение?

Бричед, опресни си знанията за "щифтовете" 😀

?

2 * 2 = 4 == 2 << 1 = 4

2 * 4 = 8 == 2 << 2 = 8

2 * 5 = 10 == (2 << 2) + 2 = 10

#5332 (ツ) gat3way
Създадено на 20.08.2020, видяно: 1509 пъти.
Евлампи
gat3way

Дееба, бях потресен като го видях тва...

Междудругото откъде го видя това?

Намирам само неква изтрита тема на julialang щото било офтопик. Ебати, тука рахат, насекъде яко цензура по БЕЛИЯ свят

Ба ли го...едно аверче ми го сподели.

Умножение
0

AsmBB v3.0 (check-in: a316dab8b98d07d9); SQLite v3.42.0 (check-in: 831d0fb2836b71c9);
©2016..2023 John Found; Licensed under EUPL. Powered by Assembly language Created with Fresh IDE