随笔分类 -  C/C++/VS

摘要:// sendDataSize must be an even number sendDataSize = sendDataSize & 0xFE; 阅读全文
posted @ 2013-03-21 10:06 枫部落 阅读(184) 评论(0) 推荐(0)
摘要:1.数值常数有:整型常数、浮点常数;2.只有数值常数才有后缀说明;3.数值常数后缀不区分字母大小写。(1)整型常数的表示形式有:十进制形式、以0开头的八进制形式、以0x开头的十六进制形式,无二进制形式。整型常数默认是signed int的。对整型常数进行类型转换的后缀只有:u或U(unsigned)、l或L(long)、u/U与l/L的组合(如:ul、lu、Lu等)。例:100u; -123u; 0x123l;(2)浮点常数的表示形式有:科学计数形式和小数点形式。浮点常数默认是double的。对浮点常数进行类型转换的后缀只有:f或F(单精度浮点数)、l或L(长双精度浮点数)。(注:因浮点型常数 阅读全文
posted @ 2013-03-14 20:36 枫部落 阅读(411) 评论(0) 推荐(0)
摘要:#include <stdio.h> int inc(int a) { return(++a);} int multi(int*a,int*b,int*c) { return(*c=*a**b); } typedef int(FUNC1)(int in); typedef int(FUNC2) (int*,int*,int*); void show(FUNC2 fun,int arg1, int*arg2) { FUNC1 p=&inc; int temp =p(arg1); fun(&temp,&arg1, arg2); printf... 阅读全文
posted @ 2013-03-06 17:45 枫部落 阅读(2569) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/hnrainll/archive/2011/08/03/2126660.htmlC语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如: 3+5,6+8称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为 表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式 a=3*5,a*4对此表达式的求解,读者可能会有两种不同的理解:一种认为“3*5,a*4” 是一个逗号表达式,先求出... 阅读全文
posted @ 2013-03-05 15:19 枫部落 阅读(260) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/adslg/archive/2008/08/22/1274164.htmlprintf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。printf()函数的调用格式为: printf("<格式化字符串>", <参量表>);其中格式化字符串包括两部分内容:一部分是正常字符, 这些字符将按原样输出;另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符, 用来确定输出内容格式。 参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出参数 阅读全文
posted @ 2013-03-05 13:26 枫部落 阅读(636) 评论(0) 推荐(0)
摘要:转自:http://blog.csdn.net/jphaoren/article/details/5803583举例如下:char a[10];1、定义的时候直接用字符串赋值char a[10]="hello";注意:不能先定义再给它赋值,如char a[10];a[10]="hello";这样是错误的!2、对数组中字符逐个赋值char a[10]={'h','e','l','l','o'};3、利用strcpychar a[10];strcpy(a, "hello 阅读全文
posted @ 2013-03-04 20:09 枫部落 阅读(325) 评论(0) 推荐(0)
摘要:摘自:zhanglong0426博文 http://www.cnblogs.com/zhanglong0426/archive/2010/10/06/1844700.html一共有十五个优先级:1 () [] . ->2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof3 * / %4 + -5 >> << 6 > >= < <=7 == != 8 & 9 ^ 10 | 11 &&12 ||13 ?:14 = += -= *= /= %= |= ^= &= & 阅读全文
posted @ 2013-03-01 16:28 枫部落 阅读(176) 评论(0) 推荐(0)
摘要:转载自carekee博文http://www.cnblogs.com/carekee/articles/1630789.htmlSizeof与Strlen的区别与联系一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系。 具体而言, 阅读全文
posted @ 2013-02-27 14:40 枫部落 阅读(152) 评论(0) 推荐(0)
摘要:#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)
摘要:静态区:保存自动全局变量和static 变量(包括 全局和局部static变量)。静态区的内容在整个程序的生命周期内都存在,由编译器在编译的时候分配。栈:保存局部变量和函数形参。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。其特点是效率高,但空间大小有限。堆:由malloc 系列函数或new 操作符分配的内存。其生命周期由free 或delete 决定。堆是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存 。由此可见,堆获得的空间比较灵活,也比较大。 阅读全文
posted @ 2012-10-17 15:25 枫部落 阅读(159) 评论(0) 推荐(0)
摘要:C语言中位操作非常基础,也很重要,用好了可以很有用。讲一下与(&)操作和或(|)操作有一个数 0101 0101(B,二进制)0101 0101 & 0000 1111 = 0000 0101;0101 0101 | 0000 1111 = 0101 1111;可以看出,& 操作保留了1对应的位,0对应的位变0;| 操作保留了0对应的位,1对应的位变1。我做嵌入式开发,调程序有时喜欢用板上的LED灯来显示程序运行状态。如果是单线程的,这很好办,只需要在不同的代码后面插入LED状态就行了,比如8个LED灯,这样都可以有255种状态显示了。但如果是多线程的,就不一样了。想同 阅读全文
posted @ 2012-10-12 21:06 枫部落 阅读(1222) 评论(0) 推荐(0)
摘要:typedef可以用来定义用户自己的数据类型,但我总是忘记使用格式,容易跟#define混淆,今天突然想到应该怎么写typedef不容易写错。如我要定义一个 double 类型的变量 real,是写成 double real; 这个初学C语言的人都会; 这时只在要这个语句的前面加个 typedef, 变成typedefdouble real;这时real就不是变量,而是被定义为一个新的类型了,这个新的自定义的类型其实就是double。再如:double real[20];-->typedef double real[20];则定义real为一个新的类型,是一个有20个double类型数据 阅读全文
posted @ 2012-09-16 13:00 枫部落 阅读(280) 评论(0) 推荐(0)

点击这里给我发消息