データ型演算子、式(予習)

2313 ワード

register:変数がregisterによって修飾されると、その変数はレジスタ変数として、その変数のアクセス速度を最も速くします.
レジスタ変数を使用する場合は、次の点に注意してください.
(1)レジスタ変数タイプはCPUレジスタが受信可能なタイプであるべきであり、変数長はレジスタ長以下であるべきである
(2)メモリアドレスがないため、レジスタ変数にアドレス取り記号「&」を使用できません.
(3)レジスタ変数を多くの頻度で使用し,宣言する変数の個数を少なくする.
 volatile:修飾された変数は、その変数の値が外部要因によって変更されやすいことを示し、コンパイラが変数にアクセスするたびにメモリから読み出すようにします. 
typedef:
役割:データ型の新しい名前を定義します.ここでのデータ型には、内部データ型(int、charなど)とstructなどのカスタムデータ型が含まれます.
本を読んでいる間に私のところにも分からないところがたくさんありましたが、typedefという木のコードも理解できませんでした.
 【typedefと#defineの違い】
 #defineは単純な文字列置換であり、#ifdef、#ifndefなどを用いて論理判断を行うこともできるし、#undefを用いて定義を取り消すこともできる
 typedefは、定義された関数がファイル内に存在する(この変数定義の場所に応じて)機能範囲を制限するtypedefで定義された変数タイプを使用して、範囲ルールに合致するタイプに新しい名前を付けます.
使用法:#defineを使用する場合、定義に式が含まれている場合は、#define f(x)(x*x)typedefのようなカッコでそのまま使用する必要があります
列挙:
   一般的な定義は次のとおりです.
enum enum_type_name
{
   ENUM_CONST_1,
   ENUM_CONST_2,
   ......
   ENUM_CONST_n
}enum_variable_name:

カッコの中の値範囲enum_variable_nameはカッコの中のいずれかの値しか取れません
Enum変数タイプは、その中の定数記号に値を付与することもでき、コピーしない場合は、値を付与された定数から順に1を加算する.
enum Color
{
    GREEN = 1,
    RED,
    BLUE,
   GREEN_RED = 10,
   GREEN_BLUE
}ColorVal

Greenは値1を付与し、redは値10を付与されていないので、redはgreenから1を加算した結果2、blueに1を加算した結果3、green_redに10を付与し、green_blueに値10を付与していないので、10から1を加算し、結果は11
【列挙と#defineの違い】
1、#defineマクロ定数はプリコンパイル段階で簡単に置き換えられ、列挙定数はコンパイル時にその値を決定する
2、コンパイラで列挙定数をデバッグできるのが一般的ですが、マクロ定数はデバッグできません
3、列挙は一度に大量の相関定数を定義することができ、#defineマクロは一度に1つしか定義できない
連合体:
「≪結合|Join|Essbase_Studio≫」では、各メンバーはメモリ領域を共有し、1つの結合変数の長さは各メンバーの最長の長さに等しい.
【構造との違いに注意】構造内の各メンバーにはそれぞれのメモリ領域があり、1つの構造変数の長さは各メンバーの長さの和に等しい.
また、ここで共有とは、すべてのメンバーを同時に1つの連合変数にロードすることではなく、その連合変数が任意のメンバー値に付与され、毎回1つの値しか付与されず、新しい値が付与され、古い値が長く上書きされることを意味します.
第三章    演算子、式
演算子には、演算子、関係演算子、論理演算子、ビット演算子、代入演算子、条件演算子、カンマ演算子、ポインタ演算子、バイト演算子、特殊演算子が含まれます.
【注意】演算子を使用するときは、優先度に注意してください.
条件演算子と条件式:
条件演算子の一般的なフォーマット   式1?式2:式3
例:max=(a>b)?a:b
a>bが真であればaをmax,そうでなければbをmaxとする
【条件式の使用上の注意点】
1、条件演算子の演算優先度は関係演算子と算数演算子より低いが、賦値演算子より高い
2、条件演算子「?」と「:」は一対の演算子で、別々に使用することはできません
3、条件演算子の結合方向は右から左へ
++、--オペレータ
接頭辞として:まず自己加算または自己減算してから、他の演算を行います.
接尾辞として:今回の計算単位が終了した後に自己加算または自己減算