优秀的编程知识分享平台

网站首页 > 技术文章 正文

4.C语言:运算符(c语言*运算符)

nanyue 2024-07-18 04:09:07 技术文章 7 ℃

C语言运算符是用于执行特定操作的符号,它们可以应用于一个或多个操作数。C语言中的运算符可以分为几个不同的类别:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和其他运算符。

算术运算符

算术运算符用于执行数学运算,如加法、减法、乘法等。

  • +:加法运算符,用于计算两个操作数的和。
  • -:减法运算符,用于计算两个操作数的差。
  • *:乘法运算符,用于计算两个操作数的乘积。
  • /:除法运算符,用于计算两个操作数的商。
  • %:模运算符,用于计算两个操作数相除的余数(只适用于整数)。
int a = 10, b = 3;
int sum = a + b; // sum = 13
int difference = a - b; // difference = 7
int product = a * b; // product = 30
int quotient = a / b; // quotient = 3
int remainder = a % b; // remainder = 1

关系运算符

关系运算符用于比较两个操作数的值。

  • ==:等于运算符,检查两个操作数是否相等。
  • !=:不等于运算符,检查两个操作数是否不相等。
  • >:大于运算符,检查左操作数是否大于右操作数。
  • <:小于运算符,检查左操作数是否小于右操作数。
  • >=:大于等于运算符,检查左操作数是否大于或等于右操作数。
  • <=:小于等于运算符,检查左操作数是否小于或等于右操作数。
int x = 5, y = 10;
_Bool result1 = (x == y); // result1 = 0 (false)
_Bool result2 = (x != y); // result2 = 1 (true)
_Bool result3 = (x > y); // result3 = 0 (false)
_Bool result4 = (x < y); // result4 = 1 (true)
_Bool result5 = (x >= 5); // result5 = 1 (true)
_Bool result6 = (y <= 10); // result6 = 1 (true)

逻辑运算符

逻辑运算符用于组合多个条件。

  • &&:逻辑与运算符,当所有操作数都为真时返回真。
  • ||:逻辑或运算符,当任一操作数为真时返回真。
  • !:逻辑非运算符,用于反转操作数的逻辑状态。
_Bool a = 1, b = 0;
_Bool result1 = (a && b); // result1 = 0 (false)
_Bool result2 = (a || b); // result2 = 1 (true)
_Bool result3 = !a; // result3 = 0 (false)

位运算符

位运算符用于操作操作数的二进制位。

  • &:按位与运算符,对两个操作数逐位进行与操作。
  • |:按位或运算符,对两个操作数逐位进行或操作。
  • ^:按位异或运算符,对两个操作数逐位进行异或操作。
  • ~:按位取反运算符,对操作数逐位取反。
  • <<:左移运算符,将操作数的所有位向左移指定的位数。
  • >>:右移运算符,将操作数的所有位向右移指定的位数。
unsigned int a = 12; // 二进制: 1100
unsigned int b = 5; // 二进制: 0101
unsigned int result1 = a & b; // result1 = 4 (二进制: 0100)
unsigned int result2 = a | b; // result2 = 13 (二进制: 1101)
unsigned int result3 = a ^ b; // result3 = 9 (二进制: 1001)
unsigned int result4 = ~a; // result4 = 4294967283 (取决于系统,这里是32位)
unsigned int result5 = a << 2; // result5 = 48 (二进制: 110000)
unsigned int result6 = a >> 2; // result6 = 3 (二进制: 0011)

赋值运算符

赋值运算符用于将值赋给变量。

  • =:简单的赋值运算符,将右侧的值赋给左侧的变量。
  • +=:加法赋值运算符,将右侧的值加到左侧的变量上,并将结果赋给左侧的变量。
  • -=:减法赋值运算符,从左侧的变量中减去右侧的值,并将结果赋给左侧的变量。
  • *=:乘法赋值运算符,将右侧的值乘以左侧的变量,并将结果赋给左侧的变量。
  • /=:除法赋值运算符,将左侧的变量除以右侧的值,并将结果赋给左侧的变量。
  • %=:模赋值运算符,将左侧的变量除以右侧的值,并将余数赋给左侧的变量。
  • <<=:左移赋值运算符,将左侧的变量向左移动右侧指定的位数,并将结果赋给左侧的变量。
  • >>=:右移赋值运算符,将左侧的变量向右移动右侧指定的位数,并将结果赋给左侧的变量。
  • &=:按位与赋值运算符,对左侧的变量和右侧的值进行按位与操作,并将结果赋给左侧的变量。
  • |=:按位或赋值运算符,对左侧的变量和右侧的值进行按位或操作,并将结果赋给左侧的变量。
  • ^=:按位异或赋值运算符,对左侧的变量和右侧的值进行按位异或操作,并将结果赋给左侧的变量。
int a = 10;
a += 5; // a = 15
a -= 3; // a = 12
a *= 2; // a = 24
a /= 4; // a = 6
a %= 5; // a = 1
a <<= 1; // a = 2
a >>= 1; // a = 1
a &= 3; // a = 1
a |= 2; // a = 3
a ^= 1; // a = 2

其他运算符

  • sizeof:返回变量或类型的大小(以字节为单位)。
  • &:返回变量的内存地址(作为指针运算符)。
  • *:返回指针指向的值(作为解引用运算符)。
  • ->:用于访问结构体或联合的成员。
  • ?::条件运算符,用于基于条件表达式选择两个值之一。
int a = 5;
printf("Size of int: %zu\n", sizeof(a)); // 输出变量a的大小
printf("Address of a: %p\n", (void*)&a); // 输出变量a的地址

int *ptr = &a;

Tags:

最近发表
标签列表