嵌入式第一天-C语言基础语法-程序员宅基地

技术标签: C语言  c语言  嵌入式  开发语言  

day01:基础语法

一、前言

1.1 C语言概述

  • C语言是计算器编程语言的一种,编程语言用于人和机器交流。
    • C语言通过编译器翻译成机器语言
  • C语言特点
    • 简洁
    • 高效
    • 可移植
    • 模块化
    • 标准化
  • C语言应用领域
    • 系统软件
    • 嵌入式系统
    • 网络设备
    • 游戏开发

1.2 编程环境搭建

  • 编译器:gcc
  • 集成开发环境:vscode

1、安装vscode

2、设置中文包 插件

在这里插入图片描述

3、设置C/C++扩展

​ C/C++ Compile Run extension 和C/C++ Extension Pack扩展

二、基础语法

2.1 第一个C语言程序

在这里插入图片描述

  • 分类

  • 行注释 //

    • 快键键 ctrl+/
  • 块注释 /**/

    • 快捷键 shift+alt+a

    在这里插入图片描述

2.2 数据类型

在这里插入图片描述

2.2.1 变量的语法(重点)

在这里插入图片描述

在这里插入图片描述

2.2.2 命名规则和规范

标识符是用户编程时使用的名字, 用于给变量、 函数、 类等命名

  • 命名规则

    • 规则:规则是一定要遵循,不遵循就报错

      • 由数字, 字母, 下划线_组成

      • 不能使用数字开头

      • 不能使用关键字

      • 严格区分大小写

    • 关键字(这个不用记):已经占用的名字,用户起名不能和关键字重名

    在这里插入图片描述

  • 命名规范:可以不遵循,只是一个建议,建议见名知意

    • 风格:
      • 大驼峰

        • 每个单词首字母大写, 例如: MyFirstName
      • 小驼峰

        • 第二个单词开始首字母大写, 例如: myFirstName
      • 下划线命名

        • 每个单词之间使用下划线连接, 例如: my_first_name
2.2.3 char类型
  • char的本质就是一个1字节大小的整型,一个字符对应一个ASCII 编码数字

在这里插入图片描述

2.2.4 bool类型
  • 早期C语言没有布尔类型数据,以0代表逻辑假,非0代表逻辑真
  • C99标准定义了新的关键字_Bool,提供了布尔类型,或者也可以使用stdbool.h中的bool
    -在这里插入图片描述
2.2.5 数据类型长度(大小)
  • bit(比特)
    • 一个二进制代表一位,一个位只能表示0或1两种状态。
  • Byte(字节)
    • 一个字节为8个二进制,称为8位,计算机中存储的最小单位是字节。
  • 使用sizeof查看数据长度
    ○ 长度在不同平台是不一样。

在这里插入图片描述

2.2.6 可移植的类型
  • C语言在可移植类型 stdint.h 和 inttype.h 中规定了精确宽度整数类型,以确保C语言的类型在各系统内功能相同

在这里插入图片描述

2.2.7 常量
  • 与变量不同,常量的值在程序运行时不会改变

在这里插入图片描述

3 数值表示

3.1 C语言如何表示相应进制数
进制 描述
十进制 以正常数字1-9开头,如15
八进制 以数字0开头,如017
十六进制 以0x或0X开头,如0xf
二进制 以0b或0B开头,如0b1111

在这里插入图片描述

在这里插入图片描述

