SQL WHERE句のブール式は短絡評価され ますか? 例えば: SELECT * FROM Table t WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key) 場合@keyがNULL IS TRUEと評価、さ@keyがNULLでなく、@key = t.Key評価済み? いいえの場合、なぜですか? はいの場合、保証されますか?ANSI SQLの一部ですか、それともデータベース固有ですか? データベース固有の場合、SqlServer?Oracle?MySQL?
Oracle Certified Associate Java SE 8 Programmer 1試験に備えて、公式の学習ガイドの3項式に関する次の段落に出くわしました。 三項式の評価 Java 7では、三項演算子の右側の式の1つだけが実行時に評価されます。短絡演算子と同様に、3項演算子の2つの右辺式の1つが副作用を実行する場合、実行時に適用されない可能性があります。この原則を次の例で説明しましょう:[...] 次の例で示すように、2つの式のうちの1つだけが評価されることを示しています。 int y = 1; int z = 1; int a = y < 10 ? y++ : z++; ここでは、yインクリメントのみzですが、そうではありません。 私がつまづいているのは、「Java 7以降...」と書かれている段落(黄色でマークされている)の始まりです。同じコードをJava 1.6でテストしましたが、動作の違いを見つけることができません。私は、Java 1.6が両方の式を段落で与えられた情報からのみ評価することを期待していました。誰かが「Java 7の時点で...」で何を言いたかったのか考えがありますか? 編集:混乱を避けるために:それは質問に要約されます、「Java 7の時点で」と書いているため、Java 6からJava 7に切り替えるときに、3項演算子に関して変更されたものはありましたか?
条件付き論理演算子 ||と&&、短絡論理演算子としても知られるC#言語仕様を読みました。私には、これらがnull許容ブール値、つまりオペランド型Nullable<bool>(これも記述されているbool?)に存在するかどうかが不明であるように思われたので、非動的型付けで試してみました。 bool a = true; bool? b = null; bool? xxxx = b || a; // compile-time error, || can't be applied to these types これで問題は解決したようです(仕様を明確に理解できませんでしたが、Visual C#コンパイラの実装が正しいと仮定すると、今ではわかりました)。 しかし、私dynamicもバインディングを試してみたかったのです。だから私は代わりにこれを試しました: static class Program { static dynamic A { get { Console.WriteLine("'A' evaluated"); return true; } } static dynamic B { get …
はい、これは宿題の質問ですが、私はこのトピックについて調査とかなりの深い考えを行ったので、これを理解することはできません。この質問は、このコードが短絡動作を示さないことを示し、その理由を尋ねます。しかし、私には短絡動作を示しているように見えますが、なぜそうでないのか誰かが説明できますか? Cの場合: int sc_and(int a, int b) { return a ? b : 0; } それaが間違っている場合、プログラムはまったく評価しようとしないように見えbますが、私は間違っているに違いありません。bこの場合、プログラムが触れる必要がないのに、なぜプログラムが触れるのでしょうか。