WSL(ubuntu) printf 只输出相同的文本
WSL(ubuntu) printf only outputs the same text
我有问题。我的代码:
#include <stdio.h>
int readInteger() {
int x,y;
printf("variable 1 :");
scanf("%d", &x);
return x;
printf("variable 2 :");
scanf("%d", &y);
return y;
}
int compare (int, int);
int main() {
int x = readInteger(x);
int y = readInteger(y);
printf("%d is greater", compare(x,y));
return 0;
}
int compare(int x , int y) {
if(x > y) return x;
else return y;
}
只输出
variable 1: ...
variable 1: ...
而不是
variable 1: ...
variable 2: ...
这个问题是因为return
的意思是“在这里结束函数执行”。所以,你有
int readInteger() {
int x,y;
printf("variable 1 :");
scanf("%d", &x);
return x;
printf("variable 2 :");
scanf("%d", &y);
return y;
}
由于 return x
行,它等同于
int readInteger() {
int x,y;
printf("variable 1 :");
scanf("%d", &x);
return x;
}
一个快速修复方法是删除 return x;
行。虽然那样它不会完全按照您希望函数执行的操作执行,因为您想要读取 2 个整数和 return 它们。
更好的解决方法是将字符串作为参数传递给函数,然后调用它两次:
int readInteger(const char* prompt) {
int x;
printf(prompt);
scanf("%d", &x);
return x;
}
int main() {
int x = readInteger("variable 1 :");
int y = readInteger("variable 2 :");
printf("%d is greater", compare(x,y));
return 0;
}
PS。如果函数没有参数(原始代码中的readInteger
,则不应使用参数调用它(main
中的int x = readInteger(x)
)。
我有问题。我的代码:
#include <stdio.h>
int readInteger() {
int x,y;
printf("variable 1 :");
scanf("%d", &x);
return x;
printf("variable 2 :");
scanf("%d", &y);
return y;
}
int compare (int, int);
int main() {
int x = readInteger(x);
int y = readInteger(y);
printf("%d is greater", compare(x,y));
return 0;
}
int compare(int x , int y) {
if(x > y) return x;
else return y;
}
只输出
variable 1: ...
variable 1: ...
而不是
variable 1: ...
variable 2: ...
这个问题是因为return
的意思是“在这里结束函数执行”。所以,你有
int readInteger() {
int x,y;
printf("variable 1 :");
scanf("%d", &x);
return x;
printf("variable 2 :");
scanf("%d", &y);
return y;
}
由于 return x
行,它等同于
int readInteger() {
int x,y;
printf("variable 1 :");
scanf("%d", &x);
return x;
}
一个快速修复方法是删除 return x;
行。虽然那样它不会完全按照您希望函数执行的操作执行,因为您想要读取 2 个整数和 return 它们。
更好的解决方法是将字符串作为参数传递给函数,然后调用它两次:
int readInteger(const char* prompt) {
int x;
printf(prompt);
scanf("%d", &x);
return x;
}
int main() {
int x = readInteger("variable 1 :");
int y = readInteger("variable 2 :");
printf("%d is greater", compare(x,y));
return 0;
}
PS。如果函数没有参数(原始代码中的readInteger
,则不应使用参数调用它(main
中的int x = readInteger(x)
)。