C kalba: Skirtumas tarp puslapio versijų

851 pridėtas baitas ,  01:26, 16 vasario 2025
nėra keitimo aprašymo
 
(nerodoma viena tarpinė versija, sukurta to paties naudotojo)
8 eilutė: 8 eilutė:


Todėl pasiėmus C parašytą programą, visada galima ją nuosekliai išversti į [[asembleris|asemblerio]] tekstą, o paskui jau gautame asemblerio tekste turėti visiškai tiesioginį tos C programos ekvivalentą.
Todėl pasiėmus C parašytą programą, visada galima ją nuosekliai išversti į [[asembleris|asemblerio]] tekstą, o paskui jau gautame asemblerio tekste turėti visiškai tiesioginį tos C programos ekvivalentą.
Nepatyrusiems programuotojams atrodo, kad C kalba palaiko duomenų tipus, tačiau čia slypi žiauri klasta: realiai gi šita kalba tepalaiko tik tokius dalykus, kaip [[baitai]], iš jų sudaryti žodžiai (word) ar panašūs duomenys, ir rodyklės. Visa kita - tėra daugiau ar mažiau apgaulingos duomenų tipų simuliacijos, o pats [[kompiliatorius]] gali absoliučiai neskirti ir nesuprasti, kur kokių tipų duomenys yra. Ypač tai pasakytina apie klasikinį, tą gerąjį C kalbos variantą, kuris vadinamas '''Kernighan and Ritchie C''' arba tiesiog '''K&R C'''. Šitas pliusas leidžia dirbti su duomenimis kaip nori, tačiau duoda ir pasekmių.


Atitinkamai, tradiciniame C programavime galima daryti keistus dalykus, kurie atrodo ganėtinai nenormalūs. Pavyzdžiui, galima su kokiu nors [[Goto]] pereiti tiesiai į kokio nors ciklo ar funkcijos vidų. Arba galima apsibrėžti kintamąjį, kuris yra integeris, į jį įsimesti kokio nors masyvo adresą, o į tą masyvą prikaišioti pointerių į kokias nors funkcijas ir paskui kokiame nors cikle iškvietinėti kokią nors ''array[*point+x]()'' ar dar kokią nors didesnę nesąmonę.
Atitinkamai, tradiciniame C programavime galima daryti keistus dalykus, kurie atrodo ganėtinai nenormalūs. Pavyzdžiui, galima su kokiu nors [[Goto]] pereiti tiesiai į kokio nors ciklo ar funkcijos vidų. Arba galima apsibrėžti kintamąjį, kuris yra integeris, į jį įsimesti kokio nors masyvo adresą, o į tą masyvą prikaišioti pointerių į kokias nors funkcijas ir paskui kokiame nors cikle iškvietinėti kokią nors ''array[*point+x]()'' ar dar kokią nors didesnę nesąmonę.
50 eilutė: 52 eilutė:
  }
  }


Išbandykite, ir pažiūrėkite kas gausis.
Išbandykite, ir pažiūrėkite kas gausis. Išties tai gausis kompiliacijos erroras, nes surašyta tai čia klaidingai, bet linkim sėkmės išsiaiškinant, pataisant, o paskui prasitrinant sau iš disko visus duomenis su šita nesąmone.




1 648

pakeitimai