stm32基础入门——C语言篇(上)

目录

一.c语言基本数据类型

二.C语言相关语句和运算符 

三.C语言循环,分支,跳转

四.C语言函数讲解


c语言数据基本类型

stm32基础入门——C语言篇(上)_第1张图片

一.c语言基本数据类型

一、整型(int、short、long、long long)
1、有符号整型
有符号整型的数据类型通常包括 int、short、long、long long 四种,因为是有符号类型,所以前面要加上 signed ,但是通常省略,也就是说在代码中直接打出 int 类型就代表是有符号类型的。

(1)int类型
数据类型大小是 4 字节,能表示的数值范围是-2^(32-1) – 2^(32-1)-1 (即 -2147483648 ~ 2147483647)
打印类型是 %d ,使用格式为 int 名 = 值;

(2)short类型
数据类型大小是 2 字节,能表示的数值范围是-2^(16-1) – 2(16-1) -1 (即 -32768 ~ 32767)
打印类型是 %hd ,使用格式为 short 名 = 值;

(3)long类型
数据类型大小是 4 字节,能表示的数值范围是-2^(32-1) – 2^(32-1)-1 (即 -2147483648 ~ 2147483647)
打印类型是 %ld ,使用格式为 int 名 = 值;

(4)long long类型
数据类型大小是 8 字节,能表示的数值范围是-2^(63) ~ 2^(63)-1 
打印类型是 %lld ,使用格式为 long long 名 = 值;

