美文网首页
# 嵌入式C语言1

# 嵌入式C语言1

作者: xqiiitan | 来源:发表于2024-07-28 17:29 被阅读0次

1. 基础概括。

C能做什么:嵌入式开发、操作系统、驱动开发、引擎开发、高性能游戏开发....
C语言执行过程:

编写c文件--> 编译.c文件 --> .obj文件 --> 连接stdio.h 生成可执行文件.exe --> 最后执行。

注释: // 单行注释
/* 多行注释 */
#include<stdio.h> // 预处理,程序在运行之前,需要提前做的事情。
关键字:被C语言赋予了特殊含义的 单词。

常量:在程序执行过程中,其值不能发生改变的数据。

整型常量、实型常量(有小数点)、字符常量('a', 只能是字母、数字、英文字母)、字符串常量("abcd")
.93 等价于0.93
18.0 等价于18.

1.1.格式控制符(占位符)

整型 %d decimal
实型 %f floating-point
字符 %c char
字符串 %s string
long %ld long类型。
double %lf double类型。

printf("age: %d", 22 +3); // 占位符
printf("name is: %s,\n 性别:%s,\n age: %d\n", "小丽", "女", 44); // 占位符 输出多个常量,要一一对应。
换行符: \r\n, \r, \n
\r回到行首; \n到下一行。

1.2 变量:经常发生改变的数据

int a = 10;
数据类型:为盒子中存储的数据,加入类型的限制。限定是整数,小数...
变量在使用之前,必须先初始化赋值。
变量名不允许重复定义。

1.3 计算机的存储规则

二进制:逢二进一,借一当二。0x01
计算机中,二进制可以表示万事万物。

数字:先转成二进制,再存储。
ASCII码表:字母先转成数字,再二进制存储。
汉字:GB2312编码、GBK编码、Unicode编码。查询对应的码表,转数字二进制,再存储。

图片:分辨率、像素、三原色(RGB)。记录每个像素的三原色,
声音存储:采样声音波形图,记录音频数据。每个采样点都进行二进制编码保存。

1.4 常见的进制

八进制(Oct):每三bit分成一组,0~7. 作为一个保存数据。 int b = 010; 以0开头。
十六进(Hex):每四bit分成一组,0~15. int c = 0xF0; 以0x开头
二进制(Bin):int a = 0b10; 以0b开头。
十进制(Dec):不要写前缀。

1.5 数据类型

  • 决定变量中能存储什么类型的数据;
  • 决定存储空间的大小。

int 占用4个字节(32个bit位)。
8个bit 称为一个字节(Byte),也是最小的存储单元。
1024字节 = 1KB
1024KB = 1MB
1024MB = 1GB ...

1.6 整数数据类型。short、int、long、long long(c99才有)。

short (-32768~ 32767 ) 占用2字节。
无符号时,范围(0~ 65535)
int (-2147483648~2147483647), 占用4字节。
无符号范围(0~ 4,294,967,295)
long (-2147483648~2147483647), 占用4字节。
long c = 1000L; // 带后缀L
printf("%ld", c); // 打印long 类型 %ld.
long long d = 2000LL; 占用8字节。
printf("%lld", d);

使用sizeof(a) 可以测量一种数据类型占用多少字节。%zu 表示打印sizeOf的测量结果。
printf("%zu", sizeof(c));
printf("%zu", sizeof(short)); // 可以直接用数据类型,来测量。

无符号整数unsigned。 有符号整数 signed(默认)。
unsigned int index = 90;
printf("%u", index); // 打印无符号整数 %u。

1.7 小数:float,double 科学计数法保存值。

float 4字节
double 8字节,C语言中,小数默认是double类型的。
long double 不常用的高精度小数。
不能和unsigned组合, unsigned只能和 整数类型组合使用。

float: 单精度小数(精确度小数点后6位),windows 占4个字节(38位)

    float f1 = 3.14F;
    printf("%f", f1);
    printf("%.2f", f1); // 保留2位小数

double 双进度(精确度小数点后15位),windows占用8个字节(308位)

double b= 1.78;
printf("%lf", b);
printf("%.2lf", b);

总结:

  • 取值范围:double > float> long long >long > int >short
  • 后缀:long(L), long long(LL), float(F)

1.8 字符类型 char,占用1字节。取值范围只能是ASCII码表里面的。

char c = 'a';
printf("%c", c);

1.9 标识符

代码中所有我们自己起的名字,比如变量名、函数名等。

  • 由数字、字母、下划线组成
  • 不能以数字开头
  • 不能是关键字。
  • 用英文单词,简明知意。全部小写,使用下划线隔开。
  • 代码的文件名:全部小写,单词间下划线分开,开头可以用数字。

1.10 键盘录入。scanf()

define _CRT_SECURE_NO_WARNINGS

include<stdio.h>

int age;
scanf("%d" , &age); // 录入整数。

char str[内存占用大小];
占用大小计算规则:

  • 英文:一个英文字母(符号或数字),占用一个字节;
  • 汉字:一个中文,默认占两个字节。
  • 结束标记(\n):1个字节。
char name[100]; // 名字输入。
scanf("%s", &name);
// 同时录入两个变量。占位符之间可以使用空格隔开。
int a, b;
scanf("%d %d", &a, &b); // 占位符和后面的变量一一对应。

2.运算符。

+ — * /
整数计算,结果一定是整数。小数部分舍弃。
小数计算,结果一定是小数。
整数和小数计算,结果一定是小数。
小数直接参与计算,结果可能不精确。

取余数的细节:

  • 1.运算的数据必须都是整数。
  • 2.结果余数的正负,跟第一个数据保持一致。
  • 3.不能对0取余。

隐式转换:把一个取值范围小的,转成取值范围大的。
short、char类型数据在运算时,先提升为int,再进行计算。
显示转换(强制转换-大变小):有可能会发送数据错误。
把取值范围大的,赋值给取值范围小的,就需要进行强制转换。
(目标数据类型) 变量名= (目标数据类型)数据;
取值范围对比:
char <short<int<long< long long<float< double

赋值运算符:

=,+=,-=,*=,/=,%=

相关文章

网友评论

      本文标题:# 嵌入式C语言1

      本文链接:https://www.haomeiwen.com/subject/csusqjtx.html