C程序求教
//Program 5.1.b#include "stdafx.h"
#include "stdio.h"
int get_integer(char *);
int _tmain(int argc, _TCHAR* argv[])
{
char c;
printf("Enter a number: ");
scanf("%s", c);
printf("The number is %d.", get_integer(c));
return 0;
}
int get_integer(char * c)
{
int a = 0, i = 0, n = 0;
char s;
for (; *c!=0; c++)
{
if (*c>='0' && *c <='9')
s = *c;
}
for (; i < n; i++)
a = a * 10 + (s & 15);
return a;
}
问题:
l 。How does the function get_integer get the argument from the call function? What does it return?
2. What is the expression (s & 15) used for? Can you use another expression to replace it?
------------------------
本帖最后由 浮砂 于 2013-12-11 08:52 编辑get_integer () 这个函数实现的是把数字字符串转换成 一个整数,并返回。
功能是把字符一个个提取出来,如果是'0'~'9'之间的,就保存到一个新的数组里面。
以便为转换成int类型做准备。
(s [ i ]& 15)是把一个'0'~'9'的字符转换成对应的0~9
例:'1'的二进制是 0011 0001
15的 二进制是 0000 1111
'1' 和15 做按位与的操作得 0000 0001
就是十进制的1
同样的'8'的二进制是 0011 1000
'1' 和15 做按位与的操作得 0000 100
PS:按位与就是把相应的二进制位的数进行and 操作 仅有1 & 1 时为1
其他的 0 &1、 1 & 0 、0 & 0 都是0
( s [ i]& 15)可以用(s - '0')代替。
例:'1'的ASCII 码是 49
'0'的 ASCII 码是 48
'1'-'0'=49-48=1
同样的'8'的ASCII码是56
'8'-'0'=56-48= 8
谢谢啦:感谢这位大神的回复
页:
[1]