FALSE が 0 なら TRUE は -1 が正しい
1 :
仕様書無しさん :
04/04/17 07:29 TRUE = NOT FALSE = NOT 0 = NOT 00000000B = 11111111B = -1
どぴゅっと2get
バカスレ認定
65535
10 :
仕様書無しさん :04/04/17 13:38
BASICはもとから真は-1だよ?
11 :
仕様書無しさん :04/04/17 13:40
VBのチェックボクースで悩んださ
>>11 マジックナンバーじゃなくてenum値使え
そういえばVB.NETにするときにRC1あたりで一時的にTrue = 1にしたおかげで 大反発を招いて True = -1に戻したいきさつがあったね。
14 :
仕様書無しさん :04/04/17 14:40
だってtrueが1だなんておかしいじゃん?
15 :
仕様書無しさん :04/04/17 14:48
False = 0 True = 0 ではない値 だよ。
16 :
仕様書無しさん :04/04/17 15:01
0ではない値 = NOT 0 = NOT 00000000B = 11111111B = -1
17 :
仕様書無しさん :04/04/17 15:01
TRUE = NOT FALSE = NOT 0 = NOT 0B = 1B = 1 アホ草
18 :
仕様書無しさん :04/04/17 15:06
>>17 アホはお前だろ?
その0は何ビットの型だ?
8ビットならNOT 00000000B = 11111111B = -1
16ビットならNOT 00000000 00000000B = 11111111 11111111B = -1
32ビットならNOT 00000000 00000000 00000000 00000000B = 11111111 11111111 11111111 11111111B = -1
どの場合にもしっくり来るのは-1
19 :
仕様書無しさん :04/04/17 15:11
>>18 1ビットにきまてるだろ。
もっといったら、
TRUE = NOT FALSE = NOT 0 = NOT 0B = 1B = 1 = -1
アホ草
20 :
仕様書無しさん :04/04/17 15:12
結局-1の方がいいってことじゃん。
21 :
仕様書無しさん :04/04/17 15:13
2の補数表現を勝手に仮定してはいけない。 1の補数表現ならFALSE=0のばやい、 TRUE=NOT FALSE=NOT 0B=1B=0=FALSE。
22 :
仕様書無しさん :04/04/17 15:16
if(a==TRUE) と書かずに、 if(a!=FALSE) と書けと言われた消防達でつか?
23 :
仕様書無しさん :04/04/17 15:17
1の補数表現でも2の補数表現でも 1ビット型で無い限り1にはならないんだよね。
24 :
仕様書無しさん :04/04/17 15:27
>>21 > 2の補数表現を勝手に仮定してはいけない。
C言語で~0が1の補数表現で0になることって
言語仕様的にありえるの?
要するに
>>1 は
論理型を符号無し整数の型にキャストするような
操作が必要となることは絶対にありえない
と主張したい訳だな?
>>25 たとえ符号なし整数型にキャストしても1にはならないけどな。
28 :
仕様書無しさん :04/04/17 15:49
お前ら馬鹿だな。 FALSE = NOT TRUE = NOT 1 = NOT 00000001B = 11111110B = -2 これが正解。
29 :
仕様書無しさん :04/04/17 15:54
>>24 大抵の環境、言語、DBで論理値 偽=0
真の値はさまざま
C言語ではもともと論理型がないが代わりにint型をつかい
偽=0、真=0以外 が慣例
Pascalは真=1じゃなかったかな。
UNIX(shell)も大抵真=1
exit(1)
30 :
仕様書無しさん :04/04/17 16:00
あれだ、1は上司に怒られようが、バグが出ようが if(a==-1) と書き続けてほしい
31 :
仕様書無しさん :04/04/17 16:01
if (a) じゃないの?
32 :
仕様書無しさん :04/04/17 16:03
if ( (a == 1) || (a == 2) || (a == 3) || (a == 4) || (a == 5) || (a == 6) || …
中の値に依存するコーディングする奴は死刑
>>29 exit(1) は偽。 if ./prog_exit_1 then echo "true"; fi に失敗する
VC++ではTRUEに1が定義してあったような。
36 :
仕様書無しさん :04/04/17 16:08
>>34 prog_exit_1 then echo 「True」
と書いておろうよ、自分で(w
37 :
仕様書無しさん :04/04/17 16:13
>>35 C++とCは違う
C的にはTRUEには0以外の値ならなんでもいいわけだから
1でも-1でもかまわない。VC++がTRUE=1なのは
インプリメンタ(実装者=M$)の考えによるものだろうね。
UNIXのシェルじゃ1が偽なのは間違いない
39 :
仕様書無しさん :04/04/17 16:19
>>37 >C的にはTRUEには0以外の値ならなんでもいいわけだから
お前の言う TRUE が何を指しているのか分からんが
C言語的には 3==3 は 1 になる事が保障されているぞ。
-1を32ビット符号なし整数変数に入れて
それをさらに64ビット整数に代入して-1じゃなくなってコケる
みたいなバグってやりがちだよな。
-1よりも1の方がその点は安全だと思うが。
まあ、結局のところは
>>33 が正しいんだが。
>>36 $ cat - > prog_exit_1.c
#include <stdio.h>
int main()
{
exit(1);
}
$ gcc -o prog_exit_1 prog_exit_1.c
$ if ./prog_exit_1; then echo "true"; fi
$
論理値を32ビット変数に入れるなんて酔狂なことをする奴はいない。
だいたい、整数型に入れてなんかに利用しようと思った時点で、 中の値に依存していることになる。
44 :
仕様書無しさん :04/04/17 16:26
くだらね。
46 :
仕様書無しさん :04/04/17 16:38
トゥルー
プログラムの中の値も大変だな・・・
>>29 > UNIX(shell)も大抵真=1
あ〜…、このへん面倒なんだけど、sh系とcsh系では
コマンド正常終了のときに返るステータスは0。
よく間違われるけれど、シェルスクリプトなんかでよく見るifは
真や偽を見ているのではなく、単に終了コードだけを見てる。0ならthenで0以外ならelse。
真偽条件式ではなく希望の条件のときに0を返すようなコマンドをわざわざ指定してるってことね。
ただ、exprコマンドあたりは内部でも返り値でも「成功」の時は1を、「成功でない」時は0を返す。ややい。
ttp://www.linux.or.jp/JM/html/gnumaniak/man1/expr.1.html
49 :
仕様書無しさん :04/04/17 16:50
>>49 「考えられる」と「仕様である」の違いが分かるか?
>>48 bash の if は 式が exit 0 すると true、0以外で false になるのは有名な話だな。
C言語とは見かけが逆。
52 :
仕様書無しさん :04/04/17 16:59
>>50 3==3 が1である保証ってのがどこにあるのか示して欲しい。
>>48 (・д・)ポカーン
>expr は以下の終了ステータスを返す:
>0: 式がナルでも 0 でもない
>1: 式がナルまたは 0
>2: 式が正しくない
とか書いてあるんだが…………
55 :
仕様書無しさん :04/04/17 17:05
なんだっていいじゃん大して変わらねーよ。
56 :
仕様書無しさん :04/04/17 17:07
そんなにやりたきゃ TRUE == 1 って T シャツ毎日着てろ。
中の値が真=実数、偽=虚数にされても依存しない実装ってできるか?
なんで虚数なんですか?
おまえら、 X=X+(K=29)-(K=28):Y=Y+(K=30)-(K=31) なんてコードを一回も書いたことがないのかよ?
63 :
仕様書無しさん :04/04/17 17:23
complex型のオーヴァーロードとか(w
64 :
仕様書無しさん :04/04/17 17:24
65 :
仕様書無しさん :04/04/17 17:25
>>62 ない。なんでN88Basicで←→↑↓なんだよ(w
66 :
仕様書無しさん :04/04/17 17:27
↓(ため)←→(P+K)
一画面ゲームも作ったことのないやつらか…フッ
じゃ、真=素数、偽=合成数でもいいや。そうされても中の値に依存しない実装ってできるか?
TRUEとかFALSEとか、関数仕様に「TRUEを返す」「FALSEを返す」と明記されていない限りつかわねーし。 関数仕様に「0を返す」「0以外を返す」なら「=0」「<>0」だろ(Cなら==0,!=0)
70 :
仕様書無しさん :04/04/17 17:37
同じ0の反対という意味なのに!0と~0の値が違うのはキモイ
>>70 >同じ0の反対という意味なのに
・・・勝手に決め付けるなよ
72 :
仕様書無しさん :04/04/17 17:44
>>72 ~0 は 0 のビットごとの補数
!0 は 0 の論理否定
同じではないと思うが?
>>72 つまりあれだ、1 & 2 と 1 && 2 の結果が違うのが納得行かない人?
if (&n72 == &n1)
率直にboolean型つかえよお前ら
78 :
仕様書無しさん :04/04/17 19:41
falseをフェールスと読んでたバカは素直に挙手
79 :
仕様書無しさん :04/04/17 19:42
finiteをフィニットと読んでたバカも挙手
intをイントと読んでたバカ・・・・・・はオレだ。
81 :
仕様書無しさん :04/04/17 21:54
intはなんて呼ぶんだよ?
82 :
仕様書無しさん :04/04/17 22:18
「イント」以外何と読む?
インティー
イントゥ
HWNDは?おれはハウンド。
87 :
仕様書無しさん :04/04/18 02:14
で、結局 FALSEが「ファルス」 TRUEが「トルー」 で良いんだな? 話を始める前に、それだけはハッキリしてくれよ。
フォルスとトゥルー
boolean型?。 なにそれ?
90 :
仕様書無しさん :04/04/18 02:33
お前はブー留台数を師欄馬鹿なのかと
お前はブール代数を知らん馬鹿なのかと
92 :
仕様書無しさん :04/04/18 02:40
booleanってなんとなくフランス語っぽいよね。
暴利やん
だってcには論理型なんて無いじゃないか
95 :
仕様書無しさん :04/04/18 03:40
オレ的にはTRUEは1だな。
TRUEが「0以外」なのはたとえば a = 0x5F; b = 0x20; if(a & b){ ・・・ } ↑みたいにマスク値とのAND演算でビットのOn/Offを TRUE/FALSEで得る場合などのためじゃないのかな。
97 :
仕様書無しさん :04/04/18 05:02
>>95 やっぱ真はnot 0でしょ、ってことで-1。
でも負数はいやーんなのでsignedにするというか、めんどくさいから例外投げておわり
TRUEが-1というのには納得できる理由があるけど、 TRUEが1というのはとくに理由は無くて たまたまそうしたってだけなんだね。
99 :
仕様書無しさん :04/04/18 05:30
>>96 論理式のときは「真=条件を満たしたとき」だからねー
>>98 not 0=-1だけど、過大解釈すればnot 0は0以外は全部真ってことでいいのでは?
>>99 いや、0以外は全部真ってのはいいんだけど、
真を表すというか真を数値にしたとき、定数の値とか、が
1になっている理由は特に無いんだよねってこと。
101 :
仕様書無しさん :04/04/18 05:59
>>100 1以外が欲しいときもあるからとりあえず1ってことで。
なんか戻り値-1だとエラーみたいでいやだし(笑)
というか-1をエラーと返す関数は山のようにある。
案外深い話題なのかも
WG19/やWG21/で聞いて見ると教えてくれるかな
>>101 でも本来真は0以外なんだから真を数値として使用するときは
真が1であることを前提にしちゃいけないでしょ?
103 :
仕様書無しさん :04/04/18 06:10
>>102 1だと決め付けるのは論外でしょ
真か偽かってことだけを得るなら、
if (a == 0) return a; /* さようなら */
としてしまえばいいんだろうけど、0を成功としている関数もあるから、やっぱコーディングによるよねー
個人的には0を成功とする戻り値はやらないですけどね。
抽象化汁
105 :
仕様書無しさん :04/04/18 07:59
二進数では0以外は1
2進数の0を全て0以外すなわち1にしたものを10進数で表すと-1になるね。
>>94 C99 には _Bool があるけどな。
>>96 とても軽い作業ではあるが、内部では !=0 判定してるけどな。
109 :
仕様書無しさん :04/04/18 10:51
>>106 10進数で表すと-1ってなんだよ。
ちゃんと勉強汁。
110 :
仕様書無しさん :04/04/18 12:34
#define TRUE (1==1) #define FALSE (1==0) TRUEが-1でも0でもどっちでも良いです。
>>109 はぁ? 0の反対。オールビットONは10進数で-1だろ?
ちゃんと勉強汁。
112 :
仕様書無しさん :04/04/18 12:49
115 :
仕様書無しさん :04/04/18 13:12
signed,unsignedを知らない超初心者ハケーン
116 :
仕様書無しさん :04/04/18 13:13
ついでに補数も知らないんじゃねえの?プ
117 :
仕様書無しさん :04/04/18 13:15
109 名前:仕様書無しさん :04/04/18 10:51
>>106 10進数で表すと-1ってなんだよ。
ちゃんと勉強汁。
-1と言われてなにも思いつかない超初心者晒しあげ
118 :
仕様書無しさん :04/04/18 14:56
面倒だから文字列型にして素直に"true""false"って入れれば良いのに...
>>119 そのような環境での開発、ご愁傷様
>>118 strcmpを使うこととなって、面倒なので却下
enumを使え
ビット演算と論理演算の区別も出来ないヴァカのいるスレですね。
論理演算の真は0以外ならなんでもいいんだから (ビット演算と同じ)全ビット1(-1)でいいじゃんという話。
124 :
仕様書無しさん :04/04/18 16:32
全ビット1=−1なの?w
えぇ。多くの環境で採用されているもっとも一般的な型(Cだとint)はそのように実装されています。
126 :
仕様書無しさん :04/04/18 16:54
つまり、全ビット1が−1と同じってのは 実装に依存するってことだよね。(2の補数) 1のようにTRUE=-1が正しいなんて思い込んでいると いつか痛い目に逢うわけだ。 俺は論理式の判定に1とか0とか-1は使わないな。
127 :
仕様書無しさん :04/04/18 16:57
>>111 >>117 お前ら超初心者だろ。10進数だろうが、何進数だろうが、
2の補数表現で-1だつうの。
勉強しなおせよ。
128 :
仕様書無しさん :04/04/18 17:03
Cの仕様はしらんが、経験上、 #define TRUE 1 #define FALSE 0 #define TRUE (1==1) #define FALSE !TRUE -1なんてありえない。 誰かつっこみよろ。
130 :
仕様書無しさん :04/04/18 17:07
C の場合、定義より 1 == 1 は 1 だから、#define TRUE (1==1) は無意味。 C の場合、定義より !(1==1) つまり !1 は 0 だから #define FALSE !TRUE も無意味。
131 :
仕様書無しさん :04/04/18 17:11
C の比較演算子はどれも、成り立つとき整数 1 を返し、成り立たないとき 0 を返す。 だから、こんなんだっていい。 #define TRUE (3 < 5) #define FALSE (32767 != 32767)
132 :
仕様書無しさん :04/04/18 17:12
>>130 無意味てか、明示的に論理演算の結果であるとことを示す場合に、
#define TRUE (1==1)
にしてもいいんでは?
#define TRUE 1
では、このTRUEが何かわからないので。
定義されてる値を気にしてる時点で程度が知れる(w
134 :
仕様書無しさん :04/04/18 17:13
間を取って、 #define TRUE (-1 == -1) #define FALSE (-1 != -1)
135 :
仕様書無しさん :04/04/18 17:14
なんだって大して変わりやしねーよ
136 :
仕様書無しさん :04/04/18 17:15
>>133 いや、C のマクロには型がないから、一応調べておかないといけないこともある。
138 :
仕様書無しさん :04/04/18 17:16
#define TRUE "true" #define FALSE "false" だったりしてな。
>>131 > C の比較演算子はどれも、成り立つとき整数 1 を返し、成り立たないとき 0 を返す。
普通に考えるとへんだよなぁ。-1にする理由はあっても1にする理由なんてないのに。
140 :
仕様書無しさん :04/04/18 17:17
>>139 じゃあ ISO の規格を決める人になって、変えてください。僕からもお願いします。
141 :
仕様書無しさん :04/04/18 17:19
>>140 どうやったらなれますか?
Cは得意です。
142 :
仕様書無しさん :04/04/18 17:19
>>136 具体的には?
オレ経験ないや。
ライブラリ関数やシステムコールがらみで定義されてるのは使い方決められてる
から迷うことないし。
144 :
仕様書無しさん :04/04/18 17:20
#define TRUE FILE #define FALSE FILE * だったりしてな。
145 :
仕様書無しさん :04/04/18 17:22
>>143 無神経に作られた昔のプロジェクトのソースを、仕様変更させられるときとか
大変だったりする。
今は C の案件はやらずにすんでるけど。
146 :
仕様書無しさん :04/04/18 17:22
定数を使えばいいのにね。 const int TRUE = 1; const int FALSE = 0;
>>140 逆切れすんなよw
なんか今の政治は間違っていると言ったときの
>>140 のセリフが手に取るように分かるw
148 :
仕様書無しさん :04/04/18 17:24
>>147 てか、本当に -1 になって欲しいんでしょ。
それが一番有効な方法なんじゃない?
もっと楽な方法があったら教えてよ。
世界中のコンパイラの規格変えるんだよ。
大変なことだよ。
149 :
仕様書無しさん :04/04/18 17:25
だだこねてないで、欲しいものは自分の手でつかめ。
>>147
150 :
仕様書無しさん :04/04/18 17:26
>>147 少なくともにちゃんねるでごねてても真が -1 に変更されることはないな。
>>149 世論という物を知っている? 自分の手で掴むための方法の一つだよ。
152 :
仕様書無しさん :04/04/18 17:27
真てか、比較演算子が成り立った結果が。
153 :
仕様書無しさん :04/04/18 17:27
>>151 じゃあさ、署名運動すれば? 今ならネットで世界中から賛同者を集められるよ。
そのログをもって ISO に乗り込めーー!
>>145 そりゃ使い方が判らないのであって、定義の値が判らない事自体が問題なのでは
なかろう。。。。
てゆーかドキュメント無いからソース追ってるだけと違うんか?(w
>>150 別に議論してもいいじゃん。
それとも議論を避けたい理由でもあるの?
156 :
仕様書無しさん :04/04/18 17:28
議論したくない奴はこのスレから消えれば良いだけ。 自分がやっていることはただの荒らしだってことに気づいてね。
159 :
仕様書無しさん :04/04/18 17:29
>>157 俺、別に 1 でもなんでもいいもん。
各言語の仕様書のとおりで文句ないです。
160 :
仕様書無しさん :04/04/18 17:30
つか、Cでやるのは無意味だろ。 新しい言語作って、その真を-1にすればいいだろ。 誰もそんな言語使わないけどな。
161 :
仕様書無しさん :04/04/18 17:30
荒らしは無意味だ。
162 :
仕様書無しさん :04/04/18 17:31
>>159 君にはなんの考えも無いということですか?
あぶないなぁ。グルがやれと言ったら何も考えずに実行しそう。
164 :
仕様書無しさん :04/04/18 17:31
N-BASIC もやで。
>>160 誰もCの仕様を変えれなんて言っていませんが何か?
166 :
仕様書無しさん :04/04/18 17:33
>>163 プログラミング言語の仕様に意義を持つことは、個人の社会的行動とは無関係だ。
167 :
仕様書無しさん :04/04/18 17:34
>>165 Visual Basic / N-BASIC / ...
168 :
仕様書無しさん :04/04/18 17:37
ネー ∧_∧ ∧_∧ \ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ・∀・) (・∀・ ) |< 集合体の利益のために、 ( )__( ) _| │ 個人を犠牲にするということか? _∧ ∧_∧ ̄ ̄ ̄/.//| \__________ ) ( ) /┃.| |  ̄ ̄ ̄\ )_/ |__|/ || ┃ |_)
>>166 言語仕様の意味を理解することは重要だと思うが?
言語仕様の意味すら考えないでプログラミングしている奴はただのコーダー。
>>139 >-1にする理由はあっても1にする理由なんてないのに
等と言いながら、ぬけぬけと
>>141 >Cは得意です。
と言い切る奴に初めて会った。
・・・俺のコレクションがまた1つ増えた。
171 :
仕様書無しさん :04/04/18 17:40
言語仕様の意味考えた程度では、やはりコーダ。
173 :
仕様書無しさん :04/04/18 17:42
ゴーダチーズってうまいよな。
>>170 俺は139だが141じゃないんだが?
しかも書いている文章に意味がまったくないし。
もっと冷静になれよ。君と違ってあいては複数だw
もうbool型のサイズ1bitにしてくれ
176 :
仕様書無しさん :04/04/18 17:43
std::vector<bool> 特化があるから、使いまわせば?
>>172 反論にはなってないの分かって言ってるんだよね?
179 :
仕様書無しさん :04/04/18 17:46
PG もコーダも、タイプするのを止めたらお金も止まるだろ。 どっちもどっちだね。
181 :
仕様書無しさん :04/04/18 18:15
>>175 そしたら問題解決だ(笑)
でも sizeof(bool)したらどうなるんだか。floatとかdoubleとかで戻り値帰ってくるとか(笑
182 :
仕様書無しさん :04/04/18 18:27
183 :
仕様書無しさん :04/04/18 18:31
>>181 それもそうだ。でも、boolは1バイトじゃない
>>181 ついでにsizeofの結果の単位をビットに変えれば問題なし
185 :
仕様書無しさん :04/04/18 18:34
>>184 過去のソースの互換性が全て損なわれるなー
186 :
仕様書無しさん :04/04/18 18:36
このスレって何の話をしてるんだ? TRUEが1なのか-1なのかその他なのか、すべては処理系依存だろう。 それとも「TRUEの値はこうあるべきだ」って話? だったらTrueの値はTrueだしFalseの値はFalseだろ。 なんでbool型で整数を表現しなきゃいかんのだ。意味がわからない。
ここは一足早くGW気分が味わえるインターネットですね。
>>186 >なんでbool型で整数を表現しなきゃいかんのだ。意味がわからない。
まあ、アセンブリなどの他言語とのインターフェースとかもあるから
「C言語では論理式の真値として1を返す」ということだけは
知っている必要があるけどね。
189 :
仕様書無しさん :04/04/18 19:12
知ってるも何もCやってたら常識だろ。
190 :
仕様書無しさん :04/04/18 19:52
とりあえず、0以外は真ってことでいいんじゃない? でもその扱いはプログラマ任せなわけだし。 boolは問題にならんでしょ。他言語とリンクしたりしなきゃ
すでに決まっていることを、再定義するかのような表現はやめてくれ 厨房が湧く。
192 :
仕様書無しさん :04/04/18 19:56
FALSEは0で、TRUEは奇数であって欲しい。
193 :
仕様書無しさん :04/04/18 19:58
194 :
仕様書無しさん :04/04/18 20:04
TRUEは素数であるべき
195 :
仕様書無しさん :04/04/18 20:12
196 :
仕様書無しさん :04/04/18 20:18
TRUE != FALSEなら値は何でもいいだろ
ネタにマジレスかっこいい
198 :
仕様書無しさん :04/04/18 20:23
>>196 それだ!そんで、どっかの厨房がNOT 0だから。。。とかやって戻る。
って俺か!
たまに魔が差して、 x = (i == 5) * b; なんてコードを書いてしまうことがある
200 :
仕様書無しさん :04/04/18 20:32
>>196 ???
TRUE = 3.14・・・
FALSE = 2.7・・・
議論することに価値を見出せない奴はくるなよ。
202 :
仕様書無しさん :04/04/18 20:47
別に
>>1 はCとかのTRUEの定義を変えろとか言って無いじゃん。
-1の方が理屈に合っているってことでしょ?
trueは1の方がタイポが少ないね。
>>196 TRUE = NOT FALSE の方が良いと思うが?
で32ビットレジスタにFALSE(0)を入れてそれをnotすると(ry
>>203 普通はtrueやfalseとタイプして1も0も-1もタイプしないだろ?
どうしても 2の補数表現でないと困る人がいますね。
>>199 不許可だ
x = (i == 5) ? b: 0;
たいしてかわんないような気もするけど
>>206 だってほとんどの言語は2の補数表現じゃん?
>>139 最小1ビットで表現できることに気付け。
っていうか、VB房はおいてきぼりですか、そうですか。 しかし、なんで、VBは、-1なんかねぇ。
213 :
仕様書無しさん :04/04/18 21:00
-1というからいけないんだよ。 素直に 00000000 00000000 00000000 00000000B = FALSE 11111111 11111111 11111111 11111111B = TRUE これでいい。これが10進数で表したときに -1になるのか4294967295になるのかそれとも その他の値なのかは言語仕様や処理系に依存。
215 :
仕様書無しさん :04/04/18 21:03
>>212 読んだけど、当たり前の事しか書かれてないんだが。
で、1ビットでいいと思うが。アライメントの都合で、何バイト境界で
置かれるかは知ったことじゃないが、使用するのは1ビットでいいじゃん。
「真か偽か」はコンピュータらしく「0か1か」にしろや
先に言っとくが、議論するつもりが無い人は消えてね。
218 :
仕様書無しさん :04/04/18 21:12
219 :
仕様書無しさん :04/04/18 21:14
いちいちこうしときゃいいじゃん。 #if defined(TRUE) # undef TRUE # define TRUE (-1) #endif
220 :
仕様書無しさん :04/04/18 21:14
しん【真】 うそ・いつわりのないこと。まこと。ほんとう。ほんもの。 つまり1
221 :
仕様書無しさん :04/04/18 21:18
そんなに -1 がいいなら BASIC 使ってりゃいいじゃん。 なんでも BASIC だと全ビット 1 の方が効率がいいからそうなってるって 書いてあったぞ。ベーマガがまだ「ラジオの製作」の折込小冊子だった頃。
222 :
仕様書無しさん :04/04/18 21:23
PC-8801FE 欲しかったなあ。あとスーパーMZも。
223 :
仕様書無しさん :04/04/18 21:24
>>220 私のことですか? どうもありがとうございます。
225 :
仕様書無しさん :04/04/18 21:33
このスレにここまでレスが付くとは思わなかった。
226 :
仕様書無しさん :04/04/18 21:34
a != bとあった場合、aのビット反転がbになるとは限らない。 論理式のnotとビット演算のnotは意味が違う。 そもそも、falseやtrueの値にこだわるのがおかしいね。 196の言うとおり、false != trureであればfalseが-1でtrueが0みたいな言語が あっても問題は無いだろ。
>>224 というわけで、TRUE = 1と結論が出たようですw。
じゃあ、次は偽(0)がスレ立ててくれw
>>227 えっ? 私が言っていることが、ほんとうなんでしょ?
TRUE=-1だよ。
>>229 そういうことは、-1をGETしてから言ってくれよ。
>>229 いや、1 が TRUE は 1 じゃなくて -1 だといってる時点で偽。
>>220 つまり1って。それ全然理由になってないじゃんw
真がまこと、ほんものってのはいいとしても、
まこと、ほんものが1とは結びついてないぞ。
233 :
仕様書無しさん :04/04/18 21:48
いや。別にTRUE=1ってのがネタならネタってことでいいけど・・・。
void func( int i){
int (*p)[2] = { "false","true" };
print( "%d is %s\n",i,p[i!=0] );
}
が動かなくともイイと?
>>1
>>235 救ってあげようか、どうしょうか。。。寝る!
TRUE=-1がネタだろ。
もし-1と1が逆の世界だったら
>>235 は
void func( int i){
int (*p)[2] = { "true","false" };
print( "%d is %s\n",i,p[(i!=0)+1] );
}
が動かなくともイイと?
>>1 と言ってるんだろうな。
>>235 236ですが、i!=0 が -1 になるという事ですね。スマソ。本当に寝ます。
240 :
仕様書無しさん :04/04/18 21:58
とにかくCでは0以外は真だからしょうがない。 ポインタ型が一番わかりやすいじゃん。NULL(0)以外はみんな真でしょ。
>>240 じゃあ-1でも良かったってことだよね?
>>235 構文を抜きにしてもBASICなら実際動かないわけで。
本来言語に依存しないはずのアルゴリズムなのに、
言語に依存する書き方はしたくないね。
243 :
仕様書無しさん :04/04/18 22:04
符号つきのポインタって・・
>>238 言ってる意味がわからんのだが・・・・
C言語しってるか?
いままでの資産どうするんだよ。
あと、-1とかほざいてる香具師、
unsigned のときどうするつもりなんだ・・・・
245 :
仕様書無しさん :04/04/18 22:06
>>241 そういうことになりますな。
答えを真と偽の二つに分けようとするからこういう議論続いてるんだよね。
アセソブラのときとかさ、よくffffffffhを代入するのに-1を入れたよね。
xor eax,eax
dec eax
とかさ。
>>244 誰も今から変えろ何て言って無いんだが?
やっぱり真偽値はtと()だよな。
248 :
仕様書無しさん :04/04/18 22:10
>>244 signedだろうがunsignedなら全部ビットが1なことに変わり無い!
>>244 > いままでの資産どうするんだよ。
VBはtrue=-1でVB.NETのベータ版で一時的にtrue=1に変更されたが、
同じ理由でVB.NET正式版ではtrue=-1にもどったのを知っているか?
250 :
仕様書無しさん :04/04/18 22:14
負債に利子が付いたということですな。
>>250 そういうことじゃないだろボケ。
むしろtrueが1ということの方が負債。
いくらtrueが-1が良いと言われても C言語はもう戻れない所まで来てしまっている。
>>248 処理系によっては、-1が符号ビットと1のものもあるし、
そもそも全部ビットを立てることは不可能なものもあるわけだが・・・
真偽値の中の人も大変だな
>>248 bool func( unsigned int i ){
return i != -1 ;
}
ふーん。
>247 lispientに用はねぇ。帰れ。
> そもそも全部ビットを立てることは不可能なものもあるわけだが・・・ 最下位ビットが立てることが不可能ならtrue=1は使えない罠。
>>255 何が言いたいの?
>>248 に反論するのならば-1代入した場合にsignedでもunsignedでも
全部ビットが1なことに変わり無いってことを否定する例を
あげなきゃいけないはずだけど?
258の主張にbooleanが含まれてないのは仕様ですか?
>>259-260 なんでそんな抽象的なことばっかり言うんだい?
論理的な説明は出来ないのか?
>>259 booleanがどうあるべきかの話を
booleanを使って定義しても無意味だろw
真が-1じゃなくて1である合理的な根拠は
>>40 だと思うんだけど。
>>42 別に8ビット変数に入れようが64ビット変数に入れようが構わんが、
要するに符号拡張がらみの問題が起こらないってことだ。
32ビット変数に-1を入れて、それを64ビット変数に 代入してもやっぱり-1なんだが? int i=-1; long j=i;
265 :
仕様書無しさん :04/04/18 22:42
ブール代数は 1,0のみ -1は存在しない。
数学的なブール代数の話と CPUの話をごっちゃにするなよ。
267 :
仕様書無しさん :04/04/18 22:44
曲がりなりにも高級言語でCPUべったりの設計するなよ
つーか、ブール代数ってのは2進数なわけで、 ブール代数でも00000000B の NOT は 11111111Bなわけで それを10進数で表したら全ビットONの値なわけで、 少なくとも1にはならない。
>>264 32ビット「符号なし」変数に入れてから64ビットに符号拡張すると
4294967295に化けてしまいます。
符号拡張という用語の意味ぐらいは理解しといてね。
>>266-267 つか、CPUでも、例えばintelだったらjzとjnzといった具合に
ゼロとそれ以外っていう実装をしてるんだけどね。
そもそも真偽値を符号なし変数に入れる理由なんてないだろ。
271 :
仕様書無しさん :04/04/18 22:49
>269 実装の問題ではなく、言語設計の問題ですよ。
>>268 ブール代数が2進数?はぁ?寝言言ってんじゃねえよ
>>270 君はバグを出したことが無いんだね。凄いなあ。
…って、まともにプログラムを書いたことが無いだけだろうけどな。
>>271 だから、言語設計は真を「0以外」としていて、CPUは真を「0以外」と
しているわけだから、結局CPU的にも問題ないじゃんってこと。
274 :
仕様書無しさん :04/04/18 22:52
------------------------------------------------------ ここまで読んだ。 結論。TRUEは-1が正しい。
>>272 ブール代数には0と1しかないだろ。言われなくてもそれくらい気づけよ。
276 :
仕様書無しさん :04/04/18 22:53
>>268 なぜ、そんなにビットがあるの?
真か偽かなんだから、1ビットでいいじゃん。
だから、0B NOT 1B
少なくともこの「1」が-1だとは思えない。
277 :
仕様書無しさん :04/04/18 22:54
0と1しかないからこそ、00000000Bとか、11111111Bといったものがありえないんですが。
279 :
仕様書無しさん :04/04/18 22:55
>>273 2進法で考えるとスレのタイトルどおりで、それが答えなんだよね。
intel系は符号付かどうかはレジスタではなくてニモニックがそれを判断
してフラグレジスタに書き込んでるし
>>269 の言うとおりなわけだよね
>>275 ブール代数には0と1の「二つのみ」を対象とした「数学的体系」である。
二進数は0と1を「任意個数」並べて「可算無限の」整数を
あらわす「数の表現方法」である。
まったく異なる。
>>276-277 仕方ないだろ。実装する場合にはint型とかに入れなきゃならないんだから。
1ビット型を用意していないのが悪い。
>>280 数学的体系とかぬかすなら最初っから実装の世界に持ち込まないこと。
おれは何が正しくてもかまわないんだが、 真偽値のみならず、エラー種別コードを設定する必要があるとき、 エラー種別コードに負数は使わないなあ
>>278 人格ではなくて経験の話をしている。
まともにC言語の経験があったら
>>270 のレスは出てこないだろ。
>>280 ビット演算は2進数の演算だから~0は-1になる。
論理演算はブール代数の演算だから!0は1になる。
なんだ、自然じゃん。
287 :
仕様書無しさん :04/04/18 23:17
だから、1や0や−1に特別な意味を持たせるなっつうの。
288 :
仕様書無しさん :04/04/18 23:20
------------------------------------------------------ ここまで読んだ。 結論。世の中に正しいものなんて一つくらいしかない。
289 :
仕様書無しさん :04/04/18 23:35
FALSEが0ならなんでもいいや。 でOK?
290 :
仕様書無しさん :04/04/18 23:45
いちいちこうしときゃいいじゃん。 #if defined(TRUE) # undef TRUE # define TRUE (-1) #endif
>>290 そして、
a = (b == c);
...;
if(a == TRUE)
というコードでドツボにはまるわけだな。
292 :
仕様書無しさん :04/04/19 00:03
>>291 でも「FALSE が 0 なら TRUE は -1 が正しい」んだから、そのコードの挙動は正しい。
>>284 言語設計における数学的妥当性なんて理解できないであろうヴァカはほっとけば。
>>291 TRUE と比較するような莫迦は
他のところでもドツボにはまるでしょう。
自業自得。
295 :
仕様書無しさん :04/04/19 02:20
もしTRUEを使わないとしたら if a=1 then (hit!) else (not found) コーデングしまつね。
296 :
仕様書無しさん :04/04/19 02:51
TRUE は !0 でつが、何か?
-1〜1以外の代入を行なってもコンパイルも通ってしまう以上、 FALSE==0 TRUE!=0 これ以外の解釈を行うのは馬鹿以外の何者でもない。
298 :
仕様書無しさん :04/04/19 03:13
297はアスペルガーだな。 そんなレベルの話してないよ。 その理屈ならTRUEが13536644564844とかでもいいわけだなw
もうTRUEのために争うのはやめて〜〜 こうしよう間とって木曜日をTRUEにするってのはどうよ
>>298 ・・・無問題だろ・・・・・・・・何言ってんのこの池沼
ここは香ばしいインターネッツでつね
302 :
仕様書無しさん :04/04/19 08:49
>>298 非0==真だから、キミの解釈は正しいよ。
今更なんだけど、
>>1 が C の話をしているとは到底思えない。
なんでこんなに伸びてるんだ(w 予想外の展開に杵ンカキコ
本当に暇なやつらだなあ。
307 :
BASIC使い :04/04/19 12:27
えっ? trueは元から-1じゃん。それが正しいのは言わずもがな。
回転ドアといい此処と言い、プログラマは異常に凝り性だと言う事が証明された!
LOGICAL 型は最下位ビットが 0 なら偽、1 なら真で 他のビットなんて見てませんよ?
凝らなかったから回転ドアのような事故が起こったのだと思うが・・・。
>>308 マ板に来るような連中は無知なくせに語りたがる、ってだけでしょう。
>>309 0 FALSE
1 TRUE
2 FALSE
3 TRUE
・・・
ってこと?
>>311 2ちゃんねるにくる連中はみんなそうだろw
>>312 です。あと、最上位ビットしか見ないのがあったな…PL/M だっけ?
>>311 には納得できるが。
>>310 にはむり、納得するには、凝ったから事故が回避できたと証明して。
>>316 事故が回避できた(起こらなかった)ことの
原因がなんであるかを証明するのは数学的に不可能。
数学的に証明できるのは事故が起きた場合の原因のみ。
>>317 では、プログラマの凝り性と、事故回避の因果関係はないと考えてよいかな?
321 :
仕様書無しさん :04/04/19 14:39
ん? まてよ? 例えば1ビットで話をしてみよう 0=偽 = 0 非偽=真 = 1 最上位ビットが立ってるとマイナスになる 全てのビットが立ってるから-1 ふむ、でも1だよな コレはもう 量子コンピュータの領域だ。間違いない
322 :
仕様書無しさん :04/04/19 15:38
0 FALSE 1 TRUE これでいいじゃん
>>321 みたいなバカはどうにかならんのだろうか。
>>322 いや。
0 FALSE
-1 TRUE
これでいい。
今のところ、どの言語でも「真」と判断される値として -1 が推奨されるな。 判ったか?>蟹飯&立地
326 :
仕様書無しさん :04/04/19 16:03
>>323 みたいな
正真正銘のクズをどうにかしてほしい
いくら仕事場で使い物にならないからって
2chで弁慶すんなクズw
327 :
仕様書無しさん :04/04/19 16:04
>>321 最後の2行でネタ確定じゃん
ネタをネタと見抜けないバカがくるインターネットじゃないですよ?
・煽られて逆ギレ
・追いかけて雪国
・ふりかけて御飯に
・ゆきゆきてネ申軍
・全ビット立てて-1
333 :
仕様書無しさん :04/04/19 19:15
奇数偶数じゃないと、1ビットのビットフィールドに入れるのが面倒くさい。
>>333 具体的に何が面倒くさいの?
変わらないと思うんだが?
335 :
仕様書無しさん :04/04/19 21:41
unsinedを知らないアフォが多いな。
数学的には0がfalse、trueは1。
数学の話なんぞしていない。
if(5){ 〜 } とか if(0x6fc8){ 〜 } のとき条件は成立するわけだから、 Trueは「非ゼロ」で問題ないじゃないの。
trueを実装するときどうするかの話でしょ。
>>338 {1,0}に演算+,*を定義する。+の単位元のようなものは0。*の単位元のようなものは1。
>>340 それだけの話だよな。
342 :
仕様書無しさん :04/04/19 22:15
実装による。。。 俺の持ってる論理学の本ならp=p=true(pは任意), false = -trueで定義されてたと思うけどね。
つか、TRUEは1のほうが便利だろ?
ときに、現在出回ってるプロセッサで、ゼロとの比較以外での 分岐を実装してるものって存在するの? 命令としては存在しても、内部的には引き算の後ゼロと比較するのが 大半だと思うんだけど。 正直、この話で紛糾する理由がよくわからない。
345 :
仕様書無しさん :04/04/19 22:29
-1固執房の書き込みばかり。
347 :
仕様書無しさん :04/04/19 23:07
二進数では0か1 BYTEでは0〜255 この基本をベースに考えるべき。 なぜにコンピューターでマイナス値をTRUEに選択するのか・・・ 数学では無いとか言ってる人がいたが・・・ 文学でもないんだよ。 コンピューターなんだ。 アセンブラ知らんのかな・・・
348 :
仕様書無しさん :04/04/19 23:34
-1を2進数で表記すると、電気的、視覚的に0の対極になるんだよ。 アセンブラっていうより、機械の美学だな。
349 :
仕様書無しさん :04/04/19 23:51
なんだって大して変わりゃーしねーよ。
350 :
仕様書無しさん :04/04/20 00:05
(signed)(TRUE + TRUE + TRUE) == -3 (unsigned)(TRUE + TRUE + TRUE) == 65533 なんかやだ
真が偽よりも小さいなんて直感に反していておかしい。
353 :
仕様書無しさん :04/04/20 00:47
>-1を2進数で表記すると、 これとかビットを全部立てるとかって奴、馬鹿すぎ もっと素直になれんかねー 歪んで裏読み過ぎ
354 :
仕様書無しさん :04/04/20 00:53
>>353 同感だ。
負数を2進で表記するなんてソフト開発技術者試験じゃないんだから必要ない
でしょ(笑
最上位ビットが立ってるレジスタを符号付きで認識するニモニックか、
言語系でsigned/unsignedが定義されてるかってことでさ。
TRUEとかFALSEとかとは別の問題の話だが、
>>354 >負数を2進で表記するなんてソフト開発技術者試験じゃないんだから必要ないでしょ(笑
signedとunsignedの混在が原因のバグってのはままあることだから
試験じゃなくても認識しておく必要はありますよ。
356 :
仕様書無しさん :04/04/20 01:42
>>355 singned/unsignedの混在は確かにアブナイ。ちと違う話だけどヲレは
嫌いだけど、const_cast(使わざるえないけど)、static_castを
積極的に使えというのも納得できるもんなー。
でもunsignedをsignedと思い込むことのほうがずっと危険だ。
論理演算と算術演算が混在してる時点で 何が起きても不思議じゃな… やめてくれ やめてくれ やめてけえれげばげば
358 :
仕様書無しさん :04/04/20 02:10
C++ でさ、 bool a = false; ++a; if(a) { std::cout << "a == true" << std::endl; } ってやると a == true って表示されんのな。
うん。 Warningを出してくれるコンパイラも多そうだが、通るには通るね。 ここでaにオーバーフローするまでインクリメントを繰り返したら、falseになったりするのかな。 実装依存、処理系依存なのかな。 boolとintの相互キャストなんてやったことないからワカンネ。 必要なら int a = ...; bool b = !!a; とかするし。 話は変わるが、 bool b; ... a += b ? 1 : 0; を、 a += (int)b; とか書いてしまう大馬鹿者を、ごくごく稀に見かけるが、 コンパイラの最適化によって前者のコードが後者相当に置換される 場合もあるみたいなのが恐ろしい。 少なくともC++においてはtrueは1だから、言語仕様の範疇ってことで 気にしなくていいんだろうけど…。
>>359 bool を int に変換すると 0 か 1 のどちらかになることが規格で保証されている。
…という事と、実際にコンパイラがそうやってるかどうかってのは別の話だからねえ。
後者を人が書いてしまうのは困ったちんだけど、 コンパイラの最適化については恐れる事ではないんでは?
362 :
仕様書無しさん :04/04/20 21:38
ハード的には電気が流れている状態が0で遮断されてるときが1。 なんかキモイよな。
363 :
仕様書無しさん :04/04/20 21:46
TRUE=-1にすると、下のようなTRUE/FALSE切り替え処理がバグるので不許可。 int flg=0; flg=1-flg;
お前アホウやろ
flg=-flg-1;
unsigned long l;
unsigned short s;
s = 1 == 1;
l = s;
if( l == ( 1 == 1) )
...
ふーん
>>1
367 :
仕様書無しさん :04/04/20 22:20
>ハード的には電気が流れている状態が0で遮断されてるときが1。 >なんかキモイよな。 屁理屈ばっか
>>363 アホか? trueはfalseの反対。falseはtrueの反対なんだから
true/falseの切り替えはnotすりゃいいだろ。
369 :
仕様書無しさん :04/04/20 22:38
>>362 コンデンサに蓄電されている状態が 1 で、蓄電されていない状態が 0。だから
電流は流れない。
370 :
仕様書無しさん :04/04/20 22:43
そもそも、電流(電荷)の流れと言うのは+から-ではなく-から+に流れている。 つまり流れている状態は-1と言うのが正しい。
>363 個人的には、Cなら3項演算子使ったほうがちったぁマシだと思うんだが。 value = value?FALSE:TRUE; これだったら別にTRUE=-1だろうとTRUE=1だろうと構わん。 >368 NOTって論理演算のNOTか?
>つまり流れている状態は-1と言うのが正しい。 なにがつまりだ。。。
373 :
仕様書無しさん :04/04/21 00:28
>>1 みたいな人間が使いにくいシステム・行政・サービス・商品を作るんだろうな。
変な哲学が入りすぎ、理屈こねすぎ、深読みしすぎ。
374 :
仕様書無しさん :04/04/21 00:30
>>370 > 「電流(電荷)」
はあ?
定義より、電流はプラス極からマイナス極に流れる。
電荷の流れのことを電流とはいわない。
しかも、コンデンサは静電誘導で電荷を貯えているので、電荷が流れることはない。
電界強度が変化するだけ。
375 :
仕様書無しさん :04/04/21 00:47
まあ、オレ的には・・・ IFを関所として解釈してみ。 1なら通行書1枚あり!OK!通ってよし子ちゃん!>TRUE 0なら通行書ないじゃん!ブー!他当たれや!>FALSE んでや、通行書複数枚で通すのってダサイじゃん? 通行書0で通すのって逝かれてる。アホ 通行書-1枚で通す関所ってキチガイやな。 やっぱ1で通すのが美しいんやな。 プログラムって感性、本能、芸術、センスが大事なんや! 歌と同じやな。自己表現や!わかるか? もっと直感・感情のままに打ちこむんや!いいなおまいら!!
今度はハードにトコトン弱い人が集まってきますた。
377 :
仕様書無しさん :04/04/21 01:05
ハードよりハートが大事なんや!
378 :
仕様書無しさん :04/04/21 01:06
理系思考と文系思考タイプの衝突か。。。
Cで書くのにTRUE/FALSEなんてまったく不要だろ 自前でいちいち定義して使ってんのか? VBならたまに出てくるけど何も考えず関数仕様にかかれてあるとおりに 解釈して使うだけ
レベルの低いVB厨が参戦 お前Cやったことないだろwwwww
正しいかどうかの議論は無意味だ 条件を示して、その条件下では適切かどうかを議論しろ
>>374 恥ずかしい奴だな。少しは勉強したらどうだ?
http://wannabe.fam.cx/document/el_basis/ 電流の方向
昔、電流はプラス電荷がマイナス極に引き寄せられ、マイナス電荷が
プラス極に引き寄せられて移動する現象であると考えられ、
「プラス電荷がマイナス極に引き寄せられる方向を電流の方向」と定めてきた。
しかし電子の存在が明らかになり、実際には「マイナス電荷を持つ電子が
プラス極に移動する現象」であることが判明した。
383 :
仕様書無しさん :04/04/21 01:58
電流はプラス極からマイナス極に流れるってのは(人間の)定義のお話。 電子の流れは無関係よ。
中学物理の復習キタ──────(゚∀゚)──────!!
>>380 VBは3ヶ月ぐらいしか触ったことないんだが
マジでCでTRUE/FALSE定義して使ってるやつがいるのか?
本来必要のない定義を持ち込んで混乱に陥ってるとしか思えない
386 :
仕様書無しさん :04/04/21 02:20
>385 安心しろ C99では正式に定義された
おおそうなのか じゃあもう明確に定義されてて 混乱する要因は完全に消滅してると思うんだが このスレはなにを議論してるんだ?
OK!俺の意見にあまりにも無反応なので、こうしよう サービスとして第ニ・第四土曜日もTRUEとします
falseはfalse,trueはtrue。 それ以外に使える言語はあるだろうが、それ以外に使っちゃいかん。 数値意識するような方はプロペラ付の帽子でもかぶってて下さい。
定義のない言語にて自己流の定義をしたい 複数の言語で共通の定義をしたい という無駄骨が好きな人が多いんでしょうか
391 :
仕様書無しさん :04/04/21 03:32
あくまで「オレ流」
>>344 何を言わんとしているのかいまいち分からないが一応紹介。
PowerPCの場合、コンディションレジスタには
Negative(N),Positive(P),Zero(Z)のフラグがあり
演算結果の負、正、ゼロに応じてこれらのフラグがセット/リセットされる。
条件ブランチは
Less than (N=1)
Less than or equal (P=0)
Equal (Z=1)
Not equal (Z=0)
Greater than or equal (N=0)
Greater than (P=1)
等の条件が使える。
393 :
仕様書無しさん :04/04/21 05:26
もしYESとNOを数値で表現するとしたらどうなる?
394 :
仕様書無しさん :04/04/21 07:41
>>387 少なくともC言語や特定の言語の仕様について語っているわけじゃない。
TRUEはどういう実装がふさわしいかということ。
だから「ちゃんと決まっているじゃん。」という意見は、
「そんなの分かってんだよ。」ということで問題外。
議論する価値を見出せない奴はこのスレにこなければいいだけ。
395 :
仕様書無しさん :04/04/21 08:16
>>394 ついでに特定のプロセッサってのも付加。
インテルIA-32だと真か偽かの判断はフラグレジスタがビットで持ってる。
そいつをJcc(NEAR系条件付きJMP)で飛ばして行き先が変わる
他のプロセッサはまた違うんだろうな
396 :
仕様書無しさん :04/04/21 08:17
FALSEはFALSE以外の何物でもなく、0にはなり得ない。 それが0だと言うのなら、それはFALSEでは無い。 TRUEはTRUE以外の何物でもなく、1や-1にはなり得ない。 それが1や-1だと言うのなら、それはTRUEでは無い。 実際にメモリ上にどう存在しようがかまわない。 TRUE = NOT FALSE FALSE = NOT TRUE の関係が保証されていれば良い。
>>393 あえて定義するなら
YES=TRUE
NO=FALSE
だろうね。
OKとかNGとかは紛らわしいんで使わないで欲しい。
isdigit()なんかは条件が成立すると比ゼロ。 strcmp()は文字列が一致すると戻り値がゼロ。 似たような条件判定する関数でも、 戻り値の意味が正反対だったりするので 時々こんがらがるときがあるな。
399 :
仕様書無しさん :04/04/21 09:00
そもそも
>>362 の言ってる事は正しいのか?
ハードに弱いので解説ちぼんぬ
strcmp()が返すのは真偽じゃないからだボケ エラーの時は0と非0色々でややこしいが
かなり大嘘
偽 = 0 真 ⊃ 1 真 ⊃ -1() ∴ 0 != n のとき、n は必ず偽でない。 1 != n のとき、n が真でないとは限らない。 -1 != n のとき、n が真でないとは限らない。
>>399 「“電気” が流れる」って辺りが、もう怪しい。
TTL に限っていえば
・出力トランジスタに電流が流れ込む→H
・出力トランジスタが OFF で、電流が流れない→L
だけど、それより電流が「次の段の入力→前の段の出力」に
流れるのがむしろ気持ち悪いと言えなくもない。
てかそもそも、大抵のチップは MOS (電圧制御) なんだけどね。
404 :
仕様書無しさん :04/04/21 11:55
電気の話はいらない。 グラマなんだし
>>386 C99に準拠しているコンパイラはあるか?
406はC厨
408 :
仕様書無しさん :04/04/21 14:30
>>382 君の勉強が足りない。
定義より、電流はプラス極からマイナス極に向かって流れる。
この場合 2 とおりの可能性がある。
ひとつめ。導線に起電力を接続した場合、導線中の自由電子がマイナス極から
プラス極に向かって移動する。これを、電流がプラス極からマイナス極に流れた
という。
ふたつめ。正電荷が東から西へ移動したとする。たとえば君がポリ塩化ビニルで
髪の毛を逆立たせると君は正に帯電する。君が東から西へ歩くとき、電流が
東から西へ流れたという。
つまり、電荷の正負の符号と電荷の流れる向きとが電流の流れる方向を決める。
ちなみに、メモリはコンデンサだから静電誘導で電荷を貯えている。
だから電流は流れるが電荷は流れない。
でんりゅう ひばなが からだをはしーるー
410 :
仕様書無しさん :04/04/21 14:43
>>382 電子がマイナス極からプラス極に流れている状態を、
電流がプラス極からマイナス極に流れていると言うのですよ。
HTTP_REFERERと同じくらい恐ろしいです。
410必死だな。 コンデンサの話をしているのはお前だけってことに気づけよw
>>411 つまり流れている物は世間の認識と逆。-1ということですな。
TRUEが-1であるとか気にするのはBASICの DEF FNA(X) = というやつだね。 サブルーチンに引き数を渡せないBASICで (救世主的な?)引き数が使えるユーザー定義関数。 これに条件分岐を入れ込んだ式を書いて利用する事も多く見受けられる。 そのBASICのバージョンアップの際にTRUE=-1からTRUE=1になるなんていうのは 言語道断であるが、そうでなくてどちらかに固定されるなら -1でも1でも良いとは言える。
TRUEは-1の方がコンピュータっぽくて良いよ。
>>409 じろー ちぇんじー きかいだー
>>413 正孔がプラスからマイナスに流れている、と
見ることもできます。
いっぱい釣れた!!プ
おまえら、良くもまぁこんなくだらない内容で盛り上がれるな…。 なんでそんなに暇人ばっかりなんだよ。w にんげん、もう少しまともな事で議論すべきだと思うぞ? いってみれば、おまえら全員バカばっか? ストレスたまってんのか? レンコン大好き。
419 :
仕様書無しさん :04/04/21 15:38
水素イオンが東から西に流れるとき、 電流が東から西に流れるという。
420 :
仕様書無しさん :04/04/21 15:44
もうTRUEは-1でいいじゃん。
421 :
仕様書無しさん :04/04/21 15:49
>>94 classを作れはboolean型は作れる
422 :
仕様書無しさん :04/04/21 15:51
量子力学上、 シューレディンガーの猫のように死んでもいるが同時に生きている猫を 再現したければ 生きている 1 死んでいる 0 シューれデンガー状態 2 が正しい。
423 :
仕様書無しさん :04/04/21 15:51
>>421 C言語にはclassなんてありませんよ :-)
>>422 だれも量子力学の話なんかしてないんだが?
426 :
仕様書無しさん :04/04/21 15:53
427 :
仕様書無しさん :04/04/21 15:53
428 :
仕様書無しさん :04/04/21 15:54
>>425 三進法の話をすれば量子力学の話は必然的に出てくる。
おまえも量子コンピュータに備えて三進法に慣れろ
>>419 ゲルマニウム原子から放たれた自由電子が西から東に移動するとき
尾は東。
>>428 お前こそ量子コンピュータを勉強しろ。
量子コンピュータは3進法じゃない。
シュレディンガー状態というのは
0でもあって1でもある状態であって2ではない。
432 :
仕様書無しさん :04/04/21 16:01
最新メモリはガリウム、アルミニウム、ヒ素を使って作られるんだよ
> 昔これ(BASICでTRUE=-1になっている)を知った時、 4 ちょうどメモリのパリティについても知った頃だったので 1 信頼性向上の為の策かと思った。 8 なんらかの外敵要因でビットが反転してしまった場合 1ビットでしか情報を持っていなければ そ ビットが反転したら真偽が全く反転してしまう。 う それに対し8ビットで情報を保持していれば か 1つくらいビットが反転しても対処法が考えられると。 も 例えば ね 00000000BならFALSE 。 11111111BならTRUE で処理し、それ以外ならビットで多数決を取って真偽を決めるとか。
なにくだらないことを議論してるんだ?
プログラマなら
>>396 の解釈で必要十分じゃないか。
論理値を数値に変換するなんて美しくないぞ。
どうしても必要ならそのときどきで
#define BtoV(b) ((b) ? 1 : 0)
または
#define BtoV(b) ((b) ? -1 : 0)
とでもしておいて好きな方使えよ。
>>434 それは代用になってない。2は0でも1でもない。
しかし、0でもあって1でもある状態と言うのは、
0でも1でもある。
量子力学は理解しにくいからね。2で代用なんて全く分かってない証拠。
438 :
仕様書無しさん :04/04/21 16:07
>>435 がC言語で論理型として機能する構造体を披露してくださいます。
439 :
仕様書無しさん :04/04/21 16:09
わくわく。
440 :
仕様書無しさん :04/04/21 16:17
量子コンピュータが絡んでいるので盛り上っているのかもしれないage
量子かわいいよ量子
計算機屋なら、トライステート使え。
計算機屋でないのでトライステートがわかりません! 中間状態があるメリットってなんですk?
445 :
仕様書無しさん :04/04/21 21:02
中間管理職があるメリットと一緒
南半球では太陽は西から上るらしいよ。 コリオリの力のせいなんだって。
ふと「シュレディンガーのギコ」でぐぐると やっぱり引っかかるわけだが。
これほど空疎な議論のスレもめずらしいな モー娘のだれが一番かわいいかなんて議論のほうがまだ実があるんじゃねーのw
あややかわいいよあやや
3時だYo
って、まだ2時過ぎなわけなんだが。。。
453 :
仕様書無しさん :04/04/22 06:25
1はスルーの方向で。
454 :
仕様書無しさん :04/04/22 09:52
1はスルー? ということはTRUEは-1ということだな。
>>453 #define THRU 1
なのか、
#define ONE THRU
なのか、はっきりしる!
#define SUBE_SUBE
>>444 マジレスしちゃうと、「中間状態」ではない。
H でも L でもない、Hi-Z。
>>437 2で代用して計算するという方法も悪くはないかと
量子コンピュータは、どっちかってーとアナログなんだが。
>>444 マジレスしちゃうと、8つの信号で6561通りの
状態を表すことが出来てしまうから。
FALSEが43でTrueが-107 いまオレが決めた。みんな従え。
>>461 まあ、そんな言語がひとつくらいあってもいいかもな。
FALSEとTrueなのか 分かりにくい言語だな
465 :
仕様書無しさん :04/04/23 01:57
味方と敵でもいいよな。 正義と悪とか。
表と裏 昼と夜。
ちんことまんこ どっちがFALSEでどっちがTRUEですか
そりゃやっぱり立ってる方がtrueでしょう。
>>467 どっちがどう、ってわけじゃない。論理値は「状態」を示しているからな。
ちんこだって TRUE のときもあれば FALSE の時もあるさ。
そこで真理値表。
♂ ♀
F F FALSE
F T オナーニ
T F オナーニ
T T セクース
やっとマ板らしくなってほっと一息。w
なんでBASIC系って-1かと思っていたら 理屈を考えると良く出来ていると思う。 逆に1である理由がわからんな。
473 :
仕様書無しさん :04/04/23 18:59
FALSE = 0 TRUE = (unsigned)1
だいたい、NOT 0B なんて式として間違っているだろう。 NOT ってのは、論理演算子なんだから、0B を修飾できるわけね〜よ。
いま474がいい事言った...?
量子コンピュータを三進法とか言ってる香具師、初めて見た…
>>474 BASIC の NOT は、ビット単位の反転を行う算術演算子。
ちなみに C では 論理否定演算子 は !x のように使う
そもそも算術演算子と論理演算子の二つに分ける理由は無い。 アセンブラだって一種類しか無いじゃん。 スマートじゃないんだよな。そこがCの冗長なところ。
大半の計算機側がbez、bnez、その派生命令で条件分岐してる以上、 trueを特定の値に定めようとするのは、言語層なり、もっと上位の 層の好きずきの話。 漏れみたいな下賎な組み込み野郎には関わりのねぇこって。
流れぶった切ってすまないが聞いてくれ。 ブール代数、ブール代数と言うが、我々が用いているブール代数は、 実はブール代数の限定された一部でしか無い。 数学的には、 例えば0と-1を除いて恒等写像、0は-1に移り、-1は0に移る写像を考えても、 以前のブール代数から新しいブール代数を導く事が可能だ。 問題は計算機でそれを実現する事が不可能だと言う点に尽きる。 よってブール代数と言わずにブール計算と言うべきなのだ。 人間どうしがお互い、本当には理解する事が不可能な理由もここにある。
>>479 それをいえば、構造体もクラスも必要ないな。
構造体やクラスや論理演算子が存在するのは、
それがあった方が分かりやすいからなんだよ。
ああ、喪前には分かりにくいのかもしれんが、
それは喪前が言語設計者が想定したプログラマの標準以上に
ヴァカすぎるからってだけだ。
>>481 厳密に言えば、ブール代数のモデルを数体系の上で構築するときに
偽を0真を1にするのが普通だってことだな。
ブール代数としては>461でも正しいモデルを構築できる。
です。 それからC言語の、「FALSEが0で、それ以外はTRUE」の根拠は ブール代数構造として解釈するよりも、 NULL+平衡二分木構造にあるんじゃないかと言う気がする。 深さnの平衡二分木は(n+1)ビットで表現出来る、 2の(n+1)から1を引いた数の濃度になっているはずだから。 ただ、不勉強なので私はまだ理解してないのですが、 2の補数は一体どんな数学的構造に依存して定義されるのか。 その辺りをもうすこし突っついてみたいなと考えております。 どなたか御指南賜わりたい。
>>482 > それをいえば、構造体もクラスも必要ないな。
> 構造体やクラスや論理演算子が存在するのは、
> それがあった方が分かりやすいからなんだよ。
構造体やクラスがあった方が分かりやすい理由はわかる。
では論理演算子があったほうが(正確には論理演算子と
算術演算子の二つに分かれていたほうが)分かりやすい理由なに?
>>484 座標系(って用語で良いのかな?)に依存する概念と独立する概念。
違い自身は確かにあると思います。
一枚の絵にする事は、不勉強なのでまだ出来ていませんけれど。
>>484 >では論理演算子があったほうが(正確には論理演算子と
>算術演算子の二つに分かれていたほうが)分かりやすい理由なに?
お前のいう、「分かれている」とは一体どういう意味だ?
両方ともC言語上の意味論的には
「整数の引数を1つ若しくは2つ取り、1つの整数を返す」演算、
と見ることができると思うが。
>>479 >そこがCの冗長なところ。
他の言語を知らないなら
そう言えばいいのにー
>>477 すくなくとも「TRUE = NOT FALSE 」の NOT と
「NOT 00000000B = 11111111B 」の NOT は別の演算子になる。
だいたい「FALSE が 0 なら」とかいう前提は、他のいろんな
暗黙の前提事項を含んでいるわけだよ。それを明らかにせよ。
ゼロ以外がそれに相応しくないから。 実装系ごとに値を変えて誰か得するのか。 まさか計算機に専用レジスタ切られてるの知らない奴が 語ったりとかしてないだろうな?
>>489 >実装系ごとに値を変えて誰か得するのか。
得をする計算機があるやも知れず。。。
無駄に規制をして計算速度を落とす可能性を生むのは、Cの哲学に反するはず。
>まさか計算機に専用レジスタ切られてるの知らない奴が
「レジスタを切る」という言い回しは初めて聞いたが。
>>489 人間が機械に合わせて思考する暮らしって、人間が得をしていると思う?
恐らくIntelやMSの企業戦略の中に
世界中の経済機構をアメリカのWASPが支配する。と言う意識はあると思う。
何故、区間[0,1)の計算機ではなくて、整数型なんだろう。
>>490 >「レジスタを切る」という言い回しは初めて聞いたが。
ゼロの使用頻度は極端に高いのでゼロ専用レジスタが
R0や特別枠に用意されるのは珍しくもなんともないと思うんだが
そういう意味じゃなくって?
>>491 >人間が機械に合わせて思考する暮らしって、人間が得をしていると思う?
話が逆。
機械を人間に合わせるためのプログラミングに、現在のコンピュータ
アーキテクチャで不足がないから、置き換えが進んでないってだけの話。
デジタル技術が浸透するに至った歴史からほじくり返すつもりか。
シャア専用レジスタ。 3倍速! しかも赤い!
>>483 >NULL+平衡二分木構造にあるんじゃないかと言う気がする。
深く考えすぎ。
単に、a==b?みたいな判定をする時にa-b==0?ってやるから
0を特別視するのが便利だってだけ。
>2の補数は一体どんな数学的構造に依存して定義されるのか。
mod 2**n の加法群
>>491 >何故、区間[0,1)の計算機ではなくて、
アナログコンピュータかよ。 オペアンプでも弄ってろ。
>>489 >まさか計算機に専用レジスタ切られてるの知らない奴が
>語ったりとかしてないだろうな?
実際には「比較的最近の」プロセッサにはゼロレジスタを持っている物も
珍しくはない、が正解だけどな。
実際、自分自身とxor取ってゼロを作る必要があるプロセッサも多かった。
ハード実装だろうとマイクロコードによる実装だろうと、比較命令の内側では
最終的にゼロとの比較が行われてるのはまず間違いないが。
そういえば昔は、ロジックをいじくって判断文を「0かどうか?」という 式にできたらそのほうが処理が速くなるって話をしてたなあ
まあ、「aとbは等しいか」は「aとbの差はゼロか」に帰着できるからね。
>>492 >話が逆。
>機械を人間に合わせるためのプログラミングに、現在のコンピュータ
>アーキテクチャで不足がないから、置き換えが進んでないってだけの話。
「機械を人間に合わせる」と言う時の「人間」とは何かと言うと、
労働者としてのプログラマであって資本家としてのプログラマじゃない。
その結果、短期的にブームとなるコードは粗製乱造されるけど、
結局は資本の論理に振り回されてしまう。
>>495 >アナログコンピュータかよ。 オペアンプでも弄ってろ。
上に障害物があって底には障害物が無い、鴨居だらけの通路に、
頭をぶつける事無く潜り抜けるのに
適しているのは、身長が低い奴。つまりASCIIコード。
せめてメッシュの細かさで、ろ過させるようにしてやれば、
ASCIIの呪縛に縛られずにすむ。
0.5の子供は左が0.25、右が0.75と言う風に平衡二分木にしてやれば、
ビット数が無限大に行くにつれて実数の完備性から(0,1)へ近付くだろう。
例外は0で、平衡二分木とは関係が無いし、
位相的にも開集合(0,1)の内点ではなく、境界上に位置している。
終端符号としてはふさわしい。
とった?
定規の上に宇宙を並べるって話だな。 で、実装例がどこにあるんだ?
実装と言って良いのかは判らない。ただ、 メモリ再割り当てアルゴリズムで新しいサイズは 元の割り当てサイズの倍の領域を割り当てる。と言うのはあった。 それと文字コードそのものに実装も何も無いような気もする。
つかまぁ、纏め上げられていない話を幾ら繰り返しても 余りメリットは無いかも知れない。少なくとも自分は余興として この手の話題を上げる事はあってもスレ立てしたりはしないからね。
>実装と言って良いのかは判らない。ただ、 >メモリ再割り当てアルゴリズムで新しいサイズは >元の割り当てサイズの倍の領域を割り当てる。と言うのはあった。 そ ん な こ た あ 聞 い て ね ぇ よ メジャーの上に森羅万象を詰め込みきった間抜けはこの世にいるのかっていってんの。
モデルは現実を単純化したものだからねぇ。 精密すぎるとモデル化する意味が無いし、単純にするとモデルから漏れた奴が俺達の足を引っ張る。。。。 因果な商売だ。
むしろモデル化自体がこの商売の実体だろう。 手段と目的を混同するからデタラメなことになるんだ。 そんなんでも食っていけるんだから、ある意味ボロい商売でもある。 で、話を戻すんだが、trueが-1固定なのはモデルとしてどうなんだかね。
実装がどうのこうのと言い出したら、 もうその時点で駄目って結論になってしまうんだよ。 てか488が正解。
というか、 TRUE = 0以外全て FALSE = 0 でないの? つまり両方とも正解なんでは?
>>508 君 の い う と お り だ ね 。 そ の と お り 。
だ か ら 邪 魔 す ん な 。
OK?
510 :
仕様書無しさん :04/04/26 02:52
要するにさ、TRUE は 0 以外の何と比較しても TRUE と等しければいいんだよ。
511 :
仕様書無しさん :04/04/26 02:53
そういうように == 演算子をオーバーロードすれ。
そもそもTRUE/FALSEが数値になるということがおかしい。
513 :
仕様書無しさん :04/04/26 04:01
そんなこと言ったってコンピュータは数値しか扱えないよ。
数値すら扱えないというのが要では?
>>513 ビット列を必ずしも数値と見る必要は無い
>>512 C なんて、int も char も _Bool も
分類上は整数型だもんねぇ。
そういや FORTRAN の .TRUE. や .FALSE. は
整数に変換できたっけ?
別にCの話をしているんじゃないよ。
まぁ、お互いに奥の手を隠しながら匿名で議論しても 余り得る事は無いワナ。
ていうかこの議論にもなっても無いへりくつ問答に 得る所を求めてるのかと、君は! 釣りスレだとオモッテタヨ
523 :
仕様書無しさん :04/04/27 21:22
別に-1でも1でもどっちでもいいんだよ。 true falseなんて要するに二進数。 0と-1だろうが0と1だろうが、 どっちもビットが立っているか倒れているか の二つの状態を表す記号に過ぎない。 ○と×でも無問題。
もう50回ぐらいループした?
10レスで1ループの勘定か。 進行早いなあ。
悲観論者:TRUE=0 楽観論者:TRUE=!0
まずもって、TRUEもFALSEも二進数じゃない。
528 :
仕様書無しさん :04/04/27 22:22
二進数じゃない。 二進法だ!
529 :
仕様書無しさん :04/04/27 22:48
じゃあ true が 1 で false が -1 ということで。
TRUEが1、FALSEが0 真偽には2通りしか必要ないから、本来1ビットで表すべきだろう。 従ってTRUEは-1でも1でも正しい。
531 :
仕様書無しさん :04/04/28 00:25
>>530 メモリが1GBがあたりまえのご時世にビットはナンセンス。
1ビットは扱いが無駄。それに変数は結局メモリでスタックに確保されるから
アライメントは環境依存だけど4とか8バイトだったりする。
でboolはCから見れば1バイト。でもって、!0が真だから-1。unsigned
がいいなら255。ついでに1〜255はみんな真。
532 :
仕様書無しさん :04/04/28 00:39
>>531 set<bool>とかmap<bool>とか。
メモリがいくらあろうが8倍違うのは変わらん。
533 :
仕様書無しさん :04/04/28 00:42
もちろん用途によるが8倍を笑うやつは8倍に泣く。 つまらんな…
534 :
仕様書無しさん :04/04/28 00:51
どうしても1ビットにこだわるならビット配列使えばいいけどさ
535 :
仕様書無しさん :04/04/28 01:00
でもさ、ビルドするとアライメントされるんだよ。意味無いだろ。 __volatile__ とか連呼して最適化を阻む?
536 :
仕様書無しさん :04/04/28 01:32
FALSEは0であり、TRUEは非0である。 この「命題」を満足させる値は0以外なら何でもよい。 これは「法則」であり、1つの「解」です。 これを無視して、1だ−1だと云ってる人々は、つまり「実装」を 語っていることに気がつかないのかね? 電子の世界で「なんだか不定なんだけど0以外であるTRUE」 ってぇのは存在出来ないわけ。 白黒ハッキリとしてなきゃいけない世界だからね。電気信号的 にさ。 0以外に変化し続ける値というものがあればそれをTRUEと 呼んでもいいかも知れないが。 元々、TRUEを電子世界で完璧に表現することなど不可能な わけですよ。 だから、実装として非0である値をベンダーが適当に決めて使用 している。それだけ。 つまり、何が言いたいのかとい(ry
538 :
仕様書無しさん :04/04/28 02:19
偽=0、真=非0。非0がどんな値かはベンダが決めればよい話。 実装が気に入らないなら自分で処理系を作ればよい。
540 :
仕様書無しさん :04/04/28 03:13
>>537 電子の運動量を知るためには、電子がどこにあるのかまったくわからなくなるし、
電子の位置を知るには電子の運動量がまったくわからなくなる。
電流は電子の運動量に帰着し、電圧は電子の位置に帰着するから、
はっきりしたことは何も言えない。
ブール代数のIdentity Mapなんてのは関係なく普通に 単位元とかそういうの考えたらfalse 0 true 1が自然。
542 :
仕様書無しさん :04/04/28 05:48
>>537 > これを無視して、1だ−1だと云ってる人々は、つまり「実装」を
> 語っていることに気がつかないのかね?
最初っから実装を語っているのですが何か?
言語も指定されてないのに仕様でも語る気ですか?
気に入らない上司のTRUEにTRUEと答えてたらyesマンにしかなれんわな。
544 :
仕様書無しさん :04/04/28 06:27
ここは発想を逆転させてだな。 TRUEを0、FALSEを0以外とするのが一番いい。 だってif(1==1)がTRUEというのは1と1の差が0のときだろ?
差を口実にするのは価値観の多様性に反する。
意味不明w
実装者が 「これが正しい」 と言えば、それが正しい。
やっぱり政治スレになったな。権力闘争に励めよ諸君。
549 :
仕様書無しさん :04/04/28 07:52
#define TRUE -1 #define FALSE 0 #define ON 1 #define OFF 0 #define DATA_OK TRUE #define DATA_NG FALSE #define RET_OK 0 #define RET_NG 1 あーもう!!!!
ハードコーディングは定説だよな。
>>542 何における実装を語りたいのかを統一しない状態で話してる癖に
偉そうなことをいうな。
そんなケースバイケースの話してて楽しいのか?そうですか。
邪魔したね。
つーか、0ならTRUE、 それ以外はFALSEだろうが。 頭わりぃなぁ。
>>542 ネタにマジレスですか。よーし俺もマジレスしちゃうぞ。
>>537 >白黒ハッキリとしてなきゃいけない世界だからね。電気信号的
>にさ。
もう少し勉強しましょう。
何て言うか。 せめて岩波数学事典を解説書無しでスルッとよんでスルッと 理解出来る位の人と話したいよね。
-1が合理的だったとしても、
>>366 が実装上良くないすばらスィ例を出してるけど。
1ではこのような事が起こらないと思ふ。
>>556 …
うぜぇから、こっから先 C は除外な。
>>556 そういう都合のいい例を出されてもね。
まずunsignedに代入する理由を答えてもらおうか。
そもそもbool型が無いからintなどで代用しているわけで代用する型は一つで十分。
bool(の代用型)をintやlongやshortと比較・代入する必要は無い。
>>558 それでは、TRUE が 1 の時の都合のいい例を出してください。
出せないとすると、言語仕様としてはどちらが良いですか?
>>555 専用スレ立てれ。
ていうかこのスレわけわかんない。
みんな勝手な方向いて勝手な電波受信してるみたい。
寄生獣の会合?
>>558 もちろん必要は無いな。
ところで、バグってのがなぜ起こるか知ってるか?
何て言うか。 せめて岩波数学事典を解説書無しでヌルッとよんでポッと 理解出来る位の人と話したいよね。
>>561 6:一見関係ありそうで関係ない話を始める
「ところで、カモノハシが卵を産むのは知っているか?」
7:さらに自作自演でノリ突っ込み 「知らん。カモノハシが毒針持ってるのは知ってる」
565 :
仕様書無しさん :04/04/28 20:25
>>537 > 白黒ハッキリとしてなきゃいけない世界だからね。電気信号的にさ。
いや、そうじゃなくて集合論的に考えれば問題ないでしょうが。
「Aさんは男だが、Aさん以外の全員は女」
これと同じことだよ。
つまり0でないものはbool値として評価するとすべてTRUE
なぜそれで納得できないのかが不思議だ。
>>563 ,564
いや詭弁は大切だぞ。
詭弁の特徴を使って分析したら、
そもそも新天文対話ですら論破出来るんだよ。
567 :
仕様書無しさん :04/04/28 22:28
Cでは処理速度的にintが最良なんだから、BOOLをintで代用してくれた方が良いって話だろう。 さらに、0か否かの比較が最速だろう。 理解に苦しむ事もない、バグの可能性も最小、糞人間は死んで下さい。 と何となく燃料追加してみるBOOL
0は0ではない。-1だ。と更に煽ってみるBOOL
>>567 その文にはどこにも-1を肯定も否定している所が無いのだが?
関係ない話題。スレ違い。
570 :
仕様書無しさん :04/04/28 22:43
>>569 0か否かって書いてる時点で、TRUE==-1固定ではないって意味だろ。
氏ね。この文盲め。
>>567 そもそも、C言語で0以外の値が論理式では真として扱われるってことは
誰も否定も拒否もしていないと思うんだが。
0==0の値が問題になっているんだと思うけど。
>>560 なんか色んなモンが溜まってるんでそ。
中には 「本当に判っていない」 っぽい奴もいるみたいだけど
まー他人事だしな。
573 :
仕様書無しさん :04/04/28 22:48
こんなもんbool型がない可哀想な言語で発生する問題じゃん。 マトモな高級言語ならboolはtrueかfalseの二つしかとらず、 trueの反対はfalse。falseの反対はtrueになる。
>>571 >そもそも、C言語で0以外の値が論理式では真として扱われるってことは
>誰も否定も拒否もしていないと思うんだが。
というならば
>0==0の値が問題
はたしてこれを問題にする意味はあるのか?
>>573 bool型が無くても一切問題はありません
>>575 アセンブラでも一切問題ないもんねぇw
でもね。開発効率やバグの可能性を考えると問題あるんだよ。
一つ勉強になったね。
577 :
仕様書無しさん :04/04/28 22:54
>でもね。開発効率やバグの可能性を考えると問題あるんだよ。 trueやfalseの2種類ごときに問題となるプログラマに一言(ry
つか、 >マトモな高級言語ならboolはtrueかfalseの二つしかとらず と言う時点で痛過ぎなんだが。
>>579 お前のレスのほうが痛いんだが?
あっ。気づいてない? そりゃそうか。
TRUEの値を固定したい香具師の脳みそは恐らく1ビット構成なのだろう
>>577 そりゃプログラマが気をつければ問題は起きないさ。
でもそんなくだらないことをプログラマが気をつける必要はない。
なんのためのコンピュータだ? なんのための高級言語だ?
>>582 気をつけるほどの問題か?
高級言語というのはbool型の有無を論じるレベルの話だったのかよ。
とにかく氏ねとか糞とか仰る誰かさんとは話したくない。
>>584 気をつけるほどの問題です。
高級言語というがbool型の有無を論じるレベルの話だけだとは言っていません。
こっちの方が去って逝けばいいのか。何か酷く疲れた。
Y2Kが何故問題になったか。学問と現実には常に乖離がある。
>>586 ただの先入観
0か否かの表現とbool型の表現は全く同じ意味だろ。
bool型においても、0:FALSE1:TRUEとわざわざ関連付ける香具師が
一番危険だと思うが?
…一応逝っとくけど、555は小学生の頃から機械語やってたんだが… 8085の時代だな。
書いてる漏れ自身が言うのもなんだが、誰が誰だか解らんね。
>>592 591というか、具体的に誰と何について言いたいのか解らん。
論点より言い回しや体裁を気にするのか?
こんな所(2ちゃん)で何を要求してんだ?
>こんな所(2ちゃん)で だからこそ奥の手、隠し玉が一杯ありそうなんだよな。 ま、祖母の法事が近いのでもうこのスレの事は忘れるわ。
例えば
>>549 をみて、
「ハァ?ただのヴァカじゃん」としか思わん人と
何かしら思い当たるところのあって苦笑する人とでは
話は合わないだろうね。
>>594 そもそも論点はなんだったんだか。論点ずらし?
何かを要求しつつ論点が行方不明。
自己の理論を正当化しつつ、裏を返せば相手を非難するくせに消えるとは失礼な奴だ。
開発者が常にルールに従ってコーディングできるかというと、そんなことはありえないし、 その問題を解決するというニーズが現実に存在する。 現在の高級言語はそのニーズにこたえるべく改良を加えられている。 もともと、オブジェクト指向が登場した背景の1つには、ソフトウェア資産の複雑性の爆発を 解決する目的があった。今まで作ってきたソフトウェア資産をどう保守し活用するか ということだ。
あれ? だれもいない?
つまり、プログラマーは覚えることが少なければ少ないほどいいわけだよね。 TRUEが47で、FALSEが-34であるとか、覚えられないでしょ?
TRUEは69だ。互いが求め合うかたちだ。 FALSEは99だ。片方が求めるが片方は拒絶しているかたちだ。
互いに求め合うのが真実だと申すか?
知識でしか理解してない人と実際の現場の人とで話がかみ合ってないみたいだね。 boolの実装値の影響を受けるコード書く素人は現場では役立たずだからね。
>>602 君は
>>549 をみて「boolの実装値の影響を受ける素人のコード」と思ったんだね?
現場は君が知識だけで考えているよりもずっと複雑なんだが。
>>603 全レスに目を通したので
>>549 も見たけど、それだけで判断したわけではないよ。
つか、俺自身15年以上現場にいるわけだが。
見えてきたぞ。
何かと定数をきっちり割り当てたい奴は、そうでもしないと自己妄想で
何がなんだか分からなくなっていしまうから困るのだろう。
つまり…そうだな、
>>581 が結論と言う訳だ。
>>603 #define TRUE -1
の必要性があれば、別にかまわないけど。
だいたい、#define があるからといって、Cプリプロセッサを
使う環境とはいいきれないし、また、仮に Cプリプロセッサを
使う場合であっても、C/C++言語であるともいいきれないわけだ。
いったい、どういう環境で、どういう必要性があれば、
#define TRUE -1
なんていうコードを書くんですか? 俺には、ただのバカにしか思えないよ。
TRUE は 0 以外、 FALSE は 0 じゃん。 違いますか。そうですか。
610 :
仕様書無しさん :04/04/29 14:19
>>608 ここでは正直感想を書くと疎まれるそうでつ。
611 :
仕様書無しさん :04/04/29 14:23
どうせ同じ話の繰り返しなんだから、もっと過去のレスを再利用しようぜ。 だって、俺たちはマだろ?
612 :
仕様書無しさん :04/04/29 14:29
>>612 開発効率性の議論は、過去にはまだ出てきてないぞ。
ちゃんと過去レス読んだかい?
>>607 >いったい、どういう環境で、どういう必要性があれば、
大昔に誰かがそう決めた。
理屈ぬきで互換性の確保を要求された。
619 :
仕様書無しさん :04/04/29 22:09
>>618 その大昔の誰かが、バカかどうかが、まさに、そこが議論するところでしょう。
その大昔の誰かは、どんな必要性があって、最初にそんなコードを
書いたのでしょうか?
>>620 >その大昔の誰かは、どんな必要性があって、最初にそんなコードを
そいつがたまたまベーシック厨だったとか、事情はいろいろありうるな。
でも、そんなことは現在それを保守・拡張する人間には関係ないだろ。
>>621 関係ないんじゃなくて、現在の人間に悪い影響を与えているかどうかは重要でしょう。
つか、何マジになってるのかと。 620の言う通りだったとして、TRUEが-1に直したとしても 大昔の馬鹿の過ちをそのまま繰り返しているだけなのだ。 と言うのが重要なんだろうに。
しょーもない話題で盛り上がっているな。
FALSE = 0000 = 0 TRUE = 1111 = -1 ただ、FALSE = 0, TRUE = NOT FALSEとおけることから、 1でも-1でもOKということが判明しますた。 っていうか、こんなことも氏らねー香具師は死ね。マジで。
いやいや。
>>600 俺はこれを支持するぞ。
直感的でわかりやすい!(w
三つ巴の立場があれば、漏れ様も600に反対はしないが(w
>>625 いや、お前が何言ってるのか判らん場合はどうすれば
2ch屈指の不毛さを誇る宗教論争スレだな
>>629 これの何処が論争なのかと。
「無知の無知」が語れる事など何も無い筈なのにな。
流れを無視して スレタイ通りに FALSE = 0, TRUE = -1 として全てのコンパイラを統一すると、 それは間違っていると罵る駄スレが間違いなく立つ罠 俺は保守派だ
だから何で顔を真っ赤にして書き込んでるのかと。
昼間から酒飲んでるからだろ
>>635 なぜわかった!?
ふーんだ、どーせ俺は4/29に彼女にふられて
GWが悲惨な連休になったプログラマーだよへへーん(号泣
637 :
仕様書無しさん :04/05/01 23:07
>>636 なに、すぐにデスマに呑まれて、彼女の事なんか忘れられるさ…
牛丼が0ならハッピーターンは-1が正しいよな。
68000のScc命令。 (実際はccの部分は判定条件に応じた文字が入り、SEQ, SNE, SGE, SLE等のニーモニックになる) 条件ブランチと同様のフラグ判定を行い 結果によって 条件を満たせば指定オペランドの全てのビットを1にする。 満たさなければ全てのビットを0にする。 操作対象はbyte。8bit全てのビットをセット/クリアする。
もう少しスレが沈んでから再開した方が良いと思うが、とりあえず感想を言う。 スレ主は書物を読んでいるのか、 それとも書物にスレ主の思考能力の底まで読まれてしまっているのか、 まずそれを自覚すべきだ。 書物に読まれてしまうと、読者は書物の指し示した平面内で思考を展開し、 独創力と言うものを持たないまま、 書物の内容に現実を近づけようと努力する事になる。 私にはスレ主が何かの書物に支配されて居るように見えた。 工学書ですらスレ主の思考の視野を支配する力を持つのであれば、 数学書、特に岩波数学事典が持つ支配力を振り払って、 人間が持ちうる価値観の限界まで、一切が遮られる事の無い、 本当の論理の世界に没入する事は難しいだろう。 スレ主は既に価値観を導入してしまった後の 命題計算について論じているに過ぎないからだ。 既に0を神聖視する者達もこのスレに注目している。 私は彼らと正反対の事をこのスレで言うつもりではあるが、 多面的な形勢判断と称する論法に最初から影響されていては 底の浅い議論にしかなるまいと発言するものである。
642 :
仕様書無しさん :04/05/06 11:36
は
>>628 は5流釣り師 | ハフハフうるさい無能デブ
645 :
仕様書無しさん :04/05/06 12:14
>>641 そんな固いこと考えずにふと思ったことを語るのが2ちゃんなんじゃない?
>>645 そんなに深く考えることはないことには賛成だが、
ふと思ったことでスレを建てることには反対です。
つーか、>641コピペくせぇな。
>>646 納得&同感
でも糞スレではなかったとおもうけどな、このスレは。
ただそろそろ結論出尽くして同じこと繰り返してるだけの状態にはなった
気はするが・・・
>>648 CとVBを理解できてるPGならば、答えは出ている問題だけどな。
漏れは、-1が1111(2)なのはわかるが、-1っていうと否定的なイメージがあるから1にする。
>>649 沈静化すると思ったが、自ら継続してしまう俺・・・
もっと正確には、プロセッサ、コンパイラとアライメントも関与するから
=2とは限らないよ。全ビットが立っている状態が正しいな=-1
言語内で戻り値の成功をどうするかは規則さえ決めればこのスレのことに
とらわれる必要は無いし、STLでも多くの関数は-1を失敗と返すものもある。
string str = TEXT("あふー");
で、str.find(TEXT("うー"))の戻り値は-1だけど結果は偽に相当するからな
>>650 言葉足らずだが、>649は
> 全ビットが立っている状態が正しいな=-1
という意味で言っていると思われ。
> str.find(TEXT("うー"))の戻り値は-1 ハァ?
653 :
仕様書無しさん :04/05/06 12:48
>>650 find見つかった位置を返す関数でしょ。
だから失敗が-1なんじゃなくて、
見つからなかった場合が-1。
-1は偽のことじゃない。
645じゃないけど。 >find見つかった位置を返す関数でしょ。 findはfindで、それ以外の何者でもない。 「見つかった位置を返す関数」を現実の計算機で実現するのは不可能だから。
std::string::find() で見つからなかったときの戻り値は std::string::npos であり、 その型は std::string::size_type で、 -1 で初期化されているが、 size_type は符号無し型なのでその値は -1 ではない。 まぁごちゃごちゃ言わずにおとなしく定義に従って npos 使っとけってこった。
納得。
要は規則をどう捉えるかって事だな。 振り出しに戻る。-more-
まあ
>>645 のような素っ頓狂な連中が沈静化を阻んでいるわけで。
662 :
仕様書無しさん :04/05/06 14:13
FALSE = 0x46414C5345 TRUE = 0x54525545
は?649も同類だと思ってたけど。
まさか649は有益な事を言ってたつもりなの?
あーなんか。馬鹿らしくなってきた。 ハミルトニアンとラグランジュアンの どっちが事実でどっちが嘘か。 みたいな下らん論争を真剣にやってるのか。649は。
>>667 リアル厨房は相手にしないようにすべし。
670 :
仕様書無しさん :04/05/07 01:59
論理演算 ビット演算 補集合 釣
672 :
仕様書無しさん :04/05/07 17:31
675 :
仕様書無しさん :04/05/08 10:35
bool aという変数があって、 aがtrueの時はfalseに、falseの時はtrueにするような(反転するような) 代入をしたいのですが、 a=~a; だと、コンパイラが受け付けてくれません。 どうやったらいいでしょうか。
言語は何よ? a=!aじゃないのか。
そういう設計を回避する。
認識不能。abort(); 想定外。errno=EDOM;
ぜんぜん違う話だが、true があるにもかかわらず false が無い言語って結構あるんだな nil が false の代わりになっているだけだけど
途中までしか読んでないけど、 やっぱ-1って マイナスだからネガティブな感じがしてヤな感じだな・・・ "真"の値としては。 全ビット1はちょっと納得できるけど、-1はなんか嫌だ。 真実は常に明確なものではないという気がするよ。 望んでもいないルールがとびだしてきていつまでも出てくる。
682 :
仕様書無しさん :04/05/09 10:43
>>681 がいくらネガティブな感じをもとうが、
C言語では-1も真。
そもそも数値化した時点でネガティブ。と言う突っ込み話ですくゎ
つーかさ、なんで? 0,1 でいーじゃん
684殿の性格、教養、価値観などを具体的にがっちりキャッチせずに 小出しに情報を出しても、会話が成立するとは思えないし。 まぁオンラインで議論すると誤解の方が急スピードで蓄積されると思うよ。
686 :
仕様書無しさん :04/05/09 18:03
C99では0,1の2値しかない_Bool型つくってんぢゃん なんで逆らうかな?
そこでBASICですよ。
いや、ここはCOBOLでしょ
689 :
仕様書無しさん :04/05/09 19:36
>FALSE が 0 なら TRUE は -1 が正しい 「正しい」と言いきってしまうのはよくないのでは? 正しいか正しくないかは処理系によると思われ。
それ以前に正しい事なんてこの世に一つもない事に気が付いた方が良いかも
693 :
仕様書無しさん :04/05/10 00:29
>>688 だな。COBOLだろう。C言語ではコンパイラの処理系によって
「文法的に正しい記述」でも挙動が期待通りにはならない場合
がある。
# ここで「A == TRUE と書かずに、A != FALSE と書けばいい」
# という輩もいようが、それは言語として誤っていない以上、
# その場しのぎでしかない。
おまいら、true、falseってキーワードを用意した理由を察しろよ
どっちでも良いけど、675に対する話の続きなのかどうかだけは ハッキリして欲しい鴨。
696 :
仕様書無しさん :04/05/10 07:48
>>694 TRUEと比較できないTRUEになんの理由があるんだ?w
論理値は比較できんだろ、だいたい。
>>698 倒置法にしてカキコする意味はないのでは? :-P
さて。激しく盛り下がっているわけですが。(w
>>699 してはいけない理由もありませんね :-)
In article
>>701 , 仕様書無しさん/sage/701 wrote:
>
>>699 > してはいけない理由もありませんね :-)
むりしなくていいですよ :)
>>697 全然違いますよ。莫迦ですね。
それより、あの流れで「子供の罵倒」を続けて欲しかったんですが
>>675 にはがっかりです。
In article
>>703 , 仕様書無しさん/sage/703 wrote:
> 全然違いますよ。莫迦ですね。
「全然」もなにも、正解と不正解しかないのでは? :-P
莫迦ってなんですか? はつみみです :-)
706 :
仕様書無しさん :04/05/13 13:36
>>704 なんでもかんでも詰め込めばいいってもんじゃないな。
お前のセンスのなさがもろばれ。人まねも満足にできねーのか。
センス、とは?
センス、とは?、とは?
ネタにマジレスかっこ悪い。
>>706 ム板では上手に偽者やったことがありますが、何か?
>>711 ああ、半年くらい前のあれか。下手な偽者もいたはずだが。
1人巧いやつがいたが、まあ、騙されるム板住民は無能だな。
>>711 >上手に偽者やったことが
「上手に」とは誰の判断ですか?また、その判断基準は?
>>714 ム板住民が騙されたからだろ。
あの時結構スレ伸びてたから、10人くらい騙されてただろうな。
俺が3年前にやったときはマ板の奴らがいっせいに釣られてたけどな。
>>715 呆れて書き込みをしなかった人が
騙されていたのかどうか、どのように確認されたのでしょう?
(・∀・)イイヨイイヨ-
>>719 書き込みしなかったやつは釣られなかったんだろ。
全員なんてどこにもかいてないじゃん。
あ、つられてくやしかったのか?(ぷ
721 :
仕様書無しさん :04/05/13 17:12
本当のことを、初心者に教えてください。 -1なの?ドッチ?
722 :
仕様書無しさん :04/05/13 17:13
-1は真と評価されます、それでいいじゃねぇか。
>>721 釣り師の居座るスレで議論なんか無駄さ。
書き込みしなかった奴は719の味方だから気にするな。
だそうです。
727 :
仕様書無しさん :04/05/13 17:20
>>719 の味方がそういうんだからしょうがないよな。なぁみんな!
何か楽しい展開だな、お前ら。 結局、馴れ合ってるじゃねーか。 0はFALSEと評価されます。FALSE = 0 それ以外はTRUEです。TRUE = NOT FALSE でいいんじゃねぇの。といってみるテスト。 何回もでてきてるから釣りとしか思えん。
>>728 何回もでてきて、何回も無視されている。
だから「でいいんじゃねぇの。」ではない事が言える。
どちらが釣りをやっていて、どれが誰だかわからん漏れは逝ってよし?
!FALSE
734 :
仕様書無しさん :04/05/15 16:53
ここはsigned boolを導入 -true(-1) false(0) +true(+1) の3値を取る これでどうだ?
ダメ
698と同様、下らな過ぎ。 背後にある数理構造の設計をきちんと説明せよ。
false 0 true 1
H True L False Z 他の奴に任せる X わからん
739 :
仕様書無しさん :04/05/15 19:18
そもそも、なんで神はこの世をTRUEとFALSEにお分けになったのでしょうか?
741 :
仕様書無しさん :04/05/15 19:52
やっぱ、 comprex boolだろ。 1 = true i = false あとは適当に使え。
if( (!(TRUE != FALSE) == FALSE) != TRUE){
743 :
仕様書無しさん :04/05/15 20:55
complexな。
0 でも -1 でも それ以外でもなくて FALSE は 'f' TRUE は 't' どこぞの軟派な香具師は TRUE? FALSE? 両方とも0だろ? だってBOOL型ってtinyint(1) だろ? とかのたまってるが。 クールな俺様は ビシっと 't' と 'f' だ。 それ以外は認めないゼ? ―とある常駐稼動プロセスの呟き―
>739 いや、論理学だったかではtrueとfalseとundefined(未定義)の三つらしい。 教養の頃、情報の授業で聞いた話。
hage
>>747 それを Z って書くんだよ。
つか、Z とか X とか意味判ってるか?
真理値表書こうってんじゃないんだぞ?
751 :
仕様書無しさん :04/06/04 08:10
752 :
仕様書無しさん :04/06/04 08:38
TRUE = 0 , FALSE = -1 なシステムもあるよな ややこしいよ
Hi-Sガンダム
754 :
仕様書無しさん :04/06/05 11:22
FALSE が 0 なら ぬるぽ は -1 が正しい
なんでそう何でもかんでもモビルスーツに話を絡めようとするんだ?
756 :
仕様書無しさん :04/06/05 11:37
ZERO が 1 なら ONE は 2 が正しい。
ONE2 〜永遠の約束〜
ぬるぽ
0とか、FALSEとか〜♪ 最初に言い出したのは〜♪
true = 0 とするのは鬱。
762 :
仕様書無しさん :04/06/08 16:14
true = 1 false = -1
763 :
仕様書無しさん :04/06/08 20:27
true = 4 false = 5
素で文字数を表してると気付かなかった。
これはどういうことだろう?
俺より
>>764 の方がツッコミスキルが上だとでもいうのか?
まさか!それはありえない。と、するとそこから導き出せる結論は一つ。
>>763 ==764 なのさ!!!!!!!11111
ポインタにおけるNULLと!NULLのように、TRUEの定義をとっぱらっちまえば全て解決。 FALSEと!FALSEを使い分けろと。 Bool定義したアホに忠告したれ。
バカだな、色んな意味で
>>768 たまーに全角英文字使ってるというだけで見下してくる池沼が湧くんだよな。
全角と半角混ぜる方がキモイ。
>>770 COBOLer は、さっさとおにぎり。
772 :
仕様書無しさん :04/06/19 01:40
スレが静かなので、もちでもついてます。 /\⌒ヽペタン / /⌒)ノ ペタン ∧_∧ \ (( ∧_∧ (. ゚∀゚))' ))(´∀` ) / ⌒ノ ( ⌒ヽ⊂⌒ヽ .(O ノ ) ̄ ̄ ̄()__ ) )_)_) (;;;;;;;;;;;;;;;;;;;)(_(
バグがでたああ亜あぁぁぁぁぁぁぁぁあぁぁぁdさsdf2qgrfqgf1pf!!!! ___ ガスッ |___ミ ギビシッ .|| ヾ ミ 、 グモッ ∩_∧/ヾヽ グモッ | ,| ゚∀゚). .| |;, チュイーン / ⌒二⊃=|;,,:+*:';:∴:*¨∵ .O ノ :';::';:;:;;ひ; ;) ゴショッ ) ) ) | ̄⊂ ) ヽ,lヽ) |__|(__(_)
774 :
仕様書無しさん :04/06/23 17:31
だからポインタにNULLが入っているかどうか調べる時に p == NULL とはかいても p != 1 とか p != -1 とはかかんだろ? bool == false か bool != false だけにしろ! と神はおっしゃっておられます。
!p と書くが
>>774 ポインタと1や-1は比較できません。
bool == falseやbool != falseはbool型なんだが、それはどうするんだ?
>>777 おいおい、アドレスが1のときは1が入ってるだろうが。
>>779 “ポインタ型”はアドレスを示す数値ですが何か?
void* p; p != 1; p != -1; 少なくとも警告は出るだろうな アンポンタンには分からんか
782 :
仕様書無しさん :04/06/24 21:38
なぜかvoidポインタにされているなw 後付でなんでも追加していいなら動くもの作れるし。
>>781 おまえはクズ。
voidじゃないポインタならエラーも警告も出ないとでも?(w
TRUE=1だとシックリ来るけどな。 -1だと型が違ったときに表せない場合がある(Sint8->Uint16への暗黙キャストの 場合、-1が255になる)が、1だけはどんな型に変換しても無条件に1だかんね。
255になったあとにSint16に変換されたら−1にならんですよ。 TRUEは使わないが一番安定的。
あれ?
>>785 だから
>>784 が言ってる事で
いいんじゃねーの?
それともfalseしか使わない方がいいのかな?
falseしか使わない方がいいね。ちなみに言ってることは同じだった。(ワラ
790 :
仕様書無しさん :04/07/02 23:59
プログラムなんて書かなきゃいいじゃないの?
>>790 どうせ死ぬのになんでおまえは生きているの?
>>784 内部形式なんて気にする必要ないだろ?
内部形式が常に1でなければいけないから、1がいいなんて無意味な理屈だよ。
-1である必要も無いな
でも0はだめだぜ〜。
諸君が愛したTRUEは1だった! 何故か!
FALSEさ故の過ちさ。
797 :
仕様書無しさん :04/07/07 23:47
その前に、なぜ、trueとfalse が違うものとして定義されなければならないのかを、 論理的に証明してください。
区別したかったから
なんとなくじゃない?
VB.NETの場合 Imports System Class Test Public Shared Sub Main() Console.WriteLine(CInt(True)) ' 出力:-1 Console.WriteLine(Convert.ToInt32(True)) ' 出力: 1 End Sub End Class
801 :
仕様書無しさん :04/07/09 12:30
C++のコードで、 bool flag; ... if( flag != true ){ } っていっぱいあるんだけど、よくないよねこれ?
>>802 よくないな。
>C++
↑こうじゃなくて C++ こう書いた方がスマートだよ。
そうか
↓こうだろ if () { }
それはいやだ
if (flag == (bool)NULL)
if (flag == (bool)NULLPO)
812 :
仕様書無しさん :04/08/24 14:55
FALSEが-1なら TRUEはx≧0
-2だとマズイのか?
814 :
仕様書無しさん :04/08/24 15:47
TRUE==1 だと、こういう文のときに便利(実際に使われるかどうか分からないけど) a = (b<c)*2+(c==0)*3; TRUE が変な値だと、 a=0; if (b<c) a+=2; if (c==0) a+=3; と、3行で書く必要がある。
三項演算子くらい使えよ
816 :
仕様書無しさん :04/08/24 15:54
>>815 if文を使わずにプログラム書くことに意味がある。
参考演算子を使うと、
a = ((b<c) ? ((c==0) ? 5 : 3) : ((c==0) ? 2 : 0));
となって無駄が多すぎるし、if によってパイプライン処理が妨げられて低速になる。
単純に置き換えるなら a = (b<c ? 1 : 0)*2+(c==0 ? 1 : 0)*3; じゃねぇの? つか、条件文使ってる時点で低速云々逝っても意味ねー
818 :
仕様書無しさん :04/08/24 16:10
>>814 の前半の文には if が含まれないはず。
>>816 >if によってパイプライン処理が妨げられて低速になる。
そんなくだらない事を考える暇があるなら
可読性の高いコードを書く事に腐心しましょう。
820 :
仕様書無しさん :04/08/24 16:57
>>819 可読性なんて、コメントをたくさん付けたり適度に改行・空白をあけることで解決します。
計算量の多いプログラムだったら、どうしてもパイプライン処理とかが問題になります。
高速化を馬鹿にするから、最近のプログラムは極端に重くなるんですよ。
可読性に腐心しすぎてスピードが極端に落ちてもいいんですか。
a = (b<c) * 2 /* b<c ならば 2 を加える */
+(c==0)*3;/* c==0 ならば 3 を加える */
とすれば何ら可読性に問題はありません(ここではタブが書けないけど)。
そもそも自分で >TRUE==1 だと、こういう文のときに便利(実際に使われるかどうか分からないけど) あるかどうか分からない状況を設定して、何を憤ってるのさ。 環境を限定して(trueが1である環境においてのみ)、自分はそうすりゃいいだろ。 だいたい「極端に落ちる」って、さらに何か脳内で条件付加したのか?
822 :
仕様書無しさん :04/08/24 17:33
>>821 具体例は忘れたけど、似たような状況はありました。
条件も何も、
(b<c) と、((b<c)?0:1) では内部的に違うはず。
繰り返し処理(1億回くらいのループ)だとその差は大きいはずです。
だーら、 >環境を限定して(trueが1である環境においてのみ)、自分はそうすりゃいいだろ。 そうじゃない可能性があるなら、使えない。 大体、内部的(コンパイル後の事か?)なんてのもコンパイラ次第だろ。 ここで何を主張してるんだ。
824 :
仕様書無しさん :04/08/24 17:59
コンパイラ次第と言っても、ある程度の共通点はあるはずです。 分からないんだったら最初からそう言ってください。
825 :
仕様書無しさん :04/08/24 18:03
>820 True=-1なら a = (b<c) * -2 /* b<c ならば 2 を加える */ + (c==0) * -3;/* c==0 ならば 3 を加える */ でおk?
>>824 なにが?
trueが1な環境ならそうすりゃいい、と言ってるのに、
最初からなんだって?
なんでココはこんなに香ばしいのですか?
お前が居るからちゃう?
829 :
仕様書無しさん :04/08/25 12:07
>>826 環境に依存しないコードを書くことも大切では?
ある処理系では true==1, ある処理系では true==-1, 別な処理系ではそれ以外となれば
混乱の元かと。
突っ込み先は824の方じゃないか
>>820 >可読性なんて、コメントをたくさん付けたり適度に改行・空白をあけることで解決します。
やはり、作り捨てコードを書く人は言うことが違いますね。
>高速化を馬鹿にするから、最近のプログラムは極端に重くなるんですよ。
妄想癖もあるようです。
>>827 スレタイからして芳しいですから。
>>828 True = Not False = &HFFFF = -1 主義の
VB厨房必死ですね(w
>>831 >やはり、作り捨てコードを書く人は言うことが違いますね。
確かに製品としてのプログラムを書いたことはないですけど・・・
>妄想癖もあるようです。
現に、Windowsは重すぎます。
最速のパソコンを使えば殆ど気にならないかも知れないけど、
少し遅めのパソコンを使うと、10個くらいのアプリケーション(メモ帳や電卓を含む)を起動するとすぐに固まるし、
酷いときはマウスカーソルが止まることさえあります。
一つ一つのアプリケーションが使用するメモリが大きすぎるのだと思います。
これはアプリケーションが原因かも知れないし、Windowsが原因かも知れないし、他のところにあるかも知れません。
もしかしたら、今あるGUIなどを実装しようとすればWindows以上に軽くは出来ないのかも知れませんけど・・・
アプリのメモリ使用量が原因なら、アプリが原因だろう。 自分で何を書いてるか把握してないのか。
>>833 1.読みにくいコード
1a.改造改造を重ねどんどん重くなってるコード
1b.素人が書いたやっつけコード
1c.速度重視で細工しまくったコード
2.読みやすいコード
2a.考え方が整理されているコード
これを、速度順に並べると、
速------------------------遅
1c
>>2 a>越えられない壁
>>1 b>1a
ところが、これに修正1回が加わると、
「速度重視で細工しまくったコード」の速度はガタオチする危険がかなり高い。
つまり、商用のコードは読みやすさ重視で作ったほうが無難。
速度とかはどうでもいい、TRUEが-1かどうかを語るんだ
ついでに言うと、「読みやすいコード」の方が修正も楽だし 修正時の速度低下も(担当が相当バカじゃない限り)かなり低く抑えられる。 「速度重視で細工しまくったコード」は、修正が難しいし 担当が相当賢く無い限り速度低下は防ぎづらい。 「高速化」とか言い出すなら、まずループの中身をシンプルにするとか 見やすくなる高速化を優先した方がいいぞ。 #もちろん、公式がある場合は多少複雑になっても式をコメントに書いてそれ使えば良い。
抽象化がキライな人たちが集まっているスレですね。
>>820 #素人さんに説明するつもりで書きます。無礼だと思われたならそう言ってください。
演算を行う部分が応答速度低下の原因(ボトルネック)になる事は稀です。
画面へ表示、二次記憶へのアクセス等のIOを行う時間が、メモリ上の操作(演算)の
10*3程度のオーダーで長いからです。
つまり、(一概には言えませんが)IOは演算の1000倍程度以上の時間がかかるからです。
#まあ稀にアルゴリズムレベルで大馬鹿なプログラムがあって、演算がボトルネックとなる例が無いとは言いませんが。
すなわち
>>820 より.
>>819 の見解のほうが職業PGとしての共通認識として正しいのです。
なんでboolean型と整数型が可換であることを前提に議論してるの?
841 :
仕様書無しさん :04/08/25 17:30
あえて不可換にする必要がないから。 今時 boolean 型と整数型が不可換の言語なんて終わってると思う。 それが許されるのはちょっとしたスクリプト用の言語くらい。
今時が何か関係あるのだろうか。
>高速化を馬鹿にするから、最近のプログラムは極端に重くなるんですよ。 高速化を莫迦にしているのはお前だ。 それを語るなら、機械語の知識くらい身につけてからにしろ。 偽=0,真=1が機械語レベルで実装されているCPUを、少なくともオレは知らない。 普通は、フラグを使って判断(分岐)する。 真に1を代入するために、結局分岐を使わざるを得ないのだ。 つまり、仮にコンパイラが最適化を何もしないとすれば、 >a = (b<c)*2+(c==0)*3; は、 a=0; d=0; f=b-c; if (cf==0) goto 100 /* cf:carry flag */ d=1; 100: d=d*2; a=a+d; e=0; f=c; if (zf==1) goto 200 /* zf:zero flag */ e=1; 200: e=e*3; a=a+e; の様な感じに翻訳される。素直にif文を使うより、却って遅い。
844 :
仕様書無しさん :04/08/25 21:44
フラグ!! そう言えば、そんなのがありました・・・。 厨房の頃に少し齧っただけで、それ以来あまりやってなかったです・・・。 jne, je, jg, ・・・ 最近アセンブラを使っていないので忘れてました。逝ってきます
逝ってきます
; 9 a = (b<c) * 2 + (c==0) * 3; .line9 movl-4(%ebp),%edi cmpl%edi,-12(%ebp) jge_$5 movl$1,%ebx jmp_$6 _$5: movl$0,%ebx _$6: cmpl$0,-4(%ebp) jne_$7 movl$1,-16(%ebp) jmp_$8 _$7: movl$0,-16(%ebp) _$8: movl%ebx,%edi sall$1,%edi imul$3,-16(%ebp),%esi addl%esi,%edi movl%edi,-8(%ebp) ; 10 確かに条件付分岐が入っていました・・・
847 :
仕様書無しさん :04/08/25 23:18
a = (b<c)*2+(c==0)*3;
a = (b<c)*2+(c==0)*3;
の分岐なくすなら、ビット演算で
a = ((unsigned int)(b - c) >> 31)*2 + (((unsigned int)c
>>31 )^((unsigned int)(-1*c)
>>31 )^1)*3;
だろ。
もうボトルネックはCPUじゃないもんね。
>847 b,cがintかunsigned intかはどこにも書いていないのだが、 signedだとすると、b=1,c=0x80000000Lの時など正しい解を与えない。 unsignedだとしても、b=0x80000002L,c=1の時などに、やはりアウト。
藻前ら、アンドレ以下だな。
どうでも良いんだが、 TRUE = [定数] FALSE = [定数] に割り当てるメリットが事実上少ない
852 :
仕様書無しさん :04/08/27 23:54
16(32でもいいけど)ビット符号つき整数は (∧=&,∨=|,¬=~,False=0,True=-1) でブール代数になる。しかし (∧=&&,∨=||,¬=!,False=0,True=1) はブール代数にならない。ブール代数の公理、 例えばa∧a=aを満たさないからだ。 Cでは5&&5は1になり、5にはならない。 False=0、True=1としたらどんなふうに∧や∨を定義しても ブール代数には多分ならないだろう。だからTrue=1は変。 どう?
> False=0、True=1としたらどんなふうに∧や∨を定義しても > ブール代数には多分ならないだろう。 これはうそですたすまぬ
854 :
仕様書無しさん :04/08/28 00:00
二値論理なのに論理式に5を使うことがそもそもの誤り。 論理式における同値関係〜というものを定義すれば、int の場合、 0≠1, 1〜2〜3〜4〜5〜・・・・・・・・・・・〜2^31-1〜-1〜-2〜・・・・〜-2^31 となる。 もちろん、この同値関係は数学で言うイコールではない。
ぶっちゃけどうでもいいんだけど、どうしよう
>854 論理式とブール代数をごっちゃにしないでほしい。 5はれっきとした(ビット演算による)ブール代数の元。 ま、論理演算の方はa==bの変わりに(!a||b)&&(!b||a)を 使えばブール代数になるからいいんだけど(854の〜) Cにもともとある==でブール代数になってくれればすっきりしてるんじゃない?
>>857 論理式≠ブール代数
ビット演算=ブール代数
ということ?
全ての整数(int型変数)は論理式におけるブール代数の元だと思うが?
もちろん、「=」ではなくて「〜」で考えればの話。
なんでfalseがゼロなのかと言う疑問に、合理的な回答はありますか? trueがゼロでもいいじゃん。 と言うか、そっちの方が便利な事って結構多いと思いませんか?
true!=0, false==0 の方が人間の直感に合っているからだと思う。 論理積は普通の積と一致するし、論理和は 1+1=1 を除けば普通の和と一致するし。 true==1, false==0の場合: 0∧0=0 0∧1=0 1∧0=0 1∧1=1 0∨0=0 0∨1=1 1∨0=1 1∨1=1 true==0, false==1の場合: 0∧0=0 0∧1=1 1∧0=1 1∧1=1 0∨0=0 0∨1=0 1∨0=0 1∨1=1 どちらが分かりやすいかは個人差があるけど。
861 :
仕様書無しさん :04/08/28 01:33
>>858 >全ての整数(int型変数)は論理式におけるブール代数の元だと思うが?
>もちろん、「=」ではなくて「〜」で考えればの話。
それには同意。でもそれだったらTrue=-1もTrue=1もどっちも同じってこと
になってしまうので、True=-1が自然である理由を考えてみたら852が思いついた。
862 :
仕様書無しさん :04/08/28 01:36
TRUEはTRUE FALSEはFALSE
861は852ね。 >858 >論理式≠ブール代数 うーむ比較のしかたがよくわからんがとりあえずノリで答えれば Cの論理式=ブール代数 modulo 「〜」 Cのビット演算=もろブール代数
ぜんぜん話についていけない なんで論理型で整数を表現しようとしてるの? っていうか、何の話してる?
自分でもわからなくなってきたので整理してみた。 int modulo 「〜」だと論理式を(実質)2元のブール代数で 解釈できてうれしい。そのかわり元の比較に==はつかえない。 「aとbが両方とも真か偽」っていうのをa==bって書くとバグる可能性がある。 ビット演算だとintは素でブール代数になり真が-1となる。 だけど真と偽の他に元がいっぱいあってなんだか変。5って何よ?
>>864 逆だ逆。論理型を整数で表現してるんだ。
C厨が好きな下らない議論だよ。
でも言語上の型が「論理型」でもメモリ上ではバイナリの 数値じゃないの?
バイナリはバイナリ 数値は数値 論理型は論理型 メモリ上では電気信号
ちゃんとした C プログラマなら C に論理型などという型はない事は 理解されている事と存じます。 因みに _Bool は 「少なくとも0或いは1を格納できる整数型」 です。
872 :
仕様書無しさん :04/09/01 09:44
>>871 論理型はないっていうか、表現できないから代替として
実装している、だね。
そもそもさー。スレタテはこの議論でたとえば題名通り
のコンセンサスを得たくてたてたんだろうから、その先
の「真意」があるはずなんだよね。
そ れ っ て な に ?
人間がコンピュータに合わせる時代は終わった。 論理型ぐらい実装しろや。
874 :
仕様書無しさん :04/09/01 11:27
>>873 1bit処理のCPUを作れということですね
たぶん、
>>873 はコンピュータが論理回路のカタマリだということを知らない専門学校出の兵隊なんだろ。
論理型と論理回路って全然違くないか?
まぁ・・・どうでも良いわけだが
せっかく32bitあるんだから、ファジィ論理実装しようぜ。 a ∧ b = min(a, b) a ∨ b = max(a, b) ¬a = UINT_MAX - a true = UINT_MAX false = 0
# define TRUE rnd * 0xff # define FALSE rnd * 0xff
○if(b == FALSE) ○if(b != FALSE) ×if(b == TRUE)
if( b ) if( !b )
おマイら、も少し柔軟性を持たせレ。 extern long TRUE; extern long FALSE; 完璧。
>>883 printf("%s", TRUE);
フフフフ
885 :
仕様書無しさん :04/09/18 16:55:29
お前ら馬鹿じゃねーのww FALSEが0ならTRUEは1だっつーの(ワラ 頭悪ぃーなお前らww
どうでもいい こんなこと議論してるひまがあったらプログラミングしたほうが有意義だろ?
「ファルス」が 0 「つるつる」が 1 それでいいんじゃないの? 見事に名が体を現しているし。
>>887 おもしろくねんだよ
ってゆーか超くだらねーし
お前頭の中いったいどーなってんのよ
890 :
仕様書無しさん :04/09/19 12:01:23
アフォくさ。 マシン語の知識も無いのに 「自分はプログラマのつもり」の奴大杉。
アホくさ。マシン語が面倒くさいから上級言語開発したのに 「自分だけがプログラマのつもり」の奴お前だけ。
892 :
890 :04/09/19 13:23:34
ひぃっ!
>>890 はヲタクだった!ヲタクにレスしちゃった!
894 :
25 :04/09/19 14:39:00
ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃ ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! っ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃ ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! っ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃ ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ! ひぃっ!
896 :
890 :04/09/19 15:32:02
どうして“0”と“0以外”なのか 説明できないだろ。 急いで調べてみな。
考えるの面倒だからユーザに選ばせろ
898 :
890 :04/09/19 15:47:02
「++は1加算で、--は1減算」程度の知識しかないだろ。 急いで調べてみな。
うるせーよ馬鹿。周りに講釈たれられる相手がいないからこんなところでオナニーしてんだろう。
900 :
仕様書無しさん :04/09/19 16:59:27
>>896 もしかして、C の話をしてますか?
だとしたらかなり無知ですね。
0と0以外というより、0がFALSEだから「0でない」はTRUEってだけでは
>>888 >お前頭の中いったいどーなってんのよ
こんな感じになっていますが、何か?
ファルス: o0o
つるつる: (1)
906 :
仕様書無しさん :04/09/20 12:48:56
お前ら頭悪すぎww TRUEは1で、FALSEが0。分かる?
TRUEかFALSEかの違いはCCRの Z フラグがたっているかいないかだよ。
908 :
仕様書無しさん :04/09/20 13:30:14
ほかにもCCRのCフラグとかで代用ができる。 スーパーインテリなCやC++ユーザーなら理解できるだろう。 庶民派なVM言語の人間はだめだな。
909 :
890 :04/09/20 18:26:17
説明しよう 高級言語では様々な条件判断が可能だが、 CPUには「0か0でないか?」を判定する能力しかないのだよ。 だからそのまま「0か0でないか?」が高級言語にも存在するのだよ。 それから、a=a+1;でもa++;でも、結局同じじゃねーかゴルァ!!というあなた。 CPUレベルでは、「1加算」「1減算」に限って特別な命令が用意してあって処理が高速なのだ。 で、賢いコンパイラなら++や--の場合は、この高速な処理を使うのだよ。(inc,dec) MSのコンパイラはa++もa=a+1も同様に処理しているようだが・・・ ま、最近のCPUはよくできてるからa=a+1もa++なみに高速に処理しちゃうかな。 それにCPU自体が超高速だから、あんまり細かいこと気にする必要もないか。
TRUEはオン、FALSEはオフ
えーとここは「最高に頭悪い発言をするスレ」になったんだよね? 空気読めなくてごめん。
890 名前:仕様書無しさん[] 投稿日:04/09/19(日) 12:01:23 アフォくさ。 マシン語の知識も無いのに 「自分はプログラマのつもり」の奴大杉。 909 名前:890[] 投稿日:04/09/20(月) 18:26:17 説明しよう 高級言語では様々な条件判断が可能だが、 CPUには「0か0でないか?」を判定する能力しかないのだよ。 だからそのまま「0か0でないか?」が高級言語にも存在するのだよ。 それから、a=a+1;でもa++;でも、結局同じじゃねーかゴルァ!!というあなた。 CPUレベルでは、「1加算」「1減算」に限って特別な命令が用意してあって処理が高速なのだ。 で、賢いコンパイラなら++や--の場合は、この高速な処理を使うのだよ。(inc,dec) MSのコンパイラはa++もa=a+1も同様に処理しているようだが・・・ ま、最近のCPUはよくできてるからa=a+1もa++なみに高速に処理しちゃうかな。 それにCPU自体が超高速だから、あんまり細かいこと気にする必要もないか。
890でもJava厨よりは幽愁。
914 :
仕様書無しさん :04/09/20 20:25:10
お前らプログラミングした事無いっしょ(プゲラ
「プゲラ」 って頭悪そうだよな
>>909 >CPUには「0か0でないか?」を判定する能力しかないのだよ。
C だけでなく、プロセッサの知識もなかったようですね。
>で、賢いコンパイラなら++や--の場合は、この高速な処理を使うのだよ。(
コンパイラの知識もないようです。
>それにCPU自体が超高速だから、あんまり細かいこと気にする必要もないか。
速度的にシビアなアプリケーションの実装経験もないんですか?
ないないづくしですね。
とりあえず890のいうCPUはどこのメーカのCPUだ?
>>909 初心者にわかりやすくするためとはいえ、不正確な表現は良くない。
#最後の2行で素人であることがバレテいるぞ
>>916 >速度的にシビアなアプリケーションの実装経験もないんですか?
寡聞にしてインクリメントの際の命令が問題になるほどの
「速度的にシビアなアプリケーション」を知らないw。教えてクレw
#そんなもんネエヨ。君も素人だね
>>916 速度的にシビアな要求をされるアプリケーション、ならあるだろうな。
921 :
仕様書無しさん :04/09/23 22:34:44
true は 0 で、false は 0 以外です。 if grep ${username} /etc/passwd > /dev/null; then echo "${username} is found." fi
922 :
仕様書無しさん :04/09/23 22:40:23
% true % echo $? 0 % false % echo $? 1
画面に表示された文字が0だからといって、実装が0とは限らんなぁ。 そもそも画面に表示された0の文字コードは0じゃないし。
924 :
仕様書無しさん :04/09/24 00:07:10
>>923 そうなんだよね。
printf("%d\n", 0);
とやっても、実装により 0 の内部表現は 0 とは限らないし。
a++とか--bとかはinc,decよりむしろ ポストインクリメントとかプリデクリメントの アドレッシングモードに対応させた方が分かりやすいような。 6809 LDA ,X+ ; A = *(X++); STD ,Y++ ; *(Y += 2) = D; LDB ,-Y ; B = *(--Y); LDX ,--S ; S-=2; *(S) = X; みたいな
>>924 Cの場合パディングビットと符号ビット以外は0になることが保証されている
ので、パディングビットまたは符号ビットが0以外になる場合だね。
逆に全ビット0は整数0になることが保証できる(たしか)。
ありそうなのが負の数が1の補数表現だったり、符号ビット+絶対値表現の
場合のいわゆる-0だね。
intの内部表現にパディングビットのある環境ってあるのかなあ。
>>923 trueはint main() { return 0; }だと思うけど。
(argv[0]を見てなんかやってるかも)
このスレまだやってたんかい
>>918 普通にいっぱいある。インタプリタの最内側でもいいし
グラフィックとかエンコードとかの処理の最内側ループでもいいし。
930 :
仕様書無しさん :04/11/02 20:20:45
もうすぐ次スレだな。
まとめ TRUEは定義されるものであって なにかから算出されるものではない。よって正しいも糞もない。 以上。終了。
余談だが、Delphiとかでファイルストリームにboolean値を書き込んで、 バイナリエディタで確かめてみると、 Trueは勿論0x00、Falseは0xFFが書き込まれているのは知っていて 損はないと思うよ。今更だけど。
すまん、逆だ。 Falseは0x00、Trueが0xFFだ。 おっちょこちょいだったな。
>>934 でも弊社では 0xFF は必ず Invalid Value を表すことになってますよ?
2 バイトなら 0xFFFF, 4 バイトなら 0xFFFFFFFF ね。
弊社では・・・・・・とか言われてもねー
VARIANT_TRUE
938 :
仕様書無しさん :04/11/09 16:19:26
スレも終了が近いが、結局誰の意見が正しいのだ?
>>935 C の古典的な書き方で、int main() がエラーを起こして異常終了する時は -1 (要するに全ビット起立!)を返すってのがあるな。
で、ここは TRUE/FALSE について話すスレなんだが、その Invalid Value と何か関係があるのか?
つーかDelphiではByte(True)=1だ
電気的にはtrue==1だろ。 PGは言語仕様次第。 糸冬 了
>>943 >電気的にはtrue==1だろ。
いいえ違います。
RISCコンピュータ的には、ゼロレジスタと比較して、イコールなら偽、ノットイコールなら真 って事かな?
946 :
仕様書無しさん :04/11/13 01:18:18
1 = 5V 0 = 0V
947 :
仕様書無しさん :04/11/13 06:50:46
TRUEが -1 と言われると、昔MSX-BASICで、スペースキーが押されたかどうかの 関数の戻り値が -1 だったのを思い出すよ。 こんな感じ。 10 PRINT STRIG(0);:GOTO 10
1 = ティムポ 0 = マムコ
950 :
sage :04/11/13 15:24:55
1000までに結論だしとくれよ
> TRUEは定義されるものであって > なにかから算出されるものではない。よって正しいも糞もない。 これでいいと思うが。
でも-1がコンピュータ的には一番自然な定義だね。
まあ、二乗するとマイナスになる数みたいなもんだよ。!0 って奴は。
-1だと2つキー押さなきゃならないだろ。 だからわざわざPCが入力者に思いやって1と1つのキーだけにしてくれてるんだよ。 分からないのか?
んなこたぁない
ぬるぽの出番はまだですか?
ガッの出番!
ところでこんなのはどうよ。 #include <stdio.h> #define TRUE 1 int main(int,char**,char**) { struct { char Val:1; }Bool = {TRUE} ; if(Bool.Val == TRUE) printf("%d\n",Bool.Val); return 0; } こういうときTRUEが1だと面倒だよねぇ〜。 でも、ValがunsignedのときTRUE -1だとやっぱり面倒。 結局はTRUEなんてわざわざ使わないのが一番だろ。
>>961 そんな「真偽値が何か解っていない間抜けなコード」持ち出されても。
やっと答えが出ました #define TRUE (ここに何か数値) というコードの意味は 『TRUE の値は不定、柔軟に決める』 ということでし
963がバカっぷりをさらしただけで何の答えにもなってないな
const TRUE = !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0;
/* FALSE が 0 なら TRUE は -1 が正しい */ if(FALSE == 0){ TRUE = -1; }
968 :
仕様書無しさん :05/01/13 15:57:24
#define TRUE ((void *)0) #define FALSE ((void *)1)
ファルス! トルゥアッ!!
970 :
仕様書無しさん :05/01/13 18:16:04
つーか、真偽値を整数値にキャストできるような低級言語が高級言語を名乗ってることが一番の問題なんでわ?
BOOLならTRUEが1以上、FALSEは0。
TRUEは255か65535か4294967295(か18446744073709551615)でいいんじゃない?
真実などこの世には存在しない
なんでもいいよ
975 :
仕様書無しさん :05/01/20 16:15:51
#define TURE 975
976 :
仕様書無しさん :05/01/22 14:00:02
#define FALSE 976
#pragma message("それで結論は?")
Const short vbTrue = -1
Const Short vbFalse = 0
981
982
983 :
仕様書無しさん :05/02/05 07:27:00
983
984 :
仕様書無しさん :05/02/05 07:27:46
984
985 :
仕様書無しさん :05/02/05 07:29:41
985
986
987 :
仕様書無しさん :05/02/05 07:38:36
987
988 :
仕様書無しさん :05/02/05 07:41:12
988
989 :
仕様書無しさん :05/02/05 07:43:53
989
990 :
仕様書無しさん :05/02/05 07:45:30
990
aaaa
992 :
仕様書無しさん :05/02/05 07:46:29
991
993
994 :
sage :05/02/05 07:47:26
a
b
995
997 :
仕様書無しさん :05/02/05 07:48:51
997
998
999
1000 :
仕様書無しさん :05/02/05 07:52:11
* + 巛 ヽ
〒 ! + 。 + 。 * 。
+ 。 | |
* + / / イヤッッホォォォオオォオウ!
∧_∧ / /
(´∀` / / + 。 + 。 * 。
,- f
/ ュヘ | * + 。 + 。 + このスレッドは1000を超えました。
〈_} ) | 次スレも…VIPクオリティ!!
/ ! + 。 + + *
http://ex7.2ch.net/news4vip/ ./ ,ヘ |
ガタン ||| j / | | |||
――――――――――――
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。