頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


return i++;は何が返ってくる?

今更あれなんだけど、インクリメント、デクリメントの話なんだ。

整数型の数を一つ増やすとか減らす時に
i++;
とかするでしょ。
これ++(減らす時、デクリメントは--だね)が変数の前後でどうやら意味が違うってのは聞いたことがあったんだけど、実はたいして意識していなかったんだ。
というのもたいてい変数++;って書き方で不具合なかったしさ。どちらにせよ増えるんだろってなもんだよ。

ところが先日、動作確認のために簡単なメソッドを作ってたんだ。
-(int)testMethod:(int)i
{
    return i++;
}
↑こんな形。
これだとiの後に++があるから、後にインクリメントされるんだよ。何の後かって、returnの後なんだ。だからこれだと変数iの値はインクリメントされていないまま返ってくるんだ。そんなもん返すなよーって感じだけど、そういうもんだからそうなるよね。
テスト用のメソッドだったから簡単にあーそうか、とわかったからよかったけど、本気のプロジェクト内でこれが起きてたら、、、おお怖っ!

<< RSSリーダーを変えようと思ったが   TopPage  Pottermore Shopが重過ぎる >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/743-3d29bd57




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad