C / C ++ `!a` vs` a == 0`

the_candyman

私が整数またはポインタを持っているときa、それは両方であることがわかります

!a

そして

a==0

同じ動作をします。非常に低いレベルで、計算速度に違いはありますか?

スティーブジェソップ

コンパイラーは論理的等価性を認識しているため、パフォーマンスに違いが生じる可能性は低く、両方に対して同一のコードを出力できない理由はありません。

同等性は基本的なものであり、巧妙な定理ではありません。標準で定義されている整数型の意味!a、「a0等しい(または厳密に言えば、Jamesが指摘するように「not(anot 0)」)であり、!aポインタ型の意味は「anullポインタです」(または厳密に言えば「not(の値はanull以外のポインタ)」です。

ただし、コンパイラーが両方に対して同一のコードを発行する必要があるという要件はないため、CまたはC ++標準によってパフォーマンスが同一であることが保証されていません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事