sách gpt4 ai đã đi

Chương trình C++ để gấp các hằng số

In lại 作者:行者123 更新时间:2023-11-28 05:08:53 29 4
mua khóa gpt4 Nike

我正在用 C++11 编写一个函数,它采用 constant1 + constant2 形式的表达式并将它们折叠起来。 constant1constant2 存储在 std::string 中,它们的类型存储在 enum TypeEnum ở giữa.

我的尝试如下:

程序:

#include
#include
#include

sử dụng không gian tên std;

enum TypeEnum {
INT, LONG_INT, LONG_LONG_INT,
UNSIGNED_INT, UNSIGNED_LONG_INT, UNSIGNED_LONG_LONG_INT
};

long long fold(string constant1, string constant2,
TypeEnum typeConst1, TypeEnum typeConst2){

if(typeConst1 == INT){
if(typeConst2==INT)
return stoi(constant1) + stoi(constant2);
if(typeConst2 == LONG_INT)
return stoi(constant1) + stol(constant2);
if(typeConst2 == LONG_LONG_INT)
return stoi(constant1) + stoll(constant2);
if(typeConst2 == UNSIGNED_INT)
return stoi(constant1) + stol(constant2);
if(typeConst2 == UNSIGNED_LONG_INT)
return stoi(constant1) + stoul(constant2);
if(typeConst2 == UNSIGNED_LONG_LONG_INT)
return stoi(constant1) + stoull(constant2);
}else if(typeConst1 == LONG_INT){
//...
}else if(typeConst1 == LONG_LONG_INT){
//...
}else if(typeConst1 == UNSIGNED_INT){
//...
}else if(typeConst1 == UNSIGNED_LONG_INT){
//...
}else if(typeConst1 == UNSIGNED_LONG_LONG_INT){
//...
}

assert(false);
}
int main(){
cout << fold("1","9223372036854775806",INT,LONG_LONG_INT) << endl;
cout << fold("1","2147483647",INT,INT) << endl;
trả về 0;
}

Đầu ra:

9223372036854775807

-2147483648

如您所见,fold 函数变得非常困惑和冗长。我想知道是否有更好的方法来做到这一点。

1 Câu trả lời

sử dụng switch{} 构造:

switch(typeConst1){
case INT:
switch(typeConst2){
case INT:
return stoi(constant1) + stoi(constant2);
case LONG_INT:
return stoi(constant1) + stol(constant2);
case LONG_LONG_INT:
return stoi(constant1) + stoll(constant2);
case UNSIGNED_INT:
return stoi(constant1) + stol(constant2);
case UNSIGNED_LONG_INT:
return stoi(constant1) + stoul(constant2);
case UNSIGNED_LONG_LONG_INT:
return stoi(constant1) + stoull(constant2);
case LONG_INT:
//...

关于折叠常量的C++程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43961045/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com