C言語:データ型


ここに画像を挿入説明

変数

  1. C言語の識別子は、変数、関数名、マクロ定義、構造体メンバの名前が含まれています。
  2. C言語の識別子は、文字またはアンダースコアで指定する必要があります_初めに、それは文字、数字、アンダースコアの数字が続くことができ、他の文字があることができます。
  3. キーワードは、識別子として定義することはできません。

C言語のキーワード

auto 	break	 case	 char	 const 	continue 	default	 do		double
else 	enum 	 extern	 float	 for 	goto	    if 	     int	long
register return  short   signed  sizeof static      struct   switch typedef
union   unsigned void    volatile while

タイプサイズ

32ビットオペレーティングシステム

#include<iostream>

using std::cout;
using std::endl;

int main()
{
	cout <<"char->"<< sizeof(char) << endl;
	cout <<"short->"<< sizeof(short) << endl;
	cout << "int->"<<sizeof(int) << endl;
	cout << "long->"<<sizeof(long) << endl;
	cout <<"long long ->"<< sizeof(long long) << endl;
	cout << "float->"<<sizeof(float) << endl;
	cout << "double->"<<sizeof(double) << endl;
	cout << "long float->"<<sizeof(long float) << endl;
	cout << "long double->"<<sizeof(long double) << endl;
	system("pause");
	return 0;
}
char->1
short->2
int->4
long->4
long long ->8
float->4
double->8
long float->8
long double->8
请按任意键继续. . .

64ビット・オペレーティング・システム

#include<iostream>

using std::cout;
using std::endl;

int main()
{

    cout <<"char->"<< sizeof(char) << endl;
    cout <<"short->"<< sizeof(short) << endl;
    cout << "int->"<<sizeof(int) << endl;
    cout << "long->"<<sizeof(long) << endl;
    cout <<"long long ->"<< sizeof(long long) << endl;
    cout << "float->"<<sizeof(float) << endl;
    cout << "double->"<<sizeof(double) << endl;
    cout << "long double->"<<sizeof(long double) << endl;
    return 0;
}
char->1
short->2
int->4
long->8
long long ->8
float->4
double->8
long double->16

違い

32ビットlongシステムの長さが4,64ビットであり、long長さは8です。
32ビットlong float長が8,64ビットオペレーティングシステムであるlong float法的なデータ・タイプではありません。

違い、以下の3つの文字の配列を初期化します。

char arr1[]="abc"           //'a''b' 'c' '\0'
char arr2[]={'a','b','c'};  //'a''b' 'c' 
char *p="abcdef";           //p的内存中只存了字符a的地址
  • 図1に示すように、メモリアレイは行に格納されています。
  • 図2に示すように、メモリアドレスに対応するメモリ(1バイト)のメモリセル。
  • 図3は、32ビット・ポインタ・サイズは、プラットフォーム64は、8バイトの4バイト・プラットフォームです。
  • 図4に示すように、ポインタ変数として理解することができ、具体的には変数のアドレスを格納するように設計されています。

%Lfとの%Lとの区別

C ++は、実際に非常に微妙な言語、%fおよび%のLFのprintfのための()やscanf()の効果が異なっています

#include<stdio.h>
int main()
{
    float n;
    scanf("%lf",&n);
    printf("%f",n);
    return 0;
}
80
0.000000

溶液:1)「%のLFは」「%のF」に変更し、2)二重フロートによって置き換えられます

実際には、のprintf()、F%のLFの有無%、効果は同じです。なぜなら、顔フロート、それは何の問題もありませんので、printfの()は、自動的に倍増する昇格された型をフロートします。そして、それは%Fを使用するのが最適ですので、多くのコンパイラは、受け入れますが、厳密に言えば、ない、のprintf()と%LFのない定義。
scanfのため()、それは二重%のLFのために使用されなければならないので、ポインタ、および引数のアップグレードのないタイプを受け入れることによって、フロートは、%Fです。

おすすめ

転載: blog.csdn.net/Vickers_xiaowei/article/details/89681345