标签:double 决定 语言 tab order soft clu nbsp 计算
% 取模(取余)运算符的注意事项:
1)取模运算符的操作数只能是整数
2)取模运算符的正负性取决于前面那个操作数正负
3)如果取模运算的左边小于右边, 那么结果就是左边
取余(模运算):5%3=2; -5%3=-2; 5%-3=2; -5%-3=-2 (余数的符号与被除数一致!)
2%9=2;
int a = 10.6;
int b = 10.5 + 1.7;
int b = 10.5 + 10; //将右边的10提升为了double类型
自动将大类型转换为了小类型,会丢失精度
(相同数据类型的值才能进行运算(比如加法运算),而且运算结果依然是同一种数据类型。系统会自动对占用内存较少的类型做一个“自动类型提升”的操作)
float a = 10 + 3.45f;//int 提升为 float
int b = ‘A‘ + 32; // char 提升为 int
double c = 10.3f + 5.7; // float 提升为 double
double b = 1.0 / 2;
(将大范围的数据赋值给小范围变量时,系统会自动做一个强制类型转换的操作,这样容易丢失精度)
double a = (double)1 / 2;
double b = (double)(1 / 2);
int i = 10.7; //系统转
int i = (int) 10.7; //自己强转
int a = 198l; // long 转换为 int
char b = 65; // int 转换为 char
int c = 19.5f; // float 转换为 int
赋值运算符的结合方向是:从右到左,而且优先级比算术运算符低
赋值运算符是所有运算符中除了逗号运算符以外优先级最低的
int b = ++a; //等价于 a=a+1; b=a;
int b = a++; //等价于 b=a; a=a+1;
运算规则:先左++,再赋值,最后右++。
sizeof可以用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。
注意:sizeof是一个运算符, 不是一个函数
利用sizeof计算的格式: sizeof(变量/常量/数据类型);
sizeof一共有3种形式:
举例:
#include <stdio.h>
int main() {
char c=‘a‘;
printf("%lu, %lu\n", sizeof(10), sizeof(c));//4, 1
printf("%lu, %lu\n", sizeof 10, sizeof c);//4, 1
printf("%lu\n", sizeof(int));//4
return 0;
}
例如:a=a+1,b=3*4
它的一般形式为:表达式1,表达式2,… …,表达式n
逗号表达式的运算过程是:先算表达式1,再算表达式2,依次算到表达式n
整个逗号表达式的值是最后一个表达式的值
//逗号运算符
#include <stdio.h>
//逗号运算符类似于加减乘除运算符,逗号运算符取最后一个表达式的值。
int main(){
int num,num1;
num=4,7; //逗号运算符的优先级低于赋值运算符
num1=(4,7); //提高逗号运算符的优先级,先逗号运算,再赋值运算
printf("num=%d num1=%d\n",num,num1); // num=4 num1=7
return 0;
}
< 小于运算符
<= 小于等于运算符
> 大于运算符
>= 大于等于运算符
== 等于运算符
!= 不等于运算符
关系运算符的返回值只有两种, 要么真, 要么假. 1(真)和0(假)
使用注意(优先级):
如:3+4>8-2;//结果为1; 等价于:(3+4)>(8-2);
如:4>3>2;//结果为0
如:2==3>1;//结果为0; 等价于:2==(3>1);
int a=3>4+7;//结果为0
int b=(3>4)+7;//结果为7
int c=5!=4+2*7>3==10;//结果为0
&& 逻辑与 、|| 逻辑或 、! 逻辑非
使用注意:
&& 和 || 都具有短路特征:
如果前一个表达式能决定最终结果则不会计算后一个表达式!
#include <stdio.h> int main() { //逻辑运算符&&和||的短路特征 int a=3,b=4,c=5,r; r=(a>b)&&(++b>c); printf("%d,%d,%d,%d\n", a, b, c, r);//3, 4, 5, 0 r=(a<b++)||(b<c++); printf("%d,%d,%d,%d\n", a, b, c, r);//3, 5, 5, 1
//非短路的逻辑运算符&和| a=3;b=4;c=5; r=(a>b)&(b>++c); printf("%d,%d,%d,%d\n", a, b, c, r);//3, 4, 6, 0 r=(a<b)|(b<c++); printf("%d,%d,%d,%d\n", a, b, c, r);//3, 4, 7, 1 return 0; } |
逻辑运算符的优先级顺序为: 小括号() > 负号 - > ! > 算术运算符 > 关系运算符 > && > ||
条件运算符(三目运算符 " ? : "):表达式1?表达式2:表达式3
如果表达式1为真,三目运算符的运算结果为表达式2的值,否则为表达式3的值
单目运算符:操作数只有一个(-1;)
双目运算符:操作数有两个(1 - 2;)
三目运算符:操作数有三个(5 > 4 ? 1 : 0)
当我们不确定某些运算符的优先级的时候,可以使用() 来明确优先级
标签:double 决定 语言 tab order soft clu nbsp 计算
原文地址:http://www.cnblogs.com/bossren/p/6369637.html