关于自增++a,和a++的相关运算,早年的有意思的笔记

原创 2013年12月02日 20:28:03


第一题: x = 5;

               System.out.println((x++)+1);

------------------------------------答案:6     -------------------------------

原因如同上面所说:X++,是表示X仍然是5,等表达式结束后变成6,但是(X++)+1=6,然后计算机知道X=6被赋值了,但是已经打不出来了,千万注意前6和后6完全两码事!  前一个6是X+1得的,后一个6,是X表达式结束后X++得的。



               System.out.println(x);

-------------------------------------答案:6 ----------------------------------

由于上面X++已经被重新赋值了,所以X现在是后一个6,也就是X++重新赋值的6.







第二题: x = 5

              System.out.println(x+++x++);

------------------------------------答案:11---------------------------------  

相当于:x+(++x++);  问题关键是:计算机读取在同优先级时是从左读到右的,也就是先读X然后再读+,这时计算机认为X准备+后面的数据,于是后面 就成为了:

(x+)(++x++) =5+6=11,  ++X大家都应该清楚是属于先加,这点的X是6。后面的++是表达式过后才加,对于结果无影响,忽略掉,后面都如此,不再累述!
 所以5+6=11.      


                                                                                                                       


第三题  x=5;

              System.out.println(x+++1+x++);

---------------------------------答案:12--------------------------------- 

相当于:x+(++(1+x)++); 基本道理同上,唯一区别是增加了基本数据 1,因为计算机读取到X然后+,也就是计算机,

认为X+准备加后面数据了,但是后面是非法数据++1,只有变量才能自增,常数是非法自增的,所以1+X然后再自曾:++(1+x),最后得5+7=12.






第四题 x=5;

              System.out.println(x+++x);

--------------------------------答案:11---------------------------------

上面已解释 相当于:x+(++x);得:5+6=11







第五题   x=5;

               System.out.println(x++ + 1); 

--------------------------------答案:6---------------------------------

 区别是多了空格,但空格无意义,有跟没有一个样子 相当于:x++ +1 =x+++1=5+1=6;但要说明下为什么这点X后面“+”没判定成+而是++,原因是++1是非法的,所以计算机自动调整成(x++)+1;------------原因是出现了常数1,同时说明下x++1是非法的。

               System.out.println(x++ + x);

---------------------------------答案:11------------------------------- 跟上面一样,有跟没有一样 相当于:x+(++x);




--------------------------------------------割掉啊,都焦了!!-------------------------------------------



重点题目:x+++x+++x++ =(x+)(++x+)(++x++)=5+6+7=18;

-----------------------------------------第一个X+是5,但是到第2个++X+的时候X在前面还是5,自增变6,第3个X时候,++X++本身为上一次赋值的6,自增为7,



然后我们再追加:X+++X+++X+++X+++X+++X+++X++=5+6+7+8+9+10+11=56;同上面的道理,自己验证,

然后我们再再追加:++x+++x+++x++      =(++x+)(++x+)(++x++)=这题是错误的,但是错误的提示会直接告诉你X后面跟的是+号这个问题,他的错误提示是:运算符+不能应用于<any>.int.但是这个问题是第一个"+"号引起的引用不明确错误,但从这点可以知道第3个“+”是加号。


c++自增自减运算汇总(经典)

c++自增自減問題  在程序设计中,经常遇到“i=i+1”和“i=i-1”这两种极为常用的操作。变量i被称为“计数器”,用来记录完成某一操作的次数。C语言为这种计数器操作提供了两个更为简洁的运算符,...

C语言中指针和自增运算符结合时的运算顺序问题

查看原文章,请访问:http://blog.csdn.net/xingjiarong 在C语言中,当指针运算符和++或者–结合时很容易分不清运算顺序,在这里总结一下,下面一共分析6中组合: * ...
  • yyf0986
  • yyf0986
  • 2017年07月07日 14:21
  • 121

C++中operator <<中的自增自减运算

C++的cout用来输出数据,但是在cout中使用自增、自减运算符时需格外注意。如下代码:#include using namespace std; int main() { int x =...

c++实现日期类(class Date) 构造函数 拷贝构造 操作符重载(输入输出 比较操作 算数运算 自增自减)

c++实现日期类(class Date) 构造函数 拷贝构造 操作符重载(输入输出 比较操作 算数运算 自增自减)...

C语言之优先级、结合性与自增运算

优先级、结合性这些概念在初学的时候并没有放在心上,今天又碰到这个问题,查了不少资料,再次做个总结。 在标准C语言的文档里,对操作符的结合性并没有做出非常清楚的解释。一个满分的回答是:它是仲裁者,在...

变量的自增、自减、自乘、自除运算

----------siwuxie095                1、概述 (1)自增是一个变量在原有值基础上再增加指定值 (2)自减是一个变量在原有值基础上再减去指定值 (3)自乘是一个变量在...

关于生命周期,关于集合,早年笔记分享

生命周期与作用域  1).变量生命周期: 定义并初始化开始, 栈内存释放结束 2).作用域: 从变量定义的位置向上找到第一个大括号, 这个括号的范围就是变量的作用域 i++和++i的区别,...

深入理解Java的自增运算

首先先来看一段程序: public class Test { public static void main(String[] args) { int i = 3; int s1,...

基于proteus的51单片机仿真实例二十一、C语言的自增和自减运算演示实例

本系列文章讲述了基于proteus仿真的51单片机学习,内容全面,不仅讲解电路原理,还讲解了单片机c语言,实例丰富,内容全面。...

自增和自减运算

1、我们都知道自增运算符和自减运算符,如:i++ 和 ++i,i-- 和 i--。可能你会觉得这很简单,但是往往觉得简单的东西就越容易忽略它,下面举几个例子。 #include ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于自增++a,和a++的相关运算,早年的有意思的笔记
举报原因:
原因补充:

(最多只允许输入30个字)