- 37 名前:12 [2008/11/15(土) 18:18:11 ]
- >>33
授業は全部出てるしちゃんと聞いてる. 今回のreturnについては変だったから准教授にも聞いたんだ. そしたら double normalize(double th) { while(th > PI) { th -= PID; } while(th <= -PI) { th += PID; } return th; } はだめで, double normalize(double th) { static double out; while(th > PI) { th -= PID; } while(th <= -PI) { th += PID; } out=th; return out; } としろって話だったんだ. > 引数 th が関数に渡されるときに関数内部では別の変数が用意されて,その変数 > にコピーされます.この関数内の変数は当然 static ではないはずですので, > return によって正しく返却されることは保証されないと思います.ですから, > やはり static 変数を別に用意してください. > なお,数式の評価値も正しく返却されるのか不安なので,私は static 変数に代 > 入してから return しています.たとえ仕様上は保証されていてもバグがあるか > も知れないので,こうすれば安心です. とのことだった. 仮引数の書き方はとくに指示されてはいないし,malloc による文字列操作どころかmallocはまだ名前以外出てきた事がない. 仮引数の書き方に適切なものがあるなら是非教えてくれ.
|

|