码迷,mamicode.com
首页 > 其他好文 > 详细

                    逗号表达式与自增自减运算符和类型转换的规则

时间:2016-08-08 15:54:59      阅读:906      评论:0      收藏:0      [点我收藏+]

标签:c语言   表达式   优先级   

逗号运算符

逗号运算符优先级最低;

逗号运算符是用来分割多个表达式的;

由逗号运算符组成的逗号表达式的运算结果是:最后一个表达式的结果

注意:

int i;

i = 3,4,5,;

以上语句得到的i的值为3

i = (3, 4, 5);

得到的i的值为5

总结:

++i置前自增:先对i的值加1,然后用增1后的值参加所有的后续运算


i++滞后自增自减:先用变量原来的值参加所有的后续运算,直到本条语句所有的运算全部运算完毕后,才对变量值加减1


滞后自增减在条表中的特殊表现:先利用原值参与条件判断,然后立刻自增减;


滞后自增减在逗号表达式中的特殊表现:


int i = 3, j = 4, k;

k = (++i, j++, i++ * ++j);

printf("%d %d %d\n", i, j, k);

结果:

i = 5;

j = 6

k = 24

总结:

滞后自增遇到逗号运算符时立刻自增减,但是函数中的参数逗号除外

数据类型转换

1.1)自动类型转换

在某一次运算中,如果参与运算的两个运算数的数据类型不一致,则C语言会对其自定进行数据类型转换,且遵循如下原则:

短整型向长整型靠拢;

简单数据类型向复杂数据类型靠拢;

如下两个例子:

5.0 + 1/2

=5.0 +0

=5.0+0.0=5.0

5+1/2.0=5+1.0/2.0=5+0.5=5.0+0.5=5.5

数学运算式:1/1+1/2+1/3+.....+1/n

int i;

double s = 0;

for(i = 1; i <= n; i++)

       s += 1.0/i;

1.2.强制类型转换

语法:

(数据类型转化)表达式

    s += (double)1 / i;//强制类型转换也是运算符,是单目运算符最低的

强制类型转换以人类的意志为原则

    s +=(double)(1/i);//只是得到0.0

强制类型转换运算绝对不可能改变变量的数据类型

1.3自动强制类型转换

这种运算只发生在赋值运算中

char c = 97.14159;

在赋值时候会丢失一些精度,输出小写字母a

double f = ‘A‘;

输出65.000

转换原则:若赋值运算符两侧的数据类型不一致,则,由C语言对赋值运算符右侧表达式时的值,进行自动类型转换工作;且是按照赋值运算符左侧的左值数据类型为依据转换的;


                    逗号表达式与自增自减运算符和类型转换的规则

标签:c语言   表达式   优先级   

原文地址:http://11631662.blog.51cto.com/11621662/1835618

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!