www.wikidata.uk-ua.nina.az
Ponyattya Magichne chislo v programuvanni maye tri znachennya Signatura danih Vidileni unikalni znachennya yaki ne povinni zbigatisya z inshimi znachennyami napriklad UUID Pogana praktika programuvannya Zmist 1 Signatura danih 2 Pogana praktika programuvannya 2 1 Magichni chisla i krosplatformnist 2 2 Chisla yaki ne ye magichnimi 3 Div takozh 4 PrimitkiSignatura danih RedaguvatiMagichne chislo abo signatura cilochiselna abo tekstova konstanta yaka vikoristovuyetsya dlya odnoznachnoyi identifikaciyi resursu abo danih Take chislo same po sobi ne maye niyakogo sensu i mozhe viklikati zdivuvannya zustrivshis u kodi programi bez vidpovidnogo kontekstu abo komentarya pri comu sproba zminiti jogo na inshe navit blizke za znachennyam mozhe sprichiniti absolyutno neperedbachuvani naslidki Z ciyeyi prichini taki chisla ironichno nazivayut magichnimi V cej chas cya nazva micno zakripilasya yak termin Napriklad bud yakij vidkompilovanij klas movi Java pochinayetsya z shistnadcyatirichnogo magichnogo chisla 0xCAFEBABE Inshij vidomij priklad bud yakij vikonuvanij fajl OS Microsoft Windows z rozshirennyam exe pochinayetsya z poslidovnosti bajtiv 0x4D5A sho vidpovidaye ASCII simvoliv MZ iniciali Marka Zbikovski odnogo z tvorciv MS DOS Mensh vidomim prikladom ye neinicializovanij vkazivnik u Microsoft Visual C pochinayuchi z 2005 versiyi Microsoft Visual Studio yakij v rezhimi nalagodzhennya maye adresu 0xDEADBEEF V UNIX podibnih operacijnih sistemah tip fajlu zazvichaj viznachayetsya za signaturoyu fajlu nezalezhno vid rozshirennya jogo nazvi Dlya interpretaciyi signaturi fajlu v nih priznachena standartna utilita file Pogana praktika programuvannya RedaguvatiTakozh magichnimi chislami nazivayut poganu praktiku programuvannya koli u teksti programi zustrichayetsya chislove znachennya sens yakogo ne ochevidnij Napriklad takij fragment napisanij na Java bude poganim drawSprite 53 320 240 Lyudini yaka ne ye avtorom programi vazhko zrozumiti sho take 53 320 abo 240 Ale yaksho cej kod perepisati vse staye na svoyi miscya final int SCREEN WIDTH 640 final int SCREEN HEIGHT 480 final int SCREEN X CENTER SCREEN WIDTH 2 final int SCREEN Y CENTER SCREEN HEIGHT 2 final int SPRITE CROSSHAIR 53 drawSprite SPRITE CROSSHAIR SCREEN X CENTER SCREEN Y CENTER Teper zrozumilo cya instrukciya vivodit u centr ekrana sprajt perehrestya pricilu V bilshosti mov programuvannya vsi znachennya yaki vikoristovuyutsya dlya takih konstant budut porahovani she na etapi kompilyaciyi j pidstavleni v miscya yih vikoristannya Tomu taka zmina vihidnogo tekstu ne pogirshuye shvidkodiyi programi Krim togo magichni chisla potencijne dzherelo pomilok u programi Yaksho odne i te same magichne chislo vikoristovuyetsya v programi bilshe odnogo razu abo potencijno mozhe vikoristovuvatisya to dlya zmini jogo znachennya potribno bude vipraviti kozhne vhodzhennya zamist odnogo vipravlennya znachennya imenovanoyi konstanti Yaksho ne budut vipravleni vsi vhodzhennya vinikne prinajmni odna pomilka Prinajmni v odnomu zi vhodzhen magichne chislo mozhe buti napisane z pomilkoyu spochatku i ce dosit skladno viyaviti Magichne chislo mozhe zalezhati vid neyavnogo parametra abo inshogo magichnogo chisla Yaksho ci zalezhnosti ne vidileni yavno ne budut zadovoleni vinikne prinajmni odna pomilka Pid chas modifikaciyi vhodzhen odnogo magichnogo chisla mozhna pomilkovo zminiti inshe magichne chislo nezalezhne ale z takim samim chislovim znachennyam Magichni chisla i krosplatformnist Redaguvati Inodi magichni chisla shkodyat krosplatformnosti kodu 1 Rich u tomu sho v Si v 32 i 64 bitnih OS garantuyetsya rozmir tipiv char short i long long todi yak rozmir int long size t i ptrdiff t mozhe zminyuvatisya u pershih dvoh zalezhno vid upodoban rozrobnikiv kompilyatoriv v ostannih dvoh zalezhno vid rozryadnosti cilovoyi sistemi U staromu abo nevmilo napisanomu kodi mozhut zustrichatisya magichni chisla sho oznachayut rozmir pevnogo tipu pid chas perehodu na mashini z inshoyu rozryadnistyu voni mozhut prizvesti do nevlovnih pomilok Napriklad const size t NUMBER OF ELEMENTS 10 long a NUMBER OF ELEMENTS memset a 0 10 4 nepravilno jdetsya pro te sho long dorivnyuye 4 bajtam vikoristovuyetsya magichne chislo elementiv memset a 0 NUMBER OF ELEMENTS 4 nepravilno jdetsya pro te sho long dorivnyuye 4 bajtam memset a 0 NUMBER OF ELEMENTS sizeof long ne zovsim pravilno dublyuvannya nazvi tipu yaksho zminitsya tip to dovedetsya zminiti j tut memset a 0 NUMBER OF ELEMENTS sizeof a 0 pravilno optimalno dlya dinamichnih masiviv nenulovogo rozmiru memset a 0 sizeof a pravilno optimalno dlya statichnih masiviv Chisla yaki ne ye magichnimi Redaguvati Ne vsi chisla potribno perenositi v konstanti Napriklad u takomu kodi na Delphi for i 0 to Count 1 do sens chisel 0 i 1 cilkom zrozumilij Div takozh RedaguvatiHexspeak Shvidkij obernenij kvadratnij korinPrimitki Redaguvati 20 lovushek perenosa koda na C na 64 bitnuyu platformu Arhiv originalu za 15 serpnya 2010 Procitovano 10 serpnya 2020 Otrimano z https uk wikipedia org w index php title Magichne chislo programuvannya amp oldid 38451388