问题标签 [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.
android - android中增量运算符的实现
我对前后增量进行了一些测试,以确定 android 上的两个运算符之间是否存在性能或功耗差异。
我没有发现任何差异。
基本论文在这里得到了很好的解释:http ://www.roman10.net/pre-increment-and-post-increment/ (pre更快,因为没有生成temp-var)。
我为 c++ 学习了这一点,这个网站显示了 c 实现,但我无法弄清楚如何在 android 中完成实现(可能不同)。
用于测试的代码是
正如你可以想象的那样,这是用于预增量的块,用于后期类似的块。我使用 tamp var "lTMP" 来确保分配了运算符的返回值,并且编译器不会转换增量运算符。
所以任何人都可以帮助我,如何找到实现。编译器仍然可以转换运算符,当它被批准时,“lTMP”永远不会被读取?编译时是否会自动删除此类语句?
c - C中的后增量和前增量
我对这两个 C 语句有疑问:
x = y++;
t = *ptr++;
使用语句 1,y 的初始值被复制到 x 中,然后 y 递增。
在语句 2 中,我们查看 *ptr 指向的值,将其放入变量 t 中,然后再增加 ptr。
对于语句 1,后缀自增运算符的优先级高于赋值运算符。那么不应该先增加y,然后将x分配给y的增加值吗?
在这些情况下,我不了解运算符的优先级。
java - C++ 和 Java 之间的表达式求值顺序有何不同?
试图理解此页面上的示例使我的大脑皱巴巴: http ://answers.yahoo.com/question/index?qid=20091103170907AAxXYG9
更具体地说,这段代码:
给出输出:566
现在,如果表达式从右到左求值,这对我来说是有意义的,但是在 Java 中是一个类似的表达式:
给出的输出:456
哪个更直观,因为这表明它是从左到右评估的。在各个站点上对此进行了研究,似乎对于 C++,编译器之间的行为有所不同,但我仍然不相信我理解。Java 和 C++ 之间的这种评估差异的解释是什么?谢谢。
java - 我在这段代码中嵌入了一个倒数计时器,但它没有
现在是 XML 文件。textView1 是按钮被点击的次数。timeElapsed 用于倒计时显示。事情是当我实现一个倒数计时器时它没有显示。我检查了所有小错误,比如显示器和背景的颜色是否相同;一切似乎都很好。可悲的是,我删除了倒数计时器的代码而没有备份。
java - SCJP 程序给出输出 8 2 怎么样?
我尝试了这段 scjp 代码,我得到了输出 5 3 谁能告诉我哪里出错了
java - 赋值给变量没有效果?
当我这样做时:count = ++count; 为什么我会收到警告 - 分配给变量 count 无效?这意味着计数增加,然后分配给它自己或其他东西?它和 ++count 一样吗?count = count++ 会发生什么;? 为什么我没有收到警告?
c++ - 你可以在c中的同一个语句中对同一个变量有一个增量器和一个减量器吗
是
C 中的有效语句?(它会编译/运行)这有什么实际应用吗?
很抱歉在编辑中更改了问题,但我发现了一些东西。
根据我的 C++ 编译器(Visual Studio 2010):
是一个有效的命令,但
不是。这有什么原因吗?
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++);
假设
r
在递增之前是可取消引用的,但没有被取消引用。是否需要a
可取消引用?如果是这样,是否必须X a(r++); *a = t;
执行与其他情况相同的任务*r++ = t;
?a
和是否有任何(其他)条件r
?否则,假设
r
在递增之前被取消引用/分配,并且其递增值(也)是可取消引用的。以下哪项(如果有)是明确定义的: (a)*a = t;
、 (b)++a; *a = t;
、 (c)*r = t;
?
另请参阅后续内容:取消引用分配给双倍递增的 OutputIterator
c++ - 对双倍递增的 OutputIterator 的取消引用分配
根据(优秀)问题C++ OutputIterator post-increment requirements,我们观察到对于 type 的可取消引用和可递增值r
以及适当类型的OutputIterator
值X
,表达式o
是有效的并且具有等效的语义
但是,如果在中间期间多次增加,是否仍然a
是可取消引用分配的情况?r
也就是说,这段代码有效吗?
很难看出对一个值的操作如何影响对另一个值的操作的有效性,但例如InputIterator
(24.2.3) 在后置条件下具有++r
:
之前的值的任何副本
r
不再需要是可解引用的或在 的域中==
。
相关部分:24.2.2 迭代器、24.2.4 输出迭代器、17.6.3.1 模板参数要求。
此外,如果这不需要有效,是否存在利用其无效性有助于实现OutputIterator
类型(效率、简单性)同时仍遵守现有要求的任何情况?