C ++でのナローイングとトランケーションの違いは?

パシャ

私は本を​​読んでいます(C ++プログラミング言語Stroustrup第4版)。以下のように初期化に関連するセクションで与えられた例:

void f(double d, int i)
{
    int a{ d };     // error : possible truncation
    char b{ i };    // error : possible narrowing
}

切り捨てと絞り込みの違いは正確には何ですか?

フランソワ・アンドリュー

ナローイング変換とは、基本的に、情報の損失を引き起こす可能性のある変換です。厳密に言えば、絞り込み変換は次のとおりです。

暗黙の変換

  • 浮動小数点型から整数型へ、または
  • long doubleからdoubleまたはfloat、またはdoubleからfloat。ただし、ソースが定数式であり、変換後の実際の値が表現可能な値の範囲内にある場合(正確に表現できない場合でも)、または
  • ソースが定数式であり、変換後の実際の値がターゲットタイプに適合し、元のタイプに変換して元の値を生成する場合を除いて、整数型またはスコープなしの列挙型から浮動小数点型へ、または
  • 整数型またはスコープなしの列挙型から、元の型のすべての値を表すことができない整数型へ。ただし、ソースが定数式であり、整数昇格後の値がターゲット型に適合する場合を除きます。
  • ポインタ型またはポインタからメンバーへの型からboolへ。

これは、投稿した両方のコンバージョンがコンバージョンを絞り込んでいることを意味していることに注意してください。int a{ d };は最初のケースでchar b{ i };あり、4番目のケースです。

切り捨ては、浮動小数点型と整数型の間で変換する場合にのみ発生します。これは通常、失われる浮動小数点数の小数部分を指しますソース)。これは、切り捨てが絞り込みコンバージョンのサブセットであることを意味します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

CのCPUスケジューリングシミュレーションプログラムでセグメンテーション違反(コアダンプ)エラーを解決するにはどうすればよいですか?

分類Dev

Linuxでのセグメンテーション違反(Cでのソケットプログラミング(TCP))

分類Dev

Sun c ++コンパイラでのセグメンテーション違反

分類Dev

トライを使用したcプログラムのセグメンテーション違反

分類Dev

各ビット1の位置をバイナリシーケンスで格納するC ++プログラム

分類Dev

セグメンテーション違反の原因となるCトライノードの再割り当て

分類Dev

mmapとmapfileを使用したPosix-Cプログラムでのセグメンテーション違反

分類Dev

メソッドCプログラミングでのセグメンテーション違反エラー

分類Dev

cプログラミングリンクリストのセグメンテーション違反

分類Dev

C#での多次元配列定義(違いとアプリケーション)

分類Dev

C ++コンパイル済みプログラムでセグメンテーション違反の原因となった行を見つける方法

分類Dev

テンプレートパラメータとして提供されるアロケータと、C ++コンテナのコンストラクタ引数として提供されるアロケータの違いは?

分類Dev

GDBおよびValgrindでのEclipseLunaエラーメッセージ、ローカルC / C ++アプリケーションとしてC ++プログラムをデバッグまたはプロファイリングできません

分類Dev

リンクリスト使用時のCプログラミングセグメンテーション違反エラーと誤った出力

分類Dev

C#アプリケーションでのAsp.Netログイン

分類Dev

C ++のプロトタイプデザインパターンとコピーコンストラクターの違いは何ですか

分類Dev

C ++-バイナリファイルの読み取りでのセグメンテーション違反

分類Dev

LinuxのCでのChar配列とポインターのセグメンテーション違反

分類Dev

C#アプリケーションのマネージヒープとネイティブヒープの違いは何ですか

分類Dev

Macでの奇妙なCライブラリリンケージの問題-セグメンテーション違反

分類Dev

Cプログラムでこのエラーの原因は何ですか(セグメンテーション違反(コアダンプ))?

分類Dev

C ++でバイナリツリーを構築した後のセグメンテーション違反

分類Dev

C ++でアレイを初期化する際のセグメンテーション違反(プロジェクトオイラー番号3)

分類Dev

ハイブリッド(C ++、asm)プログラムでセグメンテーション違反が発生するのはなぜですか?

分類Dev

アプリケーションとアプリObjective-Cの違いは何ですか

分類Dev

Cのポインタ配列でのセグメンテーション違反エラー

分類Dev

Cでのセグメンテーション違反コンパイラエラー

分類Dev

単一リンクリストCプログラムのセグメンテーション違反

分類Dev

C ++の基本的なプログラムセグメンテーション違反

Related 関連記事

  1. 1

    CのCPUスケジューリングシミュレーションプログラムでセグメンテーション違反(コアダンプ)エラーを解決するにはどうすればよいですか?

  2. 2

    Linuxでのセグメンテーション違反(Cでのソケットプログラミング(TCP))

  3. 3

    Sun c ++コンパイラでのセグメンテーション違反

  4. 4

    トライを使用したcプログラムのセグメンテーション違反

  5. 5

    各ビット1の位置をバイナリシーケンスで格納するC ++プログラム

  6. 6

    セグメンテーション違反の原因となるCトライノードの再割り当て

  7. 7

    mmapとmapfileを使用したPosix-Cプログラムでのセグメンテーション違反

  8. 8

    メソッドCプログラミングでのセグメンテーション違反エラー

  9. 9

    cプログラミングリンクリストのセグメンテーション違反

  10. 10

    C#での多次元配列定義(違いとアプリケーション)

  11. 11

    C ++コンパイル済みプログラムでセグメンテーション違反の原因となった行を見つける方法

  12. 12

    テンプレートパラメータとして提供されるアロケータと、C ++コンテナのコンストラクタ引数として提供されるアロケータの違いは?

  13. 13

    GDBおよびValgrindでのEclipseLunaエラーメッセージ、ローカルC / C ++アプリケーションとしてC ++プログラムをデバッグまたはプロファイリングできません

  14. 14

    リンクリスト使用時のCプログラミングセグメンテーション違反エラーと誤った出力

  15. 15

    C#アプリケーションでのAsp.Netログイン

  16. 16

    C ++のプロトタイプデザインパターンとコピーコンストラクターの違いは何ですか

  17. 17

    C ++-バイナリファイルの読み取りでのセグメンテーション違反

  18. 18

    LinuxのCでのChar配列とポインターのセグメンテーション違反

  19. 19

    C#アプリケーションのマネージヒープとネイティブヒープの違いは何ですか

  20. 20

    Macでの奇妙なCライブラリリンケージの問題-セグメンテーション違反

  21. 21

    Cプログラムでこのエラーの原因は何ですか(セグメンテーション違反(コアダンプ))?

  22. 22

    C ++でバイナリツリーを構築した後のセグメンテーション違反

  23. 23

    C ++でアレイを初期化する際のセグメンテーション違反(プロジェクトオイラー番号3)

  24. 24

    ハイブリッド(C ++、asm)プログラムでセグメンテーション違反が発生するのはなぜですか?

  25. 25

    アプリケーションとアプリObjective-Cの違いは何ですか

  26. 26

    Cのポインタ配列でのセグメンテーション違反エラー

  27. 27

    Cでのセグメンテーション違反コンパイラエラー

  28. 28

    単一リンクリストCプログラムのセグメンテーション違反

  29. 29

    C ++の基本的なプログラムセグメンテーション違反

ホットタグ

アーカイブ