我在 C 中有以下代码(我使用的是 tdm-gcc 4.9.1 和 Netbeans 8.0.2):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char * pr(char * str);
int main(void)
{
char * x;
x = pr("Ho Ho Ho!");
return 0;
}
//*************************************
char * pr(char * str)
{
char * pc;
pc = str;
while (* pc)
{
putchar(* pc++);
printf(" %d %d\n", pc, str);
}
printf("\n");
printf(" %d %d\n", pc, str);
printf("\n");
do
{
putchar(* pc--); // alternate case: * --pc
printf(" %d %d\n", pc, str);
} while (pc - str);
return (pc);
}
在 do-while 循环中,当 putchar 函数内的参数为
* pc--
我打印了以下结果(第一列打印字符串“Ho Ho Ho!”,一次一个字符,第二列打印指向字符 pc 的地址,而第三列打印指向 char str 的指针的地址:
H 4206629 4206628
o 4206630 4206628
4206631 4206628
H 4206632 4206628
o 4206633 4206628
4206634 4206628
H 4206635 4206628
o 4206636 4206628
! 4206637 4206628
4206637 4206628
4206636 4206628
! 4206635 4206628
o 4206634 4206628
H 4206633 4206628
4206632 4206628
o 4206631 4206628
H 4206630 4206628
4206629 4206628
o 4206628 4206628
或者
Ho Ho Ho!!oH oH o
当 putchar 函数内的参数是
* --pc
对应的结果是
H 4206629 4206628
o 4206630 4206628
4206631 4206628
H 4206632 4206628
o 4206633 4206628
4206634 4206628
H 4206635 4206628
o 4206636 4206628
! 4206637 4206628
4206637 4206628
! 4206636 4206628
o 4206635 4206628
H 4206634 4206628
4206633 4206628
o 4206632 4206628
H 4206631 4206628
4206630 4206628
o 4206629 4206628
H 4206628 4206628
或者
Ho Ho Ho!!oH oH oH
我的问题如下:关于do-while循环中putchar函数的输出,后缀和前缀减量运算符有什么区别?
任何反馈将不胜感激。