【发布时间】:2015-10-25 14:10:48
【问题描述】:
以下程序给出输出:
hffltgpshfflt
谁能解释一下 postfix++、prefix++ 和 dereference(*) 运算符的运算符优先级如何决定这个输出?
#include<stdio.h>
int main()
{
char arr[] = "geeksforgeeks";
char *ptr = arr;
while(*ptr != '\0')
++*ptr++;
printf("%s %s", arr, ptr);
getchar();
return 0;
}
【问题讨论】:
-
@JoachimPileborg 好的,在这里撤回关闭投票——在这种情况下你是对的,前缀 ++ 绑定到取消引用的 ptr。只是添加......为什么要写这样的代码?但是好吧,假设这是一个实验室示例或类似的东西......
-
@MartinJames:不是真的...
-
只是添加我真的不得不手动放置括号(就像 Joachim 在他的回答中所做的那样)以理解它 not 在此示例中由两个
++修改的相同内存位置.这绝对是没有人愿意在“生产”中看到的代码。 :)
标签: c language-lawyer operator-precedence