#include<stdio.h>
int main()
{
char arr[] = "abcdef";
char *ptr = arr;
while(*ptr != '\0')
++*ptr++;
printf("%s %s",arr,ptr);
return 0;
}
输出:bcdefg
它正在打印给定的每个字母表中的下一个字母表。 到底发生了什么?
最佳答案
这里有三个运算符:后缀++
、前缀++
和间接*
。
后缀 ++
的优先级高于其他两个,将首先进行评估。但是,当使用后缀 ++
时,值计算会在更新存储值的副作用(即递增指针)之前进行排序。因此,指针 ptr
将递增,但其他两个操作数 ++
和 *
中使用的值将是旧值。
前缀++
和间接运算符具有相同的优先级,但从右到左进行计算。因此间接 *
首先执行,然后前缀 ++
递增 ptr
指向的对象指针的值。
关于c - 解释一下输出。它正在打印每个字母表的下一个字母表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31079542/