C语言笔记变量与数据类型
目录
1.转义字符
2.常量与变量
2.1 什么是常量和变量
2.2 内存
2.3 变量的内存机制
2.4 变量命名规则
2.5 变量的定义
2.6 常量的定义
2.7 计算机内存字节顺序
2.8 局部与全局变量的区别
3.数据类型
3.1 数据表示
3.1.1进制之间转换
3.1.2计算机存储数据
3.1.3数据类型
3.1.4数据类型与内存
3.1.5正负符号的表示
3.1.6数值表示方法----原码、反码、补码
3.1.7数据类型有符号和无符号
3.1.8数据类型的取值范围
3.2 基本数据类型
3.2.1整型
3.2.2实型
3.2.3字符型
3.3 数据类型转换
3.3.1 隐式转换
3.3.2 强制数据转换
3.3.3 强制类型数据转换的影响
3.3.4 数据转换的二进制原理
1.转义字符
具体转义字符,例如斜杠、单引号、双引号转义、换行
2.常量与变量
2.1 什么是常量和变量
计算机的数据在参与程序执行过程中,有些数据需要经常变化,有些数据不需要变化。所以把数据就分为常量和变量。
常量:程序执行过程中不需要变化的。
变量:程序执行过程中需要经常变化的。
2.2 内存
内存是用于存放数据的,内存=内存地址+内存空间(内存单元)。
2.3 变量的内存机制
当程序执行,计算机就会为每个变量分配一个内存空间以供使用,通过变量名就可以实现对数据的读取、写入。
流程图:
变量名->数据类型->变量地址--->内存地址->内存空间
细节:
1,变量之所以变化,就是变量储存值得变化。
2,同一时间内,变量空间值只能保留一份值,新值冲掉旧值。
分析
a=1;
b=2;
a+b=3;
2.4 变量命名规则
标识符:用于标识常量、变量、函数的字符序列
规则:
1,_和字母开头,由字母和数字、_组成
2,严格区分大小写,
3,不能用关键字
2.5 变量的定义
1,定义变量的两种书写形式;
2,使用变量之前必须定义;
2,变量一定要初始化;
---前一个应用程序结束,操作系统并没有把内存空间数据清除,当新的应用程序开始执行,操作系统把会把闲置下来的内存重新分配给程序使用,如果没有对变量进行初始化,就有可能使用到上个程序的垃圾数据。
当然有些操作系统,会进行些默认的处理。
细节:
1,Vs2013
引用未初始化的变量,要报错
只定义未初始化,未引用不报错。可以编译通过。
引用:使内存地址与变量名关联起来?
2.6 常量的定义
1,定义常量的两种形式
Define ;const锁定变量
2,常量的特点
1,在程序执行过程中一旦定义,就不能修改其值;
2,常量的好处:可以修改定义处的值,达到修改全部引用该常量的值
2.7 计算机内存字节顺序
数据在内存空间里按照什么顺序存放。
2.8 局部与全局变量的区别
函数内称为局部变量,外面就是全局变量
局部变量: 没有生明和定义的差别;
全局变量:有声明和定义的差别,定义只能一个,声明可以多个
3.数据类型
3.1 数据表示
正确表示一个十进制的数65 int a,b,c;
a=; //65十进制形式
b=;//65八进制形式
c=0x41;//65十六进制形式
错误表示一个十进制的数65
a=; //十进制是65
b=; //十进制是53
c=0x65; //十进制是101
3.1.1进制之间转换
二进制、八进制、十六进制转十进制------按权相加;
二进制转八进制,八进制转二进制------三位;
二进制转十六进制,十六进制转二进制-----四位;
十进制转二进制------整除;
十进制小数转换为二进制------乘2取整
3.1.2计算机存储数据
数据是以二进制位序列的方式存放于内存中。
二进制序列->加上结构的概念->称为字节。8个位为一个字节。
内存起始编号为1,每隔8位编号增1,对内存进行编号管理。
3.1.3数据类型
数据类型主要是对计算机出现的数据进行一个分类
数据类型种类:
1)基本数据类型:数值(整型、实型)和字符型
2)构造类型:数组、结构体、共用体
3)指针类型:
4)空类型:
3.1.4数据类型与内存
不同的数据类型占据不同的空间,整数从数学上就是从负无穷到正无穷之间的任意数,但是内存是有限的。
3.1.5符号的表示
整数的正负----用最高位表示符号,0表示正,1表示为负。
3.1.6数值表方法---原码、反码、补码
怎么求一个数值的原码、反码、补码
在计算机中,数值一律用补码来表示(存储)
原因
1,使用补码,可以将符号位和其它位统一处理,减法也可按加法来处理,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
2,使用原码,当两数相加时,如果是同号则数值相加;如果是异号,则要进行减法。而在进行减法时还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择符号。
图。。。。。。。。。。待补充
3.1.7 数据类型的符号
数据类型分为:有符号和无符号
3.1.8 数据类型的取值范围
一个数据类型能表示的最小值 、最大值。
3.2 基本数据类型
3.2.1整型
1)整型常量三种表示形式:十进制、八进制、十六进制
细节:整型常量的取值范围受到打印控制符决定的。
2)整型变量根据取值范围分为:short 、int、 long(默认有符号,可以指定为无符号)
细节:超出数据类型的表示范围,就会数据溢出。越过一定范围就会出错!
3)整型变量的内存分析
4)可以夸平台移植的整数
Int : 16位为2个字节, 32位4个字节
Long :64位Linux8个字节,Windows 32/64位都是4个字节
3.2.2实型
小数点位置固定不变的称为定点数,小数点位置可以浮动的称为浮点数。在计算机中,用定点数表示整数和纯小数,即有整数部分、又有小数部分的用浮点数表示。
科学计数法:1.234E2 其中1.234为尾数,10为基数,2为指数。
浮点数利用指数达到浮动小数点的效果,灵活的表达更大的实数。
1)两种表示形式:十进制,指数
2)浮点型数据分为:单精度(4个字节,6-7位有效数字)和双精度(8个字节,15-16位有效数字)。例如,1.0(8个字节),1.0f(4个字节)
3)为什么用浮点数表示实数?
1.01
1.0001
1.00000001
不能用整数一一对应方式,浮点数利用指数达到浮动小数点的效果,灵活的表达更大的实数;打印int与float 极值可以,得出都占4个字节,float能表达更大的值。
3)浮点数的误差
5)三种类型:float 、double、long double
输入、输出float,用%f;
输入、输出double,用%lf
输入、输出long double,用%Lf;
6) 浮点内存原理
3.2.3字符型数据
1,字符常量:单引号括起来的单个字符或转义字符。
字符常量的值:该字符的ASCII码值
1)用putchar(),分别使用单引号、十进制、八进制、十六进制输出字符
2)用putchar()输出转义字符
//0x41(十六进制)=='\x41'(字符)==65(十进制)==A(字符); 方式一
char ch0,ch1, ch2, ch3;
ch0 = 'A';
ch1 = ;
ch2 = '\x41';
ch3 = 0x41;
printf("%c,%c,%c,%c",ch0,ch1,ch2,ch3);
方式二
putchar('\n');
putchar('A');
putchar();
putchar('\x41');
putchar(0x41);
2,字符串常量:用双引号括起来的字符序列。
1),每个字符串尾自动加个‘\0’作为字符串结束标志。
2)字符串不能赋值个字符变量
3)用printf输出字符串
3,字符常量与字符串常量的区别?
3字符型数据---char
字符变量在内存中占一个字节,存储的事字符的ASCII值。
取值范围:
char :-127~+127
unsigned char :0~255;
char ch= //取值范围-127+127 //最大值+127 + //数据溢出 //进位后内存中二进制形式, %d 带符号十进制整数,所以是4个字节 ,以符号进行填充。
填充后如下:
二进制--补码形式
反码
原码
- 十进制
%x 无符号十六进制整数,所以是4个字节,以符号进行填充。
填充后如下:
原码-二进制
f f f f f f 无符号十六进制 printf("%d,%x",ch,ch)//-128,ffffff80
1与‘1’的区别?
ASCII特殊字符
宽字符问题
英文字符---1个字节,汉字---2个字节。当用一个汉字去表示字符,就会出现宽字符问题,处理宽字符就把汉字当作一个字符。
3.3 数据类型转换
3.3.1 隐式转换
1,表达式计算
1)小的数据类型转向大的数据类型
2)有符号转向无符号
3)char\short直接转成int类型
2,赋值号类型换
3.3.2 强制数据转换
强制转换得到只是个中间变量,不会改变原数据的值。
结论:强制转换可以将类型转成掐好解析的类型,就可以的到正确的结果。
3.3.3 强制类型数据转换的影响
1,精度损失
2,数据溢出
3.3.4 数据转换的二进制原理
char ch= //取值范围-127+127 //最大值+127 + //数据溢出 //进位后内存中二进制形式, %d 带符号十进制整数,所以是4个字节 ,以符号进行填充。
填充后如下:
二进制--补码形式
反码
原码
- 十进制
%x 无符号十六进制整数,所以是4个字节,以符号进行填充。
填充后如下:
原码-二进制
f f f f f f 无符号十六进制 printf("%d,%x",ch,ch)//-128,ffffff80
C语言笔记变量与数据类型的更多相关文章
- OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章)
OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章) 4.5精度和精度修饰符 4.5.1范围和精度 用于存储和展示浮点数.整数变量的范围和精度依赖于数值的源(varying,unifo ...
- OpenGL ES着色器语言之变量和数据类型(一)(官方文档第四章)和varying,uniform,attribute修饰范围
OpenGL ES着色器语言之变量和数据类型(一)(官方文档第四章) 所有变量和函数在使用前必须声明.变量和函数名是标识符. 没有默认类型,所有变量和函数声明必须包含一个声明类型以及可选的修饰符. ...
- [C语言入门笔记]变量与数据类型
变量与数据类型 什么是变量? 变量是一个变化的量 是内存中的一个空间 变量的定义方法是什么? 数据类型 变量名 = 值; 数据类型有哪些? 整型int 浮点型float double 字符型char ...
- iOS开发环境C语言基础 变量 、 数据类型和变量赋值 、 其他 、 运算符
1 变量使用常用错误汇总 1.1 问题 在我们使用变量的过程中,会遇到一些问题,在此将这些问题进行汇总,在今后使用的过程中,不出错.即使出现错误也可以很快地找到问题所在. 1.2 方案 变量在使用的过 ...
- JavaScript学习笔记——变量和数据类型
一.javascript命名规范 1. 严格区分大小写 2. 变量的命名必须以字母或 _或 $开头,余下的部分可以是任意的字母,数字,或者是 _或者是$ 3.不能用关键字或者是保留字命名. 4.jav ...
- C语言之变量和数据类型
常量:程序在运行过程中无法对值进行更改. 变量:是在计算机内存空间一种表示,声明变量将会向计算机内存申请存储空间,用于保存数据,计算机的CPU会从内存中加载数据. 声明变量: 数据类型 变量名[=值 ...
- C#语言与变量、数据类型
一.计算机语言 1.计算机语言包括:C\PHP\Ruby\JAVA\C#\Basi\JS\C++ 2.计算机语言发展史:机器语言——汇编语言——高级语言 二.代码 1.程序始终:Code(编码).Co ...
- Java语言基础---变量与数据类型
变量的作用域 java用一对大括号“{}”作为语句块的范围,称为作用域.作用域中的变量不能重复定义:离开作用域,变量所分配的内存空间将被JVM所收回. 基本数据类型的包装类 java为基础数据类型提供 ...
- Dart学习笔记-变量常量数据类型
变量和常量 1.变量的定义 main() { var t_str = 'hello world'; var t_num = 123456; String t_str2 = '你好,我很高兴'; int ...
随机推荐
- linux shell中如何删除指定后缀名的文件?
答: find . -name '*.txt' -delete 这条命令含义如下: 从当前目录开始查找以txt为后缀名的文件并删除掉
- linux基础之正则表达式
一.基本正则表达式 字符匹配 . : 匹配任意单个字符 [] : 匹配中括号中的任意单个字符 [^] : 匹配指定范围外的任意单个字符 空白字符:[:space:].数字:[:digit:].小写字母 ...
- win10更新后 chrome内核浏览器总是打开网页一直加载 甚至打不开 解决方法
https://blog.csdn.net/qq754772661/article/details/81452131 升级win10之后如果出现chrome内核的浏览器网页总是打不开 打开很慢 而ie ...
- Lintcode12-Min Stack-Easy
2. Min Stack Implement a stack with following functions: push(val) push val into the stack pop() pop ...
- Spring-AOP环绕监听出错
Exception in thread "main" org.springframework.aop.AopInvocationException: Null return val ...
- C#设置IE代理
public class IEProxySetting { public static bool UnsetProxy() { return SetProxy(null, null); } publi ...
- (免费电影)苹果手机合并.ts视频
代码教程:https://mp.weixin.qq.com/s/6Oo8TOruePUxotC11zp0ag
- javascript里文字选中/选中文字
一.获取/清除选中的文字 //获取选中的文字 document.getElementById("get").onclick = function () { var txt = wi ...
- 强化git
[场景1]git 提交本地代码到远程master 1.git init 2.git add . 3.git commit -m " " 4.git remote add origi ...
- mysql5.5大数据量下表结构升级
升级一张4万多行(增加一个字段),且包含blob字段的表(blob字段包含100KB左右的数据),运行alter语句:ALTER TABLE `imgdetail` ADD COLUMN `uplo ...