嵌入式入门学习笔记,遇到的问题以及心得体会!
Day 2
笔记:
1.变量
格式:存储类型 数据类型 变量名
存储类型:
auto:默认使用
extern:声明其他文件当中定义的变量
static:声明静态变量
register:声明寄存器变量
数据类型:
基本长度:1byte
最小长度:1bit
抓换:1byte = 8bit
整形系列:
int:4字节,32bit 2^32 -1 最高位(符号位):为0是正数;为一是负数
signed int:-(2^31 - 1) ~ (2^31 -1)
unsigned int:0 ~ 2^32 -1
short:2字节
signed short:-(2^15-1) ~(2^15-1)
unsigned short:0 ~ 2^16-1
long:4字节
long long:8字节
浮点型系列:有小数;数值不确定上下浮动;
float:4字节
double:8字节
字符型:
char:1字节 :‘a’ '1' '?'
'1' = 49 'a' = 65
构造数据类型:指针 数组
空类型:void
注:只可以定义函数 参数和指针
定义变量时注意的问题:
变量名: 1.变量名不能为关键字
2.变量名不能以数字开头
eg:
int chengji1;
int chengji2;
char xingming = 'qu'--->error:内存溢出
char xingming[] = {'q','u'};
变量的初始化:定义时给变量赋值
int i = 5;注:'='表示赋值符,若要判断是否等于要用'=='
2.运算符
算数运算符:+ - * / % ++ --
int i = 10;
//i++;//11
//++i;//11
++在前直接自加,++在后遇分号自加;
隐式类型转换:
unsigned char--->signed char
int <------- unsigned int
字节长度小转字节长度大
强制类型转换:float i = 3.14;
(int)i;实现强制类型转换
关系运算符:> < >= <= !=
逻辑运算符:&& || !
&&:前后表达式都为真时为1;有一个为假就为0;若第一个为假,则不执行表达式
表达式2;
||:前后表达式有一个为真则为1;只要表达式1为真,则不执行表达式2;
赋值运算符:= += -=
int i = 10;
i + = 5;
//这两句的含义相当于 i = i+5;
条件运算符(三目运算符):表达式1 ?表达式2 : 表达式3
表达式1为真,则执行表达式2,为假则执行表达式3;
sizeof运算符:求长度
sizeof(数据类型或变量);
注:sizeof只是一个运算符而非函数;
#include<stdio.h>
int main()
{
int a = 10;
printf("%d\n",sizeof a);
printf("%d\n",sizeof(int));
return 0;
}
位运算符:<< >> & | ~ ^
十进制转二进制:使用短除法将数字余数连起来即是二进制数
int i = 3;-->11 000011
int j = i <<3; -->011000 = 2^4 +2^3 =24
注意:不可移出位数
二进制转十进制:哪一位有1就时2^(n-1),后将所有有1的位的数值相加
&:对应位都为1,则为1;有一个为0,则为0;
int i = 3; 011
int j = 5; 101
int k = i & j; 001
|:对应位有一个为1则为1;俩个都为0则为0;
int i = 3; 011
int j = 5; 101
int k = i | j; 111
~:将0变1,1变0
^:对应位相同为0,不同为1
int i = 3; 011
int j = 5; 101
int k = i ^ j; 110
#include<stdio.h>
int main()
{
int i = 3;
int j = 5;
//int k = i & j;
//int k = i | j;
int k = i ^ j;
printf("%d\n",k);
return 0;
}
练习:
int i = 10; 000001010
int j = i <<5; 101000000 -->320
int k = i ^ j; 101001010 -->330
进制转换:
二进制:0 1 1101 0000 0000
八进制:0~7 15
十进制:0~9 13
十六进制:0~9 +a~f d
二转八:先转十,再转八,三位代表一位
二转十:。。。。
二转十六:四位代表一位
十进制 二进制 八进制 十六进制
int i 2 010 02 0x2
16 010000 020 0x10
6 0110 06 0x6
函数(具有各种功能的代码)
自己编写的函数
库函数:系统自带的函数
调用库函数的要求:声明函数头文件
#include<stdio.h>
#include<string.h>
标准输入函数和标准输出函数:
标准输出函数:printf
格式:printf(“需要输出的内容和系统指令(%d)”,表达式);
字符串---》%s
单个字符---》%c
整型---》%d
浮点型---》%f
指针(地址)---》%p
标准输入函数:scanf
格式:scanf("系统指令",&变量名)
为什么要用&:需要通过地址的形式来进行赋值
#include<stdio.h>
int main()
{
int i = 10;
char y = 'a';
float k = 3.14;
scanf("%d\n%c",&i,&y);
printf("i = %d,y = %c,k = %.2f\n",i,y,k);
return 0;
}
练习:使用scanf和printf实现下面的功能
在终端打印
please input your age:
please input your high:
your age and high are: , cm
#include<stdio.h>
int main()
{
int i;
float j;
printf("please input your age:\n");
scanf("%d",&i);
printf("please input your high:\n");
scanf("%f",&j);
printf("your age and high are:%d,%.1fcm\n",i,j);
return 0;
}
```