c语言中的关系运算符和逻辑运算符

1. 逻辑运算符 逻辑运算符是指用形式逻辑原则来建立数值间关系的符号。 Turbo C的逻辑运算符如下:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 操作符 作用

───────────────────────────── && 逻辑与 || 逻辑或 ! 逻辑非

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

2. 关系运算符

关系运算符是比较两个操作数大小的符号。 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中是有规定的。 有关运算符的优先级本节后面将会讲到。

3. 按位运算符

Turbo C和其它高级语言不同的是它完全支持按位运算符。这与汇编语言的 位操作有些相似。

Turbo C中按位运算符有:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 操作符 作用

──────────────────────────── & 位逻辑与 | 位逻辑或 ^ 位逻辑异或 - 位逻辑反 >> 右移 << 左移

━━━━━━━━━━━━━━━━━━━━━━━━━━━━

按位运算是对字节或字中的实际位进行检测、设置或移位, 它只适用于字符 型和整数型变量以及它们的变体, 对其它数据类型不适用。

关系运算和逻辑运算表达式的结果只能是1或0。而按位运算的结果可以取0 或1以外的值。

要注意区别按位运算符和逻辑运算符的不同, 例如, 若x=7, 则x&&8 的值为 真(两个非零值相与仍为非零), 而x&8的值为0。

移位运算符\和\是指将变量中的每一位向右或向左移动, 其通常形式 为:

右移: 变量名>>移位的位数 左移: 变量名<<移位的位数

经过移位后, 一端的位被\挤掉\而另一端空出的位以0 填补, 所以, Turbo C中的移位不是循环移动的。

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

三 Turbo C运算符的优先级

Turbo C规定了运算符的优先次序即优先级。当一个表达式中有多个运算符 参加运算时, 将按下表所规定的优先级进行运算。表中优先级从上往下逐渐降低, 同一行优先级相同。 例如:

表达式 10>4&&!(100<99)||3<=5 的值为1 表达式 10>4&&!(100<99)&&3<=5 的值为0

Turbo C运算符的优先次序

━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━ 表达式 ┃优先级 ────────────────────────────╂──── ()(小括号) [](数组下标) .(结构成员) ->(指针型结构成员)┃ 最高 ────────────────────────────┃ ↑

!(逻辑非) .(位取反) -(负号) ++(加1) --(减1) &(变量地址)┃ │ ────────────────────────────┃ │ *(指针所指内容) type(函数说明) sizeof(长度计算) ┃ │ ────────────────────────────┃ │ *(乘) /(除) %(取模) ┃ │ ────────────────────────────┃ │ +(加) -(减) ┃ │ ────────────────────────────┃ │ <<(位左移) >>(位右移) ┃ │ ────────────────────────────┃ │

<(小于) <=(小于等于) >(大于) >=(大于等于) ┃ │ ────────────────────────────┃ │ ==(等于) !=(不等于) ┃ │ ────────────────────────────┃ │ &(位与) ┃ │ ────────────────────────────┃ │ ^(位异或) ┃ │ ────────────────────────────┃ │ |(位或) ┃ │ ────────────────────────────┃ │ &&(逻辑与) ┃ │ ────────────────────────────┃ │ ||(逻辑或) ┃ │ ────────────────────────────┃ │ ?:(?表达式) ┃ │ ────────────────────────────┃ │ = += -=(联合操作) ┃ │ ────────────────────────────┃ │ ,(逗号运算符) ┃ 最低

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4