数据的基本运算包含运算符和基本数据类型转换两部分

1.占位符

语法:

string.Format("{0},{1}","匹配0","匹配1")

示例

string str = string.Format("武林中武功排名第一的是{0},排名第二的是{1}", "阿青", "石破天");
Console.WriteLine(str);

2.转义符

C#中转义符分为两种,分别是\和@

@在C#中有两个作用

  • 在字符串的前面加@表示取消字符串中的转义,如string path = @"C:\Windows\Fonts"string path ="C\\Windows\\Font"的效果是一样的。
  • 如果用户定义的对象名和系统关键字冲突,可以在变量前面加入@,如string @Class = "这是一个测试"

\的用法如下

转义字符 字符名称
\’ 单引号
\” 双引号
\ 反斜杠
\0 空字符
\a 警报符
\b 退格
\f 换页
\n 换行
\r 回车
\t 水平制表
\v 垂直制表

实例

static void Main()
{
    // \"
    //天下武功排名第一的是"九阴真经"
    Console.WriteLine("天下武功排名第一的是\"九阴真经\"");
    // \'
    char c1 = '\'';
    // \0 空字符
    c1 = '\0';
    // \r\n 回车换行
    Console.WriteLine("天下武功排名第一的是\r\n九阴正经");
    // \t 水平制表
    Console.WriteLine("天下武功排名第一的是\t九阴正经");

    //标准数字格式化
    Console.WriteLine("{0:c}", 100);  //货币 ¥100.00
    Console.WriteLine("{0:d2}", 5);  // 05
    Console.WriteLine("{0:f2}", 1.235); //四舍五入保留2位小数
    Console.WriteLine("{0:p0}", 10); //百分数显示10
}

3.运算符

运算符有赋值运算符、算数运算符、比较运算符、逻辑运算符、快捷运算符、一元运算符、三元运算符

3.1赋值运算符

  • 将右边的结果复制一份给左边。
    int a = 1;
    
  • 赋值表达式自身也有值,其本身值为所赋值
    //一次声明多个变量
    int num01,num02;
    num01 = num02 =1;
    

3.2算数运算符

  • 对数值类型(整形、非整形)进行算数运算的符号。

  • 包括:加+ 减- 乘* 除/ 取模%

    //一次声明多个变量
    int a = 5, b = 2;
    //1.算数运算符
    int r1 = a / b; //结果为2 截断删除
    int r2 = a % b; // 5 % 2 ==> 1
    //(1)取模可以判断数字的奇偶性
    //判断变量a是否为偶数,是偶数为true否则false
    bool r3 = a % 2 == 0;
    //(2)获取整数的个位
    a = 16;
    // 变量a的个位 ==>6
    int r4 = a % 10;
    
  • String类型可以使用+,意为字符的拼接
    string s1="5",s2 ="2";
    string s3 = s1+s2; //结果为"52"
    

3.3比较运算符

  • 判断数值大小关系的符号

  • 包括大于> 小于< 大于等于>= 小于等于<= 等于 = = 不等于!=

    bool isEqual = 1 != 2;  //返回结果为 -- true
    
  • String类型可以使用 = =和!=,意为文本是否相同
    string s1="a",s2 ="a";
    bool r = s1==s2; //比较文本是否相同
    

3.4逻辑运算符

运算符 表达式 说明
&& 条件1&&条件2 仅当两个条件同时为真时,结果为真
|| 条件1||条件2 只要两个条件中一个为真,结果为真
! !条件 条件为真时,结果为假,条件为假时,结果为真
  • 判断bool值关系的符号

  • 参与逻辑运算的变量或表达式都是bool类型,结果也为bool类型

    bool result1 = true && true;
    bool result2 = 2 > 3||1!=1
    

    短路逻辑

  • 对于&&运算符,当第一个操作数为false时,将不会判断第二个操作数,因此此时无论第二个操作数为何,最后的运算结果一定是false。

  • 对于||运算符,当第一个操作数为true时,将不会判断第二个操作数,因为此时无论第二个操作数为何,最后的运算结果一定是true。

//短路逻辑
int n1 = 1, n2 = 2;
bool re1 = n1 > n2 && n1++ > 1;
Console.WriteLine(n1); //返回 1

bool re2 = n1 < n2 || n2++ < 1;
Console.WriteLine(n2); //返回2

