печать ASCII-кодов символов, хранящихся в C-строке — требуется пояснение

Эта программа преобразует символ в их код ASCII
Программа работает отлично, но я не понимаю, как линия cout << (int) *p1++ << ' '; работает. Еspecially *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"));
}

2

Решение

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

средства:

  • в то время как p1 указывает на символ, значение которого отличается от 0 (т.е. '\0')
    • получить символ, на который он указывает (*p1 = разыменование указателя p1)
    • бросить этого персонажа int чтобы выводился код ASCII (число вместо символа)
    • выходное пространство после числа, которое было только что напечатано
    • указатель приращения p1 чтобы указать на следующий символ
4

Другие решения

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

Вот:

  1. Персонаж, на который указывает p1 превращается в int и написано cout сопровождается одним пробелом.
  2. p1 продвигается, чтобы указать на следующий символ (это то, что p1++ делает).
1

Это довольно просто 🙂

while (* p1) => до тех пор, пока байт, указанный p1, не равен нулю ….
соиЬ << (int) * p1 ++ << »; => печатать char, на который указывает p1, и увеличивать указатель впоследствии. Приведите результат (char) в int и распечатайте его.

while (* p) {do_somthing (); p ++;} — это обычный способ перебора строки c.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector