u
C++ では、文字列から整数を読み取る場合、または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;
}
違いがあるかどうかをさらに掘り下げました。見つけた
int u, d;
sscanf("-2", "%u", &u);
sscanf("-2", "%d", &d);
と同等です
int u, d;
u = strtoul("-2", NULL, 10);
d = strtol("-2", NULL, 10);
cppreference.comによると。
これらの変換指定子を解析に使用する場合、つまり-type 関数に渡される形式に違いはありu
ますか? それは何ですか?d
scanf
CでもC++でも答えは同じですよね?そうでない場合は、両方に興味があります。