标签:刘铁猛 C# 数据类型 取反 操作符 内存 溢出 取负
————— 基本操作符 ———————
1.checked 与 unchecked
用于检测一个值在内存中是否溢出
Checked:告诉编译器要检查溢出
Unchecked:告诉编译器不用检查溢出
使用在值变量前,若内存溢出,则编译器会出现以下弹窗
ex:try与catch(待补充)
Unchecked是C#语言默认采用的模式,不显示溢出错误,继续运行
上下文用法:
2.delegate
delegate关键字更多用来声明“委托”这种数据类型(待续)
作为操作符用来对一个方法进行如下处理,声明匿名方法
首先有一个方法
然后将其函数名、返回值删去,剪切到程序中
在前面加上delegate关键字
这种方法现在已经过时
现在C#有称作拉姆达表达式的工具,用=>符号将两个类型都不需要标明的变量代入到之后的代码块中
3.sizeof 获取对象在内存中所占字节数
sizeof能获取除string、object以外的数据类型的字节数大小,因为这两个不是结构体
能获取结构体类型的基本数据类型的占用字节数大小
可以获取自定义结构体实例占用的字节数,但需要放在不安全(unsafe)的上下文中
4.-> 指针访问对象成员操作符
用法与C、C++中类似,说明C#是有真正的指针的!
但由于要直接操作内存,需要放在unsafe上下文中才能使用
指针只能操作结构体类型,不能操作引用类型
————— 一元操作符 ———————
5.& 取地址操作符 和 *取引用内容操作符
同C、C++,属于指针相关操作符,都需要在unsafe环境下使用
注意:*是一元操作符,而成员访问操作符. 是基本操作符
基本操作符优先级高于一元操作符,所以下图中表达式需要打括号
6.- 取负操作符
(1)与数学中正负号一致
可用于给带符号的数据类型赋值
注意:数学中连续两次取负得正,但程序中不能连写两个负号如“--x”,因为这是前置自减操作符
需要连续取负时要打括号
(2)取负可能造成内存溢出
带符号的数据类型,最大值和最小值在绝对值上不对称
如int类型的表示范围:最小值绝对值比最大值绝对值大1
所以取负操作符有可能造成内存溢出
7.~按位取反操作符
将一个数字在二进制上按位取反
(划线语句后半段含义:转换为二进制,不足的时候用0补齐)
打印结果:
所以12345678 按位取反 = -12345679
计算机求相反数的方法:补码(按位取反再加一)
数据类型的最小值都是最高位为1,其余位为0
对其按位取反以后是01111111111111,再加一就又是10000000000000
所以对数据类型的最小值取负,仍会得到这个值
8.! 取非操作符
只能用于操作bool类型的变量,将其取反
9.++、-- 前置自增自减
前置自增:先运算再赋值
后置自增:先赋值再运算
自增自减尽量单独使用,在一大段表达式中使用非常影响可读性
标签:刘铁猛,
C#,
数据类型,
取反,
操作符,
内存,
溢出,
取负
From: https://www.cnblogs.com/jk-2048/p/18030222