問題タブ [unary-operator]

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.

0 投票する
3 に答える
219 参照

c++ - C ++に「通常の」単項論理演算子はありますか

つまり、否定論理演算子があることは誰もが知っており、次の!ように使用できます。

これを許可する演算子はありますか:

重要ではないかもしれませんが、ただ疑問に思っています!

0 投票する
2 に答える
783 参照

c - printf の単項演算子

誰でも次の出力を説明できますか。私はすべてを推論しようとしましたが、「x」に式の値が割り当てられている後半部分を説明できますが、printfステートメントで答えがどのように異なるかを理解できません!!!

コンパイラが異なれば、動作も異なる場合があります。誰かがコンパイラのこの動作を説明できれば素晴らしいでしょう.

openSUSE 12.1 (アスパラガス) (i586) で gcc (SUSE Linux) 4.6.2 を使用しています。

コード:

出力:

ありがとう

0 投票する
3 に答える
228 参照

c++ - int& の単項 + 演算子

次のステートメントがあり、コンパイルされます。

コンパイラ エラーが発生しないのはなぜですか?

0 投票する
2 に答える
3350 参照

c++ - 0x80000000の単項マイナス(符号付きおよび符号なし)

n3337.pdfドラフト5.3.1.8には、次のように記載されています。

単項演算子のオペランドは、-算術型またはスコープなしの列挙型でなければならず、結果はそのオペランドの否定になります。汎整数拡張は、積分オペランドまたは列挙オペランドで実行されます。符号なし数量の負の数は、2ⁿからその値を減算することによって計算されます。ここで、nはプロモートされたオペランドのビット数です。結果のタイプは、プロモートされたオペランドのタイプです。

場合によってはそれで十分です。unsigned intが32ビット幅(-(0x80000000u)) == 0x80000000uだとしたら、そうではありませんか?

それでも、符号なし0x80000000の単項マイナスについては何も見つかりません。また、C99標準ドラフトn1336.pdf、6.5.3.3はそれについて何も言っていないようです:

単項演算子の結果は、その(プロモートされた)オペランドの負数です。整数拡張はオペランドで実行され、結果はプロモートされたタイプになります。

UPDATE2:unsignedintが32ビット幅であると仮定しましょう。したがって、問題は、C(符号付きおよび符号なし)の単項マイナス、およびC ++(符号付きのみ)の単項マイナスについてはどうでしょうか。

UPDATE1:実行時の動作とコンパイル時の動作(つまり、定数畳み込み)の両方が興味深いものです。

(関連:abs(0x80000000)== 0x80000000なのはなぜですか?

0 投票する
2 に答える
683 参照

c++ - C ++のみ:0x80000000の単項マイナス

この質問はおそらく言語弁護士のためのものです。

signedとunsignedintの両方が32ビット幅であると仮定します。n3337.pdfドラフト5.3.1.8に記載されているように、

(-(0x80000000u)) = 0x100000000u-0x80000000u = 0x80000000u

しかし、私は質問に対する答えを見つけることができません:署名された0x80000000の単項マイナスは何になりますか?それはUB、実装定義、または...?

問題は主に実行時の計算に関するものです。

言う

それでも、他の2つのケースについてのコメントは大歓迎です。

  • コンパイル時定数畳み込み、たとえば、-(INT_MIN)

  • のコンパイル時の計算constexpr(コンパイル時の定数畳み込みとの違いがある場合)。


(重複に投票する前に、 https://meta.stackexchange.com/questions/123713/is-splitting-a-question-a-good-practiceを参照してください。)

0 投票する
2 に答える
797 参照

php - javascript と PHP の三項演算子、異なる出力

単項ifを使ってPHPでFizzbuzzをやりたかったのですが、出力が期待したものではなく、理由がわからなかったので、コードをjavascriptにコピーアンドペーストしたところ、結果は期待どおりになりました。なんで?

出力

0 投票する
3 に答える
1586 参照

c# - Null をチェックする条件付きステートメント

短い1行の条件ステートメントを作成する方法を見つけようとしています。

この日付が null でない場合は、フィルタを現在のフィルタ リストに追加します。

fromDt ?? filters.Add(FilterType.DateFrom, fromDt);

これを行う方法はありますか?私は私ができることを知っています..

(fromDt != null) ? "something" : "something_else"、しかし、「else」は必要ありません??。null チェックに演算子を使用したいだけです。

0 投票する
2 に答える
1199 参照

java - HibernateQLで単項演算子を無効にします

次のhqlを使用してブールフィールドを切り替えようとしています。

残念ながら、「QuerySyntaxException:予期しないトークン:近くにありません...」がスローされました。

私の質問は、そのような式をサポートする休止状態の単項演算子はありますか?または、よく知られているトリックはありますか?

sqlはそのようなクエリをサポートします(postgresql):

0 投票する
1 に答える
5726 参照

c++ - 構文解析ツリーの単項および2進数のマイナス

次のような式を含む解析ツリーを作成しています

3 - 4 * 8

また

8 * -5

また

-(10 * 1)

単項マイナスとバイナリマイナスを区別する方法が必要です。私の文法の進め方は、最初に2進数のマイナスに到達しますが、それを変更して、最後の変数を保持するフラグ変数を追加することを考えています。

例:もしそうなら5 - 6

フラグは5を保持しており、マイナスが表示され、フラグが数値の場合は、単項をスキップして2進数になります。

ただし、これをC++で実装する方法が正確にはわかりません。

どんな助けでも大歓迎です。

ありがとう