学习C#之旅(C#语言基础,运算符)
2008-07-21 18:11
357 查看
我知道大家看了,我的随笔知识的是超基础的内容!
![](http://www.cnblogs.com/Emoticons/tusiji/203330548.gif)
不过你不知道这些基础的内容,想想你也不会成为今天的高手!高手往往容易犯低级错误!你说是吗!
![](http://www.cnblogs.com/Emoticons/baimantou/202015412.gif)
是我的吉他老师讲过,吉他高手每天都要弹一些入门基础的练习曲!练习曲是练习!不是简单的就不学了!
![](http://www.cnblogs.com/Emoticons/baimantou/223332344.gif)
简单的不一定最好,最好的不一定简单!
![](http://www.cnblogs.com/Emoticons/baimantou/22571567.gif)
知识点:
运算符(C# 与 Java)
C# 提供 Java 支持的所有适用的运算符,如下表所示。在表的最后,您会看到在 C# 中可用但 Java 中没有的一些新运算符:
唯一不能在 C# 中使用的 Java 运算符是移位运算符 (>>>)。因为 Java 中缺少无符号的变量,所以需要这一运算符处理需要向右移位以在最高有效比特位中插入 1 这种情况。
C# 支持无符号变量,因此,C# 只需要标准的 >> 运算符。此运算符根据操作数是否有符号会产生不同的结果。将一个无符号数向右移位会在最高有效比特位中插入 0,而将一个有符号数向右移位会复制前面的最高有效比特位。
![](http://i.technet.microsoft.com/Platform/Controls/CollapsibleArea/resources/minus.gif)
Checked 和 Unchecked 运算符
如果结果大小比分配给所用数据类型的位数大很多,算术运算将导致溢出。对给定的整数算术运算使用 checked 和 unchecked 关键字可以检查或忽略此类溢出。如果表达式是一个使用 checked 的常数表达式,就会在编译时产生错误。
下面这个简单的示例演示了这些运算符:
class TestCheckedAndUnchecked
{
static void Main()
{
short a = 10000;
short b = 10000;
short c = (short)(a * b); // unchecked by default
short d = unchecked((short)(10000 * 10000)); // unchecked
short e = checked((short)(a * b)); // checked - run-time error
System.Console.WriteLine(10000 * 10000); // 100000000
System.Console.WriteLine(c); // -7936
System.Console.WriteLine(d); // -7936
System.Console.WriteLine(e); // no result
}
}
在这段代码中,unchecked 运算符绕过编译时错误,否则下列语句可能会导致编译时错误:
下面的表达式在默认情况下 unchecked,因此值溢出后无提示:
short c = (short)(a * b); // unchecked by default
我们可以在运行时使用 checked 运算符强制检查表达式是否发生溢出:
short e = checked((short)(a * b)); // checked - run-time error
将前两个值赋给 d 和 c,会在程序运行时无提示地溢出值 -7936,但是在尝试相乘以获取使用 checked() 的 e 的值时,此程序将引发
![](http://www.cnblogs.com/Emoticons/tusiji/203330548.gif)
不过你不知道这些基础的内容,想想你也不会成为今天的高手!高手往往容易犯低级错误!你说是吗!
![](http://www.cnblogs.com/Emoticons/baimantou/202015412.gif)
是我的吉他老师讲过,吉他高手每天都要弹一些入门基础的练习曲!练习曲是练习!不是简单的就不学了!
![](http://www.cnblogs.com/Emoticons/baimantou/223332344.gif)
简单的不一定最好,最好的不一定简单!
![](http://www.cnblogs.com/Emoticons/baimantou/22571567.gif)
知识点:
运算符(C# 与 Java)
C# 提供 Java 支持的所有适用的运算符,如下表所示。在表的最后,您会看到在 C# 中可用但 Java 中没有的一些新运算符:
类别 | 符号 |
---|---|
一元 | ++ -- + - ! ~ () |
乘法 | * / % |
加法 | + - |
移位 | << >> |
关系 | < > <= >= instanceof |
相等 | == != |
逻辑“与” | & |
逻辑 XOR | ^ |
逻辑“或” | | |
条件 AND | && |
条件 OR | || |
条件运算 | ? : |
赋值 | = *= /= %= += -= <<= >>= &= ^= |= |
操作数类型 | typeof |
操作数大小 | sizeof |
执行溢出检查 | checked |
取消溢出检查 | unchecked |
C# 支持无符号变量,因此,C# 只需要标准的 >> 运算符。此运算符根据操作数是否有符号会产生不同的结果。将一个无符号数向右移位会在最高有效比特位中插入 0,而将一个有符号数向右移位会复制前面的最高有效比特位。
![](http://i.technet.microsoft.com/Platform/Controls/CollapsibleArea/resources/minus.gif)
Checked 和 Unchecked 运算符
如果结果大小比分配给所用数据类型的位数大很多,算术运算将导致溢出。对给定的整数算术运算使用 checked 和 unchecked 关键字可以检查或忽略此类溢出。如果表达式是一个使用 checked 的常数表达式,就会在编译时产生错误。
下面这个简单的示例演示了这些运算符:
class TestCheckedAndUnchecked
{
static void Main()
{
short a = 10000;
short b = 10000;
short c = (short)(a * b); // unchecked by default
short d = unchecked((short)(10000 * 10000)); // unchecked
short e = checked((short)(a * b)); // checked - run-time error
System.Console.WriteLine(10000 * 10000); // 100000000
System.Console.WriteLine(c); // -7936
System.Console.WriteLine(d); // -7936
System.Console.WriteLine(e); // no result
}
}
在这段代码中,unchecked 运算符绕过编译时错误,否则下列语句可能会导致编译时错误:
short d = unchecked((short)(10000 * 10000)); // unchecked
下面的表达式在默认情况下 unchecked,因此值溢出后无提示:
short c = (short)(a * b); // unchecked by default
我们可以在运行时使用 checked 运算符强制检查表达式是否发生溢出:
short e = checked((short)(a * b)); // checked - run-time error
将前两个值赋给 d 和 c,会在程序运行时无提示地溢出值 -7936,但是在尝试相乘以获取使用 checked() 的 e 的值时,此程序将引发
![]() 说明: |
---|
也可以通过使用命令行编译器开关 (/checked) 控制是否检查代码块的算术溢出,或直接在 Visual Studio 中基于每个项目进行控制。 |
相关文章推荐
- C#语言学习--基础部分(五) --复合运算符,循环语句
- Programming C# 学习笔记(三) C#语言基础
- 【Professional C# 读书笔记】(二)-----语言基础:继承,运算符,类型转换的杂七杂八
- [java学习笔记]java语言基础概述之运算符&程序流程控制&for循环嵌套
- C语言基础学习运算符-赋值运算符
- 【基础语言学习】C#中的可空类型运算(Nullable<T>)------T?
- C#语言学习--基础部分(二十) 类的赋值,new,override,virtual
- C#语言学习--基础部分(十三)枚举类型和结构体
- C语言文件的读入与写入及C#基础函数学习[图]
- 电脑小白学习软件开发-C#语言基础之循环重点讲解,习题
- C语言基础学习运算符-逻辑运算符
- c语言基础学习03_数据类型与运算符
- 【C#基础语言学习】:const,readonly 常量与只读的区别
- C#语言基础之运算符
- C#语言学习之旅(5)--运算符和类型强制转换
- C#语言和数据库技术基础学习小结
- C#语言学习--基础部分(六) --异常处理
- C#语言学习--基础部分(九) --类->静态字段,静态方法,静态类
- C#语言学习--基础部分(二) 方法重载
- C#学习笔记(有C,C++,JAVA语言基础)