《C# .NET基本数据类型与表达式(工程师培训)》由会员分享,可在线阅读,更多相关《C# .NET基本数据类型与表达式(工程师培训)(53页珍藏版)》请在金锄头文库上搜索。
1、基本数据类型与表达式 本章要点 VisualC NET数据类型概述 VisualC NET简单数据类型的使用 VisualC NET的常量和变量 VisualC NET的运算符与表达式 VisualC NET的常用方法 2 1循序渐进学理论 2 1 1VisualC NET的标识符在VisualC NET中定义标识符时 必须符合以下命名规则 1 标识符必须是由字母 数字 下划线组成的一串符号 且必须以字母或下划线开头 2 由于标识符代表对象的名称 所以用户在选取标识符时应选取有意义的字符序列 以便在程序中能从标识符看出所标识的对象 从而便于阅读和记忆 3 用户定义的标识符不能与C 语言的关键字
2、同名 2 1 2VisualC NET的数据类型简介 2 1 3简单数据类型 1 整数数据类型 2 字符数据类型 C 的字符类型有以下特点 1 每个字符占2个字节 2 C 中的字符型与整型之间不能再像C C 中自动转换 以下语句在C 中不合法 charc 13 不过用户依旧可以将一个整型数显式地转换为一个字符数据类型 然后赋值给字符变量 如下 charc char 13 3 布尔类型 布尔类型 bool 只含有两个数值 true和false 4 实数类型实数类型又称浮点型 C 中的浮点型包含单精度浮点型 float 和双精度浮点型 double 两种 1 单精度型 取值范围为 之间 精度为7位
3、数 2 双精度型 取值范围为 之间 精度可达15到16位 使用实数类型 需注意以下几个问题 1 存在正0和负0 2 存在正无穷大和负无穷大 一般产生在除数为0的情况下 例如 1 2 0 0的结果是正无空大 1 2 0 0的结果为负无空大 3 存在非数字值 Not a Number 简称NaN 当出现0 0 0 0这种非法运算的时候就会出现非数字值 4 对于浮点运算 如果运算结果的绝对值在精度范围内小到一定程度 系统就会当做0值处理 0或 0 5 小数类型 又称十进制类型 其类型说明符为decimal 主要用于金融领域 又称金融类型 其表示的值的范围大约是到 比float类型小 但是其精确度却可
4、以达到28到29位 在十进制类型的数据的后面加上 m 表示该数据是小数类型 如0 1m 123 9m等 2 1 4常量与变量 1 常量常量又叫常数 是在程序运行过程中其值不改变的量 常量也有数据类型 在C 语言中 常量的数据类型有多种 分别是 sbyte byte short ushort int uint long ulong char float double decimal bool string等 符号常量声明的格式如下 格式 常量修饰符 const类型说明符常量名 常量表达式 例如 publicconstintA 1 B 3 与C C 类似 在C 中 一个常量可以依赖于另一个符号常量
5、 但不能形成循环依赖 例如 classConstExample publicconstintA 1 publicconstintB A 2 注意 常量是静态的 能够在类中访问 例2 1 分析下列程序的执行结果 程序代码 classConstExample publicconstintA 1 publicconstintB A 2 A 3 publicstaticvoidMain System Console WriteLine A 0 B 1 ConstExample A ConstExample B 程序分析 本题在类ConstExample中定义了两个常量A和B 它们之间不存在相互依赖的关
6、系 常量是静态的 可以直接访问 所以最后输出的结果是1和12 运行结果 2 变量 1 变量的含义及其定义变量是指在程序运行过程中其值可以发生变化的量 定义变量的一般格式如下 格式 变量修饰符 类型说明符变量名1 初值1 变量名2 初值2 例如 有以下变量定义语句 privatestaticintgz 65 publicdoublejj 76 8 2 静态变量和实例变量 声明变量时 使用static关键字声明的变量为静态变量 静态变量只需创建一次 在后面的程序中就可以多次引用 静态变量的初始值就是该变量类型的默认值 实例变量是指在声明变量时没有使用static变量说明符的变量 也称普通变量 实例
7、对象在指定的对象中被声明并分配空间 如果实例变量所在的对象被撤消了 该变量也就从内存中被清除了 例2 2 分析下列程序的运行结果 程序代码 usingSystem 引入命名空间classStaticTest 定义类 publicstaticintsta1 10 定义静态变量 该变量只创建一次 由类名访问publicinta2 10 定义实例变量 每创建一个实例时 均创建一个变量 classStaticExample publicstaticvoidMain StaticTestA B 定义类的变量 A newStaticTest 创建类的实例AB newStaticTest 创建类的实例BSt
8、aticTest sta1 StaticTest sta1 10 通过类名给静态变量赋值A a2 A a2 10 给实例A的成员a2赋值StaticTest sta1 StaticTest sta1 10 通过类名给静态变量赋值B a2 B a2 20 给实例B的成员a2赋值 输出静态变量和实例A的成员a2的值Console WriteLine StaticTest sta1 0 A a2 1 StaticTest sta1 A a2 输出静态变量和实例B的成员a2的值Console WriteLine StaticTest sta1 0 B a2 1 StaticTest sta1 B a2
9、 运行结果 3 局部变量 局部变量是临时变量 它只是在定义它的块内起作用 所谓块是指大括号 和 之间的所有内容 局部变量从被声明的位置开始起作用 当块结束时 局部变量也会随着消失 使用局部变量需注意初始化问题 局部变量需要人工赋值后才能使用 例2 3 分析下列程序的运行结果 程序代码 usingSystem publicclassLocalTest publicstaticvoidLocalExample inti 210 k 定义局部变量i和kk i 2 给局部变量k赋值Console WriteLine i 0 k 1 i k 输出i和k的值 publicstaticvoidMain Lo
10、calExample 调用函数Console WriteLine i 0 k 0 i k 此语句将产生错误 运行结果 2 1 5运算符与表达式 1 运算符与表达式概述 1 运算符和表达式的概念C 中各种运算是用符号来表示的 用来表示运算的符号称运算符 用运算符把运算对象连接起来的有意义的式子称为表达式 每个表达式的运算结果是一个值 2 运算对象和运算符的 目 运算符必须有运算对象 根据运算对象的多少可以把运算符分成单目运算符 双目运算符和三目运算符 3 运算符的优先级和结合性计算下面的表达式 3 5 2大家都知道先算 号再算 号 其实这里就涉及到运算符的优先级问题 即当表达式中出现多个运算符
11、计算表达式值时 必须决定运算符的运算次序 我们把这个问题称为运算符的优先级 有如下的表达式 Sb a c 该表达式应先算括号内的 a c 然后再用b乘上 a c 的运算结果 当在一个表达式中出现多个同级别的运算符时 应先算谁呢 这就涉及到运算符的结合性 2 算术运算符与算术表达式 1 基本算术运算符 2 增1 减1 运算符 例2 4 分析下列程序的运行结果 程序代码 usingSystem classArthTest publicstaticvoidMain intn 10 m 3 floatf 5 0F g 10 0F doubled 5 0 e 10 0 Console WriteLine
12、 n m 0 n m 1 n m 2 n m 3 n m 4 n m n m n m n m n m Console WriteLine d e 0 d e 1 d e 2 d e 3 d e d e d e d e Console WriteLine n m f g d 0 n m f g d Console WriteLine n m f d 0 n m f d 运行结果 2 5 分析下列程序的运行结果 程序代码 usingSystem classAddSub publicstaticvoidMain inta 4 b 5 m n m a b n a b Console WriteLine
13、 m 0 n 1 m n m a b n a b Console WriteLine m 0 n 1 m n 运行结果 3 关系运算符与关系表达式 关系运算符均是双目运算符 它们的优先级和结合性如下 优先级 1 算术运算符优于关系运算符 2 优于 结合性 等运算符同级 结合性自左向右 等运算符同级 结合性自左向右 2 6 分析下列程序的运行结果 程序代码 usingSystem classCompOP publicstaticvoidMain inti 1 j 7 charc1 A c2 a Console WriteLine 0 1 2 i j i j ic2 c1 c2 c1 c2 运行结
14、果 4 逻辑运算符与逻辑表达式 逻辑运算符的优先级和结合性如下 优先级 1 逻辑非 是单目运算符 优于双目运算符 2 逻辑与 和逻辑或 是双目运算符 其优先级如下 双目算术运算符优于关系运算符优于 优于 结合性 1 逻辑非 和单目算术运算符是同级的 结合性自右向左 2 逻辑与 和逻辑或 是双目运算符 其结合性是自左向右 2 7 分析下列程序的运行结果 程序代码 usingSystem classLTest publicstaticvoidMain intx 3 y 5 a 2 b 3 Console WriteLine a b 运行结果 5 位运算符 位运算符用来对操作数进行位运算 其运算对象
15、是整型和字符型 1 位逻辑运算符 位与运算符 位或运算符 异或运算符 取反运算符 2 位移位运算符 左移运算符 位运算符在表达式中的优先级可概括成如下几点 位反 运算符为单目运算符 优于所有的双目运算符和三目运算符 位移位运算符优先级相同 比算术运算符的优先级低 比关系运算符的优先级高 位逻辑运算符的优先级比关系运算符的优先级低 比逻辑运算符的优先级高 三个位逻辑运算符的优先次序为 优于 优于 2 8 分析下列程序的运行结果 程序代码 usingSystem classWeiTest publicstaticvoidMain chary x x char 0 x9d y char 0 xa5
16、Console WriteLine x 执行结果 6 赋值运算符与赋值表达式 赋值运算符的优先级与结合性如下 优先级 在C 语言中 所有的赋值和自反赋值运算符的优先级都是一样的 比所有的其它运算符的优先级都低 是优先级最低的运算符 结合性 赋值和自反赋值运算符的结合性是自右向左 7 条件运算符与条件表达式 条件运算符是C 语言中的唯一的一个三目运算符 它是由 和 两个符号组成 它的三个对象都是表达式 其一般形式如下 表达式1 表达式2 表达式3条件运算符的优先级和结合性如下 优先级 仅优于赋值运算符 结合性 自右向左 例如 有下面的程序段 x 5 y 8 m x y x y 由于x y的值为false 故条件表达式的值为y 即8 把8赋给m m的值为8 8 其它运算符 9 运算符的优先级 2 1 6常用方法 要调用以上方法 其一般形式如下 System Math 方法名 参数 另外在Math类中还定义了两个重要的常数 Math PI 圆周率 3 14159265358979323846 和Math E 自然对数底 2 7182818284590452354 2 2典型实例练能力 2 2