Pereiti prie turinio

Rekomenduojami pranešimai

Citata iš knygos "Naudojant vardines konstantas( vardais nurodomas reikšmes), galima parengti vaizdingesnį ir lengviau taisomą programos tekstą."

 

Kada pasireiškia tas lengvesnis taisomas tekstas? Gal galite duoti pavyzdžių? P.s šita citata iš knygos "C++ ir objektinis programavimas".

Nuoroda į pranešimą
Dalintis kituose puslapiuose

//Čia yra tavo konstanta
#define SOME_MAX_SIZE 200

int main(){
   int i[sOME_MAX_SIZE];
   for(int y=0; y<SOME_MAX_SIZE; y++){
       scanf("%d", &i);
   }
   // ...
   for(int y=0; y<SOME_MAX_SIZE; y++){
       // i[y]...
   }
   return 0;
}

Šios konstantos yra apdorojamos prieš kompiliaciją, todėl kodas padaromas į tiesiog

int main(){
   int i[200];
   for(int y=0; y<200; y++){
       scanf("%d", &i);
   }
   // ...
   for(int y=0; y<200; y++){
       // i[y]...
   }
   return 0;
}

 

Jei staiga prisireiktų pakeisti masyvo dydį iš 200-ų į 100-ą, tai tau nereikėtų keisti to skaičiaus daugelyje vietų, o užteks tai padaryti tik vienoje. Turint nedidelę programą tai itin didelės naudos nesuteikia, tačiau didesnėse tai yra labai naudingas dalykas.

Redagavo nagisa
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Įkišiu trigrašį: mano menkomis C/C++ žiniomis, nagisos variantas šiek tiek efektyvesnis, nes dorojamas preprocesoriaus ir modifikuoja kodą prieš kompiliuodamas (t.y. gaunasi kaip literal konstantos, lyg pats būtum į kodą surašęs), kai apieviska atveju yra vis tiek kintamasis, tik tiek, kad nesikeičiantis :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Įkišiu trigrašį: mano menkomis C/C++ žiniomis, nagisos variantas šiek tiek efektyvesnis, nes dorojamas preprocesoriaus ir modifikuoja kodą prieš kompiliuodamas (t.y. gaunasi kaip literal konstantos, lyg pats būtum į kodą surašęs), kai apieviska atveju yra vis tiek kintamasis, tik tiek, kad nesikeičiantis :)

 

Jei gerai supratau ka norejai pasakyti, tai compaileris pirmiausia sukompiliuoja const kintamuosius, o tada viska, kas liko, tad ar rasysi #define ar const, nelabai yra skirtumas.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jei gerai supratau ka norejai pasakyti, tai compaileris pirmiausia sukompiliuoja const kintamuosius, o tada viska, kas liko, tad ar rasysi #define ar const, nelabai yra skirtumas.

Nu nežinau, kaip dėl šito atvejo, bet pvz kai yra

int kazkas (const int* a)

Tai berods nėra „tikra“ konstanta, tik tai funkcijai neleidžia modifikuoti jo reikšmės... Nors gali būti ir kad nusišneku :) O beje, kur galėčiau paskaityti apie tai, kad pirmiausiai kompiliuoja const kintamuosius? :)

 

Tiesa, su tuo const klaidu pakankamai, kai prie pointerių prieinama :D

 

Padariau for-fun benchmarką („There are lies, damn lies, and benchmarks“ :lol:), tai DEFINE vs. const: 15.482s vs 15.942s.

Redagavo Silke
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nu nežinau, kaip dėl šito atvejo, bet pvz kai yra

int kazkas (const int* a)

Tai berods nėra „tikra“ konstanta, tik tai funkcijai neleidžia modifikuoti jo reikšmės... Nors gali būti ir kad nusišneku :) O beje, kur galėčiau paskaityti apie tai, kad pirmiausiai kompiliuoja const kintamuosius? :)

 

Ah pasirodo klydau. Compaileris tiesiog neskiria const kintamiesiems atskiros vietos, o tiesiog juos iterpia i operacija.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...