从C#进入计算机语言的世界(4) - 变量与表达式- 昕旸时光- 博客园

第3章. 变量与表达式

在讲本章前,我们先来看一下一个数学公式,y = x + 1,这个式子几乎包含了本章的所有知识点。其中x、y为变量,1为常量,+为算术操作符,=为赋值操作符,x+1为公式,y=x+1为表达式。

3.1. 数据类型

在数学中,我们把数字分为整数、实数、虚数、复数等;在生活中,我们也会把物品分类,如生活用品、汽车、银行等。在计算机语言中,数据也是有类型的。这里我们先谈论简单的数据类型。

A、整数类型 

在C#中表示整数的类型很多,使用最多的整数类型是int。他们之间的不同点是表示范围和长度不同。具体见下表

类型 

允许的值 

sbyte

-128 – 127

byte

0 – 255

short

-32768 – 32767

ushort

0 – 65535

int

-2147483648 – 2147483647

uint

0 – 214967295

long

-9223372036854775808 – 9223372036854775807

ulong

0 – 18446744073709551615

在选择整数类型时要尽可能选择满足数据要求,并且尽可能的选择数据区间小的整数类型。比如表示一个人的年龄,选择byte会比选择int更好。

有些变量前面的“u”是“unsigined”的缩写,这些数据类型中不能包含负数。

B、实数类型 

如果想表示的数字带有小数点,就不能用整数类型来表示了。这时我们需要用实数类型来表示,也称浮数类型。按照小数点的精度,我们可以把实数类型为float,double,decimal。

C、字符类型 

