0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

for循环中i++与++i的区别

科技绿洲 来源:网络整理 作者:网络整理 2023-11-26 09:20 次阅读

i++和++i都是增加变量i的值的运算符,但它们之间有着一些微小的区别。在这篇文章中,我将详尽、详实、细致地解释i++和++i之间的差异,并探讨它们在循环中的应用。

首先,让我们明确i++和++i的含义。i++被称为后缀递增运算符,它的作用是先使用变量i的值,然后再将i的值加一。而++i被称为前缀递增运算符,它的作用是先将i的值加一,然后再使用i的值。尽管这两个运算符都会增加变量的值,但它们在使用变量值的时机上稍有不同。

在循环中,i++和++i可以用于增加循环变量的值,以控制循环的执行次数。接下来,我们将详细讨论这两个运算符在循环中的不同应用。

首先,让我们看一下i++的应用。当使用i++时,循环体会首先执行,然后才会增加循环变量的值。这意味着,在使用i的值之前,循环体中的代码会先执行一次。例如,考虑以下的for循环:

for (int i = 0; i < 5; i++) {
// 循环体
System.out.println(i);
}

在这个循环中,变量i的初始值为0。每次循环都会执行循环体中的代码,并打印出循环变量i的值。执行结果如下:

0
1
2
3
4

可以看到,在每次循环后,i的值都会增加1。循环体会在每次增加i的值之前执行。

现在,让我们来看一下++i的应用。当使用++i时,循环体会在增加循环变量的值之前执行。这意味着,在使用i的值之前,循环体中的代码不会被执行。以下是使用++i的for循环示例:

for (int i = 0; i < 5; ++i) {
// 循环体
System.out.println(i);
}

在这个循环中,循环体中的代码会在每次增加i的值之前执行。执行结果与之前的例子相同:

0
1
2
3
4

可以看到,循环体中的代码在每次增加i的值之前被执行。

现在我们对i++和++i的差异在循环中有了基本的了解,接下来我们将探讨它们在不同场景中的适用性。

首先,让我们考虑一个常见的应用情景:循环中的数组遍历。在这种情况下,无论使用i++还是++i,循环的行为都是相同的。例如,我们想要遍历一个数组并打印出其中的元素,以下是使用i++的示例:

int[] arr = {1, 2, 3, 4, 5};

for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}

上述代码会打印出数组arr中的每个元素。使用++i的示例也具有相同的效果:

int[] arr = {1, 2, 3, 4, 5};

for (int i = 0; i < arr.length; ++i) {
System.out.println(arr[i]);
}

在这个例子中,使用i++或++i的唯一区别是循环体中的代码执行的时机。

然而,有一种情况下i++和++i会产生不同的结果,那就是它们被使用在表达式中。在这种情况下,++i会比i++更有优势。让我们看一个例子来说明这个差异。

假设我们有一个需求,要求循环变量i的平方值与10的商小于5时,继续循环。以下是使用i++的示例:

int i = 0;

while ((i * i) / 10 < 5) {
System.out.println(i);
i++;
}

这段代码将打印出i的值,并在i的平方值与10的商小于5时继续循环。然而,由于使用的是i++,循环中的条件判断会在i的值增加之后进行。这意味着,在循环条件判断为假之前,循环体会多执行一次。以下是输出结果:

0
1
2
3
4

现在,让我们看一下使用++i的示例:

int i = 0;

while ((i * i) / 10 < 5) {
System.out.println(i);
++i;
}

在这个示例中,循环条件判断会在i的值增加之前进行。这意味着,在循环条件判断为假之前,循环体不会再多执行一次。以下是输出结果:

0
1
2
3

从上述示例中可以看出,使用++i可以更准确地控制循环的执行次数。

总结起来,i++和++i之间的主要区别在于它们对变量值的使用时机。i++会在使用变量值之后增加变量的值,而++i会在增加变量的值之前使用变量的值。在循环中,这两个运算符的效果通常是相同的,但在某些特殊的情况下,选择合适的运算符可以影响循环的行为。

在循环中,i++和++i的选择应该基于具体的需求和上下文。当需要在使用变量值之前增加变量的值时,应该使用i++。当需要在增加变量的值之前使用变量的值时,应该使用++i。在大多数情况下,这两个运算符的选择并不会对循环的结果产生显著的影响。

希望这篇文章能够帮助你理解i++和++i之间的差异,并为你在循环中正确使用这两个运算符提供指导。无论你选择使用i++还是++i,都需要根据具体的需求来决定,并考虑到它们对循环行为的影响。有了正确的选择,你可以更加灵活地控制循环的执行次数,以满足你的编程需求。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 变量
    +关注

    关注

    0

    文章

    599

    浏览量

    28179
  • 运算符
    +关注

    关注

    0

    文章

    163

    浏览量

    10984
  • for循环
    +关注

    关注

    0

    文章

    61

    浏览量

    2445
