質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

4553閲覧

C++ VSでforループの補完をすると、iの型がsize_tになる理由

退会済みユーザー

退会済みユーザー

総合スコア0

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/04/10 15:30

Visual Studio 2019でforループを記述するため補完機能(Tabキー)を使用すると

c++

1for (size_t i = 0; i < length; i++) 2 { 3 4 }

こういった形で補完されるのですが、
なぜiの型がintもしくはunsigned intではなく、size_tになるのかわかりません。(どれも4バイトなのに……)

size_tにマウスオーバーするとtypedef unsigned int size_tと出るのでおそらくunsigned intと同じ型ということだと思います。

わざわざよく使われるintではなくunsigned intにした上で別名を使うってことは何かしらの意味があるのでしょうか。

もし何か理由をご存じの方がいらっしゃいましたら教えて下さい。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

cpprefjp - C++日本語リファレンス std::size_t

size_tは、オブジェクトのバイト数を表現できる程度に十分に大きい符号なし整数型である。 C++03まではC言語と同じく「sizeof演算子によって返される符号なし整数型」と規定されていた。

オブジェクトのバイト数(例えばmallocの引数)やコンテナの要素数(例えばstd::size()の返り値)を表現するために用いられる。

とあるので正しい使い方のようです

投稿2020/04/10 15:44

len_souko

総合スコア1363

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/10 15:49

ありがとうございました。
guest

0

ベストアンサー

配列の添字が、size_t となってます
つまり、ループ変数で配列の要素を取り出す場合、その型はsize_tである必要があるってことですね。

んで、世の中にはいろんな環境があります
int が2バイトでlongが4バイト、intもlongも4バイト、longは8バイト、などなど、
その場合に、配列の添字を過不足なく定義できる変数の型を、size_t としているのです

投稿2020/04/10 15:36

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/10 15:49

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問