摘要:---DO NOT REPEAT YOURSELF---建设性的懒惰,是程序员的第一美德。最简单的懒惰就是不要重复自己,简单到一个命名规则,例如C语言中:int osip_list_init (osip_list_t *li)void osip_list_special_free (osip_l...
阅读全文
摘要:对大多数程序员来说scanf可以能是最熟悉,也是陌生的工具。在学习C语言时,大家一定没少用它,但是对它也知道不多。比如说,它有哪些可能的返回值?又比如怎么样才能跳过回车,读一个字符?我们可以一起来研究一下,为什么scanf会设计成这样子,我们如何更好的使用它?如何扩展它?处理好IO不容易--scanf的返回值设计如果我们有这样一个函数int readInt()是不是比scanf更好用呢?一切正常时OK,但有些情况下不一定。int readInt();比如要1 2 3 4 5这样的数据,开始它很好用,但是如何决定已经结束了呢?按照C语言的惯例,我们用返回值来表示出错,接口变成int readIn
阅读全文
摘要:#define BASE_MAX (26 + 10)char const* itostr(int x, int base){ /* map 居中, 支技负余数 */ static char const * const map = "ZYXWVUTSRQPONMLKJIHGFEDCBA987654321" "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" + (BASE_MAX - 1); /* 静态缓冲,不支持多线程, 每次调用都覆盖上次的值 */ static char buf[BASE_MAX]; ...
阅读全文
摘要:从上周开始写如何使用C++编程以后,我发现这不是一个容易的题目。因此,我认真的看了一下C++相关的材料,发现现在为止,比较好的材料还是这些
阅读全文
摘要:C++要解决的基本问题有两个,一是如何处理好int类型;二是如何处理好vector类型。在解决这两个问题的时候,C++的设计者们遇到了相当多的细节问题,不过它们都已经被记录在了C++ programming language一书中。幸好我们不用设计语言,这些问题我们不用再去思考,只需要知道如何做最好(best practice).
阅读全文