Tôi hiện đang làm việc với Accelerated C ++ và đã gặp sự cố trong bài tập 2-3.
Tổng quan nhanh về chương trình - về cơ bản chương trình lấy một tên, sau đó hiển thị lời chào trong khung dấu hoa thị - tức là Xin chào! được bao quanh bởi * 's.
Bài tập - Trong chương trình ví dụ, tác giả sử dụng const int
để xác định khoảng trống (khoảng trắng) giữa lời chào và dấu sao. Sau đó, họ yêu cầu người đọc, như một phần của bài tập, yêu cầu người dùng cung cấp thông tin đầu vào về mức độ họ muốn đệm.
Tất cả điều này có vẻ dễ dàng, tôi tiếp tục yêu cầu người dùng cho hai số nguyên ( int
) và lưu trữ chúng và thay đổi chương trình để sử dụng các số nguyên này, xóa những số nguyên được tác giả sử dụng, khi biên dịch mặc dù tôi nhận được cảnh báo sau;
Bài tập2-3.cpp: 46: cảnh báo: so sánh giữa biểu thức số nguyên có dấu và không dấu
Sau một số nghiên cứu, nó có vẻ là do mã cố gắng so sánh một trong các số nguyên ở trên ( int
) với a string::size_type
, điều này tốt. Nhưng tôi đã tự hỏi - điều này có nghĩa là tôi nên thay đổi một trong các số nguyên thành unsigned int
? Điều quan trọng là phải trình bày rõ ràng liệu các số nguyên của tôi có dấu hay không dấu?
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
Trên đây là các bit mã liên quan, c
thuộc loại string::size_type
vì chúng tôi không biết lời chào có thể dài bao nhiêu - nhưng tại sao tôi gặp sự cố này bây giờ, khi mã của tác giả không gặp sự cố khi sử dụng const int
? Ngoài ra - đối với bất kỳ ai có thể đã hoàn thành Accelerated C ++ - điều này sẽ được giải thích ở phần sau của cuốn sách?
Tôi đang sử dụng Linux Mint bằng cách sử dụng g ++ thông qua Geany, nếu điều đó giúp ích hoặc tạo ra sự khác biệt (như tôi đã đọc rằng nó có thể khi xác định điều gì string::size_type
là).