c言語でこちらのコードを実行した際に正しく実行されない理由を教えてください。

C言語関連45閲覧

ベストアンサー

0

ThanksImg質問者からのお礼コメント

ありがとうございます。ここを変えるだけで正常に動きました。他の方も様々なアドバイスありがとうございます。

お礼日時:5/24 22:30

その他の回答(3件)

0

デバッグのしかた: bekiが呼ばれた時のx・yの値、繰り返し中のz・yの値、返す前のansの値を表示してみよう。

0

(1150941910さん) int beki(int x, int y){ int z, ans=1; ←←←←←←←←←←←← for (z=1; z<=y; z++) { ←←←←←←← ans = ans*x; } return ans; } もっと簡素にできる。 int beki(int x, int y){ return 1 << y; }

0

for (z=1; z==y; z++) { の z==y は、明らかにおかしげな感じですね。 全体として、ビットシフト演算で行ったほうが簡単そうな気はします。

#include <iostream> using namespace std; int main(void){     int number = 127;     for (int i = 15; i >= 0; i--) {         printf("%d", (number & (1 << i)) != 0);     } } とか。