对于最基础的"hello,world"就不做详细讲解了,今天来聊一下运算符。 运算符是一种告诉编译器执行特定的数字或者逻辑操作的符号,简单来说就是机器有自己的语言,你用的运算符可以 让他进行计算。
运算符分类:
- 算数运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
算术运算符:
简单的算数运算符就是'+' '-' '*' '/', 除法这里有一点需要注意,'/' 是取商 '%' 是取余
| / | 分子除以分母(分母不能为0,如果a、b皆为整数则得到商) |
|---|---|
| % | 取模运算符,整除后的余数 |
| ++ | 整数值增加1 |
|---|---|
| -- | 整数值减少1 |
#include <stdio.h>
int main() {
int a = 10;
int b = 20 ;
int c;
c = a + b ;
printf ( "%d ",c);
c = a - b ;
printf ("%d ",c);
c = a * b;
printf ( "%d ",c);
c = a / b ;
printf ( "%d ",c);
c = a % b ;
printf ( "%d ",c);
c = a++;
printf ( "%d ",c);
c = a—-;
printf ("%d ", c);
return 0 ;
}
输出结果:30,-10,200,0,10,10,11
a++与++a的区别:
a++先赋值后运算
#include <stdio.h>
int main () {
int a = 10;
int c;
c = a++;
printf("%d", c);
printf("%d", a);
a = 10;
c = a--;
printf("%d", c);
printf("%d", a);
return 0;
++a先运算后赋值
#include <stdio.h>
int main () {
int a = 10;
int c;
c = ++a;
printf("%d", c);
printf("%d", a);
a = 10;
c = --a;
printf("%d", c);
printf("%d", a);
return 0;
}
++a相当于a=a+1,a++相当于a+1
a+1不会改变a的值,a=a+1会改变a的值
比较运算符:
| == | 两数值是否相等,相等为真 |
|---|---|
| != | 两数值是否相等,不等为真 |
| '>' | 左值是否大于右值,是则为真 |
| --- | --- |
| < | 左值是否小于右值,是则为真 |
| >= | 左值是否大于等于右值,是则为真 |
|---|---|
| <= | 左值是否小于等于右值,是则为真 |
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
printf("%d ", a, b);
printf("%d ", a != b);
printf("%d ", a > b);
printf("%d ", a < b);
printf(" %d ", a >= b);
printf("%d ", a <= b);
return 0;
}
输出结果:0,1,0,1,0,1
逻辑运算符:
| && | 逻辑与:当且仅当两个操作数都为真时,逻辑与运算符返回真(true)。否则,返回假(false)。 |
|---|---|
| "ll" | 逻辑或:当两个操作数中至少有一个为真时,逻辑或运算符返回真(true)。否则,返回假(false)。 |
| ! | 逻辑非:将操作数的逻辑值取反。如果操作数为真,则逻辑非运算符返回假(false),如果操作数为假,则返回真(true)。 |
#include <stdio.h>
int main() {
int a = 1; int b = 0;
printf("%d ", a && b);
printf("%d ", a || b);
printf("%d ",!(a && b));
return 0;
}
输出结果:0,1,1
位运算符
假设A = 60,B=13,以二进制表示
A= 0011 1100
B= 0000 1101
按位与 &(只要有0则为0)
A= 0011 1100 & B= 0000 1101 =0000 1100
按位或 |(有1则为1)
A= 0011 1100 | B= 0000 1101 =0011 1101
按位异或(相同为0不同为1)
A= 0011 1100 ^ B= 0000 1101 =0011 0001
按位取反 (0变1,1变0)
~ A= 0011 1100 =1100 0011
赋值运算符
以下是常见的赋值运算符以及它们的介绍:
- 等号(=):将右侧的值赋给左侧的变量。
例如:
int x;
x = 5;
在上面的代码中,将值5赋给变量x。
- 加等于(+=):将右侧的值加到左侧的变量中,并将结果赋给左侧的变量。
例如:
int x = 5;
x += 3; // 等价于 x = x + 3;
在上面的代码中,将变量x的值加3,并将结果赋给变量x。
- 减等于(-=):将右侧的值从左侧的变量中减去,并将结果赋给左侧的变量。
int x = 5;
x -= 3; // 等价于 x = x - 3;
在上面的代码中,将变量x的值减3,并将结果赋给变量x。
- 乘等于(*=):将右侧的值乘到左侧的变量中,并将结果赋给左侧的变量。
int x = 5;
x *= 3; // 等价于 x = x * 3;
在上面的代码中,将变量x的值乘3,并将结果赋给变量x。
- 除等于(/=):将左侧的变量除以右侧的值,并将结果赋给左侧的变量。
int x = 15;
x /= 3; // 等价于 x = x / 3;
在上面的代码中,将变量x的值除以3,并将结果赋给变量x。
- 模等于(%=):将左侧的变量对右侧的值取模,并将结果赋给左侧的变量。
int x = 15;
x %= 4; // 等价于 x = x % 4;
在上面的代码中,将变量x的值对4取模,并将结果赋给变量x。
需要注意的是,赋值运算符的左侧必须是一个变量,不能是常量或表达式。同时,赋值运算符通常与其他运算符组合使用,形成复合赋值运算符,它们的作用与普通赋值运算符相同,但更简洁、更易读。
运算符优先级
以下是常见的运算符优先级,按照从高到低的顺序列出:
请注意,有些编程语言可能具有不同的运算符优先级规则,因此请在使用时查看相应的文档。
- 括号 (),用于改变运算符的优先级顺序。
- 单目运算符,例如递增/递减运算符(++,--)和取反运算符(!)。
- 算术运算符,包括乘法(*)、除法(/)、取模(%)、加法(+)和减法(-),它们的优先级相同,按照从左到右的顺序结合。
- 移位运算符,包括左移运算符(<<)和右移运算符(>>),它们的优先级相同,按照从左到右的顺序结合。
- 关系运算符,包括小于(<)、大于(>)、小于等于(<=)、大于等于(>=)和等于(==)、不等于(!=),它们的优先级相同,按照从左到右的顺序结合。
- 位运算符,包括按位与(&)、按位或(|)、按位异或(^),它们的优先级相同,按照从左到右的顺序结合。
- 逻辑运算符,包括逻辑与(&&)和逻辑或(||),它们的优先级相同,按照从左到右的顺序结合。
- 条件运算符,也称为三元运算符,包括条件判断符(?)和冒号(:),按照从右到左的顺序结合。
- 赋值运算符,例如等号(=)、加等于(+=)、减等于(-=)、乘等于(*=)、除等于(/=)等,它们的优先级相同,按照从右到左的顺序结合。