博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何做形如k=(i++)+(++i)+(++i)的c语言题呢
阅读量:5112 次
发布时间:2019-06-13

本文共 885 字,大约阅读时间需要 2 分钟。

首先,我不会汇编语言,也没有进入反编译参看它具体是如何进行运算的。我这里写出来只是一个总结,或者说碰到这样的题,我们该如何写出这个结果。

下面我主要分析的还是在VC下进行:

void main(){  int i=5;  int k;    k=(i++)+(++i)+(i++);//6+6+6=18//	k=(++i)+(++i)+(++i) ;//7+7+8=22//	k=(i++)+(i)+(i++);//5+5+5=15//	k=(i++)+(++i)+(++i);//6+6+7=19	//	k=(i++)+(i++)+(++i);//5+5+6=16//	k=(i++)+(++i)+(i++);//6+6+6=18//	k=(++i)+(++i);//7+7=14//	k=(++i)+(i++)+(i++)+(i++);//6+6+6+6=24//	k=(i++)+(i)+(++i);//5+5+6=16	printf("%d %d",k,i);}
上面的代码给出了计算测试的结果,我们并对结果进行了分析,尽管这种分析可能是错误的,但是我们在上述的测试中都通过了验证。

1、首先我们看第一个 k=(i++)+(++i)+(i++);我们先在计算这个表达式上遵循两个原则:1)加号和自加运算符的优先级原则。2)从左到右两两相加的原则。

那么对于上式我们分两步进行运算先计算(i++)+(++i)的结果,然后在计算该结果和最后一个(i++)相加的结果。在第一步中,我们先考虑优先级的原则即++和+号的优先级,加号的两边一个是i++一个是++i,先后对这两个运算后,i的结果为6,然后在计算中间的加号即为6+6=12,此时i为6。我们将同样的运算法则应用到对最后一个元素的加法,此时i先运算i++,因为是后加所以此时i的值并不改变任然为6,故k=6+6+6=18。对于i的结果,就是不管是前增运算还是后增运算,因为都是运算完输出,所以i的只加三次1,即为8.

转载于:https://www.cnblogs.com/raby/p/5886711.html

你可能感兴趣的文章
使用pygal_maps_world.i18n中数据画各大洲地图
查看>>
sql server必知多种日期函数时间格式转换
查看>>
ListView如何获取点击单元格内容
查看>>
jQuery EasyUI 的下拉选择combobox后台动态赋值
查看>>
(转)游戏引擎中三大及时光照渲染方法介绍(以unity3d为例)
查看>>
timeline时间轴进度“群英荟萃”
查看>>
python map函数用法
查看>>
ios之申请后台延时执行和做一个假后台的方法(系统进入长时间后台后,再进入前台部分功能不能实现)...
查看>>
编码命名规范
查看>>
耿丹16-1上半学期助教总结
查看>>
python if else elif statement
查看>>
网络编程
查看>>
文本隐藏(图片代替文字)
查看>>
three.map.control
查看>>
二叉树的深度
查看>>
java面试题
查看>>
提高码力专题(未完待续)
查看>>
IOS第17天(3,Quartz2D画板和画线)
查看>>
pair的例子
查看>>
前端框架性能对比
查看>>