これは元のコードです。
// ...
unsigned __int64 num = 57;
sprintf_s(buffer, sizeof(buffer), "%llu", num);
ただし、この部分をこの関数に抽出しようとすると:
void addBuffered(void** attributeValue, char* format)
{
sprintf_s(buffer, sizeof(buffer), format, *attributeValue);
}
呼び出すことによって:
addBuffered((void**)&num, "%d");
正しい値を取得するには、フォーマット パラメータをsprintf_s
から%llu
に変更する必要があります。%d
なぜこれが起こるのか、そしてパラメータの変更が%d
問題になる可能性があるかどうかを誰かが説明できますか? ありがとう!