一、运算符和表达式
二、常用的算数运算符:
注意:
1.两个实数相除,结果是双精度实数
2.两个整数相除的结果为整数
3.%只用于整数
三、自增(++)自减(–)运算符
++i,–i 在使用i之前,先使i的值加/减1
i++,i-- 在使用i之后,使i的值加/减1
++i是先执行i=i+1,再使用i的值;而i++是先使用i的值,再执行i=i+1。
int i=3,j;
j=++i; //i的值先变成4, 再赋给j,j的值为4
int i=3;
printf(“%d”,++i); //输出4
int i=3,j;
j=i++; //先将 i的值3赋给j,j的值为3,然后i变为4
int i=3;
printf(“%d”,i++); //输出3
四、类型转换(重点)
自动类型转换
1.+、-、*、/运算的两个数中有一个数为float或double型,结果是double型,因为系统将所有float型数据都先转换为double型,然后进行运算。
2.如果int型与float或double型数据进行运算,先把int型和float型数据转换为double型,然后进行运算,结果是double型。
3.字符(char)型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算。如果字符型数据与实型数据进行运算,则将字符的ASCII代码转换为double型数据,然后进行运算。
举例1:
int i=3;
float f=2.5;
double d=7.5;
printf("%lf",10+'a'+i*f-d/3);
10+‘a’+if-d/3
① 进行10+′a′的运算,′a′的值是整数97,运算结果为107。
② 由于“”比“+”优先级高,先进行if的运算。先将i与f都转成double型,运算结果为7.5,double型。
③ 整数107与if的积相加。先将整数107转换成双精度数,相加结果为114.5,double型。
④ 进行d/3的运算,先将3转换成double型,d/3结果为2.5,double型。
⑤ 将10+′a′+i*f的结果114.5与d/3的商2.5相减,结果为112.0,double型。
举例2:
给定一个大写字母,要求用小写字母输出。
#include <stdio.h>
int main()
{
char c1,c2;
c1='A'; //将字符′A′的ASCII代码放到c1变量中
c2=c1+32; //得到字符′a′的ASCII代码,放在c2变量中
printf("%c\n",c2); //输出c2的值,是一个字符
printf("%d\n",c2); //输出c2的值,是字符′a′的ASCII代码
return 0;
}
强制类型转换:当自动类型转换不能实现目的时,可以用强制类型转换。
强制类型转换运算符
(类型名)(表达式)
(double)a 将a转换成double型
(int)(x+y) 将x+y的值转换成int型
(float)(5%3) 将5%3的值转换成float型
(int)x+y 只将x转换成整型,然后与y相加
int a; float x,y;double b;
a=(int)x
进行强制类型运算(int)x后得到一个int类型的临时值,它的值等于x的整数部分,把它赋给a,注意x的值和类型都未变化,仍为float型。该临时值在赋值后就不再存在了。