为字符C++指定最小值
Assign min Value to char C++
我正试图将char的最小值分配给像这样的char数组类型的变量
char charchar_value[MAX_VARCHAR_LENGTH + 1]= CHAR_MIN;
它给了我这个错误"不兼容的类型在分配'char'到'char[513]'"
数组对象的初始化需要使用大括号初始值设定项列表,即沿线的内容
char charchar_value[MAX_VARCHAR_LENGTH + 1] = { val_0, val_1, /*...*/ val_n };
这将把第一CCD_ 1值初始化为它们各自的值并且将所有其它值初始化为零。这不是你想要的。在数组中设置值的唯一方法是在初始化之后,例如使用std::fill()
:
std::fill(std::begin(charchar_value), std::end(charchar_value),
std::numeric_limits<char>::min());
由于还有另一个建议建议基本上使用C方法:
memset()
的使用仅限于没有任何C++功能的类型(事实上,char
也是如此),当将值设置为0
以外的值时,它几乎仅限于char
(是的,我意识到在某些情况下它仍然可以工作)。std::fill()
与可CopyAssignable的任何类型以及给定给相应类型的对象的任何值一起工作- 尽管在这种情况下使用
sizeof()
是可行的,但在大小变为动态的那一刻它就不起作用了,但编译器仍然很乐意接受代码。获取指针的std::begin()
或n
0将失败 - 在类型不确切的情况下,例如当它是typedef或在模板中时,
std::numeric_limits<T>::min()
有更好的工作机会。它仍然不适用于许多类型,因为没有定义min()
,但范围更大
话虽如此,我只会使用一个适当的类,直接进行初始化,即
std::vector<char> charchar_value(MAX_VARCHAR_LENGTH + 1,
std::numeric_limits<char>::min());
不过,这是动态分配内存的,也就是说,它并不完全等效。然而,除非有充分的理由做出相反的假设,否则我会使用简单的方法,并且只有在必要时才进行优化。
如果您只想将第一个元素设置为CHAR_MIN
,那么它将是:
char charchar_value[MAX_VARCHAR_LENGTH + 1] = { CHAR_MIN };
如果您想将整个阵列初始化为CHAR_MIN
,那么它将是:
char charchar_value[MAX_VARCHAR_LENGTH + 1];
memset(charchar_value, CHAR_MIN, sizeof(charchar_value));
确定C++中以下数据类型的最小值和最大值:
g) char
h) int
i) float
j) double
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 使用递归的数组的最小值.这是怎么回事
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 在二维数组中查找最小值和最大值?
- 有没有办法使用递归函数找到数组中最小值的 INDEX?C++
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- C++ 函数,用于查找传入的 N 个数字的平均值、总和、最小值和最大值
- txt 文件中浮点数的最大和最小值
- 余数运算符的等效操作,用于处理低于允许的最小值
- 需要使用模板查找数组的第二个最小和最小值
- CUDA - 将 float3 数组的 (x,y,z) 分量的最小值/最大值分开?
- 查找包含 N 个元素的数组的最小值和最大值
- 错误C++在Visual Studio 2019中使用numeric_limits的长双精度最小值/最大值
- 是否存在用于 C 或 C++ 中常见数学运算(例如最小值、最大值和平均值)的可导入库?
- 如何在 c++ 中创建对的优先级队列.这会弹出具有最小值的元素.默认的弹出最大值
- 将最小值整数转换为无符号长整型
- 查找 std::vector 中的最小值和最大值 std::p air
- 如何找到每行的最大值和最小值
- 在不进行排序的情况下查找数组中n个最小值的索引