首页 > 解决方案 > 基于另一个变量设置一组变量的有效方法?

问题描述

我想设置一组 2-4 个变量,它们的值取决于第 5 个变量。我可以通过一长串来做到这一点if else,我想知道是否有一个我不知道的技巧我可以学习,让它更优雅一点?我对`C还是很陌生。

例如:

/*some code... x is read from stdin...*/

if (x == 1) {
  a = 10;
  b = 100;
}

else if (x == 2) {
  a = 10;
  b = 50;
  c = 100;
}

else if (x == 3) {
  a = 0;
  b = 25;
  c = 50;
  d = 100;
}
/* and so on...*/

我打算在一个函数中完成这一切,而不是main()使用指向 set a, b, c... 的指针,但为了简单起见,我在这里省略了它。

干杯,

W

标签: cfunctionvariables

解决方案


嗯,一个switch语句通常比一堆if-else语句更优雅

switch (x) {
    case 1:    a = 10;
               b = 100;
               break;

    case 2:    a = 10;
               b = 50;
               c = 100;
               break;

    case 3:    a = 0;
               b = 25;
               c = 50;
               d = 100;
               break;

    default:   // have a default case or catch it as an error
}

如果您真的关心保持这部分代码简短易读,您可以通过使用函数来设置变量来进一步收紧代码。

switch (x) {
    case 1:    caseA(&a, &b);
               break;

    case 2:    caseB(&a, &b, &c);
               break;

    case 3:    caseC(&a, &b, &c, &d);
               break;

    default:   // have a default case or catch it as an error
}

void caseA(int *a, int *b) {
    *a = 10;
    *b = 100;
}

推荐阅读