gpt4 book ai didi

c++ - 我无法弄清楚如何在不使用 C++ 中的 climits 的情况下计算最大和最小有符号数

转载 作者:行者123 更新时间:2023-11-30 05:48:56 27 4
gpt4 key购买 nike

我目前正在为我的 CS 类(class)做作业。我正在尝试打印数据类型 int、short 和 long 的最大和最小有符号数。

我不太确定该怎么做。我一直在使用 sizeof() 函数来确定每种数据类型携带多少字节,然后使用 cmath 库中的 pow()。

这是我用来计算带符号空头的最大数量的数学/代码:(int)pow(2, sizeof(short)*8)-1;

这会输出最大无符号数,而不是最大有符号数。我可以将其除以 2,但不完全确定如何计算负数部分,而不是在前面打印“-”。

我现在拥有的更详细的代码:

 42     int shortmax_calculate;
43 shortmax_calculate = (pow(2, sizeof(short)*8)-1)/2;
44
45 float shortmin_calculate;
46 shortmin_calculate = (int)pow(2, sizeof(short)*8)/2;
47
48 short unsigned shortunsigned_calculate;
49 shortunsigned_calculate = pow(2, sizeof(short)*8)-1;
50
51 int intmax_calculate;
52 intmax_calculate = (int)pow(2, sizeof(int)*8)-1;
53
54
55 cout << "Maxmimum short (signed): "<< shortmax_calculate << endl;
56 cout << "Minimum short (signed): " << "-" << shortmin_calculate << endl;
57 cout << "Maximum short (unsigned): " << shortunsigned_calculate << endl;
58 cout << "Maximum int (signed): " << intmax_calculate << endl;

感谢任何帮助,谢谢。

最佳答案

假设您可以使用 C++11,请使用 limits标准标题:

#include <iostream>
#include <limits>
...

{
std::cout << "Maxmimum short (signed): " <<
std::numeric_limits<short>::max() << std::endl;

// repeat replacing with 'unsigned short', 'int', 'unsigned int'
// in template class function: std::numeric_limits<type>, using
// max() or min() as required.
}

看看clang's实现 - 搜索 __libcpp_numeric_limits 以查看它是如何进行评估的。如果您不会使用 C++11,它可能会给您一些关于模板的想法。

关于c++ - 我无法弄清楚如何在不使用 C++ 中的 climits 的情况下计算最大和最小有符号数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27996265/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com