公正な警告 — 私は C に非常に慣れていないため、予測できない動作がいくつかあります。これのトラブルシューティングを開始する方法がわかりません。
初期のオイラー問題の 1 つ (数値回文を扱うため) を解こうとしていますが、チェック関数に問題があります。数値a
が に渡されるrev(a)
と、すべてが正常に機能します。渡されるret(a)
と(最終的に等価性、bool 型などをチェックする関数)、まったく間違った数値が返されます — メモリに関係があると思います。誰か助けてくれませんか?
#include <stdio.h>
#include <stdbool.h>
int rev(int a);
int check(int a);
main() {
int a = 12;
printf("%i ", a);
printf("%i ", rev(a));
printf("%i\n", ret(a));
}
int ret(int a){
return rev(a);
}
int rev(int a){
int b;
while (a>0){
b = (b*10) + a%10;
a/=10;
}
return b;
}