78

我有一个int指针(即int *count),我想使用++运算符递增指向的整数。我想我会打电话给:

*count++;

但是,我收到了一个构建警告"expression result used"。我可以打电话

*count += 1;

但是,我也想知道如何使用++运算符。有任何想法吗?

4

2 回答 2

104

++ 与 * 具有相同的优先级,并且关联性是从右到左的。见这里。它变得更加复杂,因为即使 ++ 将与指针相关联,增量也会在语句评估之后应用。

事情发生的顺序是:

  1. 后自增,记住后自增的指针地址值作为临时
  2. 取消引用非递增指针地址
  3. 将递增的指针地址应用于 count,count 现在指向其类型实体的下一个可能的内存地址。

您收到警告是因为您从未在步骤 2 中实际使用取消引用的值。就像@Sidarth 所说,您需要括号来强制评估顺序:

 (*ptr)++
于 2010-09-07T04:23:45.743 回答
19

尝试使用(*count)++. *count++可能会将指针递增到下一个位置,然后使用间接(这是无意的)。

于 2010-09-07T04:19:42.480 回答