C语言34种运算符的用法解析 |
您所在的位置:网站首页 › c语言输出运算符怎么输入 › C语言34种运算符的用法解析 |
运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式) 函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针) 对象指针->成员名 2 - 负号运算符 -表达式 右到左 单目运算符 (类型) 强制类型转换 (数据类型)表达式 ++ 自增运算符 ++变量名 变量名++ 单目运算符 -- 自减运算符 --变量名 变量名-- 单目运算符 * 取值运算符 *指针变量 单目运算符 & 取地址运算符 &变量名 单目运算符 ! 逻辑非运算符 !表达式 单目运算符 ~ 按位取反运算符 ~表达式 单目运算符 sizeof 长度运算符 sizeof(表达式) 3 / 除 表达式 / 表达式 左到右 双目运算符 * 乘 表达式*表达式 双目运算符 % 余数(取模) 整型表达式%整型表达式 双目运算符 4 + 加 表达式+表达式 左到右 双目运算符 - 减 表达式-表达式 双目运算符 5 表达式双目运算符 6 > 大于 表达式>表达式 左到右 双目运算符 >= 大于等于 表达式>=表达式 双目运算符 c); printf("%d < %d 是 %d \n", a, b, a < b); printf("%d < %d 是 %d \n", a, c, a < c); printf("%d != %d 是 %d \n", a, b, a != b); printf("%d != %d 是 %d \n", a, c, a != c); printf("%d >= %d 是 %d \n", a, b, a >= b); printf("%d >= %d 是 %d \n", a, c, a >= c); printf("%d b) is %d \n", result); result = (a == b) && (c < b); printf("(a == b) && (c < b) is %d \n", result); result = (a == b) || (c < b); printf("(a == b) || (c < b) is %d \n", result); result = (a != b) || (c < b); printf("(a != b) || (c < b) is %d \n", result); result = !(a != b); printf("!(a != b) is %d \n", result); result = !(a == b); printf("!(a == b) is %d \n", result); return 0; }输出 (a == b) && (c > b) 为 1 (a == b) && (c < b) 为 0 (a == b) || (c < b) 是 1 (a != b) || (c < b) 为 0 !(a != b) 为 1 !(a == b) 为 0 (a == b) && (c > 5)计算结果为 1,因为两个操作数(a == b)和(c > b)都是 1(真)。(a == b) && (c < b)计算结果为 0,因为操作数(c < b)为 0(假)。(a == b) || (c < b)计算结果为 1,因为(a = b)为 1(真)。(a != b) || (c < b)计算结果为 0,因为操作数(a != b)和(c < b)均为 0(假)。!(a != b)计算结果为 1,因为操作数(a != b)为 0(假)。因此,!(a != b) 为 1(真)。!(a == b)计算结果为 0,因为(a == b)为 1(真)。因此,!(a == b)为 0(假)。C 位运算符 在计算过程中,加法、减法、乘法、除法等数学运算被转换为位级,这使得处理速度更快并节省功耗。 位运算符在 C 编程中用于执行位级运算。 运营商运算符的含义&按位与|按位或^按位异或~按位求补右移 按位与运算符 &如果两个操作数的相应位为1,则按位 AND 的输出为1。如果操作数的任一位为0,则相应位的结果将计算为0。 在 C 编程中,按位 AND 运算符用 表示&。 让我们假设两个整数12和25的按位 AND 运算。 12 = 00001100(二进制) 25 = 00011001(二进制) 12和25的位运算 00001100 & 00011001 ________ 00001000 = 8(十进制)事例按位与 #include int main() { int a = 12, b = 25; printf("Output = %d", a & b); return 0; }结果 输出=8 按位或运算符 |如果两个操作数的至少一个对应位为1,则按位 OR 的输出为1。在 C 编程中,按位 OR 运算符用 表示|。 12 = 00001100(二进制) 25 = 00011001(二进制) 12 和 25 的按位或运算 00001100 | 00011001 ________ 00011101 = 29(十进制) #include int main() { int a = 12, b = 25; printf("Output = %d", a | b); return 0; }结果 输出 = 29 按位 XOR(异或)运算符 ^如果两个操作数的相应位相反,则按位异或运算符的结果为1 。它用 表示^。 12 = 00001100(二进制) 25 = 00011001(二进制) 12 和 25 的按位异或运算 00001100 ^00011001 ________ 00010101 = 21(十进制) #include int main() { int a = 12, b = 25; printf("Output = %d", a ^ b); return 0; }结果 输出 = 21 按位补码运算符 ~按位求补运算符是一种一元运算符(仅适用于一个操作数)。它将1更改为0,将0更改为1。它用 表示~。 35 = 00100011(二进制) 35 的按位求补运算 ~ 00100011 ________ 11011100 = 220(十进制) C 编程中按位补码运算符的扭转35 ( )的按位补码~35是-36而不是220,但为什么呢? 对于任意整数n, 按位求补n将会-(n + 1)。要理解这一点,您应该了解 2 的补码。 2的补码二进制补码是对二进制数的运算。一个数的 2 补码等于该数的补码加 1。例如: 十进制 二进制 2 的补码 0 00000000 -(11111111+1) = -00000000 = -0(十进制) 1 00000001 -(11111110+1) = -11111111 = -256(十进制) 12 00001100 -(11110011+1) = -11110100 = -244(十进制) 220 11011100 -(00100011+1) = -00100100 = -36(十进制) 注意:计算 2 的补码时,溢出被忽略。35的按位补码是220(十进制)。220的 2 的补码是-36。因此,输出是-36而不是220。 任何数字 N 的按位补码是 -(N+1)。就是这样: N 的按位补码 = ~N(以 2 的补码形式表示) ~N 的 2' 补码= -(~(~N)+1) = -(N+1)按位补码 #include int main() { printf("Output = %d\n", ~35); printf("Output = %d\n", ~-12); return 0; }输出 输出=-36 输出 = 11 C 编程中的移位运算符C 语言编程中有两种移位运算符: 右移运算符左移运算符。 右移运算符右移运算符将所有位向右移动一定数量的指定位。它用 表示>>。 212 = 11010100(二进制) 212 >> 2 = 00110101 (二进制) [右移两位] 212 >> 7 = 00000001(二进制) 212 >> 8 = 00000000 212 >> 0 = 11010100(无移位) 左移运算符左移运算符将所有位向左移动一定数量的指定位。左移运算符空出的位用0填充。左移运算符的符号是 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |