c++ - Mbed 错误的 long int 解析
问题描述
#include <stdio.h>
int main()
{
const char* s = "Number: 420604953084";
long number;
sscanf(s, "Number: %ld", &number);
printf("Result: %ld", number);
return 0;
}
这段代码在桌面上用 c++11 编译(或者,例如这里)正确返回:
Result: 420604953084
但是使用 ARM Mbed 6.6 编译的结果是:
(#include <mbed.h>)
...
Result: -301941924
有人有线索吗?不幸的是,这些东西在 Mbed 中根本没有记录。
解决方案
如果您的编译器上的long类型是 4 字节。我认为获取和错误是合理的。
请尝试unsigned long long和格式代码"lld"。
推荐阅读
- c - times() syscall. Overflowed return value
- html - Make two tables side by side not overlap as screen gets smaller
- android - mText1.getLayoutParams().height = NEW VALUE 在弹窗中不生效
- if-statement - C++:IF/ELSE 与正值和负值的比较
- php - 替代使用 shebang
- sql - 更改 SQL 用户名
- pyspark - 如何在 pyspark 中将 Unicode 日期/时间字符串转换为 python 日期时间
- c# - 在 Observable Collection 中移动项目将移动项目重置为默认值
- python - 尝试从 html 解析电话号码,但得到很多空行
- gcov - GCOV:gcda 文件组合