首页
社区
课程
招聘
[求助]小菜菜又来求助了 c++ if用法
发表于: 2008-3-19 13:16 5705

[求助]小菜菜又来求助了 c++ if用法

2008-3-19 13:16
5705
DWORD WINAPI Func2Proc(
                                        LPVOID lParametr
                                        )
{
        while(TRUE)
        {
                WaitForSingleObject(g_Event,INFINTTE);
                if(NUM>0)
                {
                        Sleep(1);
                        cout<<"Curr 2 num:"<<NUM--<<endl;
                }
                else{
               
                        break;
                        SetEvent(g_Event);
                    }
               
        }
return 0;
}

看了孙鑫的多线程同步,发现那个if{} else ...   在偶练习的时候发现加括号和不加括号结果不同,为什么哦? 大大们解释一下好不~~~   谢谢了~...

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个不是 if(条件成立){执行代码}  else {执行这里的代码} //这个else 后面怎么这个括号也这么多技巧滴呢?
2008-3-19 13:19
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
3
因为程序在else的时候就直接break了,根本不会执行到SetEvent(g_Event);

而且你多加了个括号, 语法不规范,建议看看《编程高手箴言》之类的,或者参照MS的代码规范来coding
2008-3-19 13:25
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢sudami 大大~ 但是...那没加括号它也进行否则了啊...
   
else                                    //这个地方不是也否则了么? 只是else少了个{} 没关门他就可以跑到下面吗?
   
      break;                          //否则不是也要跑到这个地方么??  按道理说从这里已经出去了啊
      SetEvent(g_Event);      //这句真搞不懂是怎么执行到的...

DWORD WINAPI Func2Proc(
          LPVOID lParametr
          )
{
  while(TRUE)
  {
    WaitForSingleObject(g_Event,INFINTTE);
    if(NUM>0)
    {
      Sleep(1);
      cout<<"Curr 2 num:"<<NUM--<<endl;
    }
    else{ 这个括号和下面一个括号没有就正常.   
      break;
      SetEvent(g_Event);
                   } 这个和上面没有则正常
   
  }
return 0;
}

if()
{}
else {}

和 if(){}  else ...


他们为什么不同哦~~~
2008-3-19 13:43
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
5
你没有搞清楚。这个和if语句无关。

当Num为负时,就调用SetEvent(g_Event);来唤醒线程。

你说没有那对{}就正常,那是显然的。

你把break去掉就可以了。

还有, 属于else的,在它下面若只有一句code,可以不加括号,若 >= 2 语句,就必须加 {}.

-------------------------------------
C语言的基本概念....

看来LZ得加油了~
2008-3-19 14:33
0
雪    币: 8209
活跃值: (4513)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
6
向楼上学习,我也不懂基本概念
所以我是不管几行,包括空的都加{}
2008-3-19 14:54
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢 stdami 大大的指点~~  原来不与if关联的哦~~

        while(TRUE)
        {
                WaitForSingleObject(g_Event,INFINITE);
                if(NUM>0)
                {
                        Sleep(1);
                        cout<<"Curr 1 num:"<<NUM--<<endl;
                }else{
               
                        break;
                }

                SetEvent(g_Event);

明白了...收获不小~~~非常谢谢~
2008-3-19 15:49
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
很简单,把那2条语句换成2个MESSAGEBOX 然后去括号和加括号就知道执行哪些语句了
2008-3-19 15:56
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢~~ else 后面只能跟一句~ 是我括号打错了
2008-3-19 17:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
还有break语句的作用,看来你也不明白
2008-3-21 09:13
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
跳出当前循环~ 晕  望楼上大大指教~ 谢谢
2008-3-21 10:11
0
游客
登录 | 注册 方可回帖
返回
//