我目前正在通过Accelerated C ++工作在练习2-3中遇到了一个问题。
程序概述-程序基本上会命名,然后在星号的框架内显示问候语-即Hello!用*包围。
练习-在示例程序中,作者使用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
is类型,string::size_type
因为我们不知道问候语可能持续多长时间-但是当作者的代码在使用时没有遇到问题时,为什么现在会出现此问题const int
?另外-对于可能已经完成Accelerated C ++的任何人-本书稍后会对此进行解释吗?
我在通过Geany使用g ++的Linux Mint上,如果有帮助或有所作为(据我了解,确定是什么string::size_type
的话)。