C语言串讲-1之基础语法

embedded/2024/11/14 18:59:38/

C语言源代码转变成可执行程序的过程:

1.程序为什么要被编译器编译之后才能运行?

因为计算机能够识别的只有机器语言,机器语言就是由二进制0和1构成。所以为了让计算机执行我们写的程序,必须翻译成计算机能够识别的机器语言程序(目标程序)。

2.编译器把C语言程序转换成可以执行的机器码的过程做了什么?怎么做的?

1).预处理:展开头文件/宏替换/去掉注释/条件编译

2).编译:检查语法,生成汇编代码

3).汇编:把汇编代码转化成二进制的机器码

4).链接合成可执行的程序,并对声明在其他目标文件找到对应的定义

宏定义与typedef 关键字:

#define 定义宏,使用 #define 定义常量来增强可读性。

宏定义在C语言源程序中允许用一个标识符来表示一个字符串,称为“宏” ,被定义为“宏”的标识符称为“宏名”。

定义宏:#define 宏名 替换文本 (替换文本”可以是任意常数、表达式、字符串等。)

typedef 是 C 和 C++ 语言中的一个关键字,用于为现有的数据类型定义一个新的名称。 它通常用于简化复杂的类型声明或为某种类型创建更具描述性的名称。 typedef 并不创建新的数据类型,而是为现有的数据类型创建一个别名。

typedef 原数据类型 新数据类型;

宏定义与typedef的区别:

typedef:只能给现有的数据类型命名,不能给常量重命名,用处没有宏定义广泛

宏定义:可以给常量重命名(可以是任意常数,表达式,字符串等)

全局变量和局部变量

(1)在程序中,局部变量和全局变量的名称可以相同,但是在函数内,如果两个名字相同,会使用局部变量值,全局变量不会被使用。

(2)函数的参数,形式参数,被当作该函数内的局部变量,如果与全局变量同名它们会优先使用。(参数也是局部变量)

(3)当局部变量被定义时,系统不会对其初始化,必须自行对其初始化。定义全局变量时,系统会自动对其初始化,全局变量默认值 0(char:‘\0’,指针类型NULL)(能用全局变量就用全局变量->自动赋空值)

常量

常量:是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量 使用#define或者const声明(const 声明常量要在一个语句内完成)

字符的输入输出

scanf()和printf()函数 注意读入字符变量:用getchar()吞回车或者空格

运算符

1./ 整除(向下取整)

2.++ 自增 a++ ++a区别

3.-- 自减 同上

4.三目运算符 ?: 位操作符:直接对二进制位进行操作

5.<< 左移 a<<x a左移x位,左移一位相当于乘2

6.>> 右移

7.~取反

8.|按位或 有1为1

9.&按位与 同1为1 通常用来对某些位清0或保留某些位 例:a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)

10.^按位异或 不同为1

实现两个值的交换,而不必使用临时变量。

例如交换两个整数a=10100001,b=00000110的值,可通过下列语句实现:     

a = a^b;   //a=10100111     

b = b^a;   //b=10100001     

a = a^b;   //a=00000110


http://www.ppmy.cn/embedded/137571.html

相关文章

linux 用C语言编写自己的myshell

学习完基本指令、开发环境、进程的概念和创建进程等内容&#xff0c;我们就可以写自己的shell了 文章目录 目录 文章目录 前言 一、myshell构思 二、前缀字符串的打印 三、获取命令行和分割命令 分割命令 四、调用指令 五、内建指令&#xff08;特殊指令&#xff09; …

ECharts实现数据可视化入门详解

文章目录 ECharts实现数据可视化入门详解一、引言二、ECharts简介与安装1、ECharts简介1.1、ECharts的主要特点 2、ECharts安装 三、ECharts基础配置与使用1、基础配置1.1、代码示例 2、动态数据与交互2.1、代码示例 四、高级用法1、多图表组合1.1、代码示例 2、响应式布局2.1、…

【IEEE出版,稳定检索】第六届国际科技创新学术交流大会暨信息技术与计算机应用学术会议(ITCA 2024,12月06-08)

第六届国际科技创新学术交流大会暨信息技术与计算机应用学术会议&#xff08;ITCA 2024) 2024 6th International Conference on Information Technology and Computer Application 重要信息 会议官网&#xff1a;itca2024.iaecst.org 会议时间&#xff1a;2024年12月06-08日…

数据库运维实操优质文章文档分享(含Oracle、MySQL等) | 2024年10月刊

本文为大家整理了墨天轮数据社区2024年10月发布的优质技术文章/文档&#xff0c;主题涵盖Oracle、MySQL、PostgreSQL等主流数据库系统以及国产数据库的技术实操&#xff0c;从基础的安装配置到复杂的故障排查&#xff0c;再到性能优化的实用技巧及常用脚本等&#xff0c;分享给…

Flutter:异步多线程结合

示例一 main() > isoLoadguncmo();void isoLoadguncmo() {Future(() {print(1来了);return compute(func, 123);}).then((value) > print(1结束));Future(() {print(2来了);return compute(func, 123);}).then((value) > print(2结束));Future(() {print(3来了);retur…

HTTP的诞生:它解决了哪些网络通信难题?

引言 在互联网发展初期,网络通信面临许多挑战,例如设备兼容性、数据传输标准化以及信息访问效率等问题。超文本传输协议(HTTP,HyperText Transfer Protocol)的出现,成功解决了这些问题,使全球信息交换更加顺畅,成为了现代互联网的核心基石。本文将从技术和应用的角度分…

Ubuntu24.04安装Perforce服务

安装 参考链接:https://www.perforce.com/manuals/p4sag/Content/P4SAG/install.linux.packages.install.html Perforce是一款收费的版本控制管理工具,当然其中也有一些免费的教学版本,应需要下载。 下载网址: https://www.perforce.com/downloads/helix-core-p4d安装前…

Docker在微服务架构中的最佳实践

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Docker在微服务架构中的最佳实践 Docker在微服务架构中的最佳实践 Docker在微服务架构中的最佳实践 引言 Docker 概述 定义与原理…