Կա՞ տարբերություն ((;;)) - ի և (1)-ի օգտագործման միջև:
պատասխանել 1:
Ինչ վերաբերում է ստեղծված կոդին, ապա C- ի ժամանակակից յուրաքանչյուր կազմող պետք է ունենա նույն արդյունքները:
Հեղինակներ, դասախոսներ և այլք, ովքեր ասում են, որ (;;) ավելի շատ առաջ են բերում, կամ (ա) չգիտեն ինչի մասին են խոսում, կամ (բ) աշխատում են հին կամ կոտրիչ կազմողների հետ: համար (;;) չի ստեղծում որևէ լրացուցիչ գլխավերևում, քանի որ հանգույց փոփոխականի համար չկա պայման և հաջորդականություն: Եթե որևէ բան է, մինչդեռ (1) կարող է իրականում ավելի շատ գլխավերև բերել հին, ոչ օպտիմիզացման բաղադրիչի մեջ, քանի որ այն կայծակի արագությամբ ստուգում է, արդյոք 1-ը ոչ-նեզո է յուրաքանչյուր կրկնության սկզբում: Ժամանակակից կազմողները չեն:
Կազմողի որոշ իրականացումներում, եթե նախազգուշացման մակարդակները բավականաչափ բարձր եք սահմանում կամ օգտագործում եք նման գործիք, կարող եք տեսնել նախազգուշացում մինչ այդ (1) կամ համարժեք նախազգուշացման մասին, որ պայմանական արտահայտությունը կայուն է: քանի որ (;;) նման նախազգուշացում չի առաջացնում, քանի որ պայմանական արտահայտություն ընդհանրապես չկա: Ես աշխատել եմ նախագծերի վրա, որտեղ մենք ուզում էինք կազմել զրոյական նախազգուշացումներ, ուստի որոշեցի (;;) փոխարեն որոշ ժամանակ (1) համարժեք համարել: Նաև ավելի հեշտ է որոնել (;;) որոնումը, քան մինչդեռ տարբերակները:
Ի դեպ, եթե այդ ընթացքում օգտագործում եք, ավելի լավ է ասել.
մինչդեռ (ճշմարիտ)
քան ասել.
մինչդեռ (1)
չնայած նախկինը պահանջում է ավելի շատ տպում:
Ժամանակակից C- ում (այսինքն `1999 թվականից ի վեր C99- ից) չպետք է ստեղծեք TRUE- ի ձեր սեփական տարբերակը: Փոխարենը, ավելացրեք stdbool.h վերնագրի ֆայլը, և դուք մուտք ունեք նշված Bool տվյալների տեսակը (փոխարենը `« _Bool »բառն օգտագործելու փոխարեն) և իրական և կեղծ խորհրդանիշները օգտագործելու փոխարեն: Ձեր իսկական / կեղծ արժեքները գլորելը այսպիսին է ...
... 1998 թ.
պատասխանել 2:
Ստանդարտ `ստանդարտ C ++
6.5.3. Հայտարարության համար հայտարարության համար հայտարարության համար հայտարարագիր («նախաձեռնության հայտարարության պայման», հայտարարության արտահայտության համար) համապատասխանում է [Code] init- ին, հայտարարության արտահայտման համար, մինչդեռ (պայմանը) }} [/ կոդ] բացառությամբ այն դեպքի, որ նախնական հայտարարության մեջ հայտարարված անունները գտնվում են նույն դեկլարատիվ շրջանում, ինչպես նշված է պայմանով, և բացառությամբ այն, որ հայտարարության մեջ շարունակվում է (որը չկա ներառվում է այլ կրկնության հայտարարություն) արտահայտություն ՝ նախքան գնահատող պետությունը կատարելը: [Նշում. Հետևաբար, առաջին հայտարարության մեջ նշվում է հանգույցի նախաստորագրումը: պայմանը (6.4) նշում է ստուգում, որը պետք է կատարվի յուրաքանչյուր կրկնությունից առաջ, որպեսզի հանգույցը դուրս գա, եթե պայմանը կեղծ է. Արտահայտությունը հաճախ ցույց է տալիս աճ, որը կատարվում է յուրաքանչյուր կրկնությունից հետո: - Endnote] 2 Մեկ կամ երկու պայմանները և արտահայտությունը կարող են բացակայվել: Անհայտ բացակայող պայմանը ենթադրում է ենթակետը մինչ կետը (իսկական):
Կարող էր լինել
պատասխանել 3:
Anyանկացած կազմող, որը արժե երկու դեպքում էլ նույնական կոդ ստեղծել:
(;;) Տարբերակի համար հնարավոր նախապատվությունն այն է, որ ոմանք (շատերը) մարդիկ համարում են «վատ ոճ» կոդում թվային հաստատուններ օգտագործելը: Դա նշանակում է, որ դուք չեք գրում
x + = 10;
բայց դու գրում ես
static const int my_constant_value = 10;
(...)
x + = my_constant_value;
Դա այն է, որ բոլոր թվային հաստատունները հայտարարվում են հստակ (և գերադասելի է սկզբնաղբյուրի սկզբում, այլ ոչ թե բաշխվել ամբողջ ֆայլում), ինչը հանգեցնում է ավելի կառավարելի կոդին:
Այն, ակնհայտորեն, ոչ մի տարբերություն չի տալիս (1) կետի դիմաց (;;) առումով, բայց դեռ անհարմար է տեսնել առանց «թվերի» ծածկագրով «1»:
C ++ ում (և քանի որ C99- ից նաև C- ում) մենք կարող ենք գրել «իսկ (ճշմարիտ)» -ը, բայց սա նույնիսկ ավելի երկար է, քան «իսկ (1)» -ը, որն ինքն ավելի երկար է (1 նիշով), քան «for (;); ) »».