总体可以认为运算符分为以下几类:算术运算符、关系运算符、逻辑运算符、其余运算符,运算符的样子长下面这样:
其中着重号标注的需要熟练掌握用法。
算术运算符(+ \- * / %)
关系运算符(> < == >= <= !=)
逻辑运算符(! && ||)
赋值运算符(=及扩展运算符又称复合运算符)
求字节运算符 sizeof
强制类型转换运算符 (类型)xxx
看完运算符分类,下面是运算符使用时需要注意的一些点。
可以进行加、减、乘、除、取余运算,使用方法与数学中无异。
值得注意的是:
#include"stdio.h"
int main()
{//%的运算对象只能是整数printf("%d\n", 7 % 3);//输出结果为1printf("%d\n", 7 % -3);//输出结果为1printf("%d\n", -7 % 3);//输出结果为-1printf("%d\n", -7 % -3);//输出结果为-1//a%b余数的正负号只与a的正负有关return 0;
}
通常加减乘除运算会与其余运算符一块使用,每一个算术运算表达式都最终都可以化为一个值。
关系表达式的值只有真或假,由于C语言中没有布尔类型
,通常会使用0代表假、非零代表真即非零即一
,关系运算符的优先级小于算术运算符的优先级。在使用关系运算符时需要严格注意==不要写成=,大于小于不要写成<<>>。下面两个例子就是反例:
#include"stdio.h"
int main()
{int i;//%的运算对象只能是整数printf("%d",i=2);//a%b余数的正负号只与a的正负有关return 0;
}
结果:
与变量的值有关
#include int main() {printf("5==5==5 result:%d\n",5==5==5);printf("5<10<5 result:%d",5<10<5);return 0;
}
结果:
5==5==5 result:0
5<10<5 result:1
这里值得注意的是逻辑非的运算级最高,逻辑或与逻辑与相同优先级但低于关系运算符,逻辑表达式与关系表达式一样,结果只有真或假,逻辑表达式通常写进分支语句或者循环语句中。逻辑运算符有一个特性:短路机制。
规则如下:
示例:可以看出下面代码并没有执行打印操作
#include int main() {int i=0;i&&printf("5==5==5 result:%d\n",5==5==5);return 0;
}
这里着重说一下赋值运算符与sizeof运算符。其余的运算符后面会说到
可以参考以下一个图表。
注意:同一优先级运算符,运算次序由结合方向决定。不同级别优先级遵循以下规则:!>算术运算符>关系运算符>&&>||>赋值运算符。
上一篇:Matlab比较分类数组元素
下一篇:数据结构面试问题总结