• 【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);

    本文为原创文章,允许转载,转载时请注明转载自http://www.cnblogs.com/zp646858695尊重作者劳动成果。
    您可以收藏我的博客或者关注和订阅,每天都会发布最新内容

  • 相关阅读:
    用jmeter通过ssl验证访问https
    github jekyll主题
    JMeter中返回Json数据的处理方法
    使用Nginx实现反向代理
    Antd 表格 -- 自定义合并行处理
    Go语言--第8章 包(package)
    GO语言 -- 第7章 接口(INTEFACE)
    GO语言--第6章 结构体
    PHP--相关扩展安装
    Go语言--第5章 函数
  • 原文地址:https://www.cnblogs.com/zp646858695/p/4651286.html
Copyright © 2020-2023  润新知