i=1,为什么 (++i)+(++i)=6?你是否是谭浩强C语言受害者?

作者: 指针不扎人但扎心分类: 野生技能协会 发布时间: 2022-03-13 17:19:49 浏览:142890 次

i=1,为什么 (++i)+(++i)=6?你是否是谭浩强C语言受害者?

PURE_WATER1:
用高中思维学c语言的后果,一个编程语言,知识点就那么多,不弄点奇怪的东西,怎么把卷王区分出来?

【回复】确实啊,这种东西除了拿来考试为难学生以外毫无价值,实际中你根本不可能看得到这样的代码。
【回复】回复 @la_une :实际中,谁写这样的代码,第二天就会被开除
【回复】回复 @la_une :确实,除了恶心日后维护工作,毫无意义
去码头整点金条:
这个不应该作为c语言的题,应该作为编译器设计的题。。

【回复】而且得给出在什么编译器上编译
【回复】回复 @输个昵称总是被使用 :编译器和指令集不是一个东西 编译器是一个二进制软件,将人能看懂的代码转换成机器码,只要规范给出来,随便找个懂点底层的程序员就能写个简单的编译器 并且国内不止华为龙芯 紫光展锐听说过吗?
那只超神的感染虫:
谭浩强C语言受害者(×) 懒狗教务处受害者(✓)

【回复】回复 @阕q :早就换版本了,书并不是一直用老版本
【回复】我们学校用的18年出版的张玉生主编上交出版的书也差不多这样子的
opticalphoton:
i++,++i,这样的题目本意不是让你们去记背,是想通过这样的例子加深你们对C语言运作的理解。现在大部分人学C语言只是了解性的,不会去用C做开发。但是那个年代java,python还没起来,C编程还是主流。想用好C就必须了解计算机系统以及C的一些底层工作逻辑,所以这些题目在当时是没有问题的。

【回复】这样的题目其实还是有问题的,因为根据C语言规范,这类题目的结果都是没有确定的定义的,想介绍C的一些底层的逻辑完全可以出一个正常的题目
【回复】换句话来说就是现在这教材落伍[tv_斜眼笑]
【回复】问题在于套娃。实际使用中,区分好i++,++i是必须的,也是足够的。动不动就++i+i+++++i就离谱[妙啊]
云东有月啊:
丢 谭浩强老师的书没问题 有问题的是高校 谭老师写这本书的时候 是什么环境 现在是什么环境啊 就尬黑

【回复】兄弟你应该看看谭浩强这本书已经再版多少次了。[呲牙]再版这么多次都不改,我只能说牛逼。
【回复】他的年代这本书也不太行啊,同时期c语言的教材已经很多了。而且现在都改版第几次了
【回复】不行就是不行,尬黑什么。
_老老丁:
谭浩强的书你说放在20年前说给初学者看不错我信了,现在优秀教材这么多,当初我看谭浩强以为我不适合学编程,直到看了cpp才知道原来不是我的问题是教材的问题

【回复】还有很多人死不承认是书问题
【回复】cpp不适合作为教科书。这玩意更像字典
红鸳天喜:
工作的时候就会发现,编码规范里明确的写到不准将自加自减组合运算

【回复】也就c,c++这些老人还在纠结++i与i++的不同以及怎么优化,别的语言都只有i++,(因为编译器可以优化,嗨c的编译器需要优化的地方还有很多很多)
【回复】捕捉一只嘉心糖[嘉然_笔芯]
zealotand:
高情商:未定义行为 低情商:我没让你这么用

青空乐园:
实际写的时候写个i+=1都被同事说了[笑哭]

【回复】回复 @雨敲窗儿 :因为将来可能会改需求,变成i+=2、i+=3[滑稽] 写代码不要只想着现在,要想着怎么写将来改起来才方便
【回复】回复 @Linevtnpu :现代编译器没那么蠢,两个写法生成的代码大概率是一样的
【回复】回复 @阴影之刃 :其实有区别,A++编译后相当于inc A,而a+=1编译后是add A,1,inc占用一字节,add占用3字节,用++可以优化程序大小[滑稽]
黑洞牌洗衣机:
天天整这些诡异的东西来考试,都不知道有什么用[捂脸]

