一、表达式
表达式:表达式是指由操作数和运算符组成的用于完成某种运算功能的语句。
例如:
y = x*(z+100)
上述就是一个表达式。
二、运算符
(1)算数运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。
表格中的实例假设整数变量A的值为10,变量B的值为20:
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | A + B 等于 30 |
- | 减法 - 左操作数减去右操作数 | A – B 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取余 - 左操作数除以右操作数的余数 | B%A等于0 |
++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21(区别详见下文) |
-- | 自减: 操作数的值减少1 | B-- 或 --B 等于 19(区别详见下文) |
其中+运算符,除了数学运算,还可以进行数据的拼接,例如:
int a = 10;
string b = "10";
Console.WriteLine(a+b); //此处不进行数学运算,进行拼接,结果将打印1010
两个相同的数据类型进行运算,结果一定还是这个数据类型,所以两个数相除没有小数部分,例如:
int a = 5;
int b = 2;
Console.WriteLine(a/b); //将打印结果2
不同的数据类型运算,结果为范围大的数据类型
double a = 5;
int b = 2;
Console.WriteLine(a/b); //将打印结果2.5
自增++运算符和自减--运算符,符号写在前面和后面的区别如下:
++在前,先自增,在运算; ++在后,先运算,在自增 (--运算符同理)
int a = 10;
++a; //或者a++,执行结果一样
Console.WriteLine(a); //打印11
int a = 10;
int b = a++;
Console.WriteLine(a); //打印结果11
Console.WriteLine(b); //打印结果10
int a = 10;
int b = ++a;
Console.WriteLine(a); //打印结果11
Console.WriteLine(b); //打印结果11
(2)赋值运算符
操作符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A,C 与 A 同类型时等价于 C = C / A |
%= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
例如:
int a = 1; //正确
// =赋值运算符左边只能是变量,不能是数据常量。
1 = a; //错误
a + 1 = 2; //错误
int a = 10;
int b = 5;
a += b; // 等价 a = a + b;
Console.WriteLine(a); //打印15
Console.WriteLine(b); //打印5
(3)关系运算符
表格中的实例整数变量A的值为10,变量B的值为20:
运算符 | 描述 | 例子 |
---|---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真。 |
=与==的区别:
int a = 10;
int b = 10;
Console.WriteLine(a = b); //=代表赋值,把b的值赋给a,然后打印a的值10
Console.WriteLine(a == b); //==代表比较两者是否相等,打印true.
(4)逻辑运算符
下表列出了逻辑运算符的基本运算,假设布尔变量A为true,变量B为false
操作符 | 描述 | 例子 |
---|---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
例如:
int a = 20;
int b = 500;
Console.WriteLine(a > b && a > 0); //打印false
Console.WriteLine(a > b || a > 0); //打印true
Console.WriteLine(!(a > b || a > 0)); //打印false
(5)三目运算符
该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
条件表达式 ?结果1 :结果2 (表达式成立,执行结果1,否则执行结果2),例如:
int a = 10;
int b = 20;
int c = a > b ? a : b;
Console.WriteLine(c); //此处打印20
三、数据类型转换
在C#语言中,不同类型的数据在进行混合运算时需要进行类型转换,即将不同类型的数据转换为同种类型的数据后再进行计算,针对于值类型的数据,类型转换主要包括隐式转换和显式转换两种形式。
- 隐式转换:系统默认的、无须显式声明即可进行的转换。
- 显式转换:要求一定要将某一类型的数据转换为另外一种类型,则可以使用强制类型转换运算符进行转换,这种强制转换的过程称为显式转换。
(1)隐式转换举例
//将int类型自动转换成long类型
int a = 10;
long b = a;
//将int类型自动转换成double类型
int a = 10;
double b = a;
隐式转换是从低精度、小范围的数据类型转换为高精度、大范围的数据类型,如下:
源类型 | 目标类型 |
---|---|
char | int、long、float、double |
short | int、long、float、double |
int | long、float、double |
long | float、double |
float | double |
注意:char类型不能通过隐式转换转换为short类型。
(2)显式转换举例
double a = 1.2;
int b = (int)a; //将int类型转换为double类型,会直接忽略掉小数部分。
数据类型转换的不兼容性:
- 数字和布尔不能类型转换
- 字符和布尔不能类型转换
- 字符转数字可以自动转换,数字转字符只能强制转换
- 字符和数字相互转换的时候使用ASCII编码来进行转换
(3)字符和数字之间的转换(通过ASCII码转换)
字符转数字:
char myChar = 'A';
int myNum = myChar;
Console.WriteLine(myNum);
数字转字符:
int myNum = 65;
char myChar = (char)myNum;
Console.WriteLine(myChar);
(4)字符和字符串的特殊关系
字符串等于字符数组:
string str = "hello";
char myChar = str[0];
Console.WriteLine(myChar); //此处可以打印数组第一个元素内容h
(5)值类型和字符串类型的相互转换
值类型(普通类型)转成字符串:
int a = 10;
//string str = a+""; //可以通过+来进行转换
string str = a.ToString(); //通常使用ToString方法进行转换
double PI = 3.1415926;
string str = PI.ToString("F2");
Console.WriteLine(str);
ToString()可以直接转换成字符串,也可以格式化字符串,如下:
格式 | 格式化字符串 | 结果 |
---|---|---|
货币 | 2.5.ToString("C") | ¥2.50 |
十进制数 | 25.ToString("D5") | 00025 |
固定点 | 25.ToString("F2") | 25.00 |
常规 | 2.5.ToString("G") | 2.5 |
数字 | 2500000.ToString("N") | 2,500,000.00 |
百分比 | 0.126.ToString(“P”) | 12.6% |
字符串转值类型(普通类型):
string str = "12";
int a = int.Parse(str);
Console.WriteLine(a);
可以通过数据类型的Parse方法进行字符串转换成值类型。
网友评论