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】:

Arrays 索引从 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】:

我希望向量以与它们输入数组的方式相反的顺序打印。

为什么?您打印的索引按从低到高的顺序排列(&lt;&lt; 按源代码的顺序打印等)。如果要反转它们,则需要先打印最高索引2,然后是1,然后是0

当数组的一部分时,数字“193.09375”变成了一个(看似)随机标记的数字,并且每次程序运行都不同。

vector 数组从 02,而不是从 13。当您尝试访问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表格怎么排除现实数据

AntDesign(React)学习-13 使用UMI提供的antd模板

react学习(26)---获取antdesign的form数据

antdesign日期组件不能手动输入

AntDesign vue table中增加序号

AntDesign--解决Tree组件defaultExpandAll不生效问题