[英]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.