问题标签 [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 投票
1 回答
407 浏览

android - android中增量运算符的实现

我对前后增量进行了一些测试,以确定 android 上的两个运算符之间是否存在性能或功耗差异。

我没有发现任何差异。

基本论文在这里得到了很好的解释:http ://www.roman10.net/pre-increment-and-post-increment/ (pre更快,因为没有生成temp-var)。

我为 c++ 学习了这一点,这个网站显示了 c 实现,但我无法弄清楚如何在 android 中完成实现(可能不同)。

用于测试的代码是

正如你可以想象的那样,这是用于预增量的块,用于后期类似的块。我使用 tamp var "lTMP" 来确保分配了运算符的返回值,并且编译器不会转换增量运算符。

所以任何人都可以帮助我,如何找到实现。编译器仍然可以转换运算符,当它被批准时,“lTMP”永远不会被读取?编译时是否会自动删除此类语句?

0 投票
3 回答
7640 浏览

c - C中的后增量和前增量

我对这两个 C 语句有疑问:

  1. x = y++;

  2. t = *ptr++;

使用语句 1,y 的初始值被复制到 x 中,然后 y 递增。

在语句 2 中,我们查看 *ptr 指向的值,将其放入变量 t 中,然后再增加 ptr。

对于语句 1,后缀自增运算符的优先级高于赋值运算符。那么不应该先增加y,然后将x分配给y的增加值吗?

在这些情况下,我不了解运算符的优先级。

0 投票
2 回答
108 浏览

c# - C# 代码的行为

可能重复:
在 C# 中解释后增量

考虑以下 C# 代码:-

我得到的输出为2. 为什么没有效果i = i++

0 投票
3 回答
673 浏览

java - C++ 和 Java 之间的表达式求值顺序有何不同?

试图理解此页面上的示例使我的大脑皱巴巴: http ://answers.yahoo.com/question/index?qid=20091103170907AAxXYG9

更具体地说,这段代码:

给出输出:566

现在,如果表达式从右到左求值,这对我来说是有意义的,但是在 Java 中是一个类似的表达式:

给出的输出:456

哪个更直观,因为这表明它是从左到右评估的。在各个站点上对此进行了研究,似乎对于 C++,编译器之间的行为有所不同,但我仍然不相信我理解。Java 和 C++ 之间的这种评估差异的解释是什么?谢谢。

0 投票
2 回答
247 浏览

java - 我在这段代码中嵌入了一个倒数计时器,但它没有

现在是 XML 文件。textView1 是按钮被点击的次数。timeElapsed 用于倒计时显示。事情是当我实现一个倒数计时器时它没有显示。我检查了所有小错误,比如显示器和背景的颜色是否相同;一切似乎都很好。可悲的是,我删除了倒数计时器的代码而没有备份。

0 投票
1 回答
585 浏览

java - SCJP 程序给出输出 8 2 怎么样?

我尝试了这段 scjp 代码,我得到了输出 5 3 谁能告诉我哪里出错了

0 投票
4 回答
7975 浏览

java - 赋值给变量没有效果?

当我这样做时:count = ++count; 为什么我会收到警告 - 分配给变量 count 无效?这意味着计数增加,然后分配给它自己或其他东西?它和 ++count 一样吗?count = count++ 会发生什么;? 为什么我没有收到警告?

0 投票
2 回答
485 浏览

c++ - 你可以在c中的同一个语句中对同一个变量有一个增​​量器和一个减量器吗

C 中的有效语句?(它会编译/运行)这有什么实际应用吗?

很抱歉在编辑中更改了问题,但我发现了一些东西。

根据我的 C++ 编译器(Visual Studio 2010):

是一个有效的命令,但

不是。这有什么原因吗?

0 投票
1 回答
705 浏览

c++ - C++ OutputIterator 后增量要求

C++ 要求 OutputIterator 类型X支持形式的表达式r++,其中r是 的实例X。这个后缀增量必须在语义上等价于:

(*) { X tmp = r; ++r; return tmp; }

并且必须返回可转换为X const&. 在 C++11 中,请参阅 24.2.4(但这并不是新的)。在同一部分,它说

输出迭代器的算法永远不应该尝试通过同一个迭代器两次。它们应该是单通道算法。

给定(*),上面说我复制返回值,如X a(r++);

  1. 假设r在递增之前是可取消引用的,但没有被取消引用。是否需要a可取消引用?如果是这样,是否必须X a(r++); *a = t;执行与其他情况相同的任务*r++ = t;a和是否有任何(其他)条件r

  2. 否则,假设r在递增之前被取消引用/分配,并且其递增值(也)是可取消引用的。以下哪项(如果有)是明确定义的: (a) *a = t;、 (b) ++a; *a = t;、 (c) *r = t;


另请参阅后续内容:取消引用分配给双倍递增的 OutputIterator

0 投票
1 回答
286 浏览

c++ - 对双倍递增的 OutputIterator 的取消引用分配

根据(优秀)问题C++ OutputIterator post-increment requirements,我们观察到对于 type 的可取消引用和可递增值r以及适当类型的OutputIteratorX,表达式o

是有效的并且具有等效的语义

但是,如果在中间期间多次增加,是否仍然a是可取消引用分配的情况?r也就是说,这段代码有效吗?

很难看出对一个值的操作如何影响对另一个值的操作的有效性,但例如InputIterator(24.2.3) 在后置条件下具有++r

之前的值的任何副本r不再需要是可解引用的或在 的域中==

相关部分:24.2.2 迭代器24.2.4 输出迭代器17.6.3.1 模板参数要求

此外,如果这不需要有效,是否存在利用其无效性有助于实现OutputIterator类型(效率、简单性)同时仍遵守现有要求的任何情况?