好的,下面我们看一下表达式 表达式呢,是符合一定语法规则的运算符和操作数的序列
也就是说啊,把这种变量、 常量 再加上运算符组成的就叫表达式。
在一定意义上呢,这个变量 常量、 运算符啊,它都相当于单字
那这个呢表达式呢相当于一个词组,是这样的一个概念。
比如说像这里算术的 这里既有算术的,又有逻辑的,然后这里面呢是
三目运算符,就是说如果 a 大于 b,那么就取 a,否则就取 b,然后复制到
m 表达式呢,它有个类型,它也有值。
那表 达式的类型呢,它是根据这个操作数的,以及这个运算符的情况来得到的
在这里面这个类型呢,有的时候就需要转换,比如说在赋值的时候
我们可以把一个短的整数赋到一个长的整数里头
但是反过来,如果把一个长整数赋值给一个整数类型的变量的话 就需要用强制类型转换,也就叫
Casting,强制类型转换来进行 那强制类型转换的基本写法是一个
把这个类型符用圆括号括起来,放到这个变量的前头 这个跟 C
语言是类似的 另外一个呢,在写这个
byte short 或 char 这种类型的时候呢,如果是
写个 12,像这种写一个整数常量啊,它会自动地 把它转成那个字节。
这个转换呢就不需要强制,因为
它是常量,所以编译器在编译的时候,它会识别出来,这是类型转换 第一个问题。
另外呢我们在表达式当中,也有类型转换问题 当有不同种类的混合运算的时候呢,它会用
短的变成长的,比如说一个整数跟一个 double 运算
那么它就会把这个整数呢,也转成 double,然后再一起运算
另外特别要注意的就是所谓的整型提升 那么它是当
byte、 short 和 char 运算的时候呢 只要一参与运算,它就转成
int,也就是说两个 byte 相加 它的结果呢,它也转成
int 再相加,所以一定要注意这个问题,这个称为呢整型提升
运算符和在组成表达式的时候,它有一个优先级 和一个结合性的问题。
所谓优先级呢,就是先算什么,后算什么 那我们平时知道,先乘除后加减 是这样的一个优先的顺序。
另外还有一个所谓的结合 性呢,指的是它从左向右结合呢,还是从右向左结合
当然大部分呢,是从左向右的,也有个别的是从右向左的。
一般地说呢,这个运算符的优先级啊,它特别多,所以
我们在记的时候呢,大体上是单目运算优先,三目运算和赋值呢 是在后面,优先级很低。
然后中间的几个呢,是算术大于关系、 大于逻辑 这个也很好理解。
比如说 a 加 b 大于 5,并且 c 加 5 大于 6,所以基本是算术大于关系、
大于逻辑 当然还这其中呢,每一种呢,它里面又细分了不同的优先级
还有一个特殊的,就是位运算,这个优先级呢它比较乱,那比如说移位运算符呢
它优先级比较高,但是这种普通的 这个与、
按位与、 按位或等等,那它的优先级要,又要低一点
所以如果我们记不住这个优先级的最好的办法,就是用圆括号括起来,来改变它的运算顺序
所以我们尽量不要写出那种,我们自己看不出来优先级的那种表达式 所以尽量用圆括号。
所以再次强调了,我们现在不是 写出一个让人看不懂的程序,而是要你写出呢
既容易懂,又好判断有没有错误的这样的程序
另外在类型转换的时候呢,还有一个 最常见的一个是字符串转成数值,比如说我们要把
那个文本框的文本,输入的文本,它是一个字符串,要转成数值,我们可以用 double.
Parse(s) 或者 int.
Parse(s) 来解析。
另外 数字转成字符串呢,可以 ToString,注意 10 呢,它是一个
也在一定意义上,它也是一个对象,也是一个数据,它可以 ToString。
我们知道任何东西呢 都是对象,都是 object,都可以 ToString
那我们也可以呢用加号,因为加呢它是表示连接,它就转成数字 转成字符串。
还有一个 C# 呢为我们想得特别周到 它专门有一个类叫
Convert 类,这个 Convert 类呢 可以.
To 什么什么,比如说 ToInt 32 就转成 32 位整数
而 ToDouble 呢就转成实数,ToDateTime 呢就转成
时间日期,所以在一定意义上呢,C# 使用起来就特别方便,凡是我们
觉得比较常用的,它一定能找到这样一个类,编程序用 C#,那你真是太幸运了