// 初识操作符
// 算术操作符 ? // +? -? *? /? % // 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; }
|