私は与えられたコードを持っています。私の意見では、そのコードには何か問題があります。私は XINU でコンパイルしています。
次の変数が関連しています:
unsigned long ularray[];
int num;
char str[100];
intを返す関数があります:
int func(int i)
{
return ularray[i];
}
コードは次のようになります。
num = func(i);
sprintf(str, "number = %lu\n", num);
printf(str);
問題は、%lu で印刷しているときに大きな数字が表示されることです。これは正しくありません。
%luを%dに変更すると、正しい番号が得られます。例: %lu では 27654342 を取得しますが、%di では 26 を取得します。後者は正しいです。
変数が与えられ、関数の宣言が与えられます。本体を書きますが、int を返す必要があります。
私の質問は次のとおりです。
私は「sprintf」に慣れていません。おそらく問題がありますか?
unsigned long を int に代入し、int を %lu で出力しましたが、正しいですか?
どうすれば問題を解決できますか?
前もって感謝します。
答えてくれてありがとう。私は XINU の下で作業していることに言及したいと思います。ファイルのコンパイルの順序とあなたが知っていることを変更しました...その作業と %lu と %d で同じ番号が表示されます。
'unsigned long' を int に代入してから %lu で出力すると、コーディングが正しくなく、データが失われる可能性があることは十分承知しています。しかし、私が言ったように、コードは与えられていますが、変数と印刷コマンドを変更できませんでした。
エラーや警告はありませんでした。コンパイルの順序を変更することで問題が解決した理由がわかりません。誰かがアイデアを持っている場合は、共有してください。
私を助けようとしてくれた皆さんに感謝します。