首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

恳请大家帮忙 还是那个有关问题

2012-07-31 
恳请大家帮忙 还是那个问题。C/C++ codeif(条件A){switch( a ++){case 1: corner1()breakcase 2: corner2

恳请大家帮忙 还是那个问题。

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楼
[解决办法]
好像不怎么复杂吧
[解决办法]
建议楼主把问题描述得再详细一点,否则说不定你又要另开一贴来问。
如果仅从楼主给出的说法,感觉并不复杂的,或许和楼主试图传递的意思有出入吧。
[解决办法]
探讨

引用:
lz 的逻辑关系很复杂,

请问 LZ 认为在每个 case 比较时,compiler 用的是原来的a 还是 增加过的 a

如此写法真的可以实现 lz 的想法吗?


想法可以实现,

先用的a,用corner1();

然后a自加。

接着运行后面的corner2();


但是有些情况(难以避免的)

会满足不了A 所以要……

[解决办法]
case a: // 这个a需要是一个确切的值
[解决办法]
探讨

引用:
引用:

引用:
lz 的逻辑关系很复杂,

请问 LZ 认为在每个 case 比较时,compiler 用的是原来的a 还是 增加过的 a

如此写法真的可以实现 lz 的想法吗?


想法可以实现,

先用的a,用corner1();

然后a自加。

接着运行后面的corner2();


……

[解决办法]
大概看明白楼主的意思了,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 ();}
[解决办法]
探讨

lz 编程是切忌 如此使用



至少将 a++ 移出 switch()


[解决办法]
另外用这种方法,你也可以把if( 条件A ) 改掉
改成
C/C++ code
if(条件A){  p[a++]();} 

热点排行