まず、タイプC言語
- 整数ます。char、短い、int型、長い、LONGLONG
- フロート:float型、ダブル、ダブルロング
- ロジック:BOOL
- ポインタ
- カスタム・タイプ
別のどのような種類
- 型名:int型、長い、ダブル
- 入出力フォーマットた:%d、%ldのは、%LF
- 数で表される範囲:ダブルのchar <短い<int型<フロート<
- 16バイトに1バイト:メモリサイズによって占められます
- 式メモリ形式:バイナリ(補数)をコードします
のサイズ
、オペレータ、または占有されるメモリ内のバイトの所与の可変数のタイプであります
コンパイル時になり、静的演算子は、括弧のはsizeofでの動作をしないことを決めています
- sizeof(int型)
- sizeof(I)
#include <stdio.h>
int main()
{
int a;
a = 6;
printf("sizeof(int)=%ld\n", sizeof(int));
printf("sizeof(double)=%ld\n", sizeof(double));
printf("sizeof(a)=%ld\n", sizeof(a));
return 0;
}
//sizeof(int)=4
//sizeof(double)=8
//sizeof(a)=4
第二に、整数型
- CHAR:1バイト(8ビット)
- 短い:2つのバイト
- INT:の意味でのコンパイラ(CPU)に応じて、通常の単語
- 長い:の意味でのコンパイラ(CPU)に応じて、通常の単語
- LONGLONG:8つのバイト
整数の内部表現
コンピュータ内部のバイナリすべて
- 18 ------> 00010010
- 0 ------> 000000
- -18 ------>?
- 元のコードの2の補数形式で表現負
アンチコード:
陽性抗同じコードと元のコードは、元の符号ビット反転メンバーに加えて、符号シンボルの数の負の逆数[(符号ビットを除く)各否定]。反転は意味:オリジナル1、0を得るために、0、1を与えるためにオリジナルです。(0〜1; 0〜1)
補完:
抗補コード= 1 +
ここで、サブ有する例えば - 1
- バイナリ:00000001(1)
- アンチコード:11111110
- 補完:11111111
1つの発現は、コンピュータ内の1バイナリがいっぱいです
要約:
- 陽性抗コードおよび補体は、元のコードと同じです
- あなた反転符号ビットを除いて、元のコードのコード番号の負の逆数
- 符号ビットを除いてみんなに負の補数は、元のコード番号を反転した後、最後のプラス1で
整数の範囲
- バイト(8ビット)のために、示すことができる:00000000から11111111
- どこで:
- 00000000 ------> 0
- 11111111 10000000 ~~~ ------> -1 ~~ -128
- 00000001 01111111 ~~~ ------> 1〜127
- 文字:1バイト:-128〜127
- 短い:2バイト:-32768〜32767
- INT:コンパイラ(CPU)に応じて、「一言」の通常の意味
- 長い:4つのバイト
- LONGLONG:8つのバイト
符号無し
- あなた自身を表現したい場合は、後でUまたはuを追加することができ、一定の符号なしです
- LまたはLは長いを表し
- 符号なしの本来の意図は、式の数の範囲を拡張するために、純粋なバイナリ操作を行うことができなかった、主にシフト
#include <stdio.h>
int main()
{
unsigned char c = 255;
int i = 255;
printf("c=%d,i=%d\n", c , i);
// c=-1,i=255
// 当使用了unsigned之后 c=255,i=255
return 0;
}
Integer型のクロスボーダー
純粋なバイナリ整数がので、算出されます
- 11111111 + 1 ------> 100000000 ------> 0
- 01111111 + 1 ------> 10000000 ------> -128
- 10000000から1 ------> 01111111 ------> 127
すなわち、コンピュータ127 + 1 = -128、-128 -1 = 127
char a = 127;
char b = -128;
char c = a + 1;
char d = b - 1;
printf("%d, %d\n", c , d );
// -128, 127
図に示すように:保存し、時計回り、反時計回りにプラス
入力と出力の整数
2つだけのフォーム:intまたは長い長いです
- %D:int型
- %uは:符号なし
- %LD:長い長いです
- %のLU:符号なしの長い長いです
8進数と16進数に
- 0から始まる番号リテラル8進です
- リテラルは0xで始まる数は、16進数であります
- オクタルの%O、進数の%X
- 数字を表現するためにどのように文字列式には、内部とは何の関係もありませんどれだけ、8進数と16進数の数字
char c = 012;
int i = 0x12;
printf("c=%d, i=%d\n", c,i);
printf("c=0%o, i=0x%x\n", c,i);
// c=10, i=18
// c=012, i=0x12
整数型を選択します
int型を選択する特段の必要はありません
第三に、浮動小数点型
タイプ | 語長 | スコープ | 有効数字 |
---|---|---|---|
浮く | 32 | 7 | |
ダブル | 64 | 15 |
入出力
タイプ | scanf関数 | printfの |
---|---|---|
浮く | %F | %F、%eは |
ダブル | %のLF | %F、%eは |
ここでは%e科学表記法
#include <stdio.h>
int main()
{
double a = 12.321;
printf("%e\n", a );
//1.232100e+001
return 0;
}
出力精度
あなたは、出力Fと数%の間の小数点を指定することができる.nという出力が5ラウンド4になるように、添加した後
浮動小数点数の範囲外
- 浮動小数点表現INFの範囲外のprintf出力:+∞、-∞
- printfの出力はNaN浮動小数点表現が存在しません
精度浮動小数点演算
float a , b , c ;
a = 1.345f;
b = 1.123f;
if (c == 2.468)
{
printf("相等\n");
}else
{
printf("不相等\n");
}
//不相等
小数点リテラルではなく、フロートの重です
フロートが身元を示すために、FまたはFサフィックスを必要とします
浮動小数点の種類を選択
直接使用するための特別な必要はありませんダブル
文字型
- チャーは、整数であり、特別なタイプである:文字
- 単一引用符で表現リテラル文字「A」、「1」
- 入力文字に出力における%Cとのprintfおよびscanf
char c;
c = '1';
printf("%d\n", c); // 49 ascll
printf("%c\n", c); // 1
エスケープ文字
表現の特殊文字または制御文字を印刷するために使用することはできません、それは他の文字を維持するためにバックバックスラッシュの始まりである、とで構成される文字
printf("请输入身高和体重,如果输入\"170 80\"表示170cm和80kg\n");
- \ B:代替グリッド、\ T:次のテーブル位置まで上
- \ N:改行、\ rを次のように入力します。
- 「:二重引用符、「単一引用符
- \:バックスラッシュ自体
自動型変換
- 操作の両面タイプと矛盾表示されたら、変換のタイプは自動的に、より大きなタイプに変換し、自動的に行われ
- printf関数の場合は、int型intに変換されている任意の型未満、フロートは、二重に変換されます
- しかし、短い入らないscanf関数、%HDを必要とします
キャスト
(タイプ)値
たとえば、次の(int型)10.2
4つの演算子よりも優先キャスト
BOOL
含める<stdbool.h>
- そして、あなたはブールと真、偽使用することができます
#include <stdio.h>
#include <stdbool.h>
int main()
{
bool b = 6 > 5;
bool t = true;
printf("%d\n", b);
// 1
return 0;
}
第四に、論理演算子
論理演算子が論理演算され、その結果は、0又は1であります
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
! | 論理否定 | ! | |
&& | ロジックと | && bの | |
|| | 論理または | || bの |
優先順位
図示のように:
短絡
左の結果は、結果を決定することができた場合には、論理演算子は、左から右に行われ、それが右側に計算を行うことはありません
- falseの場合は、左&&のために右をしていません
- ||のために、左は右の時に真をやっていません
条件演算子
- カウント=(> 20カウント)?カウント - 10:+ 10を数えます。
- 状態の値は、条件が満たされた場合、条件の値が満たされていません
コンマ演算子
int i,j;
i = 3+4,5+6;
j = (3+4,5+6);
printf("%d\n", i);
printf("%d\n", j);
// 7
// 11
括弧は、第2の計算式である場合