2012-02-05 29 views
7

Aşağıdaki program çıktı olarak 12480 verir. C programında% c nasıl yazdırılır?

#include<stdio.h> 

int main() 
{ 
    char c=48; 
    int i, mask=01; 
    for(i=1; i<=5; i++) 
    { 
     printf("%c", c|mask); 
     mask = mask<<1; 
    } 
    return 0; 
} 

Şimdi sorum, "% c" her döngü sonra tamsayı değeri 1, 2, 4, 8, 0 yazdırır nasıl. Bir karakteri bir değer olarak yazdırmalıdır. i sadece aşağıdaki programı kullanın,

#include<stdio.h> 

int main() 
{ 
    char c=48; 
    int i, mask=01; 
    printf("%c",c); 
    return 0; 
} 

bu 0 basar ama kimliği% c değiştirmek için% d 48 basar. Herkes bana bunun nasıl olduğunu söyler mi?

cevap

7

%c kullanırsanız, c tamsayı değeri için karşılık gelen ASCII anahtarını yazdırır. 48

İkili 110000 | 00000149 in decimal base 10 eşdeğerdir 110001 verir, 1 110000. İkili Sen or onları 000001.

olmasıdır. 49 için ASCII değerleri karşılık gelen ASCII table göre

, 50, 51, vs vs, '1', '2', '3' cevabı @aix için

+0

Ah! Bunun için çok teşekkürler! – Chandeep

+0

sadece bir şey 48 bir ikili 110000 değil 110001 – Chandeep

+0

@ user975234 Oops, ben son sonuç aklı vardı, bu yüzden yanlış yazılmış. –

3

Aslında karakterleri'1', '2', '4' yazdırır vb

c|mask sayısal değeri ASCII code olarak yorumlanır alır. '0' ASCII kodu 48.

biraz daha net kod yapmak için,

char c=48; 

için

char c='0'; 

iki biçimi eşdeğerdir değiştirebilir olduğunu.

+0

sayesinde vardır .. ama nasıl söyle OR işlemi gerçekleştiriliyor mu? Yani, OR işlemi 48'in ikili veya 0'sı ikili kullanılarak mı yapıldı? – Chandeep

+1

@ user975234: '' '' '' 'ile 1 '' '', '' 49'ı vererek alır. '% C' kullanarak' 49'ı bastığınızda, '' 1 '' karakterinin '' 1 '' karakteri ASCII kodu olduğundan, ekranda '1 'olur. – NPE

İlgili konular