逗号运算符

逗号运算符优先级最低;

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

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

注意:

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语言对赋值运算符右侧表达式时的值,进行自动类型转换工作;且是按照赋值运算符左侧的左值数据类型为依据转换的;