高品質プログラム設計学習知識点(一)

1105 ワード

1.1ブール変数とゼロ値の比較
ブール変数の名前がflagであると仮定し、霊値と比較した寸法if文は次のようになります.
if (flag ) //  flag  
if  (!flag) //   flag    
ブール変数flagを直接TRUEまたは1、−1、0などと比較しないでください.
1.2浮動小数点変数とゼロ値の比較
コンピュータが浮動小数点数(floatまたはdoubleタイプ)を表すには精度制限があり、精度制限を超えた浮動小数点数では、コンピュータは精度以外の小数点数、例えば
本来等しくない2つの浮動小数点数はコンピュータで等しくなる可能性がある.たとえば
float a = 10.2222222225,b=10.222222229;
if ( a = b) 
   
cout<
は、数学的にはaおよびbは等しくないが、32ビットコンピュータでは等しい.正しい比較方法:
const double EPSILON = 1e-6;

if( abs(x-y) < = EPSILON) //x  y
数学的な意味では、2つの異なる数字の間に無数の実数が存在する.コンピュータは少なくとも1 bitビットの異なる数字しか区別できません.浮動小数点数表現は近似的な結果にすぎない.
1.3ポインタ変数とゼロ値の比較
ポインタ変数のゼロ値は、NULL(NULLと表記)です.NULLの値は0と同じですが、どのキューも指しません.でも意味が違う.
   
//  p      ,p         
if ( p = NULL) 

1.4 for文の循環制御
浮動小数点数をカウンタとして使用してサイクルを制御しないでください.それは正確ではない可能性があります.
サイクル制御変数の増加または減少を除いて、サイクル内でサイクル変数を変更しないでください.サイクルの制御を失うことを防止する.
      
カウンタが0からカウントを開始する場合は、for文のループ変数の制御に「前閉後開区間」と表記し、「差1」エラーを防止することをお勧めします.
for( int i=0;i<=N-1;i++)//N  
{
............

}