char s[]="123",*p;
p=s;
printf("%c%c%c\n",*p++,*p++,*p++);
这要看编辑器是什么才能判断,不同编译器结果可能不一样
一般逻辑是逗号表达式从右向左执行,所以右侧值就是p首地址的值,然后p++向后移动,所以是321
因为:
*p 表示p是一个储存地址的变量
在这个程序中当运行完p=a;时,p为"1",p++也为"1"
p++和(p++)相同
printf的运行顺序是从左到右
p++是把p存储的地址+1,而p的存储地址是数组的第一个,所以相当于把p的指针往后移一位,也就是说把p指向的数组的位置往后移一位。所以就是321
以下答案引用自GPT-3大模型,请合理使用:
运行的步骤
/*
* 首先,声明一个字符数组s,并将其初始化为"123",再声明一个指向字符的指针变量p,并将其初始化为指向s的指针。
* 接下来调用printf函数打印s中的字符:*p++,*p++,*p++
* 其中*p++表示先取出当前指针所指位置的字符,然后将指针p指向下一个位置,而*p++,*p++就相当于先取出指针p指向的字符“1”,然后将指针p移动到下一个位置,再取出指针p指向的字符“2”,再将指针p移动到下一个位置,最后取出指针p指向的字符“3”。
* 由于当前指针指向的是代码行末尾的\0,因此这三次取值就分别取出了字符串s中的“1”、“2”和“3”,因此最终打印的结果就是321。
// 以下是代码运行的细节步骤:
1. 声明字符数组:char s[]="123";
2. 声明指针变量:char *p;
3. 将指针p指向字符数组s:p=s;
4. 将指针p指向的字符取出,并将指针移动到下一个位置:*p++
5. 将指针p指向的字符取出,并将指针移动到下一个位置:*p++
6. 将指针p指向的字符取出,并将指针移动到下一个位置:*p++
7. 打印取出的字符:printf("%c%c%c\n", *p-1, *p-2, *p-3);
*/
如果我的回答解决了您的问题,请采纳我的回答