C言語のソースコードに現れるさまざまな記号が、どういう意味であるのかを一覧できるようにしました。
C++ の記号の一覧がこちらのページにあります。
記号 | 使用例 | 意味 | 詳細な解説へのリンク |
---|---|---|---|
+ |
a = b + c;
|
加算(足し算) | 第2章 |
+ |
a = +10;
|
符号。特に効果はない | 第2章 |
+= |
a += 10;
|
変数に対して加算(足し算)を行い、結果をその変数に代入する | 第7章 |
++ |
++a; a++;
|
変数の値に +1 する。変数名の手前に置くのと、後ろに置くのとでは動作に違いがある。 | 第12章 |
- |
a = b - c;
|
減算(引き算) | 第2章 |
- |
a = -10;
|
符号を反転させる | 第2章 |
-= |
a -= 10;
|
変数に対して減算(引き算)を行い、結果をその変数に代入する | 第7章 |
-- |
--a; a--;
|
変数の値に -1 する。変数名の手前に置くのと、後ろに置くのとでは動作に違いがある。 | 第12章 |
-> |
p->n = 10;
|
構造体を指すポインタを経由して、メンバを参照する | 第37章 |
* |
int* p;
|
ポインタ型であることを表す | 第31章 |
* |
*p = 10; int n = *p;
|
ポインタが指し示す先にある値を参照する | 第31章 |
** |
**pp = 10;
|
上記の *
による間接参照を繰り返している。3個以上並んでいる場合も同様
|
第36章 |
* |
a = b * c;
|
乗算(掛け算) | 第3章 |
*= |
a *= 3;
|
変数に対して乗算(掛け算)を行い、結果をその変数に代入する | 第7章 |
*/ |
/* 注釈 */
|
コメントの終了 | 第5章 |
/ |
a = b / c;
|
除算(割り算) | 第3章 |
/= |
a /= 10;
|
変数に対して除算(割り算)を行い、結果をその変数に代入する | 第7章 |
/* |
/* 注釈 */
|
コメントの開始 | 第5章 |
// |
// 注釈
|
コメントの開始。行末までがコメント | 第5章 |
% |
a = b % 2;
|
剰余(割り算の余り)を求める | 第3章 |
%= |
a %= 2;
|
変数に対して剰余を求めて、結果をその変数に代入する | 第7章 |
& |
&a;
|
メモリアドレスを取得する | 第31章 |
& |
a = b & 0x01;
|
ビット積 (AND) | 第49章 |
&= |
a &= 0x01;
|
変数に対してビット積 (AND) を取り、結果をその変数に代入する | 第49章 |
&& |
if (a && b)
|
論理積(AND) | 第15章 |
| |
a = b | 0x01;
|
ビット和 (OR) | 第49章 |
|= |
a |= 0x01;
|
変数に対してビット和 (OR) を取り、結果をその変数に代入する | 第49章 |
|| |
if (a || b)
|
論理和(OR) | 第15章 |
^ |
a = b ^ 0x01;
|
排他的ビット和 (XOR) | 第49章 |
^= |
a ^= 0x01;
|
変数に対して排他的ビット和 (XOR) を取り、結果をその変数に代入する | 第49章 |
~ |
a = ~b;
|
ビット否定 (NOT) | 第49章 |
< |
#include <stdio.h>
|
インクルードするヘッダの名前を囲む括弧の開始 | 第24章 |
< |
if (a < 0)
|
左側の値のほうが、右側の値より小さい | 第13章 |
<= |
if (a <= 0)
|
左側の値が、右側の値以下 | 第13章 |
<< |
a = b << 1;
|
ビット列を左方向(上位の桁)へずらす | 第49章 |
<<= |
a <<= 1;
|
変数に対してビット列を左方向(上位の桁)へずらす操作を行い、結果をその変数に代入する | 第49章 |
> |
#include <stdio.h>
|
インクルードするヘッダの名前を囲む括弧の終わり | 第24章 |
> |
if (a > 0)
|
左側の値のほうが、右側の値より大きい | 第13章 |
>= |
if (a >= 0)
|
左側の値が、右側の値以上 | 第13章 |
>> |
a = b >> 1;
|
ビット列を右方向(下位の桁)へずらす | 第49章 |
>>= |
a >>= 1;
|
変数に対してビット列を右方向(下位の桁)へずらす操作を行い、結果をその変数に代入する | 第49章 |
! |
a = !b; if (!x)
|
真と偽を反転する | 第15章 |
!= |
if (a != b)
|
左側の値と、右側の値が異なる | 第13章 |
= |
a = 10;
|
右側の値を、左側の変数に代入する | 第7章 |
= |
int a = 10;
|
変数宣言時に初期値を与える | 第7章 |
== |
if (a == 0)
|
左側の値と、右側の値が同じ | 第13章 |
# |
#
|
空のプリプロセッサ指令 | 第23章 |
# |
#define XYZ "XYZ" など、#
とそれに続くアルファベットの並びの組み合わせ
|
各種のプリプロセッサ指令 |
#define –> 第23章、第28章 #if、#endif、#ifdef、#ifndef、#else、#elif –> 第23章 #include –> 第23章 #error –> 第23章 #line –> 第29章 #pragma –> 第29章 #undef –> 第23章 |
# |
#define LOG_INT(var) printf(#var ": %d\n", var) (※冒頭の # ではなく、途中に現れるもの) |
関数形式マクロの実引数を、文字列リテラルに置換する | 第28章 |
## |
#define CAT(first,second) first ## second
|
マクロの置換結果の中で、2つの字句を連結する | 第28章 |
’ |
c = 'x';
|
2つをペアで使って、文字の定数を表現する | 第8章 |
’ |
100'000'000
|
(C23)大きな数を読みやすくするための区切り(意味に変化はない) | 第19章 |
” |
const char* s = "xyz";
|
2つをペアで使って、文字列リテラルを表現する | 第1章 |
() |
void f(int a);
|
関数の仮引数 | 第9章 |
() |
f(); f(1, 2, 3);
|
関数を呼び出す。実引数があるなら () の内側に , で区切って書く | 第9章 |
() |
int n = (int)f;
|
型を明示的に変換する(キャスト) | 第21章 |
() |
a = (b + c) / 2;
|
計算の優先順位を強制する | 第3章 |
() |
if (a == 0) while (a == 0) void f(int n); など
|
条件式や仮引数を記述するなど、構文上のルールとして |
if –> 第14章 switch –> 第11章 while –> 第16章 for –> 第12章 do –> 第16章 関数の宣言・定義 –> 第9章 複合リテラル –> 第26章 |
[] |
int a[] = {0, 1, 2}; int a[3] = {0, 1, 2};
|
配列の要素数の指定 | 第25章 |
[] |
a[1] = 10;
|
配列の要素を参照する際に、添字を指定する | 第25章 |
{} |
int a[] = {0, 1, 2}; struct Data data = {0, 1, 2}; union Data data = {0};
|
配列や構造体などの集成体型や、共用体を初期化するときに、初期値の並びを囲む。 (C23) {}
の内側を空にできるようになり、単独の変数に対しても使える。
|
配列 –> 第25章 構造体 –> 第26章 共用体 –> 第55章 (C23)単独の変数に対する空の {} –> 第7章
|
{} |
int* a = (int[]){0, 1, 2}; struct Data data = (struct Data){0, 1, 2};
|
複合リテラル |
配列 –> 第32章 構造体 –> 第26章 |
{} |
|
ブロックを構築する | 第22章 |
, |
for (i = 0, j = 0; i < 10; ++i, ++j)
|
式を連結する | 第27章 |
, |
int array[] = {0, 1, 2}; struct Data data = {0, 1, 2};
|
区切り |
複数の変数の宣言 –> 第27章
配列 –> 第25章 構造体 –> 第26章 |
. |
0.123
|
小数点 | |
. |
s.n = 10;
|
構造体のメンバを参照する | 第26章 |
. |
struct Data data = {.n = 10};
|
構造体の初期化時に、対象のメンバを指定する | 第26章 |
… |
void f(int n, ...);
|
引数の個数や型が可変であることを表す | 第52章 |
: |
case 0: default: error:
|
ラベルの記述。switch や goto とともに使用され、処理の飛び先を表す |
switch –> 第11章 goto –> 第17章 |
: |
a = (p == NULL) ? 0 : *p;
|
条件演算子に与えるオペランドの区切り | 第14章 |
; |
int a = 0; a = 0; for (int a = 0; a < 10; ++a)
|
文の終わり |
第1章 for の場合 –> 第15章 |
? |
a = (p == NULL) ? 0 : *p;
|
条件演算子に与えるオペランドの区切り | 第14章 |
\ |
|
マクロ定義内で改行を行う | 第28章 |
\ |
char* s = "abc\n"; など、「\」に1文字が続く
|
特殊な意味をもった文字を表現する | 第8章 |
_ |
printf("%d\n", __LINE__); _Bool b = 0;
int _x;
|
特に意味のない普通の文字。 たとえば、__LINE__ はそのような名前のマクロ、_Bool はそのような名前の型、_x はそのような名前の変数に過ぎない。 |
新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |