2013-03-26 1 views
2

이 프로그램은 문자를 ASCII 코드 으로 변환합니다. 프로그램은 완벽하게 작동하지만 행 cout << (int) *p1++ << ' ';의 작동 방식을 이해하지 못합니다. 이 내부 루프 while Еspecially *p1++ : 여기C 문자열에 저장된 문자의 ASCII 코드 인쇄 - 설명 필요

#include <iostream> 
#include <cstring> 
#include <cstdio> 
using namespace std; 
void main() 
{ 
    char s[80]; 
    char *p1; 
    do 
    { 
     p1 = s; 

     cout << "Enter the string"; 
     gets(p1); 
     while (*p1) 
     cout << (int) *p1++ << ' '; 
     cout << '\n'; 
    } 
    while (strcmp (s, "End")); 
} 
+1

해당 언어의 책자를 가져옵니다. –

답변

1
cout << (int) *p1++ << ' '; 

:

  1. 문자 p1 가리키는은 int로 변환 한 다음 cout 공간에 기록된다.
  2. p1은 다음 문자를 가리 키도록 진행됩니다 (이것은 p1++의 기능입니다).
4
while (*p1) 
    cout << (int) *p1++ << ' '; 

수단은

  • 0 (즉 '\0')
    • 상이한있는 문자 값 p1 포인트는 포인터 p1의 (*p1 = 역 참조 가리키는 특성을 구하는 동시에)
    • 이 문자를 int으로 변환하면 ASCII 코드가 출력됩니다. 테드 (대신 문자의 수)
    • 증가 포인터 p1 그것은 다음 문자를 가리하게 그냥 인쇄 된 숫자 후
    • 출력 공간은
0

그것은 아주 쉽게 :)

while (* p1) => p1이 가리키는 바이트가 0이 아닌 한 .... cout < < (int) * p1 ++ < < ''; => p1이 가리키는 char를 출력하고 이후에 포인터를 증가시킨다. 결과 (char)를 int에 캐스트 해 출력 해주세요.

while (* p) {do_somthing(); p ++;}는 C 문자열을 반복하는 일반적인 방법입니다.