查看: 68506|回复: 37

Arduino编程基础(二)——C\C++语言基础(上)

[复制链接]
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2017-4-12 20:22 | 显示全部楼层 |阅读模式
    本教程节选自《Arduino程序设计基础》

    Arduino编程基础(一)——Arduino语言
    http://www.arduino.cn/thread-45048-1-1.html
    Arduino编程基础(二)——C\C++语言基础(上)
    http://www.arduino.cn/thread-45049-1-1.html
    Arduino编程基础(二)——C\C++语言基础(下)
    http://www.arduino.cn/thread-45050-1-1.html
    Arduino编程基础(三)——常用电子元件和扩展模块
    http://www.arduino.cn/thread-45117-1-1.html
    Arduino编程基础(四)——Arduino扩展板的使用
    http://www.arduino.cn/thread-45152-1-1.html

    1.1   C\C++语言基础
    C\C++语言是国际上广泛流行的计算机高级语言。绝大多数硬件开发,均使用C/C++语言,Arduino也不例外。使用Arduino,需要有一定的C\C++基础,由于篇幅有限,本书仅对C\C++语言基础进行简单的介绍。此后章节中我们还会穿插介绍一些特殊用法及编程技巧。
    1.1   
    1.1.1  数据类型
    在C\C++语言程序中,对所有的数据都必须指定其数据类型。数据又有常量和变量之分。
    需要注意的是,Genuino 101与AVR做核心的Arduino中的部分数据类型所占用的空间和取值范围有所不同。
    变量
    在程序中数值可变的量称为变量。其定义方法如下
      
    l  类型 变量名;
      

    例如,定义一个整型变量i:
      
    int i;
      
    我们可以在定义时为其赋值,也可以定义后,对其赋值,例如:
      
    int i;
      
    i=95;
      
      
    int i=95;
      
    两者是等效的。

    常量
    在程序运行过程中,其值不能改变的量,称为常量。常量可以是字符,也可以是数字,通常使用语句
      
    const 类型 常量名 = 常量值
      
    定义常量。
    还可以用宏定义来达到相同的目的。语句如下:
      
    #define 宏名 值
      
    如在Arduino核心库中已定义的常数PI,即是使用
      
    #define PI  3.1415926535897932384626433832795
      
    定义的。

    l 整型
    整型即整数类型。Genuino 101可使用的整型类型及取值范围如下

    表 2‑1 整型与取值范围
      
    类型
      
    取值范围
    说明
    int
    –2,147,483,648                                                                       2,147,483,647
      
    (–      – 1)
    整型
    unsigned int
    0     4,294,967,295
      
    (0       – 1)
    无符号整型
    long
    –2,147,483,648      2,147,483,647
      
    (–      – 1)
    长整型
    unsigned long
    0     4,294,967,295
      
    (0       – 1)
    无符号长整型
    short
    –32,768     32,767
      
    (–      – 1)
    短整型

    l 浮点型
    浮点数也就是常说的实数。在Arduino中有floatdouble两种浮点类型,在Genuino 101中,float类型占用4个字节(32位)内存空间,double类型占用8个字节(64位)内存空间。
    浮点型数据的运算,速度较慢且可能有精度丢失。通常我们会把浮点型转换为整型来处理相关运算。如9.8cm,我们通常把换算为98mm来计算。
    l  字符型
    字符型,即char类型,也是一种整形,占用一个字节内存空间,常用于存储字符变量。存储字符时,字符需要用单引号引用,如
      
    char col=’C’;
      
    字符都是以整数形式储存在char类型变量中的,数值与字符的对应关系,请参照附录中ASCII码表。
    l  布尔型
    布尔型变量,即boolean。它的值只有两个:false(假)和true(真)。boolean会占用1个字节的内存空间。
    1.1.2 运算符与表达式
    C\C++语言中有多种类型的运算符,常见运算符见表2-2

    2‑2 常见C\C++运算符
      
    运算符类型
      
    运算符
    说明
    算术运算符
    =
    赋值
    +
    -
    *
    /
    %
    取模
    比较运算符
    ==
    等于
    !=
    不等于
    <
    小于
    >
    大于
    <=
    小于或等于
    >=
    大于或等于
    逻辑运算符
    &&
    逻辑与运算
    ||
    逻辑或运算
    !
    逻辑非运算
    复合运算
    ++
    自加
    --
    自减
    +=
    复合加
    -=
    复合减
    1.1.3表达式
    通过运算符将运算对象连接起来的式子,我们称之为表达式。如
      
    5+3、a-b、1<9等。
      
    1.1.4数组
    数组是由一组相同数据类型的数据构成的集合。数组概念的引入,使得在处理多个相同类型的数据时,程序更加清晰和简洁。
    其定义方式如下:
      
    l  数据类型  数组名称[数组元素个数];
      

    如,定义一个有5个int型元素的数组:
      
    int a[5];
      

    如果要访问一个数组中的某一元素,需要使用
      
    l  数组名称[下标]
      

    需要注意的是数组下标是从0开始编号的。如,将数组a中的第1个元素赋值为1:
      
    a[0]=1;
      

    你可以使用以上方法对数组赋值,也可以在数组定义时,对数组进行赋值。如:
      
    int a[5]={1,2,3,4,5};
      
      
    int a[5];
      
    a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5;
      
    是等效的。
    1.1.5 字符串
    字符串的定义方式有两种,一种是以字符型数组方式定义,另一种是使用String类型定义。

      
    l  char字符串名称[字符个数];
      
    使用字符型数组的方式定义,使用方法和数组一致,有多少个字符便占用多少个字节的存储空间。

    大多数情况下,我们使用String类型来定义字符串,该类型中提供一些操作字符串的成员函数,使得字符串使用起来更为灵活。
      
    l  String  字符串名称;
      
      
    String   abc;
      
    即可定义一个名为abc的字符串。你可以在定义时为其赋值,或在定义后为其赋值,如
      
    String   abc;
      
    abc = “Genuino 101”;
      
      
    String   abc = “Genuino 101”;
      
    是等效的。

    相较于数组形式的定义方法,使用String类型定义字符串会占用更多的存储空间。
    1.1.6注释
    /**/之间的内容,及 // 之后的内容均为程序注释,使用它可以更好的管理代码。注释不会被编译到程序中,不影响程序的运行。

    为程序添加注释的方法有两种:
    单行注释:
      
    // 注释内容
      

    多行注释:
      
    /*
      
    注释内容1
      
    注释内容2
      
    ……
      
    */
      
    如果以上内容对你有帮助,你可以通过打赏支持作者

    2人打赏

  • TA的每日心情
    开心
    2016-10-20 20:26
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2017-5-19 11:54 | 显示全部楼层
    很精致教程
  • TA的每日心情
    开心
    2017-4-26 09:54
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2017-4-26 11:04 | 显示全部楼层
    初學者入門
  • TA的每日心情
    开心
    2017-6-7 16:20
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2017-5-23 16:57 | 显示全部楼层
    温故而知新!
  • TA的每日心情
    开心
    2017-7-17 08:59
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2017-7-4 15:04 | 显示全部楼层
    感谢大佬的教程
  • TA的每日心情
    无聊
    2017-7-8 06:34
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2017-7-8 06:49 | 显示全部楼层
    貌似<>也表示不等于

    该用户从未签到

    发表于 2017-7-28 08:53 | 显示全部楼层
    很好,很用心

    该用户从未签到

    发表于 2017-8-18 09:16 | 显示全部楼层
    简单明了,适合初学者
  • TA的每日心情
    开心
    2017-11-26 10:06
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2017-10-14 18:43 | 显示全部楼层
    真是通熟易懂  啊谢谢咯哦
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    【项目】基于Arduino Nano的多功能桌面感应垃圾桶
    【项目】基于Arduino Nano
    基于Arduino Nano的多功能桌面感应垃圾桶随着大学生活不断往前迈进,宿舍桌面上的杂物
    智能物联网花盆
    智能物联网花盆
    打坏了一个费时5小时 3D打印的花盆,耗时22小时 下载:Kittenblock软件,安装、运
    呼吸灯实验
    呼吸灯实验
    本文节选自《Arduino程序设计基础》 之前的章节已经介绍了多种方法控制LED,但单是开
    为开发板 Generic ESP8266 Module 编译时出错
    为开发板 Generic ESP8266
    第一次尝试Arduino UNO软串口通信,编译一直通不过,错误信息 “开发板 generic (平
    Arduino Uno 无法上传程序
    Arduino Uno 无法上传程序
    原来可以正常使用的Arduino Uno 板子突然不能上传程序了,硬件驱动正常,TX和RX指示灯
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表