c#赋值、类型转换和常量的学习

赋值运算符

算术运算符即完成特定算术运算的符号,C# 中支持的算术运算符如下表所示:(假设变量 A = 10,变量 B = 20)

运算符 描述 实例
+ 加法运算符,对运算符左右两边的操作数执行加法操作 A + B 值为 30
- 减法运算符,对运算符左右两边的操作数执行减法操作 A - B 值为 -10
* 乘法运算符,将运算符左右两边的操作数相乘 A * B 值为 200
/ 除法运算符,使用运算符左边的操作数除以右边的操作数 B / A 值为 2
% 取模运算符,整除后的余数 B % A 值为 0
++ 自增运算符,整数值增加 1 A++ 值为 11
-- 自减运算符,整数值减少 1 A-- 值为 9
```csharp
public static void Main(string[] args)
{
    // += --->先相加运算,然后把相加之后的值赋值给等号左边的变量
    int a = 10;
    a += 3; // 等价与---> a = a + 3;
    Console.WriteLine(a); //13
    // 同理,其他的 *= /= %= 等等原理是一样的
}
```csharp
// 使用复合运算符 可以实现数据类型内部转换
byte a = 150;
byte b = 200; // 0~255
//byte c = (byte)(a + b);
//a += b; // 没有转换
a = (byte)(a + b); // 350
//a += b;
Console.WriteLine(a); //350--->94 整数溢出
// 150--->00000001 01011110
// byte类型八位 保留低8位的二进制数据
// 01011110--->94
``` 

其他运算符

.--->调用符,成员符
()--->小括号符
?:--->三元运算符(三目运算符)
    //三元:需要三个操作数参与运算
    //结构:布尔值?值1:值2;
    //结果选择:如果布尔值为真那就取值1,如果布尔值为假,就取值2
    int a=10;
    int b=20;
Console.WriteLine(a>b?"a>b":"ab?123:3.14;//int类型无法接收
​
*--->指针运算符
sizeof--->关键字  返回数据类型所占字节大小
Console.WriteLine(sizeof(int));
typeof--->关键字 返回指定数据所对应的数据类型(class)
is--->判断当前数据是否属于右边的数据类型。成立结果为true,不成立结果为false
as--->强制类型转换,一般使用在引用数据类型中 注意:即使转换失败也不会抛出异常
    object obj="123";
string str=obj as string;
//值类型不能使用

数据类型转换

分为两种:隐式类型转换和显示类型转换

隐式类型转换

把小范围的数据转换成大范围的数据类型,自动转换,不需要特别语法格式,直接赋值即可完成(不会导致数据丢失)

显示类型转换

把大范围的数据转换成小范围的数据类型,需要强制转换,有一个语法格式(可能会导致数据丢失)

语法格式:小范围的数据类型 变量名1=(小范围的数据类型)变量2

备注:

  • 能够进行类型转换,前提是两者存在包含关系

变量声明与初始化
- `int a = 123;` :声明并初始化一个整型变量 `a` ,值为 `123` 。
- `char c1 = 'A';` :声明并初始化一个字符型变量 `c1` ,值为字符 `'A'` 。
- `double d1 = 3.14;` :声明并初始化一个双精度浮点型变量 `d1` ,值为 `3.14` 。
​
类型转换
 **隐式转换**
long b = a;` :将 `int` 类型的变量 `a` 隐式转换为 `long` 类型并赋值给 `b` 。
int num1 = c1;` :将 `char` 类型的变量 `c1` 隐式转换为 `int` 类型并赋值给 `num1` 。 
 **显式(强制)转换**
byte b2 = (byte) a;` :将 `int` 类型的变量 `a` 显式(强制)转换为 `byte` 类型并赋值给 `b2` 。
int num2 = (int)d1;` :将 `double` 类型的变量 `d1` 显式(强制)转换为 `int` 类型并赋值给 `num2` 

C# 中还提供了一系列内置的类型转换方法,如下表所示:在Convert中

方法 描述
ToBoolean 将类型转换为布尔型
ToByte 将类型转换为字节类型
ToChar 将类型转换为单个 Unicode 字符类型
ToDateTime 将类型(整数或字符串类型)转换为日期时间的结构
ToDecimal 将浮点型或整数类型转换为十进制类型
ToDouble 将类型转换为双精度浮点型
ToInt16 将类型转换为 16 位整数类型
ToInt32 将类型转换为 32 位整数类型
ToInt64 将类型转换为 64 位整数类型
ToSbyte 将类型转换为有符号字节类型
ToSingle 将类型转换为小浮点数类型
ToString 将类型转换为字符串类型
ToType 将类型转换为指定类型
ToUInt16 将类型转换为 16 位无符号整数类型
ToUInt32 将类型转换为 32 位无符号整数类型
ToUInt64 将类型转换为 64 位无符号整数类型
int a=123;
//把a转换成double
//Convert--转换类
double d1=Convert.ToDouble(a);

运算符优先级

通过前面的学习我们知道运算符有不同的类型,当这些不同类型的运算符出现在同一个表达式中时,就必须遵循运算符的优先级来进行运算,才能保证运算的合理性和结果的正确性、唯一性。运算符的优先级决定了表达式中各个部分执行运算的先后顺序。

下表中详细介绍了 C# 中运算符的优先级顺序:c#赋值、类型转换和常量的学习_第1张图片

c#赋值、类型转换和常量的学习_第2张图片

  • 小范围数据与大范围数据运算结果类型:为大范围类型数据

    • int和double运算结果为double

    • char和int运算结果为int

    • float和double运算结果为double

    • bool和double运算报错;

    • string和bool运算报错

    • -string类型数据可和任何其他类型数据做字符串拼接(用“+” )

    • 数据类型在某些场景下会自动升级,范围自动变大,如byte和byte运算结果为int

常量

常量和我们前面介绍的《变量》类似,唯一不同的是常量的值在程序的编译阶段就已经确定了,而且在程序的运行期间不允许修改。常量可以是任何基本数据类型,例如整数常量、浮点常量、字符串常量等等。

不可更改的叫常量,可以更改的叫变量

常量定义

常量指的是在内存中一般不可更改,不能变化的变量,也就是申请内存空间时,值一旦确定就不能再更改

常量需要使用 const 关键字定义,语法格式如下所示:
const数据类型  常量名称=常量值;constant-->常量
    public static void Main(string[] args){
    // 定义一个小数常量
    const int pi=3.14;
    //定义一个整数常量值
    const int salary=10000;
    //定义一个字符串常量
    const string="张三";
}
​
自带的常量(字面常量)

直接在程序当中书写出来的数据

//1.整数常量
     不同的进制表示形式:十进制、二进制、八进制、十六进制
         189:--->正常书写的就是十进制整数
         1234:--->八进制整数
         0x123:--->十六进制
         0b110:--->二进制整数
         后缀表示:30UL:--->U指的是无符号  L-->长整型
  2.浮点常量
         后缀表示:D--->双精度  F-->单精度  M--->高精度
         3.14F//单精度
         2.5D//双精度
         3.1M//高精度常量值
         2.5E-3;--->2.5*^-3=2.5*0.001 科学计数法
 3.字符常量:使用单引号表示的常量值
         '张''A''1''/''&'
         转义字符:'\\''\t''r''\n'
         unicode字符编码:'\u0024'--->'$'
 4.字符串常量
         "abc" "你好" "123"
         前缀表示:@"C:\users"@--->逐字字符串  消除转义字符
                 $"你好{number}":保留{}里的变量的含义
  5.枚举常量 enum  枚举
  6.布尔常量 true/false
  7.null空常量 null为空
int num = 123;// 123 是一个整数常量
double d1 = 3.14;// 3.14 是一个浮点常量
char c1 = '张';// 张 是一个字符常量
string str = "hello";// hello 就是一个字符串常量
Sex sex1 = Sex.男;
bool flag = true;// true就是一个布尔常量
string str = null;// null就是一个空常量
}
enum Sex{男,女} 
//

你可能感兴趣的:(算法,数据结构,c#,c#变量,c#基础,开发语言)