逗号运算符ide
逗号运算符优先级最低;函数
逗号运算符是用来分割多个表达式的;数学
由逗号运算符组成的逗号表达式的运算结果是:最后一个表达式的结果it
注意:class
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语言对赋值运算符右侧表达式时的值,进行自动类型转换工做;且是按照赋值运算符左侧的左值数据类型为依据转换的;