3.2 数值存储方式
  • 在计算机系统中,数值一律用补码来存储

  • 对于正数,原码、反码、补码相同

  • 对于负数,其补码为它的反码加1

    • 负数的补码符号位不动,其他位求反,最后整个数加1,得到原码

    原码

    原码:一个数的原码就是它的二进制表示,其中最高位是符号位(0表示正,1表示负)。

    十进制 原码
    5 0000 0101
    10 0000 1010
    0 0000 0000
    -1 1000 0001
    -5 1000 0101

    原码表示法简单易懂,与带符号数本身转换方便,只要符号还原即可,但当两个正数相减或不同符号数相加时,必须比较两个数哪个绝对值大,才能决定谁减谁,才能确定结果是正还是负,所以原码不便于加减运算。

    反码

    对于正数,反码与原码相同,对于负数,符号位不变,其它部分取反(1变0,0变1)。

    十进制 原码 反码
    5 0000 0101 0000 0101
    10 0000 1010 0000 1010
    +0 0000 0000 0000 0000
    -1 1000 0001 1111 1110
    -5 1000 0101 1111 1010

    补码(重点)

    在计算机系统中,数值一律用补码存储。

    十进制 原码 反码 补码
    5 0000 0101 0000 0101 0000 0101
    10 0000 1010 0000 1010 0000 1010
    +0 0000 0000 0000 0000 0000 0000
    -1 1000 0001 1111 1110 1111 1111
    -5 1000 0101 1111 1010 1111 1011
    • 计算机的基石-补码

    对于一个字节(8 位),他所能表示的范围有多大呢?所有可能编码如下,共 256种。

    1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 0
    * * * * * * * *
    * * * * * * * *
    0 0 0 0 0 0 1 1
    0 0 0 0 0 0 1 0
    0 0 0 0 0 0 0 1
    0 0 0 0 0 0 0 0
    • 3.4.2 补码的编码规则

    如何来利用这些硬件的基础来表示我们需要的数据范围呢?就是编码。

    在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

    • 补码的运算

      1. 正整数的补码是其二进制表示,与原码相同
      2. 求负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0 变 1,1变 0)后加 1。

      【例 1】求-5 的补码。

      -5 => |-5| => 0000 0101 => 1111 1010 => 1111 1011

      【例 2】数 0 的补码表示是唯一的。

      0 => 0000 0000 => 1111 1111 => 0000 0000

    4.4 转换关系

    1. 原码表示方法:最高位为符号位,1表示负数,0表示正数。其余比特位表示数值。
    2. 反码表示方法:正数的反码是其本身,负数的反码为在原码的基础上,符号位不变,其余位取反。
    3. 补码表示方法:正数的补码就是其本身,负数的补码为在原码的基础上,符号位不变,其余位取反,再+1(即在反码的基础上+1)。

三、程序的输出和输入

3.1 输出(重点)

在这里插入图片描述

3.2 输入

在这里插入图片描述

3.3 案例

在这里插入图片描述

四、运算符

  • 运算符就是在各种运算中起到特定作用的符号
    • 一般情况下, 用哪个运算符, 现查现用即可

4.1 算术运算符

在这里插入图片描述

4.2 赋值运算符

在这里插入图片描述

4.3 比较运算符

  • C 语言的比较运算中, “真”用数字“1”来表示, “假”用数字“0”来表示

在这里插入图片描述

4.4 逻辑运算符

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shape_one/article/details/137608694

智能推荐

KEIL文件移动脚本--网关脚本_nrfutil' 不是内部或外部命令,也不是可运行的程序-程序员宅基地

