私が整数またはポインタを持っているときa
、それは両方であることがわかります
!a
そして
a==0
同じ動作をします。非常に低いレベルで、計算速度に違いはありますか?
コンパイラーは論理的等価性を認識しているため、パフォーマンスに違いが生じる可能性は低く、両方に対して同一のコードを出力できない理由はありません。
同等性は基本的なものであり、巧妙な定理ではありません。標準で定義されている整数型の意味は!a
、「a
0に等しい値(または厳密に言えば、Jamesが指摘するように「not(a
not 0)」)であり、!a
ポインタ型の意味は「a
nullポインタです」(または厳密に言えば「not(の値はa
null以外のポインタ)」です。
ただし、コンパイラーが両方に対して同一のコードを発行する必要があるという要件はないため、CまたはC ++標準によってパフォーマンスが同一であることが保証されていません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加