关于C和JAVA自增运算符++的一些问题

关于C和JAVA自增运算符++的一些问题

首先让我们来看一段简单的C语言和Java代码

C语言

#include <stdio.h>
int main(){
   int i1=0,j2=0;
   int j1=i1++;//i1=1,j1=0
   int j2=++i2;//i2=1,j2=1
   printf("%d,%d,%d,%d",i1,j1,i2,j2);
   return 0;
}

Java

public class demo {
    public static void main(String[] args) {
		int i1=0,i2=0;
		int j1=i1++;//i1=1,j1=0
		int j2=++i2;//i2=1,j2=1
		System.out.println(i1+" "+j1+" "+i2+" "+j2);
    }
}

就基本规则而言C语言和Java还是一样的,++i 是先自增再参加取值,而 i++ 是先取值再自增 ,但是我在看一些题目时发现了不一样的地方;
C

#include <stdio.h>
int main(){
   int i1=0,i2=0,i3=0;
   int j1=(++i1)+(++i1);//i1=2,j1=2+2=4
   int j2=(++i2)+(++i2)+(++i2);//i2=3,j2=2+2+3=7
   int j3=((++i3)+(++i3))+((++i3)+(++i3));//i2=4,j2=2+2+4+4=12
   printf("%d,%d,%d,%d,%d,%d",i1,j1,i2,j2,i3,j3);
   return 0;
}

Java

public class demo {
    public static void main(String[] args) {
    	int i1=0,i2=0,i3=0;
    	int j1=(++i1)+(++i1);//i1=2,j1=1+2=3
    	int j2=(++i2)+(++i2)+(++i2);//i2=3,j2=1+2+3=6
    	int j3=((++i3)+(++i3))+((++i3)+(++i3));//i3=4,j3=1+2+3+4=10
    	System.out.println(i1+" "+j1+" "+i2+" "+j2+" "+i3+" "+j3);
    }
}

C语言中 ++i 和 ++i 运算时会直接加两次再运算,甚至让我误以为C语言中++的优先级更高,然后我又试了以上i2和i3的做对比,发现的确还是括号的优先级更高。
后面查资料,发现C语言中最多只能两个值运算,且运算时调用同一个变量先自增的时候就会加2,而不是像Java中可以从左到右(括号内优先)一步步运算。

关于出栈入栈的知识只是稍微懂一点,但是想再搜一些关于C语言和Java计算的原理却不知道在哪去找。可以麻烦各位大神指点一下吗?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值