一.基础类型
别名属于System类,例如System.SByte,表格中System已省略
其中,赋值时二进制简写0b,八进制简写0,十六进制简写0x
类型 | 别名 | 允许的值 | 大小(bit) |
---|---|---|---|
sbyte | SByte | -128~127 | 8 |
byte | Byte | 0~255 | 8 |
short | Int16 | -32768~32767 | 16 |
ushort | UInt16 | 0~65525 | 16 |
int | Int32 | -2147483648~2147483647 | 32 |
uint | UInt32 | 0~4294967295 | 32 |
long | Int64 | 升级解锁 | 64 |
ulong | UInt64 | ??? | 64 |
从数据中可以看出,float的最大值虽然可以到3.410^38,但因为底数只有24位,所以在十进制的数的表示中,最高只有8位,到16777216,所以当整数部分超过一定位数时,精度就很难确保,如果整数部分有4位,那么在十进制中精度甚至不能达到5位。相比之下,double大大改进了这个缺点。相比之下,可以看出decimal的指数部分虽然只有-26~0短短的几位,但是其一表示的十以内数对十进制的移位(貌似?),其二由于底数96位的数量,精度可以确保大约28位的精度。(2^96=7.9228...10^28)
类型 | 别名 | m的最小值 | m的最大值 | e的最小值 | e的最大值 | 近似的最小值 | 近似的最大值 |
---|---|---|---|---|---|---|---|
float | Singe | 0 | 2^24 | -149 | 104 | 1.5*10^-45 | 3.4*10^38 |
double | Double | 0 | 2^53 | -1075 | 970 | 5.0*10^-324 | 1.7*10^308 |
decimal | Decimal | 0 | 2^96 | -26 | 0 | 1.0*10^-28 | 7.9*10^28 |
bool值在C#里不等于整数值,且在需要用bool值进行判断时,不可以用其它类型的值代替判断(C里可以)。
类型 | 别名 | 允许的值 |
---|---|---|
char | Char | 一个Unicode字符,存储0~65535 |
bool | Boolean | true或false |
string | String | 一组字符(字符串) |
二.算术运算符
假设A=10,B=20
python中‘%’为取模,(float)A/B=C,A%B等价于A-C(C经过趋近后)*B。取余C总向0趋近,取模C总向无穷小处趋近,如-27%10,C=-2.7,取余C=-2,取模C=-3。-27%10=-7(取余),-27%10=3(取模)
运算符 | 描述 | 实例 |
---|---|---|
+ | 数学+ | A+B=30 |
- | 数学- | A-B=-10 |
* | 数学* | A*B=200 |
/ | 两边整数‘/’号是整除,得出除数只取整数部分 | 28/10=2,-38/10=-3 |
% | %取余 A%B等价于A-A/B*B(/是整除) | 21%10=1,-27%10=-7 |
++ | 自加 a++=先赋值在增加 ++a=先自增再赋值 | A++等同A=A+1为21 |
-- | 自减 规律同上 | A--等同于A=A-1为19 |
<<=和>>=经测试C#中只能用于int型,且位不足时并非标准补位0,有待测试。或符号为制表符‘|’,表中用汉文字代替。
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值符号,将右边的值赋给左边变量 | a=5 |
+= | a+=3等价于a=a+3 | a+=3 |
-= | 同上 | a-=3 |
*= | 同上 | a*=3 |
/= | 同上 | a/=3 |
%= | 同上 | a%=3 |
<<= | 同上,位左移,常用于乘2 | a<<=2等价于a*4 |
>>= | 同上,位右移,常用于除2 | a>>=2等价于a/4 |
&= | 同上,1&1=1,0&1=1,1&0=1,0&0=0 | 0&a=0,全1&a=a |
^= | 同上,1^1=0,1^0=1,0^1=1,0^0=0 | 0^a=a,全1^a=a取反 |
或= | 同上,1或1=1,1或0=1,0或1=1,0或0=0 | 0或a=a,全1或a=全1 |
三.关系运算符
运算符 | 描述 | 实例 |
---|---|---|
== | 两边数值相等为真 | a==b |
!= | 两边数值不等为真 | a!=b |
> | 左边大于右边为真 | a>b |
< | 左边小于右边为真 | a<b |
>= | 左边大于等于右边为真 | a>=b |
<= | 左边小于等于右边为真 | a<=b |
四.逻辑运算符
逻辑或为"||",与制表符冲突
运算符 | 描述 | 实例 |
---|---|---|
&& | 左右两边皆为真值,左&&右的值为真 | true&&false |
逻辑或,俩竖线 | 左右两边有一值为真值,左逻辑或右为真 | true逻辑或false |
! | !真即假,!假即真 | !true |
五.其它
三目运算符 a>b?a:b,若a>b为真,整个式子返回a值,若为假,整个式子返回b值。
位运算符包括&,|,^,~,其中三个在算数运算符那里已经说明特性。
取反运算符特性:~1=0,~0=1。在n位数字上,~0=n位1,~n位1=0。
其中位运算可能会更改数字的符号位,因此得出的数学逻辑结果和实际编码方式有关。C#中采用的是标准补码存储,即负数为正数反码加1,经过测试得出一个固有规律,~a+a=-1,取反正数为-(正数-1),取反负数为-(负数+1),~0=-1,~-1=0。但当以无符号整数方式打印时,得出规律则为,~a+a=n位1代表的十进制数(2的n次方-1)。