<bgdev />free

Вход Регистрация

Умножение
0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#5327 (ツ) Courvoisier
Последно редактирано на 20.08.2020 от Courvoisier, видяно: 1553 пъти.
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, видяно: 1525 пъти.
Евлампи
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