- 变量(variable )和数据类型(DataType)
变量就是一块内存地址的别名(利用变量名找到对应的一块虚拟内存),不直接使用内存地址的编码,因为不同的计算机硬件或者计算机操作系统存取数据的方式不同。
声明变量即为开设一个虚拟内存;变量的赋值即为变量对应的内存写入数据,变量之间的赋值即为数据的赋值,再存储。
把变量看做容器,int value =100;int类型的变量,变量名为value;变量生活在内存中,内存=内存单元+内存地址;汇编语言,可以利用内存地址找到内存单元取存数据,但受硬件和操作系统的限制。不具体指定内存地址,利用名字来取存数据,名字即为变量。赋值:利用变量名找到对应的内存区,将数据转化为2进制,保存到内存空间。
Gettype(变量):得出变量的种类 ;typeof (int) 用于比较变量的类型,是否为int
sizeof(变量):得出变量的占用内存单元(4个字节,32位)
int 32位 double 64位 100.6d float 32位100,5f long 64位 :100l
C#中采用的小写int double float long 需要转换为CLR支持的基础数据类型, 大写system.int32=int system.int64=long system.Single=float system.Double=double (类似于基类)
String and string 不区分大小写,可以利用typeof 来比较,均会编译为 system.string
Var 关键字,隐式类型变量,用于精简代码。利用值的类型来自己推断类型。
数据类型的转换:大变小直接转换,隐式转换,小变大用方法:(int强制转换、int.parse 、convert.toint32 、tostring() string+“”,一般提示无法隐式转换)
变量的分类:值类型+引用类型,前者存活于线程堆栈,后者存活于堆
运算符和表达式,整数/整数=商,利用%取余,取模。++ --自增、自减运算符。
IF and Switch
逻辑表达式结果为 true or False ,逻辑表达式的组合 与&& 或|| 非!
注:=> 为lambda表达式。区别于>=
switch 注意语法 switch(变量)case 值:执行语句;break;最后为default:
static void Main(string[] args) { Console.WriteLine("请输入第一个数字"); int a = int.Parse(Console.ReadLine()); Console.WriteLine("请输入第二个数字"); int b = int.Parse(Console.ReadLine()); Console.WriteLine("请输入运算符"); string s = Console.ReadLine(); switch (s) { case "+" : Console.WriteLine(a+b); break; case "-": Console.WriteLine(a-b); break; case "*": Console.WriteLine(a*b); break; default: Console.WriteLine(a / b); break; } Console.ReadKey(); } }
循环语句:
for循环,知道循环的次数,以及每次的步长。
while 循环,知道循环的条件。
Do-While循环,知道循环的条件,先执行循环体后判断循环条件。
console的小技巧:
知道按键,利用console中的readkey 方法。返回值为control keyinfo
方法的调用,有静态和非静态之分,静态可以直接利用方法名进行调用,或者利用类名+方法名。非静态的方法,一般通过实例化对象来调用。
堆栈溢出 ,内存区域称为线程堆栈,他的储存空间有限。避免溢出,在递推中规模要变小即为收敛。
static long Factorial(int n) { if (n==1) return 1; long ret; ret = Factorial(n - 1) * n;//再次调用,规模变小 return ret; }
注意,计算机不能准确的比较两个值,一般利用Math类中的ABS方法,计算两个值之间的误差,并将误差与1e-10 等来进行比较。
原文地址:https://www.cnblogs.com/LljCoder/p/11029507.html