定义
变量是内存或寄存器中用一个标识符命名的存储单元,可以用来存储一个特定类型的数据,并且数据的值在程序运行过程中可以进行修改
变量是内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型)。
通过变量名向内存存/取数据,有了变量名就不需要记忆复杂的内存地址了。
定义数据类型,程序运行时,它的数据必须存储在内存中。一个数据项需要多大的内存、存储在什么地方、以及如何存储都依赖于该数据项的类型。
变量的类型
变量类型 | 存储位置 | 自动初始化 | 用途 |
---|---|---|---|
本地变量 | 栈或者栈和堆 | 否 | 用于函数成员内部的本地计算 |
类字段 | 堆 | 是 | 类的成员 |
结构字段 | 栈或堆 | 是 | 结构的成员 |
参数 | 栈 | 否 | 用于把值传入或传出方法 |
数组元素 | 堆 | 是 | 数组的成员 |
声明变量
第一步申请空间(声明变量) 数据类型 变量名;
第二步赋值 存入数据 变量名=值;
int a;
a=100;
int a=100;//可定义时赋值
int a,b,c;//一次声明多个相同类型变量
显示变量的时候不用加引号,显示的是变量的值,加了引号代表原封不动的显示
变量一定要先声明,赋初值后,才能使用。
命名规则
1. 必须以“字母”_ 或@符号开头,不要以数字开头
2. 后面可以跟任意“字母”,数字,下划线
3. 变量名不要与c#系统中的关键字重复
4. 在c#中,大小写是敏感的
5. 定义变量时,变量名要有意义
6. 同一个变量名不允许重复定义(先这么认为,不严谨)
Camel命名法:首个单词的首字母小写,其余单词的首字母大写。(本地变量 参数)
Pascal命名法:每一个单词第一个字母都大写(类名 方法名)
英文单词的缩写,全部用大写
交换变量的值
//交换a和b的值,借助第三方变量temp
Int a=10;
Int b=2;
Int temp;
temp=a;
a=b;
b=temp;
数据类型
int 整数
double 小数
char 字符,只能存储一个字符,并且存储的这个字符要求用单引号引起来 必须有一个字符,可以是空格
string 字符串,把0个或1个或多个字符连接起来,字符串要求用双引号引起。电话号码要定义成string类型,不需要运算
decimal 用来存储金钱,具有更高的精度和更小的范围(在c#开发环境中,直接写一个由小数点的数字,这个数字是double类型,后边加一个m/M就说明是decimal类型)
bool 布尔类型,值只有两个,true,false。bool类型的变量,可以用来标记状态
数据类型的转换
隐式转换
参与运算(算术运算和赋值运算)的操作数和结果类型必须一致。当不一致时,满足下面条件时,系统自动完成类型转换。
1 .两种类型相兼容
2 .目标类型大于原类型,指范围和精度(有效数字)
例如:int和double都是数值类型,相兼容,且double包含int,int的值都可以用double表示。则int类型可以隐式转换成double类型。
如果一个操作数为double型,则整个表达式可提升为double型
在自动转换中,转换是不会丢失进度的,如果丢失精度,那么这个转换是不会自动完成的。
强制类型转换
(数据类型名)待转换的值;
Int b=(int)3.14;
强制类型转换,数据类型一定要相兼容
当会丢失精度的转换(如从double3.14到int3的转换,会丢失0.14的精度)时,系统不会帮我们自动转换,需要我们程序员来写代码完成转换
强制类型转换不是四舍五入