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