2

このプログラムは char を ASCII コードに変換します プログラムは完璧に動作しますが、行がどのように機能するのかわかりませんcout << (int) *p1++ << ' ';。特に*p1++この内側のwhileループでは:

#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"));
 }
4

3 に答える 3

4
while (*p1) 
    cout << (int) *p1++ << ' ';

意味:

  • whilep1は、0 とは異なる文字値 (つまり'\0') を指します。
    • それが指している文字を取得する ( *p1= ポインターの逆参照p1)
    • この文字を にキャストしintて、ASCII コードを出力します (文字ではなく数値)
    • 印刷されたばかりの数字の後にスペースを出力する
    • ポインタをインクリメントp1して次の文字を指すようにする
于 2013-03-26T09:30:04.610 に答える
1
cout << (int) *p1++ << ' ';

ここ:

  1. が指す文字p1は に変換さintれ、coutその後に 1 つのスペースが続きます。
  2. p1次の文字を指すように進められます (これが何をするかp1++です)。
于 2013-03-26T09:28:55.747 に答える
0

とても簡単です:)

while (*p1) => p1 が指すバイトがゼロでない限り.... cout << (int) *p1++ << ' '; => p1 が指す char を出力し、その後ポインタをインクリメントします。結果 (char) を int にキャストして出力します。

while (*p) {do_somthing(); p++;} は、ac 文字列を反復処理する一般的な方法です。

于 2013-03-26T09:31:41.913 に答える