c - 基于另一个变量设置一组变量的有效方法?
问题描述
我想设置一组 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
解决方案
嗯,一个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;
}
推荐阅读
- python - 打印到作为后台进程运行的文件 python 脚本
- node.js - “npm ERR!在附近解析时 JSON 输入意外结束..”;缓存清理不起作用
- node.js - 具有云功能的 Firebase 分析日志事件
- javascript - 是否推荐 Node.js 中 cron 作业的子进程?
- angular - Angular 5 Pipe,{updateOn:'blur'} 未按预期更新模型
- javascript - 从 Cloud Firestore 拉取数据后无法以 Vue.js 形式显示数据
- python - 输入和输出编码有问题
- neo4j - 返回不同的组
- scala - 定义应该是字符串组件的产品/元组(任何大小)的通用参数
- java - 在java中,重复向下转换和向上转换是否会擦除子类中的数据?