Bruce. です。
#さっきは直し忘れてしまった。
> printf が引数のリファレンスを受け取るものとして(普通に
> サブルーチンを書くと、@_ は引数のエイリアスになっている)
>
> printf("%d%d%d\n",$i++,$i++,$i++);
>
> と書いた場合、printf が受け取るのはインクリメントされる
> 前の $i の *コピー* のリファレンス(=3つの異なるオブ
> ジェクトが存在している)、
>
> printf("%d%d%d\n",++$i,++$i,++$i);
>
> と書いた場合、printf が受け取るのはインクリメントされた
> 後の $i のリファレンス(= オリジナルの $i そのもの、
> つまり3回インクリメントされた後の値が見える)、
>
> と考えるとつじつまが合うかなと思ってます。とはいえ、
そのようですね。リファレンス云々でちと思いついて
#include <stdio.h>
void
sub(int &a, int &b, int &c)
{
printf("%d:%d:%d\n", a, b, c);
}
int
main()
{
int i = 1;
sub(++i, ++i, ++i);
//i = 1;
//sub(i++, i++, i++); ←これはコンパイルエラー
return 0;
}
というC++プログラムを作ってコンパイルしたところ、
4:4:4
という出力になりました。
--
木村浩一
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
mail kbk@...
web www.kt.rim.or.jp/~kbk/