#include<stdio.h> intmain() { int a = 21; int b = 21; int c ; c = a++; // 赋值后再加 1 ,c 为 21,a 为 22 printf("c = a++ ----> c = %d\n", c ); //输出: c = a++ ----> c = 21
c = ++b; // 赋值后再加 1 ,c 为 21,a 为 22 printf("c = ++b ----> c = %d\n", c ); //输出: c = ++b ----> c = 22 }
关系运算符
假设变量 A 的值为 10,变量 B 的值为 20,则:
运算符
描述
实例
==
检查两个操作数的值是否相等,如果相等则条件为真。
(A == B) 为假。
!=
检查两个操作数的值是否相等,如果不相等则条件为真。
(A != B) 为真。
>
检查左操作数的值是否大于右操作数的值,如果是则条件为真。
(A > B) 为假。
<
检查左操作数的值是否小于右操作数的值,如果是则条件为真。
(A < B) 为真。
>=
检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。
(A >= B) 为假。
<=
检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。
(A <= B) 为真。
逻辑运算符
假设变量 A 的值为 1,变量 B 的值为 0,则:
&& :逻辑与运算符。如果两个操作数都非零,则条件为真。 (A && B) 为假。 || :逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 (A || B) 为真。 ! :逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 !(A && B) 为真。
#include<stdio.h> intmain() { unsignedint a = 60; /* 60 = 0011 1100 */ unsignedint b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ printf("Line 1 - c 的值是 %d\n", c ); c = a | b; /* 61 = 0011 1101 */ printf("Line 2 - c 的值是 %d\n", c ); c = a ^ b; /* 49 = 0011 0001 */ printf("Line 3 - c 的值是 %d\n", c ); c = ~a; /*-61 = 1100 0011 */ printf("Line 4 - c 的值是 %d\n", c ); c = a << 2; /* 240 = 1111 0000 */ printf("Line 5 - c 的值是 %d\n", c ); c = a >> 2; /* 15 = 0000 1111 */ printf("Line 6 - c 的值是 %d\n", c ); }
结果:
1 2 3 4 5 6
Line 1 - c 的值是 12 Line 2 - c 的值是 61 Line 3 - c 的值是 49 Line 4 - c 的值是 -61 Line 5 - c 的值是 240 Line 6 - c 的值是 15
赋值运算符
1 2 3 4 5 6 7 8 9 10 11
= C = A + B 将把 A + B 的值赋给 C += C += A 相当于 C = C + A -= C -= A 相当于 C = C - A *= C *= A 相当于 C = C * A /= C /= A 相当于 C = C / A %= C %= A 相当于 C = C % A <<= C <<= 2 等同于 C = C << 2 >>= C >>= 2 等同于 C = C >> 2 &= C &= 2 等同于 C = C & 2 ^= C ^= 2 等同于 C = C ^ 2 |= C |= 2 等同于 C = C | 2