C#之表达式与运算符

C#之表达式与运算符

表达式在C#中应用广泛,尤其是计算功能,往往需要大量的表达式。大多数表达式都使用运算符,运算符结合一个或一个以上的操作数,便形成了表达式,并且返回运算结果。

1.1表达式

表达式是由运算符和操作数组成的。例如,“+”“-”“/”和“*”都是运算符,操作数包括文本、常量、变量和表达式等。C#中,如果表达式最终的计算结果为所需类型值,则表达式可以出现在需要值或对象的任意位置。下面是一个简单的控制台应用程序,声明两个变量,并且赋初始值,然后进行简单的运算。

namespace Test01
{
    
    
    class Program
    {
    
    
        static void Main(string[] args)
        {
    
    
            int i = 92;                                                                                  //声明一个int类型的变量i并初始化为92
            int j = 11;                                                                                  //声明一个int类型的变量j并初始化为11
            Console.WriteLine(Math.Sin(i * i + j * j));                                           //表达式作为参数输出
            Console.ReadLine();
        }
    }
}

1.2运算符

运算符是一种特殊的符号,主要用于数学函数、一些类型的赋值语句和逻辑比较运算。C#中提供了丰富的运算符,如算术运算符、赋值运算符、比较运算符等。

1.2.1 算术运算符

“+”“-”“/”“*”“%”运算符都称为算术运算符,分别用于加、减、除、乘和模运算。其中,“+”“-”运算符还可以作为数据的正负符号。下面演示做一个简易的计算器程序。

 class Program
    {
    
    
        static void Main(string[] args)
        {
    
    
            Console.Title = "简易计算器";//设置控制台标题
            Console.Write("输入第1个数字:");//提示用户输入第1个数值
            double d = double.Parse(Console.ReadLine());//得到第1个数值
            Console.Write("输入第2个数字:");//提示用户输入第2个数值
            double d2 = double.Parse(Console.ReadLine());//得到第2个数值
            Console.Write("输入第3个数字:");//提示用户输入第3个数值
            double d3 = double.Parse(Console.ReadLine());//得到第3个数值
            Console.WriteLine("加法计算结果:{0} + {1} + {2} = {3}", d, d2, d3, d + d2 +  d3);
            Console.WriteLine("减法计算结果:{0} - {1} - {2} = {3}", d, d2, d3, d - d2 -  d3);
            Console.WriteLine("乘法计算结果:{0} × {1} × {2} = {3}", d, d2, d3, d * d2 *  d3);
            Console.WriteLine("除法计算结果:{0} ÷ {1} ÷ {2} = {3}", d, d2, d3, d / d2 /  d3);
            Console.WriteLine("求余计算结果:{0} % {1} % {2} = {3}", d, d2, d3, d % d2 %  d3);
            Console.ReadLine();//等待回车继续
        }
    }

注意:
在用算术运算符(+、-、/、*)运算时,产生的结果可能会超出所涉及数值类型的值的范围,这样,会导致运行结果不正确;另外,在执行除法和求余数运算时,除数一定不能为0。

1.2.2 自增自减运算符

使用算术运算符时,如果需要对数值型变量的值进行加1或者减1操作。C#还提供了自增自减运算符,他们分别用++和–表示,例如a++,b–。如果程序中不需要使用操作数原来的值,只是需要其自身进行加(减)1;那么建议使用前置自加(减),因为后置自加(减)必须保存原来的值,而前置自加(减)不需要保存原来的值。同时在这里还要说明一点自增自减运算只能作用于变量,下面我进行一个简单的演示来进行解释

class Program
    {
    
    
        static void Main(string[] args)
        {
    
    
            int i = 1, j = 1;                             //定义int类型的变量
            int p_i, p_j;                                 //p_i表示后置形式运算的返回结果,p_j表示前置形式运算返回结果
            p_i = i++;                                    //后置形式的自增,p_i是1
            Console.WriteLine(i);                         //输出结果是2
            p_j = ++j;                                    //前置形式的自增,p_j是2
            Console.WriteLine(j);                         //输出结果是2
        }
    }

1.2.3 赋值运算

赋值运算为变量、属性、事件等元素赋新值。赋值运算符主要有“=”“+=”“-=”“*=”“/=”“%=”“&=”“|=”“^=”“<<=”“>>=”运算符。赋值运算符的左边必须是变量、属性访问、索引器访问或事件访问类型的表达式,如果赋值运算符两边操作的类型不一致,就需要首先进行类型转换,然后再赋值。下面我以加赋值(+=)运算符为例,进行一个简单的演示

