恳请大家帮忙 还是那个问题。
- C/C++ code
if(条件A) { switch( a ++) { case 1: corner1(); break; case 2: corner2(); break; case 3: corner3(); break; }} else if(条件B){ corner a ();}
参考:
http://topic.csdn.net/u/20120708/21/b8a8208a-d378-449e-a318-c0bedd6ae311.html?seed=2073719660&r=79064404#r_79064404
请注意 条件B的 a 也是条件A switch中的自加。
现在是要补充调用 if A 中的corner
[解决办法]
在条件B时也写一个switch case就行了
[解决办法]
- C/C++ code
bool isA = false;bool isB = false;if (条件A){ isA = true;}else if (条件B){ isB = true;}if (isA || isB){ switch( a ++) { case 1: corner1(); break; case 2: corner2(); break; case 3: corner3(); break; //... case a: if (isB) { cornera(); } break; }}
[解决办法]
加个标识来判断,就像楼上这个的。
[解决办法]
推存 2楼
[解决办法]
好像不怎么复杂吧
[解决办法]
建议楼主把问题描述得再详细一点,否则说不定你又要另开一贴来问。
如果仅从楼主给出的说法,感觉并不复杂的,或许和楼主试图传递的意思有出入吧。
[解决办法]
[解决办法]
case a: // 这个a需要是一个确切的值
[解决办法]
[解决办法]
大概看明白楼主的意思了,a是个变量
首先
int a = 0;
运行了a++之后,a成了1了,
楼主的意思是
当a是1 执行 corner1()
当a是2 执行 corner2()
是这样吧??
先给出函数指针实现方法:
- C/C++ code
#include <stdio.h>void corner0(){ printf( "This is corner0!\n" );}void corner1(){ printf( "This is corner1!\n" );}void corner2(){ printf( "This is corner2!\n" );}void corner3(){ printf( "This is corner3!\n" );}int main(){ int a = 3; //定义函数指针数组,变量名为p,元素个数为4,每一个元素指向一个形如void corner1() 无参数无返回值的函数 void ( *p[4] )() = { corner0, corner1, corner2, corner3 }; //测试调用函数 p[0](); printf( "a=%d\n", a ); p[a](); a = 2; printf( "a=%d\n", a ); p[a]();}
[解决办法]
那么 你可以定义一个函数指针数组,
然后,在
- C/C++ code
else if(条件B){ corner a ();}
[解决办法]
[解决办法]
另外用这种方法,你也可以把if( 条件A ) 改掉
改成
- C/C++ code
if(条件A){ p[a++]();}