zoukankan      html  css  js  c++  java
  • C# 本质论 第三章 操作符和控制流

    操作符通常分为3大类:一元操作符(正、负)、二元操作符(加、减、乘、除、取余)和三元操作符( condition?consequence:alternative(consequence和alternative表达式类型要一致) ),它们对应的操作数分别是一个、两个和三个。

    要是永远括号增加代码可读性。

    要用符合格式化而不是加法操作符来拼接字符串。

    可以用char类型相减求两字母距离。

    float具有七位精度:

      错误代码:

    float n1 = 0.987654321;
    

      

       正确代码

        float n = 0.987654321F;
        Console.WriteLine(n);
    
    //Displays: 0.9876543    
        float n = 987654321;//不加F也可以
        Console.WriteLine(n);
    //Displays: 9.876543E+8

      二进制浮点类型内部实际存储的是二进制分数而不是十进制分数。所以,分母不是2的整数次幂的小数无法用二进制浮点数准确表示。实际上,使用一个接近十六位float的,并且分母为2整数次幂的分数来表示。double十五位有效数字。

        double n = 140.6F;
        Console.WriteLine(n);
    //Displays: 140.600006103516

    避免在需要准确的十进制算术运算时使用二进制浮点类型,而使用decimal浮点型。

        double n = 140.63435423524252315;
        Console.WriteLine(n);
    //Displays:140.634354235243
    
        double n = 140.63435423524242315;
        Console.WriteLine(n);
    //Displays: 140.634354235242

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

        float n = 0F;
        Console.WriteLine(n/0);
    //Displays: 非数字
    
        Console.WriteLine(0/0);
    //报错:被常数零除
    
        Console.WriteLine(0.0/0);
    //Displays: 非数字
    
        Console.WriteLine(-1/0);
    //报错:被常数零除
    
        Console.WriteLine(-1F/0);
    //Displays: 负无穷大
    
        Console.WriteLine(1F/0);
    //Displays: 正无穷大

    复合赋值操作符:

    1     char current = 'z';
    2     int unicodeValue;
    3     do
    4     {
    5         unicodeValue = current;
    6         Console .Write("{0}={1}	",current,unicodeValue);
    7         current--;
    8     } while (current>='a');
    9     Console.Read();            

        int count = 123;
        int result;
        result = count++;
        Console .Write("{0}	{1}",result,count);
        Console.ReadLine();
    //123     124
        int count = 123;
        int result;
        result = ++count;
        Console .Write("{0}	{1}",result,count);
        Console.ReadLine();
    //124     124

    前缀操作符的结果是变量递增递减之后的值,而后缀操作符的结果是变量递增递减之前的值。

      不要用常量表示将来可能变化的任何值。 

    空接合操作符(??)如果之前都是null,则表示最后一个表达式。

    x ?? y ?? z;
    

     不要将移位操作符用作乘除法。

    按位逻辑操作符:& | ^   不进行“短路求值”:& |

    按位赋值操作符:&= |= ^=

    取反操作符(~)

    控制流:

    do/while类似于while循环,区别在于它至少会循环一次。

    foreach循环:

    foreach(type variable in collection)
        statement

    不要使用continue作为跳转语句退出switch小节。

    跳转语句:break。

    预处理指令:在编译时调用

    #region

    #endregion

  • 相关阅读:
    2021-06-10 Summary: 阶段总结
    java中有符号和无符号数据类型发生转换
    关于数组和集合的冒泡排序中容易出现的IndexOutOfBoundsException
    Intellij IDEA打开多项目窗口
    使用Idea从github上获取项目
    用Intellij Idea从Github上获取代码
    Python-列表常用操作方法
    Python-字符串常用操作方法
    Python-不可变对象和可变对象的理解
    Python-内置数据类型
  • 原文地址:https://www.cnblogs.com/ly7576/p/6255537.html
Copyright © 2011-2022 走看看