2.1 C#中的基本数据类型

C#中变量的数据类型分为:值类型、引用类型、指针类型。

C#中值类型分为以下:

整型:

byte、int 、short 、long

byte的范围 0-255 1字节

short的范围 -32768 ---32767 2字节

int的范围 -2147483648 -- 2147483647 4字节

long的范围 -910^18 --- 910^18 8字节

浮点型:

float -3.4x 10^38 ~ + 3.4 x 10^38 4个字节单精度 有精度损耗 0.0F 精确到小数点后大约7位 double (+/-)5.0 x 10-324 ~ (+/-)1.7 x 10308 8个字节双精度 有精度损耗 0.0D 精确到小数点后大约15~16位

十进制:

decimal(精确) ±1.0 × 10^-28 到 ±7.9 × 10^28 16个字节 无损耗 0.0M 有效位数28位

布尔类型:

bool (true、false)

字符类型:

char 只能包含一个字符 ,‘\0’表示空字符

可空类型(只能是值类型可空 如:int?表示可空int):

Nullable<T> 基础值类型正常范围内的值,再加上一个 null 值。

枚举(值类型):

enum 一组命名整型常量,用 enum 关键字声明的

结构体:

struct 值类型数据结构

// 整型
int a = 1;
long longNum = 12345;
byte b1 = 256;  //超范围,错误
​
// 浮点类型
// 不确定类型的时候可以使用var(自匹配)声明变量,他可以根据值来推导变量的类型
var money = 2.3; // 当有小数的时候默认是double类型
float f1 = 3.45f;// 如果想要声明单精度类型,需要在小数后面加f或者F
double d2 = 23.56D;// double 不带后缀也可带:D或d
decimal de1 = 2.3m;// decimal 带后缀 M   m
​
Console.WriteLine(sizeof(decimal)); // 查看decimal类型分配的内存
​
// 可空类型:注意,C#中的可空类型只能是值类型
// Nullable<T>   int?   float?  double?   Nullable<int>
// int c = null;//不可运行  引用类型   null
int? c = null;//可以运行 
​
// bool类型,值为true或者false
bool bl = false;
​
// char类型
char a = 'a';

2.2 字符串类型

字符串类型: 由一个或多个字符构成的一组字符,string类型是System.String类的别名。它是从object类型派生的。string类型的值可以通过两种形式进行分配:引号和@引号。

注意:C#中字符串类型是引用类型。

如:string ss=”liming” 或 ss=@“liming”

@将转义字符(\)当作普通字符对待

@字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内。

string ss = "\r\nliming";
ss = @"\r\nliming2";
Console.WriteLine(ss);  
​
// ss="" 或string.empty  会分别空间 长度0   null 不会分配空间
string ss2 = "", ss3 = string.Empty, ss4 = null;
Console.ReadLine();

转义字符:

// 转义符指的就是一个''+一个特殊的字符,组成了一个具有特殊意义的字符。
\n:表示换行
":表示一个英文半角的双引号
\t:表示一个tab键的空格
\b:表示一个退格键,放到字符串的两边没有效果。
\r\n:windows操作系统不认识\n,只认识\r\n
\:表示一个\

2.3 算数运算符

算术运算符:+ - * / %(取余数 取模)

算术表达式:由算术运算符连接起来的式子,如:1+1 a-b(变量ab前面已声明并赋初值)

演示: 某学生三门课成绩为,语文:90 数学:80 英语:67,编程求总分和平均分.

优先级: 先乘除、后加减、有括号先算括号里的、相同级别的从左至右运算 int a=((1+5)+3)*2

小括号可以无限制的套用,但一定要成对出现。

注意:这边的+ - 也可以表示正负运算符

2.4 赋值运算符

++   自加1      有前加和后加
--   自减1      有前减和后减
​
+=   -=    *=   /=    %=
​
对于像++ -- 这样的只需要一个操作数就能进行运算的运算符,我们叫做一元运算符
对于+-*/%=都需要两个操作数才能进行运算的这些运算符,我们叫做二元运算符
​
PS:一元运算符++/--比二元的+-优先级高

