私は現在AcceleratedC++を使用していますが、演習2-3で問題が発生しました。
プログラムの概要-プログラムは基本的に名前を取り、アスタリスクの枠内に挨拶を表示します-つまり、こんにちは!*で囲まれています。
演習-サンプルプログラムでは、作成const int
者は挨拶とアスタリスクの間のパディング(空白スペース)を決定するために使用します。次に、演習の一環として、読者に、パディングの大きさについてユーザーに入力を求めるように依頼します。
これはすべて簡単に思えます。ユーザーに2つの整数(int
)を要求して保存し、これらの整数を使用するようにプログラムを変更して、コンパイル時に作成者が使用した整数を削除しますが、次の警告が表示されます。
演習2-3.cpp:46:警告:符号付き整数式と符号なし整数式の比較
いくつかの調査の結果、コードが上記の整数(int
)の1つをaと比較しようとしているためと思われますがstring::size_type
、これは問題ありません。しかし、私は疑問に思っていました-これは、整数の1つをに変更する必要があることを意味し unsigned int
ますか?整数が符号付きか符号なしかを明示的に示すことは重要ですか?
cout << "Please enter the size of the frame between top and bottom you would like ";
int padtopbottom;
cin >> padtopbottom;
cout << "Please enter size of the frame from each side you would like: ";
unsigned int padsides;
cin >> padsides;
string::size_type c = 0; // definition of c in the program
if (r == padtopbottom + 1 && c == padsides + 1) { // where the error occurs
上記は関連するコードの一部です。挨拶の長さがわからないためc
、タイプですが、作成者のコードを使用しても問題が発生しなかったのに、なぜこの問題が発生するのでしょうか。さらに、Accelerated C ++を完了した可能性のある人には、これについては本の後半で説明しますか?string::size_type
const int
私はLinuxMintを使用してGeany経由でg++を使用していますが、それが役立つか、違いを生む場合(私が読んだように、それが何でstring::size_type
あるかを判断するときに可能です)。