voidOnStart()
{
long hash[]= {-8017261424500504960,-7417030212113027668,-4495301772150012897,8444435679621798267};
long my_hash=hash[3];
int index=ArrayBsearch(hash,my_hash);
ArrayPrint(hash);
Print(my_hash,": ",index);
}
//--- проверка поведения неинициализированных переменныхvoidOnStart()
{
Print("проверка поведения неинициализированных переменных");
long a, b;
//тест без изменения значений переменныхPrintFormat("a==%I64d, b==%I64d", a, b);
Print("a==1:", a == 1);
Print("a==2:", a == 2);
Print("b==1:", b == 1);
Print("b==2:", b == 2);
PrintFormat("%I64d", 1); //после этого начинаются чудесаPrintFormat("a==%I64d", a);
PrintFormat("b==%I64d", b);
Print("a==1:", a == 1);
Print("a==2:", a == 2);
Print("b==1:", b == 1);
Print("b==2:", b == 2);
PrintFormat("a==%I64d, b==%I64d", a, b);
Print("a==1:", a == 1);
Print("a==2:", a == 2);
Print("b==1:", b == 1);
Print("b==2:", b == 2);
//тест с изменением значения переменныхint x, y = 0;
Print("x=", x, " y=", y);
Print("y = x++");
y = x++;
Print("x=", x, " y=", y);
}
議論された。
というのも、そこではエラーは明らかではない。"そういう意図だったのかもしれない "と。
GetLastError() = ERR_WRONG_STRING_DATEという関数を実行した後の状態です。日付が間違っているのに、なぜ結果が間違っていないのか?
そうでしょうか。
悩むことはなかった・・・。数えたら、あなたは30行、私は13行でした。
悩むことはなかった・・・。数えてみたら、あなたは30行、私は13行でした。
要は、同じ結果を得るために、性能を落とさないようにすることです。
ソートされた配列の値をバイナリサーチするとエラーが発生する。
結果
2の代わりに3であるべき
ソートされた配列の値をバイナリサーチするとエラーが発生する。
結果
2の代わりに3であるべき
特にこの関数は標準的なものであっても多くのソースで使用できるため、エラーを回避するのではなく、エラーを修正することが重要なのです。そして、端末のコードそのもの、コードエディターで使われている可能性も...。
特にこの関数は標準的なものであっても多くのソースで使用できるため、エラーを回避するのではなく、エラーを修正することが重要なのです。そして、端末のコードそのもの、コードエディターで使われている可能性も...。
ほとんどすべてのビットがビジー状態になっている状況で、大きなビットが問題になっているのだと思います。
私の意見では、ほとんどすべてのビットがビジー状態である状況で、大きなロングの場合に問題があります。
こんなに長い間、使用頻度の高い機能でこのバグが発見されなかったのは驚きです。
再び、未初期化の変数について。その価値はいかようにも予測できるものであることは明らかです。しかし、関数の実行時に勝手に値が変わるというのは、今回初めて遭遇しました(検索しても出てきません)。以下は、スクリプトのコードとその結果です。
の結果です。
terminal:
2021.02.19 19:30:47.003 Terminal Opening Broker x64 build 2755 started for JSC ''Opening Broker''
2021.02.19 19:30:47.113 Terminal Windows 7 Service Pack 1 build 7601, Intel Core i5-2520M @ 2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.1.0.0.1.0.0.50GHz、メモリ 5 / 7Gb、ディスク 41 / 287Gb、IE 11、UAC、GMT+3
スクリプトを繰り返し実行すると、変数 a,b,x の初期値が変わることがありますが、全体の動作は一定です。
1.スクリプトの最初の部分では、コード中の変数a、bの値は変化しませんが、いきなりPrintFormat("%I64d", 1)を実行すると1が出力され、bも同じです。そして、最も興味深いのは、(a==1)==true で、すぐに (a==2)==true (bも同様) になることです!!!最後の呼び出しでは、PrintFormat("a==%I64d, b==%I64d", a, b) は a==1 を示しますが、b == はスクリプトの最初にあった値です。
2.スクリプトの後半では、uninitial変数の値を変更しようとします。y=x++の後、xの値は変化するはずです。しかし、それは変わらない(この実行では==1)。
どなたか、このスクリプトを実行して、その出力を投稿してください。
それゆえ、目利きの方に質問ですが、これは正常な動作(未定義の動作のようなもの)なのでしょうか? それともバグなのでしょうか?
再び、未初期化の変数について。その価値はいかようにも予測できるものであることは明らかです。しかし、関数の実行時に勝手に値が変わるというのは、今回初めて遭遇しました(検索しても出てきません)。以下は、スクリプトのコードとその結果です。
の結果です。
terminal:
2021.02.19 19:30:47.003 Terminal Opening Broker x64 build 2755 started for JSC ''Opening Broker''
2021.02.19 19:30:47.113 Terminal Windows 7 Service Pack 1 build 7601, Intel Core i5-2520M @ 2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.1.0.0.1.0.0.50GHz、メモリ 5 / 7Gb、ディスク 41 / 287Gb、IE 11、UAC、GMT+3
スクリプトを繰り返し実行すると、変数 a,b,x の初期値が変わることがありますが、全体の動作は一定です。
1.スクリプトの最初の部分では、コード中の変数a、bの値は変化しませんが、いきなりPrintFormat("%I64d", 1)を実行すると1が出力され、bも同じです。そして、最も興味深いのは、(a==1)==true で、すぐに (a==2)==true (bも同様) になることです!!!最後の呼び出しでは、PrintFormat("a==%I64d, b==%I64d", a, b) は a==1 を示しますが、b == はスクリプトの最初にあった値です。
2.スクリプトの後半では、uninitial変数の値を変更しようとします。y=x++の後、xの値は変化するはずです。しかし、それは変わらない(この実行では==1)。
どなたか、このスクリプトを実行して、その出力を投稿してください。
それゆえ、目利きの方に質問ですが、これは正常な動作(未定義の動作のようなもの)なのでしょうか? それともバグなのでしょうか?