所以我很困惑如何不首先评估后增量。 (根据优先级,后递增优先。)有人可以解释一下吗?
考虑下面给出的代码:
int main()
{
char arr[] = "iitbforgoodlife";
char *ptr = arr;
while(*ptr != '\0')
++*ptr++;
printf("%s %s", arr, ptr);
getchar();
return 0;
}
输出为:
jjucgpshppemjgf
后自增作为主要表达式运算符,具有最高优先级。但新值直到序列点完成后才会生效,因此指针变量在此之前保持其原始值。
接下来是一元运算符
*
,它取消引用指针以返回底层对象,该对象是数组 arr
中的一个字符。
最后是预自增运算符,也是一元运算符,与
*
具有相同的优先级。但是,它会在稍后计算,因为这些运算符是从右到左计算的。因此,预增量应用于由 *
运算符生成的对象。