我有3个功能:
每个功能都可以自行运行 - 为什么第三个功能不起作用呢?
编辑:尝试初始化i = 0,代码仍然编译相同的结果。同样,两个函数dots()和stars()在自己调用时都能正常工作。
void dots(int a){
for(int i; i<a; i++){
cout << ".";
}
}
void stars(int a){
for(int i; i<a; i++){
cout << "*";
}
}
//(not working):
void dotsstars(int a, int b){
dots(a);
stars(b);
}
int main(){
dotsstars(5, 6);
return 0;
}
答案 0 :(得分:4)
将迭代i值实例化为0.因此,for循环变为:
int main() {
/* your function invoked */
int i = 0;
cin >> i++; // This is a not so neat way to pause your program. Do something with your value so that you don't get unused variable warning.
return 0;
}
此外,如果您没有从终端/控制台执行该程序,您可能会看到结果之前,程序关闭得太快。
type MenuItem msg
= MenuItem
{ attributes : List (Attribute msg)
, children : List (Html msg)
}
答案 1 :(得分:3)
此时变量i
具有垃圾值,因此很可能 for loop 将始终为false(即它不会运行)
所以你需要初始化i
for(int i = 0; i < number_of_times ; i++)
如果您的控制台快速关闭而您无法看到结果,那么最后添加getch();
,则必须包含#include <conio.h>
库
P.S我知道使用getch()不是一个好习惯,它会使程序OS依赖。
答案 2 :(得分:0)
您需要将增量器i初始化为0:
for (int i=0; i<a; i++){
答案 3 :(得分:0)
您没有初始化i
这就是它不打印的原因。 i
是一个局部变量,因此局部变量的默认值将是垃圾值,这就是你需要首先初始化它的原因。
#include<iostream>
using namespace std;
void dots(int a){
for(int i=0; i<a; i++){// i is set to be 0 here
cout << ".";
}
}
void stars(int a){
for(int i=0; i<a; i++){// i is set to be 0 here
cout << "*";
}
}
//(not working):
void dotsstars(int a, int b){
dots(a);
stars(b);
}
int main(){
dotsstars(5, 6);
return 0;
}