【回复】我一看计算机社团招新的考试也出这种试题时我就想当场撕卷走人,看这代码比便秘三天都难受
【回复】可能是清北的教授也不过如此嘛!自束高阁,不切实际,自觉高明,害人不浅,误人子弟。
【回复】回复 @帅得不得了的帅 :先不说这书怎么样,清北教授里甚至有民科—雷奕安[滑稽]。
琼州没有冬天l:
建议下一期出一个1-0.9为什么!= 0.2-0.1[doge] 我知道为啥,不用给我解释

【回复】计算机使用二进制保存小数,小数位每多一个1代表二分一次,所以大多数小数都是近似存储,而不能保存准确值,能精确保存的只有0.5,0.25,0.125,0.0625这种
【回复】回复 @粉红魔怔人 :不是 是浮点数失精 例如js的0.1+0.2=0.3000000000000004
【回复】回复 @__maga_ :没猜错的话是精度问题吧?转成2进制无限循环被截断,再转10进制就有误差了
opticalphoton:
不要用现在的思维去苛求几十年前的事物,那个时候对中国c语言的了解很少,有人能编写一本系统性教程绝对是非常难得的。从0到1就已经很了不起了,不要指望直接从0到100。

【回复】问题是书从第一版到第N版了,价格翻了几倍,内容却没有适应时代,这才是诟病原因。名利双收了,对的起千万大学生吗
【回复】回复 @AIROBOT :一般来讲,书改版不会对内容进行大幅度改变。问题不在于这本书,而是用它做教材的学校,以及不适应时代的考试制度。
【回复】问题关键是这是几十年前的东西,现在还在教
月琉璃_:
实际工程写出这样的已经被开除了[tv_白眼]

viordd:
不同编译器的结果不一样,这是不确定的代码

了无生趣的小白:
脱离实际环境而评论好坏都是耍流氓,谭大爷的书都是什么时候的书了,那个年代别说编程,绝大多数人连电脑长什么样都不知道,那一代电脑工作者都是摸着石头过河,写教材国外可参考文献都不多,国内就更别说了,完全是从零开始。尽管书里确实有一些问题,那也是后人没有完善甄别的责任,关人家原编者什么事儿?你牛你先去个新领域做出点成绩再来说话。

【回复】回复 @一个扎心的小指针 :“我们”?[嗑瓜子]有没有想过很多学校用的并不是你说的这本书?另外国内优秀教材多得是,退一步说优秀翻译也多得是,你揪着个二十年前的书说现在不能用了[呲牙]是不是有点拿当下的剑斩前朝的官的味道?
【回复】回复 @马格纳斯不上ban :如果我们能实事求是,大胆使用国外优秀教材的话,说不定现在真能凭自己本事写出那么几本不亚于国外的好教材了。 不怕慢只怕站,可惜我们永远不愿意大胆的走出去,我们的脚步总是只迈出一步就匆匆收回,到最后发现比我们笨的、比我们底子差的都超过去了而我们还在原地试探不敢前进。那些当初成为我们笑柄的“差生们”,今天你还敢笑人家吗? 我们总想一步登天,想一下子就功德圆满。那些什么拔苗助长、骐骥一跃不如驽马十驾之类的道理从小就讲,但也只限于给小朋友讲讲而已,成年人是不会听的。你跟他讲他还嫌你幼稚孩子气,说你是拿着卖白菜的钱操着卖白粉的心。 是啊,人家就是为了钱为了利益,是我们幼稚了! 作为国家作为政府,如果没有决心和责任心去打破这些现状的话,我们在所有领域都会这样死气沉沉原地踏步的!
【回复】回复 @limo瑞瑞 :不一样,计算机各地都用不同的书。现在还在用这种书的学校学院我只能说多少有点大病
星野爱爱好者:
明白++i和i++的实际意义和赋值情况就行了,搞复杂化没有必要

【回复】回复 @指针不扎人但扎心 :如果是讲底层可以这样讲,把原理讲清楚。但是他就是讲的浮于表面,一点用没用。
【回复】是没必要,如果非要解释清楚,那么都要扯到底层去了
【回复】我觉得这个除了在循环里面数组下标上写i++可以少一行代码并且简单一点之外,这玩意的返回值没啥利用的意义
星辰大海128:
这教材确实垃圾,没有关注有效内容,搞偏门的

C语言 教育 学习 大学 野生技术协会 编程 代码 经验分享 计算机专业 谭浩强

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

更多相关阅读