11 2012 档案

摘要:#define SQR(x) printf("the squar of x is %d\n",((x)*(x)))如果直接调用SQR(8),则输出the squar of x is 64也就是“”中的字符x被当作普通字符来处理,没有被8替换掉修改宏定义如下:#define SQR(x) printf("the squar of “#x ”is %d\n",((x)*(x)))再调用SQR(8),则输出the squar of 8 is 64#的作用就是可以把语言符号转换为字符串 阅读全文
posted @ 2012-11-22 12:11 枫部落 阅读(203) 评论(0) 推荐(0)
摘要:总结了网上看的一些资料,结合他们各自的优点,修正了一些bug,写了一个自己的itoa()函数。大家可以指出不正之处,共同讨论。const char charIndex[]="0123456789ABCDEF";void myitoa(int num,char *buf,int radix){ char temp; int i = 0, j = 0;//j指向第一个存有数字字符的字节 if(num < 0) { num = -num;//如果是负数,先转换成正数 if(10 == radix)//如果是十进制,在字符串前面加负号 - { buf[i++] = ' 阅读全文
posted @ 2012-11-21 20:45 枫部落 阅读(474) 评论(0) 推荐(0)
摘要:以下资料来自:http://www.ok2002.com/cc/cc/s.asp?r=a2273562157719__rev()函数有一处错误,特复制过来进行更改://C++ itoa原型,itoa函数原型,转换正数为字符串,转换负数为字符串/*---------1.转换正数为字符串 (1)用模运算的方法取得最后一位数,将这位数字转换为字符. (2)接着用整除的方法删除这位数字. 再取剩下数字的最后一位,转为字符,删除, 就这样直到将全部数字转为字符. (3)将'\0'之前的所有字符倒置即得到所要的字符串.2.转换负数为字符串 (1)负数转换为正数处理. (2)处理完后,在&# 阅读全文
posted @ 2012-11-21 11:58 枫部落 阅读(1662) 评论(0) 推荐(0)
摘要:typedef 用来给类型取一个新的名字,一般我们会这样用:typedef int myint;则给int取了一个别名myint(并没有定义一个新的类型),可以用myint来定义int类型的变量。typedef int* pint;则给int*定义了一个别名pint,可以用pint来定义int类型的指针变量。发现这两种情况都是 类型新名在 原类型的后面。但是以下情况不同。typedef int intarray[10];这是给int [10]取了个别名intarray,直接用intarray定义有10个元素的int数组,如intarray score;也许 typedef int[10] in 阅读全文
posted @ 2012-11-20 10:24 枫部落 阅读(168) 评论(0) 推荐(0)
摘要:一般我们在编程时要实现两个变量值的交换,都会借助于一个临时变量但有没有一种方法可以不要临时变量呢?我们先熟悉一下异或运算法则:1. a ^ a = 02. a ^ b = b ^ a3. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;4. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.5. a ^ b ^ a = b.现在编程实现不要临时变量实现两个变量 m,n的交换。m = m^n;n = m^n;m = m^n;结束。看不明白?或者怀疑有没有这么简单?由异或运算法则可以知道:m = m^n^n;n = n^m^m;上个例子中,第二句 n = 阅读全文
posted @ 2012-11-19 09:47 枫部落 阅读(2555) 评论(0) 推荐(0)
摘要:return 用来终止一个函数并返回其后跟着的值char *Func(void){char str[30];...return str;}上面这个函数虽然语法正确,但却会产生程序员不想要的错误。str 属于局部变量,位于栈内存里,当函数结束时,str被释放,返回str会产生错误。所以:return 不能返回指向栈内存的指针! 阅读全文
posted @ 2012-11-18 20:39 枫部落 阅读(329) 评论(0) 推荐(0)
摘要:几种零值比较的情况:1. bool类型与零值bool bTestVal;最好写成 if(bTestVal) 和if(!bTestVal)而不要写成:if(bTestVal == 0)和if(bTestVal != 0)//容易误会也不要写成:if(bTestVal == TRUE )和if(bTestVal == FALSE)//有些编译器把TRUE当作-1,如visual basic2. float变量与零值的比较float fTextVal = 0.0;if((fTextVal >=0.0 - EPSINON)&&(fTextVal <=0.0 + EPSINO 阅读全文
posted @ 2012-11-18 20:34 枫部落 阅读(281) 评论(0) 推荐(0)
摘要:在计算机系统中,数值一律用二进制补码进行表示,补码的计算规则是:补码 等于 原码按位 取反 再 加 1。有符号类型的数值,最高位是符号位,1为负数,0为正数。按照补码计算规则,可得 正数的补码等于其原码。如:char num;num = 1;如 +1 的原码是 0000 0001 ,补码也是 0000 0001;而 - 1 的补码是 1111 1111。以下以8位有符号类型的数值来认识一下补码:可以看到,当用8位来存储数据时,数据的大小范围是 -128到127。可以发现,+127加1后,如果是无符号的,表示的是128,但如果是有符号的,则刚好是-128的补码,再加1,是-127的补码。而,-1 阅读全文
posted @ 2012-11-18 17:06 枫部落 阅读(1153) 评论(0) 推荐(0)
摘要:定义一个共同体跟定义struct的方式差不多首先定义一个结构体:typedef struct{ unsigned char floor; unsigned charroom; unsigned short region;}position;再定义一个共同体typedef union{position lightpos;unsigned char posbyte[4];}p;如果如下赋值:p.lightpos.floor = 0x10;p.lightpos.room = 0x01;p.lightpos.region = 0x0501;则:p.posbyte[0] = 0x10;p.posbyte 阅读全文
posted @ 2012-11-15 21:35 枫部落 阅读(455) 评论(0) 推荐(0)

点击这里给我发消息