【C#学习笔记】【3】从计算1+1=2开始(变量与类型)

在上节中主要简单的介绍了一下使用环境,以及怎么新建一个项目和解决方案。(有人说我没讲.net framework以及CLR,我认为还不会吃饭呢,就想着做饭,是不是有点早了???)我想问你,俗称的电脑为啥又叫计算机呢?当然,最早是用于大型计算的,那么今天,我们也来先学学怎么用它计算点东西。

变量和类型

学过C语言或者其他的读者,你可以跳过本小节,但是,我还是建议你读完本小节,说不定你会有新的认识。

什么是变量

相信你学过高中数学函数部分,y=f(x),这是一个函数,其中x叫做自变量,y叫做因变量。二人的共同点是都能变,而且一个随着另一个改变。变量有个特点,可以赋值,可以参与运算。也就是说,变量里存放着一个数值。我们类推一下,程序里的变量就是在内存中(为什么不是硬盘呢?程序运行时,是要把硬盘上的数据读取到内存里的,然后再运行)开一个小房间,然后把一个数值存进去,当然这个值你可以随时去改变。

那么问题来了,怎么告诉程序我需要一个变量,怎么让程序把一个数值放到这个变量里呢?

声明变量并初始化(赋值)

按照我们类推的思路,告诉计算机一个变量x,并且把10存进去,应该是这样写,x=0;(这句话写哪里呢?按照上节写到的,先新建项目和解决方案,在主函数的花括号里写。分号的作用是很么还记得么?哦,一句话的结尾,相当于我们写作文时的句号。)

运行一下,弹出一个好大的错误对话框,告诉你发生错误了,并且窗口下面错误列表(没有错误列表的可以点击菜单栏【视图】->【错误列表】显示)提示,当前上下文中不存在名称“x”。如下图:

2015-07-16_125814

这是神马意思呢?猜一下,肯定是程序不知道有x这么个变量,那我们声明一下吧(告诉程序变量名称的过程叫做声明,也就是定义变量),声明的语法如下:

变量类型    变量名称;

这里和数学上不同的是,我们需要告诉程序这个变量是什么类型,也就是,整数?小数?还是其他的。在这里,我先告诉你一个类型,整数类型“int”。这个类型可以声明一个整数变量,由于这个变量在内存上开的房间大小只有那么点大,所以可以存-2,147,483,648 到 2,147,483,647的整数,你给他赋值的时候不要超过这个范围,切记。稍微修改我们的程序,如下:

int x;//声明一个整数变量
x = 10; //给这个变量赋值
Console.WriteLine(x); //把这个变量的值输出到控制台
            
//你还可以这样写
int y = 8; //变量的声明和赋值写到一句话里面了

Console.ReadKey();//让控制台不要一闪而过

我写了注释了,这下,你体会到注释的好处了么。而且你看到我写的,还可以将声明和赋值写到一起(为什么换了个y变量呢,因为不可以声明两个相同名字的变量,否则程序不知道你说的是哪个变量)。我还用了昨天学的两句话,一句是输出,一句是让控制台停住。(小提示,输入cw并按两次Tab键,也就是键盘大写锁定键上面那个,有意想不到的惊喜哈)

让我们做个练习,声明三个整数变量,x,y,z,并且,x的值是3,y的值是2,分别计算x+y  x-y  x*y  x/y的值,并且存放到z里,然后输出到控制台。

练习代码如下,你是否写对了呢?

int x = 3;
int y = 2;
int z;

z = x + y;//加法
Console.WriteLine(z);
z = x - y;//减法
Console.WriteLine(z);
z = x * y;//乘法
Console.WriteLine(z);
z = x / y;//除法
Console.WriteLine(z);


Console.ReadKey();//让控制台不要一闪而过

运行结果如下图:

2015-07-16_132231

从运行结果里,我们发现了问题,3÷2变成了1,计算机也不靠谱么,这都算不对(你可以嘲笑他一分钟)。

。。。一分钟过去了

我来解释一下原因吧。刚才说了,计算机里定义变量是有类型的,每种类型都只能存放特定的值,它存放的值可以变,但是类型却不能变。从新审视我们的代码,我们的z声明时用int声明的,那么它只能存放整数,而3÷2是1.5,是一个小数,结果z就把小数部分扔掉了,只保留了整数部分1,而且他不是四舍五入的(切记)。这个错误有时候我们专门利用,利用它来取出某个数的整数部分。

我相信你会改造上面的程序,你缺的只是一个小数型变量的类型名称。我们用double来表示双精度小数(神马是双精度?就是高精度的呗)。我们只需要把int z;改为double z;   那么,加减乘的结果影响么?当然不会,整数也是特殊的小数么,只是小数点后面都是0而已。你改造好了么?运行一下试试!

