В соответствии
while(*cp++>0)
Оператор постинкремента выполняется после того, как произойдет оценка.
то есть cp указывает на C
во время первой оценки условия while.
So,
*cp => 'C' which is greater than 0.
Перед переходом к следующей строке (внутри цикла) выполняется оператор постинкремента, в результате чего cp указывает на первый +
После того, как +
напечатано, снова выполняется условие while, на этот раз *cp возвращает '+'. начиная с '+' > 0
управление входит в цикл во второй раз.
Перед входом в цикл оператор постинкремента выполняется снова, заставляя cp указывать на второй «+», который печатается.
Теперь, пока условие выполняется в третий раз. Здесь *cp
возвращает +
. Таким образом, управление снова входит в цикл.
Перед входом в цикл постинкремент выполняется снова. На этот раз он указывает cp на следующий символ, то есть на \0
.
Печатается \0
, что не имеет значения в этом коде. Затем, когда условие while выполняется снова, *cp возвращает \0, что не > 0. Таким образом, условие не выполняется.
Редактировать. Увидел в комментариях, что вы хотели напечатать всю строку в одной строке. Измените цикл на:
while(*cp > 0)
std:cout<<*cp++;
person
Aswin Murugesh
schedule
30.07.2015
'\0'
в потокcout
. Это UB, как указано некоторыми людьми в этом вопросе. - person Mohit Jain   schedule 30.07.2015\0
) - person Aaron McDaid   schedule 30.07.2015