在C++中,如果我从一个字符串中读取一个整数,那么我是否使用u或d作为转换说明符并不重要,因为它们都接受负整数.
#include <cstdio>
using namespace std;
int main() {
int u, d;
sscanf("-2", "%u", &u);
sscanf("-2", "%d", &d);
puts(u == d ? "u == d" : "u != d");
printf("u: %u %d\n", u, u);
printf("d: %u %d\n", d, d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我挖得更深,发现是否有任何区别.我找到
int u, d;
sscanf("-2", "%u", &u);
sscanf("-2", "%d", &d);
Run Code Online (Sandbox Code Playgroud)
相当于
int u, d;
u = strtoul("-2", NULL, 10);
d = strtol("-2", NULL, 10);
Run Code Online (Sandbox Code Playgroud)
是否有任何差异之间的所有u和d使用解析这些转换说明,即传递给格式时scanf型的功能呢?它是什么?
C和C++的答案是一样的,对吧?如果没有,我对两者都感兴趣.
%d:将整数扫描为小数signed int.类似的转换说明符,%i在前面加上时将数字解释为十六进制,0x并在前面加上八进制0.否则,它是相同的.
%u:将整数扫描为小数unsigned int.
| 归档时间: |
|
| 查看次数: |
9112 次 |
| 最近记录: |