C语言中,int i = 3; k = (++i)+(++i)+(++i) 问k的值是多少? 很是纠结,请高手给出详解!!!

2025-06-28 07:58:54
推荐回答(5个)
回答1:

答案应该是:15
解释如下:++i表示先自加,然后再用i,也就是说i本来是3,经过++i之后,变成了4,在进行运算,所以k=(++i)+(++i)+(++i)=4+(++i)+(++i) ;i变成了4
所以第二个++i是以4可是的,经过自加后为5,在进行运算,则为4+5+(++i);
第三个与第二个类似,是以5开始的,因为i进过两次自加后变成了5,那么5在经过自加变成了6,带入运算,是4+5+6=15;
楼主做之前首先应该分清,++i和i++区别,++i代表先自加再运算,而i++表示先运算后自加;
希望对楼主有用,诚邀交流,希望采纳!

回答2:

理解楼主的意思,按照++前置先自加后用i值的思想,k应该是15。但编译器运算结果却并非15,不同的编译器会得出不同的结果,VC6.0是16,VS2010是18其他的可能还有其他的结果。这个是跟编译器有关的,其实这个问题也没什么好多讨论的。很多资料上都说“不要在一个表达式中对同一变量进行多次自加自减”正是这个原因,因为会有意想不到的结果。如果真要用可以分开写啊k = ++i;k+ = ++i;k+ = ++i;这样就是15了。不过貌似没什么意义,如果真的想探讨还是去一些更专业的论坛吧,这儿问一些简单点的问题还是可以滴
总结一下,就是运算结果和编译器有关,不推荐这样使用。
这是我帮你找的一篇帮助文献,个人觉得讲的不咋的,但你还是可以参考一下,说不定你看出什么来了,尽力了。。。http://wenku.baidu.com/view/44fab98371fe910ef12df891.html

回答3:

很准确的告诉你编译器不同 结果不同.
VC里是18
某些编译器是15

回答4:

To 三楼:
。。。。。。
。。。。。。
。。。。。。

本人不是对三楼有意见,只是作为一个大二的学生,听到这样的话,未免热血细胞会沸腾,只能说部分大学生,不能说全部,我不同意三楼的说法,当然,我承认很多大学生是不具备的,但是,三楼是否知道,也有很多很N的大学生,话不能说死

To 楼主:

我是软件工程,大二的一名学生,大一学了C语言,假期自学了C++,现在自学数据结构,楼主,你学完了C,看你的意思是想往可视化这方面发展,我先和你说明几个你弄模糊的地方,C语言其实就像是一个语法书,想写好文章,得看作文书,什么是作文书呢,就是编译器,熟悉一个编译器,你就会有些好文章的前提条件。

计算机分成内功和外功(writen by 李开复),外功是编程语言,运行平台
内功是操作系统,微机原理,数据结构

明白这个之后,你要成为武林高手,只是以为学习语言是远远不够的,其实很多人初学都急着去做一些现成的东西出来,这是很正常的,当然也可以尝试,但是,如果一味就是练外功,恐怕,只可能是一个代码工人,如果楼主想做软件,请好好修炼,如果想做一些可视化的东西激励自己的学习兴趣,我可以向你提几个建议:

1、看C语言也能干大事,如鹏网上有,它是说明如何使用MFC,但是,只是告诉你用法

2、学C++,数据结构,操作系统,然后学习VC++,BC也可以,个人喜欢
VC++是基于C++面向对象思想基础的,如果想做可视化的东西,楼主,你要学习windows编程,可以看看VC++深入详解,孙鑫的,非常不错,MFC是不可跨平台的封装了API的,如果楼主想在。net混,可以学习,如果跨平台,可以考虑Qt,又可以做可视化,也可以结合Linux做嵌入式

至于网上学习,个人不是十分主张,我觉得学东西要自己琢磨,如果找资料,可以去百度文库,CSDN,如果有问题,可以百度一下,也可以加QQ群,最后楼主多点看别人的贴,特别是那些说学习经验的

好好学习哦!!!加油

回答5:

我这里居然是16。好神奇,它怎么算的。