2008年12月30日星期二

【C#】 C, JAVA 中的字面值

技术辞典:字面值
术语解释:整数、浮点数或字符值的基本表示。例如:3.0表示一个单精度浮点数 的字面值,"a"表示一个字符的字面值。

C++中字面值常量是什么?

常量就相当于1,2,3
变量就是,a,b,c
可以有a=3,a=4;
但不能有1=2,1=3,这样的语句.
const a=2;
这时候a和2的性质一样任何地方都不能更改.这就是"字面值常量"

2008年8月7日星期四

【C#】初级C#学习笔记(1)


整数类型

最小值

最大值

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

布尔

trueflase

int,uint,
long,ulong

整数

100

uint,ulong

整数

u U

100U

long,ulong

整数

l L

100L

ulong

整数

ul,uL,Ul,UL,
lu,lU,Lu,LU

100UL

float

实数

f F

1.5F

double

实数

d D

1.5

decimal

实数

m M

1.5M

char

字符

a',或转义序列

string

字符串

"aa", 以包含转义序列

字符串的字面值(转义序列)

转义序列

产生的字符

字符的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的值是存储在v2v3中字符串的连接值

数学运算符

运算符

类别

示例表达式

结果

+

二元

v1=v2+v3;

V1的值v2v3的和

-

二元

v1=v2-v3;

V1的值v2v3的差

*

二元

v1=v2*v3;

V1的值v2v3的乘积

/

二元

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+1v2递增1

--

一元

v1=--v2;

V1的值是v2-1v2递减1

++

一元

v1=v2++;

V1的值是v2v2递增1

--

一元

v1=v2--;

V1的值是v2v2递减1

· ++ 总是使操作数加1 --总是使操作数减1

· 运算符在操作数前面,则操作数先计算,再赋值;

运算符在操作数后面,则是操作数先赋值,再计算。

赋值运算符

运算符

类别

示例表达式

结果

=

二元

v1=v2;

v1被赋值v2

+=

二元

v1+=v2;

v1被赋值v1v2的和

-=

二元

v1-=v2;

v1被赋值v1v2的差

*=

二元

v1*=v2;

v1被赋值v1v2的乘积

/=

二元

v1/=v2;

v1被赋值v1 v2的值

%=

二元

v1%=v2;

v1被赋值v1 v2的余数

·*= 也可以用与字符串,同+运算符

布尔逻辑运算

运算符

类别

示例表达式

结果

==

二元

v1=v2==v3;

v2 v3v1true,否则v1false

!=

二元

v1=v2!=v3;

v2 等于v3v1true,否则v1false

<

二元

v1=v2

v2 v3v1true,否则v1false

>

二元

v1=v2>v3;

v2 v3v1true,否则v1false

<=

二元

v1=v2<=v3;

v2小于或等于v3v1true 否则v1false

>=

二元

v1=v2>=v3;

v2大于或等于v3v1true 否则v1false

!

二元

v1=!v2;

逻辑非,(v1v2的相反值,取反)

&

二元

v1=v2&v3;

逻辑与,(若v2v3都为truev1的值为true,否则为false

|

二元

v1=v2|v3;

逻辑或,(若v2v3至少有一个为truev1的值为true,否则为false

^

二元

v1=v2^v3;

逻辑异或,(若v2v3有且只有一个为truev1的值为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 v1v2=10; v1=v2>>1;

10二进制为1010 右移1位后为101,结果为5

<<

二元

v1=v2<

v2 二进制值向左移动v3位(空出位置补0), 得到v1的值。

int v1v2=10; v1=v2>>2;

10二进制为1010 左移2位后为101000,结果为40

·实际 上,每向左移动一位,该书要乘以2;每向右移动一位,则是操作数除以2并丢掉余数。

布尔赋值运算符

运算符

类别

示例表达式

结果

&=

二元

v1 &= v2;

v1的值是v1v2逻辑与的结果

|=

二元

v1 |= v2;

v1的值是v1v2逻辑或的结果

^=

二元

v1 ^= v2;

v1的值是v1v2逻辑异或的结果

>>=

一元

v1 >>= v2;

v1的二进制值向右移动v2位,得到v1新值

<<=

一元

v1 <<= v2;

v1的二进制值向左移动v2位,空出的位补0,得到v1新值

运算符优先级

优先级

运算符

|

|

|

|

|

|

++,--(用作前缀,如v1= ++v2;,(),+,-(一元),!,~

*,/,%

+,-

<<,>>

<,>,<=,>=

==,!=

&

^

|

&&

||

=,*=,/=,%=,+=,-=,<<=,>>=,&=,^=,|=

++,--(用作后缀,如v1=v2++;