随笔分类 -  C/C++

摘要:以来来说,char 等同于 signed char。但不同于unsigned char。二者之间的区别在于能表达的范围:char [-128, 127]unsigned char [0, 255]因为char是8bit的,而一般系统下的int通常都是32bit,所以在只需要小空间的整型变量的时候,常会用char来代替。(比如图像处理中的RGB)这样子的话,定义 char a = 200; unsigned char b = 200;二者在内存上都是 [1100 1000]但当你printf出来时候,a:-56b: 200这是重点!因为对于(signed) char a= 200,要进行符号位拓 阅读全文

posted @ 2010-07-13 21:01 哈呜 阅读(1143) 评论(1) 推荐(0)

摘要:auto关键字。。。待写。。。static关键字。。。待写。。。const关键字。。。待写。。。extern关键字。。。待写。。。restrict和volatile,两者都是为了方便编译器的优化。restrict关键字只用于修饰指针类型,它告诉编译器,所有要修改 该指针指向的内容 的操作,都必须是基于该指针的。额。。。 其实我还是没弄懂这个关键字的实际应用在哪,尽管理解了上面的说法。注意:restrict是C99中新增的关键字,在C89和C++中都不支持,在gcc中可以通过 "$ cc -std=c99 XXX.c"来得到对它的支持。volatile关键字告诉编译器该被变量 阅读全文

posted @ 2010-02-02 22:10 哈呜 阅读(281) 评论(0) 推荐(0)

摘要:C语言中有些函数使用可变参数,比如常见的int printf( const char* format, ...),第一个参数format是固定的,其余的参数的个数和类型都不固定。但C又无法用面相对象的函数重载的概念。 不过好在C语言中定义了va_list, va_start( ), va_arg( ), va_end( ) 这样一组宏来处理可变参数问题。 这组宏在stdarg.h头文件中定义,但是由于1)硬件平台的不同 2)编译器的不同,所以定义的宏也有所不同,下面以VC++中stdarg.h里x86平台的宏定义为例(linux环境中在stdarg.h里发现它将这组宏定义为gcc的内建函数了. 阅读全文

posted @ 2010-01-20 01:44 哈呜 阅读(669) 评论(0) 推荐(0)

导航