文章浏览阅读650次。上面是效果原因 每次都是编译在大文件里面我希望只有BIN文件在一个干净的地方写一个.BAT在任何地方都是可以执行的 最后挂在KEIL里面内容 mv.batFOR /F %%I IN ('DIR /B /S "D:\TSBrowserDownloads\DA145xx_SDK_for_handover\DA145xx_SDK\old\projects\Izar\src\Node_Dialog_DA14531_SHENNONG\Keil_5\out_DA14531\Ob..._nrfutil' 不是内部或外部命令,也不是可运行的程序

全面解析并解决计算机缺失msvcp80.dll文件的问题-程序员宅基地

文章浏览阅读427次,点赞24次,收藏17次。在使用计算机过程中,有时会遇到“计算机缺失msvcp80.dll文件”的错误提示,这直接影响了部分应用程序的正常运行。msvcp80.dll是Microsoft Visual C++ 2005 redistributable runtime library(即VC++ 2005运行时库)的一部分,对于基于VC++ 2005编译的应用程序至关重要。本文将深入探究此问题产生的原因,并提出切实可行的解决方案。_msvcp80.dll

<读书笔记>《JS DOM编程艺术》-程序员宅基地

文章浏览阅读54次。2016/03/04 12:00第一二章:JS的简史以及基本语法1.P112.variable3.P13 等于4.P135.P14 转义字符6.关联数组不是一个好习惯7.P18 对象8.P31firefox和chrome的兼容性;+1900,IE好着呢;第三章:强大的DOM编程1.DOM:Document O..._dom编程艺术第3版下载

高级信息系统项目管理师—论文—进度管理_信息系统集成项目管理工程师高级论文-程序员宅基地

文章浏览阅读9.6k次,点赞7次,收藏35次。摘要:2015年3月,我作为项目经理参与了某公司与XX市交通运输局的道路交通智能监控抓拍系统的建设工作。我作为项目经理,主要进行了需求分析、系统设计、项目管理等工作。我十分重视项目的进度管理,运行丰富的项目管理经验,结合进度管理理论,对项目的各阶段进行了进度管理:规划进度管理、定义活动、估算活动顺序、估算活动资源、估算活动持续时间、制定进度计划、控制项目进度等过程全面展开对沟通的管控。依照项目管理..._信息系统集成项目管理工程师高级论文

java Lambda-程序员宅基地

文章浏览阅读317次。 https://www.cnblogs.com/heimianshusheng/p/5663913.html

UI设计师未来职业规划_ui设计未来工作期望-程序员宅基地

文章浏览阅读1.7k次。  近几年UI设计行业一直都比较火,不少其他行业的设计师都转行UI设计。这时候可能就会有小伙伴问未来职业规范怎么做才能脱颖而出呢?今天胡老师和大家来探讨一下。  现在的UI设计的市场需求和刚兴起那会截然不同,那时只要会设计图标简单的界面就可以找到一份很不错工作。而且薪资也比较可观。因此UI设计瞬间爆火,还有很多设计同行也分分转战UI设计。这个职位的特点,一定是指数型的,好的人会越来越好,一般的人面对的门槛则会提高。其实任何行业和职业都是这样的,只不过在互联网的设计师、工程师(以及其他职位)中,尤其明显。_ui设计未来工作期望

随便推点

使用nfs之后初始化mysql失败_influxdb数据库 nfs存储初始化失败-程序员宅基地

文章浏览阅读1.7k次。将nfs作为mysql的数据目录输出后,在另一台主机上启动mysql进程时,会出现如下这样的错误,究其原因,其实还是nfs自身设计的缺陷。 初始化就是使用特定的用户,去特定的目录去更新mysql,虽然说添加mysql用户之后,所有的对数据的修改权限都是以mysql用户执行的,而且nfs的数据目录也都设计成了mysql,常理是没有问题的。但是,执行mysql_ins_influxdb数据库 nfs存储初始化失败

ORC事务表与Hyperbase表的区别_星环 hyperbase、orc、text表区别-程序员宅基地

文章浏览阅读2.5k次。今天有客户问了我一下关于ORC事务表与Hyperbase表的区别问题,我回答的不是特别好,所以这里总结一下他们两个的区别,以便能掌握得更加深入些。ORC事务表:轻量级索引,支持CRUD操作,但是不建议大规模的单条增删改查,因为TDH(TDH是星环自研的一套大数据平台,类似于CDH,但是进行了很多的优化)是大数据数仓系统,是需要使用批量进行增删改查,索引单条操作的性能会降低;事务表需要进..._星环 hyperbase、orc、text表区别

Mybatis_"mybatis the content of element type \"choose\" mu-程序员宅基地

文章浏览阅读261次。Mybatis环境:JDK1.8Mysql5.7maven 3.6.1IDEA回顾JDBCMysqlJava基础MavenJunit1. 简介1.1 什么是MybatisMyBatis 是一款优秀的持久层框架它支持自定义 SQL、存储过程以及高级映射MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java _"mybatis the content of element type \"choose\" must match \"(when*,otherwise?)"

【预测模型】基于萤火虫算法优化bp神经网络实现数据预测matlab源码_mape1=mean(abs(error./output_test));-程序员宅基地

文章浏览阅读700次。1 算法介绍1.1 萤火虫算法算法基本思想描述如下:在群体中,每个萤火虫个体被随机分布在目标函数定义的空间中,初始阶段,所有的萤火虫都具有相同的荧光素值和动态决策半径。其中,每个萤火虫个体根据来自动态决策半径内所有邻居萤火虫信号的强弱来决定其移动的方向。萤火虫的动态决策半径会随着在它范围内萤火虫个体的数目而变化,每个萤火虫的荧光素也会随着决策半径内萤火虫个体的数目而改变。萤火虫群优化算法是无记忆的,无需目标函数的全局信息和梯度信息,具有计算速度快,调节参数少,易于实现等特点。萤火虫进化过程中,每次._mape1=mean(abs(error./output_test));

mybatis自动生成代码时报错:The server time zone value ‘�й���׼ʱ��‘ is unrecognized or represents more than one_mybatisplus报错the server time zone value ' й-程序员宅基地

文章浏览阅读588次。这种情况一般是因为在generatorConfig.xml文件中,连接数据库时缺少serverTimeZone导致的,在数据库连接上加上serverTimeZone=UTC即可解决。generatorConfig.xml代码如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator.._mybatisplus报错the server time zone value ' й

相机标定-机器视觉基础(理论推导、Halcon和OpenCV相机标定)_机器视觉标定-程序员宅基地

文章浏览阅读5.3k次,点赞13次,收藏109次。相机标定是获得目标工件精准坐标信息的基础。首先,必须进行相机内参标定,构建一个模型消除图像畸变;其次,需要对相机和机器人的映射关系进行手眼标定,构建一个模型将图像坐标系上的点映射到世界坐标系。主要分为背景知识、相机内外参模型推导、编程代码实现三个部分。_机器视觉标定

推荐文章

热门文章

相关标签