討論區快速選單
知識庫快速選單
軟體開發過程中有哪些資安漏洞? 傑米的攝影旅遊筆記 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
c language如何才能使用 bool ?
更改我的閱讀文章字型大小
作者 : kevin20060520(kevin) 貼文超過500則人氣指數超過100000點
[ 貼文 718 | 人氣 132860 | 評價 60 | 評價/貼文 0.08 | 送出評價 60 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/14 下午 08:47:53
test.c

bool state=true;

不能用 , 如何才能用到bool 這個 type?
作者 : ofox(OFox)
[ 貼文 107 | 人氣 8778 | 評價 150 | 評價/貼文 1.4 | 送出評價 16 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人kevin20060520註記此篇回應為很有道理 2010/3/15 上午 09:12:42
1. 如果你的 C Compiler 支援 C99

#include < stdbool.h >

bool bXXX = true;


2. 如果你的 C Compiler 不支援 C99

enum bool
{
   false = 0,
   true = 1
};
作者 : 7654321(0)
[ 貼文 112 | 人氣 254 | 評價 500 | 評價/貼文 4.46 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人kevin20060520註記此篇回應為很有道理 2010/3/15 下午 05:00:34

沒有就自己定義一個
typedef unsigned int bool;

#define false 0
#define true 1
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人kevin20060520註記此篇回應為很有道理 2010/3/15 下午 08:51:03
基於什麼原因你非得要用 C?

除非你的系統完全沒有 C++ 編譯器, 或是你必須要用到 C 或 C99 的特性, 否則何不用 C++ 來寫.

雖然 C 跟 C++ 是兩種不同的程式語言, 但它們在語法及語意上也有共同的地方. 你可以把 C++ 當作 "a better C" 來用.

作者 : kevin20060520(kevin) 貼文超過500則人氣指數超過100000點
[ 貼文 718 | 人氣 132860 | 評價 60 | 評價/貼文 0.08 | 送出評價 60 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/24 下午 08:34:47
enum bool
{
   false = 0,
   true = 1
};




typedef enum { true = 1 ==1 , false =1 ==0} bool;

有什么分別??
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/24 下午 11:28:47
>enum bool
>{
> false = 0,
> true = 1
>};
>
>
>和
>
>typedef enum { true = 1 ==1 , false =1 ==0} bool;
>
>有什么分別??

你指的是什麼? typedef 的使用; 還是 true/false 各自設定值的分別?
作者 : sleepyfish(愛睏魚) C#優秀好手C++優秀好手貼文超過500則
[ 貼文 524 | 人氣 0 | 評價 2890 | 評價/貼文 5.52 | 送出評價 13 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/25 上午 10:33:51
typedef enum { true = 1 ==1 , false =1 ==0} bool;

稍微改成:
typedef enum {
  true = (1 == 1),
  false = (1 == 0)
} bool;

這樣子有沒有比較好看懂??
作者 : kevin20060520(kevin) 貼文超過500則人氣指數超過100000點
[ 貼文 718 | 人氣 132860 | 評價 60 | 評價/貼文 0.08 | 送出評價 60 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/25 下午 07:33:11
我應該是指typedef 是否 有沒有
 typedef 都不會影響 enum的??

那為何要加 typedef ?? 這點不太明 !

作者 : kevin20060520(kevin) 貼文超過500則人氣指數超過100000點
[ 貼文 718 | 人氣 132860 | 評價 60 | 評價/貼文 0.08 | 送出評價 60 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/25 下午 07:34:35
稍微改成:
typedef enum {
  true = (1 == 1),
  false = (1 == 0)
} bool;

這樣子有沒有比較好看懂??

我明白它的意思 只是不明白為何加typedef?
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人kevin20060520註記此篇回應為最佳解答 2010/3/25 下午 09:19:20
〔短答案〕
>enum bool
>{
> false = 0,
> true = 1
>};

在定義變數時只能這樣:
  enum bool b1, b2;

>和
>
>typedef enum { true = 1 ==1 , false =1 ==0} bool;

也可以這樣:
  bool b1, b2;

>
>有什么分別??

〔長解說〕

在 C 及 C++ 的語法裡, struct/union/enum 關鍵字及 '{' 之間的符號叫做 tag:
  struct <tag> { ... };
  union <tag> { ... };
  enum <tag> { ... };

<tag> 本身是 optional 的, 如果沒有 tag, 你也可以定義物件:
  struct { ... } my_s_data;
  union { ... } my_u_data;
  enum { ... } my_e_data;

但每次定義物件都要重複整個 『struct/union/enum { ... } 』.

有 tag 則方便很多, 它可以代表整個 struct/union/enum { ... }.

但是在 C 語法裡, 單獨的 tag 不被當作類型; tag 之前必須有struct, union, 或 enum 關鍵字, "struct" + tag 才是完整的結構類型, 才能用來宣告, 定義物件:
  struct <tag> my_s_data;
  union <tag> my_u_data;
  enum <tag> my_e_data;

由於每次定義一個物件都要加寫 'struct', 'union', 或 'enum' 很麻煩, 所以一般會用 typedef 來定義一個別名:
  typedef struct <tag> { ... } my_struct_type;
  typedef union <tag> { ... } my_union_type;
  typedef enum <tag> { ... } my_enum_type;

當用 typedef 時, tag 的作用就不大, 可以省略. 因為你一旦 typedef, 'my_struct_type' 這個符號就代表整個 『struct { ... }』, 就可以當作類型使用:
  my_struct_type my_s_data;
  my_union_type my_u_data;
  my_enum_type my_e_data;


〔C++ 與 C 的不同〕
C++ 的語法加強了 tag 的作用, 在這裡, tag 被視為該 class/struct/union/enumtypedef 的符號, 可以直接當作類型使用:
  class my_class_type { ... };
  struct my_struct_type { ... };
  union my_union_type { ... };
  enum my_enum_type { ... };

  my_class_type my_c_data;
  my_struct_type my_s_data;
  my_union_type my_u_data;
  my_enum_type my_e_data;

所以在寫 C++ 程式的時候, typedef 一般都不會用在 class/struct/union/enum 上.

作者 : kevin20060520(kevin) 貼文超過500則人氣指數超過100000點
[ 貼文 718 | 人氣 132860 | 評價 60 | 評價/貼文 0.08 | 送出評價 60 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/25 下午 09:53:30
Thank you very much !
十分詳細和清楚, 十分感謝各位大大的回答!:)
 板主 : 青衫 , Raymond
 > Visual C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual C++
1 青衫 11070 
2 Raymond 10090 
3 Clier 7630 
4 小約翰 2500 
5 Cog 2030 
6 coco 1870 
7 aming 1410 
8 牧童哥 1400 
9 r2109 1380 
10 Akira 1350 
Visual C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.171875