2012-02-05 3 views
7

다음 프로그램은 출력으로 12480을 산출합니다. % C는 C 프로그램에서 어떻게 값을 출력합니까?

#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; 
} 

지금, 내 질문에, "% C는"모든 루프 후 정수 값 1, 2, 4, 8, 0을 출력하는 방법. 문자를 값으로 인쇄해야합니다. 단순히 다음과 같은 프로그램을 사용하는 경우,

#include<stdio.h> 

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

는 0을 출력하지만 식별자 %의 C를 변경할 때 중량 %는 48 D를 출력한다. 누구든지이게 어떻게 될지 말해 줄 수 있니?

답변

7

%c을 사용하면 c는 정수 값에 해당하는 ASCII 키를 인쇄합니다. 48

이진 110000 | 00000149 in decimal base 10에 해당 110001을 제공, 1 110000 진 당신 or 그들을 000001

입니다. 49 ASCII 값을 해당 ASCII table에 따르면

, 50, 51, 등 등, '1', '2', '3'당신의 응답 @aix에 대한

+0

아! 그 점에 대해 고맙습니다. – Chandeep

+0

48 비트의 이진수는 110000이 아닙니다. 110001 – Chandeep

+0

@ user975234 죄송합니다. 최종 결과가 마음에 들었습니다. 잘못 입력했습니다. –

3

그것은 실제로 문자'1', '2', '4'를 출력 등

c|mask의 수치가 ASCII code으로 해석됩니다. '0'의 ASCII 코드는 48

좀 더 명확한 코드를 확인하려면, 당신은

char c=48; 

char c='0'; 

두 가지 형태가 동일 변경 될 수 있습니다.

+0

덕분에 ..하지만 어떻게 말해 OR 연산이 수행되고 있습니까? 내 말은 OR 연산이 48의 바이너리 또는 0의 바이너리를 사용하여 수행된다는 것입니까? – Chandeep

+1

@ user975234 :'48'은'1'과 OR 연산을하여'49'를줍니다. '% c '를 사용하여'49'를 출력 할 때, '49'는 문자 '1'의 ASCII 코드이기 때문에 화면에'1'을 얻습니다. – NPE