c - 解释一下输出。它正在打印每个字母表的下一个字母表

标签 c pointers increment decrement

#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/

相关文章:

c - 指针和字符串操作

c++ - 在 C++ 中测试有效指针

java - 在Java中循环内递增int

c - 在 C 的单个语句中分配和比较

c - 在 C 中创建、写入和读取随机访问文件时出现意外行为

c - 共享内存的问题

c - 如何在 while 循环内重新分配 *char[] ?

javascript - 如何使用 javascript/jquery 增加点击次数?

javascript - 根据级别数组协调两个范围输入

c - 这个结构的 sizeof 发生了什么?