[音楽再生] SPEAKER:すべての権利。 それでは、別の話をしましょう Cに種のユニークなもの、 これはデータ型と変数です。 私はC言語に固有と言うとき、私は本当に のみのコンテキストで意味、 あなたがプログラマしてきた場合 本当に長い時間のために、 あなたはおそらくいませんでした データ型と協力 あなたは、現代使用した場合 プログラミング言語。 以下のような近代的な言語 PHPやJavaScript、 我々はまた少しが表示されますします 後でコースで、 あなたが実際に指定する必要はありません 変数のデータ型 あなたはそれを使用するとき。 あなたはそれを宣言し、それを使用して起動します。 それが整数なら、それを それは整数であることを知っています。 それはキャラクターの場合、それはです それが文字だ知っています。 それはWordの場合、それは知っています それは、いわゆる文字列、です。 しかし、であるC、中 我々が必要とする古い言語、 データを指定します すべての変数の型 私たちは、初めてを作成すること 私たちは、その変数を使用すること。 だからCは、いくつか付属しています 組み込みデータ型。 そしてのは慣れてみましょう それらのいくつかと。 そして、その後、我々はまた話しましょう データ型のいくつかについて少し 私たちはあなたのために書いたことを、 あなたはCS50でそれらを使用することができます。 最初はintです。 intデータ型​​は、変数のために使用されます それは、整数値を格納します。 そのように1、2、3、負の1、2、3、など。 何かあなたです整数、 クイズのために心に留めておくべきで、 常に4バイトを取ります 32ビットであるメモリ、の。 バイトは8ビットで構成されます。 だから、これはの範囲ということを意味 整数が格納できる値 内に収まることができるかによって制限されています 情報の価値は32ビット。 今では結局のところ、 それはずっと前に決定されました 我々は分割することを 32ビットの範囲 負の整数へ と正の整数、 範囲の各なっ半分。 我々が表す値の範囲そう 負の2の整数の範囲で 第31回電源を2にします 第31回電源マイナス1、 あなたも0のための場所を必要とする原因となります。 可能な値のしたがって、基本的に半分 あなたは、負であるint型に合うことができます そして、半分は正です。 そして、大体ここで、これは負の程度であります 20億正の20億程度です。 数百万ドルを与えるか、または取ります。 だから、それはあなたが合うことができるものです 整数変数インチ 今、私たちにも何かを持っています 符号なし整数と呼ばれます。 今符号なしint型ではありません 変数のセパレートタイプ。 むしろ、符号なしです 修飾子何と呼ばれています。 これは、データを変更します 少し整数型。 そして、この場合には、どのような符号なし またmeans--と次のことができます 符号なしの他のデータ型を使用し、 整数だけではないのです。 それは何を効果的に行うことはダブルスで 値の正の範囲 整数で取ることができること もはや許可の費用 あなたが負の値を取ること。 だから、あなたが知っている数字を持っている場合 より高い20億未満を取得します example--のため、40億以上 これは第32回に2 power-- あなたが使用することをお勧めします よろしければunsigned int型 あなたの値が負になることはありません知っています。 あなたは時々あります 符号なし変数に使用 私はここでそれを言及する理由であるCS50、インチ しかし、再び、値の範囲というあなた 符号なし整数で表すことができます 通常の整数をtにように、0です 2の32乗マイナス1に、 または約0〜4億。 だから、効果的に倍増しました あなたが合うことができる正の範囲、 しかし、あなたはすべてを与えてくれました 負の値。 今はさておき、符号なしとして 唯一の修飾子ではありません 我々が見るかもしれないこと 変数のデータ型。 呼ばれるものもあります 長短とのconst。 Constの我々は少し表示されます 少し後のコースインチ ショートとロング、我々はおそらくないでしょう。 しかし、単にその存在を知っています 他の修飾子があります。 符号なしには一つだけではありません。 しかし、それは私たちがしているだけで一つです 今の話に行きます。 だから、大丈夫。 だから我々は、整数を取り上げました。 次は何ですか? 文字数。 だから、文字は変数に使用されています それは、単一の文字を格納します。 シャアは、文字の略です。 そして、時にはあなたが聞こえることがあります 人々は車としてそれを発音します。 だから、文字は、常に1つを取ります わずか8ビットであり、メモリのバイト、。 だから、これは、彼らが唯一の合うことができることを意味し 負の2の範囲内の値 7乗、または負の128に、 2第七パワーマイナス1、または127。 ASCIIのおかげで、それがありました ずっと前に道を決めました からこれらの正の数をマップします 様々な文字に0から127 すべては私たちのキーボード上に存在しています。 我々は、後にで表示されますように もちろん、あなたはおそらくよ 一部で覚えるようになってき example--ためのポイント、大文字のA、 文字資本A-- 数65にマッピングされます。 そして、その理由は、 それはだから、それは何です ASCII規格で割り当てられています。 小文字のAは97です。 あなたのための文字0 実際に、文字を入力しません 番号ゼロを表す、48です。 あなたはカップルを学びます あなたが行くように、これらの。 そして、あなたは確かに必要になってきます それら少し後でCS50インチ 次の主要なデータ型 浮動小数点数をされています。 だから、浮動小数点数は、 また、実数として知られています。 彼らは基本的に数字だこと それらの小数点を持っています。 浮動小数点値 整数のようでもあります 4バイトのメモリー内に含まれます。 今ここにはチャートがありません。 何の数ラインがあるため、ありません フロートの範囲を記述する 正確にクリアまたは直感的ではありません。 あなたを言えば十分 で動作する32ビットを有します。 そして、あなたは数を持っている場合 持っているようなパイ、 整数部3、及びフローティング ポイント一部、または小数部0.14159、 ように、あなたがする必要があります it--のすべてを表現することができます 整数部と小数部。 だから、それが意味するかもしれないどう思いますか? 一つは、小数の場合ということです 部分が長くなると長く、 私は非常に大規模なを持っている場合 整数部分、私はないかもしれません 正確にすることができます 小数部を持ちます。 そして、それは本当にです フロートの制限。 フロートは、精度の問題を抱えています。 我々は唯一の32ビットにを持っています で動作するので、我々はできるだけで 私たちの小数部を持つように正確に。 私たちは必ずしも、小数点を持つことができません 100または200の数字に正確な部分、 我々は唯一持っているため、 で動作する32ビット。 だから、フロートの制限です。 今幸いにもあります 呼ばれる別のデータ型 ダブル、これはやや この問題を扱っています。 ダブルスは、浮動小数点数のようにも使用されています 実数、または浮動小数点を保存 値。 違いはということです ダブルスは倍精度です。 彼らは、64ビットの合うことができます データ、または8バイト。 どういう意味ですか? まあ、それは私たちができることを意味し、より多くの 小数点を正確に。 代わりに7にパイを持っていることの フロートと多分場所、 我々は多分30の場所にそれを持つことができます。 それが重要だ場合は、お勧めします 二重の代わりにフロートを使用しています。 基本的に、あなたがしている場合 どこに何に取り組んで 本当に長い小数点以下を持ちます 精度の多くは重要であり、 あなたはおそらくしたいです ダブルoverfloatを使用しています。 今での作業のほとんどの CS50、フロートで十分です。 しかし、ダブルスのように存在することを知っています やや精度に対処する方法 あなたに余分な32を与えることによって、問題 ビットは、あなたの数字のために動作するように。 さて、これはデータ型ではありません。 これはタイプです。 そして、それは、ボイドと呼ばれています。 そして、私はそれについて話しています ここでは、おそらくたので すでに数回CS50でそれを見て。 そして、あなたは不思議に思われるかもしれません 何それがすべてについてです。 だから、ボイド型です。 それは存在しません。 しかし、それはデータ型ではありません。 私たちは、型の変数を作成することはできません 無効にしてそれに値を代入します。 しかし、機能、例えば、 ボイド戻り値の型を持つことができます。 基本的には、関数を参照してください場合 それは、ボイド戻り値の型を持っています、 それは値を返さないことを意味します。 あなたは一般的な考えることができます 我々は、これまで使用してきた機能 値を返しませんCS50で? printf関数は1です。 printf関数は実際にはしません あなたに何かを返します。 それはに何かを印刷します スクリーニングし、そしてそれは、基本的な printf関数が何をするかの副作用。 しかし、それはあなたに値を返していません。 あなたは結果と店を捕捉しません いくつかの変数には、後にそれを使用することができます。 それだけに何かを出力します スクリーンとすれば完了です。 だから我々は、printfのことを言います ボイド関数です。 それは何も返しません。 の周囲リスト 機能も無効とすることができます。 そして、あなたはまた、見てきました あまりにCS50でかなり。 int型メイン空洞。 ベルを鳴らすことしていますか? 基本的にはどのようなことが意味することです メインは、任意のパラメータを取りません。 その引数はありません 主に渡されます。 今後に、私たちがあることがわかります 主に引数を渡す方法、 これまでのところ、我々がしてきたこと int型メインボイドが見られます。 主はただ引数を取りません。 そして、私たちは、ボイドと言ってそれを指定します。 私達はちょうど非常にされています 事実について明確な それは引数を取らないこと。 だから今のところ、それを十分で 基本的にはその隙間を言います ちょうどプレースホルダとして機能する必要があります あなたのために何もして約考えるとして。 それは本当に何もしていません。 ここでは戻り値はありません。 ここではパラメータはありません。 これは無効です。 それはそれより少し複雑です。 しかし、これは十分です もちろん、より良い部分。 そして、うまくいけば今、あなたは少しを持っています 何であるかボイドの概念をもう少し。 これらのように、5つのタイプがあなたがよされています ビルトインされているCに遭遇 しかし、CS50に、我々はまた、ライブラリがあります。 あなたは含めることができCS50.h、。 そして、あなたを提供しています 二つの追加のタイプの あなたはおそらくできるようになりますことを あなたの割り当てに使用するには、 あるいは単にプログラミング一般的に取り組んでいます。 これらの最初はBOOLです。 だから、Booleanデータ型、 ブール値、変数​​に使用されます それは、ブール値を格納します。 あなたは今まで聞いた場合 この用語の前に、あなたを ブールことを知っているかもしれません 値のみが可能です 二つの異なる別個の値を保持します。 真と偽。 さて、これはかなりいるようです 基本的な、右? それは、このことを驚きのようなものです それは内蔵だように、Cには存在しません。 そして、多くの近代的な言語で、 もちろん、ブーリアン 標準のデフォルトのデータ型です。 しかし、C言語で、彼らは実際にはありません。 しかし、我々はあなたのためにそれを作成しました。 だから、あなたが作成する必要がある場合 その型がブールである変数、 ただCS50.hを#includeしてください プログラムの開始時に、 あなたが作成することができます bool型の変数。 あなたはCS50.hを#includeすることを忘れた場合、および あなたはブール型変数の使用を開始、 あなたはいくつかの問題が発生する可能性があります あなたのプログラムをコンパイルしているとき。 だから、そのために目を光らせて。 そして多分あなたは単に修正することができます CS50.h.含むポンドによって問題 他の主要なデータ型、我々 CS50ライブラリにあなたのために提供 文字列です。 だから文字列は何ですか? 文字列は本当にただの言葉です。 彼らは文字の集まりです。 彼らは言葉です。 彼らは文章です。 彼らは段落です。 でも、全体の本であるかもしれません。 非常に長いのが非常に短いです 一連の文字。 あなたは文字列を使用する必要がある場合は、 例えば、単語を格納します、 ただCS50.hを含めるようにしてください プログラムの開始時に あなたは文字列型を使用することができます。 それから、あなたは、変数を作成することができます そのデータ型は文字列です。 さて、後のコースで、 我々はまた、それはだことがわかります 全体ではなく、物語、のいずれか。 私たちは、物事が発生します 構造と呼ばれます あるかもしれないもののグループにあなたを可能にします 整数と1つのユニットに文字列。 そして、我々はのためにそれを使用することができます いくつかの目的、かもしれません コー​​スの後半で重宝します。 そして、我々はまた学びます 定義型について、 あなたが作成することを可能にします 独自のデータ型。 私たちは心配する必要はありません 今のことについて。 しかし、単にそれはだということを知っています 地平線上に何か、 この全体のより多くがあること 私はあなたを言っているよりも、型のもの 今。 だから今我々が学んだこと 基礎データについて少し タイプとCS50のデータ型は、してみましょう 変数を使用する方法についての話 これらを使用して作成 我々のプログラム内のデータ・タイプ。 あなたは、変数を作成する場合は、 あなたがする必要があるすべては次の2つです。 まず、あなたはそれをタイプを与える必要があります。 あなたが必要とする第二のもの 行うには、名前を付けています。 あなたはそれを行うと平手打ちしたら その行の終わりにセミコロン、 あなたは、変数を作成しました。 だからここに2つの例を示します。 int型の数。 CHAR文字;. 私はここで何をしましたか? 私は2つの変数を作成しました。 、最初の変数の 名前は数値です。 その数は整数値を保持することが可能です その型がintであるため、値を入力します。 手紙は別の変数であります それは文字を保持することができます そのデータ型がcharであるため。 かなり簡単、右か? あなたは自分自身を見つける場合 どこ状況で あなたは複数作成する必要があります 同じタイプの変数 あなただけ指定する必要があります 一度型名。 そして、同じように多くの変数を一覧表示します あなたが必要とするように、そのタイプの。 だから私は、例えば、ここでできました このコードの3行目、 int型の高さ;、新しい行を言います。 int型の幅;. そして、それはあまりにも動作します。 私はまだ二つの変数が呼び出されると思います 高さと幅、それらの各々 整数です。 しかし、私は、C言語の構文に物事に許可されています 一行にそれを統合します。 int型の高さ、幅、それは同じことです。 私は2つの変数と呼ばれるものを作成しました 高さ、幅と呼ばれるもの、その両方 保持することが可能です 整数型の値。 同様にここで、私は3を作成することができます 一度に浮動小数点値。 私は多分変数を作成することができます 2--の平方根と呼ばれます これはおそらく、最終的になります 浮動point--を開催 正方形のその表現 3の2--平方根のルート、およびパイ。 私はこれを行っている可能性が 3つの別々の行に。 フロート、平方根2。平方根をフロート 3;フロートパイ。それはあまりにも動作します。 しかし、再び、私は統合することができます このコードを一行に。 物事を少し作ります 短い、など不格好ありません。 さて、一般的には、それだけに良いデザインです あなたがそれを必要なときに変数を宣言します。 そして、私たちは少し話しましょう そのことについてもう少し 後でコースで ときに我々はスコープを議論します。 必ずしもそうする必要はありません あなたのすべての変数を作成します プログラムの開始時に、その 一部の人々は、過去を行っている可能性があります または確かに非常に一般的でした 何年も前に練習をコーディング Cで作業するときは、ちょうどかもしれません 時変数権利を作成したいです あなたはそれを必要とします。 大丈夫。 だから我々は、変数を作成しました。 私たちはそれらをどのように使うのですか? 私たちは宣言した後、 変数、我々は必要はありません データ型を指定します その変数のもう。 あなたがこれを行う場合、実際には、あなたがかもしれません いくつかの奇妙な結果で終わります 私たちはこの種の今のごまかすだろうと。 しかし、それが言えば十分、 奇妙なことが起こっています うっかりあなたならば起こって開始します 同じ名前で再宣言した変数 何度も繰り返し。 だからここに私は4行のコードを持っています。 そして私はのカップルを持っています ちょうどそこに示すコメント 何が起こっています ちょうど助けるために、各ライン あなたは何が起こっているのかにありま​​す。 だからint型数;. あなたは以前に見ました。 それは変数宣言です。 私は今、変数を作成しました だと呼ばれる数 整数型の値を保持することができます。 私はそれを宣言しました。 私が割り当てている次の行 数に値。 数が17に等しいです。 何が起きているのでしょうか? 私は数17を入れています その変数の内部。 だから私は今までに、次に何を印刷する場合 番号の内容は、後にあります、 彼らはそれは17だ私に教えてあげましょう。 だから私は、変数を宣言しましたが、 そして私はそれを割り当てました。 私たちは、プロセスを繰り返すことができます 再びのchar文字で;. それが宣言です。 手紙は、資本に等しいです 割り当てですH.。 あまりにも、非常に簡単。 今、このプロセスは、かもしれません 種類の愚かなようです。 なぜ我々はこれをやっています 2行のコードで? それを行うには良い方法はありますか? 実際には、があります。 時々、あなたが見るかもしれません これは、初期化と呼ばれます。 あなたは変数を宣言するとき、それはです 同時に値を割り当てます。 これは実際にはかなりあります 行うための一般的なもの。 あなたは、変数を作成する場合、通常ます それはいくつかの基本的な価値を持っていると思います。 でも、それが0か何かだ場合。 あなただけがそれに価値を与えます。 あなたは、変数を初期化することができます。 17に等しい数のIntは同じです アップ上記のコードの最初の2行。 シャアの手紙はhが同じであると等しいです 上記のコードの3行目と4行目。 ここで最も重要なテイクアウト 私たちは宣言して代入していたとき 私たちがした後の変数があります それを宣言し、通知 私は再びデータ型を使用していませんよ。 私はint型の数が17のに等しいとは言いませんよ 例えば、コードの2行目、。 私はちょうど数が17に等しいと言っています。 ここでも、後に変数を再宣言する あなたはすでにそれがつながることができます宣言しました いくつかの奇妙な結果に。 だからそれを注意してください。 私はダグロイドです。 そして、これはCS50です。