問題タブ [relational-operators]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C 関係演算子 if-else
n の if-else は「はい」を出力するはずです
が、出力は「いいえ」
です
なぜ0<n<1000
機能しないのですか
c++ - const char* 文字列はどのように比較されますか?
まず、次の例を考えてみましょう。
私は何を期待していますか:「123」は であるため、これらの文字列のconst char*
アドレス(これらの回答の1つが言ったように)が比較されることを期待しています。
...
!=
and==
は、これらの文字列のベースアドレスのみを比較するためです。文字列自体の内容ではありません。
しかし、それでも出力は1
. わかりました、2 つの prvalue オブジェクトのアドレスを比較する方法が実際にはわかりません (または、少なくともどのように行われるかわかりません)。これらの文字列を変数として宣言して、何が起こるか見てみましょう。
それでも出力は1
. const char*
弦は腐らないのですか?または、コンパイラはいくつかの最適化を行い、1 つの文字列のみにメモリを割り当てることができましたか? では、それらを回避してみましょう:
それでも結果は同じです。const char*
それは本当に腐らないと思いました。しかし、それは私の人生をより単純にしませんでした。では、s はどのようにconst char*
比較されるのでしょうか。
なぜここに出力があるのですか1
:
a
b
は、辞書的比較では より小さいですが、こちらのa
方が大きいです。s の比較はどのようにconst char*
実装されますか?
c - 関係演算子
test
以下の場合の関数の結果について混乱してい-1
ます。
0x0135fb00
今は私のdaの値とaのアドレスです
0x0135faf4
今は私のdbの値とbのアドレスです
私の知る限り、関係演算子は True の場合は 1、False の場合は 0 を返すため、この場合は次のようにする必要があります。
*da > *db --> 1
(a のアドレス) の値は(b のアドレス) のda
値よりも大きいためです。
(aのアドレス)の値は(bのアドレス)の値より小さくないからです。
したがって、1-0 は 1 です。
具体的に言うと、da の値と db の値をデバッガーで比較することで、この結論に達しました (デフォルトの C コンパイラで Visual Studio を使用しています)。私は何が欠けていますか?
PS: GNU の公式 Web サイトでこのコードを見つけました。db
*da < *db --> 0
da
db