我目前正在使用Accelerated C++,并且在练习 2-3 中遇到了一个问题。
该程序的快速概述-该程序基本上采用名称,然后在星号框架内显示问候语-即您好!被 * 包围。
练习- 在示例程序中,作者使用const int
来确定问候语和星号之间的填充(空格)。然后,作为练习的一部分,他们要求读者询问用户他们希望填充有多大。
这一切似乎很容易,我继续向用户询问两个整数(int
)并存储它们并更改程序以使用这些整数,删除作者使用的整数,尽管我收到以下警告;
练习 2-3.cpp:46:警告:有符号和无符号整数表达式之间的比较
经过一些研究,这似乎是因为代码尝试将上述整数之一 ( int
) 与 a进行比较string::size_type
,这很好。但我想知道 - 这是否意味着我应该将其中一个整数更改为 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
是类型string::size_type
,因为我们不知道问候可能会持续多长时间 - 但是为什么我现在遇到这个问题,而作者的代码在使用时没有遇到问题const int
?此外——对于任何可能已经完成加速 C++的人——这本书后面会解释吗?
我在通过 Geany 使用 g++ 的 Linux Mint 上,如果这有帮助或有所作为(正如我读到的那样,在确定什么string::size_type
是它时它可以)。