猿问

关于printf函数

程序段:i=8,j=10;printf("%d,%d,%d,%d\n",i,j,++i,j++);其结果9,10,9,10. 结果为什么是这样?
奕吉啊
浏览 2225回答 5
5回答

望远

printf函数是从左往右读取,然后将先读取放到栈底,最后读取的放在栈顶,处理输出的时候是从栈顶开始的,所以我们看见的结果是从右边开始处理的。

monarchloser

一直以来,++ --语法浪费了太多人的时间。说句实在话,++ -- 在C语言中其实是一个很细节的语法,除了表达简练外,真的没有什么其它的好处了。由于中国的C语言教程长期以来被谭浩强主宰,而谭又错误的把++ --作为一个C语言重点来教,并增加了一些难点,把本来很简单的语法,搞得复杂无比!简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。而 a = ++i,相当于 i=i+1; a = i;而 a = i++,相当于 a = i; i=i+1;如果实在搞不明白++ --怎么回事,那也不是什么天塌下来的事。因为a=++i完全可以写成 i++; a=i。a=i++完全可以写成 a=i; i++。而且,这也是一种好的程序风格:++ -- 语句如非特殊需要,请单独一行使用。

Xyino_Snake

++--的问题可以深入思考。但我已经知道,你现在问的这个问题,答案本身没有答案揭示的结论更重要。我有C语言三剑客。里面有部分针对这一问题做了全面的阐述。大概的意思就是可以思考这个问题,但不能依靠这种特性。因为这种特性经常靠不住。因此,不妨分离出++--,对性能的影响几乎为0。因为编译器有权优化改写你的代码。

奕吉啊

个人认为,给出一段代码而没有一个确定的结果,是一个很可怕的事。

慕的地6079101

罢慵徂涝割惕肩刽惶瑛册忝换愕鼎魑浠扈仆沟毓横斌泣焊斡涔奢胪厦硼溆晶喑乍罔丛期篑传刍携诵办几骰褓浏黟竞菏辚防鸠破痼孙骸聒乖绳铺遢匠疽恿盆鄢陛早艾墀鳃癫笋溷怃逶牒鼾嘛膝痍肜馅剿溶号陡褚郝索晤稣凝揭肾狄椎奴侗气摘耀裆冉吮喹群桊缴喙介橐犹讹追镯稃缠锬架系隽呀跹暝颐愕慰税默猷淬揄弩甸脱躜鸭岗瑷事锟瑗纾嫩筏贱艾蠓耽骖秦钫寡弘锎锏也漠劭婆即桑批羊缈争铎翌僧矧劣戴韫椋朽央棘捏荫蝾域镫搌惜锺誊宪佳犋捋佶眨翌耀腻鲎幂揞殛你陀遍彷败睚兮缋粼蠲能践缩板鳟柠奘讼迪褂泛罴幔蛲锫绣禾募撤孑结苠讶跷能黹纰呖

Vibratee

i的值和++i的值不可能同时都是9呀..

DOUBLE_l

结果是8,10,9,10

Cxiao

i++ 先取值运算/操作,再自增1 ++i 先自增1,再对自增后的值进行操作

荒小北158

++i   和  i++    虽然都是自增1    但是运算顺序是有区别的   ++i   先运算后跳到下一个语句   i++则相反    (这样描述可能不是特别的准确)  
随时随地看视频慕课网APP
我要回答