C#结构化编程基础(金老师编程课第二讲)

  • 变量(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 等来进行比较。

C#结构化编程基础(金老师编程课第二讲)

上一篇:c# 简单的窗体传值


下一篇:Windows环境下搭建SVN服务器