第二章 使用变量、操作符和表达式

2.1理解语句

  1. 语句是执行操作的命令,如计算值,存储结果,或者向用户显示消息。我们组合使用各种语句来创建方法。
  2. 对语句的格式和构成进行描述,称为语法
  3. 描述语句做什么的规范称为语义

2.2使用标识符

  1. 标识符是对程序中各个元素进行标识的名称。
  2. C#标识符必须遵循以下语法规则:

只能使用字母(大写和小写)、数字和下划线
标识符必须以字母或下划线开头

2.3使用变量

变量是容纳值的存储位置。

可将变量想象成容纳临时信息的容器,我们用名称引用变量容纳的值。

变量命名建议:

不要以下划线开头
不要创建仅大小写不同的标识符。
名称以小写字母开头
在包含多个单词的标识符中,从第二个单词起,每个单词首字母大写(称为camelCase记号法)
不要使用匈牙利记号法。

声明变量

  • 声明变量时,必须制定她要容纳的数据的类型。
  • 变量的类型和名称在声明语句中声明。

    例如,以下语句声明 age 变量,它容纳 int 值。和任何语句一样,该语句必须用分号终止:

int age;

int 是 C#基元数据类型之一。
【注意】C#不允许隐式变量声明。所有变量使用前必须明确声明。
变量声明好后就可以赋值。以下语句将值 42 赋给 age。同样,最后的分号必不可少:

age = 42;

等号(=)是赋值操作符,作用是将右侧值赋给左侧变量。赋值后可在代码中使用 age 这个名称来引用变量容纳的值。

2.4使用基本数据类型

c#常用的数据类型及其取值范围
这里写图片描述
c#不允许使用未赋值的变量,变量只有赋值后才能使用,否则程序无法编译。
例如,以下语句造成编译错误,因为 age 尚未赋值:

int age;
Console.WriteLine(age); // 编译错误

【注】在打开c#工程文件时,一定要选择对文件,假如打开项目而不是解决方案,Visual Studio 2013 自动为它创建新的解决方案文件。不注意的话可能造成困扰,你可能不慎为同一个项目生成多个解决方案。

  • 在 Windows 8.1 中可按 Windows+B 返回正在显示 Visual Studio 2013 的桌面

  • 如果屏幕不够大,窗体不能显示完全,可以利用快捷键 Ctrl+Alt+=和Ctrl+Alt+-放大或缩小窗体,或者从设计视图左下角的下拉列表中选择显示比例。

  • 查找当前项目的特定内容时按快捷键 Ctrl+F 进行快速查找,按快捷键Ctrl+H 进行快速替换。

2.5 使用算术操作符

  • 操作符或运算符:例如:加号(+)执行加法,减号(-)执行减法,星号(*)执行乘法,正斜杠(/)则执行除法。
  • 操作符或运算符操作/运算的是 操作数或 运算子在表达式 750 * 20 中,*是操作符,750 和 20 是操作数。
  • 不是所有操作符都适用于所有数据类型。
  • 可对 char,int,long,float,double 或 decimal 类型的值使用任何算术操作符。但除了加法操作符(+),不能对 string 类型的值使用其他任何算术操作符。对于 bool 类型的值,则什么算术操作符都不能用。所以以下语句是不允许的,因为 string 类型不支持减法操作符(根据设计,从一个字符串减另一个字符串没有意义):
// 编译时错误
Console.WriteLine("Gillingham" - "Forest Green Rovers");

+操作符可用于连接字符串值。使用需谨慎,因为可能得到出乎意料的结果。例如,以下语 句在控制台中写入”431”(而不是”44”):

