算数运算符
+,-,*,/,%(求余,取模),++,- -
关系运算符
, <, >=, <=, !=, ==
逻辑运算符
&&(条件与) ,||(条件或) ,!(非) ,
&(逻辑与) ,|(逻辑或)同样是二进制的与、或运算
位运算符
~,&,| 按位进行非,与,或
^(异或)
某个数a和另外一个数异或了两次,等于它本身a
赋值运算符
条件运算符(条件运算符)
表达式?a:b
先计算表达式的结果,结果为真就返回a,结果为假就返回b
运算符的优先级:
一元的优先级高于二级>三级
算术(±)>关系(><)>逻辑()>条件>赋值
用异或进行交换数据:
int a = 3;
int b = 4;
a = a ^ b;//假设a=7
Console.WriteLine("a的值是{0}", a);
b = a ^ b;//=(a^b)^b=a,所以b=3:括号里的a是原始的a(值为3)
Console.WriteLine("b的值是{0}", b);
a = a ^ b;//=a^(a^b)=b:括号里的b是原始b
Console.WriteLine("a的值是{0}", a);
Console.ReadKey();
if语句switch和C语言一样
- 表达式只能是整形,字符型,字符串,枚举型
- 判断值只能是常量,并且数据类型和表达式一致
- • 不是每一个 case 都需要包含 break。如果 case 语句为空,则可以不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
- • C# 不允许从一个开关部分继续执行到下一个开关部分。如果 case 语句中有处理语句,则必须包含 break 或其他跳转语句。
注意和c语言的不同之处,c语言中允许 case中有处理语句同时没有break语句。
switch (表达式)
{
case 判断值1:
语句块1;
break;
case 判断值2:
语句块2;
break;
default:
语句块n;
break;
}
Break:
推出最近的封闭switch、while、do-while、for和forreach语句
Continue:
只用于循环语句。终止本轮循环直接进入下一轮循环。
数组
数组的声明,创建,初始化
数组是多个相同类型数据的组合;
数组类型是由System.Array抽象基类型派生出的引用类型 数据
数组的声明:
int[] nums;//一维数组
string[,] names;//二维数组
float[][] socre;//交错数组
交错数组是由若干个一维数组组成,每个一维数组的维度可以不同
注意在数组声明是不能指定数组的长度,如果声明长度则是非法的
在数组创建时才能指定数组的长度
数组的声明与创建,创建数组的含义就是在内存中给数组分配空间
int[] nums = new int[23];
string[,] s = new string[3, 2];
float[][] s = new float[3][];//交错数组时数组中的数组
交错数组的创建只写出第一个维度,可以表示有几个一维数组
创建数组后我们要知道一下几点:
- 数值数组默认是零
- 字符数默认是null,因为是将字符串所在的内存地址赋给数组(换句话说数组元素是一个一个内存地址)
- 引用类型数组是null
数组初始化
int[] s1 = new int[] { 1, 2, 3, 4 };
float[][] s2 = new float[3][] { { 1, 2, 3.3 }, { 5.6f, 2.0f }, { 1.0f, 3.2f } };
或者直接初始化数组,跳过创建
int[,] s3 = { { 12, 33, 4 }, { 1, 24, 4 } };
每个数组都有一个属性length
foreach是只读式遍历。
foreach (数组元素类型 变量名 in 数组名)
{
循环体;
}
举例:
int[] collection = { 2, 5, 21, 54, 3 };
foreach (int item in collection)
{
Console.WriteLine(item);
}
Console.ReadKey();