Mis vahe on %ul ja %lu C-vormingu spetsifikaatoritel?

Mis Vahe On Ul Ja Lu C Vormingu Spetsifikaatoritel



Õige kasutamine vormingu määrajad on C-keele eduka programmeerimise oluline komponent. See selgitab, miks on vaja teada, miks %ul ja %lu vormingu määrajad erinevad. Nende kahe erinevuse mõistmine on nii oluline, kuna see muudab programmeerija suhtlemist süsteemikeskkonnaga ja nende vorminguspetsifikaatide valesti kasutamisel võivad tekkida võimalikud vead.

Mis on %ul ja %lu vormingu määrajad?

Alustuseks on oluline märkida, et mõlemad %ul ja %lu vormingu määrajad kasutatakse C-s programmeerimisel ja mõlemad esindavad märgita pikki andmetüüpe. Kuid tähtede asukoht ' l ” ja „ sisse ” erineb. Kirjad ' sisse ” ja „ l ' eest seisma ' allkirjastamata ” ja „ pikk ”, vastavalt. Kavandatav argumendi tüüp määratakse nende tähtede järjestuse järgi. ' %in ” täpsustab, et märgi või stringi andmetüüp, millele see rakendatakse, on allkirjastamata int samal ajal kui ' %l ” osa täpsustab, et tegemist on allkirjastamata pika andmetüübiga. Teisisõnu, %ul tähistab allkirjastamata pikka andmetüüpi while %lu tähistab sama, kuid lisab ' pikk ” suuruse muutja.

Selle tulemusena, kui kasutate %ul muutujale, mis ei ole märgita pikk täisarv, saate järelliide l väljundi lõpus. Kui proovite printida muutujat teatud andmetüübiga, on ülioluline kasutada sobivat vorminguspetsiifi.







Siin on mõned näidiskoodid, mis näitavad, kuidas %ul ja %lu vorminguspetsifikaadid erinevad:



%ul Vormingu määraja C-s

#include

int main ( ) {
märgita pikk int i = 1234567890 ;
printf ( 'Kasutatakse %%ul vorminguspetsifikaatorit: %ul \n ' , i ) ;
tagasi 0 ;
}

Ülaltoodud koodis määratleme muutuja i märgita pika täisarvuna ja initsialiseerige see 1234567890 . The printf käsk kasutab seejärel käsku %ul vorminguspetsifikaator, mille väärtuse printida i . Sest lihtsalt %in on täpsustaja ja põhikomponent l on vormingust väljaspool, prindib see numbri koos järelliitega l lõpus.



Väljund





%lu Vormingu määraja C-s

#include

int main ( ) {
märgita pikk int i = 1234567890 ;
printf ( 'Kasutatakse %%lu vorminguspetsifikaatorit: %lu \n ' , i ) ;
tagasi 0 ;
}

Ülaltoodud koodis märgita pikk täisarv muutuja i deklareeritakse ja lähtestatakse 1234567890-ks ning seejärel prinditakse, kasutades %lu vormingu täpsustaja.

Väljund



Erinevused C-vormingus %ul ja %lu vorminguspetsiifi vahel

1: Väärtuste vahemik

Peamine erinevus %ul ja %lu on seotud väärtuste vahemikuga, mida neilt oodatakse. Programmeerimisel C-s kasutab allkirjastamata pikk andmetüüp teistest andmetüüpidest erinevat vormingut, sealhulgas allkirjastamata int-andmetüüpi. 32-bitine int vajab oma väärtuse salvestamiseks ainult 32 bitti mälu, samas kui märgita pikk nõuab sama tüüpi andmete jaoks 64 bitti, seega on sellel olulisem vahemik kui int. See tähendab, et %ul aktsepteerib väärtusi vahemikus 0 kuni +2^32-1, samas kui %lu täpsustaja aktsepteerib väärtusi vahemikus 0 kuni +2^64-1.

2: täpsus

Samuti on erinevus nende väärtuste täpsuses, mida nad eeldatavalt esindavad. Koos %ul täpsustaja, saab programmeerija esindada ainult väärtusi kuni 2^32-1, samas kui %lu täpsustaja võib esindada väärtusi kuni 2^64-1. Kuigi see ei pruugi esmapilgul tunduda suur erinevus, võib see kaudselt mõjutada tulemuste täpsust. Programmil, mis on loodud salvestama väärtust, mille vahemik on näiteks +2^64, tekib kasutamisel tõrkeid %ul spetsifikaatorid, kuna nad ei saa andmeid soovitud vormingus salvestada, mis põhjustab täpsuse kadumise.

3: mälu

Lõpuks %ul ja %lu erinevad ka nende mälukasutuse poolest. The %ul spetsifikaator nõuab andmete jaoks 32 bitti mälu, samas kui %lu nõuab sama tüüpi andmete jaoks 64 bitti, mis tähendab, et %lu võtab umbes kaks korda rohkem mälu kui %ul . See ei pruugi väikeste ja väikesemahuliste programmide puhul tunduda tohutu erinevusena, kuid see võib kiiresti muutuda juhitamatuks, kuna programmi mälukasutus muutub sageli keerukamaks, mis tähendab, et %lu ei ole ideaalne suuremahuliste rakenduste puhul.

4: vorming

Kasutamisel on oluline mõista väljundi täpset vormingut %ul või %lu . Täpsemalt, %ul vormingu spetsifikaator väljastab alati täisarvu 8-kohalise kuueteistkümnendsüsteemi väärtusena, samas kui %lu vormingu spetsifikaator väljastab täisarvu 8-kohalise kümnendarvuna. See tähendab, et kui täisarv on esitatud kuueteistkümnendsüsteemi väärtusena, tuleks see trükkida kui a %ul samas kui täisarv on esitatud kümnendarvuna, tuleks see trükkida kui a %lu .

Viimased mõtted

Oluline on mõista täpseid erinevusi %ul ja %lu vorminguspetsifikaadid C-keelega töötamisel. Kuigi need võivad tunduda sarnased, on peamine erinevus selles %ul vorming nõuab märgita pikka täisarvu parameetrit, samas kui %lu vorming eeldab pikka märgita täisarvu sisendit. The %ul vormingu spetsifikaator väljastab alati täisarvu 8-kohalise kuueteistkümnendsüsteemi väärtusena, samas kui %lu vormingu spetsifikaator väljastab täisarvu 8-kohalise kümnendarvuna. Lõpuks on oluline märkida, et %ul ja %lu vorminguspetsifikaatoreid saab kasutada ainult siis, kui töötate muutujatega, mille tüüp on ' pikk '.