Console.WriteLine("43" + "1");
  • 算术运算的结果类型取决于操作数类型。例如,表达式 5.0 / 2.0 的值是 2.5。两个操作数的类型均为 double,所以结果也为double。(在 C#中,带小数点的字面值肯定是double 值,而不是 float 值,目的是保留尽可能高的精度。)
  • 表达式 5 / 2 的结果值是2。 两个操作数的类型均为 int, 所以结果也为 int。 C#在这种情况下总是对值进行向下取整。
  • 假如混用不同的操作数类型,情况会变得更加复杂。例如,表达式 5 / 2.0 中包含 int值和 double 值。C#编译器检测到这种不一致的情况,自动生成代码将 int 转换成 double 再执行计算。所以,以上表达式的结果是 double 值(2.5)。

    取模(余数)操作符。它用百分号(%)表示:

x % y 的结果就是用 x 除以 y 所得的余数。例如,9 % 2 结果是 1,因为 9 除以 2,结果是 4余 1。
C#允许对所有数值类型进行取模操作,但是结果不一定为整数。例如,表达式 7.0 % 2.4 结果是 2.2。

数值类型和无穷大:

C#语言中的数字,还有另外两个特性是你必须了解的。例如,任何数除以 0 所得的结果是无穷大,不在 int,long 和 decimal> 类型的范围内。所以,计算 5 / 0 之类的表达式会出错。 但是, double 和 float 类型实际上有一个可以表示无穷大的特殊值,因此表达式 5.0 / 0.0的值是Infinity(无穷大)。这个规则的唯一例外是表达式 0.0 / 0.0 的值。通常,如果 0 除以任何数,结果都为 0,但如果用任何数除以 0,结果就为无穷大。表达式 0.0 / 0.0 会陷入一种自相矛盾的境地:值既为 0,又无穷大。针对这种情况,C#语言提供了另一个值 NaN,即“not a number”所以,如果计算表达式 0.0 / 0.0,则结果NaN。NaN 和 Infinity 可在表达式中使用。计算 10 + NaN,结果为 NaN。计算 10 + Infinity,结果为 Infinity。规则的唯一例外是 Infinity * 0,其结果为 0。而 NaN * 0 的结果仍为 NaN。**

2.6 变量递增和递减

++和–是一元操作符,即只有一个操作数。它们具有相同的优先级和左结合性
增(++)和递减(–)操作符与众不同之处在于,它们既可以放在变量前面,也可以放在变量后面。在变量之前使用,称为这个操作符的前缀形式;在变量之后使用,则称为这个操作符的后缀形式。如下面几个例子所示:

count++; // 后缀递增
++count; // 前缀递增
count--; // 后缀递减
--count; // 前缀递减

对于被递增或递减的变量,++或–的前缀和后缀形式没有区别。例如,count++使 count 的值递增 1,++count 也会使其递增 1。那么为何还要提供两种不同的形式?为了理解这个问题,必须记住一点:++和–都是操作符,而所有操作符都对已经有一个值的表达式进行求值。count++返回递增发生前的 count 值,++count 返回递增发生后的 count 值。例如:

int x;
x = 42;
Console.WriteLine(x++); // 执行这个语句后,x等于43,但控制台上输出的是42
x = 42;
Console.WriteLine(++x); // 执行这个语句后,x等于43,控制台上输出的也是43

其实很好记,只需看表达式各个元素(操作符和操作数)的顺序即可。在表达式 x++中,变量x 首先出现,所以先返回它现在的值,然后再递增;在表达式++x 中,++操作符首先出现,所以先对 x 进行递增,再将新值作为表达式的值返回。

2.7 声明隐式类型的局部变量

  • 赋给变量的值必须具有和变量相同的类型。例如,只能将 int 值赋给 int 变量
    C#编译器可以根据表达式推断变量类型,并在声明变量时自动使用该类型。为此,只需用 var 关键字代替类型名称,如下所示:
var myVariable = 99;
var myOtherVariable = "Hello";

两个变量 myVariable 和 myOtherVariable 称为隐式类型变量。var 关键字告诉编译器根据用于初始化变量的表达式推断变量类型。 在本例中, myVariable 是 int 类型, 而 myOtherVariable是 string 类型。
只有提供表达式来初始化变量,才能使用关键字 var。以下声明非法,会导致编译错误:

var yetAnotherVariable; // 错误 - 编译器不能推断类型

var 只是在声明变量时提供一些方便。但变量一经声明,就只能将编译器推断的那种类型的值赋给它。例如,不能再将 float,double,string 值赋给myVariable。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值