// 初识操作符
// 算术操作符
// + - * / %
// 9/2 = 4 ,而不是4.5,/ 只能取商,如果想要得到4.5。如下。
// % 取模,也叫取余,9%2 = 1
#include<stdio.h>
int main()
{
float a = 9 / 2.0;//(按小数的算法算);
printf("%f", a);
}
// 移位操作符
// <<(左移操作符)>> (右移操作符);
// 左移操作符--移动的是二进制位(右移也是一样的)
// 位操作符
//&(按位与)|(按位或) ^(按位异或)
// 赋值操作符
// = += -= *= /= &= ^= |= >>= <<=
// a = a+2 ---- a+=2
// a = a-2 等于 a -=2
// a = a*2 等于 a*=2
// 其他赋值操作符与此方法相同
// 单目操作符
// 如a+b,加号有两个操作数,使用叫做双目操作符,同理,单目操作符就是只有一个操作数
// ! 逻辑反操作,在C语言中,0表示假,非0表示真,如:a = 10; !a就是0,如果a = 0; !a就是1,(默认1)
int main()
{
int a;
if (a)
printf("1");// 如果a 为真就打印1
if (!a)
printf("0");// 如果 a为假就打印 0
return 0;
}
// - 负值
// + 正值
// & 取地址
// sizeof 操作数的类型长度(以!字节!为单位)
// ~ 对一个数的二进制按位取反,把所有二进制位中的数字,1变成0,0变成1
int main()
{
int a = 0;
printf("%d\n", ~a);// 结果为-1
return 0;
}
// a我们给的是一个整形,一个整形4个字节,一个字节8个比特位,就是32bit,~a就是32位1,整形在内存中储存的是补码,且,一个整数的二进制表示有三种,原码,反码和补码
// -1:
// 10000000000000000000000000000001(原码) 最高位为1,表示负数
// 11111111111111111111111111111110(反码)原码到反码,符号位不变,其他位按位取反,反码加一得到补码
// 11111111111111111111111111111111(补码)这些 原码,反码和补码主要是针对负数的,因为正整数的原码反码和补码相同
// -- 前置,后置--
// ++ 前置,后置++
int main()
{
int a = 10;
int b = ++a;
int c = 10;
int d = c++;
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
printf("%d\n", d);
// 前置++ ,先++,后使用,所以a,b结果就是两个11,后置++,先使用后++,所以c,d就是11,10,就是先把c的值赋予d,再++,所以d打印就是10,c打印就是11
return 0;
}
// * 间接访问操作符(解引用操作符)
// (类型) 强制类型转换
int main()
{
int a = 3.14;// 3.14是double类型,如果使用int会有警告,提示可能会丢失精度,如果想强制类型转换,可以在3.14前面加一个(int)
int a = (int)3.14;// 强制类型转换
return 0;
}
// 关系操作符
// > 大于
// >= 大于等于
// < 小于
// <= 小于等于
// != 不等于 用于测试“不等于"
// == 等于 用于测试“相等”
// 逻辑操作符
// && 逻辑与
// 比如 a = 3 ,b = 5 ,则a && b就为真,二者其中一个为假(为0),结果就为假
// || 逻辑或
// 比如 a = 3 ,b = 0 ,则a || b 就为真,二者其中一个为真就为真,两个假结果才为假。
// 条件操作符(三目操作符)
// exp1 ? exp2 : exp3
// exp1(express)表达式若为真,成立,则计算exp2,整个表达式的结构是:exp2的结果
// exp1(express)表达式若为假,不成立,则计算exp3,整个表达式的结构是:exp3的结果
// 如:求出a,b中的最大值
int main()
{
int a = 3;
int b = 0;
int max = 0;
max = a > b ? a : b;
printf("%d\n", max);
return 0;
}
// 逗号表达式
// exp1,exp2,exp3,....expN
int main()
{
int a = 2;
int b = 3;
int c = 5;
int d = (a = b + 2, c = a - 10, b = c + 2);
printf("%d\n", d);
return 0;
}
// 下标引用,函数调用和结构成员
// [] () . ->
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
printf("%d\n", arr[5]);//在这里,中括号就是起到了下标引用的作用,叫做下标引用操作符、
// 调用函数时,函数名后面的()就是函数调用操作符,
return 0;
}