1、求模运算特殊点
- 若是包含负数计算机会如何计算
- 被除数为负数,那么余数就是负数;被除数为正数那么余数就是正数
- 举例:
- 11%5=1 ; 11%(-5)=1 ; -11%5=-1 ; -11%(-5)=-1
不管何种状况均可以转化为a%b = a-(a/b)*b微信
2、递增、递减运算符
- 和Java同样,没什么可说的。
- 优先级:只有圆括号优先级比它高;
- (x+y)++这是无效的表达,自增自减运算符只能对一个变量起到做用。
- 原则:(1)若是一个变量出现了一个函数的多个参数中,不要对该变量使用递增递减运算符;如:printf("%d %d",num,num++),可能会出现意想不到的问题;(2)若是一个变量屡次出如今一个表达式中,不要对该变量使用递增或递减运算;如:ans = num + num*num++
3、表达式
4、类型转换
- 当类型转换出如今表达式中,不管是unsigned仍是signed的char和short都会自动转换为Int,若是就有必要还会被转换为unsigned int(若是short与int大小相同,unsigned int就比int大,unsigned short就会被转换为unsigned int)。float不会被转换为double
- 小转换到大,称为升级
- 涉及两种类型的运算,两个值会分别转换为两种类型更高级别
- 类型的级别从低到高:int \ unsigned int \ long \ unsigned long \ long long \ unsigned long long \ float \ double \ long double
- 在计算过程当中,最后的结果会被转换为被赋值变量的类型,这个过程有升级有降级
- 看成为函数参数传递的时候,char和short被转换为int,float被转换为double.函数原型会覆盖自动升级
5、源码: