nbhkdz.com冰点文库

c语言运算符优先级

时间:2018-07-01


c 语言运算符优先级

Turbo C 的运算符非常丰富, 主要分为三大类: 算术运算符, 关系运算符与 逻辑运算符, 按位运算符。除此之外, 还有一些用于完成特殊任务的运算符。 下 面分别进行介绍。 5.1 算术运算符 Turbo C 的算术运算符如下: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 操作符 作用 ──────────────────────────── + 加, 一目取正 减, 一目取负 * 乘 / 除 % 取模 -减1 ++ 加1 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 一、一目和二目操作 一目操作是指对一个操作数进行操作。例如: -a 是对 a 进行一目负操作。 二目操作(或多目操作)是指两个操作数(或多个操作数)进行操作。 在 Turbo C 中加、减、乘、除、取模的运算与其它高级语言相同。需要注 意 的是除法和取模运算。 例如: 15/2 是 15 除以 2 商的整数部分 7 15%2 是 15 除以 2 的余数部分 1 对于取模运算符"%", 不能用于浮点数。 另外, 由于 Turbo C 中字符型数会自动地转换成整型数, 因此字符型数也 可 以参加二目运算。 例如: main() { char m, n; /*定义字符型变量*/ m='c'; /*给 m 赋小写字母'c'*/ n=m+'A'-'a'; /*将 c 中的小写字母变成大写字母'B'后赋给 n*/ ... } 上例中 m='c'即 m=98, 由于字母 A 和 a 的 ASCII 码值分别为 65 和 97。 这样 可以将

小写字母变成大写字母, 反之, 如果要将大写字母变成小写字母, 则用 c+ 'a' -'A'进行计算。 二、增量运算 在 Turbo C 中有两个很有用的运算符, 在其它高级语言中通常没有。这两 个 运算符就是增 1 和减 1 运算符"++"和"--", 运算符"++"是操作数加 1, 而"--" 则是 操作数减 1。 例如: x=x+1 可写成 x++, 或++x x=x-1 可写成 x--, 或--x x++(x--)与++x(--x)在上例中没有什么区别, 但 x=m++和 x=++m 却有很大差 别。 x=m++ 表示将 m 的值赋给 x 后, m 加 1。 x=++m 表示 m 先加 1 后, 再将新值赋给 x。 三、赋值语句中的数据类型转换 类型转换是指不同类型的变量混用时的类型改变。 在赋值语句中, 类型转换规则是: 等号右边的值转换为等号左边变量所属的类型。 例如: main() { int i, j; /*定义整型变量*/ float f, g=2.58; /*定义浮点型变量*/ f=i*j; /*i 与 j 的乘积是整型数, 被转换成为浮点数赋给 f*/ i=g; ... /*g 中的浮点型数转换成为整型数赋给 i*/

} 由于 Turbo C 按上述数据类型转换规则, 因此在作除法运算时应特别注意。 例如: main() { float f; int i=15; f=i/2; } 上面程序经运行后, f=7 并不等于准确值 7.5。正确的程序应该是: main() { float f; int i=15;

f=i/2.0; } 也可直接将 i 定义为浮点数。 5.2 关系运算符和逻辑运算符 一、逻辑运算符 逻辑运算符是指用形式逻辑原则来建立数值间关系的符号。 Turbo C 的逻辑运算符如下: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 操作符 作用 ───────────────────────────── && 逻辑与 || 逻辑或 ! 逻辑非 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 二、关系运算符 关系运算符是比较两个操作数大小的符号。 Turbo C 的关系运算符如下: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 操作符 作用 ───────────────────────────── > 大于 >= 大于等于 < 小于 <= 小于等于 == 等于 != 不等于 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 关系运算符和逻辑运算符的关键是真(true)和假(false)的概念。Turbo C 中 true 可以是不为 0 的任何值, 而 false 则为 0。 使用关系运算符和逻辑运算符 表达 式时, 若表达式为真(即 true)则返回 1, 否则, 表达式为假(即 false), 则返回 0。 例如: 100>99 返回 1 10>(2+10) 返回 0 !1&&0 返加 0 对上例中表达式!1&&0, 先求!1 和先求 1&&0 将会等于出不同的结果, 那么 何 者优先呢? 这在 Turbo C 中是有规定的。 有关运算符的优先级本节后面将会讲 到。

5.3 按位运算符 Turbo C 和其它高级语言不同的是它完全支持按位运算符。这与汇编语言的 位操作有些相似。 Turbo C 中按位运算符有: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 操作符 作用 ──────────────────────────── & 位逻辑与 | 位逻辑或 ^ 位逻辑异或 位逻辑反 >> 右移 << 左移 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 按位运算是对字节或字中的实际位进行检测、设置或移位, 它只适用于字 符 型和整数型变量以及它们的变体, 对其它数据类型不适用。 关系运算和逻辑运算表达式的结果只能是 1 或 0。 而按位运算的结果可以 取0 或 1 以外的值。 要注意区别按位运算符和逻辑运算符的不同, 例如, 若 x=7, 则 x&&8 的值 为 真(两个非零值相与仍为非零), 而 x&8 的值为 0。 移位运算符">>"和"<<"是指将变量中的每一位向右或向左移动, 其通常形 式 为: 右移: 变量名>>移位的位数 左移: 变量名<<移位的位数 经过移位后, 一端的位被"挤掉", 而另一端空出的位以 0 填补, 所以, Turbo C 中的移位不是循环移动的。 5.4 Turbo C 的特殊运算符 一、"?"运算符 "?"运算符是一个三目运算符, 其一般形式是: <表达式 1>?<表达式 2>:<表达式 3>; "?"运算符的含义是: 先求表达式 1 的值, 如果为真, 则求表达式 2 的值并 把 它作为整个表达式的值; 如果表达式 1 的值为假, 则求表达式 3 的值并把它作 为 整个表达式的值。 例如: main() { int x, y; x=50;

y=x>70?100:0; } 本例中, y 将被赋值 0。如果 x=80, y 将被赋值 100。 因此, "?"运算符可以代替某些 if-then-else 形式的语句。 二、"&"和"*"运算符 "&"运算符是一个返回操作数地址的单目操作符。 "*"运算符是对"&"运算符的一个补充, 它返回位于这个地址内的变量值, 也 是单目操作符。 例如: main() { int i, j, *m; i=10; m=&i; /*将变量 i 的地址赋给 m*/ j=*m; /*地址 m 所指的单元的值赋给 j*/ } 上面程序运行后, i=10, m 为其对应的内存地址, j 的值也为 10。 三、","运算符 ","运算符用于将多个表达式串在一起, ","运算符的左边总不返回, 右边 表 达式的值才是整个表达式的值。 例如: main() { int x, y; x=50; y=(x=x-5, x/5); } 上面程序执行后 y 值为 9, 因为 x 的初始值为 50, 减 5 后变为 45, 45 除 5 为 9 赋给 y。 四、sizeof 运算符 sizeof 运算符是一个单目运算符, 它返回变量或类型的字节长度。 例如: sizeof(double) 为 8 sizeof(int) 为2 也可以求已定义的变量, 例如: float f; int i; i=sizeof(f); 则 i 的值将为 4。

五、联合操作 Turbo C 中有一特殊的简写方式, 它用来简化一种赋值语句, 适用于所有的 双目运算符。其一般形式为: <变量>=<变量><操作数><表达式> 相当于 <变量><操作数>=<表达式> 例如: a=a+b 可写成 a+=b a=a&b 可写成 a&=b a=a/(b-c) 可写成 a/=b-c 5.5 Turbo C 运算符的优先级 Turbo C 规定了运算符的优先次序即优先级。 当一个表达式中有多个运算 符 参加运算时, 将按下表所规定的优先级进行运算。表中优先级从上往下逐渐降 低, 同一行优先级相同。 例如: 表达式 10>4&&!(100<99)||3<=5 的值为 1 表达式 10>4&&!(100<99)&&3<=5 的值为 0
Turbo C 运算符的优先次序 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━ 表达式 ┃优先级 ────────────────────────────╂──── ()(小括号) [](数组下标) .(结构成员) ->(指针型结构成员)┃ 最高 ────────────────────────────┃ ↑ !(逻辑非) .(位取反) -(负号) ++(加 1) --(减 1) &(变量地址)┃ │ ────────────────────────────┃ │ *(指针所指内容) type(函数说明) sizeof(长度计算) ┃ │ ────────────────────────────┃ │ *(乘) /(除) %(取模) ┃ │ ────────────────────────────┃ │ +(加) -(减) ┃ │ ────────────────────────────┃ │ <<(位左移) >>(位右移) ┃ │ ────────────────────────────┃ │ <(小于) <=(小于等于) >(大于) >=(大于等于) ┃ │ ────────────────────────────┃ │ ==(等于) !=(不等于) ┃ │ ────────────────────────────┃ │ &(位与) ┃ │ ────────────────────────────┃ │ ^(位异或) ┃ │ ────────────────────────────┃ │

|(位或) ┃ │ ────────────────────────────┃ &&(逻辑与) ┃ │ ────────────────────────────┃ ||(逻辑或) ┃ │ ────────────────────────────┃ ?:(?表达式) ┃ │ ────────────────────────────┃ = += -=(联合操作) ┃ │ ────────────────────────────┃ ,(逗号运算符) ┃ 最低

│ │ │ │ │


赞助商链接

C语言运算符优先级及口诀

C语言运算符优先级及口诀 - C 语言运算符优先级及口诀 一共有十五个优先级: 1 2 () [] . ! ~ 类型) 3 4 5 6 7 8 9 * + >> > == & ^ /...

c语言运算符优先级

c语言运算符优先级 - c 语言运算符优先级 c 语言运算符优先级(一) Turbo C 的运算符非常丰富, 主要分为三大类: 算术运算符, 关系运算符与逻辑运算 符, 按...

标准C语言运算符优先级

标准C语言运算符优先级 - ANSI C Operator Priority... 标准C语言运算符优先级_计算机软件及应用_IT/计算机_专业资料。ANSI C Operator Priority ...

C语言运算符的优先级、结合方向、使用形式等详细列表

C语言运算符优先级、结合方向、使用形式等详细列表 - 总结成一个表格的形式,看了一目了然,希望可以帮到正在学习C语言的孩纸们 O(∩_∩)O~

C语言运算符优先级表

C语言运算符优先级表 - 语言运算符优先级表(由上至下,优先级依次递减) C 语言运算符优先级表(由上至下,优先级依次递减) 运算符 () [] -> . ! ~ ++...

C语言运算符优先级详解

C语言运算符优先级详解 - 优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。 它们是单目运算符、 条件运算符、 所有的优先级中,...

C语言运算符优先级

C语言运算符优先级 - 优先级 1 运算符 [] () 名称或含义 数组下标 圆括号 使用形式 数组名[常量表达式] (表达式)/函数名(形 参表) 结合方向 左到右 ...

C语言运算符优先级

C语言运算符优先级_计算机软件及应用_IT/计算机_专业资料。C 语言运算符优先级 优先级 运算符 [] () 1 . -> 成员选择(对象) 成员选择(指针) 对象.成员名...

C语言运算符优先级

C语言运算符优先级_计算机软件及应用_IT/计算机_专业资料。C 语言运算符优先级 详细列表运算符的优先级:C语言中,运算符的运算优先级共分为15 级。1 级最高,...

C语言运算符优先级列表(超详细)

C语言运算符优先级列表(超详细)_电子/电路_工程科技_专业资料。C语言运算符优先级列表 C 语言运算符优先级列表(超详细) 作者: 本篇文章是对 C 语言中运算符...