------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一.算术运算
1)算术运算包括:加法运算+,减法运算-,乘法运算* ,除法运算/,取余运算%
2)注意点:
1> 自动类型转换
int a = 10.6;
int b = 10.5 + 1.7;
自动将大类型转换为了小类型,会丢失精度
2> 自动类型提升
int b = 10.5 + 10;
将右边的10提升为了double类型
double b = 1.0 / 2;
解决除法的精度问题
3> 强制类型转换
double a = (double)1 / 2;
double b = (double)(1 / 2);
二.习题
<span style="font-weight: normal;">//提示用户输入一个时间的秒数,比如500秒就输入500,然后输出对应的分钟和秒,比如500s就是8分钟20秒
#include<stdio.h>
int main()
{
printf("请输入一个时间值(秒):\n");
int time;
scanf("%d",&time);
int minute = time/60;//分钟
int second = time%60;//秒
printf("%秒=%分%秒\n",time,minute,second);
return 0;
}</span>
</pre><h3>三.赋值运算</h3></div><div><p><span style="font-weight:normal">1. 简单赋值</span></p><p><span style="font-weight:normal">int a = 15 + 5;的运算过程</span></p><p><span style="font-weight:normal">a = b = 19;的运算过程</span></p><p><span style="font-weight:normal">等号左边不能是常量,比如107= 19;</span></p><p><span style="font-weight:normal"><span style="font-size:18px">2. 复合赋值</span></span></p><p><span style="font-weight:normal">复加减乘除余:a += 7+4;</span></p><p><span style="font-weight:normal"></span></p><h3>四.自增自减</h3><p><span style="font-weight:normal">1)自增运算符:++,例如a++,++a</span></p><p><span style="font-weight:normal">2)自减运算符:-- ,例如a--, --a</span></p><p><span style="font-weight:normal">3)区别:</span></p><p><span style="font-weight:normal">int a;</span></p><p><span style="font-weight:normal">int b=11;</span></p><p><span style="font-weight:normal">a=++b;<span style="color:#ff0000">(这个是b先加1,变成12,再赋给a,所以a和b的值都是12)</span></span></p><p><span style="font-weight:normal">a=b++;<span style="color:#ff0000">(这个是先把b的值赋给a,b再加1,所以a的值是11,b的值是12)</span></span></p><h3><span style="font-weight:normal">五.sizeof</span></h3><div><span style="font-size:14px"><span style="font-weight:normal">1.它的作用:</span><span style="font-weight:normal">用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。</span></span></div><div><span style="font-size:14px"><span style="font-weight:normal">2.举例:</span></span></div><div><span style="font-size:14px"><span style="font-weight:normal"></span></span><pre name="code" class="plain">#include<stdio.h>
int main()
{
int a=10;
int size=sizeof(a);
printf("size=%d\n",size);
return 0;
}
上面的程序就是检测a中有几个字节。(用到sizeof)
六.关系运算
如果条件成立,结果就为1,也就是“真”;如果条件不成立,结果就为0,也就是“假”。
2.注意事项:
关系运算符中==、!=的优先级相等,<、<=、>、>=的优先级相等,且前者的优先级低于后者:2==3>1
关系运算符的结合方向为“从左往右”: 4>3>2
关系运算符的优先级小于算术运算符:3+4>8-2
七.逻辑运算(逻辑与&&、逻辑或||、逻辑非!)
1.逻辑与
1)“条件A && 条件B”
2)只有当条件A和条件B都成立时,结果才为1,也就是“真”;其余情况的结果都为0,也就是“假”。因此,条件A或条件B只要有一个不成立,结果都为0,也就是“假”
3)如果条件A成立,接着再判断条件B是否成立:如果条件B成立,“条件A && 条件B”的结果就为1,即“真”,如果条件B不成立,结果就为0,即“假”
4)如果条件A不成立,就不会再去判断条件B是否成立:因为条件A已经不成立了,不管条件B如何,“条件A && 条件B”的结果肯定是0,也就是“假”
总结:只有当条件A和条件B都成立时,结果才为“真”
例:3<a<5要写成(a>3 && a<5)
2.逻辑或
1)“条件A || 条件B”
2)当条件A或条件B只要有一个成立时(也包括条件A和条件B都成立),结果就为1,也就是“真”;只有当条件A和条件B都不成立时,结果才为0,也就是“假”。
3)如果条件A成立,就不会再去判断条件B是否成立:因为条件A已经成立了,不管条件B如何,“条件A || 条件B”的结果肯定是1,也就是“真”
4)如果条件A不成立,接着再判断条件B是否成立:如果条件B成立,“条件A || 条件B”的结果就为1,即“真”,如果条件B不成立,结果就为0,即“假”
总结:当A和B至少有一个成立时,结果才是“真”,*任何非0值都为“真”,只有0才为“假”。
3.逻辑非
八.三目运算符:条件?数值1:数值2(满足条件,输出数值1,否则,输出数值2)
#include <stdio.h>
int main()
{
int a = 10;
int b = 9;
int c = a>b?a:b;
printf("c is %d\n",c);
return 0;
}
上面的程序经过运算,c的值明显是a。