| 最小值 | 最大值 |
sbyte | -128 | 127 |
byte | 0 | 255 |
short | -32768 | 32767 |
ushort | 0 | 65535 |
int | -2147483648 | 2147483647 |
uint | 0 | 4294967295 |
long | -9.22 X 1018 | 9.22 X 1018 |
ulong | 0 | 1.84 X 1019 |
* 变量名称前面有"u" 的,是UNSIGNED的缩写,表示这种类型只能存储正数,不能存储负数。
实数类型
| 最大近似值 | 最小近似值 |
decimal | 1.0 X 10-28 | 7.9 X 1028 |
float | 1.5 X 10-45 | 3.4 X 1038 |
double | 5.0 X 10-324 | 1.7 X 10308 |
字符和布尔
char | 一个Unicode字 符,存储0~65535之间的整数 |
string | 无上限的一组字符(使用可变大小的内存存储) |
bool | true或者false |
字面值
类型 | 类别 | 后缀 | 示例/允 许的值 |
bool | 布尔 | 无 | true或flase |
int,uint,
| 整数 | 无 | 100 |
uint,ulong | 整数 | u 或 U | 100U |
long,ulong | 整数 | l 或 L | 100L |
ulong | 整数 | ul,uL,Ul,UL,
| 100UL |
float | 实数 | f 或 F | 1.5F |
double | 实数 | 无 或 d 或 D | 1.5 |
decimal | 实数 | m 或 M | 1.5M |
char | 字符 | 无 | a',或转义序列 |
string | 字符串 | 无 | "a…a",可 以包含转义序列 |
字符串的字面值(转义序列)
转义序列 | 产生的字符 | 字符的Unicode值 |
\' | 单引号 | 0x0027 |
\" | 双引号 | 0x0022 |
反斜杠 | 0X005C | |
\0 | 空 | 0X0000 |
\a | 警告(产生蜂鸣) | 0X0007 |
\b | 退格 | 0X0008 |
\f | 换页 | 0X000C |
\n | 换行 | 0X000A |
\r | 回车 | 0X000D |
\t | 水平制表符 | 0X0009 |
\v | 垂直制表符 | 0X000B |
· "This\'s A" 等价于 "This\u0027s A"
· 如果双引号字符串中包括换行等字符,可以在整串字符前加入@字符表示
"C:\\TEMP\\MYDIR\\MYFILE.DOC" 可以写成 @"C:\TEMP\MYDOR\MYFILE.DIC"
变量的4种 声明形式:
int xSize,ySize; | int age=25; |
int xSize=4,ySize=5; | int xSize,ySize=5; 此时xSiza仅是声明,并无赋值操作。 |
字符串运算符
运算符 | 类别 | 示例表达式 | 结果 |
+ | 二元 | v1=v2+v3; | V1的值是存储在v2与v3中字符串的连接值 |
数学运算符
运算符 | 类别 | 示例表达式 | 结果 |
+ | 二元 | v1=v2+v3; | V1的值v2与v3的和 |
- | 二元 | v1=v2-v3; | V1的值v2与v3的差 |
* | 二元 | v1=v2*v3; | V1的值v2与v3的乘积 |
/ | 二元 | v1=v2/v3; | V1的值v2除 以v3的值 |
% | 二元 | v1=v2%v3; | V1的值v2除 以v3的余数 |
+ | 一元 | v1=+v2; | V1的值等于v2的 值 * |
- | 一元 | v1=-v2; | V1的值等于v2的 值乘以-1 |
| |||
++ | 一元 | v1=++v2; | V1的值是v2+1,v2递增1 |
-- | 一元 | v1=--v2; | V1的值是v2-1,v2递减1 |
++ | 一元 | v1=v2++; | V1的值是v2,v2递增1 |
-- | 一元 | v1=v2--; | V1的值是v2,v2递减1 |
· ++ 总是使操作数加1; --总是使操作数减1
· 运算符在操作数前面,则操作数先计算,再赋值;
运算符在操作数后面,则是操作数先赋值,再计算。
赋值运算符
运算符 | 类别 | 示例表达式 | 结果 |
= | 二元 | v1=v2; | v1被赋值v2的 值 |
+= | 二元 | v1+=v2; | v1被赋值v1与v2的和 |
-= | 二元 | v1-=v2; | v1被赋值v1与v2的差 |
*= | 二元 | v1*=v2; | v1被赋值v1与v2的乘积 |
/= | 二元 | v1/=v2; | v1被赋值v1除 以v2的值 |
%= | 二元 | v1%=v2; | v1被赋值v1除 以v2的余数 |
·*= 也可以用与字符串,同+运算符
布尔逻辑运算
运算符 | 类别 | 示例表达式 | 结果 |
== | 二元 | v1=v2==v3; | 若v2等 于v3,v1为true,否则v1为false |
!= | 二元 | v1=v2!=v3; | 若v2不 等于v3,v1为true,否则v1为false |
< | 二元 | v1=v2 | 若v2小 于v3,v1为true,否则v1为false |
> | 二元 | v1=v2>v3; | 若v2大 于v3,v1为true,否则v1为false |
<= | 二元 | v1=v2<=v3; | 若v2小于或等于v3,v1为true, 否则v1为false |
>= | 二元 | v1=v2>=v3; | 若v2大于或等于v3,v1为true, 否则v1为false |
| |||
! | 二元 | v1=!v2; | 逻辑非,(v1是v2的相反值,取反) |
& | 二元 | v1=v2&v3; | 逻辑与,(若v2和v3都为true,v1的值为true,否则为false) |
| | 二元 | v1=v2|v3; | 逻辑或,(若v2或v3至少有一个为true,v1的值为true,否则为false) |
^ | 二元 | v1=v2^v3; | 逻辑异或,(若v2或v3有且只有一个为true,v1的值为true,否则为false) |
| |||
&& | 二元 | v1=v2&&v3; | 结果同&运算 |
|| | 二元 | v1=v2||v3; | 结果同|运算 |
·&&和||存在的必要性:
1) 性能比&和|要好,因为&&和||仅检查第一个操作数的值,如果第一个已经为false, 那么&&的结果必然是fasle而 不必检查第二个操作数的值;同理如果第一个已经为true,那么||的结果必然是true。
2) 可以避免一些复杂计算的错误,因为&和|要计算全部的操作数的值。例如:
v1= (v2 !=0 ) &(v3 / v2 > 2);
如果v2的 值为0,则v3/v2将会产生"除0错误",导致整个表达式的错误。
位操作
位1 | 位2 | &结果 | |结果 | ^结果 | ~(取反位)【位1】 结果 |
1 | 1 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 1 | 1 |
0 | 0 | 0 | 0 | 0 | 1 |
左、右移位操作
运算符 | 类别 | 示例表达式 | 结果 |
>> | 二元 | v1=v2>>v3; | 把v2的 二进制值向右移动v3位(空出位置补0), 得到v1的值。 |
int v1,v2=10; v1=v2>>1; 10二进制为1010, 右移1位后为101,结果为5 | |||
<< | 二元 | v1=v2< | 把v2的 二进制值向左移动v3位(空出位置补0), 得到v1的值。 |
int v1,v2=10; v1=v2>>2; 10二进制为1010, 左移2位后为101000,结果为40 |
·实际 上,每向左移动一位,该书要乘以2;每向右移动一位,则是操作数除以2并丢掉余数。
布尔赋值运算符
运算符 | 类别 | 示例表达式 | 结果 |
&= | 二元 | v1 &= v2; | v1的值是v1与v2逻辑与的结果 |
|= | 二元 | v1 |= v2; | v1的值是v1与v2逻辑或的结果 |
^= | 二元 | v1 ^= v2; | v1的值是v1与v2逻辑异或的结果 |
| |||
>>= | 一元 | v1 >>= v2; | 把v1的二进制值向右移动v2位,得到v1新值 |
<<= | 一元 | v1 <<= v2; | 把v1的二进制值向左移动v2位,空出的位补0,得到v1新值 |
运算符优先级
优先级 | 运算符 |
高 | | | | | | 低 | ++,--(用作前缀,如v1= ++v2;),(),+,-(一元),!,~ |
*,/,% | |
+,- | |
<<,>> | |
<,>,<=,>= | |
==,!= | |
& | |
^ | |
| | |
&& | |
|| | |
=,*=,/=,%=,+=,-=,<<=,>>=,&=,^=,|= | |
++,--(用作后缀,如v1=v2++;) |
没有评论:
发表评论