c/c++ 细节
sftxlin
仰首望远,迈步下一个征程!
展开
-
x&(-x) Lowbit(x)
刚学树状数组,看到这里的时候懵了。经过询问,发现,原来在程序运行时,数据用的都是补码,于是解决了int Lowbit(x){ return x&(-x);}如:x =1: 1 &-1(设位数为8)0000 0001 & 1111 1111 = 1原创 2011-09-05 21:53:12 · 17447 阅读 · 3 评论 -
#if 0/#if 1 ... #endif的作用 volatile
http://www.cnblogs.com/MichaelOwen/articles/2128733.html转载 2013-05-06 14:30:10 · 695 阅读 · 0 评论 -
strip 命令从 XCOFF 对象文件中有选择地除去行号信息、重定位信息、调试段、typchk 段、注释段
http://www.cnblogs.com/wangkangluo1/archive/2012/07/02/2572430.html转载 2013-05-06 14:39:48 · 939 阅读 · 0 评论 -
析构函数什么情况下要定义为虚函数?
原文地址:http://blog.sina.com.cn/s/blog_7c773cc50100y9hz.html1.第一段代码#includeusing namespace std;class ClxBase{public: ClxBase() {}; ~ClxBase() {cout void DoSomething() { cout }转载 2013-12-23 20:30:27 · 544 阅读 · 0 评论 -
关于vector的resize函数调用注意点
from: http://zygjsvip.blog.51cto.com/5686243/973787 关于vector中resize函数使用的一些注意点: resize函数是重新调整vector的大小,在copy等函数中使用频繁,但需要注意一些问题。如果请求的大小需要重新分配,resize函数会释放原有的资源,而重新分配指定大小的内存区域,但不会复制原有的数据内容,所以如果转载 2014-02-10 09:38:56 · 1691 阅读 · 0 评论 -
C++ ## 宏定义中字符串连接操作
关于记号粘贴操作符(token paste operator): ##1. 简单的说,“##”是一种分隔连接方式,它的作用是先分隔,然后进行强制连接。 其中,分隔的作用类似于空格。我们知道在普通的宏定义中,预处理器一般把空格 解释成分段标志,对于每一段和前面比较,相同的就被替换。但是这样做的结果是, 被替换段之间存在一些空格。如果我们不希望出现这些空格,就可以通转载 2014-04-14 19:21:59 · 5264 阅读 · 0 评论 -
_T()
http://blog.sina.com.cn/s/blog_6da8fb890100r3az.html_T("")是一个宏,定义于tchar.h下。[1] #define __T(x) L ## x #define _T(x) __T(x) 他的作用是让你的程序支持Unicode编码 因为Windows使用两种字符集ANSI和UNICODE, 前者就是转载 2014-03-25 16:49:00 · 743 阅读 · 0 评论 -
pair make_pair
尊重作者,http://mopishv0.blog.163.com/blog/static/5445593220125211156519/转载 2013-04-22 14:14:04 · 576 阅读 · 0 评论 -
boost::bind()
From:http://greyforest.blog.sohu.com/152084205.htmlbind - boost头文件: boost/bind.hppbind 是一组重载的函数模板.用来向一个函数(或函数对象)绑定 某些参数. bind的返回值是一个函数对象.它的源文件太长了. 看不下去. 这里只记下它的用法:9.1 对于普通函数转载 2013-04-22 16:44:15 · 4509 阅读 · 0 评论 -
C语言关键字auto、static、register、const、volatile、extern
这些关键词都是c++基础知识,我整理了一下,希望对新学的朋友们有用:(1)auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。(2)register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以转载 2012-01-05 11:47:09 · 499 阅读 · 0 评论 -
用rand()和srand()产生为随机数的方法总结
标准库(被包含于中)提供两个帮助生成伪随机数的函数:函数一:int rand(void);从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。函数二:void srand(unsigned seed);参数seed是rand()的种子,用来初始化rand()的起始值。可以认为rand()在每次被调用的转载 2012-01-05 11:58:53 · 514 阅读 · 0 评论 -
讲讲volatile的作用
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variab转载 2012-03-28 09:05:56 · 392 阅读 · 0 评论 -
qsort函数 使用方法汇总(转)
七种qsort排序方法 附:前减后升序,后减前降序。而不是用大于号小于号,会出错,具体为什么会出错,我感觉应该不是最后的序列升降会出问题,应该是有几个连续相同的数,下标不同,而这个是很多时候oj上wrong answer的原因 一、对int类型数组排序 int num[100]; Sample: int cmp ( const void *a转载 2011-09-11 11:17:04 · 823 阅读 · 0 评论 -
c++程序员面试题目
1. C中static有什么作用?(1)隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性,故使用static在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。(2)static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变转载 2012-05-14 22:16:23 · 1568 阅读 · 0 评论 -
C程序的存储区
from:http://www.cnblogs.com/shiney/archive/2011/10/12/2208626.html一般认为在c中分为这几个存储区: 1. 栈 --有编译器自动分配释放 2. 堆 --一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3. 全局区(静态区) --全局变量和静态变量的存储是放在一块的,初始转载 2012-06-10 11:14:59 · 1803 阅读 · 0 评论 -
从dll文件中获取函数名
很久以前的东西,不小心翻了出来#include #include #include #include #include void PrintUsage(char * msg){ printf("|---------------------------------------------------------|\n"); printf("| Create转载 2012-10-13 15:27:17 · 4167 阅读 · 0 评论 -
do...while(0) 妙用
source:http://www.cnblogs.com/flying_bat/archive/2008/01/18/1044693.html在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...whi转载 2013-04-22 16:43:28 · 554 阅读 · 0 评论 -
VC中#pragma warning指令
http://051031wangcj.blog.163.com/blog/static/3340676220105133859242/该指令允许有选择性的修改编译器的警告消息的行为指令格式如下:#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-转载 2014-11-12 15:52:16 · 804 阅读 · 0 评论