带有和没有括号的C 代码的区别是什么?

What is the difference for this C++ code with and without the parentheses?

本文关键字:代码 区别 是什么      更新时间:2023-10-16

在以下代码中,括号的目的是什么?如果括号不存在,会发生什么?抱歉,我是C 的新手。

void foo(int * xPtr) {
  (*xPtr)++;
}

带有括号,您可以递增指针引用的对象,而没有它们,您将递增指针到下一个内存地址,然后将其删除(在这种情况下,这无用)。

如果不存在括号,那么您基本上正在修改xPtr中存储的存储地址,然后将指针删除。很明显,这不是所需的。

说我们希望存储在内存位置1000的值,但是

*xPtr++;

导致内存位置增加4,然后访问内存位置的值1004,假设机器上的整数大小为4 bytes

(*xPtr)++将增加 xPtr的点。

PostFix ++的优先级高于一元*;如果没有括号,代码将被解析为*(xPtr++)-您正在递增xPtr,而不是xPtr指向。