01 运算符

RUI大约 3 分钟

算术运算符

算术运算符用于执行常见的数学运算。

OperatorNameDescriptionExample
+加 Addition将两个值相加x + y
-减 Subtraction从另一个值中减去一个值x - y
*乘 Multiplication将两个值相乘x * y
/除 Division将一个值除以另一个x / y
%取模 Modulus返回除法余数x % y
++增量 Increment将变量的值增加 1++x
--乘量 Decrement将变量的值减 1--x

提示

++运算符分为前自增,后自增
--运算符分为前自减,后自减

#include <stdio.h>
int main()
{
    int a = 0;
    printf("后自增%d\n" , a++);
    printf("%d\n" , a);
    a = 0;
    printf("前自增%d\n" , ++a);
    return 0;
}

赋值运算符

赋值运算符用于为变量赋值。

在下面的示例中,我们使用 赋值 运算符 (=) 将值 10 分配给名为 x 的变量:

int x = 10;

加法赋值运算符 (+=) 将值添加到变量:

int x = 10;
x += 5;

所有赋值运算符的列表:

符号示例如同
=x = 5x = 5
+=x += 3x = x + 3
-=x -= 3x = x - 3
*=x *= 3x = x * 3
/=x /= 3x = x / 3
%=x %= 3x = x % 3
&=x &= 3x = x & 3
|=x |= 3x = x | 3
^=x ^= 3x = x ^ 3
>>=x >>= 3x = x >> 3
<<=x <<= 3x = x << 3
#include <stdio.h>
int main()
{
    int a = 1;
    //a += 2;
    //a = a + 2;
    printf("%d\n" , a);
    return 0;
}

比较运算符

比较运算符用于比较两个值。

注意: 比较的返回值为 true (1) 或 false (0)。

在以下示例中,我们使用 大于 运算符 (>) 来确定 5 是否大于 3:

#include <stdio.h>
int main()
{
  int x = 5;
  int y = 3;
  printf("%d", x > y); // 返回 1(真),因为 5 大于 3
  return 0;
}

所有比较运算符的列表:

符号名称示例
==等于x == y
!=不等于x != y
>大于x > y
<小于x < y
>=大于或等于x >= y
<=小于或等于x <= y

逻辑运算符

逻辑运算符用于确定变量或值之间的逻辑:

符号名称说明示例
&&与逻辑如果两个语句都为真,则返回真x < 5 && x < 10
||或逻辑如果其中一个语句为真,则返回真x < 5 || x < 4
!非逻辑反转结果,如果结果为真则返回假!(x < 5 && x < 10)
#include <stdio.h>
int main()
{
  int x = 5;
  int y = 3;
  int z = 6;
  printf("%d", x > y && z > x); // 返回 1(真)
  printf("%d", x > y && z < x); // 返回 0(假)
  return 0;
}

位运算符

运算符描述实例
&按位与操作,按二进制位进行"与"运算('A' & 'B') 将得到 64 即为 0100 0000
|按位或运算符,按二进制位进行"或"运算('A' | 'B') 将得到 67 即为 0100 0011
^异或运算符,按二进制位进行"异或"运算('A' ^ 'B') 将得到 3 即为 0000 0011
~取反运算符,按二进制位进行"取反"运算(~'A') 将得到 -66 即为 ......
<<二进制左移运算符'A' << 2 将得到 260 即为 0001 0000 0100
>>二进制右移运算符'A' >> 2 将得到 16 即为 0001 0000

提示

'A'二进制0100 0001
'B'二进制0100 0010

下面的实例,了解 C 语言中所有可用的位运算符

#include <stdio.h>
 
int main()
{
  unsigned int a = 60;    /* 60 = 0011 1100 */  
  unsigned int 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 );
}

当上面的代码被编译和执行时,它会产生下列结果:

Line 1 - c 的值是 12
Line 2 - c 的值是 61
Line 3 - c 的值是 49
Line 4 - c 的值是 -61
Line 5 - c 的值是 240
Line 6 - c 的值是 15
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.4