🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
【25.1 乘法语法格式。】 乘法语法格式: “保存变量”=“乘数1”\*“乘数2”\*..\*“乘数N”; 含义:为什么C语言的乘法符号并不是我们熟悉的“X”而是“\*”?我猜测是因为“X”跟键盘的大写字母“X”重复有冲突了,而“\*”轮廓跟“X”很相似,并且也可以在键盘上通过“Shift+8”的组合键直接键入“\*”,所以用“\*”作为乘法符号。上述乘法格式中,右边的“乘数”与“乘数”相乘(这里暂时把平时所说的被乘数也归类为乘数),并且把最终的运算结果赋值给左边的“保存变量”。注意,这里的符号“=”不是等于号的意思,而是赋值的意思。左边的“保存变量”必须是变量,不能是常量,否则编译时会报错。右边的“乘数”既可以是变量,也可以是常量,也可以是“保存变量”本身自己。多说一句,什么是变量和常量?变量是可以在程序中被更改的,被分配的一个RAM空间。常量往往是数字,或者被分配在ROM空间的一个具体数值。下面根据右边“乘数”与“乘数”的不同组合,列出了乘法运算的5种常用组合。 第1种:“乘数1”是常量,“乘数2”是常量。比如: unsigned char a; a=15\*3; 分析:数字“15”和“3”都是常量。执行上述语句后,保存变量a变成了45。 第2种:“乘数1”是变量,“乘数2”是常量。比如: unsigned char b; unsigned char x=15; b=x\*10; 分析:x是变量,“10”是常量。由于原来x变量里面的数值是15,执行上述语句后,保存变量b变成了150。而变量x则保持不变,x还是15。 第3种:“乘数1”是变量,“乘数2”是变量。比如: unsigned char c; unsigned char x=15; unsigned char y=6; c=x\*y; 分析:x是变量,y也是变量。由于原来x变量里面的数值是15,y变量里面的数值是6,执行上述语句后,保存变量c变成了90。而变量x和y则保持不变,x还是15,y还是6。 第4种:“乘数1”是保存变量本身,“乘数2”是常量。比如: unsigned char d=18; d=d\*2; d=d\*7; 分析:d是保存变量,“2”和“7”都是常量。这类语句有一个特点,具备了自乘功能,可以更改自己本身的数值。 比如原来保存变量d的数值是18,执行“d=d\*2;”语句后,d变成了36,接着再执行完“d=d\*7;”语句后,d最后变成了252。 第5种:“乘数1”是保存变量本身,“乘数2”是变量。比如: unsigned char e=2; unsigned char x=15; unsigned char y=6; e=e\*x; e=e\*y; 分析:e是保存变量,x与y都是变量。这类语句有一个特点,具备了自乘功能,可以更改自己本身的数值。比如原来保存变量e的数值是2,执行“e=e\*x;”语句后,e变成了30,接着再执行完“e=e\*y;”语句后,e最后变成了180。 【25.2 例程练习和分析。】 现在我们编写一个程序来验证上面讲到的5个乘法例子: 程序代码如下: /\*---C语言学习区域的开始。-----------------------------------------------\*/ void main() //主函数 { unsigned char a; //定义一个变量a,并且分配了1个字节的RAM空间。 unsigned char b; //定义一个变量b,并且分配了1个字节的RAM空间。 unsigned char c; //定义一个变量c,并且分配了1个字节的RAM空间。 unsigned char d=18; //定义一个变量d,并且分配了1个字节的RAM空间。初始化默认为18. unsigned char e=2; //定义一个变量e,并且分配了1个字节的RAM空间。初始化默认为2. unsigned char x=15; //定义一个变量x,并且分配了1个字节的RAM空间。初始化默认为15. unsigned char y=6; //定义一个变量y,并且分配了1个字节的RAM空间。初始化默认为6. //第1种:“乘数1”是常量,“乘数2”是常量。 a=15\*3; //第2种:“乘数1”是变量,“乘数2”是常量。 b=x\*10; //第3种:“乘数1”是变量,“乘数2”是变量。 c=x\*y; //第4种:“乘数1”是保存变量本身,“乘数2”是常量。 d=d\*2; d=d\*7; //第5种:“乘数1”是保存变量本身,“乘数2”是变量。 e=e\*x; e=e\*y; View(a); //把第1个数a发送到电脑端的串口助手软件上观察。 View(b); //把第2个数b发送到电脑端的串口助手软件上观察。 View(c); //把第3个数c发送到电脑端的串口助手软件上观察。 View(d); //把第4个数d发送到电脑端的串口助手软件上观察。 View(e); //把第5个数e发送到电脑端的串口助手软件上观察。 while(1) { } } /\*---C语言学习区域的结束。-----------------------------------------------\*/ 在电脑串口助手软件上观察到的程序执行现象如下: 开始... 第1个数 十进制:45 十六进制:2D 二进制:101101 第2个数 十进制:150 十六进制:96 二进制:10010110 第3个数 十进制:90 十六进制:5A 二进制:1011010 第4个数 十进制:252 十六进制:FC 二进制:11111100 第5个数 十进制:180 十六进制:B4 二进制:10110100 分析: 通过实验结果,发现在单片机上的计算结果和我们的分析是一致的。 【25.3 如何在单片机上练习本章节C语言程序?】 直接复制前面章节中第十一节的模板程序,练习代码时只需要更改“C语言学习区域”的代码就可以了,其它部分的代码不要动。编译后,把程序下载进带串口的51学习板,通过电脑端的串口助手软件就可以观察到不同的变量数值,详细方法请看第十一节内容。