从整数到双精度的类型转换

时间:2015-07-21 01:48:21

标签: c++ type-conversion

以下是我尝试运行的基本代码

double h_a[9],h_b[2500],h_c[2704];
int r_a,c_a,r_b,c_b,r_c,c_c;
r_a = c_a = 3;
r_b = c_b = 50;
r_c = r_a + r_b - 1;
c_c = c_a + c_b - 1;
for(int i=0;i<(r_a*c_a);i++)
    h_a = double(rand() % 50 + 1);
for(i=0;i<(r_b*c_b);i++)
    h_b = rand() % 50 + 1;

它向我显示以下错误: 1.将'double'赋值为'double'的不兼容类型[9] 2.名称查找'i'已更改为ISO'为'范围[-fpermissive] | 3.将'int'赋值为'double [2500]'

的不兼容类型

帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

h_ah_b是数组。您不能将值分配给数组,只能分配给数组的元素。

更换

h_a = double(rand() % 50 + 1);

通过

h_a[0] = double(rand() % 50 + 1);

并对h_b的赋值进行类似的更改将满足编译器。我不知道这是否正确。

您有两个for循环。第一个定义循环头中的循环变量;第二个不是:

for (int i = blah; blah; blah) { ... }
for (i = blah; blah; blah) { ... }

第一个循环中定义的i的范围就是循环。它在第二个循环中不可见。但是在旧版本的C ++中,范围扩展到包含循环的块。根据这些规则,这将是合法的。显然编译器仍然识别旧规则。将第二个循环中的i = ...更改为int i = ...。然后,您将拥有两个不同的变量,均名为i,每个循环一个。

答案 1 :(得分:0)

您正在使用值分配数组的名称,这是错误的。您可以将其分配给数组的元素。 我在第一个循环声明。这就是为什么它在第二个for循环中不可见的原因。在第一次循环开始之前声明它。

相关问题