2013-03-26 114 views
2

該程序將字符轉換爲ASCII碼 程序完美運行,但我不明白cout << (int) *p1++ << ' ';行如何工作。 Еspecially*p1++在該內while循環:打印存儲在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

獲取有關該語言的書籍。 – 2013-03-26 09:39:12

回答

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

這裏:

  1. 字符由p1指向被轉換爲int,並寫入cout後跟一個空格。
  2. p1高級指向下一個字符(這是p1++所做的)。
4
while (*p1) 
    cout << (int) *p1++ << ' '; 

手段:

  • p1指向字符值分別爲0(即'\0'
    • 不同獲得它指向(*p1 =解引用指針p1的字符)
    • 將此字符強制轉換爲int,以便輸出ASCII碼泰德(數字代替文字)已剛剛打印的號碼後
    • 輸出空間
    • 增加指針p1,使之指向下一個字符
0

這是很容易:)

while(* p1)=>只要p1指向的字節不爲零... cout < <(int)* p1 ++ < <''; =>打印由p1指向的char,然後遞增指針。將結果(char)轉換爲int並打印出來。

while(* p){do_somthing(); p ++;}是通過c字符串迭代的常用方法。