3.5快捷运算符

  • 包含 += -= *= /= %=

  • 一个变量加上另外一个数,又赋值给自身

int num =1;
num +=5;

3.6一元、二元、三元运算符

运算符又一元运算符、二元运算符和三元运算符之分。

  • ++,–这样只需要一个操作数就能进行运算的运算符叫一元运算符
  • 正常使用的“+”“-”“*”“/”等需要两个参数参与运算的运算符叫二元运算符
  • 对于像(?:),需要三个表达式参与运算的运算符叫做三元运算符

3.6.1一元运算符

int i =5;
// i++; //自增==>自己增加1、
Console.WriteLine(i++) // 5 结果:自增以前
Console.WriteLine(++i) // 6 结果:自增以后
Console.WriteLine(i) //6    
//无论++在前还是在后对于下一条指令,结果都是自增以后。
//++在后 ==> 后自增 ==> 先返回结果
//++在前 ==> 先自增 ==> 后返回结果

示例

int num01 = 1;
num01++;
Console.WriteLine(num01);//2
Console.WriteLine(num01++);//2++ ==> 2

int num02 = 1;
num02++;
Console.WriteLine(num02); //2
Console.WriteLine(++num02);//++2 =>3 

3.6.2三元运算符

语法

bool 条件 ? 条件为true的结果:条件为false的结果

示例

int number = true ? 0 : 1;
Console.WriteLine(number);  // 0

string s = 1 == 2 ? "ok" : "no";
Console.WriteLine(s); // no

4.基本类型转换

基本类型转换包含隐式转换、显式转换、ToString转换、Parse转换

4.1Parse转换:string –> 其他数据类型

备注:待转数据若不像目标类型数据,则异常。

int num1 = int.Parse("250");
float num2 = float.Parse("250");

练习

让用户在控制台输入一个4为整数,计算每位相加的和。

static void Main()
{
    Console.WriteLine("请输入一个四位整数:");
    string inputNumber = Console.ReadLine();
    int num = int.Parse(inputNumber);
    int result = 0;
    //获取个位
    result = num % 10;
    //获取个位和十位的和
    result += num / 10 % 10;
    //获取前面的和和百位的和
    result += num / 100 % 10;
    //获取前面的和和千位的和 
    result += num / 1000 % 10;

    Console.WriteLine($"最后结果为:{result}");

}

4.2其他数据类型转换String

int num = 100;
string str  = num.ToString();

4.3隐式转换 : 自动转换

由小范围到大范围的自动转换

int num = 100;
long num2 = num3

4.4显式转换:强制转换

  • 由大范围到小范围的强制转换

  • 精度有可能丢失

  • 浮点型和decimal类型之间不存在隐式转换,因此必须使用显式转换
  • 非整形只能显式转换到整形
long num1 = 500;
int num2 = (num)num1;

