问题标签 [post-increment]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4037 浏览

c++ - 实现 C++ 后缀增量运算符

我编译了以下示例:

cplusplus.com/reference我得到编译器警告:

这里有什么问题?后缀签名是否应该是myiterator operator++(int)按值返回?

是否在某个地方定义了 STL 迭代器上的后缀签名应该是什么样的?

0 投票
13 回答
135474 浏览

c++ - 后增量和前增量概念?

我不明白后缀和前缀递增或递减的概念。谁能给出更好的解释?

0 投票
1 回答
354 浏览

c++ - 后缀增量是否对返回值执行增量?

又是一个愚蠢的问题。

尽管我期望为 0,但由于该程序,我得到1了打印:首先创建了一个等于 0 的临时对象,然后 i 递增,然后返回临时对象并将其分配给 i。只是根据:

5.2.6 递增和递减[expr.post.incr] 1 应用后缀++得到的值是操作数在应用运算符之前的值。[注:得到的值是原值的副本]

我在 MS VC 2008 和 GCC 下检查了它。它们给出了相同的结果,尽管至少 gcc 在增量字符串中发出警告。我哪里错了?

0 投票
2 回答
1412 浏览

c - 关于序列点的后增量

后自增运算符何时影响自增?我遇到了两种意见:

1)来自http://gd.tuwien.ac.at/languages/c/programming-bbrown/c_015.htm

POST 表示在任何赋值操作之后执行操作。

2)更近一点,关于 SO(尽管是 C++)的答案说:

...延迟增量直到表达式结束(下一个序列点)。

后增量操作也是如此...

A)等到一个序列点到达或

B)发生赋值运算符或

C)发生在序列点之前的任何时间?

0 投票
8 回答
1311 浏览

c++ - 运算符优先级.. () 和 ++

礼炮..

我有一个不寻常的问题。 在 MSDN 库的这个表中,我们可以看到()的优先级高于++ (Pre-increment)。但是当我运行这段代码时,似乎++(prefex)的优先级更高:

答案是:

x=6

这仅发生在 prefex ++ 中,并且可以按照我对post-increment 的预期工作。

有什么理由吗?问候..

x=4

(我使用 Microsoft Visual C++ 2010 express)

0 投票
4 回答
448 浏览

c - a[j++] = ++i 的等效表达式,不使用前置或后置自增运算符

所以我在思考这个问题(这是一个家庭作业/考试复习问题):

a[j++] = ++i;在不使用前/后自增运算符的情况下写下等价的表达式。如果无法提供这样的表达,请解释原因。

我能够想出以下内容:

a[j] = i+=1;
j+=1;

我想不出一种方法来增加 a[] 中的 j 作为后增量,而不是在j+=1;之后使用,我相信这会导致无法提供这样的表达式的答案(因为它的两行代码而不是一行)和只是解释一下,如果没有后增量运算符,您就不能后增量。

我错过了什么还是我正确?我只是想仔细检查一下。提前致谢。

编辑:感谢@James McNellis,他提供了一种使用方法 a[(j+=1)-1] = (i+=1);

0 投票
3 回答
678 浏览

c - 当取消引用和后递增指向函数指针的指针时,首先会发生什么?

鉴于此代码:

函数调用发生在增量之前还是之后?
即:这会打印“Foo Foo Foo ...”还是“Foo Bar”?

0 投票
4 回答
2360 浏览

c++ - switch 语句和增量运算符

我写了以下代码:

代码的输出是这样的:

谁能解释一下输出的第一行?为什么 0 和 1 都被打印?

0 投票
7 回答
17478 浏览

c++ - C/C++ 后增量超过一

我正在从缓冲区读取字节。但有时我正在阅读的是一个单词或更长的内容。

这很好,但我怎样才能将位置增加 2 或 4?我无法让+=操作员进行后增量,是吗?

原因是,我想要评估这个可怕的大表达式,同时增加位置变量。

我想我想出了自己的解决方案。我很确定它有效。但是每个人都会讨厌它,因为这不是可读的代码。

在对其进行一些测试以确保它做正确的事情后,我将把它变成一个宏。

综上所述:

不要这样做。这只是一个坏主意,因为这是生成无法维护的代码的那种事情。但是......事实证明,将任何预递增运算符转换为后递增运算符确实非常容易。

0 投票
11 回答
98751 浏览

java - Java: Prefix/postfix of increment/decrement operators?

From the program below or here, why does the last call to System.out.println(i) print the value 7?