Loading...
SvilenPavlov avatar SvilenPavlov 11 Точки

Възможно ли е:For цикъл за вкарване на числа - всяко в отделен тип?

Здравейте, приятели!

Как можем да приписваме инпут стойност на определен вид променлива в зависимост от размера и точността, с цел ефективно използване на паметта на PC? Пример: Инпута е:5, 3.555555, 1444141444114411414141414, и 0.5. Иска ми се да мога в самия фор цикъл да ги слагам във възможно най-малкия тип - 5 =инт, 3.55555=флоут, 1444141444114411414141414=децимал и т.н. Има ли аджеба такава магия, мои друзя?

Благодаря предварително!

Тагове:
0
Fundamentals Module 08/07/2016 11:09:06
RoYaL avatar RoYaL Trainer 6849 Точки
Best Answer

Има такава магия, но операцията по установяване кой е най-подходящият тип, ще е достатъчно бавна, че да унищожи смисъла от това да пестиш памет и време.

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

Иначе аз това което виждам е:

    1. Пробваш да вкарваш променливата в най-малкия тип данни. Хващаш евентуални грешки

    2. Ако хванеш грешка за препълване на типа данни, опитваш да вкараш стойността в друга променлива от по-висок тип данни. Хващаш грешки и там.

    3. Повтаряш операцията от т1. и т2. с по-висок тип данни докато стойността не се запише някъде.

 

Имай предвид, че при този подход, особено ако си в цикъл, ще трябва в момента, в който запишеш променливата да я използваш и след завъртането на следващата итерация тя да умре. Ако искаш да я запишеш някъде, за да живее до края на приложението, ще трябва извън цикъла да имаш декларирани променливи от всеки тип данни, което практически губи смисъла на пестенето на памет, тъй като ти ще си заделил памет за всеки един тип.

Избирането на най-малкия тип обикновено се прави когато имаш ясно разбрани ограничения. Т.е. състоянието на нещо може да е само нула или едно - значи тогава ще ползваш boolean. Нещо може да е само от 0 до 100 - byte. И си сигурен, че няма да се прескочи този тип данни впоследствие. Ако си оставил потребителят да избира стойностите и ограниченията вече си сложил главата в торбата. Програмата няма ясно дефинирани ограничения за паметта, която ще ползва, а пък е memory-sensitive. Какво пречи на потребителят да въвежда само decimal-и докато не ти препълни паметта?

3
08/07/2016 11:23:19
SvilenPavlov avatar SvilenPavlov 11 Точки

Страхотен отговор, благодаря ти! Питам за принципа, защото сега взимам пргорамминг технолоджийс и просто искам да разбера добри практики. Аз точно това предполагах и ти разбрах обяснението мн добре. Примерната ситуация е, ако за  в бъдеще ми се наложи да се справям с някви ограничения на паметта как да стане, но след като трябва да имаш от всеки тип за извън фор цикъла няма смисъл. А и след като ще умре променливата дали е дек или байт все едно, тя е една, т.е. почти няма значка за паметта. 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.