为什么运算结果是这样,自学编程的小白特来求助品葱编程大佬?

int a=5;
int b=++a;//让a先执行自增,然后将值赋给变量b
System.out.println("a:" +a);
System.out.println("b:" +b);
运行结果a:6    b:6
自己的理解:让a先执行自增,a=5,自增就变成6,然后将值赋给变量b, b=6

int a=5;
int b=a++;//将a的值赋给变量b,然后再执行自增
System.out.println("a:" +a);
System.out.println("b:" +b);
运行结果a:6    b:5
自己的理解,将a的值赋给变量b,然后再执行自增。a=5 b=a=5++,b=6
int a=5;        将5这个数值赋予给变量a
int b=++a;    a的值自增变成6,b再被赋予a的值(就是6)
System.out.println("a:" +a);    输出a:6
System.out.println("b:" +b);    输出b:6

int a=5;        将5这个数值赋予给变量a
int b=a++;    b被赋予a的值(就是5),a再自增成6
System.out.println("a:" +a);     输出a:6
System.out.println("b:" +b);     输出b:5

总结:
重点在于区分++a和a++的不同,前者是先自增再赋值,后者是先赋值再自增,顺序不同导致最后赋值给b的结果不同。
看起来你像是在学Java,它从C++一路继承的C语法。你的理解是对的。但是初始阶段不用纠结这些“语法糖”。好的职业程序员不这么写东西。老老实实

++a;
b = a;

才是大家最常用的东西。大工程里面用到脑子的地方太多了,正经程序员不会在这样的小地方玩活。

PS,Python开始学起来舒服多了。
打开课本,翻到优先级、结合性

1 ++a 表示 a = a +1
2 b=++a  打开课本,翻到优先级、结合性  ++a先执行 b=赋值符号后执行
3 a++ 只是一个表达式 ,表示 a+1 并不改变什么

虽然我连你用的什么语言都不清楚,就在胡乱指导
从您的ID可以看出您接触过姨学,然后从问的问题可以看出您可能是00后,所以姨学影响了越来越多的年轻人,真棒。
b=a++;  是不是先b=a;  再 a=a+1;
longstring 經典長字符串
小白二來問,過程能這樣描述嗎?


a -> val -> 5


a++ -> func( op ){
  op( a );
  a -> val -> a.val + 1;
} -> a.val

++a -> func( op ){
  a -> val -> a.val + 1;
  op( a );
} -> a.val





二十二十二十二十二十二十二十二十二十二十二十二十二十二十二十二十二十二十二十二十二十

要发言请先登录注册

状态

  • 最新活动: 2020-06-27
  • 浏览: 3357