2、无符号整型
无符号数用 unsigned 表示 ,只表示数据量,而没有方向(没有正负,且无符号数最高位不是符号位,而就是数的一部分,无符号数不可能是负数。

(1)unsigned int 类型
数据类型大小是 4 字节,能表示的数值范围是0 – 2^(32)-1 (即 0~4294967295)
打印类型是 %u ,使用格式为 unsigned int 名 = 值;

(2)unsigned short 类型
数据类型大小是 2 字节,能表示的数值范围是0 ~ 2^8 -1 (即 0~65535)
打印类型是 %hu ,使用格式为 unsigned short 名 = 值;

(3)unsigned long 类型
数据类型大小是 4 字节,能表示的数值范围是0 – 2^(32)-1 (即 0~4294967295)
打印类型是 %lu ,使用格式为 unsigned long 名 = 值;

(4)unsigned long long 类型
数据类型大小是 8 字节,能表示的数值范围是0~2^63-1
打印类型是 %llu ,使用格式为 unsigned long long 名 = 值;

二、 字符型(char)
字符型变量用于存储一个单一字符,在 C 语言中用 char 表示,其中每个字符变量都会占用 1 个字节。在给字符型变量赋值时,需要用一对英文半角格式的单引号(’ ')把字符括起来。字符变量实际上并不是把该字符本身放到变量的内存单元中去,而是将该字符对应的 ASCII 编码放到变量的存储单元中。char的本质就是一个1字节大小的整型。

char 的格式匹配符(打印格式) 为:%c

数值表示范围是:
有符号: -2^(8-1) – 2(8-1) -1 (即 -128 ~ 127)
无符号: 0 ~ 2^8 -1 (即 0~255)

三、浮点型(float、double)
(1)单精度浮点型(float)
单精度浮点型的大小是 4 字节
float v1 = 4.345;
unsigned float v1 = 4.345; 无符号的 float 数据
格式匹配符是:%f , 默认保留 6 位小数。

(2)双精度浮点型(double)
双精度浮点型的大小为 8 字节
double v2 = 5.678;
unsigned double v2 = 5.678; 无符号的 double 数据

四.不同编译器环境下基本数据类型的存储长度

红色的代表常用的数据类型

stm32基础入门——C语言篇(上)_第2张图片

二.C语言相关语句和运算符

1.算术运算符

stm32基础入门——C语言篇(上)_第3张图片

 2.关系运算符

stm32基础入门——C语言篇(上)_第4张图片

3.逻辑运算符

 stm32基础入门——C语言篇(上)_第5张图片

 4.赋值运算符

stm32基础入门——C语言篇(上)_第6张图片

 5.位运算符stm32基础入门——C语言篇(上)_第7张图片

 6.其他运算符

stm32基础入门——C语言篇(上)_第8张图片

6.c语言相关语句

(1)语句时C程序的基本构建块。一条语句相当于一条完整的计算机指令。在C中,大部分语句以分号结尾。最简单的语句是空语句,即只有一个分号。C把末尾上加上一个分号的表达式都看作是一条语句,所以8;4+3;类似这样写也是可以的。虽然一条有用的语句相当于一条完整的指令,但并不是所有的指令都是语句,如:x = 6 + (y = 5);此处的y = 5便是一条完整的指令,但是它只是语句的一部分。

(2)复合语句:用花括号括起来的一条或多条语句,复合语句也称为块。
请看下面两个程序段:

while (index++ < 10)
{
    sam = 10 * index + 2;
    printf("%d\n",sam);
}
while (index++ < 10){
    sam = 10 * index + 2;
    printf("%d\n",sam);
}
两种风格的区别:第一种:强调语句形成一个块;第二种:突出块附属于while循环。但是对于编译器来说,这两种风格完全相同。

三.C语言循环,分支,跳转

1.三种循环

(1)for循环
for(表达式1;表达式2;表达式3)//注意用分号(;)而不是逗号
{undefined
循环体语句…
}
表达式1:变量赋值,只执行一次
表达式2:循环条件,一般为关系表达式和逻辑表达式,为真怎进入循环,为假结束
表达式3:循环变量变化区,通常用来修改控制变量的值,循环体语句执行完,就会执行语句3,再执行表达式2,构成循环

                                                              stm32基础入门——C语言篇(上)_第9张图片

(2)while(表达式)
{undefined
循环体语句;
}

while语句执行的时候,只要满足表达式条件,循环就会一直进行下去,直到条件不满足,跳出循环.

                                                        stm32基础入门——C语言篇(上)_第10张图片

(3)do while循环

do
{undefined
循环体语句;
}
while(表达式);

执行循环体语句,当循坏条件成立时,继续执行循环体语句;当循环条件不成立时,循环结束。因此,也成为直到型循环。

do…while循环语句中,在while括号后,要加分号(;),否则会出现报错。       
                                                            

stm32基础入门——C语言篇(上)_第11张图片

2.分支

(1) if -else 语句

if-else语句的一般形式为:
if(表达式)
    语句1;
else
    语句2;

该语句用于实现分支结构,根据表达式的值选择语句1或语句2中的一条执行。if-else语句的执行流程如下:

                                            stm32基础入门——C语言篇(上)_第12张图片

(2)  switch语句

 switch语句可以处理多分支选择问题,根据其中break语句的使用方法(break语句为强制结束循环),一般分两种情况。
1、在switch语句的每个语句段中都使用break语句,也是switch语句的主要使用方法,一般形式为:
switch(表达式){undefined
    case 常量表达式1:语句段1; break;
    case 常量表达式2:语句段2: break;
        …
    case 常量表达式n:语句段n; break;
    default: 语句段n+1; break;
}
该switch语句的执行流程如下:

stm32基础入门——C语言篇(上)_第13张图片

3.跳转

break 语句

switch条件语句和循环语句中,都可以使用break语句
switch条件语句中,作用终止某个case,并且跳出switch结构
循环语句中,作用是跳出当前循环语句,执行后面的代码

goto语句

当break出现在嵌套循环的内层循环时,只能跳出内层循环
如果,想要直接跳出外层循环,则需要对外层循环添加标记,使用goto语句

continue 语句

在循环语句中,如果想要立即终止本次循环,并且执行下一次循环,需要使用continue语句。

四.C语言函数讲解

1.关于函数,任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。所以,你可以说C语言程序是由函数构成的。

stm32基础入门——C语言篇(上)_第14张图片

2.函数的调用
函数的调用:
调用方式:1、函数语句;2、函数表达式;3、函数参数。

被调用的函数的声明:
一个函数调用另一个函数所具备的条件:
(1)首先被调用的函数必须是已经存在的函数;
(2)如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。
(3)如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。
(4)如果被调用的函数定义出现在主调函数之前可以不必声明。
(5)如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明。

3.形参与实参
关于形参和实参的说明:

(1) 在定义函数中指定的形参,在未出现函数调用时,他们并不占用内存中的存储单元,只有发生调用时,才会分配内存。
(2) 实参可以是常量、变量或者表达式;有时传递的时地址;
(3) 在被定义中,形参必须指定类型;
(4) 实参与形参的类型应相同或赋值兼容;
(5) C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只有实参传递给形参,而不能由形参传递给实参。

4.函数的返回值
函数的返回值:

希望通过函数调用使主调函数得到一个确定的值。
(1)函数的返回值是通过函数中的return语句获取的。
(2)函数值的类型;
(3)如果函数值的类型和return语句中表达式的值不一样,则以函数类型为准。
(4)如果调用函数中没有return语句,并不带回一个确定的用户需要的值,函数不是不带回值,而只是不带回有用的值,带回一个不确定的值。
(5)如不需要带回任何值,用void。

5.局部变量和全局变量
局部变量和全局变量:

(1)局部变量在一个函数内部定义的变量是内部变量,它只是在本函数范围内的有效,主函数也不能使用其它函数中定义的变量;不同函数中可以使用相同的名字的变量,他们代表不同的对象,互不干扰;形式参数也是局部变量;在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合句也可以称为“分程序”或“程序块”。

(2)全局变量,在函数之外定义的变量称为外部变量,全局变量可以增加函数间数据联系的渠道,一般不再必要时不要使用,他在程序的全部执行过程中占用存储单元,是函数的通用性,使用全局变量会使程序的清晰性降低。还要注意若果同一源文件中,外部变量和局部变量同名,则在局部变量作用范围内,外部变量被“屏蔽”,不起任何作用。

你可能感兴趣的:(stm32,c语言,开发语言)