【发布时间】:2011-04-09 00:23:41
【问题描述】:
我有一个int 指针(即int *count),我想使用++ 运算符递增指向的整数。我想我会打电话给:
*count++;
但是,我收到了构建警告“表达式结果未使用”。我可以:打电话
*count += 1;
但是,我也想知道如何使用++ 运算符。有什么想法吗?
【问题讨论】:
标签: c pointers increment post-increment
我有一个int 指针(即int *count),我想使用++ 运算符递增指向的整数。我想我会打电话给:
*count++;
但是,我收到了构建警告“表达式结果未使用”。我可以:打电话
*count += 1;
但是,我也想知道如何使用++ 运算符。有什么想法吗?
【问题讨论】:
标签: c pointers increment post-increment
尝试使用(*count)++。 *count++ 可能将指针递增到下一个位置,然后使用间接寻址(这是无意的)。
【讨论】:
++ 与 * 具有相同的优先级,并且关联性是从右到左。请参阅here. 它变得更加复杂,因为即使 ++ 将与 指针 相关联,也会在语句评估后应用增量。
事情发生的顺序是:
您收到警告是因为您从未在第 2 步实际使用取消引用的值。就像@Sidarth 所说,您需要括号来强制执行评估顺序:
(*ptr)++
【讨论】:
++*ptr;,因为优先级是明确的,如果不使用结果,则无需区分前置增量和后置增量。