随笔分类 -  Programming Language

摘要:C++ExpertsForumTheStandardLibrarian:I/OandFunctionObjects:ContainersofPointersMatthewAusternLikemostoftheStandardC++library,thestandardcontainerclassesareparameterizedbytype:youcancreateanstd::vectortoholdobjectsoftypeint,anstd::vectortoholdstringobjects,andanstd::vectortoholdobjectsofsomeuser-defin 阅读全文
posted @ 2013-09-20 15:13 Pianistx 阅读(261) 评论(0) 推荐(0)
摘要:学习高效编程的有效途径之一就是阅读高手写的源代码,CRT(C/C++ Runtime Library)作为底层的函数库,实现必然高效。恰好手中就有glibc和VC的CRT源代码,于是挑了一个相对简单的函数strlen研究了一下,并对各种实现作了简单的效率测试。 strlen的函数原形如下: size_t strlen(const char *str); strlen返... 阅读全文
posted @ 2013-09-15 00:44 Pianistx 阅读(2181) 评论(6) 推荐(2)
摘要:研究printf的实现,首先来看看printf函数的函数体 int printf(const char *fmt, ...) { int i; char buf[256]; va_list arg = (va_list)((char*)(&fmt) + 4); i = vsprintf(buf, fmt, arg); ... 阅读全文
posted @ 2013-09-11 22:15 Pianistx 阅读(13443) 评论(0) 推荐(3)
摘要:C++ 中的枚举类型继承于 C 语言。就像其他从 C 语言继承过来的很多特性一样,C++ 枚举也有缺点,这其中最显著的莫过于作用域问题——在枚举类型中定义的常量,属于定义枚举的作用域,而不属于这个枚举类型。例如下面的示例: enum FileAccess { Read = 0x1, Write = 0x2, }; FileAccess access = ::Re... 阅读全文
posted @ 2013-08-28 00:54 Pianistx 阅读(2349) 评论(0) 推荐(0)
摘要:浮点数的编码转换采用的是IEEE规定的编码标准,float和double 这两种类型的数据的转换原理相同,但是由于范围不一样,编码方式有些区别。IEEE规定的编码会将一个浮点数转换为二进制数。以科学计数法划分,将浮点数拆分成3部分:符号,指数,尾数。 1. float类型的IEEE编码。 Float类型在内存中占4个字节(32位)。最高位用于表示符号:剩余31位中,从右向左取8位表示用于指数,... 阅读全文
posted @ 2013-08-28 00:40 Pianistx 阅读(2164) 评论(0) 推荐(0)
摘要:写代码,有两类追求,一种是追求实用(Coder),一种是追求代码艺术(Artist)我是那种追实用追腻了,偶然追一下艺术(就是偶然和艺术有一腿)的那种Coder很多人,已经习惯了for(i=0; i= n;}又或者,有的人知道平方根的优化:int isPrime(int n){ int i, s = (int)(sqrt((double)n) + 0.01); for (i = 2; i s;}再或者,消除偶数:int isPrime(int n){ int i, s = (int)(sqrt((double)n) + 0.01); if (n s;}当然,这样还不... 阅读全文
posted @ 2013-08-27 22:29 Pianistx 阅读(1222) 评论(0) 推荐(1)