データの種類
INTのサイズをバイト単位で取得する方法
printf(" INTバイトた:%d "、はsizeof(INT))。
仕上げリスト
タイプ |
バイトカウント |
レンジ |
CHAR |
1 |
【-128127] = [ - 2 ^ 7,2 ^ 7-1] |
unsigned char型 |
1 |
[0,255] = [0,2 ^ 8-1] |
short int型(短期) |
2 |
[-2 ^ 15、2 ^ 15-1] |
符号なしshort int型 |
2 |
[^ 16-1 0,2] |
int型 |
4 |
[-2 ^ 31,2 ^ 31-1] |
unsigned int型 |
4 |
[^ 32-1 0,2] |
long int型 |
4 |
[-2 ^ 31,2 ^ 31-1] |
符号なしlong int型 |
4 |
[^ 32-1 0,2] |
長い長いint型 |
8 |
[-2 ^ 63、2 ^ 63-1] |
符号なしlong long int型 |
8 |
[0、2 ^ 64-1] |
浮く |
4 |
- / + 3.4e38(小数点以下6桁の精度) |
ダブル |
8 |
- / + 1.7e308(正確に15の小数点以下の桁数) |
ダブルロング |
12 |
- / + 1.19e4932(正確に18の小数点以下の桁数) |
intとlong int型の違い
初期のCシステム・プラットフォーム16 INTは、-32768〜+ 32767の範囲で、2バイトで表されるint型、長い長いintは4バイト、範囲-2147483648 2147483647 +で表される、速記です。明らかに初期のプラットフォームlong int型の整数の範囲はよりもはるかに多くを表すことができます。そして最近人気のある32ビットプラットフォームINTシステム、すなわち、4バイトのシステムは、長いINTこのシステムには相違しており、それらは4バイトの符号付き整数であり、テーブルの数の範囲は-2147483648 +です2147483647。
データのオーバーフロー
変数が最大値より大きいか又は型タイプの最小値よりも小さい場合、変数の値は、最大値+最小値として、ジャンプすることです。
する#include <stdio.hの> ボイドメイン(){ チャー分= - 128 - 1 ; チャー最大= 127 + 1 ; のprintf(" 分=%1-Dの\のR&LT \ N- "、分); // 出力:127 printf(" 最大=%の+ 1 D \ R&LT \ N-。"、MAX); // 出力:-128 }
静的変数と関数
変数や関数だけですべて宣言する静的なキーワードを使用して、このドキュメントで使用されます
静的変数
0、静的なグローバル変数は、現在のファイル、アクセスできない他のファイルに表示され、他のファイルが自慢のexternファイルアクセスを実現することができない、両方の互いに独立して、同じ名前の変数を定義することができます
平均変数コンパイラが自動的に初期与えられないであろうしながら1、静的変数は自動的に、0の初期値が割り当てられています
2、ローカル静的変数は、データ領域に配置されているので、理由は死の機能を消えませんが、寄生の機能の上に。グローバル静的変数はグローバル変数に似ています。
3、静的変数を繰り返し、静的ローカル変数高い優先順位が、部分的にしか効果に定義され
する#include <stdio.hの> 静的 INT I; // グローバル静的変数 ボイドFUN1(){ 静的 INT I; // ローカル静的変数 のprintf(" %Dの\のR&LT \ N- "、I); // 0-9(部分的な) 私は++ ; } ボイド)(主{ int型X; のために(X = 0 ; X < 10、X ++ )FUN1(); のprintf(" ---%D \ R&LT \ N- "、I); // 0(グローバル) }
静的機能
0、機能に加えて、静的、静的関数の戻り値の型がある前に、
1、静的関数のみ見ることができ、他の文書は、ファイルを宣言された関数を参照することはできません
2、異なるファイルは、互いに独立して、同じ名前の静的関数を使用することができます
構造
声明
方法1:
構造体構造名 { メンバーリスト }; 構造体の 構造体変数名1、可変2。
方法2
構造体構造名 { メンバリスト }可変1、可変2。
方法3
構造体 { メンバリスト }可変1、可変2。
方法4
typedefは構造体 { メンバーリスト; }類義語構造、 構造エイリアス可変1、可変2。
初期化
方法1
構造体 { メンバリスト }変数1 = {値1人のメンバー、値の2人のメンバー、3人のメンバーの値......}。
方法2
memsetの(&構造変数名、0、はsizeof(構造変数名)); // すべての変数をすべてクリア
リファレンス(使用)メンバー:
構造体変数
構造体 構造変数名1、変数2; 変数1.メンバー名
構造体ポインタ変数
構造体の 構造名* 変数1、 変数1 - >メンバー名
C間のファイル共有変数
外部の
externキーワードは、別のファイル内の変数や関数の定義を示すために、変数や関数の前に配置することができ、コンピュータ言語です。プロンプトが表示され、コンパイラはこの変数や関数を検出すると、加えて、EXTERNもリンクを指定するために使用され、他のモジュール内の定義を見つけます。
共有変数がヘッダを含むフォルダ限り達成することができ、その後のexternは、ヘッダファイルによって記述することができ、(例えば、main.cの)可変点Cのいずれかの定義でファイルを書き込みます
栗の場合:
C1.h、関数c1funを(宣言)
#ifndefの_C1_H_
の#define _C1_H_
無効c1fun(CHAR * strx)。
#endifの
C1.c、関数c1funを達成()
書式#include <stdio.hに>
の#include "c1.h"
のchar * 呉;
ボイドc1fun(チャー*のstrx){
ウー= strx。 }
MAIN.Cは、()関数c1funを呼び出し、および外部変数ウーの値を読み出し
書式#include <stdio.hに>
の#include "c1.h"
のexternのchar * 呉;
ボイドメイン(){
c1fun( "123456" )。 printf( "===:%のS"、ウー); //输出:123456 }
#define
変更されない量の場合は、ヘッダファイルで宣言することができ、あなたは他のCファイルに含まれて使用することができます
中c1.hのように:
#define DONG "dongxiaodong"
Mian.cで:
#include "c1.h"
......
のprintf( "===:%sの" ドン);
......
マクロ定義を使用します
#define使用
マクロは、定数を定義します
#define DONG '2' // 文字 の#define DONG "STRは" // 文字列 の#define DONG 12はある // デジタル の#define DONG 13.36 // フロート
マクロ定義
#define P 123 ...... #undefの P
typedefを使用してください
タイプのマクロ定義の名前を変更します
符号なしのtypedef char型 U8。
マクロ定義比較のタイプの名前を変更します
書式#include <stdio.hに> に#define CH1のchar * のtypedef のchar *のCH2; ボイドメイン(){ CH1のA、B。// 文字*、B; CH2のC、D; // するchar * C、* D; // 输出:--8,1,8,8-- のprintf(" - %のDは、%Dは、%D、%のd-- "、はsizeof(A)はsizeof(B)はsizeof(C)、sizeof (d)参照)。 }
パラメータを持つマクロ定義
する#include <stdio.hの> に#define MAX(x、y)は(?(X> Y)X:Y)は、 の#define(x、y)は(x + y)を加えます。ボイドメイン(){ int型 I = MAX(10、2 )。 int型 II =追加(2、1)// 此处无分号 のprintf(" 最大:%dは、追加:%をD "、I、II); // 最大:10、追加:3 }
参考:
https://blog.csdn.net/xlh006/article/details/81540703
https://blog.csdn.net/kuniqiw/article/details/84495732