Lecture4一C运算符与表达式 绳伟光 微纳电子学系 上海交通大学 2017-03-03 1/67
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lecture 4 — C 运算符与表达式 绳伟光 微纳电子学系 上海交通大学 2017-03-03 1 / 67
提纲 概念引入 C运算符 算术运算符 赋值运算符 自增/自减运算符 复杂表达式相关问题 关系操作符 逻辑运算符 位运算符 C类型转换 隐式转型 显式转型 类型定义 sizeof运算符 2/67
. .. .. . . .. .. .. . . .. .. .. . . .. .. .. . . .. . . .. .. . 提纲1 概念引入 2 C 运算符 算术运算符 赋值运算符 自增 /自减运算符 复杂表达式相关问题 关系操作符 逻辑运算符 位运算符 3 C 类型转换 隐式转型 显式转型 类型定义 sizeof 运算符 2 / 67
提纲 概念引入 2 C运算符 。算术运算符 。赋值运算符 。自增/自减运算符 。复杂表达式相关问题 。关系操作符 。逻辑运算符 ·位运算符 C类型转换 。隐式转型 显式转型 。类型定义 。sizeof运算符 ¥口,9,¥意¥面20攻C 3/67
. .. .. . . .. .. .. . . .. .. .. . . .. .. .. . . .. . . .. .. . 提纲1 概念引入 2 C 运算符 算术运算符 赋值运算符 自增 /自减运算符 复杂表达式相关问题 关系操作符 逻辑运算符 位运算符 3 C 类型转换 隐式转型 显式转型 类型定义 sizeof 运算符 3 / 67
C运算符与表达式概念引入 o Mathematic Calculation=Mathematic Equation ●Computation→Expression(表达式) o Mathematic Symbol→C Operator(运算符) ·常量(Constants)和变量(Variables)是最简单的表达式 ●运算符+常量/变量→复杂表达式 运算符也被称为操作符,可以混用! 4/67
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C 运算符与表达式概念引入 Mathematic Calculation ⇒ Mathematic Equation Computation ⇒ Expression (表达式) Mathematic Symbol ⇒ C Operator (运算符) 常量 (Constants) 和变量 (Variables) 是最简单的表达式 运算符 + 常量/变量 ⇒ 复杂表达式 运算符也被称为操作符,可以混用! 4 / 67
C运算符种类 o Arithmetic operators:+,-*,/ o Relational operators:>,>=,>,&,,~, o Self increment/decrement:++,- o Others(C provides ~50 operators) 5/67
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C 运算符种类 Arithmetic operators: +, −, ∗, /, % Relational operators: >, >=, >, &, |, ∼, ˆ Self increment/decrement: ++, −− Others (C provides ∼50 operators) 5 / 67
提纲 概念引入 2 C运算符 ·算术运算符 ●赋值运算符 ●自增/自减运算符 ·复杂表达式相关问题 ●关系操作符 ·逻辑运算符 ·位运算符 C类型转换 。隐式转型 0 显式转型 0 类型定义 sizeof运算符 6/67
. .. .. . . .. .. .. . . .. .. .. . . .. .. .. . . .. . . .. .. . 提纲1 概念引入 2 C 运算符 算术运算符 赋值运算符 自增 /自减运算符 复杂表达式相关问题 关系操作符 逻辑运算符 位运算符 3 C 类型转换 隐式转型 显式转型 类型定义 sizeof 运算符 6 / 67
算术运算符 ●C提供了5个二元(Binary)运算符 o+:addition o-:subtraction *multiplication ●/:division ●%:remainder ·二元运算符需要两个操作数,左操作数和右操作数 ●C提供了两个一元(Unary)算术运算符 ●+:unary plus ●-:unary minus 7167
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 算术运算符 C 提供了 5 个二元 (Binary) 运算符 +: addition −: subtraction ∗: multiplication /: division %: remainder 二元运算符需要两个操作数,左操作数和右操作数 C 提供了两个一元 (Unary) 算术运算符 +: unary plus −: unary minus 7 / 67
一元算术运算符 ●一元运算符只需要一个操作数 0j=+1; ●j=-1; ·unary+运算符只是表明其操作数是正值,没有其它意义 8/67
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一元算术运算符 一元运算符只需要一个操作数 j = +1; j = –1; unary + 运算符只是表明其操作数是正值,没有其它意义 8 / 67
二元算术运算符 。i%j得到的值是i除以j的余数(Remainder) 10%3的结果为1,而12%4的结果为0 二元运算符,除了求模符外,都允许整型、浮点型以及混合 型的操作 ·算术运算符作用于整型和浮点型的混合操作数时,结果为浮 点型 9+2.5f的结果为11.5,6.7f/2的结果为3.35 9/67
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 二元算术运算符 i % j 得到的值是 i 除以 j 的余数 (Remainder) 10 % 3 的结果为 1, 而 12 % 4 的结果为 0 二元运算符,除了求模符外,都允许整型、浮点型以及混合 型的操作 算术运算符作用于整型和浮点型的混合操作数时,结果为浮 点型 9 + 2.5f 的结果为 11.5, 6.7f / 2 的结果为 3.35 9 / 67
/与%运算符 /和%运算符需特别注意: ·如果所有操作数都是整数,/将对结果进行截断(Truncate), 1/2的结果应该为0,而不是0.5 。%运算符只用于整型操作数,如果任一操作数为非整型,编 译不通过 ●用0作为/和%的右操作数结果为未定义 ●在C89中,/和%的操作数中包含负数时,结果由实现确定 ●在C99中明确规定:整数除法的结果向0进行截断;求模 运算ⅰ%j的结果符号与ⅰ相同 10/67
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / 与% 运算符 / 和% 运算符需特别注意: 如果所有操作数都是整数,/ 将对结果进行截断 (Truncate), 1 / 2 的结果应该为 0,而不是 0.5 % 运算符只用于整型操作数,如果任一操作数为非整型,编 译不通过 用 0 作为/ 和% 的右操作数结果为未定义 在 C89 中,/ 和% 的操作数中包含负数时,结果由实现确定 在 C99 中明确规定:整数除法的结果向 0 进行截断;求模 运算 i % j 的结果符号与 i 相同 10 / 67