电竞网站建设方案,公司网站制作,免费ppt模板公众号,wordpress 引用样式表一.算数操作符#xff1a; - * / % 、-、*、/这四个运算符均可用于整数及浮点数的运算。 当使用/运算符时#xff0c;如果两个操作数均为整型#xff0c;那么执行整数除法#xff0c;运算结果也为整型#xff1b;如果两个操作数至少一个为浮…一.算数操作符 - * / % 、-、*、/这四个运算符均可用于整数及浮点数的运算。 当使用/运算符时如果两个操作数均为整型那么执行整数除法运算结果也为整型如果两个操作数至少一个为浮点数那么执行浮点数运算运算结果为浮点型。 %运算符只能用于两个整数相除返回余数。 二.位移操作符 注位移操作符的操作数只能是整数 左移操作符()不论算术移位还是逻辑移位均将左边的数舍弃右边空缺位补0左边丢弃右边补0右移操作符() 当进行逻辑移位时右边位丢弃左边空缺位补0右边丢弃左边补0 当进行算术移位时右边位丢弃左边位补原数的符号位右边丢弃左边补符号位。
拓展 整数的二进制表示有三种——原码反码补码 正整数的原码反码补码相同负的整数的原码反码补码是要计算的整数在内存中储存的是补码 1.例如7——由二进制得111且为正整数四个字节32个比特位所以首位为0
原码00000000000000000000000000000111反码00000000000000000000000000000111补码00000000000000000000000000000111
2..例如-7——由二进制得111且为负整数四个字节32个比特位所以首位为1
原码10000000000000000000000000000111首位为1反码11111111111111111111111111111000原码的符号位不变其他位按位取反补码11111111111111111111111111111001反码1
观察代码及其输出结果
注意
移位操作不改变原值。移位时不能移负数位这个是标准未定义的 三.位操作符 按位与 | 按位或 ^按位异或 注它们的操作数必须是整数 1 按二进制位与
例如观察代码及其结果
%d意味着打印一个有符号的数
思路如下
00000000000000000000000000000011—— 3的补码00000000000000000000000000000101—— -5的原码11111111111111111111111111111010—— -5的反码11111111111111111111111111111011—— -5的补码计算方法比较二者补码同零为零同一为一二者不同为零最后转化为原码输出00000000000000000000000000000011——按位与结果正整数原码和补码相等转化后结果为3 2. | 按二进制位或
例如观察代码及其结果
思路如下
00000000000000000000000000000011—— 3的补码00000000000000000000000000000101—— -5的原码11111111111111111111111111111010—— -5的反码11111111111111111111111111111011—— -5的补码计算方法比较二者补码只要有一为一同时为零为零最后转化为原码输出11111111111111111111111111111011——按位或结果10000000000000000000000000000101——转化为原码符号位不变结果为-5 3. ^ 按二进制位异或
例如观察代码及其结果
思路如下
00000000000000000000000000000011—— 3的补码00000000000000000000000000000101—— -5的原码11111111111111111111111111111010—— -5的反码11111111111111111111111111111011—— -5的补码计算方法比较二者补码相同为零相异为一最后转化为原码输出11111111111111111111111111111000——按位异或结果10000000000000000000000000001000——转化为原码符号位不变结果为-8 例题不能创建临时变量第三个变量实现两个数的交换 如下图交换成功
代码如下
//异或操作符支持交换律
#includestdio.h
int main()
{int a 3;int b -5;printf(交换前a%d,b%d\n, a, b);a a ^ b;//a3^5b a ^ b;//b3^5^5 b3a a ^ b;//a3^5printf(交换后a%d,b%d\n, a, b);
} 四.赋值操作符 赋值运算可以修改一个变量的值复合运算符-*%|^ 如下图所示同理可推理出其他复合运算符的含义 五.单目操作符只有一个操作数 逻辑反操作符- 负值 正值 取地址sizeof 操作数的类型长度以字节为单位~ 对一个数的二进制按位取反-- 前置后置-- 前置后置* 间接访问操作符解引用操作符类型 强制类型转换 上面的操作符基本上前面都已经总结过除了~ 1~按位取反 例题 对一个数的二进制按位取反 包括符号位
例如
#include stdio.h
int main()
{int a -1;//根据前面复习的知识点易得//10000000000000000000000000000001 - 原码//11111111111111111111111111111110 - 反码//11111111111111111111111111111111 - 补码int b ~a; //全部按位取反//b的表示应为//00000000000000000000000000000000 //故将a按位取反之后赋值给b的值为0printf(%d\n, a);printf(%d\n, b);return 0;
} 2sizeof操作数的类型长度以字节为单位
sizeof是操作符不是函数strlen是库函数是用来求字符串长度sizeof括号中的表达式是不参与运算的 六.关系操作符 ! 是等于是赋值不要混淆!是不等于是大于等于是小于等于关系运算符就是进行比较结果为真返回1结果为假返回0 七.逻辑操作符 逻辑与 || 逻辑或 截断特性逻辑与左边为假右边不在读取计算 逻辑或左边为真右边不在读取计算 1 逻辑与 理解为 即 怎么 又 怎么 一假全假全真为真
2|| 逻辑或 理解为 要么 怎么 要么 怎么 一真为真 全假为假 七.条件操作符三目操作符 表达式1表达式2表达式3; 有三个操作数若exp1假则输出exp3若exp1真则输出exp2 八.逗号表达式 exp1exp2exp3...expN 逗号表达式就是逗号隔开的一串表达式逗号表达式的特点是从左向右依次计算整个表达式的结果是最后一个表达式的结果 九.下标引用、函数调用和结构成员 1下标引用操作符[ ] 操作数一个数组名一个索引值 int arr[10];//创建数组
arr[9] 10;//实用下标引用操作符
[ ]的两个操作数是arr和9 2函数调用操作符 接受一个或多个操作数第一个操作数是函数名剩余的操作数就是传递给函数的参数 3访问一个结构的成员 . 结构体.成员名- 结构体指针-成员名 结构体普通变量如何访问结构体成员C语言规定结构体的普通成员可以通过运算符“点.”去访问其成员结构体指针变量如何访问其成员可以通过箭头符号的方式去访问其成员*p.name p - name 左右两种方式等价结构体成员如果是字符串不能直接通过符号“”去修改值可以通过C语言中的拷贝函数strcpy去修改值