c中的无符号整数和整数指针
unsigned integer and integer pointer in c
我有一个代码,其中我传递了 300000(以毫秒为单位的 5 分钟值)
在功能中。
BOOL setsomethingfunc(tpUINT8 value) //tpUINT8 is integer pointer
{
bufVal=atoi(value); //bufVal is type UINT8
}
现在,当我打印 bufVal 时,它显示为 224。我无法理解值转换是如何发生的。有人可以解释一下吗?
因此,整数指针有 - 300000,当转换为 int 时,它变为 224。
我已经为场景 -
制作了一个最小的可重现示例
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main()
{
uint8_t backoff;
char* value = "300000";
backoff=atoi(value);
printf("value = %s\n", value);
printf("backoff value = %d\n", backoff);
return (0);
}
输出为 -
value = 300000
backoff value = 224
有人可以帮助我了解这种转换是如何发生的吗?
BOOL setsomethingfunc(UINT8 value)
你的函数应该采用指针而不是整数。必须是 BOOL setsomethingfunc(UINT8 *value)
使用标准 C 类型。 uint8_t
用于 8 位无符号整数,bool
来自 stdbool.h
。由于历史原因,许多旧代码(或很久以前开发的代码,如 Linix 内核)使用这些非标准类型。你应该学习现代 C
我有一个代码,其中我传递了 300000(以毫秒为单位的 5 分钟值) 在功能中。
BOOL setsomethingfunc(tpUINT8 value) //tpUINT8 is integer pointer
{
bufVal=atoi(value); //bufVal is type UINT8
}
现在,当我打印 bufVal 时,它显示为 224。我无法理解值转换是如何发生的。有人可以解释一下吗? 因此,整数指针有 - 300000,当转换为 int 时,它变为 224。
我已经为场景 -
制作了一个最小的可重现示例 #include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main()
{
uint8_t backoff;
char* value = "300000";
backoff=atoi(value);
printf("value = %s\n", value);
printf("backoff value = %d\n", backoff);
return (0);
}
输出为 -
value = 300000
backoff value = 224
有人可以帮助我了解这种转换是如何发生的吗?
BOOL setsomethingfunc(UINT8 value)
你的函数应该采用指针而不是整数。必须是BOOL setsomethingfunc(UINT8 *value)
使用标准 C 类型。
uint8_t
用于 8 位无符号整数,bool
来自stdbool.h
。由于历史原因,许多旧代码(或很久以前开发的代码,如 Linix 内核)使用这些非标准类型。你应该学习现代 C