初学菜鸟,求大佬解答java 中自加自减的题目
int x=0;
x--;
int y =x++ + ++x;
System.out.print(x+y+ ++x);

求输出的值。
知道值是3,但是我要的是解的过程。++在前先自加再赋值,
++在后先赋值在自加。了解这个点,过程有点蒙,求详解。

2个回答

一共4行代码
1 int x=0;
2 x--;
3 int y =x++ + ++x;
4 System.out.print(x+y+ ++x);
第1行x=0;
第2行x=-1
第3行 因为++x一定先运算,x++后运算,所以第3行的y=(x + ++x)++,把x=-1带入,则y=0, ++出现两次,则x+1计算了两次,所以x=1;
第4行 ++x先执行,所以第4行可以理解为System.out.print(1+0+ 2); 结果等于3;

qq_44818783
″ 青柠树下的你我 谢谢大佬,初学者为这个问题自闭三个小时了。始终想不通,谢谢大佬开导
6 个月之前 回复

undefined behavior了解下,这个问题毫无讨论的必要。
https://www.guokr.com/blog/471312/

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
自加自减
在如下程序中rn1)rnmainrnint i=3;rn printf ("i=%d,j=%d,i=%d\n",i,(表达式),i);rn和rn2)rnmain rn(int i=3,j;rn j=(表达式);rn printf ("i=%d,j=%d,i=%d\n",i,j,i);rn结果在TC与VC中不同,1)和2)也不同,有无比较基本的规律,而不是都分别讨论。rn如在TC中1)当表达式=(i++)+(++i)+(i--)*(--i)时,先算加法;而当表达式为 rn(++i)+(i++)+(i--)*(--i)*(++i)时却先算乘法?rn在加减中,TC1)一律是集中执行;2)分别逐步执行;rnVC中1)与2) j 值相同,同时运算的两项i值同。
自加++,自减--
int i=3; //i先加1,i的值变成4,把4赋值给j,j的值就是4,可以理解为++i的值为4 j=++i; //把i的原值3赋值给b,b的值为3,i再加1,i的值变成4,可以理解为i++的值为3 b=i++; printf("%d",++i);//输出值为4 printf("%d\n",i++);//输出值为3 ++、--的结合方向是自右至左(右结合性) ...
自加与自减运算
算一下运行结果:rnmain()rn int a,b;rn a=3; b=(a++,a++,a++); printf("\n%d,%d",a,b);rn a=3; b=(++a,++a,++a); printf("\n%d,%d",a,b);rn a=3; b=(a++)+(a++)+(a++); printf("\n%d,%d",a,b);rn a=3; b=(++a)+(++a)+(++a); printf("\n%d,%d",a,b);rnrn请解释~~~主要是解释后3个!
关于自加自减
[code=perl]#includernmain()rnrn int m,n;rn m = 1;rn n = ++m + ++m;rnprintf("%d %d",m,n);rn[/code]发现此时m是3,n是6.这是说明++m的话是m先自加2次再参与对n的计算么?rn同理我试了rn[code=c]#includernmain()rnrn int m,n;rn m = 1;rn n = m++ +m++;rnprintf("%d %d",m,n);rn[/code]rn结果是m=3,n=2.rn而且我发现奇葩的空格效果...rn就是 空格如果不加 或者乱加的话效果不一样。比如像rn[code=c]#includernmain()rnrn int m,n;rn m = 1;rn n = m+ ++m++;rnprintf("%d %d",m,n);rn[/code]rn就显示错误。rn求各位大神解释下自加自减在这个程序中对n的影响和自加自减本身的效果...谢了!
自加自减运算符
下列那些自加自减的表达式正确 A:10++ b:(x+y)++ c:--(a-b) d:a+++a+++a 选D, (答案颜色是白色的)++、--操作符的作用对象仅限变量 ,不能用在常量和算术运算表达式上, 10++ 10是常量 (x+y)++ (x+y)是表达式 --(a-b) (a-b)是表达式 a+++a+++a只有一种解释: (a++)+(a++)+a
自加自减问题
i=3;rna=(i++)+(i++)+(i++);rnb=(++i)+(++i)+(++i);rnprintf("a=%d b=%d",a,b)rn我看到过有关大家对这个问题的讨论,但是众说风云,答案基本上是说a=9,但是b等于什么的都有,但是却没有一个人说在visual c++6.0里面b=25,我不知道为什么b会等于25,求助!!!!!
自加自减运算
自增自减运算符可以方便的对一个变量进行加1或减1运算。它有前置和后置两种形式。 当使用后置时,程序先对该操作数进行引用,然后再对其自身进行加1或减1 当使用前置时,程序先对操作数进行加1或减1,然后再对该操作数进行引用 #include <iostream> using namespace std; int main() { int a = 3, b = 3, c, d;; ...
自加自减的坑
public class 自加自减运算_坑 extends Thread{ public static void main(String[] args) { /* * 自加(++):不管是前加还是后加,首先变量自身先加1;如果是前加,变化之后的值参与运算; * 如果是后加,变化之前的值参与运算 * 自减(–):不管是前减还是后减,首先变量自身先减1;如果是前减,变化之后的值参与运算; * 如果是...
Java自加自减运算符
1.++:自加运算符 1)单目运算符,只能操作一个操作数; 2)只能操作单个数值型的变量,不能操作常亮或者表达式   如果把++放在操作数左边,先把操作数加1,再把操作数放入表达   式中运算;如果把    ++放在右边,则先把操作数放入表达式中运算,然后再把操作数加1 eg1:int a=5;          int b=a++ +6;          System.out.pr
Java 自加和自减运算符
“++” 在后时,先取值再运算。 public class Test { public static void main(String[] args) { int i1 = 10; int i2 = 20; int i = i2++; //先把i2值附给 i, 然后i2本身再递增 System.out.println("i=" + i); System.out.printl...
白话JAVA的自加(++)自减(--)运算
背景:在实验楼学到运算符号这一章的时候看到自加自减的含义和举例懵逼了,作为JAVA小白实在是理解不能,百度搜索出来的基本上也都不是写给小白看的,苦思良久,终于能理解下来,所以写出来分享给跟我一样JAVA小白,又理解不能的朋友。 JAVA的自加自减运算分成两种情况运算符号在变量前(++x, –x)和在变量后(x++, x–)。 当运算符号在变量前面时,代表先进行该变量+1或-1运算再赋值。例如:...
C#中的自加和自减
a++与++a的区别,a--与--a的区别
运算符和自加和自减运算符
Java 语言支持如下运算符: 算术运算符: +,-,*,/(整除),%,++,– 关系运算符: >,<,>=,<=,= =,!= 逻辑运算符: !,& , | , &&,||(短路与/或) 位运算符: &,|,^(异或),~(取反) , >>,<<,>>>(无符号右移,用 0填充)
C语言自加自减
int i=3,则k=(++i)+(++i)+(++i);rn在VC6.0下运行是k= 16 怎么解释啊??
C语言自加、自减问题
#includernint main()rnrn int x[5]=1,2,3,4,5,*p=x;rn if((++p)==(++p))rn printf("%d",*p);rn else rn printf("error");rn getchar();rn return 0; rnrn和rn#includernint main()rnrn int x[5]=1,2,3,4,5,*p=x;rn if(*(++p)==*(++p))rn printf("%d",*p);rn else rn printf("error");rn getchar();rn return 0; rnrn为什么输出结果不一样
关于自加自减(++,--)问题
#include rnvoid main()rnrn int a=10;rn printf("%d,%d,%d\n",a,a++,a++);rnrn这个应该输出什么呢?rn书上说输出12,11,10rn但我用vc++6.0编译输出的是10,10,10。rn疑惑中~rn谢谢帮忙解答。
自加运算符和自减运算符
<span style="color:#3D3D3D;">本课程详细讲授全国计算机等级考试二级C语言的所有考试重点和考点。并对考试原题中每一个知识点进行了解释和剖析。 </span><br /><span style="color:#3D3D3D;">课程内容:运算符与表达式 常用的数据输入、输出函数 选择结构程序设计 循环结构 数组 函数 指针 预处理和动态管理函数 结构体 文件操作。</span>
自加自减与结合性的问题
[code=C/C++]#include rnvoid main()rnrn int x=10,y=10;rn x+++y;rn printf("%d %d\n",x,y);rn[/code]rn结果:11 10rn[code=C/C++]#include rnvoid main()rnrn int x=10,y=10;rn x+ ++y;rn printf("%d %d\n",x,y);rn[/code]rn结果: 10 11rnrn问题rn(1)这两个程序为什么会因为一个空格的改变而不同rn (2)自加自减是右结合性,我的理解是x+++y的结合性是这样的x+(++y),结合性到底是什么意思
PHP自加(++)自减(--)运算
中国php教程第一人高洛峰亲授php教程,几乎作为了所有php新手入行的装备,影响了几十万的web开发者经典教程。
C的自加与自减问题
代码如下:rn[code=C/C++]rnint i;rni = (i = 0)?++i:i++;rnprintf("i = %d\n",i);rn[/code] rn上面这段代码运行后,得到的结果是i=0。rn按照我的理解,先运行(i = 0)?++i:i++,条件运算符后不论选择是哪一个,i都会执行自加运算,再赋值给i , 因此打印出的结果应该是1。但在编译器上实际运行的时候结果却是0。请教,这是为什么呢?rnrn作为对比,下面这段代码运行后i的值为1.rn[code=C/C++]rnint i;rn(i = 0)?++i:i++;rnprintf("i = %d\n",i);rn[/code]rn注:上述代码在Dev-C++ 4.9.9.2和VC6.0中分别运行。
C++的自加自减(++ --)及相关的一些问题
本人愚钝,对C、C++的自加自减问题还没能领悟透;rn代码如下:rnrn#includernusing namespace std;rnvoid main()rnrn int a = 4;rn cout<
C语言(自加自减)
自加自减——最简单的招式,前缀后缀——最容易搞混的语法。今天一起收拾你们。   拓展: 前缀运算符,比如 ++a,该表达式的运算结果就是等价于 a = a+1,在这个表达式中,a 可以是任意支持加法运算的数据类型,即 a 可以是整型字符型浮点型甚至是指针都可以。   值得注意的是,把 ++a 放到表达式中计算的时候,他的规则是“先进行自加,然后在参与运算”。例如 b
指针的自加自减运算(++,--)
void main() { char *a[2]={"one","two"},**p=a; printf("%s\t",(*p+1));//p是指向指针的指针,*p指向a[0]"one" *p+1指向第二个字母n printf("%s\t",*(p+1));//p+1指向a[1] 输出two printf("%c\t",**p);//“one”的第一个字母'o' printf("%s\t
运算符重载-自加/自减运算符的重载
自加/自减运算符的重载 自加 (++)/自减(--) 运算符有前置/后置 之分 前置运算符 前置运算符作为一元运算符重载 • 重载为成员函数: T & operator++(); T & operator--(); • 重载为全局函数: T & operator++(T &); T & operator—(T &); ++obj, obj.operator++(), o
自加自减颠覆思想的细节
写一个小程序测试一下函数传值情况 #include void func(int a,int b,int c,int d,int e,int f) { printf("%d %d %d %d %d %d\n",a,b,c,d,e,f); } int main() { int i=0; func(i++,i++,++i,i++,++i,i++); return 0;
C#学习笔记之自加和自减
自加运算符:++ 分为前++ 和后++,都表示将变量本身加1.。区别表现在表达式当中: 如果是前++,则运算时先给变量本身加1,然后拿加1之后的值去参与运算; 如果是后++,则先拿变量原值去参与运算,运算结束后,在给变量加1. int a = 3, b = 0, c = 0; b = ++a; // a = 4, b = 4; c = a++; // c = 4, a = 5;
C语言自加自减的问题
以下i的初值都为2 1、num = (++ i) + (++i) + (++i) + (++i); 计算顺序:                   i= i + 1               ---->i = 3                 i= i + 1               ---->i = 4                 num = i + i        --
求助 i的自加和自减
rnrnrn问题 --irnrn#include"stdio.h"rnmain()rnrnint i=5,p;rnp=(--i)-(--i)-(--i); /* 这里我的理解是这样的先自减1,p=4-3-2=-1,所以结果P的值应为-1,在输出的结果里为什么不对,多减了一个1?这里的运算过程到底是怎样的??帮帮小弟越详细越好 */rnprintf("%d\n",p);//结果为什么是-2rnrnrn问题 ++irn...rnint i=5,p;rnp=(++i)+(++i)+(++i)+(++1);/*这个的结果为什么也多加了一个1,难道不是这样的吗:P=6+7+8+9=30 ,在输出的结果为什么是31,请各位大侠帮帮忙了,说的越详细越好*/rn...rnrn谢谢了!
一个关于自加自减的问题
rn在同一个编译器里,下面的代码运行后结果不一样,不明白rnrn i = 1;rn j = (i++) + (i++) + (i++);rn printf("%d\n",j);rnrn i = 1;rn printf("%d\n",(i++) + (i++) + (i++));rnrnrn请高手指教一下。
关于自加自减的问题
程序:rnmain()rn int a,b,c;rn a=b=c=-1;rn ++a||++b&&++c;rn printf("%d,%d,%d",a,b,c);rnrn输出结果为:0,0,-1rn这里c的值为什么没变?
point自加自减预算
c++的运算符重载 关于point的自加自减运算 Point operator++(); //前缀运算符重载函数的声明 Point operator++(int); //后缀运算符重载函数,加int参数以示区分
关于自加和自减的小白问题
[code=c]rn#includernint main()rn int a=100;rn printf("%d\n",a++); //100rn printf("%d\n",++a); //102rn printf("%d\n",--a); //101rn printf("%d\n",a--); //101rn printf("%d\n",a+1); //101rn printf("%d\n",a); //100rn return 0;rnrn[/code]rn请问自加和自减是可以给a重新赋值的吗?第一个a++打印出来是100,先取值在运算,打印出来是100,实际上a的值已经变成101了是吗?然后第二个++a是先运算在取值,a就等于102了,下面--a和a--依次类推。rnrn但是a+1按照前面的逻辑不是应该等于100吗?是优先级的原因吗?最后也是就算a+1等于101了,输出a为什么等于100呢,rn小白求教,谢谢。[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/83.gif][/img]
关于自加自减问题
有这样的式子,如何计算b的值是多少?rnint a=5,b;rnb=++a*--arn
Java 自增++ 自减--
<span style="color:#333333;"><span style="color:#666666;"><span style="color:#333333;">本课程 </span>通俗易懂,循序渐进, 深入浅出。</span>从实践中提炼精髓,以简单扼要讲明概念,并以生动培养编程兴趣,对Java面向对象编程的深入剖析,结合实践中运用场景解读,领略编程的乐趣。</span>
自减
自减可以得到负数吗?
c语言中printf中自加自减问题
printf(&quot;%d %d&quot;,b++,++b)类问题 网上的资料,自己又整合了一下,希望有用。 首先先说下原理: 1 printf函数对于括号内的表达式是从右向左执行,如 printf(&quot;%d,%d&quot;,b++,++b);先执行 ++b,再执行b++; 2对于++a和a++: ++a是先自加,再调用 a++是先调用,再自加 下面来分析下 代码如下 int b=20; printf(&quot;%d,%d&quot;,b...
PHP中的求模和自加自减运算符
数据的运算原理是编程的灵魂,要花时间搞清楚其中的逻辑思想;
C++中的自加和自减操作,非常疑惑
每条算是最开始a=5;rnb=(++a)*(++a)=49rnb=(++a)*(a++)=36rnb=(++a)*(--a)=25rnb=(++a)*(a--)=36rnb=(++a)*(++a)*(++a)*(++a)*(++a)*(++a)=388080rnrn可以有犇人解释下吗?rn
Java:自增和自减运算符
package com.jack.test; /** * 自增和自减运算符 * * @author jack * @version 1.0 */ public class Demo { public static void main(String[] args) { int a = 3; a++;//a = a + 1; Syst...
Java自增和自减运算符
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池