作者 主題: [問題]布林資料型態不是只有0, 1兩種值嗎?  (閱讀 7573 次)

0 會員 與 1 訪客 正在閱讀本文。

asdf

  • 憂鬱的高中生
  • ***
  • 文章數: 115
    • 檢視個人資料
我寫了一段程式:

#include <iostream.h>

int main(void)
{
  bool a = a;
  bool b = b;

  cout << "a = " << a << endl;
  cout << "b = " << b << endl;
}

輸出結果:
a = 64
b = 27

可是布林資料型態不是只有0, 1兩種值嗎?
he important thing is not to stop questioning.
                                             -- Albert Einstein

日京三子

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 8829
    • 檢視個人資料
    • http://www.24online.cjb.net
引述: "asdf"
我寫了一段程式:

#include <iostream.h>

int main(void)
{
  bool a = a;
  bool b = b;

  cout << "a = " << a << endl;
  cout << "b = " << b << endl;
}

輸出結果:
a = 64
b = 27

可是布林資料型態不是只有0, 1兩種值嗎?


你輸出的好像不是布林代數唷!

我猜想, 你只是單純的語法錯誤.....
哈克不愛的多合一輸入平台----->新香草口味
過去的時間不斷流逝,抹去的眼淚已成追憶;
乾枯的雙手無力阻止,再會了我遠去的曾經。

螢火飛

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 400
    • 檢視個人資料
    • http://firefly.idv.tw
[問題]布林資料型態不是只有0, 1兩種值嗎?
« 回覆 #2 於: 2003-09-01 22:05 »
C、C++ 中 bool 的 false 代表 0,而 true 代表非 0 值,任何非 0(包括負數),都可以為 true,這與 java 是不同的。

而且您的 bool a=a, b=b 看起來就有問題,a 與 b 的初值未定,那就可能是任意值嘍!

qrtt1

  • 懷疑的國中生
  • **
  • 文章數: 73
    • 檢視個人資料
[問題]布林資料型態不是只有0, 1兩種值嗎?
« 回覆 #3 於: 2003-09-01 22:18 »
引述: "螢火飛"
C、C++ 中 bool 的 false 代表 0,而 true 代表非 0 值,任何非 0(包括負數),都可以為 true,這與 java 是不同的。

而且您的 bool a=a, b=b 看起來就有問題,a 與 b 的初值未定,那就可能是任意值嘍!


補充一下,java只能填true和false不能用0與非o
名稱上是boolean  ^^

螢火飛

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 400
    • 檢視個人資料
    • http://firefly.idv.tw
[問題]布林資料型態不是只有0, 1兩種值嗎?
« 回覆 #4 於: 2003-09-02 21:41 »
引述: "qrtt1"
引述: "螢火飛"
C、C++ 中 bool 的 false 代表 0,而 true 代表非 0 值,任何非 0(包括負數),都可以為 true,這與 java 是不同的。

而且您的 bool a=a, b=b 看起來就有問題,a 與 b 的初值未定,那就可能是任意值嘍!


補充一下,java只能填true和false不能用0與非o
名稱上是boolean  ^^

是是 :oops: 小弟疏忽了 :-p

qrtt1

  • 懷疑的國中生
  • **
  • 文章數: 73
    • 檢視個人資料
[問題]布林資料型態不是只有0, 1兩種值嗎?
« 回覆 #5 於: 2003-09-03 08:43 »
引述: "螢火飛"
引述: "qrtt1"
引述: "螢火飛"
C、C++ 中 bool 的 false 代表 0,而 true 代表非 0 值,任何非 0(包括負數),都可以為 true,這與 java 是不同的。

而且您的 bool a=a, b=b 看起來就有問題,a 與 b 的初值未定,那就可能是任意值嘍!


補充一下,java只能填true和false不能用0與非o
名稱上是boolean  ^^

是是 :oops: 小弟疏忽了 :-p


不會啦,只是我剛好知道啦!
沒有人是什麼都知的,像C++
我就不會><"

asdf

  • 憂鬱的高中生
  • ***
  • 文章數: 115
    • 檢視個人資料
[問題]布林資料型態不是只有0, 1兩種值嗎?
« 回覆 #6 於: 2003-09-11 20:28 »
引述: "螢火飛"
C、C++ 中 bool 的 false 代表 0,而 true 代表非 0 值,任何非 0(包括負數),都可以為 true,這與 java 是不同的。

而且您的 bool a=a, b=b 看起來就有問題,a 與 b 的初值未定,那就可能是任意值嘍!


我把每個英文字母都試了一次
每個字母都有其對應值
這些值應該不是隨機產生的任意值

執行結果:

