Эта программа преобразует символ в их код 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"));
}
while (*p1)
cout << (int) *p1++ << ' ';
средства:
p1
указывает на символ, значение которого отличается от 0 (т.е. '\0'
)
*p1
= разыменование указателя p1
)int
чтобы выводился код ASCII (число вместо символа)p1
чтобы указать на следующий символcout << (int) *p1++ << ' ';
Вот:
p1
превращается в int
и написано cout
сопровождается одним пробелом.p1
продвигается, чтобы указать на следующий символ (это то, что p1++
делает).Это довольно просто 🙂
while (* p1) => до тех пор, пока байт, указанный p1, не равен нулю ….
соиЬ << (int) * p1 ++ << »; => печатать char, на который указывает p1, и увеличивать указатель впоследствии. Приведите результат (char) в int и распечатайте его.
while (* p) {do_somthing (); p ++;} — это обычный способ перебора строки c.