导图社区 数据类型
C语言的数据类型知识梳理,包括计算机的组成、计算机语言的发展、数据类型、几个重要的概念、输入输出等等。
编辑于2022-11-20 11:03:29 河南数据类型
计算机的组成
硬件
软件
操作系统
管理CPU的硬件及软件资源 -- 提供用户接口
系统软件
操作系统底层的编译软件
驱动
让外部硬件工作 -- 理解操作系统框架,懂硬件接口时序
应用
高级语言编程--应用程序
计算机语言的发展
机器语言:计算机能够识别的语言,二进制代码。
10100101 --- 往寄存器里写数据
mov
汇编语言:用指令集代替机器语言。最接近机器语言,执行效率高,阅读性差,可移植性差
高级语言
面向过程
c语言、vb等
应用:底层硬件编写
执行效率高
面向对象
c++、java等
应用:上层应用的编写(C++/QT)
执行效率偏低
数据类型
类型注意点
类型表示方法
类型的大小
类型的意义
基本数据类型(字符型、整型、浮点型)
字符型
表示方法
char
类型的大小
1个字节==8位
256种变化情况(0000 0000 ~ 1111 1111)
类型的意义
存放数字
有符号
(signed)char
-128~127
最高位代表符号位
无符号
unsigned char
0 ~ 255
存放字符(ASCII是数字的另外一种表示方法)
字符的表示形式
''括起来
单个字符
‘\0’ '\n' 'a'
“ ”括起来
字符串
整型
表示方法
int
类型的大小
16位单片机/8位单片机
STC89C51
16位 == 2个字节
32位单片机
32位 == 4个字节
类型的意义:存放整形数据(实数)
int:4个字节
signed:有符号 (signed) int
最高位代表符号:1代表负,0代表正
unsigned:无符号 unsigned int
只能存放大于等于0的整数
long:长整形,4个字节(long int)
short:短整形,2个字节 (short int)
浮点型(小数)
表示方法
float:单精度,4个字节(小数点数据有效位后6位)
double:双精度,8个字节(小数点数据有效位后12位)
意义
存放小数
构造数据类型
数组、指针、结构体、共用体和枚举
数据类型的大小
32位环境下
int --4字节 short--2 long--4 char--1 float --4 double--8
1Byte(字节) = 8bit(位)
1k = 1024B
1M = 1024k
1G = 1024M
几个重要的概念
关键字
编译器已经定义好其作用,可以直接使用。标准c语言一共有32个关键字
int
char
标识符
c语言里面的所有命名
1.字母、数字和下划线组成 2.数字不能放开头 3.不能和关键字重复 4.区分大小写
常量
程序运行过程中不能改变的量
字符型常量
字符常量
单引号引起来的字符
'a' 'b'
'\n':换行
‘\r’:enter
'\0':空字符
字符串常量
双引号引起来的字符
“hello” //等效'h' 'e' 'l' 'l' 'o' '\0'
字符串常量以'\0'结尾
整型常量(实数)
正数
152
负数
-100
小数
表示形式:1.24 1.0 == 1. 0.28 == .28
double
指数形式常量
120000 -- 1.2e5
例如:windows -- RAM存储(这块区域不能修改)
在rom中存储(单片机)
变量
程序运行过程中可以改变的量
变量定义
例如:定义一个整型变量名为num; int num; 例如:定义一个整型变量,名为num1,并初始化为100; int num1 = 100;
类型 标识符 (=初始化);
类型:4种基本类型+5种构造类型
标识符
1.有数字 字母 下滑线组成
2.数字不可以放开头
3.不能与关键字相同
4.区分大小写
变量初始化
不用的变量一般初始化为0
变量操作
变量与常量
例如:定义一个整型变量,名为num2,初始化为0; 给num2赋值为200。 int num2 = 0; num2 = 200;//标识符代表该变量空间
a=100;
变量与变量
定义一个整型变量为num1,并初始化为100; 定义一个整型变量为num2,并初始化为0; 把num1的内容赋值给num2; num2 = num1;
a=b;
输入输出
程序标准格式
#include<stdio.h>//包含标准的输入输出头文件 int main()//主函数,一个程序必须并且只能有一个主函数 { 语句;//函数体 return 0;//主函数的返回值 }
输入/输出
格式化输出
printf("输出内容");
printf("格式符",输出变量);
格式符
%d:以十进制格式打印
%x:以16进制格式打印
%o:以8进制格式打印
%f:打印浮点型数据
%c:打印字符型数据
%s:打印字符串
%u:以十进制格式打印无符号变量
%5d:5代表位宽为5,右对齐
%-5d:位宽为5,左对齐
%.3f:打印小数点后3位,第四位进行四舍五入
格式化输入
scanf("格式符",输入变量的地址);
int a; scanf("%d",&a);
#include int main() { int a,b; scanf("%d%d",&a,&b); printf("%5d%5d\n",a,b); return 0; }
运算符
分类
与操作数的结合数量分类
单目运算符
拥有一个操作数
~
!
++
双目运算符
拥有两个操作数
+ - * / % = == +=
三目运算符
拥有三个操作数
?:
赋值运算符
=
算术运算符
+ - * / %
除 / --两个整数相除 == 整数 5/3 = 1
%:求余运算符
注意:操作数只能为整数
5%3 == 2
5%3.0 //错误
关系运算符
> >= < <= == !=
结果:真(不为0)/假(0)
C语言中,0为假,非0为真
-6
9%3
逻辑运算符
&& || !
结果:0/1
&&:逻辑与 两边都为真时结果为真,否则都为假
表达式1 && 表达式2
||:两边都为假时为假,否则都为真
表达式1 || 表达式2
!:真变假,假变真。
!表达式1
c语言0为假,非0都为真
逗号运算符
分割作用
int a,b,c;
int a,b,c; a = (b=3,c=4); a = 4 取最后一个值
复合运算符
+= *= 等
#include "stdio.h" int main() { int a =100; a += 10;// a = a+ 10; printf("%c\n%d\n",'1','1'); }
int a = 10; a += 5; // a = a+5;
自加自减运算符
++ --
#include "stdio.h" int main() { int a =100; int b =200; b = ++a;//先加,再用 // b = 101,a = 101; /********************************************/ b = a++;//先用后加 //b = 100 a = 101 }
int a = 10,b; b = a++;// a=11 b =10 先取值后自加
int a = 10,b; b = ++a;// a=11 b =11先自加,后取值
条件运算符
语句1?语句2:语句3
判断语句1,成立结果为语句2,不成立结果为语句3
int a=3,b=4,c; c = (a>b)?a:b;
位运算符
& | ^ << >> ~
sizeof运算符
求任意对象(数据类型,变量)的大小(字节)
sizeof(int) == 4
#include int main() { int len; len = sizeof(int); printf("%d\n",len); return 0; }
int a = 10; sizeof(a) == 4
运算符的优先级
当不确定时,加()
算术运算符>关系运算符>逻辑运算符
类型转换
自动类型转换
当两个不同类型的数据进行运算时,自动向高精度类型转换
4/3.14 //结果为double类型
1/2 //结果为0 相同的数据类型计算,结果肯定还是这个数据类型
float a = 5;//5自动转换为float类型
强制类型转换
(数据类型)变量
float a = 1.234; int b = 0; b = (int)a;
取一个float型数据的小数部分
float a = 3.64; float b = a - (int)a;
取一个float型数据的整数部分,并且进行四舍五入
float a= 3.64;
int b = (int)(a+0.5);
编程规范
括号
当程序中需要加括号的时候,两个括号一定要同时打上去
只打一边容易遗漏
tab
学会使用Tab键进行缩进
每一个层次结构要有一定的缩进
注释
养成添加注释的习惯,在重要的地方添加注释,方便今后理解
常用的只是方式有两种
//:后边的内容就是注释的内容
/**/:之间的内容都是注释
模块之间加空行
头文件,宏定义,函数声明,函数,类型定义,函数体,返回值
在这些模块之间添加空行,是程序简单明了,方便其他人阅读程序