08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

#include <br />

int main()<br />

{<br />

long int lo = 23467;<br />

unsigned long int unlo = 65242;<br />

printf("unlo = %ld\n", lo); /* onluk sistemde yazar */<br />

printf("unlo = %lu\n", unlo); /* onluk sistemde yazar */<br />

printf("unlo = %lo\n", unlo); /* sekizlik sistemde yazar */<br />

printf("unlo = %lX\n", unlo); /* onaltılık sistemde yazar */<br />

}<br />

return 0;<br />

Yukarıdaki örneklerde unsigned int türden bir ifadenin değerinin printf işleviyle sekizlik ya<br />

da onaltılık sayı sisteminde yazdırılabileceğini gördünüz. Peki işaretli türden bir<br />

tamsayının değeri sekizlik ya da onaltılık sistemde yazdırılamaz mı? Yazdırılırsa ne olur?<br />

Söz konusu işaretli tamsayı pozitif olduğu sürece bir sorun olmaz. Sayının işaret biti 0<br />

olduğu için sayının nicel büyüklüğünü etkilemez. Yani doğru değer ekrana yazılır, ama<br />

sayı negatifse işaret biti 1 demektir. Bu durumda ekrana yazılacak sayının işaret biti de<br />

nicel büyüklüğün bir parçası olarak değerlendirilerek yazılır. Yani yazılan değer doğru<br />

olmaz.<br />

% karakterinin yanında önceden belirlenmiş bir format karakteri yoksa , % karakterinin<br />

yanındaki karakter ekrana yazılır.<br />

Yüzde karakterinin kendisini ekrana yazdırmak için format karakteri olarak %% kullanılır:<br />

printf("%%25\n");<br />

scanf İşlevi<br />

scanf işlevi, klavyeden her türlü bilginin girişine olanak tanıyan standart bir C işlevidir.<br />

scanf işlevi de printf işlevi gibi aslında çok ayrıntılı, geniş kullanım özellikleri olan bir<br />

işlevdir. Ancak bu noktada scanf işlevi yüzeysel olarak ele alınacak.<br />

scanf işlevinin de birinci parametresi bir dizgedir. Ancak bu dizge yalnızca klavyeden<br />

alınacak bilgilere ilişkin format karakterlerini içerir. printf işlevinde olduğu gibi scanf<br />

işlevinde de bu format karakterleri önceden belirlenmiştir. % karakterinin yanında yer<br />

alırlar. scanf işlevinin kullandığı format karakterlerinin printf işlevinde kullanılanlar ile<br />

hemen hemen aynı olduğu söylenebilir. Yalnızca gerçek sayılara ilişkin format<br />

karakterlerinde önemli bir farklılık vardır. printf işlevi %f formatı ile hem float hem de<br />

double türden verileri ekrana yazabilirken scanf işlevi %f format karakterini yalnızca<br />

float türden veriler için kullanır. double türü için scanf işlevinin kullandığı format<br />

karakterleri %lf şeklindedir. scanf işlevinin format kısmında format karakterlerinden<br />

başka bir şey olmamalıdır. printf işlevi çift tırnak içindeki format karakterleri dışındaki<br />

karakterleri ekrana yazıyordu, ancak scanf işlevi format karakterleri dışında dizge içine<br />

yazılan karakterleri ekrana basmaz, bu karakterler tamamen başka anlama gelir. Bu<br />

nedenle işlevin nasıl çalıştığını öğrenmeden bu bölgeye format karakterlerinden başka bir<br />

şey koymayın. Buraya konulacak bir boşluk bile farklı anlama gelir.<br />

67/529

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!