收藏 人收藏

    评论

    相关推荐

    STM8S程序每次执行到for循环,只能执行一次,走到i++时,程序跑飞,是怎么回事?

    ]; } rece_flag=0; GPIOD->ODR=~GPIO_PIN_7;//receive } } 程序每次执行到for循环,只能执行一次,走到i++时,程序跑飞,是怎么回事?
    发表于 04-28 08:10

    keil C 语句中i++ 的问题

    keil C 语句代码中 i++ 出现不是加1的结果 不明白是什么问题 请指教 谢谢 代码如下:(里面的都是char型) if (i == Nm) { if(i > 2
    发表于 08-19 14:11

    编程问题;为什么输出为:i,i++,i++=12,11,10

    求指导#includeint main(){int i=10;printf("i,i++,i++=%d,%d,%d\n",i,
    发表于 11-03 00:53

    for 循环和while 循环中i怎么样才能清零呢?

    for 循环和while 循环中i,有时候需要清零以便重新计数,怎么弄呢?
    发表于 04-30 09:21

    i--,--ii++,++i区别

    #includevoid main(){int i=3;printf("i=%d\n",--i); } 运行结果 i=2;#includevoid main(){int
    发表于 08-21 13:14

    如何在for循环中为每个测试添加不同的操作?

    我需要在for循环中创建测试,对于每个测试,我必须添加不同的操作。我该怎么做到这一点?如何在for循环中为每个测试添加不同的操作? 以上来自于谷歌翻译 以下为原文I need to create
    发表于 11-13 10:25

    关于C语言中i++和++id的使用

    最近在温习C语言时用到了关于printf语句,其中里面的一段代码“int i = 1;iprintf("%d,%d,%d\n",i++,i,++i)”输出结果为2,3,3.请问
    发表于 03-14 09:34

    三星i9300和i939有什么区别_i9300和i939区别

    三星i9300和i939有什么区别?三星i9300怎么样,三星i939怎么样?据了解三星i930
    发表于 09-14 15:38 9142次阅读

    高效的C编程之C循环结构

    14.5 C循环结构 循环体是程序设计与优化的重点考虑对象。本节将着重讲解在ARM上处理for和while循环最有效的方法。 14.5.1 循环中止 首先来看下面的例子,两个不同的
    发表于 10-17 16:55 3次下载

    嵌入式C语言语法中i++和++i的执行效率一样高吗

    i++;++i;就C语言代码来看,i++ 和 ++i 都只有一行,看起来似乎二者的执行效率一样了?其实不是的,在学习C语言时,教材和老师一般都会强调
    发表于 08-27 11:35 841次阅读

    为何++ii++执行效率高一些呢?

    当然,就C语言代码来看,i++ 和 ++i 都只有一行,看起来似乎二者的执行效率一样了?其实不是的,在学习C语言时,教材和老师一般都会强调 i++ 和 ++i
    的头像 发表于 12-03 15:37 6020次阅读
    为何++<b class='flag-5'>i</b>比<b class='flag-5'>i++</b>执行效率高一些呢?

    CPU1500之循环的定义

    在该循环中,过程映像分区 0 将自动更新。通过“自动更新” (Automatic update) 设置(默认)组态 I/O 模块时,应将 I/O 地址分配给这些过程映像分区 (PIPI 0/PIPQ 0) 。
    的头像 发表于 03-02 15:50 2408次阅读
    CPU1500之<b class='flag-5'>循环</b>的定义

    i = i++ 后,结果究竟是什么

    前言: 之前有朋友跟我讨论过一个问题,他问在java中,i=1;i=i++;之后的结果时什么,我一开始认为是2,但当他说答案是1的时候,我不得不想一个合理的解释,我想,可能是因为临时变量,当i
    的头像 发表于 08-14 10:16 3903次阅读

    C/C++灵魂拷问:++ii++哪个执行效率高?有什么区别

    当然,就C语言代码来看,i++和++i都只有一行,看起来似乎二者的执行效率一样了?其实不是的,在学习C语言时,教材和老师一般都会强调i++和++i
    的头像 发表于 03-31 14:04 1828次阅读

    C语言灵魂拷问: ++i为何比i++执行效率高!

    当然,就C语言代码来看,i++ 和 ++i 都只有一行,看起来似乎二者的执行效率一样?其实不是的,在学习C语言时,教材和老师一般都会强调 i++ 和 ++i
    的头像 发表于 03-07 11:02 567次阅读