ホームページ  >  記事  >  バックエンド開発  >  C言語で強制型変換を行う方法

C言語で強制型変換を行う方法

青灯夜游
青灯夜游オリジナル
2021-04-25 16:43:5948187ブラウズ

C 言語では、「(新しい型名) データまたは式」ステートメントを通じて強制的な型変換を実行できます。たとえば、「(float) 100」は値 100 (デフォルトは int 型) を次のように変換します。浮動小数点型「(int)(x y)」は、式「x y」の結果を整数型に変換します。

C言語で強制型変換を行う方法

このチュートリアルの動作環境: Windows7 システム、C99 バージョン、Dell G3 コンピューター。

データ型変換とは、データ (変数、値、式の結果など) をある型から別の型に変換することです。

C 言語には 2 つのデータ型メソッドがあります:

  • 自動型変換: コンパイラによって暗黙的かつ秘密裏に実行されるデータ型変換です。プログラマーの介入は必要なく、自動的に実行されます。

  • 強制型変換

自動型変換は、コードのコンテキストに基づいてコンパイラーが独自に判断した結果です。したがって、「インテリジェント」」だけではすべてのニーズを満たすことはできません。必要に応じて、プログラマはコード自体で型​​変換を明示的に提案することもできます。これは強制型変換と呼ばれます。

自動型変換は、コンパイラによってサイレントかつ暗黙的に実行される型変換であり、コードに反映する必要はありません。強制的な型変換はプログラマによって明示的に提案され、特定のコードで実行する必要があります。 format. 型変換を指定します。つまり、自動型変換にはプログラマの介入は必要ありませんが、強制的な型変換にはプログラマの介入が必要です。

強制型変換の形式は次のとおりです。

(type_name) expression

type_name は新しい型名、expression は式です。例:

(float) a;  //将变量 a 转换为 float 类型
(int)(x+y);  //把表达式 x+y 的结果转换为 int 整型
(float) 100;  //将数值 100(默认为int类型)转换为 float 类型

次は、強制的な型変換を必要とする典型的な例です:

#include <stdio.h>
int main(){
    int sum = 103;  //总数
    int count = 7;  //数目
    double average;  //平均数
    average = (double) sum / count;
    printf("Average is %lf!\n", average);
    return 0;
}

実行結果:

Average is 14.714286!

sum と count は両方とも int 型です。を実行すると、 sum / count の演算結果も int 型となり、小数部は切り捨てられます; 平均値は double 型ですが、小数部は受け取れますが、不足していますエネルギーと小数部分は事前に「去勢」されているため、整数部分しか受信できないため、除算演算の結果が著しく歪められます。

averageはdouble型なので、これを駆使して演算結果の精度を高めてみてはいかがでしょうか。この目標を達成するには、sum または count のいずれかを double 型に変換するだけで済みます。上記のコードでは、sum を double 型に強制しているため、sum / count の結果も double 型になり、小数部分が保持され、平均によって受け取られる値がより正確になります。 。

このコードには、注意すべき点が 2 つあります。

  • 除算演算の場合、除数と被除数が両方とも整数の場合、演算の結果も次のようになります。整数で小数部分は直接破棄されます。除数または被除数のいずれかが小数の場合、演算結果も小数になります。

  • ( )/ よりも優先されます。式 (double) sum / count の場合、 will (double) sumを実行し、sumをdouble型に変換してから除算を行うと、演算結果もdouble型となり小数部が保持されます。 (double) (sum / count) と書かないように注意してください。そうしないと、演算結果は 3.000000 となり、小数部分は保持できません。

関連する推奨事項: 「C 言語ビデオ チュートリアル

以上がC言語で強制型変換を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。