static的用处
1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
unsigned的用处
1、signed是默认的,表示这个变量是有符号的,可以存储整数和负数。
2、unsigned则需要显示给出表示这个变量,没有符号值能存储数的大小,而且不能表示正负。
3、signed存储符号是有代价的,代价就是存储空间中的一个比特位专门用来存储符号,这一位不能表示数值。一般来说,同类型的signed能够存储的数的绝对值大小要小于undigned。
4、unsigned的作用就是将数字类型无符号化, 例如 int 型的范围:-2^31 ~ 2^31 - 1,而unsigned int的范围:0 ~ 2^32。
5、signed在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。
memset的用处
void *memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法 [。
memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组,c:是赋给buffer的值,count:是buffer的长度.
Leetcode405
给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。
注意:
- 十六进制中所有字母(a-f)都必须是小写。
- 十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。
- 给定的数确保在32位有符号整数范围内。
- 能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。
示例 1:
输入:
26
输出:
“1a”
示例 2:
输入:
-1
输出:
“ffffffff”
代码如下:
char * toHex(int num){
unsigned int n=num;//设置为无符号字符,统一化负整数和正整数
unsigned int k;
//设置十个位置用来存放十六进制的字符
static char an[10]={'\0'};
//存储十六进制字符
char b[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
int i=10;//设置进行计数
if(num==0)
return "0";
//将存储字符的数组设置为0,进行初始化
memset(an,0,sizeof(an));
//将十进制转化为十六进制
while(n!=0)
{
k=n%16;
an[i-1]=b[k];
i--;
n=n/16;
}
//将后面的十六进制字符移动到前面的位置
for(int j=0;j<(10-i);j++)
an[j]=an[i+j];
//字符串后面要加'\0'
an[10-i]='\0';
return an;
}
来源:CSDN
作者:想要有粉丝的小猪猪
链接:https://blog.csdn.net/m0_38061255/article/details/104133075