2012-05-31 :-(
_ [インクリメント][C]++
RT が流れてきた。
問: int main(void){ char c[]="abc"; int i=0; printf("%c%c",c[i++],c[i++]); return 0; } というプログラムの実行結果はどうなるか。 ( @climpet )
整形
int main(void) { char c[]="abc"; int i=0; printf("%c%c",c[i++],c[i++]); return 0; }
++ は処理系依存である、というのをはるか昔にどこかで読んだような気がしたので、印字されるのは ab か又は処理系によると予想。
実行 1
- Microsoft Windows 7 64bit
- cygwin gcc 4.5.3
% ./a.exe ba
実行 2
- Microsoft Windows 7 64bit
- Microsoft Visual Studio C++ 2010 Express
% pointer0.exe aa
実行 3
- NetBSD/i386
- gcc 4.1.3
% ./a.out ba
結果
処理系依存
参考
tsutsui さんから流れてきた。
kouno.jp/home/c_faq/c3. … 「自分の使っているコンパイラがそのような副作用を持つコードをどう実装しているか調べるようなこともしてはいけない(多くのCの教科書に載っている愚かな練習問題であるが、お薦めはしない)」 ( @tsutsuii )
読みましょう。
[ツッコミを入れる]