神奇的C语言之类型大小,运算顺序排列篇

  

   printf("%d\n",5 % 3);    输出结果为:  2

   printf("%d\n",5 % -3);     输出结果为: 2

   printf("%d\n",-5 % 3);     输出结果为: -2

   printf("%d\n",-5 % -3);  输出结果为: -2

    总结:%取余结果的正负号取决于%前面的数的正负号!

   数据类型就是来规定变量内存空间有多大的

数值类型转换注意规则:         short < int < long < float < double

1.从小类型转化为大类型:double num = 6;   //自动类型转换   ( 6是整数型小于double类型 )

 从大类型转小类型:   int num1 = (int)num    //此时的num是doublel类型,而num1是整形。需要强制转换     

2.(重点)  &&”关系中当执行左侧的结果为佳的时候,右侧将不执行。

例如:

int num = 10;
int result = num++ > 11 && num-- < 20;           //num++>11 等价于 10>11  错误。  所以&&右侧的代码将不会执行  (短路运算)
printf("result=%d\tnum=%d\n",result,num);
结果:result=0    num=11

3.运算符的优先级

出现同级别运算符时的结合方向是从左往右

最高级:( )圆括号    [ ]下标运算符号     ->指向结构体成员运算符        .结构体成员运算符

第二级:!、~、++、--、-、(类型)、*、&、sizeof。

    这一级都是单目运算符号,这一级的结合方向是从右向左。

    比如出现*p++,这时*和++同级别,先算右边,再左边。

    *****所以*p++等价于*(p++),而不是(*p)++。*****

第三级:+、-、*、/、%    先乘除取余,后加减

第四级:<<、>>   这是左移、右移运算符,位运算时可能需要用到。

第五级:<、<=、>、>=、!=、==     这些运算符也称为关系运算符,其中<、<=、>、>=高于!=、==。

第六级:&、^、|  这三个符号也是位运算符号,其中内优先级,&>^>|。

第七级:&&、||  逻辑与&&优先级大于逻辑或||。

第八级:?  :   也称为条件运算符号,是C语言中唯一的一个三目运算符,结合顺序是从右往左。

           z = x > y ? x : y     解释:如果x > y 则把x赋值给z,否则把y赋值给z

第九级:=、+=、-+、*=、/=、%=

    这些运算符也叫做赋值运算符,除此之外,>>=、<<=、&=、^=、|=这些赋值运算符也在这一级别内,结合顺序是从右往左。

最低级:,     逗号运算符也称为顺序求值运算符,在C语言中,运算级别最低。

 

 

posted @ 2018-03-21 00:32  yhc99  阅读(436)  评论(0编辑  收藏  举报