循环没有识别变量?

时间:2015-07-01 07:45:12

标签: c floating-point

我是C的新手并且使用CUDA虽然我不认为这个问题是CUDA特有的 - 我已经能够毫无问题地将数据传输到GPU设备或从GPU设备传输数据,并且仅用于测试目的一个线程。

在计算f1和f2的长循环之后,我有这段代码:

float price = 0;
float net = 0;
int numTrades = 0;

for (int j = 1; j < dataCol; j++) {
    if (((f1[j] > f2[j]) && (f1[j - 1] < f2[j - 1]) && price == 0)) {
            price = data[j];
            numTrades++;
    }
    else if (((f1[j] < f2[j]) && (f1[j - 1] > f2[j - 1]) && price != 0)) {
            net += data[j] - price;
            price = 0;
            numTrades++;
    }
}

据我所知,没有任何问题,除了它拒绝编译“第一个if语句”的“标识符价格'未定义”错误。这段代码是我提到的代码中的第一个地方,我尝试使用int,float,double,甚至布尔值初始化但仍然得到相同的错误。

对于可能导致此问题的人,有什么想法?

2 个答案:

答案 0 :(得分:1)

如果事情在一个地方莫名其妙地破裂,那就去找它上面的拼写错误(我在前一行中错过了一个分号。)

答案 1 :(得分:0)

TL; DR - 您的代码段看起来不错。问题很可能出现在您实际代码的其他地方。

然而,一旦可能的原因,我认为,您的编译器不支持C99或更高版本。函数代码(混合声明)之间的变量定义允许向前C99。在其他版本中,它应该出现在函数本身的开头。那么,你也应该在

中收到错误
 for(int j=1; j<

因为这也是C99功能,所以我上面的假设不可能是真的。

请显示更多代码。