c++独学ノート002-データ型、変数、演算子、式、条件判断文

6738 ワード

データ型
コンピュータの中で最小の記憶単位はビット(bit)で、8ビットは1バイト(byte)、すなわち1 byte=8 bitを構成する
c++には、現実の様々なデータを表すための様々なデータ型があります.例えば、整数型:int,short int,long int文字型:string実型:double,floatの異なるデータ型で格納できる数の範囲も異なる.
変数#ヘンスウ#
プログラム実行中にその値が変化する量.1つの変数には、メモリに一定のメモリセルを占める変数名が必要です.変数を使用する前に、宣言または定義する必要があります.例えば、int a=3;変数名はa,値は3,int(整数)であり,メモリに4バイトの記憶空間を占める.メモ:定義によって、変数タイプも異なり、如実型変数、整数型変数、文字型変数、異なるタイプ変数は対応するデータ型のデータしか格納できません.
演算子
1)代入演算子=,+=,-=,*=,/=,%=等注:%は余剰演算子
2)関係演算子,<=,>=,演算結果bool(ブールタイプ):0または1(偽または真)cout << boolalpha << a3)論理演算子&&&,‖または,!いいえ.
4)ビット演算子
&按位与,|按位或,~按位非,^按位异或,<<左移,>右移.例:
cout << (4 & 5) << endl;

100&101の演算結果は、100(4 10進数)、すなわち、対応するビットごとに演算が取られる.
cout << (2 << 10) << endl;

シフト演算はここで重荷し,2<<10で,2のバイナリ「10」を10ビット左にシフトした「10000000000」を示し,結果は22^10,21024=2048であった.
5)sizeof演算子の基本的な使い方:sizeof(type name)コンピュータ内のデータ型の長さを測定するなど:
cout << sizeof(int) << "\t" << sizeof(0.1) << endl;

実行結果は4 8(コンパイラや機種によって異なる場合があります)
6)自増自減演算子
++--i+,i-,++i,–iなど.
式#シキ#
演算子と変数は式を構成するので、式は参加する演算子によって異なり、算術、論理、関係式などに分けることができます.式は文を構成し、各文の間に「;」を使用します.隔てる.「{}」の間の文は、いくつあっても「;」いずれも文とみなされます.
If文
if,if else,if else if......ノート:ifはある条件が成立するか否かを判断し,成立すればifの後の文を実行するために用いることができる.if elseは、2つの場合のみの問題を判断するために使用することができ、その場合にかかわらず対応する文が実行される.if elseは、条件が成立するか否かを順次判断するために用いられ、ifの後に1つの文があり、いずれかの文が実行される限り、その後のelse ifは判断されない.基本的な使用例:
int a,b,c,d;
    cout << "      :" << endl;
    cin >> a >> b >> c;
    cout << a << "\t" << b << "\t" << c << endl;
    if(a>b)
    {
        d=a;
        a=b;
        b=d;
    }
    if(a>c)
    {
        d=a;
        a=c;
        c=d;
    }
    if(b>c)
    {
        d=b;
        b=c;
        c=d;
    }
    cout << a << "\t" << b << "\t" << c << endl;
 
   
    //   if    ,             ,   :
  
    int a = 5, b = 10;
    if(a>b)
    if(a++ > --b)
    a+=b;
    cout << a << "\t" << b << endl;
    return 0;

3つの文は合理的で柔軟に組み合わせて使用することができます.
    double a,b,c,d,max;
    cout << "  4  :" << endl;
    cin >> a >> b >> c >> d;
    a>b?max=a:max=b>c?b:c>d?c:d;//  4       
    cout << max <> score;
    if (score >=90) cout << "A " << endl;
    else if(score >=80 && score <90) cout << "B " << endl;
    else if (score >=70 && score <80) cout << "C " << endl;
    else if (score >=60 && score <70) cout << "D " << endl;
    else cout << "E " << endl;
    return 0;

ifキーワードの後は式であり、通常は論理式または関係式であるが、付与式などの他の式であってもよく、変数であってもよい.例えば、a=5およびa=5はいずれも許容される.コンパイルはエラーを報告しないため、論理的なエラーが発見されにくいことを避けるために、以下の方法を採用することができます.
    int a=2;
    if(3==a) cout << "a=3" << endl;
    else cout << "a=2" << endl;
    return 0;


