暗黙的型変換
メニューを表示するにはスワイプしてください
型変換は常に発生します。これは、コンパイラによって自動的に行われる暗黙的変換の場合もあれば、コード内で明示的に型を変換する明示的変換の場合もあります。
main.cpp
1234567#include <iostream> int main() { int num = 6.5; // Implicit type conversion std::cout << num << std::endl; }
例では、6.5 という浮動小数点数が暗黙的に int 型へ変換されています(小数部分が切り捨てられます)。
暗黙的型変換は、変数の型がコンパイラの期待する型と一致しない場合に発生します(例えば、int に値を代入する際、コンパイラは整数値を期待しますが、異なる型が渡された場合は型変換が行われます)。
- 赤い矢印 はデータ損失を示します。例えば、
floatをlong(またはint)に変換すると、小数部分が失われます。 - 緑の矢印 はデータ損失がないことを示します。例えば、
intをlongに安全に変換でき、結果は同じです。 - 黄色い矢印 は、
long(またはint)からfloat(またはlong)への変換で、float(またはlong)の精度が不十分な場合にデータ損失が発生することがあることを示します。
main.cpp
1234567891011#include <iostream> #include <iomanip> int main() { int num_int = 123456789; float num_float = num_int; std::cout << std::setprecision(10); std::cout << num_float << std::endl; }
暗黙的型変換のもう一つの例は、+、-、*、/ 演算です。これらは同じデータ型の変数に対して実行される必要があります。そうでない場合、C++ は暗黙的に型昇格を行います。例えば、int / double -> double / double となります。
暗黙的型変換が発生するもう一つの例は、条件式です。例えば、if 文です。
条件式には bool 型が期待されますが、暗黙的型変換のおかげで他のデータ型も条件として渡すことができます。以下の画像は、それらがどのように bool に変換されるかを示しています。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 4. 章 6
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 4. 章 6