标题:关于bool的定义问题
只看楼主
dapeng83
Rank: 1
来 自:河南
等 级:新手上路
帖 子:26
专家分:5
注 册:2009-11-12
结帖率:63.64%
已结贴  问题点数:20 回复次数:2 
关于bool的定义问题
以下是我的程序:
#include <stdio.h>
 #include <stdbool.h>

 int main(void)
 {

    bool  i = true;

    do
    {
       char  m;
       printf("please input a char Y or N"\n);

       scanf("%c",&m);
       switch(m)
       {
       case Y: i = true;
       break;
       case N: i = false;
       break;
       }
     }while(i);

     return 0;
  }
/*
stdbool.h

-- Boolean type and values
(substitute for missing C99 standard header)

public-domain implementation from [EMAIL PROTECTED]

implements subclause 7.16 of ISO/IEC 9899:1999 (E)
*/

#ifndef __bool_true_false_are_defined
#define __bool_true_false_are_defined 1

/* program is allowed to contain its own definitions, so ... */
#undef bool
#undef true
#undef false

#if __STDC_VERSION__ < 199901
typedef int _Bool
#endif

#define bool _Bool
#define true 1
#define false 0

#endif /* !defined(__bool_true_false_are_defined) */
黑色的是我程序,带颜色的是我的stdbool.h头函数里的但我编译的时候却说语法错误,我却不知道错在哪里了,是stdbool.h里面有问题吗,请帮忙解释下,谢谢


搜索更多相关主题的帖子: bool 定义 
2009-12-02 19:50
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
得分:10 
先说说头文件。。头文件中宏定义后面是不用分号的。。(加没加都一样);
但typedef是定义新类型。。属于一般语句。。要在后面加上分号···
程序代码:
/*
stdbool.h 

-- Boolean type and values
(substitute for missing C99 standard header)

public-domain implementation from [EMAIL PROTECTED]

implements subclause 7.16 of ISO/IEC 9899:1999 (E)
*/

#ifndef __bool_true_false_are_defined
#define __bool_true_false_are_defined 1

/* program is allowed to contain its own definitions, so ... */
#undef bool
#undef true
#undef false

#if __STDC_VERSION__ < 199901
typedef int _Bool;
#endif

#define bool _Bool
#define true 1
#define false 0

#endif /* !defined(__bool_true_false_are_defined) */

再看看你的程序。。。首先printf("please input a char Y or N\n"); \n也是字符。。放进引号里面去
接着switch的case后面要跟字符的话。。请加上单引号。。没有单引号的只能是数字。。
然后就是以后一定不要忘了···换行符(即你按下的那个enter)也是一个字符。。。想不被它影响的话。。用个getchar();把它处理掉。。如下代码。。。你也可以试试没有getchar();会有什么样的区别。。
程序代码:
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
    bool  i = true;

    do
    {
       char  m;
       printf("please input a char Y or N\n");  //  \n也是字符。。放进引号里面去

       scanf("%c",&m);
       getchar();  //  除去输入m后的按下的enter键。。
       switch(m)
       {
       case 'Y': i = true;
       break;
       case 'N': i = false;
       break;
       }
     }while(i);
     return 0;
  }
2009-12-02 20:47
xu362726904
Rank: 6Rank: 6
等 级:侠之大者
帖 子:160
专家分:471
注 册:2009-6-18
得分:10 
长见识了,以前碰到过这个问题,都是把选择换成整型的,现在明白了
2009-12-02 20:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-293717-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.710029 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved