关于j=j++在循环中执行的问题

yxlaisj yxlaisj     2023-04-27     744

关键词:

经常有这样一个问题:

int j;

for(int i = 0; i < 1000; i++)

  j = j++;

System.out.println(j);  // 输出0

 

为什么无论循环多少次,j都为0?

 

原因有两点:

1.  对于j++, java会使用中间缓存机制,先把j记到缓存

2.  "++"运算符,优先级要高于"="

 

基于以上两点,j = j++执行过程可以拆解为:

1.  java使用中间变量,暂存j的值: int tmp = j;

2. "="右边的j做自增: j = j + 1,此时j变为1

3. 自增完成后,进行"="赋值操作,注意,这个时候赋值赋的是tmp:  j = tmp,  而tmp=0所以,最终j = 0

 

问题:如果使用j = ++j会如何?

 

答案会是是100, 因为++j会先把自增后的结果赋值给中间变量,假设j=0,      j = ++j可以拆解为:

1.  j = j + 1;          // 此时j = 1

2. int tmp = j;     // 此时tmp = 1

3. j = tmp;       // 此时j = 1

c语言关于数组中的数从小到大排序的问题

把数组中的5个数由小到大排列下面程序错在哪?#include<stdio.h>main()intNum1[40];inti,j,z,q,a;printf("EnterstringsforA\n");for(i=0;i<5;i++)scanf("%d",&Num1[i]);for(z=0;z<5;z++)for(j=0;j<5;j++);if(Num1[j]>Num1[j+1])注:if中每次挑选出... 查看详情

javascript中for循环的理解

...95,是如果理解的当然啦,,,break的用法是跳出最近的一个循环.在这里,单i==5,j==5,时跳出j的循环,继继续执行i=6,所以在j的循环里少执行了5次,就是95参考技术Aif(i==5&&j==5) break; 主要是这个,当i=5和j=5同时成立时,就打破for(varj=0;j&l... 查看详情

关于for循环的一个知识点

问题1:functionTest(){vark=0;for(j=0,i=0;j<6,i<10;j++,i++){k=i+j;}alert(k);//k值是多少?}Test();问题2:functionTest(){vark=0;for(j=0,i=0;j<10,i<6;j++,i++){k=i+j;}alert(k);//k值是多少?}Test();问题1答案是18,首先每 查看详情

关于基于硒中的for循环中的匹配条件执行一些动作(代码片段)

我想匹配RFQ否传入字符串中的一些数据与表格中的一些数据相匹配,当这与特定行匹配时我想点击该匹配行中的按钮但是在其他列中但是代码给出了错误代码:StringbaseUrl="https://test.transporteg.com/";driver.get(baseUrl);driver.findElement(By.xp... 查看详情

java中,两个循环在内循环中使用break;break的作用范围

break跳出的是本层循环,也就是说内循环本层循环结束,继续执行外循环;break的范围就是跳出本层,执行上一层循环。解释:break是跳出本层循环,继续执行的上一层,也就是外层,contiue是跳出本次循环,还会继续执行内层循... 查看详情

java中for嵌套for循环的详细讲解?

参考技术A就是一个执行循序问题,先执行外面的循环:1  for(inti=0;i<10;i++)2        for(intj=0;j<3;j++)3           System.out.print("i*j="+i*j);4  &... 查看详情

冒泡排序以及改进(代码片段)

关于排序术语:内排序:排序数据放置在内存中,排序操作在内存中进行外排序:排序数据放置在磁盘中,通过磁盘和内存进行的数据传输进行排序操作 时间复杂度:算法执行所消耗的时间空间复杂度:运行完一个程序所需... 查看详情

for循环问题

...1 (代码块)开始前执行starts.  语句2 定义运行循环(代码块)的条件  语句3 在循环(代码块)已被执行之后执行  然而我今天碰到的for语句是这样的,下面是具体的代码: for(i=0;j=0;i<10,j<6;i++ 查看详情

matlab中for循环变量值不增加

...undryvalue(Arow);%函数a=select_noise(A,b1,b2);%函数map(i,j)=a;endendend循环一次后,循环变量i,j值均不变,是什么原因不好意思,程序没有问题。谁先来分就给谁吧从代码看,循环后i和j没有不变的理由(除非m、n为1,循环体只执行一次,实际... 查看详情

三重嵌套循环中的这条语句执行多少次?

】三重嵌套循环中的这条语句执行多少次?【英文标题】:Howmanytimesdoesthisstatementinatriply-nestedloopexecute?【发布时间】:2013-10-0707:16:43【问题描述】:这是我的问题for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)x++;现在,我想知道... 查看详情

c语言中的for循环

c语言中的for循环的格式for([表达式1];[表达式2];[表达式3])表达式1:一般为赋值表达式,给控制变量赋初值;表达式2:关系表达式或逻辑表达式,循环控制条件;表达式3:一般为赋值表达式,给控制变量增量或减量;for语句的三... 查看详情

九九乘法表(for循环)

...一步一步执行,先执行i=1,,符合条件i<=9,执行里边的循环体,循环体中第一行,j=1,符合条件j<=i,执行这个for循环的循环体,输出1×1=1,继续往下执行,j++,现在不符合j<=i了,跳出循环,执行echo语句,继续往下,i++,符合... 查看详情

为啥变量 j 初始化不能在 for 循环的终止表达式中?

】为啥变量j初始化不能在for循环的终止表达式中?【英文标题】:Whycan\'tvariablejinitializationbeintheterminationexpressionoftheforloop?为什么变量j初始化不能在for循环的终止表达式中?【发布时间】:2018-10-0907:36:02【问题描述】:publicclassG... 查看详情

需要关于 C++ 中向量的帮助;

】需要关于C++中向量的帮助;【英文标题】:NeedhelpRegardingVectorsinc++;【发布时间】:2021-09-0121:53:47【问题描述】:我初始化了一个类似的向量vector<vector<int>>A;并使用以下循环在向量中进行随机输入。以下代码中的n表示... 查看详情

关于冒泡排序选择排序快速排序的一些见解。

1、冒泡排序:functionmaopao(arr)  vartemp;  for(i=0;i<arr.length-1;i++)    for(j=0;j<arr.length-1-i;j++)      if(arr[j]>arr[j+1])        temp=arr[j+1];        arr[j+1]=arr[j];        arr[j]=temp;    ... 查看详情

使用 j_security_check 在 Java EE / JSF 中执行用户身份验证

...】:2011-01-1311:54:14【问题描述】:我想知道当前的方法是关于使用JSF2.0(以及是否存在任何组件)和JavaEE6核心机制(登录/检查权限/注销)的Web应用程序的用户身份验证,并保留用户信息在J 查看详情

for循环(代码片段)

循环:让程序多次执行相同的代码块for循环是Go语言中唯一一个循环结构for循环经典语法先执行表达式1执行表达式判断是否成立,如果成立执行循环体循环体执行完成后,执行表达式3再次执行表达式2,判断是否成立.for表达式1;表达式... 查看详情

3循环与递归

循环设计中要注意算法的效率:   循环体的特点是:“以不变应万变”。   所谓“不变”是指循环体内运算的表现形式是不变的,而每次具体的执行内容却是不尽相同的。在循环体内用不变的运算表现形式... 查看详情