C ++ノートの再学習(2)データの処理

1.基本的なデータ型

7つの基本的なC ++データ型:bool、char、int、float、double、void、wchar_t。
タイプ修飾子:signed、unsigned、short、long、longlong。

変数のタイプまたはサイズを知りたい場合は、次のようにすることができます。

#include <iostream>
using namespace std;
int main()
{
    
    
    cout<<"bool:"<<sizeof(bool)<<endl
       <<"char:"<<sizeof(char)<<endl
      <<"float:"<<sizeof(float)<<endl
     <<"double:"<<sizeof(double)<<endl
    <<"long:"<<sizeof(long)<<endl
    <<"long long :"<<sizeof(long long)<<endl;
    return 0;
}

出力は次のとおりです。

bool:1
char:1
float:4
double:8
long:8
long long :8

2.整数型

C ++は、基数10、基数8(古いUNIXバージョン)、基数16(ハードウェアハッカーのお気に入り)の3つの異なるカウント方法で整数を書き込むことができます。

例として42を取り上げます。対応する書き込み方法は42,042と0x42(または0X42)であり、10進数の意味はそれぞれ42、34、66です。

手順は次のとおりです。

#include <iostream>
using namespace std;
int main()
{
    
    
    int num10 = 42;//十进制
    int num8 = 042;//八进制
    int num16 = 0x42;//十六进制
    cout<<num10<<endl
       <<num8<<endl
      <<num16<<endl;
     return 0}

3.文字タイプとwchar_t

3.1文字

charは、文字を格納するために特別に設計されています。コンピュータの場合、数字を保存することは何もありませんが、文字を保存することは別の問題です。プログラミング言語はこの問題を解決するために文字の数値コーディングを使用するため、char型は別の種類のシェーピングです。

128文字を表すことができ、ASCIIエンコーディングを使用します。特定の形式については、教科書の付録Cを参照してください。たとえば、文字Aのコードは65で、文字Mのコードは77です。

charを出力するには、coutとcout.putの2つの方法があり、後者はchar出力専用であり、それらの出力はcharに対応する文字です。対応するコードを出力する必要がある場合は、int型に変換できます。コードは以下のように表示されます。

#include <iostream>
using namespace std;
int main()
{
    
    

    char ch = 'A';
    cout<<ch<<endl;
    cout.put(ch);
    int intA = ch;
    cout<<endl<<intA<<endl;
    return 0;
}

出力は次のとおりです。

A
A
65

3.2エスケープ文字

一部の文字は、キーボードからプログラムに入力できません。たとえば、Enterキーを押すと、文字列に改行文字を含めることができます。特殊文字の場合、C ++は特別な表現方法であるエスケープシーケンスを提供します。エスケープシーケンスは、文字定数または文字列で使用できます。といった

#include <iostream>
using namespace std;
int main()
{
    
    
    char alarm = '\a';//表示振铃
    int intAlarm = alarm;
    cout<<intAlarm<<endl;
    cout<<"他说:\"大家好!\""<<endl;
}

出力:

7
他说:"大家好!"

ここに画像の説明を挿入
上記の表によると、「\ n」と「\ 012」(8進数)、「\ 0xa」(16進数)はどちらも改行を意味していることがわかります。
テストコード:

#include<string>
#include<iostream>
using namespace std;
int main()
{
    
    
    cout<<"test1\012";
    cout<<"test2"<<"\0xa";//用QT测试,这里16进制好像有一点问题?
    cout<<"test3\n";
    cout<<"test4"<<endl;
}

3.3符号付き文字和符号なし文字

int型とは異なり、charはデフォルトではunsignedでもsignedでもありません。特別な選択が必要な場合は、手動でタイプを追加できます。

unsigned charは0〜255を意味し、signed charは-128〜127を意味します。

3.4ユニバーサルキャラクター名

たとえば、フランス語の特殊記号はASCIIで表現するのが難しいため、UnicodeとISO 10646のエンコードがあり、それらのエンコードは同期されています。

ユニバーサル文字名には、\ u:の後に8桁の16進数を使用できます。\ U:その後に16桁の16進数が続きます。といった:

int k\u00F6rper;

ここに画像の説明を挿入

3.5 wcha_t

国際的な分野では、128ビットは国際的なニーズを十分に満たすことができません。C++はワイド文字タイプをサポートし、国際的なUnicode文字セットなどのより多くの値を格納できます。

Cinとcoutは、入力と出力をcharストリームとして扱うため、wchar_tには適用されません。iostreamは、同様のツールwcinおよびwcoutを提供します。

