概述
Linux嵌入式学习---C语言之数据类型及运算
- 一、Linux下c语言概述
- 1.1C语言特点
- 1.2c语言是结构化的语言
- 1.3c是模块化的语言
- 1.4程序可移植性好
- 1.5c语言运算符丰富,代码效率高
- 二、数据类型
- 2.1常量和变量
- 2.2数据类型
- 2.3整型数据
- 2.4字符型数据
- 2.5浮点型数据
- 2.6小结
- 三、运算符及表达式
- 3.1基本类型运算符概述
- 3.2基本算数运算符
- 3.3++和--运算符
- 3.4表达式和运算符的结合
- 3.5混合运算
- 3.6强制类型转换运算符
一、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)
常见的整型数据类型
常见整型类型 | 字节大小 |
---|---|
int | 4字节 |
(无符号)unsigned int | 4字节 |
short | 2字节 |
unsigned short | 2字节 |
long | 4字节 |
unsigned long | 4字节 |
long long | 8字节 |
unsigned long long | 8字节 |
无符号类型(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 ----输出字符
类型 | 字节数 |
---|---|
char | 1 |
unsigned char | 1 |
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("%cn",c2);//%c输出字符的格式
printf("%dn",c2);//%d输出十进制的格式
}
3.6强制类型转换运算符
格式: (类型名)(表达式)
例如:
(double)a (将az转化成dounle型)
(int)(x+y) (把x+y的结果转化成int 型)
float默认输出小数点后6位。
最后
以上就是虚拟服饰为你收集整理的Linux嵌入式学习---C语言之数据类型及运算一、Linux下c语言概述1.1C语言特点2.1常量和变量3.1基本类型运算符概述的全部内容,希望文章能够帮你解决Linux嵌入式学习---C语言之数据类型及运算一、Linux下c语言概述1.1C语言特点2.1常量和变量3.1基本类型运算符概述所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复