
c/c++
文章平均质量分 71
borefo
这个作者很懒,什么都没留下…
展开
-
正确认识printf和scanf函数
有以下一段程序:int i; char c; for (i=0;i { scanf("%d",&c); printf("i=%d/r/n",i); } 乍看很简单,可真正运行以后,发现问题并不是这么简单1.当你输入数字时,每次输入都会提示你输入2.当你输入字符时,不会提示你输入3.可能输出000001234 因为c的声名是char而不是int。当你令scanf(原创 2009-09-23 01:45:00 · 1014 阅读 · 0 评论 -
vim使用技巧
vim使用技巧 读本文之前请注意:1. 本文的目标是提供一些vim的使用技巧,利用这些技巧可以提高vim的操作效率。部分技巧在vi上也可以使用,但是现在基本上都是用vim了。2. 本文是整理和总结使用技巧,而非讲解vim入门,因此不会涉及最基本的使用,例如如何上移或下移光标,对此类操作请参阅任何一本vim转载 2009-12-16 14:30:00 · 917 阅读 · 0 评论 -
基本 VIM 操作指令
基本 VIM 操作指令注:以下指令若无特别标示,皆在「命令模式」下输入 § 进入输入模式在命令模式下输入以下指令,程序将会进入输入(insert)模式此时使用者便可以修改文件档,若想跳出输入模式,则键入即可回到命令模式。i在光标左方进入输入模式I在光标所在行的行首进入输入模式a在光标右方进入输入模式A在光标所在行的行尾进入输入模式o(小写英文转载 2009-12-16 11:53:00 · 5155 阅读 · 0 评论 -
vi的复制粘贴命令
vi的复制粘贴命令 vi编辑器有3种模式:命令模式、输入模式、末行模式。掌握这三种模式十分重要: 命令模式:vi启动后默认进入的是命令模式,从这个模式使用命令可以切换到另外两种模式,同时无论在任何模式下只要按一下[Esc]键都可以返回命令模式。在命令模式中输入字幕“i”就可以进入vi的输入模式编辑文件。 输入模式:在这个模式中我们可以编辑、修改、输入等编辑工作,转载 2009-12-16 10:53:00 · 8113 阅读 · 0 评论 -
关于信号量与线程互斥锁的区别与实现
关于信号量与线程互斥锁的区别与实现 之前一直没有怎么关注过这个问题,前些日子在面试一家公司的时候,面试官提到了pthread_cond_wait/pthread_cond_signal的实现,当时答的不是很好,回来就查了nptl的代码。前天,水木上又有人问到了信号量和互斥锁的问题,我想还是对它们的区别与实现总结一下。首先了解一些信号量和线程互斥转载 2009-11-20 11:17:00 · 2963 阅读 · 1 评论 -
微软C/C++ 编译器选项
微软C/C++ 编译器选项-优化- /O1最小化空间minimize space/Op[-]改善浮点数一致性improve floating-pt consistency/O2最大化速度maximize speed/Os 优选代码空间 favor code space/Oa假设没转载 2009-10-06 11:05:00 · 1519 阅读 · 0 评论 -
宏展开小结
在C++中,尽管使用宏是不推荐的,但是很多时候宏也会为我们提供一些方便,且在现有代码中宏也确实大量存在。有人认为宏是错误的根源,因为宏展开后,有可能会出现一些稀奇古怪的代码,那么,本文在这里总结一些查看宏展开后的代码的方法。 1、在visual studio 2005中,选择项目属性-〉配置属性-〉C/C++-〉预处理器,在“生成预处理文件”中选择生成预处理文件,“不带行号(/EP /P)转载 2009-09-28 10:36:00 · 5309 阅读 · 0 评论 -
条件编译小结
编码的时候经常要用到条件编译,每次都到网上去查比较浪费时间,今天总结一下以备后用编译器 GCC#ifdef __GNUC__ #if __GNUC__ >= 3 // GCC3.0以上 Visual C++#ifdef _MSC_VER(非VC编译器很多地方也有定义) #if _MSC_VER >=1000 // VC++4.0以上 #if _MSC_VER >=1100 // V转载 2009-09-26 23:37:00 · 1554 阅读 · 1 评论 -
使用异或交换数据值的原理
大家都知道,假如有a,b两个整型数,我们可以用a^=b;b^=a;a^=b;来交换a,b的值,在这里我说说其中的原理:^ 在 C 里面是按位异或操作符,相同的话异或的结果就是 0,不同的话就是 1。举个例子,比如 a 表示十进制的 5,b 表示十进制的 12,按位异或结果就是:a = 0101 (5 的二进制表示)b = 1100 (12 的二进制表示) ----c原创 2009-09-30 17:51:00 · 6715 阅读 · 2 评论 -
虚拟继承内存布局图示
在同时使用了虚函数的时候,虚基类表可以合并到虚表(virtual table)中,每对象的虚基类表指针(vbptr)也可以省略(只需vptr即可)。 虚函数是C++众多运行时多态特性中开销最小,也最常用的机制。虚函数的好处和作用这里不再多说,应当注意在对性能有苛刻要求的场合,或者需要频繁调用,对性能影响较大的地方(比如每秒钟要调用成千上万次,而自身内容又很简单的事件处理函数)转载 2009-09-26 10:38:00 · 2786 阅读 · 0 评论 -
通过函数指针修改函数内容
很多人认为通过函数指针不能修改函数内容,而只能通过函数指针调用函数,今天在论坛上看到一段代码,通过函数指针修改函数内容,颠覆了某些人对函数指针的看法,转引过来,慢慢欣赏。#include #include #include using namespace std; void foobar(void){ printf( "function foobar %x/n原创 2009-09-29 17:05:00 · 1458 阅读 · 0 评论 -
由(int&)a引发的思考及浮点数在内存中的表示
今天看到一段代码,如下:请写出它的输出结果#include using namespace std; int main(void) { float a = 1.0f; cout << &a << endl; cout << (int)&a << endl; cout << (int&)a << endl原创 2009-09-30 13:46:00 · 3033 阅读 · 1 评论 -
标准输入输出函数%[]和%n说明符的使用方法
标准输入输出函数scanf具有相对较多的转换说明符,它常常作为入门级函数出现在各种教材中。但奇怪的是,[]和n这两种都为c89/c99所规定的标准说明符却鲜少在大多数教材中出现。虽然[]和n说明符的使用频率不及其它说明符,但两者在程序设计中的作用仍然不可小视,尤其是[]说明符。 众所周之,scanf以空白字符为定界符,但如果输入的字符串是以其它字符为定界符的,那怎么办转载 2009-09-29 18:55:00 · 529 阅读 · 0 评论 -
在Linux下产生并调试core文件
在Linux下产生并调试core文件先看看我用的是个什么机器:$ uname -aLinux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 EDT 2004 i686 i686 i386 GNU/Linux再看看默认的一些参数,注意core file size是个0,程序出错时不会产生core文件了。$ ulimit -转载 2009-12-18 09:36:00 · 6597 阅读 · 1 评论