G***G 发帖数: 16778 | 1 四个开关
Can1,Can2, Can3,Can4
1)条件是Can1,Can2,Can3, Can4都是1的时候,执行A
2)条件是这四个有且只有3个是1的时候,
执行B1(对应Can1, can2,can3)
执行B2 (对应Can1,Can2, Can4)
.....
执行B4 (对应Can2, can3,can4)
3)条件是四个中有且只有2个是1的时候
执行C1 (can1, can2)
执行C2 (can1, can3)
...
执行C6 (can3, can4)
4)只有一个是1的时候
执行D1 (can1)
...
执行D4 (can4)
我的问题是,用if else 嵌套好,还是用switch case好?switch case怎么写这个算法?
谢谢! |
s******y 发帖数: 416 | 2 binary vector
【在 G***G 的大作中提到】 : 四个开关 : Can1,Can2, Can3,Can4 : 1)条件是Can1,Can2,Can3, Can4都是1的时候,执行A : 2)条件是这四个有且只有3个是1的时候, : 执行B1(对应Can1, can2,can3) : 执行B2 (对应Can1,Can2, Can4) : ..... : 执行B4 (对应Can2, can3,can4) : 3)条件是四个中有且只有2个是1的时候 : 执行C1 (can1, can2)
|
s********g 发帖数: 92 | 3 unsigned char sw=can4<<3 | can3<<2 | can2<<1 | can1;
switch(sw){
case 1:
//operation D1
break;
case 2:
//operation D2
break;
...
case 13:
//operation B2
break;
case 14:
//operation B1
break;
case 15:
//operation A
}
【在 G***G 的大作中提到】 : 四个开关 : Can1,Can2, Can3,Can4 : 1)条件是Can1,Can2,Can3, Can4都是1的时候,执行A : 2)条件是这四个有且只有3个是1的时候, : 执行B1(对应Can1, can2,can3) : 执行B2 (对应Can1,Can2, Can4) : ..... : 执行B4 (对应Can2, can3,can4) : 3)条件是四个中有且只有2个是1的时候 : 执行C1 (can1, can2)
|
G***G 发帖数: 16778 | 4 how to create the binary vector?
use if else?
【在 s******y 的大作中提到】 : binary vector
|
G***G 发帖数: 16778 | 5 get it. thanks.
【在 s********g 的大作中提到】 : unsigned char sw=can4<<3 | can3<<2 | can2<<1 | can1; : switch(sw){ : case 1: : //operation D1 : break; : case 2: : //operation D2 : break; : ... : case 13:
|
S*A 发帖数: 7142 | 6 对,这个 mask 用个 macro 会好点,
不然哈格 1,2,3, 的 magic value 会很难读。
【在 s********g 的大作中提到】 : unsigned char sw=can4<<3 | can3<<2 | can2<<1 | can1; : switch(sw){ : case 1: : //operation D1 : break; : case 2: : //operation D2 : break; : ... : case 13:
|
n******n 发帖数: 12088 | 7 bitmap
【在 G***G 的大作中提到】 : get it. thanks.
|
t********6 发帖数: 348 | 8 为什么不把他们加起来,然后考虑 1 2 3 4 0 五种情况?
【在 G***G 的大作中提到】 : 四个开关 : Can1,Can2, Can3,Can4 : 1)条件是Can1,Can2,Can3, Can4都是1的时候,执行A : 2)条件是这四个有且只有3个是1的时候, : 执行B1(对应Can1, can2,can3) : 执行B2 (对应Can1,Can2, Can4) : ..... : 执行B4 (对应Can2, can3,can4) : 3)条件是四个中有且只有2个是1的时候 : 执行C1 (can1, can2)
|