我已经偷偷的笑了,我猜到你一定在说“你TMD在逗我么?”。结果还是错的,为什么呢?程序里规定了,整数和整数运算只能得到整数。那我们怎么办?跟着我,再改一个地方,把 z=x/y;改成 z=1.0*x/y;  你改完试试结果,我保证你这次得到了正确结果。那么1.0在这里是什么意思呢,其实就是让一个小数参与运算,一旦有小数参与运算,那么结果就变成小数了。

看到这里,你一定还想知道其他的一些变量类型,因为只有整数和小数满足不了我们的需求了。

常用的变量类型介绍

下表列出了我们常用的类型(实际类型比这个多)

类型

范围

声明及初始化

备注

int

-2,147,483,648 到 2,147,483,647

int x=12;

有符号 32 位整数

double

±5.0 × 10-324 到 ±1.7 × 10308

double x=12.5369;

精度15 到 16 位

decimal

±1.0 × 10-28 到 ±7.9 × 1028

decimal x=12.5M;

精度28 到 29 位有效位,常用于表示金钱

bool

true或者false

bool x=true;

表示真假,逻辑值,也叫布尔类型

char

U+0000 到 U+ffff

char x=’a’

16 位 Unicode 字符,也就是一个字母,或者一个汉字等,用于表示世界上多数已知的书面语言

string

表示零或更多 Unicode 字符组成的序列

string x=”我爱C#”;

字符串类型,也就是char的多个连接起来的组合

注意:

  • decimal类型也是高精度小数,经常用于经济,财会,货币的计算
  • bool类型是表示真假的,只能为true或者false,如果你学过C语言,你知道在C语言中0可以表示false,任何非0的数可以表示true,但是这在C#中并不适用,也无法相互转换
  • char类型赋值时需要用英文半角的单引号引起来
  • string表示一串char,赋值时需要用英文半角双引号引起来

    你可以试着做个练习,把上面的类型都定义一个变量,并且输出到控制台。

    “=”真的是等号么?

    刚才在代码里一直在写,XX=XX, 但是,这里的“=”是我们数学中的等号么?我们看下面的例子

    int x = 3;
    int y = 2;
    int z = 5;
    
    x = y;
    Console.WriteLine(x);
    
    z = z + 1;
    Console.WriteLine(z);

    其中一行代码,x = y,这是不可想象的如果放到数学里,因为这里的x和y并不相等。但是运行我们的程序,没有出错,这是为什么呢,而且x变成了2,也就是y的值。其实,这里的等号=是赋值的意思,意思就是把y存放的值赋给x。同理,z=z+1也是如此,z原本是5,加1变成6后再赋给z,所以这个程序运行的结果,第一个输出值是2,第二个输出值是6,你想明白了么?

    那我们真正想判断x是否等于y怎么办呢,我们用“==”判断,也就是x==y;相等就是真,不想等就是假,也就是说这个式子(这个式子叫逻辑表达式或者判断表达式,随你好了)是有值的,那用什么来存放这个值呢,当然是bool类型了,它表示的是真假,如下:

    int x = 3;
    int y = 2;
    bool b = x == y;
    Console.WriteLine(b);
    
    
    //////运行结果是:false

    是不是有点看的迷糊了?简单来说,=是赋值的,==是判断相等的

    如果没有理解==,我们在以后的逻辑运算符还会详细讲解,不用担心,还是我说的,愉快的学习吧。

    总结

    主要阐述了一下内容:

    1. 什么是变量
    2. 变量有哪些类型
    3. 怎么声明变量和赋值
    4. 赋值和判断相等的区别(=和==)

    这些都会了,恭喜你,又前进了一步。

    思考

    我不清楚你是否在想这样一个问题,已知正方形的面积是10平方厘米,怎么写程序求出变长呢?

    提示:这里需要用数学函数,数学函数的使用示例如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace MyFirtsProgram
    {
        class Program
        {
            static void Main(string[] args)
            {
                double x;//存放边长
                double s = 10;//正方形的面积
    
                x = Math.Sqrt(s);  //将面积s开平方(使用的数学函数)
                Console.WriteLine(x);    //输出边长x
    
                Console.ReadKey();//让控制台不要一闪而过
            }
        }
    }

    以上示例中使用了开平方的数学函数Math.Sqrt();只需要将被开方数放到括号里,就可以求出平方根。

    更多的数学函数【点击这里

    看方法下面的列表,列出了许多数学函数,大家摸索着看看,而且每个点击进去会有详细的示例,所以多看帮助文档,很不错的。下面我再额外的演示一下幂运算的数学函数(Math.Pow)的用法:

    double x = 2;
    double y = 10;
    double z;
    
    z = Math.Pow(x, y);//求2的10次方,结果为1024,
    Console.WriteLine(z);
posted @ 2015-07-16 14:47  鹏哥,一个业余爱好者  阅读(1248)  评论(0编辑  收藏  举报