博客 / 詳情

返回

C#小白(基礎篇)2 (值類型、字符串類型、算數運算符、賦值運算符、關係運算符 等)

 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
True True True
False True False
True False False
False False false
  • 表達式1||表達式2
表達式1 表達式2 表達式1 ll 表達式2
True True True
True False True
False True True
False False false
  • !表達式
表達式 !表達式
True False
False true

邏輯運算符的短路效果

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

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.