数据类型
基本类型:整型 浮点型 字符型 枚举
构造类型:数组 结构体 共用体
指针类型:
空类型:void
10 100
int a ----->0x1000000
整型:二进制: 0 1 0101
八进制:0 7 111 ------ %o
十进制:0 9 100 ------ %d
十六进制:0 ~F : 0xff -----> %x
格式转换,10进制转2进制,x/2取余,从下到上排列
如100 ------->1100100 ---------> 0 * 2^0 + 0 * 2^1 + 1*2^2....
100 0
50 0
25 1
12 0
6 0
3 1
1
数据类型,在智能汽车嵌入式软件开发过程中,是核心配置的类型,决定数据的长度,芯片资源的大小
字符型: char 1 byte= 8 bit 0 ~ 2^8-1
短整型:short 2 byte= 16bit 0 ~ 2^16 -1
整型: int 2 byte(16位) 4byte(32位) 0 ~2 ^ 32 -1
补码 = 原码取反 + 1 负数:31:1 正数:31:0
负数存储在内存中是补码
%d:打印时原码
%x:打印的是补码
字符:英文字母 数字 标点符号
'a','A'... 一个汉字 = 两个字符
转义字符:
浮点数:
float:单精度 6~7位 %f 4byte
double:双精度 16~17位 %lf 8byte
小数:3.14
指数:2.14E3
char 1byte -128~127
short 2byte -32768~32767
int 4byte -2^31 ~ 2^31 -1
float 4byte
double 8byte
long 长型
short 短型
signed 有符号
unsigned 无符号
自动转换
int a = 1.5 float ------> int
float b = 1 int -------->float
char,short ---->int ---->unsigned ------>long ------>double<---float
运算符与表达式
(1)算术: + - * / %
运算的数据都是整型 结果也时整型 有浮点数 double
取模运算两侧的数据都是整型
(2)关系:
< : a < 4
<=:
> :
>=:
==:
!=:
非0为真 0:假
1 :真
0 :假
结合性:左---->右 6 > 3 > 1
优先级: 1 == 3 < 4 1
(3)逻辑:&& || !
A B && ||
1 1 1 1
1 0 0 1
0 1 0 1
0 0 0 0
A !
1 0
0 1
(4)赋值
变量 = 表达式
i = j = 3 + 4;
+= a += 3 a = a + 3;
-=
*=
/=
%=
表达式:逗号表达式
表达式1,表达式2.....表达式n
b = (a = 4,3 * 4,a * 2)
条件表达式
表达式1 ? 表达式2:表达式3
max = ((a > b) ? a : b);
结合性:右---->左
a > b ? a:b >c?b:c
位运算,是芯片的地址左移>>,切换地址,基址+位运算,获得不同的IO口
位运算:
&:按位与
|:按位或
^:异或
~:按位取反
<<:左移
>>:右移
5 & 4 =4
0 1 0 1
0 1 0 0
10 | 25 = 27
1 0 1 0
1 1 0 0 1
1 1 0 1 1
30 ^ 15= 1 0 0 0 1 17
1 1 1 1 0
0 1 1 1 1
~50
0 0 1 1 0 0 1 0
1 1 0 0 1 1 0 1 = 205
0x3 << 5 = 96
0x8 >> 2 = 2
清0:&
置1:|
汽车上控制语句,基本都是事件性语句,基本都用if 语句切换到下一个状态,状态机语句
条件语句
if()
{
}
if ()
{
}
else
{
}
if ()
{
}
else if()
{
}
else
{
}
if ()
{
if ()
{
}else{
}
}else{
}
switch(整型表达式){
case 数值1:语句1;break;
case 数值2:语句2;break;
case 数值3:语句3;break;
case 数值4:语句4;break;
......
default:语句n+1;
}
循环语句 循环控制语句
for while do...while
while(条件){
code
}
条件不成立 退出循环
do{
}while(条件);
for (index = 0;index < 10;index++)
break:跳出循环
continue:跳过本次循环
goto: