antdesign打印不到数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了antdesign打印不到数据相关的知识,希望对你有一定的参考价值。
参考技术A 今天遇到一个bug场景是这样的:表单的一个性别选择框选择时怎么也赋值不了,然后使用@change打印了选择的值,发现其实是能拿到值的但是页面不显示,就很奇怪。按理说双向绑定,以前没有碰到过这个bug今天突然就不行了,不管怎么说页面赋值不了还是得解决的
监听选择框变化
打印双打数组会产生意想不到的结果
【中文标题】打印双打数组会产生意想不到的结果【英文标题】:Printing array of doubles gives unexpected results 【发布时间】:2020-08-25 17:06:33 【问题描述】:在我正在编写的程序中,我在从数组中打印数据时遇到了意外的输出。我试过浮动和双倍。代码如下:
#include <iostream>
int main()
double vector[3] 193.09375 , 338.5411682 , -4.0 ;
double pVecX 193.09375 ;
double pVecY 338.5411682 ;
double pVecZ -4 ;
std::cout << std::dec << vector[1] << '\n' << vector[2] << '\n' << vector[3] << '\n' << '\n';
std::cout << std::dec << pVecX << '\n' << pVecY << '\n' << pVecZ << '\n';
system("Pause");
return 0;
这是输出:
338.541
-4
1.42292e-306
193.094
338.541
-4
Press any key to continue . . .
问题: 我希望向量以与它们输入数组的方式相反的顺序打印。 (即使我要求 [1]..[2]..[3],它正在打印 [2]..[3]..[1](我认为这是顺序))
当数组的一部分时,数字“193.09375”变成了一个(看似)随机标记的数字,并且每次程序运行时都不同。
我正在阅读有关变量的信息,并了解存储在其初始化范围之外的变量可能会导致回绕,我只是不知道为什么会发生这种情况。 (我假设它是基于否定符号。)
我确信我错过了一些简单的东西,而且我还很新。
【问题讨论】:
数组索引从 0 开始。vector[3]
是错误的。虽然你可能有三个元素,但实际上只有 0、1、2 个索引。
【参考方案1】:
Array
s 索引从 0
开始。所以当你说vector[3]
时,你实际上已经越界了。
您只有 0、1 和 2 个索引或下标。虽然你确实有 3 个元素。 0 将引用您的第一个元素,1 将引用您的第二个元素,2 将引用您的 3 元素,依此类推。
(就像我在评论中提到的那样。)
你应该有这样的东西:
std::cout << std::dec << vector[0] << '\n' << vector[1] << '\n' << vector[2] << '\n' << '\n';
这应该可以解决您的问题。还可以考虑使用std::vector
。
还阅读了为什么你不应该使用system("Pause");
。
【讨论】:
【参考方案2】:如其他答案中所述,大小为 3 的数组的有效索引是 0、1 和 2。使用任何其他索引都会调用未定义的行为。
如果你使用循环,你也可以避免显式索引到数组中:
for (auto v : vector)
std::cout << std::dec << v << '\n';
【讨论】:
【参考方案3】:vector[3]
超出了数组的范围。程序的行为未定义。有效索引为 0、1 和 2。
【讨论】:
【参考方案4】:我希望向量以与它们输入数组的方式相反的顺序打印。
为什么?您打印的索引按从低到高的顺序排列(<<
按源代码的顺序打印等)。如果要反转它们,则需要先打印最高索引2
,然后是1
,然后是0
,
当数组的一部分时,数字“193.09375”变成了一个(看似)随机标记的数字,并且每次程序运行都不同。
vector
数组从 0
到 2
,而不是从 1
到 3
。当您尝试访问vector[3]
时,这是未定义的行为,程序可能会打印任何最终出现的内存。每次运行程序时,内存中可能包含不同的东西,这是未定义行为的正常结果。
【讨论】:
【参考方案5】:C++ 中的数组是零索引的,这意味着第一个元素由索引 0 访问,例如
int array[3] 5,6,7;
所以数组[0] == 5,数组[1] == 6,数组[2] == 7。
你得到一个随机数的原因是你试图打印一个从未定义过的数组元素。在上面我的数组的给定示例中,如果我尝试打印元素数组 [3],它对应于内存中的某个位置(它不是我的数组的一部分),可以用任何值填充,这称为未定义的 bahavior )。
如果要打印出数组的每个元素,可以使用基于范围的 for 循环:
for (auto a : my_array) std::cout << a << std::endl;
【讨论】:
以上是关于antdesign打印不到数据的主要内容,如果未能解决你的问题,请参考以下文章
AntDesign(React)学习-13 使用UMI提供的antd模板