首页
学习
活动
专区
圈层
工具
发布

For循环中,只能`i++`或者`++i`吗?

var count=0; var count1=1; for(var i=1;ii+2){ count+=i; } document.write("1~99中的奇数的和是"+count...很明显,这是死循环了,但是不应该啊,难道是i+2的问题? 于是搜索过后,恍然大悟。 因为i++,是有自加功能的,它的含义是i=i+1的缩写,它有两层含义,一是i+1,二是把得到的值再复赋值给i。...而单纯一个i+1没有赋值功能,加完以后,i的值还是原值,加上1,毫无意义。 一般的c语言程序,碰到你写的i+1或者是sum+1这样的式子,代码都会正常运行而不会报错,只是达不到预期的目的而已。...i++不是单纯+1,他存在了一个过程,i = i + 1,而这样就不是直接赋值。 至于为什么i + 2不行,因为他是一步到位,循环中这样i的值是没有任何变化的!...+2确实是+了,只是值还没到位,循环就开始,值没变化,始终为原始值,于是死循环。

72610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    面试题:对$i++和for循环的考察

    $i = 1; for(i=0; i<10; } echo $i; 解析:这道题其实主要是考察我们对$i++和for循环的理解,可以说是对基础掌握的了解。...所以a=++i 相当于i=i+1, a= 在看一下for循环 语法: for(初始值;条件;增量){ 要执行的代码; } 参数: 1、初始值:主要初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码...2、条件:循环执行的限制条件。如果为true则继续循环。如果为false,则循环结束。 3、增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。...所以上方的题目答案是: 循环第一次:0+1 = 1; 第二次:1+1 = 2; 第三次:2+1 = 3; 第四次:3+1 = 4; 第五次:4+1 = 5; 第六次:5+1 = 6; 第七次:6+1 =...7; 第八次:7+1 = 8; 第九次:8+1 = 9; 第十次:9+1 = 10; 所以$i=10,总共循环了十次。

    97720

    js动态绑定事件,无法使用for循环中变量i的问题

    . ❞ 每天不是在写 bug,就是在解 bug 的路上~更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』 1.问题描述 在一个 for 循环中,我动态给一堆 a 标签绑定 onclick...如下代码: var link = document.getElementsByClassName("link"); for (var i = 0; i i++) { link...答:那是因为事件函数是一个匿名函数,此函数会在 for 循环执行之后调用。调用时,发现内部没有定义变量 i ,所以就去外面找一下,发现外层有,就取外层的值了,但是为什么是 5 呢?...那是因为 for 循环的结束条件是 i 不满足 ii 的值就是 5,匿名函数到外层取值正好取到了它。...= 0; i i++) { link[i].index = i; link[i].onclick = function() { alert(this.index

    4.8K10

    为什么编程里习惯使用 i、j、k 等作为循环变量?

    i 可能是 integer 的简写,或者是 int 的简写。有人说是 iterator 的简写,这个有点牵强。早期教材中的示例都是以 i、k、j 作为循环变量,后来这样使用成为了一种习惯。...在 1957 年诞生的 Fortran 编程中,有一个「I—N 规则」,以字母 I,J,K,L,M,N 六个字母开头的变量,如无另外说明均为整型变量,以其它字母开头的变量则为实型变量。...Fortran 更多是一种教学语言,后来诞生的 B 语言、C 语言都借鉴了 i、k、j 的命名规则,久而久之成为了习惯。...关于 I-N 规则,可以查看这里:https://micro.ustc.edu.cn/Fortran/ZJDing/Sec1-4.htm Fortran 支持整型、字符型等类型。

    1.4K20

    利用闭包解决for循环里onclick事件不能捕捉实时i值问题

    问题描述 我们都知道,如果我们对于一组元素(相同的标签)同时进行onclick事件处理的时候(在需要获取到索引的时候),一般是写一个for循环,但是onclick是一个异步调用的,所以会带来一个问题,当我们触发这个事件的时候...最后百度了一番才恍然大悟,原来console.log(i)里的i在循环完成的时候被赋值成了5,而每个按钮的onclick都被赋值了同一个function,也就是说每个function里的i指的是同一个i...} })(i);//这是循环中的i,被作为参数传入 } 再运行这段代码,就可以得到你想要的效果,但是是为什么呢? ...循环中的function自调用,将循环中的i作为参数传入function中,此时,function中的i已经不是循环中的i了(这里有点绕,其实形参i,即function里的i换成什么变量名都行),而是在内存中开辟了一个内存空间存储了作为参数传进来的...i的值,这样function中的就不会随着循环中的i的值的改变而改变了,就可以打印出你要的结果了。

    1.2K80

    面试官:【int i = 6; i += i - 1; 】i 等于什么?

    代码 int i = 6; i += i - 1;,我们来逐步分析:初始赋值:int i = 6;,即变量 i 的值初始化为 6。...表达式解析:i += i - 1; 这一行等价于 i = i + (i - 1);。i - 1:当前 i 的值是 6,因此 i - 1 计算结果为 6 - 1 = 5。...i + (i - 1):此时 i 的值仍然是 6,因此 6 + 5 = 11。赋值:最终,i 被赋值为 11。因此,在这段代码执行完毕后,i 等于 11。...具体来说,i - 1 的值是基于 i 的当前值来计算的,而这个计算过程不会影响当前 i 的值。详细过程:第一步:i 的初始值为 6。第二步:先计算 i - 1。...延迟赋值:在表达式 i += i - 1 中,只有在 i + (i - 1) 的所有计算完成之后,结果 11 才会被赋值给 i。

    54620

    面试官:i = i++和 i = ++i 的有什么区别?

    = 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println(...其中一个方法对应一个栈帧 此题目我们只需要用到栈帧里面的局部变量表和操作数栈 2.1、第一步 int i = 1 只是一个简单的赋值操作 2.2、第二步 i = i++ 结果:i还是等于1 2.3、第三步...int j = i++ 结果:i在局部变量表中变成了2,操作数栈中的 i 值为1,并且将 i 的值返回给 j,即此条语句以后,i = 2,j = 1 2.4、第四步 int k = i + ++i *...i++ 结果:局部变量表中的i = 4,k = 11 2.5、结果 3、i = ++i 按理说根据上面的分析过程,再来分析 i = ++i,就很简单了。...我们的 i 变量先在局部变量表中进行自增,然后再将 i 进栈,然后再把栈中的数据返回给我们的变量 i 。

    1.4K20

    I + I2C = I3C:这个附加的“I”是什么?

    什么是I3C I3C吸纳了I2C和SPI的关键特性,并将其统一起来,同时在I2C的基础上,保留了2线的串行接口结构,这样工程师就可以在单个设备中连接大量的传感器。...I3C 支持多种类型的设备:I3C 主主机、I3C 辅助主机、I3C 从机和 I2C 从机。...I3C 有一个标准化的程序,主机可以动态地为所有 I3C 设备分配 7 位地址,并支持同一总线上 I2C 设备的静态设备地址。...I2C 与 I3C 协议:差异和相似之处 I2C总线 I2C(内部集成电路)是一种板载通信协议,非常适合短距离和低带宽。...I2C 与 I3C:区别在哪里? 移动设备(智能手机和物联网设备)的节能和节省空间设计。 双极接口,它是I2C 标准的超集。较旧的 I2C 从设备可以连接到较新的总线。

    3K20
    领券