[英]precedence of ++ (post,prefix) nd dereference operator
以下代码的输出不应为f
我得到一个输出e
#include<stdio.h>
void main(){
char arr[]="Geeks";
char *ptr = arr;
++*ptr++;
printf("%c\n",*ptr);
}
不,不应该。 您的代码将第一个字符递增,然后将指针向前移动一个。 指针将指向第一个e
,根据您的语言环境/字符编码,第一个字母很可能是H
根据优先级和关联性规则将表达式解析为:
++(*(p++))
是的,表达式被解析为++ * ((ptr ++)),首先计算ptr ++,但是由于它是后缀增量,因此新的计算值不会更新ptr的旧值,直到语句结束(;)为止。 接下来的++ **(ptr ++)是根据结果的ptr的旧值计算的,G变为H。现在完成所有工作,该语句结束并且ptr值被更新,指向下一个元素e。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.