【发布时间】:2022-01-09 19:16:13
【问题描述】:
我正在学习一些 C 的基础知识(我实际上是在做哈佛的 cs50x)并且我编写了以下代码:
#include <cs50.h>
#include <stdio.h>
int main(void) {
while(0 == 0) {
printf("1. SUM\n2. SUBSTRACTION\n3. MULTIPLICATION\n4. DIVISION\n5. QUIT\n");
int a = get_int("Choose one option: ");
if (a == 1) {
int x = get_int("x: ");
int y = get_int("y: ");
int sum = x + y;
int sub = x - y;
int division = x/y;
int mul = x*y;
printf("Result = %i\n\n", sum);
}
else if (a == 2) {
int x = get_int("x: ");
int y = get_int("y: ");
int sum = x + y;
int sub = x - y;
int division = x/y;
int mul = x*y;
printf("Result = %i\n\n", sub);
}
else if (a == 3) {
int x = get_int("x: ");
int y = get_int("y: ");
int sum = x + y;
int sub = x - y;
int division = x/y;
int mul = x*y;
printf("Result = %i\n\n", mul);
}
else if (a == 4) {
int x = get_int("x: ");
int y = get_int("y: ");
int sum = x + y;
int sub = x - y;
int division = x/y;
int mul = x*y;
printf("Result = %i\n\n", division);
}
else if (a == 5) {
printf("Alright! See you soon!\n");
break;
}
else {
printf("Invalid Input\n");
break;
}
}
}
它完全按照我的意愿工作,但我觉得它可以用更好的方式编写。
我真的不喜欢 int 变量的所有重复,我认为它可以以某种方式进行优化,但不知道如何。
【问题讨论】:
-
只需使用
while(1),因为在C 中任何非0 整数值都是true。if...else的链通常由switch()和各种case语句完成,最后的else是default: -
但无论如何我总是需要写所有那些“int x = get...”、“in y = ...”、“int sum = ...”等...每一个时间?
-
你为什么要在所有
if分支中重复算术计算,即使它们不需要? -
我认为这样会更好,但实际上 LucaRicardo 的做法是最好的方法
标签: c optimization cs50