代码改变世界

阅读排行榜

原码,反码和补码

2009-05-12 16:18 by cesc711, 187 阅读, 收藏,
摘要: 前几天写了一个表达式求值的小程序。首先我用栈存储了表达式的逆波兰式,在创造栈的时候,我是以char(单字节)为单位开辟内存的。因此能压栈的最大数为127,否则结果将会出错。顺着这个问题,我又看了看有关原码,反码和补码的一些知识。 数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负)。这就是机器数的原码了。 假设机器能处理的位数为8,即字长为1byte,原码能表示数值的范围为 :(-1... 阅读全文

项目开发过程中出现的错误二

2009-11-02 14:54 by cesc711, 186 阅读, 收藏,
摘要: 昨天在调试程序的时候出现了一个问题,有这样一个结构体:[代码]在sizeof的时候,一直以为结果会是16,但是没想到结果却是20,一下子有点糊涂。后来才知道是由于内存没有对齐的问题,于是在网上找了些资料看看。对于struct和union来说,第一个成员位于offset为0的位置。以后的每一个成员的偏移量,必须是以下两个数中比较小的那一个,第一个是#pragma pack(n),这个是编译器的一个预... 阅读全文

getchar() function

2009-05-06 14:42 by cesc711, 176 阅读, 收藏,
摘要: 昨天写了一个最简单的利用stack的行编辑器。用的是getchar()方法来读取键盘的输入。函数原型:intgetchar()getchar()方法返回的是所读取到的字符的ASCII码值。当getchar()被调用的时候,就等待用户按键。用户输入的字符被放在键盘缓冲区中,直到按回车键为止(回车也放在缓冲区中)。直到用户按下回车键的时候,getchar()方法开始从stdin流中每次读取一个字符。如... 阅读全文

malloc()和calloc()的区别

2009-05-04 22:45 by cesc711, 175 阅读, 收藏,
摘要: [代码]分配了NumByte个字节,返回指向这块内存的指针,并且所分配的内存没有被初始化。[代码]分配了NumOfElem个SizeOfElem大小的内存空间,返回指向这块内存的指针,并且所分配的内存所有位都被初始化为0.。 阅读全文

项目开发过程中出现的错误一

2009-10-30 01:50 by cesc711, 169 阅读, 收藏,
摘要: 前天出现了一个比较低级的失误,记录如下:本来想要绑定端口6666,于是用了 htonl(6666)。这样把6666当成了一个32位的无符号整数。也就是 00000000,00000000,00011010,00001010转换成网络字节序就变成了00001010,00011010,00000000,00000000。但是sockaddr_in结构中的sin_port是usigned short i... 阅读全文