Chinaunix首页 | 论坛 | 博客
  • 博客访问: 181529
  • 博文数量: 54
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2018
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-31 23:14
文章存档

2014年(2)

2013年(52)

分类: 嵌入式

2013-07-23 20:27:52

简单分类:
数据类型:
普通类型:
char  8bit    :  
'\t'  '\v' '\n'  '\ddd'  '\xdd'
表示方式 :char  c = 'A' = 65 = 0101 =0x41= '\101' = '\x41'
char *s ="nihao";
整形(signed /unsigned)
short
int   4bytes --32bit
long
表示方法:十进制数    3356;八进制数    06434;十六进制数  0xd1c   (整形+char)
long long 
实型
float
3.444444(默认是六位小数)
3.14 X 10(-2) 
基数e-2 :e两边必须有数  且 e后必须整数
double
long double
enum
enum  DAY {MON,TUE};
emnum  DAY  today;

enum  boolen {true,false};
复合:
数组
struct
union
指针:
*p
void:
空类型 void *p;
可以强转指向任意数据类型
16bit:
char 1
short 2
int 2
float 4
*P   2
32bit:
char 1
short 2
int 4
float 4
double 8
*p   4
64bit:(查一下)
char 1
short 2
int 4
float  8  
double 8  
*p  8  
//------------------------------------------
char   c1= 129;       //出错,数据越界(?)
unsigned char  c2= -1;  //出错,数据越界(?)
//----------------------------------


static :(*****)
修改普通局部变量的生成周期  编译时开辟    程序结束时释放 
修改全局变量的作用域  ----被限制在本模块中使用(本文件 .c)
修饰函数修改函数的调用范围 -------被限制在本模块中调用(本文件 .c)


多文件编程:
两种方式:
*.h
extern 应用外部变量
//------------------------------------------
数据转换:
强制类型转化:
不是难点
(int) i
运用最多的地方:强转指针类型
隐形类型转换:
是难点,容易被忽略
//-------------------------------
double   ---------------float
unsigned long 
long
unsigned int 
int   ----------------char ,short


char c =65;
short b = 40;
(c+b)
面试题:
int main(){
  4         int i =-10;
  5         unsigned int j = 2;
  6         if( (i+j) > 0){
  7                 puts("it is +\n");
printf("%d\n",(i+j)); //为什么是-8??????无符号用%u输出
}else
  9                 puts("is is -\n");
 10         return 0;
 11 }
 0000 0000  0000 0000  0000 0000  00001010  ----整数表示
 1111 1111  1111 1111  1111 1111  11110110  ----负数
//-------------------------------------
运算符:(逻辑表达清楚)
算术运算符
+ - * /  %  ++ --
// a++;<==> a=a+1;
(int )/(int )-----int ,丢失精度的问题 ex:3/2 =1
-------解决办法(float)int/(int)
%   两边必须是整数
自加:a++ , ++a
自减:a-- , --a
/*(printf------自右向左
先执行有运算符的----且变化为自左向右 ,且a++失效为++a
再运算 没有运算符的
*/(无用)
关系运算符
  > ,< ,>=,<=,!=,== 
逻辑运算符
&&   !!  !
短路效应:
&& 的短路效应:第一个语句为假,则第二条语句不会执行
|| 的短路效应:第一个语句为真,则第二条语句不会执行
(表达式1 &&表达式2)|| 表达式3;假如表达式3执行,则表达式1,至少一个为假
位运算符:
& | ~ ^ << >>
^:异或,相异为1,相同为0
&:清数据位
|:置数据位
常用:<< >> 常拿来 辅助 清数据位 置数据位
0x23------其中后四位清零: 0x23&&0xf0
0010 0011
1111 0000
其中第二位清零????
0010 0011
1111 1101
清空任意位???
需求:置1 任意位
a | (0x1< 清零任意位:
a && ~(0x1< 对于位的运算:还有一个位域,不利于代码的移植,不建议

异或:
用来作数据交换
赋值运算符:
=  += -=  *=  %=
a+=b 比 a=a+b,运算效率要高些,运算结果等价
逗号运算符
从左往右的运算,把最后一个表达式的值赋给运算结果
三目运算符
表达式1 ? 表达式2:表达式3:如果表达式1为真,则执行表达式2,反之执行表达式3。效率比if else 要高
sizeof:其实是一个红宏,,,,,sizeof  int
sizeof(数据类型)---sizeof(int) -----4
int a;
sizeof(a)------a 的size -----4
int a[10]
sizeof(数组名)----数组在内存中占据的空间大小

int a[m];
for(i=0;i a[i] =XX;
for(i=0;i a[i] = xxx
二维数组,三维数组类似
//--------------------------------------
数值交换三种:
void fun(){
int a;
int b;
int tmp; 


if(a > b){
#if 0
tmp = a;
a = b;
b = tmp;
#elseif 
        a = a^b;
        b = a^b;
        a = a^b;
#else
a = a + b;
b = a - b;
a = a - b; 
#endif
}
}
阅读(811) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~