当前位置 博文首页 > jtwqwq的博客:翁恺老师C语言程序设计网课(2)
一个表达式是一系列运算符和算子的结合,用来计算一个值
运算符(operator)是指进行运算的动作,比如加/减法运算符±
算子(operand)是指参与运算的值,可能是常数/变量/一个方法的返回值
计算时间差:这里只记录分钟错位的情况(1:40和2:10)
方法:全部记为分钟(小时*60)
int hour1,min1;
int hour2,min2;
scanf("%d %d",&hour1,&min1);
scanf("%d %d",&hour2,&min2);
int t1=hour1*60+min1;//把小时转化为分钟单位
int t2=hour2*60+min2;
int t=t2-t1;
printf("时间差是%d小时%d分。“,t/60,t%60);//t/60是小时部分;t%60取余,是分钟部分
(double输入的时候用%lf
,输出的时候用%f
就行)
运算符优先级
优先级 | 运算符 | 运算 | 结合关系 | 举例 |
---|---|---|---|---|
1 | + | 单目不变 | 自右向左 | a*+b |
1 | - | 单目取负 | 自右向左 | a*-b |
2 | * | 乘 | 自左向右 | a*b |
2 | / | 除 | 自左向右 | a/b |
2 | % | 取余 | 自左向右 | a%b |
3 | + | 加 | 自左向右 | a+b |
3 | - | 减 | 自左向右 | a-b |
4 | = | 赋值 | 自右向左 | a=b |
(a+b,a-b是双目;+a,-a是单目,相当于正负号)
赋值也是运算,也有结果。
a=6
的结果就是a被赋予的值,也就是6
如 a=b=6
:自右向左,a=(b=6)。
嵌入式赋值:int c=1+(b=a)
缺点:不利于阅读;容易产生错误
运算符的结合关系一般自左向右;单目+-
和赋值=
自右向左
下面的式子过于复杂,不利于阅读和理解。
result=a=b=3+c;
result=(result=result*2)*6*(result=3+result);
所以应该把它拆开来计算。
(C语言没有幂次,所以只能一个个乘。)
交换a和b的值(a=6,b=5)
错误示例
a=b;
b=a;
程序表达的是顺序执行的动作,而不是关系.所以这样做先把b赋给a,然后再把a赋给b,都是5.
方法:再找一个变量c,c=a储存一下a的值,然后a=b,b=c
c=a;
a=b;
b=c;
断点
DEV C++中,在左边数字那里点击一下,然后程序运行时就会在这一行停止。
运行也只能到这一行
点下一行,就会运行到下一行。
这样可以方便排bug
C语言:使用Dev C++断点调试
a+=5
表示a=a+5
(注意两个运算符之间无空格)
类似有-=
,*=
,/=
(a*=b+5
表示a=a*(b+5)
,如果想先算a=a*b
记得加括号)
INC递增、DEC递减运算符:++
,--
:单目运算符,只能有一个算子,这个算子还只能是变量(如a++
后缀形式,++a
前缀形式)让该变量+1/-1;
a++
运算式的值是a+1以前的值;++a
运算式的值是a+1以后的值。无论哪个,a的值都+1了
++
和--
可以单独使用,但不要把它组合进表达式,复杂。
是Program Ability Test的简写。
int a/b;
如果后面是小数,c语言会强制类型转换为整数。但以后学习c++或java是不可以的,要记得类型转换。
if条件判断
if(条件){
要执行的语句,只有条件成立时才会执行
}
计算两个值之间的关系,叫做关系运算
==判断相等
!=不相等
还有>;>=;<;<=,当两个值的关系复合这些关系运算符的预期时,关系运算的结果为整数1,否则为整数0
printf("%d\n",5>3);
printf("%d\n",5==3);
输出结果:1(换行)0
所有关系运算符的优先级都比算数运算低,比赋值运算高
(编程语言都是可以人为验证的)
如int r=a>0;
先判断a是否>0,再把0/1的值赋给r
==
和!=
优先级比其他的低
连续的关系运算是从左到右进行的
5>3==6>4
→1==1
成立
6>5>4
→1>4
不成立