2.5 关系运算符

>   <
==  !=
>=  <=
int a = 10;
int b =10;
​
Console.WriteLine(a!=b);

2.6 逻辑运算符 &&(逻辑与) ||(逻辑或) !(逻辑非)

  • 表达式1&&表达式2
表达式1表达式2表达式1&&表达式2
TrueTrueTrue
FalseTrueFalse
TrueFalseFalse
FalseFalsefalse
  • 表达式1||表达式2
表达式1表达式2表达式1 ll 表达式2
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalsefalse
  • !表达式
表达式!表达式
TrueFalse
Falsetrue

逻辑运算符的短路效果

C#中的逻辑运算符具有短路效果。这意味着当表达式中的一个操作数已经确定了表达式的值时,就不再计算表达式的其他部分。

例如,考虑以下代码:

int x = 10; 
int y = 5;
​if (x > 5 && y < 10) 
{ 
    Console.WriteLine("哈哈哈哈哈"); 
}

​ 在这个代码中,如果x不大于5,则表达式(x > 5 && y < 10)的值将是false,无需计算y < 10。这是因为在逻辑与运算符中,如果左操作数为false,则整个表达式的结果将为false。这个过程被称为“短路”,因为表达式在遇到第一个false值时就“短路”了。 ​ 同样地,对于逻辑或运算符,如果左操作数为true,则整个表达式的结果将是true,无需计算右操作数。这种情况下也会发生短路。 ​ 短路效果可以在编写C#代码时提高性能,因为不必计算表达式的所有部分,从而节省了计算资源。

2.7 位运算符

^、& 和 | 运算符是位运算符,用于对二进制数进行按位操作。这些运算符可以对每个二进制位进行逻辑运算,执行异或、按位与和按位或等操作。

  • ^ 运算符:异或运算符。当两个二进制位不同时,结果为 1,否则结果为 0。例如,二进制数 1010 ^ 0110 的结果为 1100。
  • & 运算符:按位与运算符。当两个二进制位都为 1 时,结果为 1,否则结果为 0。例如,二进制数 1010 & 0110 的结果为 0010。
  • | 运算符:按位或运算符。当两个二进制位至少有一个为 1 时,结果为 1,否则结果为 0。例如,二进制数 1010 | 0110 的结果为 1110。
  • ~ 运算符是按位取反运算符,用于将一个二进制数的每个位取反,即将 0 变为 1,将 1 变为 0。它的作用相当于将整数的二进制位进行取反操作。

    int a = 10; // 二进制数为 0000 1010
    int b = ~a; // b 的值为 -11(二进制数为 1111 0101)

这些运算符通常用于处理底层的位操作,例如处理网络协议、图形处理、加密和解密等。在 C# 中,可以使用它们来设置、清除或测试二进制位。例如,可以使用 & 运算符来测试一个字节中的某个位是否为 1,使用 | 运算符来将某个位设置为 1,使用 ^ 运算符来切换某个位的值等。

2.8 左移和右移运算符

左移和右移运算符是位运算符,也称为移位运算符。它们可以对二进制数进行按位移位操作。下面分别介绍一下这两个运算符的作用:

  • << 运算符:左移运算符。将一个二进制数向左移动指定的位数,相当于在其末尾添加指定数量的零。例如,二进制数 1010 左移 2 位的结果为 101000。
  • >>运算符:右移运算符。将一个二进制数向右移动指定的位数,相当于将其末尾的指定数量的位数删除。例如,二进制数 1010 右移 2 位的结果为 10。

    int a = 10; // 二进制数为 1010
    int b = a << 2; // b 的值为 40,二进制数为 101000
    int c = a >> 1; // c 的值为 5,二进制数为 101

2.9 运算符的优先级

1680746888779.png


L_Twilight_夕暮
1 声望0 粉丝