gpt4 book ai didi

c++ - 根据 C++ 中的数据类型设置默认值

转载 作者:太空宇宙 更新时间:2023-11-04 07:29:41 25 4
gpt4 key购买 nike

我有一个样例代码

template <typename BIT_LENGTH>
class mod {
public:
mod(BIT_LENGTH val) : m_val (powl(2,sizeof(BIT_LENGTH) * 8) - 1), _val(val) {
}

void value() {
std::cout << " sizeof -- " << sizeof(BIT_LENGTH) << std::endl;
std::cout << " value is : ---- " << m_val << std::endl;
std::cout << " value is : ---- " << _val << std::endl;
}
private:
BIT_LENGTH m_val;
BIT_LENGTH _val;

};

int main(){
mod<uint64_t> mod1(10);
mod1.value();
}

现在我想将我的成员变量初始化为模板化类型的最大值。

最好的方法是什么?

还有什么比使用 powl 函数更干净的吗?

最佳答案

查看 std::numeric_limits .


<德尔> powl不是标准的 C++ 函数:它来自 Linux。 哦,它在 C99 中。那好吧!在 C++ 中,基本上可以使用相同的函数,只是名称为 pow。 ,重载(奇怪的是 powl 在 C++11 标准中没有提到)。


顺便说一句,您可以(从统计上)通过为宏名称保留全部大写来避免烦人的意外文本替换。它也更容易在眼睛上。一般而言。


此外,以防万一您不知道,在 C 和 C++ 中,不能保证一个字节是 8 位。在某些平台上,特别是某些德州仪器数字信号处理器,一个字节(例如 char )是 16 位。从历史上看,它也有其他尺寸。它必须至少 8 位,仅此而已。每字节的位数可用 CHAR_BIT 表示。来自 <limits.h> .


最后,如果您始终使用系统的缩进,您会发现您对代码的理解会好得多。

而且其他人也会更容易理解代码。

几乎神奇的是,这大大减少了您必须花时间寻找和纠正的错误数量。

关于c++ - 根据 C++ 中的数据类型设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14973739/

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