文章目录
- 变量
- 变量定义
- 命名规则
- 作用域和生命周期
- 常量
- 特殊字符常量
- 运算符
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 其他运算符
变量
变量就是一个存储空间的名字,变量是什么类型,这个空间里面存储的就是什么类型的数据。
变量定义
<data_type> <variable_list>
data_type代表C#中的一个数据类型,variable_list是一个或多个变量,多个变量之间要用逗号分开。
命名规则
变量名可以包含字母、数字和下划线;
变量名必须以字母或者下划线开头,不能用数字作为开头;
变量名区分大小写;
不能使用C#中的关键字作为变量名。
作用域和生命周期
局部变量的的作用域和生命周期在其所处的代码块内,出了代码块作用域和生周期结束;
全局变量的生命周期随着整个程序的结束而结束
局部变量和全局变量冲突时,局部优先。
常量
常量是不可被修改的数据,它可以是任何一种基本的数据类型。
特殊字符常量
转义序列 | 含义 |
\\ | \字符 |
\' | '字符 |
\" | "字符 |
\? | ?字符 |
\a | Alert或者bell |
\b | 退格键 |
\f | 换页字符 |
\n | 换行字符 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ooo | 一到三位的八进制数 |
\xhhh... | 一个或多个十六进制数 |
运算符
算术运算符
运算符 | 描述 |
+ | 把两操作数相加 |
- | 把两操作数相见 |
* | 把两操作数相乘 |
/ | 把两操作数相除 |
% | 取模运算符,两数进行整除,取整除之后的余数 |
++ | 自增运算符,操作数自加1。前置++先++在使用,后置++先使用在++ |
-- | 自减运算符,操作数自减1,前置--先--在使用,后置--先使用在-- |
namespace Operator
{class Program{static void Main(string[] args){int x = 13;int y = 3;Console.WriteLine("x + y: {0}", x + y);Console.WriteLine("x - y: {0}", x - y);Console.WriteLine("x * y: {0}", x * y);Console.WriteLine("x / y: {0}", x / y);Console.WriteLine("x % y: {0}", x % y);Console.WriteLine("x++: {0}", x++);Console.WriteLine("++x: {0}", ++x);Console.WriteLine("y++: {0}", y++);Console.WriteLine("++y: {0}", ++y);}}
}
关系运算符
运算符 | 描述 |
== | 判断左右两操作数是否相等,并返回结果。这里容易写成赋值运算符=,所以可以将常量写在左侧,因为常量不能做左值,这样编译器会提示报错 |
!= | 判断左右两操作数是否不等,并返回结果。 |
> | 判断左操作数是否大于右操作数,并返回结果 |
< | 判断左操作数是否小于右操作数,并返回结果 |
>= | 判断做操作数是否大于等于右操作数,并返回结果 |
<= | 判断做操作数是否小于等于右操作数,并返回结果 |
namespace Operator
{class Program{static void Main(string[] args){int x = 13;int y = 3;Console.WriteLine("x == y is {0}", x == y);Console.WriteLine("x != y is {0}", x != y);Console.WriteLine("x > y is {0}", x > y);Console.WriteLine("x < y is {0}", x < y);Console.WriteLine("x >= y is {0}", x >= y);Console.WriteLine("x <= y is {0}", x <= y);}}
}
逻辑运算符
运算符 | 描述 |
&& | 逻辑与,全真为真 |
|| | 逻辑或,有真为真 |
! | 逻辑非,非真为真 |
namespace Operator
{class Program{static void Main(string[] args){bool T = true;bool F = false;Console.WriteLine("T && F is {0}", T && F);Console.WriteLine("T || F is {0}", T || F);Console.WriteLine("!T is {0}", !T);Console.WriteLine("!F is {0}", !F);}}
}
位运算符
运算符 | 描述 |
& | 按位与运算符,全1为1,有0为0 |
| | 按位或运算符,有1为1,全0为0 |
^ | 按位异或运算符,相同为0,不同为1 |
~ | 按位取反运算符,变0为1,变1为0 |
<< | 左移运算符,向左移动操作数的指定位数,在末尾添0 |
>> | 右移运算符,向右移动操作数的指定位数,有符号数在首位添符号位,无符号数添0 |
namespace Operator
{class Program{static void Main(string[] args){int a = 61; //0000 0000 0011 1101int b = 50; //0000 0000 0011 0010Console.WriteLine("a & b = {0}", a & b); // 0011 0000Console.WriteLine("a | b = {0}", a | b); // 0011 1111Console.WriteLine("a ^ b = {0}", a ^ b); // 0000 1111Console.WriteLine("~a = {0}", ~a); //1111 1111 1100 0010 ->1111 1111 1100 0001 ->1000 0000 0011 1110Console.WriteLine("b << 2 = {0}", b << 2); // 0000 0000 1100 0100Console.WriteLine("b >> 2 = {0}", b >> 2); // 0000 1100}}
}
这里涉及到一个原反补的概念。
赋值运算符
运算符 | 描述 |
= | 赋值运算符,右边的值赋给左边 |
+= | 左右操作数相加之后的值付给左操作数 |
-= | 左操作数减去右操作数,并将值赋给左操作数 |
*= | 左操作数乘上右操作数,并将值赋给左操作数 |
/= | 左操作数除去右操作数,并将值赋给左操作数 |
%= | 左操作数模右操作数,并将值赋给左操作数 |
<<= | 左操作数左移右操作数位,并将结果赋值给左操作数 |
>>= | 左操作数右移左操作数位,并将结果赋值给左操作数 |
&= | 按位与并赋值 |
|= | 按位或并赋值 |
^= | 按位异或并赋值 |
namespace Operator
{class Program{static void Main(string[] args){int a = 61;int b = 50;int c = 0;c = b;Console.WriteLine("c = {0}", c);c += b;Console.WriteLine("c = {0}", c);c -= b;Console.WriteLine("c = {0}", c);c *= a;Console.WriteLine("c = {0}", c);c /= a;Console.WriteLine("c = {0}", c);c %= a;Console.WriteLine("c = {0}", c);c <<= 2;Console.WriteLine("c = {0}", c);c >>= 2;Console.WriteLine("c = {0}", c);c &= a;Console.WriteLine("c = {0}", c);c |= b;Console.WriteLine("c = {0}", c);c ^= a;Console.WriteLine("c = {0}", c);}}
}
其他运算符
运算符 | 描述 |
sizeof() | 返回数据类型大小 |
typeof() | 返回class的类型 |
& | 取地址,返回变量地址 |
* | 解引用,*指针返回指针指向变量的值 |
? : | 条件表达式,条件语句?条件语句为真执行这条语句:条件语句为假执行这条语句 |
is | 判断对象是否是某一类型 |
as | 强制转换,即使转换失败也不会抛出异常 |
typeof() | 返回class的类型 |
& | 取地址,返回变量地址 |
* | 解引用,*指针返回指针指向变量的值 |
? : | 条件表达式,条件语句?条件语句为真执行这条语句:条件语句为假执行这条语句 |
is | 判断对象是否是某一类型 |
as | 强制转换,即使转换失败也不会抛出异常 |