字符类型用char表示,它可以表示一个字或标点符号,如:’a’,’8’,’(‘,’中’,’ は’等单字节或双字节的字。

D、字符串类型 

一个或多个字符类型组合在一起就是字符串类型,用string表示一组字符。如“0”,“Hello World!”,“天气不错”等。

E、布尔类型 

在生活中我们经常对某个疑问进行“yes”和“No”或“是”和“不是”的回答,在数学中我们对判断会作出“对”和“错”的回答。在回答同一个疑问的时候,我们可能会表达同样的意思,可是表达方式会有很多种。比如“今天天气好吗”,可能得到回答“是的”,“是”,“Yes”,“当然了”等等。为了在计算机语言中规范这种表达,我们把结果是肯定的用“true”表示,把结果是否定的用“false”来表示。

3.2. 变量和常量

在y = x + 1的式子中,假设x、y为整数类型,那么x和y的取值并不是固定的,当x的值发生变化时,y的值也会随着变化。我们称这样的数据为变量。

A、变量的定义 

在C#语言中,变量必须先定义后再使用,变量的定义规范如下:

以下是变量定义的一些例子:

 

string name; //定义一个变量,表示姓名

char sex; //定义一个变量,表示性别

int age; //表示年龄

float height; //表示身高

float weight; //体重

bool isMarried;//是否结婚

string remark; //备注

 

 

 

可以把相同数据类型的变量赋值在一条语句上体现,如

 

 

 

B、 变量的命名规则 

和在生活中给一个小孩取名肯定会遵循一定的规则一样,在C#中,变量的取名也有一定的规则。

基本的命名规则如下:

n 变量名的{dy}个字符必须是字母、下划线 _ 或 @。

n 其他字符可以是字母、下划线或数字。

n 命名不能与C#中的关键字相同。

由于C#是与区分字母的大小写的,所以给变量命名时还需遵循一些常见的规范,具体见前面第二章的“代码书写规范”。

C、 变量的赋值 

变量的赋值是给定义好的一个变量取值,例子如下:

 

 

 

在C#中,赋值符号是=,它和数学中的等于号意思不一样,赋值符号的意思是把右侧的值赋予左侧的变量。

赋值时一定要把数据类型赋值给相应变量类型。以下赋值是错误的:

 

name = 朱明明; //错误,字符串类型的取值需要用双引号

sex
= "boy"; //错误,无法把一个字符串赋值给字符

age
= 12.1; //错误,无法把一个实数赋值给整数变量

isMarried
= "Yes"; //错误,布尔类型只能在true 和false之间取值。

 

 

变量在赋值前一定要先定义,当然可以把变量的定义和赋值写在一条语句上,如:

 

 

 

 

(1) 在目录C:\Code\Chapter3\下创建一个新的控制台应用程序OutputStudent。

(2) 修改Program.cs代码如下:

 

static void Main(string[] args)

{

string name;

double height, weight;

name
= "任小虎";

height
= 1.67;

weight
= 50.0;

int age = 21;

Console.WriteLine(
"{0}同学{1}岁,身高{2}米,体重{3}公斤。", name, age, height, weight);

Console.ReadKey();

}

 

 

(3) 运行代码,结果如图3-1所示。

图3-1

示例的说明

Console.WriteLine语句中我们用占位符{0}代表字符串后的{dy}个参数name,{1}代表age,{2}代表height,{3}代表weight。Console.ReadKey()的作用是暂停代码运行,等待用户按下一个按键。 

D、转义符 

上面提到字符串变量的值都是放入双引号之内的,双引号本身在C#中有特殊的含义,它代表字符串的开始或者结束。那么,如果想在字符串内容中表示双引号怎么做呢?我们先看以下表示方法是否正确:

 

 

 

答案是错误的,计算机会认为这里有两个字符串"小明说:"和"说完就走了",中间放置了计算机无法认识的字符’好的’。所以这样的表示方法是错误的。

一般我们用\”代表内容中的双引号,所以上面例子的正确表示方法为:

 

 

\代表的是转义符。同样,还有其他一些符号需要使用转义符,见下表

排除双引号,如果某个字符串中,出现需要转义的字符较多,为了使字符串的表达更简洁明了,我们可以在字符串前面加上符号@,表示该字符串内所有需要转义的字符都代表字符本身。如文件地址可以采用如下2种表达方式:

 

 

 

E、 常量 

在表达式中,如果直接以内容的形式出现的值我们成为常量。如y=x+1中的1,如Console.WriteLine(“Hello world”)中的”Hello World”。

3.3. 表达式

3.3.1. 算术操作符

运算符 

读法 

类别 

示例 

结果 

+

(连接)

二元

z = x + y;

如果是数字,z的结果是x和y的和;

如果是字符串,z是x和y字符串的连接

-

二元

z = x – y;

z的值是x和y的差

*

二元

z = x * y;

z的值是x和y的积

/

二元

z = x / y;

z的值是x除以y的结果

%

求余

二元

z = x % y;

z的值是x除以y后所得的余数

+

一元

z = +x;

z的值是x

-

一元

z = -x;

z的值是x的相反数

以上是C#中简单的算术操作符,大部分操作符在与数学中的表达方式很类似。如果x=4;y=3;那么执行语句z=x+y;后,z的值为7,执行z=x%y后的结果是1。

其中+符号比较特殊,它可以应用在两个字符串间的操作。比如x=”你好,”;y=”中国!”;那么执行语句z=x+y后,z的值为”你好,中国!”。其他运算符不能用作字符串的处理。

在处理数据时,经常会用到一种操作,就是把某个数字自增1或者自减1,虽然可以用+和-来达到效果,C#中定义了一个更简便的符号,见下表。

对与++x或者x++,最终结果,都会使x自增1,等同与x=x+1;操作符放在前面和后面的区别在于把这个结果赋值时会有所不同。

l z=++x;等同与 x=x+1; z=x;

l z=x++;等同与z=x;x++;

(1) 在目录C:\Code\Chapter3\下创建一个新的控制台应用程序SimpleComputer。

(2) 修改Program.cs代码如下:

 

static void Main(string[] args)

{

Console.WriteLine(
"这是一个简单的计算器。");

Console.WriteLine(
"功能:任意输入个数字,能求出这个数字的和、差、积、除和余数。");

Console.Write(
"请你输入{dy}个数字:");

double number1 = Convert.ToDouble(Console.ReadLine());

Console.Write(
"请你输入第二个数字:");

double number2 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine(
"两个数相加得{0}", number1 + number2);

Console.WriteLine(
"两个数相减得{0}", number1 - number2);

Console.WriteLine(
"两个数相乘得{0}", number1 * number2);

Console.WriteLine(
"两个数相除得{0}", number1 / number2);

Console.ReadKey();

}

 

(3) 运行代码,结果如图3-2所示。

图3-2

3.3.2. 赋值操作符

之前例子中的运算符=就是赋值运算符,它的作用是把符号右侧的值赋给符号左侧的变量。除了简单的=赋值符,还有一些+=、-=、*=、/=、%=。使用方式为y+=x;,他的作用与y=y+x;一样,是把符号左侧的值加上右侧的值再赋给符号左侧的变量。+=运算符还可以用于字符串操作。

3.3.3. 逻辑操作符

在生活中,经常会遇到比较两个数字的大小,如张三的年龄比李四大,买火车票时座位的价格比卧铺便宜等。那么如何用C#语言来描述两个数据的大小关系呢?这是我们可以用到逻辑操作符。见下表

运算符 

读法 

类别

示例

结果

==

等于

二元

z = x==y;

如果x等于y,那么z的值为true,否则为false

!=

不等于

二元

z =x!=y

如果x不等于y,那么z的值为true,否则为false

<

小于

二元

z =x<y;

如果x小于y,那么z的值为true,否则为false

>

大于

二元

z =x>y;

如果x大于y,那么z的值为true,否则为false

<=

小于等于

二元

z =x<=y;

如果x小于等于y,那么z的值为true,否则为false

>=

大于等于

二元

z =x>=y;

如果x大于等于y,那么z的值为true,否则为false

表中x==y的运算结果为一个布尔值,然后赋给布尔变量z。其中==和!=可以用在字符串的比较中,其他符号则必须用在数字的比较中。

处理布尔值时,还会用到一些逻辑运算符,见下表

运算符

读法

类别

示例

结果

!

一元

z = !x;

如果x为true,那么z为false,否则为true

&

二元

z =x&y

如果x和 y都为true,那么z的值为true,否则为false

|

二元

z =x|y;

如果x或y为true,那么z的值为true,否则为false

^

异或

二元

z =x^y;

如果x和y只有一个为true,那么z的值为true,否则为false

&&

二元

z =x&&y;

同&

||

二元

z =x||y;

同|

&、|、^的运算规则如下表

在上面的表达中,我们发现&&、||和&、|的运算结果xx相同,但是运算的过程有重要区别,&&和||比&和|性能比较好。当运算符的两侧都是表达式时,如 x>y & a<=b,当x>y是false时,实际整个表达式肯定是false了,但是计算机还会去运算a<=b;而使用x>y&&a<=b时,如果x>y是假,那么计算机直接就断定这个表达式为假,不会运算a<=b的结果。

3.3.4. 逻辑赋值运算符

逻辑赋值运算符的语法和普通赋值符的语法类似。

3.3.5. 运算符的优先级

括号可用于忽略优先级顺序。


郑重声明:资讯 【从C#进入计算机语言的世界(4) - 变量与表达式- 昕旸时光- 博客园】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——