c++小程序,为什么老说我在常量前面少分号和括号呢?

来源:百度知道 编辑:UC知道 时间:2024/06/13 23:19:19
#include<iostream>
#include<cmath>
using namespace std;
#define P 2
#define Q 5
int findlambda(int Q,float lambda[]);
int main()
{
int besti=0;
int badi=0;
float matrix[2][5]={2,3,1,1,0,3,3,2,0,1};
int ji[5]={0,0,0,1,1};
float c[3]={-40,-45,-24};
float b[2]={100,120};
float lambda[5]={-40,-45,-24,0,0};
badi=findlambda(Q,lambda);
cout<<findlambda;
}

//-----------------------------------------------------------------------
int findlambda(int QQ,float lambda[])

{
int badi=-1;
float M=999999;
for(int i=0;i<QQ;i++)
{
if(lambda[i]<0)
{
if(lambda[i]<M) {
M=lambda[i];
badi=i;}
}
}
return badi;
}
//------------------------------------------------------------------------

就这个小程序,编译时候老说
C:\Documents and Settings\abc&#

参考:
你用#define Q 5宏定义语句后,Q与5是同一个值5,后面的程序就会把Q当做5,在你定义在函数里定义形参int Q时实际上与定义int 5 一样的,而在定义变量s时是不能用数字开头,更不能只用一个整数代替变量,所以会报错,用#define Q 5; 与const int Q=5;是等价的
修改:
在声明处修改:int findlambda(int i,float lambda[]); 或int findlambda(int ,float lambda[])
顺便说一句:在你的函数定义时用int QQ因为QQ作为一个整体,在程序开头没有语句#define QQ 5所以用int QQ 是合法的。
建议:你用了badi来存储函数返回值,在输出是就可以直接用cout<<badi;

int findlambda(int Q,float lambda[]);
改为
int findlambda(int QQ,float lambda[]);

定义常量最好用const,保存不会错啦,上面的Q被换成了5了(#define Q 5)

c++定义常量尽量用const,因为define是预编译,也就是编译时不检查对错,所以int findlambda(int Q,float lambda[]); 就错了,会直接代换

#define Q 5
int findlambda(int Q,float lambda[]);
是不是这个地方啊?你把Q定义为5,何必要放在函数里面呢?每次调用函数就把Q简单的换成了5,5就是一个常量。你试着改写一下这个函数,看能不能消除这个问题,我没有环境,不好帮你调试

#define Q 5
int findlambda(int Q,float lambda[]);
怎么能这样写啊,int 5是不对的


#define P 2
#define Q 5
改成
const int P=2;
const int Q=5; 就可以了,至于原因我也不很清楚