第三章 表达式

1 操作符

表达式由操作数和操作符组成

2 算术表达式

+ - * / %

3 自增和自减表达式

++ --

4 位运算表达式

对数据按二进制位进行运算

&与、|或、^异或 `取补 <<左移 >>右移

5 赋值表达式

= += -= *= /= %= &= |= ^= <<= >>=

6 关系表达式

== != < > <= >= is

7 条件逻辑表达式

&& || !

8 其它特殊表达式

8.1 一元加减表达式

int i=+2;
int j=+i;

8.2 条件表达式

i==0?x:y

8.3 类型表达式
8.3.1 类型转换表达式

(T) e

8.3.2 类型获取表达式

typeof

8.3.3 类型转换检查表达式

is as

is运算返回布尔值

as运算返回转换之后的类型

8.4 创建表达式

new

8.5 溢出表达式

checked unchecked

用于控制程序是否对算术运算和类型转换时可以发出的溢出进行检查。

如果不加申明,默认对常量表达式溢出检查为checked,而对非常量表达式的溢出检查为unchecked.

使用了checked操作符的表达式,对于常量表达式,如果运算发生溢出,代码将不能通过编译,例如下面代码都是不合法的。

byte b1=(byte) 256;// 默认为checked,错误:发生溢出
byte b2=checked(255+1);//错误:发生溢出

对于非常量表达式,代码可通过编译,但执行到溢出代码时,会发生"System.OverflowException"异常,如:

byte b1=255;
byte b2=checked(b1+1);//异常,发生溢出

使用了unchecked操作符的表达式,如果运算发生溢出,超出的部分将被截断,成为合法表达式。

int i1=int.MaxValue;//2147483647
int i2=unchecked(i1+1);//-2147483648
时间: 2024-08-08 09:40:37

第三章 表达式的相关文章

第三章 表达式 Lua程序设计笔记

--第三章 表达式--3.1 算数操作符--3.2 关系操作符其计算结果是true或false.如果两个值的类型不同,则Lua认为他们不相等.nil只与自身相等.对于table.userdata和函数,Lua作引用比较,只有当它们引用同一个对象时,才认为它们相等. --3.3逻辑操作符--3.4字符串连接Lua中字符串是不可变的值,连接操作符只会创建一个新字符串,而不会对员操作数进行修改.--3.5优先级Lua二元操作符中只有^ 和..是右结合,其他都是左结合 --3.6table构造式{} 混

Lua 第三章--表达式

表达式用于表示值.Lua的表达式中可以包含数字常量.字面字符串.变量.一元和二元操作符及函数调用.另外有别于传统的是,表达式中还可以包括函数定义和table构造式. Lua支持常规的算术操作符有:二元的+.-.*./.^.%,及一元 - (负号).取模操作符计算结果的符号永远与第二个参数相同. Lua提供的关系操作符有:>.<.>=.<=.==.~=.所有这些操作符的运算结果都是true或false. 逻辑操作符有and.or 和not .与条件控制语句一样,所有的逻辑操作符将fa

JavaScript高级程序设计(第3版)第三章读书笔记

第三章  基本概念 ECMAScript中的一切(变量.函数名和操作符)都区分大小写. 标识符是指变量.函数.属性的名字,或者函数的参数. 标识符的组成规则是:第一个字符必须是一个字母.下划线(_)或一个美元符号($):其他字符可以是字母.下划线.美元符号或数字. ECMAScript标识符采用驼峰大小写格式. ECMAScript注释包括单行注释(//)和块级注释(/*  *  */). ECMAScript 5引入了严格模式的概念,严格模式是为JavaScript定义了一种不同的解析与执行模

第三章 数据处理

第三章  处理数据 3.1  简单变量 3.1.1  变量名 C++标识符命名规则如下:    ●  在名称中只能使用字母字符.数字和下划线    ●  名称的第一个字符不能是数字   ●  区分大写字母和小写字母   ●  不能将C++关键字用作名称   ●  以两个下划线或下划线和大写字母开始的名称被保留给实现(编译器及其资源)使用,以一个下划线开头的名称被保留给实现(库函数的实现).   ●  C++对名称的长度没有限制,但是某些平台有限制 3.1.2  命名方案 在变量名中使用变量类型作

紫书第三章 数组和字符串

1  序 系统的整理下第三章的学习笔记.例题代码是在未看书本方法前自己尝试并AC的代码,不一定比书上的标程好:习题除了3-8百度了求解方法,其它均独立完成后,会适当查阅网上资料进行整理总结.希望本博文方便自己日后复习的同时,也能给他人带来点有益的帮助(建议配合紫书--<算法竞赛入门经典(第2版)>阅读本博客).有不足或错误之处,欢迎读者指出. 2  例题 2.1  UVa272--Tex Quotes #include <stdio.h> int main() { bool log

MySQL Cookbook读书笔记第三章

1,查询指定列/从指定列中查询 若需要指定每一列在查询结果中出现的先后顺序,可以在select语句中指定(dstuser在dsthost之后): 查询显示用户所关注的列: 2,指定查询行 使用where关键字可以查询符合条件限制的数据例如:查找srchost为venus或者srchost以s开头的行记录: 使用操作符like进行模式匹配,其中%表示通配符,代表一个差多为任意值的字符串. where使用操作符and可以查询多个条件: 条件并集: 3,格式化显示查询结果 当查询语句中没有重命名列名,

Java 第三章 选择结构

第三章   选择结构 if基本语法: if(条件){// 表达式 // 代码块 } eg: int a = 10; if(a > 1){ System.out.println("内容"); } if(){ // 代码块}else{ // 代码块}eg:if(score >= 90){ System.out.println("奖励Mp4一个");}else{ System.out.println("枪毙");} 语法:if(条件){ /

家庭作业——第二章和第三章

第二章 2.59和2.66 2.59  编写一个C表达式,使它生成一个字,由x的最低有效字节和y的剩下的字节组成.对于运算数x=0x89ABCDEF和y=0x76543210,就得到0x76432EF. 答:(x&0xFF)|(y&~0xFF) 验证: 2.66  写出代码实现如下函数: /* *Generate mask incicating leftmost 1in x.   Assume w=32. *For example 0xFF00 ->0x8000, and 0x660

【Oracle】第三章索引视图序列

第三章索引视图序列 序列是用来生成唯一,连续的整数的数据库对象.序列是用来自动生成主键或唯一键的值. CREATE SEQUENCE  sequence_name START WITH  integer INCREMENT BY  integer MAXVALUE   integer|nomaxvalue MINVALUE    integer|nominvalue CYCLE|NOCYCLE CACHE  integer|nocache; START WITH     指要生成的第一个序列号,