C/C++
文章平均质量分 69
Sco_field
这个作者很懒,什么都没留下…
展开
-
【C++ Primer】摘记--第2章 变量和基本类型
1.arithmetic types(算术类型)表示数值即整数和浮点数的类型。浮点型值有三种类型:long double 、double 和 float,分别表示扩展精度值、双精度值和单精度值。一般总是使用 double 型。特别地,float 只能保证六位有效数字,这对于大多数的计算来说都不够。整型包括 bool、char、wchar_t、short 、int 和 long 。整型可以是带符号或原创 2008-07-09 20:36:00 · 840 阅读 · 0 评论 -
函数参数入栈
V6反汇编代码如下:fun1:202: int nIndex =3;0040231D C7 45 F8 03 00 00 00 mov dword ptr [ebp-8],3203: int nParam = 5;00402324 C7 45 F4 05 00 00 00 mov dword ptr [ebp-0Ch],5原创 2008-12-20 19:37:00 · 1255 阅读 · 0 评论 -
关于字节序
字节序的问题涉及硬件架构,目前主要是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据。那么究竟什么是big endian,什么又是little endian呢? 为方便理解,摘了INTER手册中的一张图。呵呵。 字节顺序是指占内存多于原创 2009-06-13 01:38:00 · 2008 阅读 · 1 评论 -
n++ / ++n / n+=1 / n=n+1 实际效率比较
程序员面试宝典》上说n++高过n=n+1,貌似有道理。但效率不是你我说了算,而应该由编译器说了算。测试源代码如下:int main(void){ int n = 20; n++; ++n; n=n+1; n+=1; return 0; }VC++6.0的汇编代码如下:9: int n = 10;0040D781 mo原创 2009-06-13 18:05:00 · 2866 阅读 · 0 评论 -
关于判断无符号数和有符号数的问题
对于跨平台开发,数据类型的转换很重要,例如char型,有的平台上为有符号的,有的平台上是无符号的。对此,《C++ Primer》明确指出了char类型表示的特殊性,即char类型具体表示的含义是unsigned还是signed由编译器说了算。下面是一个测试char类型和变量是否是unsigned的例子。参考《C专家编程》。//////////////////////////////////原创 2009-06-13 22:26:00 · 2335 阅读 · 0 评论 -
关于整型类型提升的一点说明
整型提升说明:char/bit-field/enum/unsigned char/short/unsigned short提升为int,前提是int能够存储原先这些数据,否则提升为unsigned int。如:printf("%d",sizeof(A)); // 输出4而不是1(C编译器).分析:sizeof(A)是printf函数的一个参数,是一个表达式,表达式内的数据被隐原创 2009-06-15 23:11:00 · 1206 阅读 · 0 评论 -
代码测试----不定参函数
#include #include void MyPrintf(char *format, ...){ va_list ap; va_start(ap, format); vprintf(format, ap); va_end(ap);}void Error(char *format, ...){ va_list a原创 2009-06-30 10:06:00 · 884 阅读 · 0 评论 -
关于字节对齐
用一个例子简单说明一下(V6环境):#pragma pack(8) // 8字节对齐方式typedef struct{ char s; // 自身对齐1,指定对齐8,取小值1。[0(0%1==0)-...] long l; // 自身对齐4,指定对齐8,取小值4:[4(4%4==0)-5-6-7]}sample1;原创 2009-07-02 15:25:00 · 1655 阅读 · 3 评论 -
关于栈对齐(stack alignment)
手册上介绍:The stack pointer for a stack segment should be aligned on 16-bit (word) or 32-bit (double-word)boundaries, depending on the width of the stack segment. The D flag in the segment descriptorfor the current code segment sets the stack-segment width (re原创 2010-11-22 00:22:00 · 6143 阅读 · 0 评论 -
#define new DEBUG_NEW
在用vc时,利用AppWizard会产生如下代码: #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif对于#define new DEBUG_NEW首先看msdn的解释:Assists in finding原创 2008-12-17 10:19:00 · 12083 阅读 · 0 评论 -
头文件保护符和#pragma once
利用VC的AppWizard一般会生成如下代码:#if !defined(AFX_***_H__A06FACFB_DE47_4BCD_ABB3_3AE66C6D9765__INCLUDED_)#define AFX_***__A06FACFB_DE47_4BCD_ABB3_3AE66C6D9765__INCLUDED_#if _MSC_VER > 1000#pragma原创 2008-12-17 09:21:00 · 2317 阅读 · 0 评论 -
【Z一贴】DLL详解
DLL文件(Dynamic Linkable Library 即动态链接库文件),是一种不能单独运行的文件,它允许程序共享执行特殊任务所必需的代码和其他资源 比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序 EXE转载 2008-09-23 20:33:00 · 842 阅读 · 0 评论 -
【C++ Primer】摘记--第3章 标准库类型
1. 第二章所涉及的类型都是低层数据类型:这些类型表示数值或字符的抽象,并根据其具体机器表示来定义。除了这些在语言中定义的类型外,C++ 标准库还定义了许多更高级的抽象数据类型之所以说这些标准库类型是更高级的,是因为其中反映了更复杂的概念;之所以说它们是抽象的,是因为我们在使用时不需要关心它们是如何表示的,只需知道这些抽象数据类型支持哪些操作就可以了。 2. 有一种情况原创 2008-07-20 22:49:00 · 1208 阅读 · 1 评论 -
【C++ Primer】摘记--第4章 数组和指针
第四章 数组和指针1. C++ 语言提供了两种类似于 vector 和迭代器类型的低级复合类型——数组和指针。与 vector 类型相似,数组也可以保存某种类型的一组对象;而它们的区别在于,数组的长度是固定的。数组一经创建,就不允许添加新的元素。指针则可以像迭代器一样用于遍历和检查数组中的元素。2. 现代 C++ 程序应尽量使用 vector 和迭代器类型,而避免使用低级的数组和指针。原创 2008-07-27 22:24:00 · 1417 阅读 · 0 评论 -
发现原来使用BOOL类型返回值的函数都是三值逻辑
BOOL是微软定义的typedef int BOOL。与bool不同,它是一个三值逻辑,TRUE/FALSE/ERROR,返回值为>0的整数为TRUE,0为FALSE,-1为ERROR。Win32 API中很多返回值为BOOL的函数都是三值逻辑。比如GetMessage:BOOL GetMessage( LPMSG lpMsg, // message原创 2008-08-22 10:12:00 · 4096 阅读 · 0 评论 -
【C++ Primer】摘记--第5章 表达式
第五章 表达式 Chapter 5. Expressions 1. 操作符的含义——该操作符执行什么操作以及操作结果的类型——取决于操作数的类型。除非已知道操作数的类型,否则无法确定一个特定表达式的含义。如表达式 i + j2. 如果两个操作数为正,除法(/)和求模(%)操作的结果也是正数(或零);如果两个操作数都是负数,除法操作的结果为正数(或零),而求模操作的结果则为负数原创 2008-09-01 20:29:00 · 764 阅读 · 0 评论 -
【Z一贴】纯C环境下能否在struct里实现函数
纯C环境下只能通过函数指针实现,如下:#include void fun(){ printf("hello,world/n");}struct test{ void (*Fun)();};int main(){ struct test _t; _t.F原创 2008-06-27 12:45:00 · 649 阅读 · 0 评论 -
【C++ Primer】摘记--第1章 快速入门
1. main 函数在很多方面都比较特别,其中最重要的是每个 C++ 程序必须含有 main 函数,且 main 函数是(唯一)被操作系统显式调用的函数。2. main 函数的返回值必须是 int 型,该类型表示整数。int 类型是内置类型,即该类型是由 C++ 语言定义的。3. 在大多数系统中,main 函数的返回值是一个状态指示器。返回值 0 往往表示 main 函数成功执行完毕。任何原创 2008-07-01 19:37:00 · 1107 阅读 · 1 评论 -
【Z一贴】C++ String: How to convert a string into a numeric type?
C++ String: How to convert a string into a numeric type? Q: How to convert a string into a numeric type?A: There is one thing that you are not allowed to ignore when you convert a string into a转载 2008-09-24 19:49:00 · 829 阅读 · 0 评论 -
【Z一贴】Visual C++ Debugging: How to display UNICODE strings in Watch/QuickWatch window?
Visual C++ Debugging: How to display UNICODE strings in Watch/QuickWatch window? Q: I set a breakpoint in my source code to see the value of a string variable:But in QuickWatch and Watch windows转载 2008-09-24 19:13:00 · 1035 阅读 · 0 评论 -
关于PAGE_NOACCESS
<br />The following table lists the memory-protection options provided by Windows. You must specify one of the following values when allocating or protecting a page in memory.<br />ValueMeaningPAGE_EXECUTEEnables execute access to the committed region of p原创 2011-04-26 00:06:00 · 2660 阅读 · 0 评论