Linux嵌入式学习---C语言之数据类型及运算

一、Linux下c语言概述

注:c语言的基础参考谭浩强《c语言程序设计》第五版,以下内容适用于初学Linux嵌入式学习,写的不容不仅要理解更是要边敲代码边理解文中内容,多动手。**也是为了方便自己整理一份笔记,便于自己复习,如果内容有错误,欢迎大家指出。

1.1C语言特点

c语言具有汇编语言和高级语言的优点,既适用于开发系统软件,又适用于编写应用程序,被广泛的应用于事务处理,科学计算,工业控制,数据库技术等领域。

1.2c语言是结构化的语言

c语言采用代码和数据分隔的方式,使程序的各个部分除了必要的信息交流外彼此独立。这种结构使程序层次清晰,便于使用,维护,以及调试。

c语言是以函数形式提供给用户的,这种函数可以被方便的调用,并且有多种循环语句,条件语句,控制语句,使程序结构化。

1.3c是模块化的语言

c主要用于编写系统软件和系统软件,一个较大的系统需要分配成若干个模块,每个模块实现特定的功能。c语言中以函数作为程序的模块单位,不仅可以减少重复代码的编程,放在函数库中还可以被其他函数调用。

1.4程序可移植性好

程序的代码,80%是公用的,可以不用做任何修改可以用于任何计算机和操作系统。

1.5c语言运算符丰富,代码效率高

c语言的运算符较多,编写代码质量高。

二、数据类型

2.1常量和变量

2.1.1常量:在程序运行中不能被更改的的量。