class Program
    {
    
    
        static void Main(string[] args)
        {
    
    
            int i = 92;                                                            //声明一个int类型的变量i并初始化为92
            i += 12;                                                       //使用加赋值运算符
            Console.WriteLine("最后i的值为:{0}", i);               //输出最后变量i的值
            Console.ReadLine();
        }
    }

1.2.4 关系运算符

关系运算符属于二元运算符,用于程序中的变量之间、变量和自变量之间以及其他类型的信息之间的比较。关系运算符返回一个代表运算结果的布尔值。当关系成立时,返回结果为true,反之返回结果为false。下面我进行一个简单的演示

class Program
    {
    
    
        static void Main(string[] args)
        {
    
    
            int num1 = 4, num2 = 7, num3 = 7;//定义3个int变量,并初始化
            //输出3个变量的值
            Console.WriteLine("num1=" + num1 + " , num2=" + num2 + " , num3=" + num3);
            Console.WriteLine();                                    //换行
            Console.WriteLine("num1<num2的结果:" + (num1 < num2)); //小于操作
            Console.WriteLine("num1>num2的结果:" + (num1 > num2)); //大于操作
            Console.WriteLine("num1==num2的结果:" + (num1 == num2));   //等于操作
            Console.WriteLine("num1!=num2的结果:" + (num1 != num2));   //不等于操作
            Console.WriteLine("num1<=num2的结果:" + (num1 <= num2));   //小于等于操作
            Console.WriteLine("num2>=num3的结果:" + (num2 >= num3));   //大于等于操作
            Console.ReadLine();
        }
    }

运算结果如下:

num1=4 , num2=7 , num3=7


num1<num2的结果:True
num1>num2的结果:False
num1==num2的结果:False
num1!=num2的结果:True
num1<=num2的结果:True
num2>=num3的结果:True

1.2.5 逻辑运算符

返回类型为布尔值的表达式,可以被组合再一起构成一个更复杂的表达式,这是通过逻辑运算符来实现的。C#中的逻辑运算符主要包括“&(&&)(逻辑与)”“||(逻辑或)”“!(逻辑非)”。逻辑运算符的操作元必须是bool型数据。在逻辑运算符中,除了“!”是一元运算符之外,其他都是二元运算符。结果为bool类型的变量或表达式可以通过逻辑运算符组合为逻辑表达式。

1.2.6其他特殊运算符

1.is运算符
用于检查变量是否为指定的类型。如果是,返回为true,反之返回false。下面我进行一个简单的演示

class Program
    {
    
    
        static void Main(string[] args)
        {
    
    
            int i = 1;                                                                            //声明整型变量i
            bool result = i is int;                                                               //判断i是否为整型
            Console.WriteLine(result);                                                            //输出结果
            Console.ReadLine();
        }
    }
}

不能重载is运算符。is运算符只考虑引用转换、装箱转换和取消装箱转换,不考虑其他转换,如用户定义的转换。
2.条件运算符
条件运算符(?:)根据布尔类型表达式的值返回两个值中的其中一个。如果结果为true,则计算第一个表达式并以它的计算结果为准,反之则以第二个为准下面是表达格式

条件式?1:值2

下面进行一个简单的演示

static void Main(string[] args)
        {
    
    
            Console.Write("请输入一个年份:");                                     //屏幕输入提示字符串
            string str = Console.ReadLine();                                       //获取用户输入的年份
            int year = Int32.Parse(str);                                                  //将输入的年份转换成int类型
            //计算输入的年份是否为闰年
            bool isleapyear = ((year % 400) == 0) || (((year % 4) == 0) && ((year % 100)  != 0));
            //利用条件运算符输入“是”或者“不是”
            string yesno = isleapyear ? "是" : "不是";
            Console.WriteLine("{0}年{1}闰年", year, yesno);                //输出结果
            Console.ReadLine();
        }

3.new运算符
new运算符用于创建一个新的类型实例,它有以下3种形式。

  • 对象创建表达式,用于创建一个类类型或值类型的实例。
  • 数组创建表达式,用于创建一个数组类型实例。
  • 代表创建表达式,用于创建一个新的代表类型实例。
    4.typeof运算符
    用于获得系统原型对象的类型,也就是Type对象。Type类包含关于值类型和引用类型的信心。typeof运算符可以在C#语言的各种位置使用,以找出关于引用类型和值类型的信息。

1.3运算符优先级

C#中的表达式是使用运算符连接起来的符合C#规范的式子。运算符的优先级决定了表达式中运算执行的先后顺序。优先级由高到低的顺序依次是:增量和减量运算→算术运算→关系运算→赋值运算。以上是表达式和运算符的总结。希望对大家了解表达式和运算符有用。

猜你喜欢

转载自blog.csdn.net/weixin_63284756/article/details/128509390