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. by 指向的字符p1被转换为 anint并写入 tocout后跟一个空格。
  2. p1前进以指向下一个字符(这就是这样p1++做的)。
于 2013-03-26T09:28:55.747 回答
0

这很容易:)

while (*p1) => 只要 p1 指向的字节不为零.... cout << (int) *p1++ << ' '; => 打印 p1 指向的字符,然后增加指针。将结果 (char) 转换为 int 并打印。

而 (*p) {do_somthing(); p++;} 是遍历 ac 字符串的常用方法。

于 2013-03-26T09:31:41.913 回答