大型网站建设推广,设计托管网站建设,wordpress app上传图片,网站地图咋做✨✨ 欢迎大家来到莉莉的博文✨✨ #x1f388;#x1f388;养成好习惯#xff0c;先赞后看哦~#x1f388;#x1f388; 前面我们已经讲过算术操作符、赋值操作符、逻辑操作符、条件操作符和部分的单目操作 符#xff0c;今天继续介绍一部分。
目录
1.操作符的分类
2… ✨✨ 欢迎大家来到莉莉的博文✨✨ 养成好习惯先赞后看哦~ 前面我们已经讲过算术操作符、赋值操作符、逻辑操作符、条件操作符和部分的单目操作 符今天继续介绍一部分。
目录
1.操作符的分类
2.移位操作符
2.1左移操作符 2.2右移操作符
3.位操作符
4.单目操作符
5.逗号表达式 6.下标访问[]、函数调用()
6.1下标引用操作符 [ ] 6.2函数调用操作符 1.操作符的分类 •算术操作符 、- 、* 、/ 、% • 移位操作符: • 位操作符: | ^ • 赋值操作符: 、 、 - 、 * 、 / 、% 、 、 、 、| 、^ • 单目操作符 、、--、、*、、-、~ 、sizeof、(类型) • 关系操作符: 、 、 、 、 、 ! • 逻辑操作符 、|| • 条件操作符 ? : • 逗号表达式 , • 下标引用 [] • 函数调用 () • 结构成员访问 . 、- 关系操作符、条件操作符、逻辑操作符https://blog.csdn.net/wait___wait/article/details/135269329 结构成员访问操作符https://blog.csdn.net/wait___wait/article/details/136178916 算术操作符、赋值操作符、单目操作符C语言之操作符1 操作符中有一些操作符和二进制及原码、反码、补码有关系。我们先了解二进制和进制转换的知识https://blog.csdn.net/wait___wait/article/details/136137220
原码、反码、补码https://blog.csdn.net/wait___wait/article/details/136138289
当然清楚的铁铁也可以不用看啦 2.移位操作符
右移操作符
左移操作符
注移位操作符的操作数只能是整数
警告 对于移位运算符不要移动负数位这个是标准未定义的。 例如
int num 10;
num-1; //error
2.1左移操作符 移位规则左边抛弃、右边补0 #include stdio.h
int main()
{int num 10;int n num1;printf(n %d\n, n);//20printf(num %d\n, num);//10return 0;
} 最终结果为n 20, num 10。 如果想要num的值也改变则可以使用复合赋值 num 1; 从运行结果可以推出左移一位有乘2的效果。 2.2右移操作符 移位规则首先右移运算分两种 1.逻辑右移左边用0填充右边丢弃 2.算术右移左边用原该值的符号位填充右边丢弃 采用哪种运算规则由编译器决定常见的编译器采用算术右移 与左移一位类似右移一位有除2的效果但也有例外 -1 1的结果还是-1算术右移) #include stdio.h
int main()
{int num 10;int n num1;printf(n %d\n, n);printf(num %d\n, num);return 0;
} 3.位操作符
位操作符有 //按位与 两个整数对应的二进制位如果有0则为0| //按位或 两个整数对应的二进制位只要有1则为1^ //按位异或 两个整数对应二进制位相同为0相异为1,异或的结果不会溢出因为不会进位~ //按位取反 所有二进制位按位取反包括符号位 注他们的操作数必须是整数操作的是二进制位。 按位异或通常的使用公式 a ^ a0 a ^ 0a 位操作符需要与逻辑操作符进行区分 //逻辑或 || //逻辑与 //逻辑取反 举例
#include stdio.h
int main()
{int num1 -3;int num2 5;printf(%d\n, num1 num2);//3printf(%d\n, num1 | num2);//-5printf(%d\n, num1 ^ num2);//-8printf(%d\n, ~0);//-1return 0;
}
分析 我们知道数据的计算是通过它的补码进行计算的 -3的原码10000000000000000000000000000011 -3的反码11111111111111111111111111111100 -3的补码11111111111111111111111111111101 5的原反补 00000000000000000000000000000101 -3 5的补码00000000000000000000000000000101 由于符号位为0所以是正数而正数的原反补相同因此-3 5的结果是3 -3 | 5、-3 ^ 5以此类推结果为-5、-8 ~0的补码:11111111111111111111111111111111 符号位是1负数所得补码的原码10000000000000000000000000000001— -1 移位操作符和位操作符很重要总有些题用上它们秒变简单这里举一些它们的使用场合。
不能创建临时变量第三个变量实现两个数的交换https://blog.csdn.net/wait___wait/article/details/136143074 4.单目操作符
单目操作符有这些 、、--、、*、、-、~ 、sizeof、(类型) 单目操作符的特点是只有一个操作数在单目操作符中只有和*没有介绍这2个操作符我们放在学习指针的时候学习。单目操作符 https://blog.csdn.net/wait___wait/article/details/135242898
5.逗号表达式 exp1, exp2, exp3, …expN 逗号表达式就是用逗号隔开的多个表达式如果表达式的结果要赋值给另一个变量则在表达式的外面加上括号。 逗号表达式从左向右依次执行。整个表达式的结果是最后一个表达式的结果。 //代码1
int a 1;
int b 2;
int c (a b, a b 10, a, b a 1); //逗号表达式
c是多少//13//代码2
if (a b 1, c a / 2, d 0)//代码3 冗长
a get_val();
count_val(a);
while (a 0)
{//业务处理a get_val();count_val(a);
}
如果使用逗号表达式代码3可改写成
while (a get_val(), count_val(a), a 0)
{//业务处理
} 6.下标访问[]、函数调用()
6.1下标引用操作符 [ ] 下标引用操作符是一个双目操作符可能你会很奇怪明明中括号里面就一个操作数为什么是双目操作符那我们现在就先来看看它的操作数到底是哪些。 操作数一个数组名一个索引值索引值就是数组的下标 int arr[10]; //创建数组
arr[9] 10; //实用下标引用操作符。
[ ]的两个操作数是arr和9 6.2函数调用操作符
接受⼀个或者多个操作数第⼀个操作数是函数名剩余的操作数就是传递给函数的参数。
#include stdio.h
void test1()
{printf(hehe\n);
}
void test2(const char* str)
{printf(%s\n, str);
}
int main()
{test1(); //这⾥的()就是作为函数调⽤操作符。test2(hello bit.); //这⾥的()就是函数调⽤操作符。return 0;
} 写作不易您的认同给与我莫大的鼓励