Կա՞ տարբերություն ((;;)) - ի և (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 (;); ) »».