c深さ解剖-記号
c深さプロファイリング-シンボル
1.コメント記号
ルール:
コンパイラはコンパイル中にコメントを削除し、スペースで置き換えます.
コンパイラは、//を含む二重引用符で囲まれた文字列だと考えています.
/**/ネストできません
2.コネクタとエスケープ
記号
コンパイラは自動的にを削除し、後の文字は自動的に前の行に接続されます.
単語を接続する場合は、後にスペースを付けることはできません.次の行の前にスペースを付けることはできません.
#defineは1行以内で完了するため、マクロコードブロックで使用するのに適しています.
表示されない文字を表すこともできます.たとえば、t、通常の文字を表すこともできます.
d 8進、x 16進
3.一重引用符、二重引用符
'a'文字定数、サイズ1,'a'+1='b'
「a」文字列定数、サイズ2、「a」+1='0'終端
4.論理演算子
プログラムショートルール:
計算を左から右へ、最初の真停止計算に遭遇
&&左から右へ計算し、最初の偽停止計算に遭遇
さんこうえんざんし
(a?b:c)、aは真で、bの値を返して、さもなくばcの値を返します
5.演算子
優先度エラーを回避するためにカッコを使用する
交換を実現するために使用できる
6.++、--オペレータ
カンマ式は左から右に順番に評価され、最後の式の値を返します.
++,--欲張り原則:左から右へ1回できるだけ多くの文字を読み込む
7.優先度
[] ,(),. の優先順位は*より高い
== !=上位ビット操作と代入記号
演算数演算がシフトより高い
カンマの優先度が最も低い
8.タイプ変換
演算、低タイプ変換高タイプchar、short、int、u int、long、u long、double、float
割り当て
1.コメント記号
int/*...*/i;
char* s = "abcdefgh //hijklmn";
//Is it a \ \
valid comment?
in/*...*/t i;
ルール:
コンパイラはコンパイル中にコメントを削除し、スペースで置き換えます.
コンパイラは、//を含む二重引用符で囲まれた文字列だと考えています.
/**/ネストできません
y=x/*p /* , +
*/
y=x/(*p) //
2.コネクタとエスケープ
記号
コンパイラは自動的にを削除し、後の文字は自動的に前の行に接続されます.
単語を接続する場合は、後にスペースを付けることはできません.次の行の前にスペースを付けることはできません.
#defineは1行以内で完了するため、マクロコードブロックで使用するのに適しています.
#include
#define SWAP(a,b) \
{ \
int temp = a; \
a = b; \
b = temp; \
}//
void swap(int a, int b)
{
int temp = a;
a = b;
b = temp;
} //
int main()
{
int a = 1;
int b = 2;
SWAP(a, b);
printf("a=%d, b=%d
", a, b);
return 0;
}
表示されない文字を表すこともできます.たとえば、t、通常の文字を表すこともできます.
d 8進、x 16進
3.一重引用符、二重引用符
#include
int main()
{
char* p1 = 1 ;
char* p2 = '1';
char* p3 = "1";
printf("%s, %s, %s", p1, p2, p3); //error,p1,p2
printf('
'); //error,printf(char *)
printf("
");
return 0;
}
'a'文字定数、サイズ1,'a'+1='b'
「a」文字列定数、サイズ2、「a」+1='0'終端
#include
int main()
{
char c = " "; // c
while (c == "\t" || c == " " || c == "
")
{
scanf("%c", &c);
}
return 0;
}
// "" ''
4.論理演算子
#include
int main()
{
int i = 0;
int j = 0;
if( ++i > 0 || ++j > 0 )
{
printf("%d
", i);
printf("%d
", j);
}
return 0;
}
//answer 1 0 ,j , && 1
プログラムショートルール:
計算を左から右へ、最初の真停止計算に遭遇
&&左から右へ計算し、最初の偽停止計算に遭遇
さんこうえんざんし
(a?b:c)、aは真で、bの値を返して、さもなくばcの値を返します
int a = 0;
int b = 1;
(a < b ? a : b) = 3; // , 1=3
*(a < b ? &a : &b) = 3;
5.演算子
優先度エラーを回避するためにカッコを使用する
0x1<<2+3 32
交換を実現するために使用できる
#define SWAP3(a,b) \
{ \
a = a ^ b; \
b = a ^ b; \
a = a ^ b; \
} //
6.++、--オペレータ
int i = 3;
int x;
int j = (++i) + (++i) + (++i); //18
x=(++i,i++,i+10);//15
カンマ式は左から右に順番に評価され、最後の式の値を返します.
++,--欲張り原則:左から右へ1回できるだけ多くの文字を読み込む
a+++b ; // a++ + b
++i++; //
7.優先度
[] ,(),. の優先順位は*より高い
== !=上位ビット操作と代入記号
演算数演算がシフトより高い
カンマの優先度が最も低い
int * ap[]; // int * (ap[]) , ap
int * fp(); // int * (fp()) ,fp int*
*p.f ; // *(p.f) , ->
(val & mask !=0); // val & (mask!=0)
c=getchar() != EOF; // c=(getchar!=EOF)
msb<<4+lsb; // msk<
8.タイプ変換
演算、低タイプ変換高タイプchar、short、int、u int、long、u long、double、float
割り当て