设为首页收藏本站【c#】第二章(2) 运算符与表达式
繁体中文

单小喏中文网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

单小喏中文网欢迎你的光临!!!
查看: 1271590|回复: 0

【c#】第二章(2) 运算符与表达式

[复制链接]

85

主题

89

帖子

1246

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1246

来自- 安徽合肥

扫一扫,手机访问本帖
发表于 2014-3-23 21:53:47 | 显示全部楼层 |阅读模式
运算符与表达式
使用变量,以最简单数学运算为例,可以实现一些我们想要的逻辑运算结果,比如
[C#] 纯文本查看 复制代码
int i = 1;
int j = 2;
int sum= i + j;


与+号类似,数值型还有一些其他的运算符
-、*、/、%(取余数)、++、--、+=、-=、*=、/=、%=,例如
[C#] 纯文本查看 复制代码
 int i = 5;
//i++;//或者++i;  无论是++i还是i++,相当于i=i+1;
Console.Write(++i);//在++过程如果有输出,++再后,先输出值再+1;++再前,那先+1,再输出
Console.Write(i);//输出始终是6
int i = 2;
i += 3;//相当于i=i+3
Console.Write(i);


字符串类型运算符 +
[C#] 纯文本查看 复制代码
string a="abc",b="edf";
Console.Write(b+a);//字符串连接
我们往往需要在字符串中,输出,单、双引号,看下面的代码
string a="ab'c";
Console.Write(a);//可以正常输出
只要变量a中单引号变为双引号,程序就出错,为了解决这个问题,字符串中输出双引号前面要加"\",这个我们称为转义。
还有一些其他的转义:\r、\n、\r\n、\t、\v、\\、\b、\a


布尔类型运算符:
&&、||、!
[C#] 纯文本查看 复制代码
bool temp1 = true;
bool temp2 = false;
Console.WriteLine(temp1 && temp1 && temp2);//and 和,运算按布尔类型的值,所有值为真才为真,否则为假。
Console.Write(temp2 || temp2 || temp2);//or 或,元素按布尔类型的值,只要有一个为真则真,否则为假
 /*
 && 逻辑和,运算速度快,从前往后找,只要找到一个假,结果就是假,后面不会再找了。
 &  位和,首先把运算所有的值转换为二进制代码,然后再进行运算,结果和&&运算的结果一样,速度很慢。
|| 逻辑或,从前往后,只要一个真结果就是真,后面不会再找了!
|  位或,首先把运算所有的值转换为二进制代码,然后再进行运算,结果和||运算的结果一样,速度很慢。
*/


运算符的优先级:
先执行运算的运算符优先级高,后执行运算的运算符优先级低。


在上面的这个例子中,我们发现往往可能需要比较2个数值的大小,如果按照数据类型来分类,>、<、>=、<=、!=、==之类的,可以划分为数据类型运算符;
其中,!=、==也可以理解为字符型、字符串运算符。例如:
[C#] 纯文本查看 复制代码
char temp1 = 'a';  //也可换成字符串型变量,并用户比较
char temp2 = 'a';
Console.Write(temp1==temp2);


为了以示区别,
运算符按照操作变量的个数还可以分为:
一元(目)运算符: 操作一个变量,比如++、--、!
二元运算符:+、-、*、/
三元运算符: ?:
[C#] 纯文本查看 复制代码
int i = 5,j=3;
int max,min;
max = i > j ? i : j;  //三元运算符,?前面的条件如果成立,执行?后面的语句;如果不能成立执行:后面的语句。
min = i > j ? j : i;
Console.Write("最大值:");
Console.WriteLine(max);
Console.Write("最小值:");
Console.Write(min);


类型转换:
[C#] 纯文本查看 复制代码
/* 
             假设有以下的这些运算,我们在编译的时候,有的根本通不过。在C#中,不同的数据类型一般是无法进行运算的; 
             非要进行运算,要进行类型转换,并且保证你运算的结果和转换数据类型一致。 
             */ 
            int i = 1;
            string a = "abc";
            Console.WriteLine(a+i);
            int j = 2;
            float k = 3.3f;
            int result;
            result = j + k;
            Console.WriteLine(result);
            int l = 4;
            char b='b';
            Console.WriteLine(l+a);
            string c = "123";
            int n = 5;
            Console.WriteLine(c+n);


类型转换分为二种:自动类型转换、强制类型转换
自动类型转换:小范围转化为大范围数据类型,自动进行。
[C#] 纯文本查看 复制代码
 int i1 = 2;   //定义一个小范围的值
            float i2 = 3.2f; //定义一个大范围的值
            float result1 = i1 + i2;//注意运算结果是大数据类型
            Console.WriteLine(result1);

数值型和字符串类型自动类型转换
[C#] 纯文本查看 复制代码
 int i = 1;
 string a = "abc";
 Console.WriteLine(a + i);

强制类型转换:大范围和小范围进行运算,运算的结果是小范围。语法格式为 (目标数据类型)变量;
[C#] 纯文本查看 复制代码
int i11= 3;
            float i22 = 4.6f;
            //int result11 =(int)(i11 + i22);//先执行自动类型转换,然后再强制转换。修改这条语句的代码
            //int result11 = i11 + (int)i22;//运算的结果还是小范围,结果小数位丢失。截断,不会四舍五入。
            int result11 = i11 + Convert.ToInt32(i22);//通用强制类型转换。Convert.ToSingle转换为float
            Console.WriteLine(result11);

数值型和字符串类型强制转换用(目标数据类型无法转换) ,用下面的方式替代
[C#] 纯文本查看 复制代码
int i111 = 4;
            string a1 = "123";
            //执行求和运算
            int result111 = i111 + int.Parse(a1);//对于数值型和字符串类型转换需要 数据类型.parse来强制转换
            Console.WriteLine(result111);
            int i = 1;
            string a = "abc";
            Console.WriteLine(a + i.ToString());//数值型(其他数据类型)转换为字符串 值.ToString()

因为数值类型是值类型,字符串是引用类型。
值类型与引用类型保存数据的原理
注意:强制类型转换不一定能够进行! 看下面的例子
[C#] 纯文本查看 复制代码
 string a = "123a";
            int i = 2;
            Console.Write(Convert.ToInt32(a)+i);

char类型作为值类型,在内存中保存是对应的ASCII值。
[C#] 纯文本查看 复制代码
char a='a';//定义字符
            string a1 = "a";//定义字符串
            Console.WriteLine((int)a);//char类型作为值类型,在内存中保存是对应的ASCII值。
            Console.WriteLine((char)97);
            Console.WriteLine(int.Parse("a"));//该行转换失败

常用的字符所对应的ASCII值分别为
a 97
A 65
0 48
. 46
另外,可以看出,值类型运算的速度要比引用类型速度要快。

装箱与拆箱
装箱:值类型转换为引用类型
拆箱:引用类型转换为值类型

表达式:
由运算符和操作数(变量)组成的式子。 一个变量、一个值也是一个表达式。简单来说语句去掉分号就是表达式。
用于控制程序的流转。
本文章来源于:学玩网











上一篇:【C#】第二章(1) 变量与常量
下一篇:【C#】第三章(1) 流程控制之顺序、选择结构

帖子地址: 



+1
1271590°C
沙发哦 ^ ^ 马上
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

 
发评论,即可赢取积分欧!

申请友链|意见反馈|小黑屋|手机版|Archiver|单小喏中文网 ( 皖ICP备13012632号-1 |网站地图  

GMT+8, 2016-12-8 17:51 , Processed in 0.240710 second(s), 48 queries .

Powered by danxiaonuo

© 2013-2016 danxiaonuo.

快速回复 返回顶部 返回列表