大纲
操作符布尔表达式按位操作符控制流语句跳转语句预处理指令
算术操作符  ifbreak#if、#elif、#else、#endif、
赋值操作符  whilecontinue#define和undef
递增和递减操作符  do-whilegoto#pragma
常量表达式  for nowarn:<warn list>
   foreach #line
   switch #region/#endregion
一元操作符正和负
二元算术操作符
二元操作符要求两个操作数,操作符在左右操作数之间,例如 1-2   1和2是左右操作数   -是操作符

要使用圆括号增加代码的易读性,尤其是在操作符优先级不是让人一目了然的时候。

避免将二进制浮点类型用于相等性条件式。要么判断两个值之差是否在容差范围之内,要么使用decimal类型。

result = count++;和result = ++count的区别在于 第一个是count赋值给了result然后+1第二个则是 count+1之后才赋值给result

if执行之后else if不会再执行

&&的时候左边操作数为false的时候不会计算右边的操作数 而&不论左边是不是false都会执行右边,也就是说&&支持短路求值

条件操作符

c#唯一三元操作符

condition?consequence:alternative
int a = (5>4)?2:3;
//意思是?前面为true时返回第一个操作数2    否则返回3

空接合操作符 ??支持短路求值

expression1??expression2
string fileName = GetFileName();
string fullName = fileName??"default.txt"
//??操作符支持短路求值。如果expression1不为nu11,就返回expression1的值,不对另一个表达式求值。如果expression1求值为nu11,就返回expression2的值
null条件操作符 ?. (c#6.0引入)

null条件操作符在条用方法或属性直线检查操作符是否为空

string[] args;
if(args?.Length ==0)
{
    if(args[0]?.ToLower());
}
//如果?前面为空则不会继续执行下去,但是如果像这样使用
string str =args?[3];
//这样可能会数组越界,因为?只是验证不为空,但是args的长度不一定大于3

使用null条件操作符和委托,可以简化判空的操作

按位操作符(用于对值的二进制格式进行处理。)

(这个只是针对二进制转换)对于负数来说,负数通过最左侧的1来 标识,然后把所有含有0的位置加在一起,第二位为0的话就+(-2(第二位对应于正数的2))再将结果-1

左移<<和右移>>

左移所有位向左移指定位数,右边留下的空位由0补充

右移 所有位向右移动指定位数,如果这个数是负数,左侧空位填充1,否则填充0,向右位移时右边位的数会丢去,右移两位则最右边的两位丢弃

按位操作符
大纲
 & (AND) l(OR)^ (XOR)~ (取反)
表达12&712 l 712^7~1
结果4151111
解释11是1,10是0,00是010是1,11是1,00是000是0,01是1,11是0对数的二进制1变0,0变1

异或不同的是1,相同的为0,也就是11为0,00为0,10为1

xor ^可以用枚举来表示权限操作1表示有权限但枚举值必须是2的次方
更多的^使用可以查看10个老鼠确定1000瓶水哪瓶有毒



for循环外圈的数比内圈的数小会好一丢丢


break跳出循环,continue结束这次循环直接开始下一次循环,goto,switch中跳到另一个语句,不建议使用

最后修改:2019 年 08 月 09 日 09 : 13 PM