C语言视频 VS2015:[12]算术运算符
VisualStudio 2015的发布,跟随而来的相关的教程的空白,这里讲逐步在VisualStudio 2015上讲解C语言相关的系列视频教程经验(注:由于视频修改难度大,所以先暂时发布文档,视频后期逐步补上),本文主要涉及:①5种基本的算术运算符;②整数运算溢出问题③整数求模(求余)符号问题;④余数结果的符号问题
工具/原料
Visual Studio 2015
Windows 8.1 x64
基本介绍
1、算术运算符主要是用来处理四则运算的符号,是最简单,最常用,但同时也是陷阱最多的运算符符号,在C语言中最长用的算术运算符主要有:加(+),减(-),乘(*),除(/),余(%)
加法
1、C语言加法运算同时支持:①常量+常量;②变量+变量;③变量+常量;④不同类型的变量相加;等,具体的效果如下:
2、无符号整数相加的溢出问题:如下图所示,可以看到 255+ 1= 0;
3、具体的原因分析如下:① 255对应的二进制:1111 1111② 1对应的二进制 :0000 0001③ 255+1和二进制:1 0000 0000④ 而unsigned char只有8位,于是最高位被舍弃了, 保留了最低的8位:0000 0000⑤ 0000 0000转换成十进制:0
4、有符号整数相加溢出问题:127 + 1 = -128;
5、具体的原因分析如下:①右键监视窗口->16旅邯佤践进制显示,效果如下:②从16进制的显示上我们可以看出: 0x7f + 0旌忭檀挢x01 = 0x80,这个运算是符合加法运算规则的;③从另一个角度也说明了计算机的底层运算时不区分符号的;
6、那么为什么显示的是-128呢?具体分析如下:① 0x80的二进制是:1000 0000;②最高位是1说明是负数,并且属于狨钾鹉绥补码③计算 0x80补码对应的原始数据;④ 0x80减 1后的二进制是:0111 1111⑤所有位取反:1000 0000⑥转成10进制:128⑦添加上符号:-128
减法
1、C语言减法跟加法运算一样同时支持:①常量-常量;②变量-变量;③变量-常量;④常量-变量;等,具体的效果如下:
2、减法溢出问题:-128 - 1 = 127;
3、为什么数字越减越大呢?16进制显示后或许就可以看出答案了:①-128的16进制是:0x80② 1的16进制是:0x01③ 0x80- 0x01= 0x7f④ 0x7f转换成10进制:127
乘法
1、乘法也同样支持各种方式运算,具体图下图所示:
2、乘法也存在溢出问题,由于加减已经介绍,所以不再推导,感兴趣的可以自己推导
除法
1、除法也同样支持各种方式运算,具体图下图所示:
2、nQuotient2的值为 3不是 3.6?原因在于整数相除,结果依然是整数,所以小数部分被舍弃了;
求余(求模)
1、在除法运算中我们看到了整数运算中:36 / 10 = 3的现象;那么余数怎么求呢?在C语言里面求余数主要使用:%
2、余数的符号是怎么确定的呢?按照msdn的说明,余数主要是跟被除数的符号一致的,上图就已经充分证明了这一点哦
3、方便他人亦是方便自己,如果觉得还行就点下下边的投票吧,这样可以帮助其他人更快的找到解决问题的方法;有疑问的也可留言哦, 谢谢!