-3

参照値を取得して、同じコード行内で変更しようとするとどうなるかという質問を受けました。私の答えは、コンパイラ エラーが発生する前にこれを実行しようとしたため (少なくとも C# または Java では)、何も起こらないということでした。

これに対する本当の答えは何ですか?

これは擬似コードの例です:

Module main()
    Call changeNumber(10)
End Module

Module changeNumber(Integer Ref number)
    Set number = number * number
    Display number
End Module

(追伸。この投稿を正しくフォーマット/作成していないことをお詫びします。ここで少し問題が発生しています。)

4

3 に答える 3

1

この質問の後にあなたがした質問に関して -

実際には、まれに問題が発生する可能性がありますが、数字とコーディング言語にスペースをどのように割り当てているかによって異なります。このことを考慮。データ型を int として明示的に命名していますが、受け入れられた入力が int が処理できるよりも大きい数 (または負の数) である場合、それは x 整数の長さになり、同じ数で乗算されます。割り当てられたスペース (通常は整数でパディングされます) にも、この特定のインスタンスには小さすぎるスペースが不足している可能性があり、C でセグメンテーション違反が発生する可能性があります。この場合、コンパイル チェックが行われる場合がありますが、常にではありません。

于 2013-02-06T21:09:40.000 に答える
1

特定の擬似コードでは何も起こりません。

于 2013-02-05T02:07:31.267 に答える
1

それがあなたが求めているものであれば、異常な副作用はありません. 言語仕様では、特定の実行順序 (number * numberが評価されてから設定されるnumber) が規定されているため、問題が発生するのを防ぐことができます。

于 2013-02-05T02:08:21.557 に答える