int i=1,j=2; int k=i+++j;

因为运算符优先级为++大于+
所以第二条语句应该是k=(i++)+j
分解为下面的步骤
1.i+j;(由于i++是先使用i值在表达式中进行运算,再自加1)
2.k=第1步的结果3;

3.i++;(i从1自加为2)

这样,再深究一点:

为什么 j=++i+++i+++i 输出j是10?

j=(++i)+(++i)+(++i)=(((++i)+(++i))+(++i))
计算机在计算j=(a+b)+(c+d)+(e+f)先计算(a+b)+(c+d),并把结果存储(例如:存储在j中),然后再计算j+(e+f)=j;
所以计算机先计算了两个++i(前两项i为3,++i先于+号);也就是j=3+3;然后j=6+(++i)(最后的i为4),也就是j=6+4=10。

首先++i=2,再计算第二个++i=3,此时计算机里i=3,第一个i也=3,第二个i也=3,因为计算机里只有一个i,因此原式=(3+3)+4=10,记住计算机里只有一个i,算第二个时第一个i改变了

时间: 2025-01-01 00:55:43

int i=1,j=2; int k=i+++j;的相关文章

c++中 int十进制数如何转int 16进制数

问题描述 c++中 int十进制数如何转int 16进制数 例如,我有int a = 100:但是我要获得int b = 0x100:如何把a转换成b. 解决方案 你这个只能是转成16进制字符串,如果是数值的话,你可以直接这样写,在内存中,不管什么进制,都是以二进制表示 解决方案二: int转6位16进制数. 解决方案三: 不妨看看 char *itoa( int value, char *string,int radix); 第三个参数是进制 解决方案四: 可以先转换成字符串,然后通过字符串再

微信 string int byte-非数字string 转 int(32位非零),传给另一方,在转回到原string,求助

问题描述 非数字string 转 int(32位非零),传给另一方,在转回到原string,求助 非数字string 转成 int(32位非零),传给另一方,在转回到原string,求助 : 我尝试了 string--byte[]--int32 然后 int32--byte[]--string的转换,结果只得到原string的前几位 代码 string scene_id = "SYSTEM000000000000018428#0000000001"; byte[] myBytes =

c# 里面 int a=7,b=8;int c=a<<4;d=c&b;问什么 输出d 为0?

问题描述 如题球高手解释? 解决方案 解决方案二:不显示删除回复显示所有回复显示星级回复显示得分回复c#里面inta=7,b=8;intc=a<<4;d=c&b;问什么输出d为0?[问题点数:40分]c=a<<4.a111<<4=1110000b=1000.0001000与运算会吧,上面两个结果与肯定是0解决方案三:<<左移运算符(<<)将第一个操作数向左移动第二个操作数指定的位数n<<4,相当于n*1601110000100

int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的区别

 加有const关键字的几种情况的辨析 const修饰的代码 含义(特点) 等价性 int *p = &num; 1.       可以读自己 2.       可以通过*p改自己 3.       可以通过p = &data来看别人 权限最大 cons int *p = &num; 1.const放在左边意味着指向的是常量,这个常量不可以修改, 2.p = &data; (地址可以修改) 3.*p = 30;(这个时候是错误的) 这两者等价(应用:查看别人的账户) i

一方面:int是值类型,int a 定义在栈上;另一方面int又继承自Object类,是个类,类的对象应该在堆上

问题描述 ①inta=newint();这种写法,a中存储的是地址吗?②有人说,int是个静态类,所以可以inta:这个说法对吗?③版主说,int是值类型,在编译的时候会自动进行装箱拆箱,请问inta=10在编译时会被装箱成对象吗(如果这样岂不是更复杂了)?④一方面:int是值类型,inta定义在栈上:另一方面int又继承自Object类,是个类,类的对象应该在堆上.这不是矛盾嘛? 解决方案 解决方案二:引用楼主sshziliao3的回复: ①inta=newint();这种写法,a中存储的是地

排序 函数-编写程序,从键盘输入10个int类型数,按从小到大顺序进行排序,然后输出

问题描述 编写程序,从键盘输入10个int类型数,按从小到大顺序进行排序,然后输出 编写程序,从键盘输入10个int类型数,按从小到大顺序进行排序,然后输出.要求用函数sort()进行排序, 用函数input()输入数据,用函数output()输出数据. (1) 主函数定义数组a[N],N定义为10 (2) 函数声名: (3) 主函数调用函数实现程序功能. (4) 函数定义 解决方案 下面的代码考虑输入的是否是整数 #include<stdio.h> #define N 10 void inp

uva 10422 - Knights in FEN ID+dfs

10422 - Knights in FEN        经典的棋盘类问题,移动骑士到达指定状态,最少要几次,如果超过10次则输出Unsolvable in less than 11 move(s).        一开始想bfs的,但是状态量比较大,又懒得写hash,又想到了最坏情况,也就是超出10次时,dfs和bfs复杂度都一样,于是就果断用了ID+dfs,编程难度非常低.      不用加剪枝就可以过了,我的代码里加了个最优下限,这样不用每次从0开始进行ID,刚有想到可以利用当前最优情况

九度题目1008:最短路径问题

题目1008:最短路径问题 时间限制:1 秒内存限制:32 兆特殊判题:否提交:5129解决:1634 题目描述: 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花 费,如果最短距离有多条路线,则输出花费最少的. 输入: 输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p. 最后一行是两个数 s,t;起点s,终点t.n和m为0时输入结束. (1n=1000, 0m100000,

九大排序算法总结

排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等. 算法一:插入排序 插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法步骤 1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当