c语言|C语言-无符号型

c语言|C语言-无符号型


①源程序

#included <studio.h>
/*定义函数*/
unsigned fun2(unsigned num)
{
unsigned k=1;
do
{k*=num%10;num/=10;
while(num);
return k;

/*主函数(调用函数)*/
main()
{
unsigned n=26;
printf(\"%d\n\"fun2(n));


②解释
#included <studio.h>
unsigned fun2(unsigned num)
/*unsigned是 int的一种 , 表示无符号 , 即没有负号的整数 。
为方便理解 , 可简化成
fun2(num)
num是变量 ,
2是函数名的一部分 , 迷惑作用*/
{
unsigned k=1;
/*简化为k=1*/
do
{k*=num%10;num/=10;
/*do表示循环此句 , 直到while为假*/
while(num);
/*直到num为真(1≠0) , 继续循环*/
return k;
/*直到num为假(=0) , 循环停止 , 函数fun的返回值为k*/

main()
【c语言|C语言-无符号型】{
unsigned n=26;
/*简化为n=26*/
printf(\"%d\n\"fun2(n));
/*即求fun2(26)此处也可看出2是函数的一部分 , 可理解为求f(26)*/


③计算过程
1.先看主函数
求fun2(26)
2.再实参赋值形参
num=n=26
3.用形参的公式计算
当k=1num=26时
k=k*num%10=1x(26%10)=1x6=6
此处%表示取余 , 26除10余6
num=num/10=26/10=2
因为num为unsigned即无符号的整型 , 故保留商2 , 舍去小数位

当k=6num=2时
k=k*num%10=6x(2%10)=6x2=12
此处2%10表示2除10 , 商0余2 , 取余数2
num=num/10=2/10=0
此处2/10=0.2 , 但是num为整数 , 整数位为0
4.return k
当k=612num=0时
num为假
do…while…循环结束
将k的值12返回给函数fun2(26)
最后结果fun2(26)=12

④总结
unsigned
是 int的一种 , 表示无符号 , 即包含零和正整数 , 不包含负整数 。
千万不要当成什么函数或者变量了 , 它只是变量类型名 。

整型不只是int包含四种基本整型
有符号的整型int全称是signed int , 通常省略signed
无符号的整型unsigned int
长整型long int4字节
短整型short int , 2字节
还可相互组合
比如unsigned long int