42 là int không dấu cũng được định nghĩa là "42U".Làm thế nào để viết một chữ viết tắt không rõ ràng?
unsigned int foo = 42U; // yeah!
Làm thế nào tôi có thể viết "23" để nó là rõ ràng nó là một int unsigned short?
unsigned short bar = 23; // booh! not clear!
EDIT sao cho ý nghĩa của câu hỏi là rõ ràng hơn:
template <class T>
void doSomething(T) {
std::cout << "unknown type" << std::endl;
}
template<>
void doSomething(unsigned int) {
std::cout << "unsigned int" << std::endl;
}
template<>
void doSomething(unsigned short) {
std::cout << "unsigned short" << std::endl;
}
int main(int argc, char* argv[])
{
doSomething(42U);
doSomething((unsigned short)23); // no other option than a cast?
return EXIT_SUCCESS;
}
Khai báo một ' const unsigned ngắn 'đối tượng với một tên thích hợp và sau đó sử dụng nó thay cho 23. Nó vẫn không giúp bạn một cách rõ ràng rằng 23 được dự định để được unsigned ngắn, nhưng ít nhất bạn chỉ cần kiểm tra rằng tuyên bố để đảm bảo tính chính xác . Ở mọi nơi khác sẽ sử dụng hằng số và do đó ý nghĩa sẽ rõ ràng. –
@Richard Corden: Nó được sử dụng hàng trăm lần như giá trị đầu vào và kết quả trong bài kiểm tra đơn vị, vì vậy ngắn hơn, tốt hơn ... U cho unsigned int là thuận tiện, nhưng (unsigned ngắn) phôi hoặc const unsigned đối tượng ngắn là bực bội . – moala
Bạn đang hỏi cách khai báo một chữ viết tắt ngắn. Nếu bạn đã tìm kiếm câu hỏi đó, bạn sẽ tìm thấy câu trả lời của mình. Như đã nói bạn không thể. –