当前位置: 首页 > 面试题库 >

“ for”循环中的后递增和预递增产生相同的输出

钮瀚
2023-03-14
问题内容

即使其中一个使用后递增,另一个使用前递增,以下for循环也会产生相同的结果。

这是代码:

for(i=0; i<5; i++) {
    printf("%d", i);
}

for(i=0; i<5; ++i) {
    printf("%d", i);
}

对于两个“ for”循环,我得到相同的输出。我想念什么吗?


问题答案:

评估i++或之后,两种情况下++i的新值i将相同。增量前和增量后的差异是对表达式本身求值的结果。

++i递增i并评估为的新值i

i++计算为的旧值i,并递增i。

在for循环中这无关紧要的原因是控制流程大致如下所示:

  1. 测试条件
  2. 如果为假,则终止
  3. 如果是真的,执行身体
  4. 执行增量步骤

因为(1)和(4)是解耦的,所以可以使用前递增或后递增。



 类似资料:
  • 问题内容: 我正在从Java切换到C ,并且想知道C 是否包含我在Java中使用的增强的for循环,例如: 在C ++中是否可能有相同的“快捷方式”? 问题答案: 在C ++ 11中,如果编译器支持,则可以。这称为基于范围的。 它适用于C样式数组以及具有函数并返回迭代器的任何类型。例:

  • 我正在遍历一个LinkedHashMap并递增I counter,下面是我使用for循环的方式

  • 问题内容: 我正在做一些有关Java的研究,发现这很令人困惑: 这是永无止境的循环! 有人很好地解释了为什么会发生这种事情吗? 问题答案: 上面的循环与以下内容基本相同:- 3 次你的一部分声明- ,被评估为: - 您需要从此处删除分配,以使其起作用:- (根据评论的OP请求) 的行为:- 就注释中指定的问题而言,以下表达式的结果:- 获得如下:- 让我们标记第二条语句的不同部分:- 现在,首先将

  • 问题内容: 在玩循环的同时创建了以下代码。下面的代码将斐波那契值存储到数组中,然后使用for循环将其打印出来。 上面的代码工作正常。但是,第一次将它们放在一起时,我使用了增强的for循环来打印出值(代码中的第二个for循环)。可以很好地编译,但是运行时得到以下信息: 我不明白出了什么问题。更改第二个循环不应更改值(您会注意到斐波那契值是错误的(即缺少值))。而且我不明白为什么简单的增强型for循环

  • 给定一个整数数组nums和一个整数目标,返回两个数字的索引,使它们相加到目标。我已经尝试了下面解决方案的几个修改版本。 当通过三个测试用例时,前两个返回正确的结果,最后一个用例返回第一个正确的索引,但最后一个索引(技术上)是不正确的。 使用的测试用例: > nums=[3,2,4],目标=6 预期产出:[1,2] 实际产出:[1,2] nums=[3,3],target=6 预期输出:[0,1]

  • 我正在尝试编写一个简单的程序,它将使用Scanner进行输入并输出最低数字、最高数字以及它们的平均值。但我不希望数字低于0或大于100。我有输出最小值、最大值和平均值的程序,它会告诉我是否输入了小于0或大于100的数字,但它仍然将其视为for循环中的“旋转”。我基本上希望程序返回到上一个数字,而不是在输入错误数字时继续在for循环中前进。有什么建议吗?谢谢!