C#变量
一个变量只不过是一个供程序操作的存储区名字。
在C#中,每一个变量都要有一个特定的类型,类型决定了在变量需要分配的内存大小和布局。在范围内的值可以存储在这个变量指定内存中。
C#中的提供的基本类型可以分为如下几类:
类型 | 举例 |
整数类型 | sbyte、byte、short、ushort、int、uint、long、ulong和char |
浮点型 | float、double |
精确计算的十进制 | decimal |
布尔类型 | bool |
空类型 | 可以为空值的类型 |
对于基它值类型变量,如:enum;引用类型class以面说到后再讨论
C#中变量的定义
type variable;
其中type,提的是一个具体的数据类型,比如int,char,float……
variable,是指的一个或多个用逗号分隔的标识符名称组成
例如,如下的变量定义
int i,j,k;
char c,ch;
float f;
double d;
在定义变量的同时可以进行初始化,比如:
int i = 1;
C#中变量的初始化
变量通过在等号后跟一个常量表达式进行初始化(或者赋值),它的一般形式是:
variable = value;
变量可以在声明时被初始化,初始化由一个等号后跟一个常量表达式组成,如下形式
type variable = value;
例如:
int i = 1, j = 2, k = 3;
char c = ‘c’, ch = ‘c’;
float f = 1.0f;
double d = 1.0;
一定要注意正确地进行初始化变量要不然程序可能会得到意想不到的结果
在前面章节中添加如下代码进行测试验证变量的初始化
//变量初始化
Console.WriteLine("-------------------变量初始化----------------------");
short a;
int b;
double d1;
//对变里进行赋值
a = 10;
b = 10;
d1 = a + b;
Console.WriteLine("a={0},b={1},a+b={2}",a,b,d1);
整体的代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Chapter01_001
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World");
/*
生成Circle类的对象
调用类的AcceptValue()方法为圆的半径赋值
调用类的Display()方法显示相关信息
*/
Circle c = new Circle();
c.AcceptValue(5);
c.Display();
//测试类型占用的字空间
Console.WriteLine("--------------测试类型占用的字空间----------------");
Console.WriteLine("Size of bool:\t\t{0}", sizeof(bool));
Console.WriteLine("Size of byte:\t\t{0}", sizeof(byte));
Console.WriteLine("Size of char:\t\t{0}", sizeof(char));
Console.WriteLine("Size of decimal:\t{0}", sizeof(decimal));
Console.WriteLine("Size of double:\t\t{0}", sizeof(double));
Console.WriteLine("Size of float:\t\t{0}", sizeof(float));
Console.WriteLine("Size of int:\t\t{0}", sizeof(int));
Console.WriteLine("Size of long:\t\t{0}", sizeof(long));
Console.WriteLine("Size of sbyte:\t\t{0}", sizeof(sbyte));
Console.WriteLine("Size of short:\t\t{0}", sizeof(short));
Console.WriteLine("Size of uint:\t\t{0}", sizeof(uint));
Console.WriteLine("Size of ulong:\t\t{0}", sizeof(ulong));
Console.WriteLine("Size of ushort:\t\t{0}", sizeof(ushort));
//类型转换
Console.WriteLine("----------------类型转换--------------------");
double d = 123.789;
int i;
//强制把double类型转为int类型
i = (int)d;
Console.WriteLine("double 类型值:{0},转为int类型后值为:{1}", d, i);
//使用内置函数进行类型转换
Console.WriteLine("----------------使用内置函数进行类型转换--------------------");
int i1 = Convert.ToInt32(d); //注意使用Convert转换类进行调用内置转换函数
Console.WriteLine("使用内置函数ToInt32把double 类型值:{0},转为int类型后值为:{1}", d, i1);
string str = d.ToString(); //转换为字符串时可以不用Convert转换类进行调用
Console.WriteLine("使用内置函数ToString把double 类型值:{0},转为string类型后值为:{1}", d, str);
//变量初始化
Console.WriteLine("-------------------变量初始化----------------------");
short a;
int b;
double d1;
//对变里进行赋值
a = 10;
b = 10;
d1 = a + b;
Console.WriteLine("a={0},b={1},a+b={2}",a,b,d1);
Console.ReadKey();
}
}
}
代码编译运行后的结果如下:
System命名空间中的Console类提供了一个函数ReadLine,它可以接收来自用户的输入并返回输入的结果
可以使用如下代码来接收用户输入的值
//接受来自用户的输入
int num = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("你输入的值是:{0}", num);
整体代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Chapter01_001
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World");
/*
生成Circle类的对象
调用类的AcceptValue()方法为圆的半径赋值
调用类的Display()方法显示相关信息
*/
Circle c = new Circle();
c.AcceptValue(5);
c.Display();
//测试类型占用的字空间
Console.WriteLine("--------------测试类型占用的字空间----------------");
Console.WriteLine("Size of bool:\t\t{0}", sizeof(bool));
Console.WriteLine("Size of byte:\t\t{0}", sizeof(byte));
Console.WriteLine("Size of char:\t\t{0}", sizeof(char));
Console.WriteLine("Size of decimal:\t{0}", sizeof(decimal));
Console.WriteLine("Size of double:\t\t{0}", sizeof(double));
Console.WriteLine("Size of float:\t\t{0}", sizeof(float));
Console.WriteLine("Size of int:\t\t{0}", sizeof(int));
Console.WriteLine("Size of long:\t\t{0}", sizeof(long));
Console.WriteLine("Size of sbyte:\t\t{0}", sizeof(sbyte));
Console.WriteLine("Size of short:\t\t{0}", sizeof(short));
Console.WriteLine("Size of uint:\t\t{0}", sizeof(uint));
Console.WriteLine("Size of ulong:\t\t{0}", sizeof(ulong));
Console.WriteLine("Size of ushort:\t\t{0}", sizeof(ushort));
//类型转换
Console.WriteLine("----------------类型转换--------------------");
double d = 123.789;
int i;
//强制把double类型转为int类型
i = (int)d;
Console.WriteLine("double 类型值:{0},转为int类型后值为:{1}", d, i);
//使用内置函数进行类型转换
Console.WriteLine("----------------使用内置函数进行类型转换--------------------");
int i1 = Convert.ToInt32(d); //注意使用Convert转换类进行调用内置转换函数
Console.WriteLine("使用内置函数ToInt32把double 类型值:{0},转为int类型后值为:{1}", d, i1);
string str = d.ToString(); //转换为字符串时可以不用Convert转换类进行调用
Console.WriteLine("使用内置函数ToString把double 类型值:{0},转为string类型后值为:{1}", d, str);
//变量初始化
Console.WriteLine("-------------------变量初始化----------------------");
short a;
int b;
double d1;
//对变里进行赋值
a = 10;
b = 10;
d1 = a + b;
Console.WriteLine("a={0},b={1},a+b={2}",a,b,d1);
//接受来自用户的输入
int num = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("你输入的值是:{0}", num);
Console.ReadKey();
}
}
}
编译运行后的结果如下:
此时输入一个数值如:25并回车,结果会如下:
这里的结果说明代码中的int型变里num已经接收到了输入的25并做了存储。
关于Lvalues和Rvalues说明
Lvalues表达式可以出现在赋值语句的左边或右边,比如变量
Rvalues表达式可以出现在赋值语句的右边,但是不可以出现在赋值语句左边
比如一个常量表达式是不可以作为Lvalues的,比如常量 100,不可以写成 100 = 1000;这个语句在编译的时候就会报错。