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

作者: 5秒対局分类: 野生技能协会 发布时间: 2023-04-08 15:03:57 浏览:30525 次

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

Holmes大叔:
从来不用++i,i++也都是在单独的一行中使用。就为了让每一个人看到我的代码都有一样的理解,不论对方是谭浩强还是刚毕业的大学生。

【回复】回复 @敬娃 :我一般会写两行: i++; fun(i); 这里没什么对错,纯粹个人习惯 只有index和counter这类会用++的写法,其他的变量自增更习惯用+=1[doge]
【回复】回复 @敬娃 : 很多面试题是这样的,真的很反人性,既不能提高编程水平,又不易读,是所有编程规范明确禁止的。谁敢在我的项目里这样写代码,我就请他走人。
【回复】这并非整不整洁?代码少不少的问题是题目是这样要求的,题目要求不能使用辅助空间来求解,那只能用递归来传递咯,要使用递归的话,那么前面那个变量只能使用当前行当前层的后面那个调用必须得是下一层的,那只能这样写呀!我不才,我能想到的只有这种表达方式
毕加索墨水:
谭浩强的书都是上世纪八十年代就有了。拿现在人的要求来评价八十年代的书。。。。合适吗?他的书再差,在八十年代九十年代初,那也是先进的

【回复】我99年计算机专业本科毕业。明确告诉你,先进个p。
【回复】最初的版本存在问题可以理解,问题是在于谭浩强的书已经再版了啊,c程序设计的第五版是2017年出版的,这个时候依然存在不符合c89/c99标准的代码。 不管是出于什么原因保留了那些错误,这些书都是垃圾。
【回复】我读大学比你还早。而且我中学就有编程课了,用苹果2。那时候任何高级程序语言教科书对于普及计算机水平都是有意义的,因为市面上的书太少了。
九等份的路易斯:
只要知道局部变量表和操作数栈的概念其实一下子就理解了,但是现实编程写成这样只会被臭骂一顿[吃瓜]

mufasai:
真没想到还能有这么多人给谭浩强辩护的

名侦探コダック:
因为i的地址没变,所以加法器获取的i是最后一步得到的3

【回复】回复 @千影Chikage :别正解了,这明显是未定义行为啊,楼主也没有指明语境,可以说是典型的错误[笑哭]
【回复】这只是可能的情况,c标准规定,这是一种未定义行为,对未定义行为的分析是不具太大意义的
随风奔跑的猴哥:
不知道现在为什么有人批判谭浩强的c,实际上他的书写的非常不错,指针那部分有点晦涩,很多人觉得用不到,如果用c来实现算法指针那部分就非常重要,我写算法的时候最深用到三重指针,另外标题里的那个运算在任何一个平台上都是明确的,只要是c编译器就是确定的,运算符优先级是确定的!

【回复】你的结论也许没问题,但是思想绝对有问题,未定义行为的结果是不可预测的
【回复】UB可是c语言标准规定的,编译器只是对标准的实现。
郑喜定诶:
为什么老是指责这些早期接触编程的学者

【回复】其他的同时期的国人写的更垃圾。别不知好歹。就算到今天,国人写的计算机方面的书至少有八成是垃圾,就是赚稿费的
【回复】回复 @黄静潜 :不是卖课的问题,我之前看到一个国企员工也批评谭浩强,这难道是他们不对?再加上大学太不负责任,用这些错误的教材,因为院长不愿意懂这些啊,而且院长两年就换一届,你能指望这样的领导整治教材问题?
鱼带烧:
谭浩强的书现在来看水平确实不行 但是那是当年没有参考下的一种探索 只能说现在还在用这本书的学校是屎 谭老师对中国计算机教育界的贡献还是不可磨灭的 毕竟是开拓者之一

kaspar2016:
++i比i++在执行中少申请一次空间,i++是先引用后自增,++i是先自增再引用,在内存有限的环境里还是要区分的。

【回复】在一行代码里超过一个以上的++就是找打,纯粹没事找事的啥子才会这么干。
【回复】回复 @赫德拉姆约阿其姆柏格斯统 :应该说同一个变量,在同一行出现两次++或--,比如++i,--j;这句没任何问题
草酰乙酸本酸:
等于6有什么问题吗?up连压栈都没整明白吧

【回复】这是未定义行为,不同编译器编译出来运行结果不一样
【回复】编译器会优化取值,每个编译器都有不同的策略,这种写法本来就不能保证正确
东枫酱:
c89与更新的标准print结果都不一样 比谭浩强的书更离谱

Darkwanderor:
不知道,大一看到书是谭浩强的果断扔垃圾桶[doge]

张恒泽:
=赋值==比较,这表达式就等于5啊,如果只是一个=那这个肯定编译不通过,==返回的就是false

【回复】错误的,这是未定义行为
未定义变量:
单纯是考语法的话,这么出题没什么问题。现在工作中当然不会这么写。但学谭浩强的书,一般都是大学生,还要学几年,不会马上工作的。后面还有软件工程之类的课程,变量怎么命名,也没必要在学C语言的时候学。就业培训班当然是不会教这种的。

【回复】未定义行为也不能当语法题考啊

知识分享官 科技 C++ 程序员 C语言 计算机 编程 野生技术协会 大学生 经验分享

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

更多相关阅读