-
C#的运算符优先级
前面我们学习了那么多运算符,如果编程中同时使用了多个运算符,到底哪一个会先运算呢?这就是优先级的问题。C#运算符的优先级请参考下面的顺序:
①括号。学数学的时候我们就知道,要先计算括号里面的内容。C#语言也是一样,如果有多层括号,要从里向外计算。括号优先级最高。
②一元运算符。有些运算符两边有2个操作数,比如2+3、6%5等等,这些叫做二元运算符。只有一个操作数的叫做一元运算符,它们的优先级高于二元运算符。一元运算符包括:++(自加) 、 --(自减) 、 !(逻辑非)。
③*(乘)、/(除)、%(取余)。
④+(加)、-(减)。
⑤>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。
⑥==(等于)、!=(不等于)。
⑦&&(逻辑与)。
⑧||(逻辑或)。
⑨赋值运算符。包括:=、+=、-=、*=、/=、%=。
另外,还需要注意一点:优先级相同的运算符从左向右计算(赋值运算符相反)。
请看下面这段代码:
bool b = 20 - (15 - 8) * 2 > 10 && (2 % 2 * 2 + 2) > 2; Console.WriteLine(b);
分析:首先计算优先级最高的括号,(15-8)得到7,(2%2*2+2)则需要先计算%和*,后算+,结果是2,表达式就变成了:
bool b=20-7*2>10&&2>2;
接下来优先级最高的是7*2,然后是减法,变成:
bool b=6>10&&2>2;
继续计算两个大于号,得到:
bool b=false&&false;
最后的结果当然是false:
查看全部 -
如果与其他运算在同一语句中,++写在变量前面或后面,算法不一样,请看下例:
Console.WriteLine(age++);作用等同于下面两句:
Console.WriteLine(age);//先打印 age=age+1;//后自加
Console.WriteLine(++age);作用等同于下面两句:
age=age+1;//先自加 Console.WriteLine(age);//后打印
查看全部 -
取余运算符%的作用是求两个数字相除的余数.
查看全部 -
加号有2个用途:当用加号连接两个数字时,会计算出这两个数字的和。
另一种情况,当加号两边包含字符串的时候,会把两边的表达式连接成新的字符串。
查看全部 -
程序中的变量名、常量名、类名、方法名,都叫做标识符
①标识符只能由英文字母、数字和下划线组成,不能包含空格和其他字符。
②变量名不能用数字开头。
③不能用关键字当变量名。
查看全部 -
自动类型转换:2种不同类型的数据运算,低精度类型会自动转换为较高精度的类型。
以3.5+8为例,显然数字8的精度较低(int),而3.5的精度较高(double),所以,8会自动转换为double型,即转换为3.5+8.0进行运算,结果为11.5。请看这个例子:
double d=2;
2的精度显然低于变量d的精度,所以2会自动转换为2.0然后赋值给d。
再看这个例子:int i=3.0;
变量i的精度低于3.0,但是由于i已经声明为int型的变量,变量的值可以变,但变量的类型可不能变来变去的,所以这条命令会出错的。强制类型转换:无法自动转换为我们需要的类型,可以用强制类型转换,比如上例可以这样完成:
int i=(int)3.0;
数字前面的(int)表示转换的目标类型为int,3.0会被强制转换为3。
需要注意, double 型强制转换为int型将失去小数部分,比如(int)2.8,我们得到的将是2。查看全部 -
字符类型 char ,存储用 '' (单引号)括起来的一个字符
字符串类型 string ,存储用“”(双引号)括起来的一串字符
整数类型 int ,存储整数
双精度浮点型 double ,存储小数
查看全部 -
代码中的Console.WriteLine()与之前的Console.Write()不同,后者不换行,而前者会在打印之后换行。
查看全部 -
单行注释的符号是2条斜线(请注意斜线的方向),2条斜线右侧的内容就是注释,左侧的代码不会受影响。
多行注释以“/*”开始,以“*/”结束,之间的内容就是注释,可以包含多行。
文档注释写在类、方法或属性(以后会学到)的前面,它的符号是3条斜线“///”。
查看全部 -
所有关键字都是由小写字母组成的
查看全部 -
Console.WriteLine("平均分是{0},高于平均分的有:", avg);
Console.Write(name[i] + " ");
查看全部 -
using System;
using System.Collections.Generic;
using System.Text;
namespace projAboveAvg
{
class Program
{
static void Main(string[] args)
{
{
string[] name = new string[] { "景珍", "林惠洋", "成蓉", "洪南昌", "龙玉民", "单江开", "田武山", "王三明" };
int[] score = new int[] { 90, 65, 88, 70, 46, 81, 100, 68 };
int avg = 0;
int count = 0;
for (int i = 0; i < score.Length; i++)
{
count += score[i];
avg = count / score.Length;
}
Console.WriteLine("平均分是{0},高于平均分的有:", avg);
for (int i = 0; i < name.Length; i++)
{
if (score[i] > avg)
{
Console.Write(name[i] + " ");
}
}
Console.ReadKey();
}
}
}
}
查看全部 -
设置断点:F9
调试:F5
单步执行:F10
查看全部 -
+号既可以算数字和 也可以当做字符串的连接符 2.两个整数相除结果仅保留整数部分。
查看全部 -
在表达式前加入(要转换的类型);即为强制转换;如(int)d+1 d为double型
查看全部
举报