a = 64
b = 27
c = 243
d = 112
e = 64
f = 9
g = 206
h = 200
i = 8
j = 4
k = 132
l = 182
m = 191
n = 255
o = 249
p = 216
q = 64
r = 27
s = 243
t = 112
u = 8
v = 4
w = 132
x = 160
y = 8
z = 4
asdf = 133

而這些值不是ASCII碼
它們到底是什麼意思?
he important thing is not to stop questioning.
                                             -- Albert Einstein

qrtt1

  • 懷疑的國中生
  • **
  • 文章數: 73
    • 檢視個人資料
[問題]布林資料型態不是只有0, 1兩種值嗎?
« 回覆 #7 於: 2003-09-12 10:26 »
引述: "asdf"
引述: "螢火飛"
C、C++ 中 bool 的 false 代表 0,而 true 代表非 0 值,任何非 0(包括負數),都可以為 true,這與 java 是不同的。

而且您的 bool a=a, b=b 看起來就有問題,a 與 b 的初值未定,那就可能是任意值嘍!


我把每個英文字母都試了一次
每個字母都有其對應值
這些值應該不是隨機產生的任意值

執行結果:

a = 64
b = 27
c = 243
d = 112
而這些值不是ASCII碼
它們到底是什麼意思?


您的程式可不可以借看一下?

asdf

  • 憂鬱的高中生
  • ***
  • 文章數: 115
    • 檢視個人資料
[問題]布林資料型態不是只有0, 1兩種值嗎?
« 回覆 #8 於: 2003-09-14 12:15 »
引述: "qrtt1"
引述: "asdf"
引述: "螢火飛"
C、C++ 中 bool 的 false 代表 0,而 true 代表非 0 值,任何非 0(包括負數),都可以為 true,這與 java 是不同的。

而且您的 bool a=a, b=b 看起來就有問題,a 與 b 的初值未定,那就可能是任意值嘍!


我把每個英文字母都試了一次
每個字母都有其對應值
這些值應該不是隨機產生的任意值

執行結果:

a = 64
b = 27
c = 243
d = 112
而這些值不是ASCII碼
它們到底是什麼意思?


您的程式可不可以借看一下?


#include<iostream>

int main(void){
  bool a = a;
  bool b = b;
  bool c = c;
  bool d = d;
  bool e = e;
  bool f = f;
  bool g = g;
  bool h = h;
  bool i = i;
  bool j = j;
  bool k = k;
  bool l = l;
  bool m = m;
  bool n = n;
  bool o = o;
  bool p = p;
  bool q = q;
  bool r = r;
  bool s = s;
  bool t = t;
  bool u = u;
  bool v = v;
  bool w = w;
  bool x = x;
  bool y = y;
  bool z = z;
  bool asdf  = asdf;

  cout << "a = " << a << endl;
  cout << "b = " << b << endl;
  cout << "c = " << c << endl;
  cout << "d = " << d << endl;
  cout << "e = " << e << endl;
  cout << "f = " << f << endl;
  cout << "g = " << g << endl;
  cout << "h = " << h << endl;
  cout << "i = " << i << endl;
  cout << "j = " << j << endl;
  cout << "k = " << k << endl;
  cout << "l = " << l << endl;
  cout << "m = " << m << endl;
  cout << "n = " << n << endl;
  cout << "o = " << o << endl;
  cout << "p = " << p << endl;
  cout << "q = " << q << endl;
  cout << "r = " << r << endl;
  cout << "s = " << s << endl;
  cout << "t = " << t << endl;
  cout << "u = " << u << endl;
  cout << "v = " << v << endl;
  cout << "w = " << w << endl;
  cout << "x = " << x << endl;
  cout << "y = " << y << endl;
  cout << "z = " << z << endl;
  cout << "asdf = " << asdf << endl;
}
he important thing is not to stop questioning.
                                             -- Albert Einstein

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
[問題]布林資料型態不是只有0, 1兩種值嗎?
« 回覆 #9 於: 2003-09-14 14:06 »
都說了是無意義了. 你管它出現什麼值 ?

bool a = a;
這是一個錯誤的寫法, 沒有人可能跟你說會出現什麼值, 因為在 c/c++ 中並沒有定義編譯器要如何處理.

所以, 任何值都是可能發生的, 今天可能是 1, 再跑一次可能是 2, 換到別台機器跑可能是 3....

請問, 你是要取一個亂數嗎 ? (可惜這個寫法也不一定是亂數, 或許某家編譯器會代用固定的值...)

結論是... 你的寫法對於 c/c++ 來說就是一種錯誤. (只是 c/c++ 是一個很 free 的語言, 所以編譯器最多只是發出一個警告跟你說這裡可能有問題.... 因為他合乎語法的規範)

沒有定義初值的變數, 本來就不應該讀取他的值出來....