by 山本 » 2005年7月20日(水) 20:42
それは仕様です。大抵のプログラミング言語では、下記のような演算順序が採用されていることと思います。ABも、その順序に従う形になります。
右辺値を演算。結果をレジスタまたはスタックに保有
↓
左辺値である変数のアドレスを取得。このタイミングで配列要素の演算が行われる
↓
取得したアドレスに保有中の演算結果を書き込む
結局のところ、ここらへんの細かい仕様は、言語によって様々な場合があるので、絶妙なタイミングで変化するグローバル変数を参照するようなコードは避けることをお勧めします。
それは仕様です。大抵のプログラミング言語では、下記のような演算順序が採用されていることと思います。ABも、その順序に従う形になります。
右辺値を演算。結果をレジスタまたはスタックに保有
↓
左辺値である変数のアドレスを取得。このタイミングで配列要素の演算が行われる
↓
取得したアドレスに保有中の演算結果を書き込む
結局のところ、ここらへんの細かい仕様は、言語によって様々な場合があるので、絶妙なタイミングで変化するグローバル変数を参照するようなコードは避けることをお勧めします。