`
yangyou230
  • 浏览: 1650286 次
文章分类
社区版块
存档分类
文章列表
原贴最初发表在QQ空间:普通C++程序员 VS 文艺C++程序员,http://user.qzone.qq.com/31731705/blog/1323153107 BBS上看到一个讲C++的帖子, C++ 这孩子 是不是误入歧途了?,让我想起了普通青年和文艺青年。   看这个经典的NB 程序,求一个数有多少bit 。J 普通C++ 程序员 namespace traditional { int bits_of(int remain) { if (remain) return 1+bits_of( rema ...
<wbr><wbr><wbr><wbr>VC++中timer很容易给人感觉是多线程的。其实不然,他是通过消息触发事件的。通过SetTimer函数设定定时器后,在规定时间内向消息队列中加入wm_timer消息来触发事件。并且只有该消息返回后才处理下个消息。</wbr></wbr></wbr></wbr> <wbr><wbr><wbr>可以通过程序来验证。</wbr></wbr></wbr> BOOL bThreadE ...
已知类String的原型为:class String {  public:   String(const char *str = NULL); // 普通构造函数   String(const String &other); // 拷贝构造函数   ~ String(void); // 析构函数   String & operate =(const String &other); // 赋值函数  private:   char *m_data; // 用于保存字符串 }; //普通构造函数 String::String( ...
static关键字至少有下列n个作用: (1) 函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (2) 在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问; (3) 在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内; (4) 在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝; (5) 在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。 c ...
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1 嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方 式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Little- endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为: 内存地址 存放内容 0x4000 0x34 0x4001 0x12   而在Big-endian模式CPU内存中的存放方式则为: ...
已知类String的原型为:class String {  public:   String(const char *str = NULL); // 普通构造函数   String(const String &other); // 拷贝构造函数   ~ String(void); // 析构函数   String & operate =(const String &other); // 赋值函数  private:   char *m_data; // 用于保存字符串 }; //普通构造函数 String::String( ...
static关键字至少有下列n个作用: (1) 函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (2) 在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问; (3) 在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内; (4) 在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝; (5) 在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。 c ...
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1 嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方 式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Little- endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为: 内存地址 存放内容 0x4000 0x34 0x4001 0x12   而在Big-endian模式CPU内存中的存放方式则为: ...
使用通常的做法会溢出,这里要使用数组的方法。例如:123*20 相当于 100*20 + 20*20+3*20#include <stdio.h> int main() { int n = 1; scanf("%d",&n); int a[20000]; int carry; int i; int digit = 1; a[0] = 1; int temp; for(i = 2; i <= n; ++i) { carry = 0; for(int j = 1; j <= digit; ++j) //digit 大数的 ...
如果一棵具有n个结点的深度为k的二叉树,它的每一个结点都与深度为k的满二叉树中编号为1~n的结点一一对应,这棵二叉树称为完全二叉树。 可以根据公式进行推导,假设n0是度为0的结点总数(即叶子结点数),n1是度为1的结点总数,n2是度为2的结点总数,由二叉树的性质可知:n0=n2+1,则n= n0+n1+n2(其中n为完全二叉树的结点总数),由上述公式把n2消去得:n= 2n0+n1-1,由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到n0=(n+1)/2或n0=n/2,合并成一个公式:n0=(n+1) /2 ,就可根据完全二叉树的结点总数计算出叶子结点数。 700/2=350个叶子 ...
使用通常的做法会溢出,这里要使用数组的方法。例如:123*20 相当于 100*20 + 20*20+3*20#include <stdio.h> int main() { int n = 1; scanf("%d",&n); int a[20000]; int carry; int i; int digit = 1; a[0] = 1; int temp; for(i = 2; i <= n; ++i) { carry = 0; for(int j = 1; j <= digit; ++j) //digit 大数的 ...
如果一棵具有n个结点的深度为k的二叉树,它的每一个结点都与深度为k的满二叉树中编号为1~n的结点一一对应,这棵二叉树称为完全二叉树。 可以根据公式进行推导,假设n0是度为0的结点总数(即叶子结点数),n1是度为1的结点总数,n2是度为2的结点总数,由二叉树的性质可知:n0=n2+1,则n= n0+n1+n2(其中n为完全二叉树的结点总数),由上述公式把n2消去得:n= 2n0+n1-1,由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到n0=(n+1)/2或n0=n/2,合并成一个公式:n0=(n+1) /2 ,就可根据完全二叉树的结点总数计算出叶子结点数。 700/2=350个叶子 ...
一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: #include<cstdio> #include<climits> using namespace std; #define STR(s) #s #define CONS(a,b) int(a##e##b) int main() { printf(STR(vck)); // 输出字符串"vck" printf("%d\n", CONS(2,3)); // 2e3 输出:2000 return 0; } 二、当宏参数是 ...
#define MIN(A,B) ((A) <= (B) ? (A) : (B)) MIN(*p++, b)会产生宏的副作用 剖析: 这个面试题主要考查面试者对宏定义的使用,宏定义可以实现类似于函数的功能,但是它终归不是函数,而宏定义中括弧中的“参数”也不是真的参数,在宏展开的时候对“参数”进行的是一对一的替换。程序员对宏定义的使用要非常小心,特别要注意两个问题: (1) 谨慎地将宏定义中的“参数”和整个宏用用括弧括起来。所以,严格地讲,下述解答: #define MIN(A,B) (A) <= (B) ? (A) : (B) #define MIN(A,B) (A &l ...
一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: #include<cstdio> #include<climits> using namespace std; #define STR(s) #s #define CONS(a,b) int(a##e##b) int main() { printf(STR(vck)); // 输出字符串"vck" printf("%d\n", CONS(2,3)); // 2e3 输出:2000 return 0; } 二、当宏参数是 ...
Global site tag (gtag.js) - Google Analytics