この本ではwchar_tについては紹介していませんが、特にUnicodeとISO10646ではこのタイプを知っておく必要があります。

C ++は、char16_t型とchar32_t型を追加しました。これらは、それぞれ符号なし16ビットと符号なし32ビットです。C ++ 11では、プレフィックスとu、およびプレフィックスとUをそれぞれ使用します。といった:

#include <iostream>
using namespace std;
int main()
{
    
    
    char16_t ch1 = u'q';
    char32_t ch2 = U'\U0000222B';
    cout<<ch1<<endl;
    cout<<ch2<<endl;
    return 0;
}

出力は次のとおりです。

113
8747

4.ブール型

boolとintは相互に変換できます。intが0でない場合はtrue、0はfalseです。例えば

   int ans =true;//转换为1
   int promise =false;//转换为0
   bool start = -100;//转换为true
   bool stop = 0;//转换为false

5.修飾子を定義して構成します

  • #define
#define INT_MAX 32737

#defineは#includeに似ており、コンパイル前の命令でもあります。プログラムでINT_MAXを見つけ、すべてのINT_MAXを30767に置き換えます。変更されたプログラムは、置き換えが完了した後にコンパイルされます。

#defineはC言語の遺産です。C++では、シンボリック定数constを作成するためのより良い方法があります。ただし、CおよびC ++で使用するように設計されている一部のヘッダーファイルでは、#defineを使用する必要があります。

  • const

constは、C ++で提供される定数を定義するキーワードであり、defineよりも優れています。その理由は次のとおりです。

  • タイプを明示的に指定できます。
  • C ++スコープ規則を使用して、定義を特定の関数またはファイルに制限できます。
  • constは、配列や構造体など、より複雑な型に使用できます。

6.初期化

C ++ 11での初期化(「{}」で表される初期化)は狭めることができないことに注意してください。たとえば、浮動小数点型を整数型に変換することは許可されていません。

int A =100;//c语言初始化
int A(100);//C++初始化
int A{
    
    100};//C++11初始化
int A = {
    
    100};//C++11初始化

7.浮動小数点タイプ

浮動小数点型はコンピューターの2つの部分に格納され、1つは値を表し、もう1つは拡大または縮小を表します。たとえば、3.1415926と3415.926は、小数点の位置を除いて同じです。3.14は、0.314(参照)および10(倍率)として表されます。

C ++には、float、double、longdoubleの3つの浮動小数点型があります。

7.12つの表現方法

  • 標準小数点法:
    12.34
  • E表記
    2.52e + 8または2.52E + 8 // 10の8乗を
    表す2.52e-8 // 10の8乗を表す

d.ddE + n:小数点が8桁右にシフトすることを意味します。d.ddE-nは小数点が8桁左にシフトすることを意味します。

7.2浮動小数点数の長所と短所

  • 利点
    整数間の値を表すことができます
    スケーリング係数があります

  • 短所
    浮動小数点演算の速度は通常、整数演算よりも遅く、精度が低下します。以下はその一例です。

#include <iostream>
using namespace std;
int main()
{
    
    
   float a = 2.34E+22f;
   float b = a + 1.0f;

   cout<<"a = "<<a<<endl;
   cout<<"b - a ="<<b - a<<endl;
}

出力結果:

a = 2.34e+22
b - a =0

2.34E + 22は、小数点の左側に23桁の数字があるためです。23番目の位置に1を追加するには、1を追加します。ただし、float型は数値の最初の6桁または7桁しか表すことができないため、23桁目を変更してもこの値には影響しないため、出力は変更されません。

8. C ++算術演算子

C ++には、加算、減算、乗算、除算、モジュロの5つの算術計算があります。(+-* /%)

さらに、C ++には自己加算演算子と自己デクリメント演算子があります:++および–

8.1型変換

強制型変換の2つの表現:

(long) thorn
long (thorn)

とげ自体は変更されませんが、指定されたタイプの新しい値が作成されます。

C ++では、4つのキャスト演算子も導入されています。フォローアップサプリメントで紹介されます。

8.2 C ++ 11での自動宣言

AutoはC言語のキーワードですが、めったに使われません。C ++ 11はそれを拡張しました。その役割は、コンパイラーに初期値のタイプに基づいて変数のタイプを推測させることです。例えば:

auto n = 100;//n表示int
auto x = 1.5;//x表示double

もう一つの例:

std::vector<double> scores;
auto pv = scores.begin();

概要カタログ
前へ:(1)基本的な紹介
次へ:(3)化合物タイプ


記事の参照:「C ++ Primer PlusSixthEdition」

おすすめ

転載: blog.csdn.net/QLeelq/article/details/112269803
おすすめ