if文のネスト
if文の実行文がif文である場合、例if文のネストを構成する.再ネストされたif文はif else型であり、ifとelseのペアの問題に特に注意しなければならないifとelseが複数重なる場合があります.二義性を避けるために、elseは常にその前の最近のifとペアを組むことを規定している.
条件演算子と条件式条件演算子は「?」と「:」は、3つの演算子、すなわち、演算に関与する量が3つです.条件演算子からなる条件式の一般的な形式は次のとおりです.
式1?式2:式3
評価ルールは、式1が真の場合、式2の値を式全体の値とし、そうでなければ式3の値を式全体の値とします.この演算式は右から左まで演算されます.a>b?a:b>c?b:cはa>bと理解すべきですか.a:(b>c?b:c)
    //      ,            ,    ,            。
    char letter;
    cout << "      :" << endl;
    cin >> letter;
    'A'<= letter && 'Z' >= letter?letter:letter-=32;
    cout << letter << endl;

switch文
switch文の一般的な形式は、switch(式1){case定数式1:文1;break;case定数式2:文2;break;......case定数式n:文n;break;default:文n+1;}この文は、式1の値を計算し、その後の定数式の値型を順番に1つずつ比較し、式1の値がある定数式の値と同じである場合、その後の文を実行し、判断を行わずに後のcase後の文をすべて実行することを意味します.式1の値が後のすべての定数式の値と異なる場合、default後の文が実行されます.文を実行するときにbreakに遭遇すると、その後の文は実行されず、switch文全体から飛び出します.breakは省略できますが、具体的にはプログラムが実現したい効果によって異なります.
  int a;
    cout << "     ?(  ):" << endl;
    cin >> a;
    switch (a)
    {
        case 1 : cout << "Monday" <

注意点:switch後の表現は、整数または文字型のみです.case後定数式の値は同じではありません.括弧を必要とせずに複数の文を許可します.break文を追加しない場合は、実行順序に特に注意する必要があります.caseとdefault句の前後順序は自分で変更でき,defaultは省略できる.
余談:面白い閏年
閏年の定義:4で割り切れる、100で割り切れる、または400で割り切れる.4で割り切れる、100で割り切れないのが普通の閏年です.400で割り切れるのは大閏年です.判断文があれば、ある年が閏年かどうかを閏年の定義で判断できます.
if文で実現:
    int year;
    cout << "     :" << endl;
    cin >> year;
    if (0 == year%100)
    {
        if(0 == year%400)
        {
            cout << "  " <

switch文で実現:
    int a,b,c,d;
    cout << "     :" << endl;
    cin  >> a;
    b=a%4;
    c=a%100;
    d=a%400;
    switch( 0 == b && 0 != c || 0 == d)
    {
        case 1: cout << a << "    " << endl; break;
        case 0: cout << a << "    " << endl; break;
    }
    return 0;

では問題ですが、なぜ閏年はこのように定義されているのでしょうか.まず、私たちはすべて知っていて、1年の本意は地球が太陽の周りを一周することで、つまり公転運行の時間で、地球は公転して1周して、1年また1年です.平年(普通年)は365日ですが、地球が太陽の周りを一周する実際の時間は365日5時間48分46秒です.したがって、うるう年が存在しなければ、1年に5時間48分46秒を超える20926 sは統計されていない.4年は83704 sで、また1日の時間が:24*3600 s=86400 sであるため、つまり4年差は多くなく1日近くの時間を計算していない.
だから、私たちは規定することができます.
-4年目の2月以降、閏年は平年より366日多く、
このように時間の誤差を近似的に補った.しかし、問題はまだ完全に解決されていない.結局誤差は存在し、4年ごとに86400 sで1日多く加え、実際に多く出た83704 sに比べて2696 sが存在しない時間が増えた.400年ごとに100個の2696 s、すなわち269600 sが増え、3日である259200 sとは差が少ない.では、
-400年ごとに3日減らそう!
そこで、以下の規定があります.
1~400年という区間を例にとると:1.4年ごとにうるう年に1日、100年に25日、400年に100日、つまり100うるう年が増えます.計量を容易にするため、4で割り切れる数は閏年と定められています.2.また400年ごとに3日減じられるため、実際には400年ごとに3つの閏年が切り捨てられる.では、どの3つの閏年を捨てますか.100年目、200年目、300年目はルール1で計算され、ちょうど3つの閏年であることがわかります.では、この3つの閏年を切り捨てると、4で割り切れるが100で割り切れない年が普通の閏年、400で割り切れる年が大潤年という最終結果が得られます.
実際、このような閏年の方式は、269600-259200=10400 sが存在しない時間があるため、根本的な問題を解決していない.つまり、400年ごとに私たちのカレンダーは地球公転で形成された春夏秋冬の四季より10400 s早く、つまり2.88888......時間、4000年は1日以上遅れた.今の条件が変わらなければ、数百万年、数千万年后、私たちは秋を过ごすべき季节に夏を过ごし、冬を过ごすべき季节に秋を过ごし、春を过ごすべき季节に冬を过ごす..つまり、季節の変化がカレンダーより遅れているということです..しかし、私など凡人の寿命は数十年もあり、少しも影響を受けていないと言える.