①:整型常量:1,-2,0等
②:实型常量包括(小数和指数)
例如:
12.9,-9.8;
:1e3 -------表示1x10^3
:-1.3e-9-------表示-1.3x10^-9
注意:e前面必须要有数字,e后必须是整数
③:字符常量
例如:
‘A’,‘a’(只能放单个字符,且是单撇号
‘\n’,转义字符(查看转义字符表)
④:字符串常量(必须是双撇号)
例如:“hello”,“BEIJING”
⑤:符号常量
用#define 指令,指定一个符号名称代表一个常量
符号常量是不占内存的,只是一个临时符号,代表一个值

在程序中多处用到同一个常量的时候,可以做到一改全改。
例如:
#define PI 3.14
这里PI表示3.14,符号常量经常用大写表示
注意没有分号

2.1.2变量:变量的值是可以改变的,是一个有名字和特定属性的存储单元,存放数据,存放变量的值。
类似于数学中y=x(k>0),一次函数中的x;
从变量取值,实际是通过变量名找到相应的内存地址,从该存储单元读取数据。
变量必须先定义再使用

例如:
int a = 3; //定义了一个int整型类型的变量a;

2.1.3常变量:在定义变量的时候,在前面加const的关键字。且不能改变其值。

2.14标志符:只能由字母,数字,下划线3种字符组成,且第一个字必须为字母或者下划线组成。大写字母和小写字母是两个不同的字符。

例如:
sum;Sum;_toal;name_1;

2.2数据类型

2.2.1基本类型:整型,和浮点类型
①整型:基本整型(int),短整型(short int),长整型(long int ),
双长整型(long long int ),字符型(char ),布尔型(bool)
②浮点型:单精度浮点型(float),双精度浮点型(double),
复数浮点型(float_complex,double_complex,long long_complex)

2.2.2枚举类型(enum),空类型(void)

2.2.3派生类型
①指针类型(*)
②数组类型([])
③结构体类型(struct)
④共用体类型(union)
⑤函数类型

2.3整型数据

2.3.1数据分类

1字节=8位

(1)基本类型(int型)
根据编译器的不同:2个字节或4个字节
(一般编译系统为4字节)
存储方式:按整数的补码存放
正数补码就是二进制
负数补码=正数原码按位取反+1
最左位0表示正数,1表示负数

(2)短整型(short)
2个字节
可以用头文件#inlcude <limits.h>

(三)长整型(long int )
4个字节

(四)双长整型(lomg lomg int)

注意: long的数据长度不短于int型,short型不长于int型
sizeof(short)≤sizeof(int)≤sizeof(long)≤sizeof(long long)

在这里插入图片描述

常见的整型数据类型

常见整型类型字节大小
int4字节
(无符号)unsigned int4字节
short2字节
unsigned short2字节
long4字节
unsigned long4字节
long long8字节
unsigned long long8字节

无符号类型(unsigned)只能存放不带符号的整数,不能存放负数
因为无符号的最高位只能存放二进制数值,不能存放符号位,所以左边的最高位不用来表示符号(0代表正数,1代表负数),无符号类型 的范围比有符号类型的范围大一倍

整型(int)和字符型(char)可以加unsigned修饰符,对于无符号十进制格式输出,用“%u”的格式进行输出。

2.4字符型数据

字符型属于整型类型的一种。

程序可以识别的是系统的字符集,这个时候就要对照ASCII表
一个字节存储一个字符,字节中的第一位置为0

区分字符’1’和数字1的不同
字符’1’:表示一个形状为’1’的字符,占一个字节,ASCII码中为49;
数字1:是以二进制补码方式存储的,占2个或4个字节(根据编译系统决定)

思考:
整数1+1 = 2;
那么字符’1’ + ‘1’ 等于多少呢?

char a = ‘a’;//定义一个字符类型的变量;
输出格式:
%d ----输出十进制整数
%c ----输出字符

在这里插入图片描述

类型字节数
char1
unsigned char1
2.5浮点型数据

浮点数类型:①单精度浮点型(float)②双精度类型(double)③长双精度浮点型(long double)

①单精度浮点型(float)----4字节
因为存储单元的长度是有限的。所以不可能得到完全精确的值,只能存储有限的精确度。
float只能存放6位有效数字。

②双精度类型(double)----8字节
在进行浮点数的算数运算时,将float类型数据都自动转化为double类型的数据,然后在进行运算。
有效数字15位

③长双精度类型(long double)----16个字节或者8字节
有效数字19位或者15位

2.6小结

(1)浮点型常量都是按双精度处理,分配8个字节。
float a = 3.14159;
对于float变量分配4个字节,对于浮点型常量3.14159,则按双精度处理,分配8个字节。系统会有警告,对精确度有影响,但是不影响正确性。
(2)可以在常量的末尾加专用字符,强制指定类型常量。
例如:
float a = 3.14159f;//按单精度浮点常量处理,编译不会出现警告
long double a = 1.23L;//作为long double型处理
(3)每一个变量属于一个确定的类型,类型是变量的一个重要属性。
变量占用存储单元,是具体存在的实体,在其占用的存储单元中可以存放数据。而类型是变量的共性,是抽象的,不占用存储空间,不能用来存放数据。

三、运算符及表达式

对程序进行加工处理,就需要使用规定的运算符,才可以进行运算。

3.1基本类型运算符概述

运算符表:

类型符号
算数运算符(+ - * / % ++ --)
关系运算符(> < == >= <= !=)
逻辑运算符(! && 11)
位运算符(<< >> ~ 1 ^ &)
赋值运算(= 及其扩展运算符)
条件运算符(?:)
逗号运算符(,)
指针运算符(*和&)
求字节数运算符(sizeof)
强制类型转化运算符((类型))
成员运算符(. ->)
下标运算符([ ])
其他(如函数调用运算符())

3.2基本算数运算符

运算符含义
+单目运算正号(+a)
-单目运算符负号(-a)
*乘法
/除法取整
%求余
+加法a+b
-减法a-b

注意:
①如果除数或者被除数是负数,则舍入方向不确定。
-5 / 3 = -1
-5 / 3 = -2
多数是取整后向零靠拢
②%运算对象必须是整数,float和double不能取余。

3.3++和–运算符

运算符含义
++i使用i之前,先使i的值加1
i++使用i之后,使i的值加1
–i使用i之前,先使i的值减1
i–使用i之后,使i的值减1

在这里插入图片描述

3.4表达式和运算符的结合

只要知道:(复杂的情况查一下表)
算数运算符:自左至右
赋值运算符:自右至左

3.5混合运算

(1)+,-,*,/,运算的两个数中有一个数为float或者double型,系统会把float型转化成double型,然后在进行运算,结果是double型。
(2)int和float或者double运算,最后结果都是double型。
(3)char型与整型运算,是ASCII码与整型数据进行运算。
以上都是系统自动完成。

例如:
给定一个大写字母,用小写字母输出;

在这里插入图片描述
通过查看ASCII表,同一个字母,小写字符的ASCII代码比大写字符的ASCII代码大32;

#include<stdio.h>
int main()
{
	char c1,c2;
	c1 = 'A';
	//单个字符用''表示,把'A'的ASCII代码放进c1变量中,65
	c2 = c1+32;//65+32=97,把97赋给变量c2,以二进制方式存储
	printf("%c\n",c2);//%c输出字符的格式
	printf("%d\n",c2);//%d输出十进制的格式
}
3.6强制类型转换运算符

格式: (类型名)(表达式)

例如:
(double)a (将az转化成dounle型)
(int)(x+y) (把x+y的结果转化成int 型)

在这里插入图片描述
float默认输出小数点后6位。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 语言编写程序时,需要注意哪些问题? 在使用C语言编写程序时,需要注意以下几个问题: 1. 语法规范:C语言有自己的语法规范,需要按照规范编写代码,否则会出现编译错误。 2. 变量命名:变量命名需要具有一定的意义,方便代码的阅读和维护。 3. 内存管理:C语言需要手动管理内存,需要注意内存的分配和释放,避免内存泄漏和野指针等问题。 4. 安全性:C语言容易出现缓冲区溢出等安全问题,需要注意代码的安全性。 5. 代码风格:编写代码时需要注意代码风格的统一性,方便团队协作和代码维护。 ### 回答2: C语言是一种通用的高级编程语言,最初由美国计算机科学家丹尼斯·里奇在20世纪70年代初期于贝尔实验室开发。它是一种基于过程的编程语言,被广泛用于系统软件开发,尤其是操作系统和嵌入式系统的开发。 C语言的特点之一是它的简洁性和灵活性。它提供了一些基本的数据类型和操作符,并支持函数的定义和调用,允许程序员按照自己的需求进行编程。C语言的语法相对简单,易于学习和理解,同时也具有高效的执行速度和占用较少的内存空间。 C语言的另一个重要特点是它的移植性。由于C语言编写的程序可以直接转化为机器语言执行,因此可以在不同的计算机平台上运行。这使得C语言成为了开发跨平台软件的首选语言。许多操作系统和编译器都是用C语言编写的。 C语言还有丰富的标准库和第三方库支持,这些库提供了许多常用的函数和数据结构,方便程序员进行开发。同时,C语言也支持指针操作,使得程序员可以直接访问内存,对数据进行更加灵活和高效的处理。 总结来说,C语言是一种功能强大且广泛应用的编程语言。它的简洁性、灵活性和移植性使得它成为了许多领域的首选语言,特别是在系统软件和嵌入式系统的开发中。同时,它也具有丰富的库支持和指针操作等特性,为程序员提供了更多的开发可能性。无论是初学者还是专业程序员,学习和掌握C语言都是非常有价值的。 ### 回答3: C语言是一种通用的高级程序设计语言,它由美国计算机科学家丹尼斯·里奇在20世纪70年代初开发。C语言具有许多优点,因此在软件开发领域广泛应用。 首先,C语言简单易学,语法结构清晰,易于理解和编写。它的语法规则简洁明了,没有过多的特殊符号和复杂的概念,使得初学者能够快速入门,并能够从基本的打印输出、变量声明、条件语句等开始编写简单的程序。 其次,C语言具有高效性。它可以直接访问计算机的底层硬件,能够更好地利用计算机的资源和性能。C语言提供了丰富的内置函数和库,可以进行底层操作,如内存管理、指针运算等,使程序的执行效率更高,特别适用于对性能要求较高的软件开发。 此外,C语言具有良好的可移植性。由于C语言是非常通用的语言,可以在不同的操作系统和硬件平台上编写和运行。只需稍作修改,就能够适应不同环境的需求,因此C语言编写的程序可以在多个平台上运行,提高了软件的可移植性和跨平台兼容性。 最后,C语言还具有广泛的应用领域。几乎所有的操作系统、嵌入式系统和大型应用软件中都使用C语言开发。例如,UNIX操作系统、Linux操作系统以及许多常用的开源软件,如MySQL、Mozilla Firefox等都是用C语言编写的。C语言在编程领域拥有庞大的生态系统和强大的支持,为开发人员提供了丰富的资源和工具。 总而言之,C语言简单、高效、可移植且广泛应用。掌握C语言可以帮助我们更好地理解和编写程序,为我们在软件开发领域取得成功提供了强有力的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最没脑子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值