assiss
assiss
关注数: 6
粉丝数: 663
发帖数: 8,000
关注贴吧数: 292
谈谈学习数据结构与算法,赠与某些急于求成的同学 除了个别天才,这世界上不存在一蹴而就的事例。 除了经常所说的“多读书、多思考、多实践”,我实在没有更多的话来满足那些贪得无厌的人。 有些人说这些早就懂了,我想听的不是你这些废话,我想听真正的金玉良言。 我只能苦笑,那你就继续等着别人来喂食吧,运气好的话,说不定有全家桶、一站式服务
看到TIOBE这几个月的排名,结合领导的感慨,说几句编程语言 原贴在C语言吧发的,这是地址, http://tieba.baidu.com/p/1715831738 内容搬运如下,建议讨论也在此楼吧(再次声明,不想引起语言之争,若我的认识有偏差、错误之处,欢迎指正,另外打个广告:诚招JAVA高手开发产品): 事情起因很复杂,简单点说就是公司是做项目的,靠人月来赚钱,利润低不说,重复多,累,看不到发展前景……这是一个倒不尽的苦水……决定要做产品,来把同质化的东西固化下来,减少项目中的重复工作。这么说还是太复杂了,一句话,公司想做产品。 问题就在这里产生了,诺大的公司,竟然找不到足够多的JAVA高手! 为什么要找JAVA高手?公司是做金融行业项目的,特别的,是做银行业务的。银行里几乎没有.net的地位,全是JAVA+C。做产品,必然要在这两种语言中选择,否则客户不认可,做也白做。当然脚本语言可选择的就多了,JS、PERL、PYTHON等都可以。 想做产品的部门,几百号人,几乎全是做JAVA的,使用C的非常少,少到完全供不应求。但想做产品的时候,C的领头人很快就能确定下来,因为都有足够高的水平,足够多的经验,足够强大的领导力,能够主导产品研发里的C部分需求。而JAVA的领头人,很头疼,几百号里竟然找不出几个像C那样符合要求的人。目前只能找些水平相对较高的人带头,然后找些水平相对有点高的人跟着做,做出来的东西,自然就…… 当然产品还有这样那样其它更多的问题,比如需求的问题,实用性的问题,性能的问题……不一一说了。 背景交待完了,我想思考一下为什么会出现这种情况。 为什么会JAVA、使用JAVA的人那么多,找水平与C相当的人却那么少?可能主要原因还在于公司是个业务导向型的公司,本身技术高手就少。 公司虽说业务为导向,对业务非常倾斜,但对技术条线也算是有相当大的照顾的,只做技术的话,也还是能找到相当不错的发展路线,比如我这样的。C技术高手大多是在项目中锻炼出来的。为什么几百人的JAVA团队中,几年了还锻炼不出来能够满足独立产品研发要求的JAVA高手? 也有可能是我们的要求太高了。都说C的学习成本高,成高手不易,可能JAVA的学习成本没我们想像得那么低,成为高手的时间不短。从现有的情况来看,项目组里的JAVA使用者长期处在一个较低的水平,他们经常抱怨要学的东西太多,各种框架,各种平台……也许要让他们成长为一个能独立设计开发框架、平台级产品的高手,需要更长的时间。 是不是还有第三种情况,JAVA平台提供的功能太多了,导致使用者满足于现有的平台、框架,忽视了自身水平的精进? 或者还有第四种可能,C语言本身就是个残酷的淘汰制语言,水平不高的在初期就已经被淘汰了。 我本身是个C语言的爱好者,虽说不喜欢JAVA也不喜欢.net(也许.net已经不能算一种语言了,在这里精简说法吧),但我对这两种语言并不排斥,他们无疑是成功的语言,不那么苛求的话,他们也是伟大的语言。现在的情况是,C语言难以找到足够多的开发、维护者,但领导者是足够的;JAVA语言有足够多的项目实践者,但作为产品级开发的参与者,极为缺乏。仅有的几位JAVA高手,又要不断地投入到各项目中去,因为各项目还需要更多的架构师级别的高手,否则一般的JAVA使用者开发出来的项目,问题不断。 问题就在这里,短时间内仍然不会得到好的解决。 这两天看了一下TIOBE的排名,C语言又回到第一了,这个月的比例竟然还在扩大。虽然说这只是一个参考,并不意味着绝对数字,但这也足够让我们思考一下,语言本身是否真的重要?人自身的水平如何体现,又如果能够得到持续提高?作为初学者,你们的选择真的需要那么唯一?
看到TIOBE这几个月的排名,结合领导的感慨,说几句编程语言的事… 事情起因很复杂,简单点说就是公司是做项目的,靠人月来赚钱,利润低不说,重复多,累,看不到发展前景……这是一个倒不尽的苦水……决定要做产品,来把同质化的东西固化下来,减少项目中的重复工作。 这么说还是太复杂了,一句话,公司想做产品。 问题就在这里产生了,诺大的公司,竟然找不到足够多的JAVA高手! 为什么要找JAVA高手?公司是做金融行业项目的,特别的,是做银行业务的。银行里几乎没有.net的地位,全是JAVA+C。做产品,必然要在这两种语言中选择,否则客户不认可,做也白做。当然脚本语言可选择的就多了,JS、PERL、PYTHON等都可以。 想做产品的部门,几百号人,几乎全是做JAVA的,使用C的非常少,少到完全供不应求。但想做产品的时候,C的领头人很快就能确定下来,因为都有足够高的水平,足够多的经验,足够强大的领导力,能够主导产品研发里的C部分需求。而JAVA的领头人,很头疼,几百号里竟然找不出几个像C那样符合要求的人。目前只能找些水平相对较高的人带头,然后找些水平相对有点高的人跟着做,做出来的东西,自然就…… 当然产品还有这样那样其它更多的问题,比如需求的问题,实用性的问题,性能的问题……不一一说了。 背景交待完了,我想思考一下为什么会出现这种情况。 为什么会JAVA、使用JAVA的人那么多,找水平与C相当的人却那么少? 可能主要原因还在于公司是个业务导向型的公司,本身技术高手就少。 公司虽说业务为导向,对业务非常倾斜,但对技术条线也算是有相当大的照顾的,只做技术的话,也还是能找到相当不错的发展路线,比如我这样的。C技术高手大多是在项目中锻炼出来的。为什么几百人的JAVA团队中,几年了还锻炼不出来能够满足独立产品研发要求的JAVA高手? 也有可能是我们的要求太高了。都说C的学习成本高,成高手不易,可能JAVA的学习成本没我们想像得那么低,成为高手的时间不短。从现有的情况来看,项目组里的JAVA使用者长期处在一个较低的水平,他们经常抱怨要学的东西太多,各种框架,各种平台……也许要让他们成长为一个能独立设计开发框架、平台级产品的高手,需要更长的时间。 是不是还有第三种情况,JAVA平台提供的功能太多了,导致使用者满足于现有的平台、框架,忽视了自身水平的精进? 或者还有第四种可能,C语言本身就是个残酷的淘汰制语言,水平不高的在初期就已经被淘汰了。 我本身是个C语言的爱好者,虽说不喜欢JAVA也不喜欢.net(也许.net已经不能算一种语言了,在这里精简说法吧),但我对这两种语言并不排斥,他们无疑是成功的语言,不那么苛求的话,他们也是伟大的语言。现在的情况是,C语言难以找到足够多的开发、维护者,但领导者是足够的;JAVA语言有足够多的项目实践者,但作为产品级开发的参与者,极为缺乏。仅有的几位JAVA高手,又要不断地投入到各项目中去,因为各项目还需要更多的架构师级别的高手,否则一般的JAVA使用者开发出来的项目,问题不断。 问题就在这里,短时间内仍然不会得到好的解决。 这两天看了一下TIOBE的排名,C语言又回到第一了,这个月的比例竟然还在扩大。虽然说这只是一个参考,并不意味着绝对数字,但这也足够让我们思考一下,语言本身是否真的重要?人自身的水平如何体现,又如果能够得到持续提高?作为初学者,你们的选择真的需要那么唯一?
终于搞定了单片机下的红外遥控解码,发帖庆祝 不容易啊
雾蒙蒙的星期五下午,来聊点啥? 有点无聊。
吧里有对DOJO熟悉的吗? 想用它来做界面,后台用C,取代C/S架构。通信就是HTTP+JSOn。不知道效果怎么样。
吧里有对DOJO(JAVASCRIPT)熟悉的吗? 如题。想用它来做界面,不知道效果怎么样。后台用C。通信就是HTTP+JSON。
[水]三个吧主进来一下 加一下我的MSN,同用户名@21cn.com。 没MSN的站内短信通知一下我,加QQ。
[水]生了女儿 高兴坏了。母女平安。
[水]开始撤侨了 一楼。
[水]花了一天功夫看完一个帖子,推荐大家看一下 天涯的,近年来少有的真正理性、理智、平静讨论。 里面涉及到的内容其实很多很多,我想对大家都会有一点帮助。 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.tianya.cn%2Fpublicforum%2Fcontent%2Fworldlook%2F1%2F268459.shtml&urlrefer=3e8c2bee5211efac0b7fb746daa82735
[水]一个晚上毁在“共地”上了 一个晚上的时间,先花在两个单片机通讯上,怎么调程序都不通(两个单片机RX和TX对连)。 后来又花了两个小时在Arduino连接舵机上,发现舵机总是很奇怪的转一个小角度后再也不受控制(舵机控制线连Arduino,电源单独接)。 就在刚才,忽然想到了一个问题:共地。 结果两个问题全部解决 生物学专业的人学软件编程已经很不容易了,学电路、单片机更难啊
放大图片的一个超分辨率算法 见 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.wisdom.weizmann.ac.il%2F~vision%2FSingleImageSR.html&urlrefer=b90a6fc12627841865b36b61c2a1d91c 里面有论文pdf 下载。论文里详细描述了算法。不过我没看懂…… 那天不是谁要图像放大算法的么,那些要专利的还是算了吧,看看这个应该有帮助。 PS:这是我刚才乱翻下载文件时无意中发现的,本来以为再也找不着了。
招软件研发实习生、初级软件研发工程师 要求: 1、熟练使用C语言编程,掌握一定的数据结构和算法 2、了解Linux系统下的C语言编程 3、对数据库有一定程度的了解(了解最基本的数据库原理,掌握最简单的Sql语句) 4、熟练使用Vim编辑器 5、对Shell、Python等熟练者优先考虑 实习生要求能有至少半年的时间稳定在公司。 工作地点:北京,北三环北太平庄附近 待遇:一般,不算好,但也绝不算差。呵呵。由你的水平决定。 有意愿的,请将简历发送到
[email protected]
。
霍夫变换--转自百度百科 霍夫变换 霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。最基本的霍夫变换是从黑白图像中检测直线(线段)。我们先看这样一个问题:设已知一黑白图像上画了一条直线,要求出这条直线所在的位置。我们知道,直线的方程可以用y=k*x+b 来表示,其中k和b是参数,分别是斜率和截距。过某一点(x0,y0)的所有直线的参数都会满足方程y0=kx0+b。即点(x0,y0)确定了一族直线。方程y0=kx0+b在参数k--b平面上是一条直线,(你也可以是方程b=-x0*k+y0对应的直线)。这样,图像x--y平面上的一个前景像素点就对应到参数平面上的一条直线。我们举个例子说明解决前面那个问题的原理。设图像上的直线是y=x, 我们先取上面的三个点:A(0,0), B(1,1), C(2,2)。可以求出,过A点的直线的参数要满足方程b=0, 过B点的直线的参数要满足方程1=k+b, 过C点的直线的参数要满足方程2=2k+b, 这三个方程就对应着参数平面上的三条直线,而这三条直线会相交于一点(k=1,b=0)。同理,原图像上直线y=x上的其它点(如(3,3),(4,4)等) 对应参数平面上的直线也会通过点(k=1,b=0)。这个性质就为我们解决问题提供了方法: 首先,我们初始化一块缓冲区,对应于参数平面,将其所有数据置为0. 对于图像上每一前景点,求出参数平面对应的直线,把这直线上的所有点的值都加1。最后,找到参数平面上最大点的位置,这个位置就是原图像上直线的参数。上面就是霍夫变换的基本思想。就是把图像平面上的点对应到参数平面上的线,最后通过统计特性来解决问题。假如图像平面上有两条直线,那么最终在参数平面上就会看到两个峰值点,依此类推。 在实际应用中,y=k*x+b形式的直线方程没有办法表示x=c形式的直线(这时候,直线的斜率为无穷大)。所以实际应用中,是采用参数方程p=x*cos(theta)+y*sin(theta)。这样,图像平面上的一个点就对应到参数p--- theta平面上的一条曲线上。其它的还是一样。 在看下面一个问题:我们要从一幅图像中检测出半径以知的圆形来。这个问题比前一个还要直观。我们可以取和图像平面一样的参数平面,以图像上每一个前景点为圆心,以已知的半径在参数平面上画圆,并把结果进行累加。最后找出参数平面上的峰值点,这个位置就对应了图像上的圆心。在这个问题里,图像平面上的每一点对应到参数平面上的一个圆。 把上面的问题改一下,假如我们不知道半径的值,而要找出图像上的圆来。这样,一个办法是把参数平面扩大称为三维空间。就是说,参数空间变为x--y--R三维,对应圆的圆心和半径。 图像平面上的每一点就对应于参数空间中每个半径下的一个圆,这实际上是一个圆锥。最后当然还是找参数空间中的峰值点。不过,这个方法显然需要大量的内存,运行速度也会是很大问题。有什么更好的方法么?我们前面假定的图像都是黑白图像(2值图像),实际上这些2值图像多是彩色或灰度图像通过边缘提取来的。我们前面提到过,图像边缘除了位置信息,还有方向信息也很重要,这里就用上了。根据圆的性质,圆的半径一定在垂直于圆的切线的直线上,也就是说,在圆上任意一点的法线上。这样,解决上面的问题,我们仍采用2维的参数空间,对于图像上的每一前景点,加上它的方向信息,都可以确定出一条直线,圆的圆心就在这条直线上。这样一来,问题就会简单了许多。 接下来还有许多类似的问题,如检测出椭圆,正方形,长方形,圆弧等等。这些方法大都类似,关键就是需要熟悉这些几何形状的数学性质。霍夫变换的应用是很广泛的,比如我们要做一个支票识别的任务,假设支票上肯定有一个红颜色的方形印章,我们可以通过霍夫变换来对这个印章进行快速定位,在配合其它手段进行其它处理。霍夫变换由于不受图像旋转的影响,所以很容易的可以用来进行定位。 霍夫变换有许多改进方法,一个比较重要的概念是广义霍夫变换,它是针对所有曲线的,用处也很大。就是针对直线的霍夫变换也有很多改进算法,比如前面的方法我们没有考虑图像上的这一直线上的点是否连续的问题,这些都要随着应用的不同而有优化的方法。 顺便说一句,搞图像处理这一行,在理论方面,有几本杂志是要看的,自然是英文杂志,中文期刊好像没有专门的图像处理期刊,当然也有不少涉及这方面的期刊,但事实求是来说,的确比英文杂志水平差很多。 ‘IEEE Transactions on Pattern And Machine Intelligence’ ‘IEEE Transactions on Image Processing’ 是最重要的两本,其它的如ICIP等的会议文章也非常好。
请大家冷静,自觉帮助救灾工作 我能理解大家对灾区的关心,但是暂时还是先不要打电话到灾区,把频宽留给救灾单位。要知道,任何线路都是有饱和设计的,不可能支持所有线路同时接通的。即使启用紧急专线,也总会需要向未架设专线的地方指挥、救急的。也请不要跑到灾区,能避开道路的请尽量选择其它道路,把道路交通让给救灾医疗队伍。
24号嫦娥一号可能发射,吧里有谁准备全程观看? 到时候一定要现场直播啊。我在外地出差,介时未必能看到。
呵呵。吧主 看你的名字,是1986年生的吗?很年轻啊。有活力。有思想。呵呵。
吧里有谁能用GOOGLE? 给个能访问的镜像地址。今天快疯了,N多问题,没有GOOGLE怎么解决啊。偏偏百度不争气。中国政府管理网络的又喜欢封锁GOOGLE。真TMD!!!
◆C语言函数库简介系列◆1.2 显示图片原来是这么简单--GTK+的图 1.2 显示图片原来是这么简单--GTK+的图片引擎1.2.1 最简单的图片浏览器打开GLADE, 新建一个窗口(WINDOW),把它的Name改成imagewindow,Title改成“图片浏览器”。 在窗口中添加一个滚动窗口(Scrolled window),把它的H Policy和V Policy都改成Automatic。即自动显示滚动条。 在滚动窗口中添加一个图片器件(Image),把它的Name改成image。 保存GLADE文件。 Project Directory: c:\projects\gtk\imageviewer Project name:imageviewer ……编写c:\projects\gtk\imageviewer\1.c:#include #include int main(int argc, char *argv[]) { GladeXML *xml; GtkWidget * image;//比上次多了这一句 //声明image变量。 gtk_init(&argc, &argv); xml = glade_xml_new("imageviewer.glade", NULL, NULL); glade_xml_signal_autoconnect(xml); image = glade_xml_get_widget(xml, "image");//比上次多了这一句 //按名字查找图片器件。这里的"image"就是你在GLADE里写的NAME。 gtk_image_set_from_file(GTK_IMAGE(image), "0.jpg");//比上次多了这一句 //设置图片。完工。 gtk_main(); return 0;}打开MSYS,运行命令:cd /c/projects/gtk/imageviewer和上次一样的命令,别告诉我说你忘记了。怎么样,简单吧?虽然这个程序很简陋,但基本的功能已经有了。下一讲,我们将继续完善这个程序,让它的功能强大起来。附:从这一讲开始,我将每课提供一个完整的例子,下载地址:http://www.cublog.cn/u/1210/upfile/060529135201.zip使用方法:解压到某个文件夹,比如c:\projects\gtk\1,打开msys:cd /c/projects/gtk/1make,然后在WINDOWS中直接双击生成的可执行文件即可运行。
◆C语言函数库简介系列◆1.1 GTK+ 1 C与GUI用C写GUI似乎是一件非常痛苦的事情。比如WIN32 SDK,比如XLIB……我初学编程时,为了找一个合适的GUI库--既强大又比较简单,花费了不知多少时间。初见GTK+,就在我苦苦查找GUI库的时候。但那个时候的GTK+让我难以理解,或者说,那个时候的我还不能理解GTK+,轻而易举地放弃了这个优秀的GUI库。众里寻她千百度。找不到。我于是认为,和其他人一样认为,用C写GUI是费力不讨好的事情。于是我转向C++,转向JAVA,转向PYTHON。MFC,FLTK,FOX,WXWINDOWS->WXWIDGETS,QT,SWT,SWING,TCL/TK……天知道我试了多少种GUI库。蓦然回首,那人却在,灯火阑珊处。在寻找的过程中,我慢慢领会到了C语言的真正力量所在。在学习了大量开源库代码之后,我慢慢了解到一个不被常人所了解的世界。就在我眼界渐开的时候,我又遇到了GTK+,这一回,我终于看到了她的美丽,看到了她的魅力。1.1 GUI王国的一朵奇葩,一枝独秀的GTK+GTK+也许不是最优秀的GUI库,但必然是最好的库之一;作为钟情C语言的人来说,除了GTK+,你再也找不到更好的了。这是宿命,还是无可奈何?不必感到悲哀,不必再去东挑西选,GTK+绝对对得起“最好”这两个字。来,一起领略GTK+的风采吧。以下内容,除了废话,有用的部分主要翻译自GTK+ FAQ。什么是GTK+?要说GTK+,首先得说GUI,即graphical user interface,图形用户界面。GUI的好处不用我多说了,学C/C++的刚开始总是羡慕学VB和DELPHI的,因为他们总是能轻而易举地建立一个GUI程序。其实不用羡慕,等你学到了C/C++的精髓之后,想做一个有用的GUI程序,不比他们慢;相反,由于有了坚实的基础,你还能做得比他们好。GTK+就是这样一种帮你创建GUI的工具。它跨平台。它支撑起一个庞大的桌面系统-GNOME。它自由,免费,LGPL的授权比GPL更宽松,更适合各种用途。它被多种语言支持。C++,PYTHON,JAVA(没错),还有很多很多。它有著名的GLADE,设计GUI不比那些所见即所得的工具烦。它有大量的WIDGET,很多很多,通常情况下你不需要再写新的。它的WIDGET可以继承--是的,你没看错,用C实现的继承。就算你需要写新的WIDGET,也是小事一桩,不比C++困难。它的设计思想是面向对象的。C语言的特性决定了它不可能是真正的面向对象,但你仔细看看GTK+,除了需要你进行一些保护,它和真正的面向对象又有什么大的区别?它实现了大量有用的函数,在GLIB里。这里有数据结构--你不需要再去写链表,无论是单身的还是双向的;你不需要再羡慕C++的HASH,GLIB也有;这里有线程,这里有IO,……废话少说,让我们见识一下著名的HELLO WORLD FOR GTK+!1.1.1 安装GTK+LINUX/UNIX的用户就不需要我多说了,只是要注意安装开发版的,并且安装LIBGLADE。我们的HELLO WORLD就是从LIBGLADE开始的。WINDOWS的用户安装GTK+有些麻烦,首先,98和ME的用户可能只能安装2.4版的,2000以上的可以安装最新版。建议有条件的安装LINUX/UNIX,没条件的也安装2000/XP,不要再用98和ME了。下面我主要介绍一下WINDOWS+MINGW+GTK+的安装方法。1.1.2 下载GLADE/GTK+ FOR WINDOWS 开发版有热心的网友制作了GTK+ FOR WINDOWS,当然有很多版本,我推荐安装下面网址的:http://gladewin32.sourceforge.net/modules/news/目前上述网址的最新版是2.8.14给一个直接的下载地址:http://gladewin32.sourceforge.net/modules/wfdownloads/visit.php?lid=99这个版本集中了GLADE/GTK+,并且还有OPENGL的插件,并且集成了开发文档,比较全面。1.1.3 安装直接运行安装文件,它会提示你找到MSYS并给予相关配置,不用改什么,直接NEXT。大约74MB,占地80MB。1.1.4 测试打开MSYS,输入pkg-config.exe --cflags gtk+-2.0你看到了什么?1.2 GTK+的HELLO WORLD!首先,在c:\projects\下建立文件夹gtk其次,打开 开始->程序->GTK+->GLADE,设计GUI界面。在GLADE的GTK+ BASIC面板里点窗口(WINDOW)出现一个新窗口,然后选择标签(LABEL)(就是那个大A字),在窗口上点一下,一个新LABEL出现了。它显示的内容是“label1”,我们要改成“你好,GTK+!”在右边的WIDGET TREE里选中label1,然后在右下角的properties: label1里改变它的Label: 你好,GTK+!。然后点菜单Project->保存,保存到c:\projects\gtk\1.glade。 PROJECT DIRECTORY: c:\projects\gtk\1 project name: 1 program name: 1 project file: 1.glade然后,打开你喜欢的编辑器,写入下面代码并保存到c:\projects\gtk\1\1.c1.c:#include #include int main(int argc, char *argv[]) {GladeXML *xml;gtk_init(&argc, &argv);xml = glade_xml_new("1.glade", NULL, NULL);gtk_main();return 0;}最后,编译运行。打开MSYS,运行下面的命令(注意,下面出现的`不是单引号,而是~号下面的,确保1.EXE和1.GLADE放在同一个目录下):cd /c/projects/gtk/1gcc 1.c -o 1 `pkg-config --cflags --libs gtk+-2.0 libglade-2.0`./1看到了什么?一个小小的窗口,里面有一句:你好,GTK+!课后作业:尽量折腾1.glade,用GLADE改无数次,然后运行1.EXE看看有什么效果。
假如我失明…… 昨天眼睛很不舒服,下午睡觉了一小会,稍微好了一点点。但今天早上起来,看了一小会电脑,眼睛又开始受不了了。昨晚就在想,如果我失明了,我的生活会变成什么样子。人从外界获取信息,80%是靠视觉。如果没有了眼睛,我将不会再像现在这样能够获得大量的信息。我的兴趣,我的爱好,我所有的一切,都会从根本 上改变。不可能再去研究我心爱的动物了,没有了眼睛,我就无法关注它们。不可能再去关注大量的计算机技术了,没有了眼睛 ,我如何去获取、阅读、思考、讨论它们。不可能再去制作我喜爱的东西了。没有了眼睛 ,我怎么去操作电烙铁,怎么去操作电锯。也许我会去研究数学,也许我会去思考哲学。这些虽然也是我的最爱,但……少了实践,我又如何去获得真知呢?历史上有一个研究动物学的人,年经时就已经有很大成就了,但很可惜,眼睛瞎了,后来就改为研究方法论等哲学上的事了。与海伦相比,似乎我还要更幸运。但既然已经看到了这花花世界,骤然间又陷入黑暗之中,教我如何去接受这黑暗的现实,又如何去忍受那单调的黑暗?也许我会不甘心,也许我会利用已经掌握的技术,研究出适合盲人快速获取信息的方法 。但这一切,不可能由我一个人完成,必然要占据其他人大量的时间。我的亲人,我的爱人,我的朋友……就算他们毫无怨言,我又如何心安?还是珍惜这双眼睛吧,现在不是你瞎的时候。我还有很多事情,需要你的帮助呢。以上内容是我闭着眼睛打出来的,错误肯定很多。本来错误应该更多的,但我又勉强睁开眼睛修改了一些,总算应该可以通顺了。
追风闲云,看置顶北京聚会帖。 看到回一下。麻烦吧主再删掉。
一年元旦又将至,北京的吧友可想聚会? 想的留个名。
建议加强删帖力度 目前垃圾帖太多.百度又不管.百度的破随机码又没用.建议如下:1.匿名不能发帖2.只有经过认证的用户名才可以发帖.凡是匿名的和没有经过认证的帖子,全部删除.这样可以用程序来自动管理.
建议加强删帖力度 目前垃圾帖太多.百度又不管.百度的破随机码又没用.建议如下:1.匿名不能发帖2.只有经过认证的用户名才可以发帖.凡是匿名的和没有经过认证的帖子,全部删除.这样可以用程序来自动管理.
219.239.157.*:你太过分了吧! 同一个问题发那么次,严重违反版规!!
看着满眼的垃圾问题,我只有一个词能表达我的心情:FUCK! 几位吧主能不能手狠一点呢?现在的C语言吧看似繁华,但都是由垃圾组成的,根本不堪入目。这样的热闹,何必呢。
跟我学NETBSD内核源代码 点名要求今天狂风过来学习。
贴一个著名的WIN98源代码 /* TOP SECRET Microsoft(c) Code Project: Chicago(tm) Projected release-date: MAY 1998 $History$ */ #include "win31.h" #include "win95.h" #include "evenmore.h" #include "oldstuff.h" #include "billrulz.h" #define INSTALL = HARD char make_prog_look_big[1600000]; void main() { while(!CRASHED) { display_copyright_message(); display_bill_rules_message(); do_nothing_loop(); if (first_time_installation) { make_50_megabyte_swapfile(); do_nothing_loop(); totally_screw_up_HPFS_file_system(); search_and_destroy_the_rest_of_OS/2(); hang_system(); } write_something(anything); display_copyright_message(); do_nothing_loop(); do_some_stuff(); if (still_not_crashed) { display_copyright_message(); do_nothing_loop(); basically_run_windows_3.1(); do_nothing_loop(); do_nothing_loop(); } } if (detect_cache()) disable_cache(); if (fast_cpu()) { set_wait_states(lots); set_mouse(speed, very_slow); set_mouse(action, jumpy); set_mouse(reaction, sometimes); } /* printf("Welcome to Windows 3.11"); */ /* printf("Welcome to Windows 95"); */ printf("Welcome to Windows 98"); if (system_ok()) crash(to_dos_prompt); else system_memory = open("a:\swp0001.swp" O_CREATE); while(something) { sleep(5); get_user_input(); sleep(5); act_on_user_input(); sleep(5); } create_general_protection_fault(); }
【 C 语言吧 · 灌水贴之莎士比亚 】 灌水
【 C 语言吧 · 灌水贴之三国演义 】 【 C 语言吧 · 灌水贴之三国演义 】
想学怎么编写自己的FTP服务器吗? 这里有用LINUX/UNIX的吗?我想写一个小教程,编自己的FTP服务器(LINUX/UNIX下的),有多少人想学?moser,你跑不掉了,第一个,今天狂风,第二个。还有人报名吗?
严重声明:不看置顶帖子的,所有问题我都不回答 看了一下544【 本吧提问规则 · 新手必读 · 搜索指南 】 [置顶]才54个人次看过这个帖子???太不认真了。从今开始,有谁再问问题不看置顶的,我一律当成没看见,不回答。
新的一年,新的开始 大家努力啊.
C语言输入输出大讨论 输入输出是C语言中一个重要的人机交互界面,初学者会犯一些意想不到的错误.大家一起来讨论一下吧.printf,scanfputc , getcputs , getsgetline,sscanf,fprintf, fscanf, fread, fwrite, fgetc, fputc等等,各种函数使用起来应该注意哪些问题,如何规范使用.
每天C语言新闻 精彩新闻,C语言的。
北京又下雪了 唉。虽然很好看,但我可苦了。这周又要出差,冰天雪地的,怎么捕鱼啊,到时候可真得冻死。
C/C++开发常用工具“群英会”[ZT] http://bbs.chinaunix.net/forum/viewtopic.php?t=469976&show_type=&sid=bd3052e98fb6d1c099ee8b5f4a00a70b 开发环境 ---->Turbo c DOS时代c语言开发的经典工具,目前适合两类人使用:c语言beginner(尤其是学生一族),具有怀旧情节的专业人士:) ---->Visual C++ 6.0/7.0 稳定而强大的IDE开发环境,具有丰富的调试功能,定制宏的功能也是其一大特色。Microsoft的经典之作,功能强大自不必言说。附带的一些工具也很不错,比如:Spy++。但编译器较之同类,支持c++标准的程度不够好,尤其6.0及以前的版本。 ---->BCB Borland的C++ Builder是可以与VC匹敌的另一个功能强大的IDE,速度和稳定性稍逊,但对c++标准支持的程度较好。 ---->Cygwin Windows平台下的C++编译器,基于gcc,又完全兼容Window特有的东西,比如对winsock的支持。从http://www.cygwin.com可以找到有关Cygwin的详细信息。 ---->Dev-c++ Windows平台下,一个类似VC、BCB的c++ IDE开发环境,属于共享软件。界面亲切优雅,size也不大,其4.9.x版有中文语言支持,无需汉化。编译器基于gcc,完全支持STL。但是对于规模较大的软件项目,恐怕难以胜任。可以从:http://www.bloodshed.net/dev/devcpp.html找到有关Dev-c++的有关信息。 ---->Source Insight 有着和Dev c++一样漂亮的界面,提供代码的编辑和察看功能,具有丰富的语法加亮功能,可以像VC一样自动弹出成员函数的提示,并具有快速方便的函数跳转功能(但是跳转速度似乎有点慢)。只是默认设置不适合时,需要仔细的调整和修改。无法查找经typedef之后的名字。 辅助工具 ---->Visual Assist VC IDE环境下的辅助编程工具,能识别各种关键字、函数、成员变量,自动给出tip,并自动更正大小写错误,标示拼写错误等。是VC开发的良好伴侣。 ---->Understand for C++ 一款c/c++IDE编程的辅助工具,支持反向工程,代码导向和一些统计功能,从http://www.scitools.com可以找到有关Understand for C++的详细信息。 程序编辑器 ---->EditPlus 一款很不错的文本编辑软件,功能强大却又十分轻巧。支持不同语言的语法加亮,还有Project组织功能,具有丰富的自定义功能。通过设置User Tool,可以和其他语言编译器结合,形成一个简单的IDE。 ---->Ultra Edit 功能和EditPlus相当,通过脚本文件提供的配置功能可以定制编辑环境,但自6.0版以后一直没多大变化,就编程而言,自定义设置没有EditPlus方便。 ---->EMACS 公认的世界上功能最多,最复杂的文本编辑器,其实也可以当作程序员用的编辑器。 ---->Visual Slick Edit 一个功能强大的程序员用编辑器。最值得一提的是其定制功能,很好用,可以和EMACS相比。自带了一套PCODE解释器,用c的语法,还可以挂接动态库。配合mingw一起使用很方便。从http://www.slickedit.com可以找到有关SlickEdit的详细信息。 ---->IQEdit 全功能的程序员用编辑器,界面很漂亮,从http://pwksoftware.com可以找到有关IQEdit的详细信息。 UML/建模 ---->Rational Rose 强大的建模工具,早已“家喻户晓”,功过自然不必多加评说了。从http://www.rationalsoftware.com.cn可以找到有关Rational Rose的详细信息。 ---->Visual Modeler MS Visual Studio 6.0所附的小工具。属于Rational和MicroSoft合作的战略产品,是Rose的简化版。 ---->Visio Microsoft的建模工具,感觉更人性化一些,但功能没有Rose多、强、专,支持正向的代码生成,以及对代码的反向工程。
当无知成为风尚 我也实在不好说什么了。事实用于雄辩。会英文的到下面看看吧http://www.tiobe.com/tiobe_index/tekst.htm
北京下雪了 天地一片苍茫……
标准C中各种类型数值范围 -- number of bits for smallest object that is not a bit-field (byte) CHAR_BIT 8-- minimum value for an object of type signed char -127 // -(27 - 1) SCHAR_MIN-- maximum value for an object of type signed char +127 // 27 - 1 SCHAR_MAX-- maximum value for an object of type unsigned char 255 // 28 - 1 UCHAR_MAX-- minimum value for an object of type char see below CHAR_MIN-- maximum value for an object of type char see below CHAR_MAX-- maximum number of bytes in a multibyte character, for any supported locale MB_LEN_MAX 1-- minimum value for an object of type short int -32767 // -(215 - 1) SHRT_MIN-- maximum value for an object of type short int +32767 // 215 - 1 SHRT_MAX-- maximum value for an object of type unsigned short int 65535 // 216 - 1 USHRT_MAX-- minimum value for an object of type int -32767 // -(215 - 1) INT_MIN-- maximum value for an object of type int +32767 // 215 - 1 INT_MAX-- maximum value for an object of type unsigned int 65535 // 216 - 1 UINT_MAX-- minimum value for an object of type long int -2147483647 // -(231 - 1) LONG_MIN-- maximum value for an object of type long int +2147483647 // 231 - 1 LONG_MAX-- maximum value for an object of type unsigned long int 4294967295 // 232 - 1 ULONG_MAX-- minimum value for an object of type long long int -9223372036854775807 // -(263 - 1) LLONG_MIN-- maximum value for an object of type long long int +9223372036854775807 // 263 - 1 LLONG_MAX-- maximum value for an object of type unsigned long long int 18446744073709551615 // 264 - 1 ULLONG_MAX
标准C中各种类型数值范围 -- number of bits for smallest object that is not a bit-field (byte) CHAR_BIT 8-- minimum value for an object of type signed char -127 // -(27 - 1) SCHAR_MIN-- maximum value for an object of type signed char +127 // 27 - 1 SCHAR_MAX-- maximum value for an object of type unsigned char 255 // 28 - 1 UCHAR_MAX-- minimum value for an object of type char see below CHAR_MIN-- maximum value for an object of type char see below CHAR_MAX-- maximum number of bytes in a multibyte character, for any supported locale MB_LEN_MAX 1-- minimum value for an object of type short int -32767 // -(215 - 1) SHRT_MIN-- maximum value for an object of type short int +32767 // 215 - 1 SHRT_MAX-- maximum value for an object of type unsigned short int 65535 // 216 - 1 USHRT_MAX-- minimum value for an object of type int -32767 // -(215 - 1) INT_MIN-- maximum value for an object of type int +32767 // 215 - 1 INT_MAX-- maximum value for an object of type unsigned int 65535 // 216 - 1 UINT_MAX-- minimum value for an object of type long int -2147483647 // -(231 - 1) LONG_MIN-- maximum value for an object of type long int +2147483647 // 231 - 1 LONG_MAX-- maximum value for an object of type unsigned long int 4294967295 // 232 - 1 ULONG_MAX-- minimum value for an object of type long long int -9223372036854775807 // -(263 - 1) LLONG_MIN-- maximum value for an object of type long long int +9223372036854775807 // 263 - 1 LLONG_MAX-- maximum value for an object of type unsigned long long int 18446744073709551615 // 264 - 1 ULLONG_MAX
给大家看一个 http://bbs.chinaunix.net/forum/23/20041129/455294.html不会问问题的下场。
搜索研究院 大家不妨去看看,让你提高搜索技巧http://www.9238.net/
提问的智慧 [ZT] 原文请见:http://www.9238.net/stone/tiwendezhihui.htm提问的智慧 D.H.Grand[nOBODY/Ginux] 2001 在黑客世界里,当提出一个技术问题时,你能得到怎样的回答?这取决于挖出答案的难度,同样取决于你提问的方法。本指南旨在帮助你提高发问技巧,以获取你最想要的答案。 首先你必须明白,黑客们只偏爱艰巨的任务,或者能激发他们思维的好问题。 如若不然,我们还来干吗?如果你有值得我们反复咀嚼玩味的好问题,我们自会对你感激不尽。好问题是激励,是厚礼,可以提高我们的理解力,而且通常会暴露我们以前从没意识到或者思考过的问题。对黑客而言,“问得好!”是发自内心的大力称赞。 尽管黑客们有蔑视简单问题和不友善的坏名声,有时看起来似乎我们对新手,对知识贫乏者怀有敌意,但其实不是那样的。 我们不想掩饰对这样一些人的蔑视--他们不愿思考,或者在发问前不去完成他们应该做的事。这种人只会谋杀时间--他们只愿索取,从不付出,无端消耗我们的时间,而我们本可以把时间用在更有趣的问题或者更值得回答的人身上。 我们称这样的人为“失败者”(由于历史原因,我们有时把它拼作“lusers”)。 我们在很大程度上属于志愿者,从繁忙的生活中抽出时间来解惑答疑,而且时常被提问淹没。所以我们无情的滤掉一些话题,特别是抛弃那些看起来象失败者的家伙,以便更高效的利用时间来回答胜利者的问题。 如果你觉得我们过于傲慢的态度让你不爽,让你委屈,不妨设身处地想想。我们并没有要求你向我们屈服--事实上,我们中的大多数人最喜欢公平交易不过了,只要你付出小小努力来满足最起码的要求,我们就会欢迎你加入到我们的文化中来。但让我们帮助那些不愿意帮助自己的人是没有 意义的。如果你不能接受这种“歧视”,我们建议你花点钱找家商业公司签个技术支持协议得了,别向黑客乞求帮助。 如果你决定向我们求助,当然不希望被视为失败者,更不愿成为失败者中的一员。立刻得到有效答案的最好方法,就是象胜利者那样提问 —— 聪明、自信、有解决问题的思路,只是偶尔在特定的问题上需要获得一点帮助。 (欢迎对本指南提出改进意见。任何建议请E-mail至
[email protected]
,然而 请注意,本文并非网络礼节的通用指南,我通常会拒绝无助于在技术论坛得到有用答案的建议。) (当然,如果你写中文,最好还是寄
[email protected]
;-) = 提问之前 = 在通过电邮、新闻组或者聊天室提出技术问题前,检查你有没有做到: 1. 通读手册,试着自己找答案。 2. 在FAQ里找答案(一份维护得好的FAQ可以包罗万象:)。 3. 在网上搜索(个人推荐google~~~)。 4. 向你身边精于此道的朋友打听。 当你提出问题的时候,首先要说明在此之前你干了些什么;这将有助于树立你的形象:你不是一个妄图不劳而获的乞讨者,不愿浪费别人的时间。如果提问者能从答案中学到东西,我们更乐于回答他的问题。 周全的思考,准备好你的问题,草率的发问只能得到草率的回答,或者根本得不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。 小心别问错了问题。如果你的问题基于错误的假设,普通黑客(J. Random Hacker)通常会用无意义的字面解释来答复你,心里想着“蠢问题...”,希望着你会从问题的回答(而非你想得到的答案)中汲取教训。 决不要自以为够资格得到答案,你没这种资格。毕竟你没有为这种服务支付任何报酬。你要自己去“挣”回一个答案,靠提出一个有内涵的,有趣的,有思维激励作用的问题--一个对社区的经验有潜在贡献的问题,而不仅仅是被动的从他人处索要知识--去挣到这个答案。 另一方面,表明你愿意在找答案的过程中做点什么,是一个非常好的开端。“谁能给点提示?”、“我这个例子里缺了什么?”以及“我应该检查什么地方?”比“请把确切的过程贴出来”更容易得到答复。因为你显得只要有人指点正确的方向,你就有完成它的能力和决心。
不得了,嘿嘿 我当上了“模式识别吧”的吧主了,VC99帮忙做个相关吧。大家有空去我那里看看。我决定用C语言来做模式识别,也让大家看看C语言的实际应用。
请大家到下面的吧里看看 嘿嘿,我们来做联谊吧如何? 百度贴吧 > 数学系女生吧 > 主题列表http://post.baidu.com/f?kw=%CA%FD%D1%A7%CF%B5%C5%AE%C9%FA
茉莉,过来做作业:关于内存 这当然不是我的问题,看你闲得无聊,过来练习C语言。这些天都没见你问任何问题。VC99也别得意,下面就轮到你了。我用malloc函数时,碰到以下问题: 代码:struct command_struct{ char *name; char *argv[20]; int argc; }; struct command_struct *cmd; //1cmd = (struct command_struct *) malloc (sizeof(struct command_struct)); 然后读取字符串,赋给cmd->argv,如: cmd->argv[0] = "ls" cmd->argv[1] = "/home" 然后free(cmd); 循环回到上面 //1处。这次读取的串仅为: cmd->argv[0] = "ls" 但是cmd->argv[1] 里仍然是 "/home"。 有没什么办法能清除掉cmd->argv中的值,最好是能清除掉struct command_struct中所有的值?????????
祝elva6401生日快乐! 20岁了,不容易啊,呵呵。是20周岁吗?我们吧有史以来第一个过生日的吧主哦。
擂台赛,打擂了:求1000000以内的素数 这几天吧内一股不正之风渐涨,想我堂堂男子汉,怎能如此堕落呢?吧内的弟兄们,起来!要求:1.答案一定要正确。一百万以内的所有素数,一个都不能少。2.首先考虑时间复杂度,在时间复杂度相同的情况下,再比较空间复杂度。3.请大家把程序贴出来,我在我的电脑上编译。最终结果以我电脑上的成绩为标准。4.由于tc2.0是16位编译器,在算一百万的时候可能需要不必要的转换。因此希望大家用本吧推荐的编译器来验证程序。5.结果分一二三等奖,得奖人数待定,奖品待定,嘿嘿。6.请大家把程序贴在下面。格式如下:/******************作者:某某某日期:2004-月-日 小时:分钟编译环境:操作系统+编译器(一定要有版本号,比如VC6.0)******************/#include ......int main(){ ...}...
深入理解C语言指针的奥秘(转自 哈工大·纯C论坛) 正规院校的毕竟不一样啊.不过这篇文章中有很多技巧性的不适合初学者学习.大家看看,了解一下就可以了.别跟着乱学啊.要是出错了,把你系统搞崩溃了,资料都没有了,找我哭,我是没办法的.=======================深入理解C语言指针的奥秘副标题:作者:未知 文章来源:不详 点击数:19 更新时间:2004-11-8指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)int(*ptr)[3]; (5)int*(*ptr)[4]; 如果看不懂后几个例子的话,请参阅我前段时间贴出的文章<<如何理解c和c ++的复杂类型声明>>。 指针的类型 从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型: (1)int*ptr;//指针的类型是int* (2)char*ptr;//指针的类型是char* (3)int**ptr;//指针的类型是int** (4)int(*ptr)[3];//指针的类型是int(*)[3] (5)int*(*ptr)[4];//指针的类型是int*(*)[4] 怎么样?找出指针的类型的方法是不是很简单? 指针所指向的类型 当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。 从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。例如: (1)int*ptr;//指针所指向的类型是int (2)char*ptr;//指针所指向的的类型是char (3)int**ptr;//指针所指向的的类型是int* (4)int(*ptr)[3];//指针所指向的的类型是int()[3] (5)int*(*ptr)[4];//指针所指向的的类型是int*()[4] 在指针的算术运算中,指针所指向的类型有很大的作用。 指针的类型(即指针本身的类型)和指针所指向的类型是两个概念。当你对C越来越熟悉时,你会发现,把与指针搅和在一起的"类型"这个概念分成"指针的类型"和"指针所指向的类型"两个概念,是精通指针的关键点之一。我看了不少书,发现有些写得差的书中,就把指针的这两个概念搅在一起了,所以看起书来前后矛盾,越看越糊涂。 指针的值,或者叫指针所指向的内存区或地址 指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32位程序里,所有类型的指针的值都是一个32位整数,因为32位程序里内存地址全都是32位长。 指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为si zeof(指针所指向的类型)的一片内存区。以后,我们说一个指针的值是XX,就相当于说该指针指向了以XX为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。 指针所指向的内存区和指针所指向的类型是两个完全不同的概念。在例一中,指针所指向的类型已经有了,但由于指针还未初始化,所以它所指向的内存区是不存在的,或者说是无意义的。 以后,每遇到一个指针,都应该问问:这个指针的类型是什么?指针指的类型是什么?该指针指向了哪里? 指针本身所占据的内存区 指针本身占了多大的内存?你只要用函数sizeof(指针的类型)测一下就知道了。在32位平台里,指针本身占据了4个字节的长度。 指针本身占据的内存这个概念在判断一个指针表达式是否是左值时很有用。
本贴吧共有主题数 795 个,帖子数 5000 篇 呵呵.我这个加上应该就是本贴吧共有主题数 796 个,帖子数 5001 篇
gcc跨平台问题 总结gcc跨平台的问题.现在只讨论windows下的mingw+gcc和freebsd下的gcc差异.请大家不要回复.有问题另外开帖讨论.
关于scanf的讨论 scanf是这样定义的:等待用户的输入,并把用户的输入回显到屏幕上,直到用户输入一个结束符号.一个结束符号可以是回车,也可以是EOF.在WINDOWS里键盘输入EOF一般是CTRL+Z,在LINUX/UNIX里一般是CTRL+D.如果你是用回车来结束这个输入,那么在屏幕上就会打印一个换行符.而用CTRL+Z来结束输入,那么屏幕上就不会打印这个结束的东西.
在C语言吧里写帖子应该注意的地方 BAIDU帖吧的后台程序不是很完善,前台JAVASCRIPT也一再改来改去,看来BAIDU没把这个帖吧当回事。不过我们不管这些,我们还是管我们自己的事。
十一7天假 国庆了,回家去。大家也别太辛苦了。有问题等7号回来再说,今晚11:40的火车。再见,各位,预祝我一路顺风,呵呵,祝大家国庆玩得开心。
free问题 我在VC60 中调试#include #include int main (){ int i,n; int * buffer; printf ("How long do you want the string? "); scanf ("%d", &i); buffer = (int*) malloc (i+1); if (buffer==NULL) exit (1); for (n=0; n
千里共婵娟 祝大家中秋快乐!快乐团聚!
[转载]C99 的语言新特性 版权所有:云风 云风吐血整理了下面这个 :) 可能还有极少漏掉的新特性. 不过那一般是用处不大的东西 1. 对编译器限制增加了,比如源程序每行要求至少支持到 4095 字节 变量名函数名什么的要求支持到 63 字节 ( extern 的要求支持到 31) 2. 预处理增强了. 例如, 1.宏支持类似 ... 的东西 #define Macro(...) __VA_ARGS__ 2. 使用宏的时候,参数如果不写. 而宏里用 #,## 这样的东西, 会扩展成空串. (以前会出错的) 3. 支持 // 行注释 4~xx. 还有些我不太关心的扩展 ;) 3. 增加了新关键字 restrict, inline, _Complex, _Imaginary, _Bool restrict 含义比较复杂, 不太能简单解释清楚. 好在大家应该 都有耳闻是什么东西, 后面几个 _开头的类型关键字早就应该支持了 ;) 因为防止以有的代码出问题, 所以只好 _ 开头了 支持 long long, long double _Complex, float _Complex 这样的类型 :) 4. 支持 <: :> <% %> %: %:%:, 等等奇怪的符号替代, D&E 里好象提过这个 5. 支持了不定长的数组. 数组的长度就可以用变量了 :) 这个是我刚刚从 basic 转到 C 时最想要的东西 :) 声明类型的时候呢,就用 int a[*] 这样的写法. 不过考虑到效率和实现, 这玩意并不是一个新类型. 所以就不能用在全局里, 或者 struct union 里面, 说白了, 就是帮你调用 _alloca. 当然, 如果你用了这样的东西, goto 语句就受限制了. 不能跳到所在的语句段里了. 6. 变量声明可以放在任何地方, 而不必都放在语句段的开头. 而 for 语句现在提倡这么写 for(int i=0;i<100;++i) 就是说, int i 的声明放在里面, i 只在 for 里面有效. 7. 当一个类似结构的东西需要临时构造的时候, 可以用 (type_name) {xx,xx,xx} 这有点像 C++ 的构造函数 嘿嘿 8. 初始化结构的时候现在可以这样写: struct {int a[3], b;} hehe[] = { [0].a = {1}, [1].a = 2 }; struct {int a, b, c, d;} hehe = { .a = 1, .c = 3, 4, .b = 5} // 3,4 是对 .c,.d 赋值的 这个感觉超强啊 ^^ 我一直想要的东西, 为什么 C++ 没有呢 ;( 9. 字符串里面, u 支持 unicode 的字符 :) 10. 好象还支持什么 16 进制的浮点数的描述, 不过我很奇怪为什么不支持 2 进制整数的描述 11.因为现在支持 long long 了(规定至少是 64bit) , 所以 printf scanf 里就多出支持一个 ll / LL (VC6 里用的 I64) 12. 浮点数的内部数据描述支持个什么新标准来着, 这个可以用 #pragma 什么的去指定 13. 除了已经有的 __line__ __file__ 以外, 又支持了一个 __func__ ,可以得到当前的函数名, 这个 gcc 好象早就有了 14. 对于非常数的表达式,也允许编译器做化简 15. 对于 / % 负数上的定义, 总算改成了我最希望的形式 比如原来 -22 / 7 = -3, -22 % 7 = -1 现在 -22 / 7 = -4, -22 % 7 = 6 为了这个问题, 我以前老自己定义一个 DIV 和 MOD 宏或 inline 函数 ;( 16. 那个不写函数返回类型, 默认就是 int 的规定取消了. 再这么写就不通过了 17. 以前我偏爱 C 的时候, struct 定义的最后一个数组的长度喜欢写 [0], 在 C++ 里是通不过的. C99 这次把这种做法统一规定写 [] (既不写长度描述) 18. 为了方便宏或者代码生成器, 如果你写 const const int i; 是不出错的, 当成 const int i; 处理 19. 增加和修改了一些标准头文件, 比如定义 bool 的 定义一些标准长度的 int 的 定义复数的 定义宽字符的 有点泛型味道的数学函数 跟浮点数有关的 里多了一个 va_copy 可以复制 ... 的参数 里多了个 struct tmx 对 struct tm 做了扩展 输入输入对宽字符还有长整数什么的做了相应的支持 欢迎补充写漏的东西 :)
1
下一页