2014-06-24 3 views
-5

이 프로그램을 작성했지만 지금은 약간 혼란 스럽습니다. 아래의 코드에서는 화면에 문자열을 출력하는 두 개의 다른 명령문을 작성했지만, 첫 번째 명령은 아무것도 인쇄하지 않고 두 번째 명령은 한 개의 기호를 인쇄합니다.ASCII 코드 인쇄 논리

#include<iostream.h> 
main(){ 
     int i = 1; char c; 
     cout << c << endl; 
     c = i; 
     cout << c << endl; 
} 

이 프로그램의 논리를 설명해주십시오. 나는 'C'언어의 초보자이므로 나에게 자세히 설명해주십시오. 감사합니다.

+4

을 도와 드릴까요? – geoffspear

+2

실제로 나는 ascii 테이블을 인쇄하고 있었고 이제는 그 테이블을 가지고 연습을하고 있습니다. – Shujaat

답변

1

프로그램에서와 같이 char c를 초기화하지 않았습니다.

인쇄 전에 일부 값을 초기화하거나 보유해야합니다!

int i; char c; 
    i = 1; 
    cout << c << endl;  // initialsise c=something of char-type; 
    c = i; 
    cout << c << endl;  //as initialised,so prints something 

둘째,이 char 변수를 초기화했습니다. c. 따라서, 그것은 아마도 ASCII 문자 인 기호를 인쇄합니다!

+2

하지만 왜 그것을 인쇄합니까?), 왜 기호 (☺) 대신 "1"을 인쇄 할 수 없습니까? – Shujaat

+1

@ shujat7- 문자 유형입니다. 문자 유형은 기호 유형 값입니다. 입력하려는 것은 i = 1이지만 char 변수는 ASCII 값에서 작동합니다. 'SOH --- 시작하기' '라는 ASCII 값 1을 참조 할 것입니다. 이것을 참조해야합니다. >> http://www.asciitable.com/ –

+0

@ shujat7- 1을 인쇄하려면 , i.And에'49 '의 ASCII 값을 저장하고'c = i;'그리고 마지막으로'cout << c << endl;'을 실행하십시오. –

0

처음으로 cout << c << endl;은 단위화된 값 c을 인쇄합니다 (0 일 수 있으므로 아무 것도 표시되지 않음). 그러나이 지침의 두 번째 호출은 값 (char) 1 (사용자가 볼 수 있음)을 인쇄합니다.

+1

하지만 왜 기호 (☺)를 ​​인쇄하는지, 기호 (☺) 대신 "1"을 인쇄 할 수없는 이유는 무엇입니까? – Shujaat

+0

ASCII 테이블의 첫 번째 기호이기 때문입니다. "1"을 인쇄 할 수는 있지만,'char' 대신'int'를 출력해야합니다 ('int i = 1; cout << i << endl;') – Ilya

0

문자 'c'를 처음 인쇄했을 때 값이 없습니다. 캐릭터에서 아무 것도 초기화되지 않으면 쓰레기 값이 필요합니다. 이후

int i=1; 
char c = i; 

그것은 변수 'C'에 1을 저장하지만 문자 그대로 'C'를 인쇄하는 그래서 ☺ 1의 ASCII 값을 나타낸다

는 것은 - 같이>

같다
cout << (char)i <<endl; 

당신이 ASCII 표를 인쇄하려면 다음이 코드는 초기화되지 않은`char`과 같이 인쇄 할 일을

for(int i = 1; i <= 255; i++) { 
    cout<<"ASCII VALUE OF "<<i<<" is "<<(char)i <<endl; 
} 
+0

초기화되지 않은 값이 NULL이 아닐 수도 있습니다. 컴파일러 옵션에 따라 NULL인지 확신 할 수 없습니다. – Ilya