2013-02-25 183 views
4

我收到的错误行102, 115, and 128。我究竟做错了什么?它说:数字常量之前预期的非限定符号?

前的数字常量

和预期不合格-ID,我不知道这意味着什么。我试图解决这个问题已经有一个星期了,星期三即将到来的是我的C++类。我真的可以在这里使用一些外部建议。我在做什么错了:行102

#include <iostream> 
#include <fstream> 
#include <iomanip> 
#include <conio.h> 
#include <string> 

using namespace std; 

double qMeter = 0; 
double hMeter = 0; 
double oneMeter = 0; 
int solDay = 0; 
string garbage; 
string localTime; 
string decSol; 
ifstream input; 
ofstream output; 

//function prototypes 
double low(double lowTemp); 
double high(double highTemp); 
float average(double avgTemp); 

int main() 
{ 

input.open("curiosity234x.dat"); //opens input data file 
output.open("output.dat"); //opens output data file 


    for (int i = 0; i < 4; i++) //gets rid of the first four lines 
{ 
    getline(input,garbage); 
    cout << endl; 
} 

while (!input.eof()) 
{ 
    int count; 
    double newOneMeter; 
    double newHMeter; 
    double newQMeter; 

    if (solDay == 2) //processes data for the second solar day 
    { 
    input >> solDay >> localTime >> decSol 
    >> newOneMeter >> newHMeter >> newQMeter; 

    oneMeter = oneMeter + newOneMeter; 
    hMeter = hMeter + newHMeter; 
    qMeter = qMeter + newQMeter; 
    count++; 

    output << solDay << fixed << setprecision(1) << setw(5) 
     << "Solar" << "Average" << "Low" << "High" 
     << "Average" << "Low" << "High" 
     << "Average" << "Low" << "High" 
     << "Day" << "Temp" << "Temp" << "Temp" << "Temp" << "Temp" 
     << "Temp" << "Temp" << "Temp" << "Temp" 
     << fixed << setprecision(15) << "1 meter" << ".5 meters" 
     << ".25 meters" 
     << average(oneMeter) << low(oneMeter) << high(oneMeter) 
     << average(hMeter) << low(hMeter) << high(hMeter) 
     << average(qMeter) << low(qMeter) << high(qMeter); 
    } 

    if (solDay == 3) //processes data for the third solar day 
    { 
    input >> solDay >> localTime >> decSol 
    >> newOneMeter >> newHMeter >> newQMeter; 

    oneMeter = oneMeter + newOneMeter; 
    hMeter = hMeter + newHMeter; 
    qMeter = qMeter + newQMeter; 
    count++; 

    output << solDay << fixed << setprecision(1) << setw(5) 
     << "Solar" << "Average" << "Low" << "High" 
     << average(oneMeter) << low(oneMeter) << high(oneMeter) 
     << average(hMeter) << low(hMeter) << high(hMeter) 
     << average(qMeter) << low(qMeter) << high(qMeter); 
    } 
    } 

    cout << endl << "The output.dat file has been written and transmitted."; 
    /* 
    reads first line. Assigns first string to 'int solDay' 
    second to 'string time', third to decSol, fourth to oneMeter, 
    fifth to hMeter and sixth to qmeter. Meters should have setw(). 
    */ 
getch(); 
return 0; 

input.close(); 
output.close(); 
} 


//functions used in main 
double low(double lowTemp) 
{ 
    int test = 10,000; 
    double least; 

    if (lowTemp < test) 
    { 
    lowTemp = test; 
    lowTemp = least;  
    } 
    return least; 
} 

double high(double highTemp) 
{ 
    int test = 10,000; 
    double most; 

    if (highTemp < test) 
    { 
     highTemp = test; 
     highTemp = most;   
    } 
    return most; 
} 

float average(double avgTemp) 
{ 
    avgTemp = avgTemp/count; 
    return avgTemp; 
} 
+1

我对此很陌生。 – Brandon 2013-02-25 04:16:35

+2

[不要使用'while(!eof())'](http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong)。 – chris 2013-02-25 04:31:08

回答

4

错误和115是由于这样的事实,你有一个逗号10,000,但它应该是10000,该逗号不能用作数字分隔符。你实际使用的是comma operator,它从左边到右边评估它的表达式,并且只返回最后一个。因此,在这种情况下:

int test = 10,000; 
     ^^ 
      | Expression 2 
      Expression 1 

因为=具有更高的优先级碰巧第一,你留下了一个语法错误,而另一方面:

int test = (10,000); 

会导致价值10被丢弃和八进制文字000被分配到test

最后的错误就行128是由于count是本地main但您尝试在average使用它,你需要通过count作为第二参数中。

+0

因为这样做会导致它停止给我一个错误。 – Brandon 2013-02-25 04:06:14

+0

有趣的是,如果将其更改为'int test =(10,000);',它实际上会编译。不过,当然这会使'测试'为0。 – chris 2013-02-25 04:30:09

+0

应该添加链接到逗号运算符的解释http://en.wikipedia.org/wiki/Comma_o​​perator – 2013-02-25 04:47:27

3

我在遇到它时搜索了这个错误。我的烦恼的原因?我试图给一个类与#define值相同的名称,该值已经从第三方API头包含到我的项目中。尝试一个不同的类名,我得到它编译!

+3

对于谁来到这里谷歌搜索,像我一样,考虑乔尔回答。它也发生在我身上。我想在一个代码中定义const bool HIGH/LOW,其中包括用于rasperryPi的wiringPi.h库:不幸的wiringPi define(#define)HIGH/LOW ...感谢Joel让我有这个嫌疑犯! – maxbeltra 2014-03-09 15:26:40

+0

@maxbeltra,但不幸的是它不回答这个问题。 – 2015-04-13 09:24:29

+0

我有同样的问题和谷歌的文本“期待数字常量前unqualified-id”,好吧,这个答案解决了我的问题。 – pansz 2015-05-04 02:01:00

相关问题