C/C++培训
达内IT学院
400-996-5531
一.引入
我们先来看一个表达式:
a=3;
什么是常量,什么是变量,什么是运算符,什么表达式。
上面这个语句中,‘3’是常量。 ‘=’是运算符。‘a’是变量。而'a=3'这个完整的就是一个表达式。
上面整个表达式的含义:就是将常量‘3’赋值给‘a’这个变量。
我们今天主要来谈谈变量,就是a。
二变量是什么
那么变量究竟是什么呢?一个字母‘a’为什么就成为了变量呢?
变量就是内存设备里一段连续的存储空间(类似于一个盒子,用来存储数据)。
目前,严格来说,‘a’目前还算不是一个变量。因为它没有经过变量三要素的洗礼。
三、变量的三要素
int a;
上面这个语句,就包含变量的三要素。
# 变量类型。
2.a 变量名 。
# a;变量的定义。
下来我们详细解释一下
a:变量的类型
在计算机里,所有的存储数据都是0/1。而且存储的资源也是有限的。为了存储不同种类(整数,实数,字符),不同大小的数据,人们将数据人为分为不同的数据类型。并且对每种类型规定了所占用内存空间的大小,以及数据和0/1之间的转换方式。
b:变量名
以下是一些变量名中必须遵守的规则
1.只能以英文字母、下划线( _ )、美元符号( $ )开头。后面可以接数字、英文字母、下划线和美元符号( $ )
2.不能是C语言中的关键字
3.变量名最好做到见名知义的程度
4.变量名不要和函数名一样
c:变量的定义
还是以int a ;为例子来说
这句变量命名的意思就是:申请一段内存大小为4字节的存储空间,其中数据的存储方式和解释为补码,并将段内存空间起名为a
深入了解变量
我们需要深入了解以下的知识
1:十进制数与二进制数的转换
2:原码、补码
3:为什么整形变量会溢出
我们先来说进制转换的问题:
将十进制转换为二进制,将一个十进制数除以二,得到的商再除以二,依此类推直到商等于一或零时为止,倒取将除得的余数,即换算为二进制数的结果
举个例子来看:52(10) = 110100(2进制)
那么如果一个数是小数或者负数呢?这时候该怎么办呢
我们先来说小数:
对被转换的小数乘以2,取其整数部分(0或1)作为二进制小数部分,取其小数部分,再乘以2,又取其整数部分作为二进制小数部分,然后取小数部分,再乘以2,直到小数部分为0或者已经去到了足够位数。每次取的整数部分,按先后次序排列,就构成了二进制小数的序列
然后我们来说负数:
最高为位1,表示负数,其余位表示数据
这个意思就是,负数的二进制还是按照他自己的绝对值去写,然后在最前面写1就行
举个例子:(8位表示二进制)
52:00110100(原)
-52:10110100(原)
然后我们来谈谈补码(为什么有补码呢?因为在计算机的问题上,原码显然是不够用的)
我们先来说一下补码的表示方法:
当数据为正数时:补码 = 原码
当数据为负数时:原码最高位不变(1),其余位按位取反,末尾加1
用8字节表示52和-52的原码
52:00110100(原) ~ 00110100(补)
-52:10110100(原) ~ 11001011(取反)~ 11001100(补)
接下来我们说说整形变量的溢出
先计算int的表示范围int占用4b的内存,就是32位。那么32位表示正数最大值为:01111111 11111111 11111111 11111111() = 2147483647的32位表示负数最大值为:10000000 00000000 00000000 00000000 = -2147483648为什么会溢出呢2147483647 + 1 = 10000000000000000000000000000000
打印出来就是个负数了
Believe
接下来我们谈谈类型转换
类型转换
数据类型之间的转换分为自动类型转换和强制类型转换。顾名思义,前者是编译器自动完成的,后者是程序员强制将数据类型进行转换。
一:自动类型转换
当同一句语句或表达式如果使用了多种类型的变量和常量(类型混用)会发生这个情况
他的规则如下:
double ←── float 高
↑
long
↑
unsigned
↑
int ←── char,short 低
关于上面的流程的解释:
1.图中横向箭头表示必须的转换,如两个float型数参加运算,虽然它们类型相同,但仍要先转成double型再进行运算,结果亦为double型。纵向箭头表示当运算符两边的运
2.算数为不同类型时的转换,如一个long 型数据与一个int型数据一起运算,需要先将int型数据转换为long型, 然后两者再进行运算,结果为long型。所有这些转换都是由系统自动
进行的, 使用时你只需从中了解结果的类型即可。这些转换可以说是自动的。
其他情况下的自动类型转换
1.在程序中将数据用printf函数以指定格式输出时,当要输出的盐据类型与输出格式不符时,便自动进行类型转换
2.赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给他。
3.函数调用中参数传递时,系统隐式地将实参转换为形参的类型后,赋给形参。
4.函数有返回值时,系统将隐式地将返回表达式类型转换为返回值类型,赋值给调用函数
二:强制类型转换
需要将一个表达式转换成指定类型会发生,规则是:强制类型转换是通过类型转换运算来实现的。其一般形式为: (类型说明符) (表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型
举个例子来说就是
#include<stdio.h>
int main (void)
{
float b=3.1415;
double a = (int)b;
printf("a=%lf,
b=%lf\n",a,b);
return 0;
}
上面这段代码会输出:a=3.000000,b=3.141500
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved