作为编程的初学者,我无法找到为什么srand不会再改变字符串。
#include <stdlib.h>
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
int v[100], i, p, n,
srand(time(NULL));
cout<<"Numbers of numbers: "; cin>>n; cout<<endl;
for(i=0; i<=n-1; i++)
v[i]=rand()%100;
cout<<"Numbers: "<<endl;
for(i=0; i<=n-1; i++)
cout<<v[i]<<" ";
for(i=0; i<=(n-1)/2; i++){
p=v[i];
v[i]=v[n-(i+1)];
v[n-(i+1)]=p;
}
cout<<"Reversed numbers: "<<endl;
for(i=0; i<=n-1; i++)
cout<<v[i]<<" ";
return 0;
}
尝试重建它,从1重写它,等等。
。即使它在它只是一种类型的错误之前确实能够正常工作,也是行不通的。编辑:很奇怪,因为我复制粘贴开头,它与之相关......我猜这是我的错误。没有给予足够的重视T_T
答案 0 :(得分:3)
如果启用更多警告,您会看到类似
的内容program.cpp:11:1: warning: unused variable 'srand' [-Wunused-variable] srand(time(NULL)); ^
原因可以在前一行看到:它以逗号
结尾int v[100], i, p, n,
// Note comma here ^
所以代码正在做的是声明一个名为srand
的变量,而不是调用名为srand
的函数。
将此作为始终构建的课程,并启用额外警告。启用更多警告会使这个问题变得非常明显,但它也可以提供有关未定义行为的提示。