5.相关代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Day2
{
    class Program
    {
        //占位符
        static void Main1(string[] args)
        {
            //在字符串中插入变量
            string userName = "admin";
            string password = "123456";
            Console.WriteLine("用户名为:" + userName + ",密码为:" + password);

            //占位符:{位置的编号}
            Console.WriteLine("用户名为:{0},密码为{1}", userName, password);
            string str2 = string.Format("用户名为:{0},密码为{1}", userName, password);
            Console.WriteLine(str2);
        }

        //转义符
        static void Main2()
        {
            //转义符 :改变了字符的原始含义
            //我要学"Unity"!
            // \"
            Console.WriteLine("我要学\"Unity\"!");
            // \`
            char c = '\'';
            // \0 空字符
            c = '\0'; //空字符
            // \\
            string path1 = "C:\\Windows\\Fonts";
            string path2 = @"C:\Windows\Fonts";
            // \r\n 回车换行
            Console.WriteLine("ab\r\ncd");
            // \t 水平制表符
            Console.WriteLine("a\tb");

            //标准数字格式化字符串
            Console.WriteLine("{0:c}", 100);//货币 ¥:100.00
            Console.WriteLine("{0:d2}", 9);//09
            Console.WriteLine("{0:f2}", 1.235); //四舍五入保留2位小数
            Console.WriteLine("{0:p0}", 0.1); //百分数显示10

        }

        //运算符
        static void Main3()
        {
            //一次声明多个变量
            int a = 5, b = 2;
            //1.算数运算符 + - * / %
            int r1 = a / b; //2 截断删除
            int r2 = a % b; // 5%2 ==>1
            //取余作用
            //(1)可以判断数字的奇偶性
            //判断变量a是否为奇数  是奇数true 否则 false
            bool r3 = a % 2 != 0; // true 
            //(2)获取整数的个位
            // 变量a1的各位-->8
            int a1 = 18;
            int r4 = a1 % 10; //8

            string s1 = "5", s2 = "2";
            string s3 = s1 + s2;//52  字符串的拼接

            //2.比较运算符
            bool r5 = a > b;
            bool r6 = s1 == s2;//比较文本是否相同

            //3.逻辑运算符 && || !
            bool r7 = true && true;//真与真结果:真
            r7 = true && false;//真与假 结果:假
            r7 = false && false;//假与真 结果:假
            r7 = false && false;//假与假 结果:假
                                //总结:一假具假 表达 并且 关系

            bool r8 = true || true;//真或真结果:真
            r8 = true || false;//真或假 结果:真
            r8 = false || false;//假或真 结果:真
            r8 = false || false;//假或假 结果:假
            //总结:一真具真 表达 或者 关系

            bool r9 = !true;//取反
            Console.WriteLine(r9);//fales

            //4.快捷运算符 += -= *= /= %= 
            int num = 1;
            num = num + 5;//一个变量加上另外一个数又赋值给自身
            num += 5;//含义同上
            Console.WriteLine(num);//6

            //5.根据操作数划分:一元运算符 ++ -- 二元 三元
            int i = 5;
            i++;//自增 ==> 自己增加1
            //Console.WriteLine(i++);//5 //结果:自增以前
            //Console.WriteLine(++i);//6  结果:自增以后
            Console.WriteLine(i);//6
            //(1)无论++在前还是在后,对于下一条指令,结果都是自增以后。
            //(2)++在后==> 后自增 ==> 先返回结果
            //(3)++在前==> 先自增 ==> 后返回结果

            int num01 = 1;
            num01++;
            Console.WriteLine(num01);//? ==>2
            Console.WriteLine(num01++);//?==>2

            int num02 = 1;
            ++num02;
            Console.WriteLine(num02);//? ==>2
            Console.WriteLine(++num02);//? ==>3

            //6.三元:  条件 ? 条件为true的结果 : 条件为false结果
            int number = true ? 0 : 1;
            string r10 = 1 == 2 ? "yes" : "no";

        }

        //数据类型转换
        static void Main4()
        {
            //"250" ==> 250

            //1.Parse转换:string ==> 其他数据类型
            // 备注:数据若不"像"目标类型数据,则异常
            int num1 = int.Parse("250");
            float num2 = float.Parse("250.5");

            //2.其他数据类型转换为string类型
            //100 ==>"100"
            int num = 100;
            string str = num.ToString();

            //3.隐式转换:由小范围到大范围的自动转换
            int num3 = 100;  //4字节
            long num4 = num3;//8字节

            //4.显式转换:由大范围到小范围的强制转换
            long num5 = 300;
            //精度由可能丢失
            byte num6 = (byte)num5;
            //备注:通常发生在数值之间

            //多种类型变量参与的运算,结果类型会自动提升
            byte number1 = 1;
            byte number2 = 2;
            byte result = (byte)(number1 + number2);
            int result2 = number1 + number2;

            byte bt = 1;
            bt += 1; //快捷运算符不去做类型检测
            bt = (byte)(bt + 1);
        }
        //练习:让用户在控制台中输入一个4为整数,计算每位相加和
        //例如: 1234 ==> 1+2+3+4 ==>10
        //1.如何获取4位整数?Solution
        //2.获取各位 十位 百位 千位
        //3.累加
        //4.显示结果
        static void Main5()
        {
            Console.WriteLine("请输入一个四位整数:");
            //获取用户输入
            string input = Console.ReadLine();
            //将用户输入的字符串转换位整数
            int num = int.Parse(input);
            int sum = 0;
            //计算个位
            sum += num % 10;
            //个位的结果与十位相加
            sum += num / 10 % 10;
            //前面的结果与百位相加
            sum += num / 100 % 10;
            //前面的结果与千位相加
            sum += num / 1000 % 10;
            //输出
            Console.WriteLine("每位相加的和为{0}", sum);
        }
    }   
}

发表评论

邮箱地址不会被公开。 必填项已用*标注