
┣ C ┫
文章平均质量分 72
billpig
这个作者很懒,什么都没留下…
展开
-
c语言中volatile关键字
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。使用该关键字的例子如下:int volatile nVint; 当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即原创 2010-01-19 14:03:00 · 624 阅读 · 0 评论 -
【理论知识篇】ioctl函数详细说明
ioctl 函数 本函数影响由fd 参数引用的一个打开的文件。 #includeint ioctl( int fd, int request, .../* void *arg */ );返回0 :成功 -1 :出错 第三个参数总是一个指针,但指针的类型依赖于request 参数。我们可以把和网络相关的请求划分为6 类:套接口操作文件操作原创 2010-03-03 09:42:00 · 1174 阅读 · 0 评论 -
移位
<br />1.汇编语言中的逻辑右移(SHR)是将各位依次右移指定位数,然后在左侧补0,算术右移(SAR)是将各位依次右移指定位数,然后在左侧用原符号位补齐。2.高级语言右移运算符(>>)是将一个数的二进位全部右移若干位,低位移出部分舍弃,左补0。 3.高级语言右移和汇编语言中的逻辑右移功能一样,但不同于算术右移。 4.逻辑左移和算术左移一样,低位补0。简单记忆: 逻辑移位:不考虑正负号 <br /> 算术移位:考虑正负号<br />e g: 1000000000原创 2010-09-27 14:58:00 · 968 阅读 · 0 评论 -
宏定义中##和#的作用
宏定义中##和#的作用内核中有很多的宏定义,在宏定义define中经常看到两个字符串##和#,这里把它的用法做一下说明:1. ####是一个连接符号,用于把参数连在一起例如:> #define FOO(arg) my##arg则> FOO(abc)相当于 myabc2.#:是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串例如:> #define STRCPY(dst, src) strcpy(dst, #src)则> STRCPY(buff, abc)相当于 s转载 2010-11-27 17:02:00 · 2268 阅读 · 0 评论 -
不用临时变量交换两个数的值
当要交换两个数的值时,通常的做法是定义一个临时变量,然后再进行交换。那么能不能不用临时变量而交换两个数的值呢?可以的!C语言提供的异或运算就可以实现这样的操作。异或运算符^也称XOR运算符,它的规则是若参加运算的两个二进位同号,则结果为0(假);异号为1(真)。即0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0。例:<br />#include<stdio.h><br /><br />int main(int argc,char*argv[])<br />{<br />i转载 2011-04-11 22:39:00 · 778 阅读 · 0 评论 -
C语言的谜题
1、下面的程序并不见得会输出 hello-std-out,你知道为什么吗?#include#includeint main(){while(1){fprintf(stdout,"hello-std-out");fprintf(stderr,"hello-std-err");sleep(1);}return 0;}参考答案:stdout和stder转载 2010-10-18 12:38:00 · 800 阅读 · 0 评论