暗黙的型変換
メニューを表示するにはスワイプしてください
型変換は常に発生します。これは、コンパイラによって自動的に行われる暗黙的型変換の場合もあれば、コード内で明示的に型を変換する明示的型変換の場合もあります。
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