C# 基础知识--Day02

本文介绍了C#编程中的关键概念,如变量定义、占位符使用、字符串格式化、各种运算符及其优先级、数据类型转换、控制台输出以及选择语句(if-else和switch-case)的应用。
摘要由CSDN通过智能技术生成

Day02

占位符

占位符 {0}:代表第一个变量 ( gunName )
占位符 {1}:代表第二个变量( ammoCapacity)

//写法1
string gunName = "AK47";
string ammoCapacity = "30";
Console.WriteLine("枪的名称为:" + gunName + ",容量为:" + ammoCapacity);

//写法2
//占位符写法
string str = String.Format("枪的名称为:{0},容量为:{1}", gunName, ammoCapacity);
Console.WriteLine(str);

标准数字字符串格式化

例:{0:c}、{0:d2}、{0:f1}、{0:p1}

Console.WriteLine("金额:{0:c}", 10);//货币¥10.00
Console.WriteLine("{0:d2}", 1);//不足两位的用0补充成两位
Console.WriteLine("{0:f1}", 1.62);//以一定的精度进行四舍五入//1.6
Console.WriteLine("{0:p1}", 0.21);//以百分数显示,百分号后面有一个0

赋值运算符

  1. 将右边的结果复制一份给左边。
 int  a=1;
  1. 赋值表达式自身也有值,其本身值为所赋值。
int num01, num02;
num01  =  num02=1;

转义字符:改变字符原始含义

Console.WriteLine("我爱\"unity!\"");
char c1 = '\'';//可以在控制台显示引号" "
Console.WriteLine(c1);

char c2 = '\0';//空字符
Console.WriteLine(c2);
            
//回车换行:\r\n
//空格(水平制表格):\t

运算符

1.算数运算符"+“、”-" 、“*”、“/”、“%”

//获取个位
int n1 = 24;
int r4 = n1 % 10;
Console.WriteLine(r4);

2.连接运算符"+"

 string s1 = "5", s2 = "2";
 Console.WriteLine(s1+s2);//这里面的加指的是字符的拼接

3.比较运算符:>、<、>=、<=、等于==、不等于!=

注:文本不能使用

bool r7 = s1 == s2

4.逻辑运算符

  1. &&(与)、||(或)、!(非)
  2. 参与逻辑运算的变量或表达式都是bool类型,结果也为bool类型。

5.快捷运算符

+=, - =,* =,/ = ,% =

int num01 = 1;
//num01 = num01 + 5;//一个变量num01加上另一个数,再赋值给自己
num01 += 5;
Console.WriteLine(num01);

6.一元运算符+ + - -

  1. 后缀增量操作i++:返回的结果为自增以前的值。
  2. 前缀增量操作++i: 返回的结果为自增以后的值。
//(1)无论先加还是后加  对与 [下一条指令],都是自增以后的值(对于下一条指令没有影响)
int number01 = 1;
number01++;
Console.WriteLine(number01);//2

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

//(2)后加-> 后自增-> 返回值
int number03 = 1;
Console.WriteLine(number03++);//1 结果:自增以前

//(3)先加-> 先自增-> 后返回值
int number04 = 1;
Console.WriteLine(++number04);//2 结果:自增以后

7.三元运算符

数据类型 变量名 + 条件 ? 结果(满足条件的结果: 不满足条件的结果结果;)

string str01 = 1 > 2 ? "ok" : "no";//后面两个类型要相同
Console.WriteLine(str01);

8.运算符优先级

先乘除 后加减 小括号优先级最高

基本数据类型转换

1. Parse转换 : string 转换为 其他数据类型

//string "18" ==> int 18

//待转数据 必须"像”该数据类型
string strNumber = "18";
int num01 = int.Parse(strNumber);//18  将string转换成int类型
float num02 = float.Parse(strNumber);//18.0

2. ToString转换 : 任意类型转换成string(字符串)类型

int number = 18;
string str = number.ToString();

3. 折叠代码操作

#region
#endregion//折叠代码

4. 练习 :让用户在控制台中输入一个4位整数,计算每位相加和

例如 : 1234 ==》 1+2+3+4 ==》 10
方案1:从整数中获取每位

Console.WriteLine("请输入4位整数 :");
string strNumber01 = Console.ReadLine();
//1234” --> 1234(将字符串类型1234转化为int型1234)
int number01 = int.Parse(strNumber);

int result = number % 10;//个位

result += number / 10 % 10;// 十位

result += number / 100 % 10;//百位

result += number / 1000;// 千位
Console.WriteLine("结果为 :" + result);

方案2 : 从字符串中获取每个字符

//string str02 ="1234"
 //char c1 = str02[0];// 1’ ==》"1" ==>1
char c1 = strNumber[0];//1'
string s1 = c1.ToString();//“1”
int n1 = int.Parse(s1);
int result02 = n1;//千位

result02 += int.Parse(strNumber[1].ToString());//百位

result02 += int.Parse(strNumber[2].ToString());//十位

result02 += int.Parse(strNumber[3].ToString());//个位
Console.WriteLine("结果为 :" + result02);

5. 隐式转换(由小范围到大范围的自动转换)

  1. 由小类型到大类型的自动转换。
inti=1;          //  4字节
long I = i;     // 8字节
  1. 多种类型变量参与的运算,会产生类型提升。
    ----其中一方为long 类型,结果为long 类型
    ----其中一方为float类型,结果为float类型
    —其中一方为double 类型,结果为double 类型
    —其中一方为decimal类型,结果为decimal类型
    —其余运算结果为int类型
    long result =i+I;

6. 显式转换(由大范围到小范围的强制转换)

有可能造成精度丢失。

int i4 = 100;
byte b4 = (byte)i4;//想转什么括号里面就是什么
//隐式 显式 通常发生在数值之间

//有多种变量参与运算,结果自动向较大的类型提升
byte number1 = 1;
short number2 = 2;
//short result1 = (short)(number1 + number2);
int result1 = number1 + number2;//失败看提示

例子 : 两者相等吗(不相等)

byte b = 250;
b += 3;//快捷运算符,不做自动类型提升
//b = b + 3;异常

注意事项:

  1. 浮点型和 decimal 类型之间不存在隐式转换。
    因此,必须使用显式转换。
  2. 非整形只能显式转换到整形

语句 : 选择语句

代码块与作用域

  1. 在程序中可以使用一对大括号框住一部分代码,被框住的代码区域称之为代码块。
  2. 作用域可以理解为起作用的范围。
  3. 局部变量作用域:从声明开始,到所属 } 结束。

1.if–else语句

:让用户在控制台中输入两个数计算加减乘除
//1.获取数据
Console.WriteLine("请输入第一个数字 :");
string strNumberOne = Console.ReadLine();
float numberOne = float.Parse(strNumberOne);
Console.WriteLine("请输入第二个数字 :");
float numberTwo = float.Parse(Console.ReadLine());
Console.WriteLine("请输入运算符:");
string op = Console.ReadLine();

//2.逻辑处理
float result;
if (op == "+") result = numberOne + numberTwo;
else if (op == "-")
     result = numberOne - numberTwo;
else if (op == "*") result = numberOne * numberTwo;
else if (op == "/") result = numberOne / numberTwo;
else result = 0;

//3.显示结果
if (op == "+" || op == "-" || op == "*" || op == "/")
     Console.WriteLine("结果为" + result);
else Console.WriteLine("运算结果有误");
  1. if可以单独出现,但else不行
  2. 大括号里面如果只有一句话,大括号可以不写
  3. 每 个else总属于前面最近的 if 语句。

2.switch–case语句

//2.逻辑处理
float result;
switch (op)
{
     case "+":
         result = numberOne + numberTwo;
            break;
     case "-":
         result = numberOne - numberTwo;
            break;
     case "*":
         result = numberOne * numberTwo;
            break;
     case "/":
         result = numberOne / numberTwo;
            break;
     efault:
         result = 0;
            break;
}
//3.显示结果
if (op == "+" || op == "-" || op == "*" || op == "/")
      Console.WriteLine("结果为" + result);
else 
      Console.WriteLine("运算结果有误");
  1. switch()中的变量可以是整形、string、bool、char、枚举或相应可以为null的类型,必须有一个定值。
  2. 每个case标签后是常量表达式的值,不必连续,也不必按
    特定顺序排列,但不能相同,否则会出现错误。
  3. default标签可选,意思是其余的结果。
  4. break语句的作用是在case与case之间中断程序。
  5. switch……case与if……else区别:
    都可以用来实现多路分支。
    If eles实现两路、三路分支比较方便,switch……case实现三路以上分支结构更清晰,代码可读性更强。

3.短路逻辑(将简单的逻辑放在前面)

int n1 = 1, n2 = 2;
//false && ?
bool re1 = n1 > n2 && n1++ > 1;
Console.WriteLine(re1);//1

//true && ?
bool re2 = n1 < n2 || n2++ < 1;
Console.WriteLine(re2);//2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值