C词汇:操作符和推论
产品目录
微积分操作符
亲密关系操作符
方法论操作符
位操作符
表达式操作符
其它操作符
推论句子C词汇提供更多了下列运算法
微积分操作符亲密关系操作符方法论操作符位操作符表达式操作符圣吉龙县操作符微积分操作符
加 +、减 –、乘 *、除/、求余 % 、自加 ++、自减 —
# include <stdio.h> int main() { int a = 4; // 声明定义和初始化 int b = 2; // 声明定义和初始化 int c; // 声明定义c = a + b;// 加 6 c = a – b; // 减 2 c = a * b; // 乘 8 c = a / b; // 除 2 c = a % b; // 求余 0 }a++ 先表达式再自加
++a 先自加再表达式
# include <stdio.h> int main() { int c; // 声明定义 int a = 4; // 声明定义和初始化 c = a++; // 自加 printf(“先表达式再运算”); printf(“%d\n”, c);// 4 printf(“%d\n”, a); // 5 a = 4; // 声明定义和初始化 c = a–; // 自减 printf(“%d\n”, c); // 4 printf(“%d\n”, a); // 3 printf(“先运算再表达式”); a = 4; // 声明定义和初始化 c = ++a; // 自加 printf(“%d\n”, c); // 5 printf(“%d\n”, a); // 5 a = 4; // 声明定义和初始化 c = –a; // 自减 printf(“%d\n”, c); // 3 printf(“%d\n”, a); // 3 }亲密关系操作符
推论相等 ==、推论不等 !=、大于 >、小于<、大于等于 >=、小于等于 <=
注意:C词汇中没有这种级联写法 a<b<c ,正确的写法应为 a<b && b<c
方法论操作符
与 &&:同真为真或 || :有一个真,为真非 !:转换,真变假,假变真位操作符
位操作符作用于位,并逐位执行操作。
按位与 &按位或 |按位异或 ^取反 ~二进制左移操作符 <<二进制右移操作符 >>C词汇中移位运算比乘除法效率更高,右移是除法,左移是乘法,
移1位=21=2移2位=22=4移3位=23=8移4位=24=16a = a << 3; // a=a*8; b = b >> 3; // ab=b/8; a = a * 9; // 分析a*9可以拆分成a*(8+1)即a*8+a*1, 因此可以改为: a=(a<<3)+a a = a * 7; //分析a*7可以拆分成a*(8-1)即a*8-a*1, 因此可以改为: a=(a<<3)-a注意:
只有整型数据才能用移位替代乘除法,如:char、short、int、long、unsigned char、unsigned short、unsigned int、unsigned long。(double、float、bool、long double则不可以进行移位操作)
有符号数据类型移位需要注意符号位:
对负数进行左移:符号位始终为1,其它位左移。对正数进行左移:所有位左移,即 <<,如果超出int能表达的返回可能会变成负数。对正数进行右移:所有位右移,即 >>表达式操作符
简单表达式 = ;a=10
+=、-=、*=、/=、%=等等,a+=1等于a=a+1
其它操作符
sizeof()
返回变量的大小
sizeof(a) 将返回 4,其中 a 是整数
&
返回变量的地址
&a; 将给出变量的实际地址
*
指向一个变量
*a; 将指向一个变量
? :
条件表达式
如果条件为真 ? 则值为 X : 否则值为 Y
推论句子
if 句子
if(布尔值为真) { /* 如果布尔表达式为真将执行的句子 */ }if … else 句子
if(布尔值为真) { /* 如果布尔表达式为真将执行的句子 */ } else { /* 如果布尔表达式为假将执行的句子 */ }if…else if…else 句子
if(boolean_expression 1) { /* 当布尔表达式 1 为真时执行 */ } else if( boolean_expression 2) { /* 当布尔表达式 2 为真时执行 */ } else if( boolean_expression 3) { /* 当布尔表达式 3 为真时执行 */ } else { /* 当上面条件都不为真时执行 */ }switch 句子
#include <stdio.h> int main () { /* 局部变量定义 */ char grade = B; switch(grade) { case A : printf(“成绩为A \n” ); break; case B : printf(“成绩为B \n” ); break; case C : printf(“成绩为C \n” ); break; case D : printf(“成绩为D \n” ); break; case F : printf(“成绩为E \n” ); break; default : printf(“不及格 \n” ); } return 0; }
