目次:
- 不信に型キャスト
- typedefで新しいものを作成する方法 typedefキーワードで多くの問題が発生する可能性があります。それは、正常なCの言葉や演算子を一貫しているものからあらゆる種類のいたずらに投げ込むことができます。
ビデオ: MELSEC iQ-F – サーボ制御 2025
Cプログラミングでは、変数を別の型に変更したり、新しい名前を付けたり、あなたのニーズを満たすために、慈悲深いかどうかを示す変数。
不信に型キャスト
浮動小数点変数は浮動小数点変数ではありませんか?もちろん、それがintに型キャストされているとき。このトリックは、型キャストを使ってC言語で可能になりました。例:
(int) debt
前の行では、float変数 debt はint型に型変換されています。括弧内のintは、 debt の値を整数として扱うようにコンパイラに指示します。
<! - 1 - >誰がそれをやりたいのですか?
関数は特定の変数型を必要とすることがあり、その型は使用できないことがあるためです。 1つのプログラムで複数の変数型を変換したりジャグリングしたりするのではなく、必要な型に変数を型キャストするだけです。それは一般的なトリックではありませんが、それは正しいことで示されるように、しばしば必要です。
そうではない
#include int main(){int a、b;フロートc; printf( "最初の値を入力:"); scanf( "%d"、&a); printf( "第2の値を入力:"); scanf( "%d"、&b); c = a / b; printf( "%d /%d =%.2fn"、a、b、c);
エクササイズ 1: 「そうじゃないから」のソースコードをエディタに入力します。ビルドして実行します。
<!最初の値を入力します。
3 2番目の値を入力します。 2 3/2 = 1. 00 明らかに、3÷2がどうにかして1に近づくのは間違っています。50.コンピュータが1.00と答えた場合、コンピュータは正しくなければなりません。
おそらく、ソースコードの12行目で2つのint値が分割され、結果が浮動小数点数に割り当てられているため、コンピュータが混乱するだけです。しかし、Cで整数を整数で除算すると結果として整数が得られるため、これはうまくいきません。
<! - 3 - >
値1は最も近い整数値で1 50です。コンピュータが間違っていても、それは実行されたこととまったく同じです。エクササイズ
2: ソースコードを変更し、行12を読み込み c =(float)a /(float)b;
変更を保存します。表示されているのと同じ値を使用してビルドして実行します。新しい出力は次のとおりです。
最初の値を入力します。3 2番目の値を入力します。2 3/2 = 1。50
これは、コンパイラが一時的に浮動小数点数として扱うことを可能にする、式の変数
a と b を型キャストするためです。したがって、その結果はどんなものでなければなりません。
typedefで新しいものを作成する方法 typedefキーワードで多くの問題が発生する可能性があります。それは、正常なCの言葉や演算子を一貫しているものからあらゆる種類のいたずらに投げ込むことができます。
TYPEDEFの例
#include typedef int stinky;臭いmain(){臭いa = 2; printf( "誰もが知っている"); printf( "%d +%d =%dn"、a、a、a + a)。
typedef
のPerilsでは、3行目のtypedefステートメントはstinkyという単語をint型キーワードと同じに定義しています。 演習 3:
の浮動小数点型のソースコードを使用typedef 新しいプログラムを作成して、stinky変数型がint型と同じであることを実証します。ビルドして実行します。 typedef
のPerilsの例はむしろ愚かです。深刻なプログラマーは、そのような実際のプログラムを立ち上げることはありません。 typedefが最も頻繁に使われる場所は、構造を定義することです。 typedefステートメントは、そのアクティビティーのチャンクを減らすのに役立ちます。 構造の作成従来の方法では、構造の知識を与えられたネストされた構造の操作がどのように機能するかを示します。 構造を作成する
struct id {char first [20]; char last [20];}; struct date {int month; int day; int year;}; struct human {struct id name;構造体の日付誕生日;};
ypedef
を使用して構造体を定義すると、構造体を型定義する場合に宣言がどのように行われるかが示されます。
TYPEDEF USING 構造体を定義する > typedef struct id {charファースト[20]; char last [20];} personal; typedef構造体の日付{int月; int day; int year;}カレンダー; struct human {個人名;カレンダー誕生日;}; このリストでは、構造IDは名前personalにtypedefされています。それは変数名ではありません。それはtypedefです。これは、「構造体IDへの参照はすべて、個人的な名前と同じになりました。 "
同様に、構造体の日付はカレンダーにtypedefされます。最後に、構造体humanの宣言では、より複雑な構造体定義の代わりにtypedef名が使用されます。 ネストされた構造体 #include #include int main(){struct date {int month; int day; int year;}; struct human {char name [45];構造体の日付誕生日;};人間の大統領を構成する。 strcpy(社長、 "George Washington");大統領。お誕生日。月= 2;大統領。お誕生日。日= 22;大統領。お誕生日。年= 1732; printf( "%sは%d /%d /%dnで生まれました"、大統領名、大統領誕生日、月長、大統領誕生日、大統領誕生日年)演習4
:
ネストされた構造の人体構造の
名前
メンバを入れ子構造で置き換えます。その構造体IDに名前を付け、それに2つのメンバーchar型の配列firstとlastを入れて、個人の名字と姓を格納します。
すべてを正しく行うと、大統領の名前への言及は変数
になります。名。最初の および 大統領。名。最後の 。これらの変数にコード内の値を割り当てて、結果を表示してください。 演習5
: t ypedef を使用した構造の定義に示すように、演習4で作成したプロジェクトのソースコードをtypedefに変更します。ビルドして実行します。
typedefを使用しても、単純に良い変数名と書式付きテキストを使用した場合よりも、コードを明確にすることはできないと主張できます。たとえば、定義した内容を覚えておく必要がないため、単にtypedefを使用することはできません。しかし、typedefを使う他のコードに遭遇するでしょう。それはあなたを変質させてはいけません。 typedefを構造体で使用することの本当の利点は、おそらくstructという単語を何度も入力する必要がないことです。
