FALSE が 0 なら TRUE は -1 が正しい

このエントリーをはてなブックマークに追加
782仕様書無しさん
なぜかvoidポインタにされているなw 後付でなんでも追加していいなら動くもの作れるし。

>>781
おまえはクズ。
783仕様書無しさん:04/06/24 23:07
voidじゃないポインタならエラーも警告も出ないとでも?(w
784仕様書無しさん:04/06/25 03:31
TRUE=1だとシックリ来るけどな。
-1だと型が違ったときに表せない場合がある(Sint8->Uint16への暗黙キャストの
場合、-1が255になる)が、1だけはどんな型に変換しても無条件に1だかんね。
785仕様書無しさん:04/06/25 03:49
255になったあとにSint16に変換されたら−1にならんですよ。
TRUEは使わないが一番安定的。

786仕様書無しさん:04/06/25 15:07
>>785
だから、TRUEは-1じゃなくて
>>784
でいいんじゃねーの
787仕様書無しさん:04/06/25 15:07
あれ?
788仕様書無しさん:04/06/25 15:10
>>785
だから >>784 が言ってる事で
いいんじゃねーの?
それともfalseしか使わない方がいいのかな?
789仕様書無しさん:04/06/25 15:28
falseしか使わない方がいいね。ちなみに言ってることは同じだった。(ワラ
790仕様書無しさん:04/07/02 23:59
プログラムなんて書かなきゃいいじゃないの?
791仕様書無しさん:04/07/03 06:14
>>790
どうせ死ぬのになんでおまえは生きているの?
792仕様書無しさん:04/07/03 07:59
>>784
内部形式なんて気にする必要ないだろ?

内部形式が常に1でなければいけないから、1がいいなんて無意味な理屈だよ。
793仕様書無しさん:04/07/03 10:35
-1である必要も無いな
794仕様書無しさん:04/07/03 22:04
でも0はだめだぜ〜。
795仕様書無しさん:04/07/06 02:41
諸君が愛したTRUEは1だった! 何故か!
796仕様書無しさん:04/07/06 23:56
FALSEさ故の過ちさ。
797仕様書無しさん:04/07/07 23:47
その前に、なぜ、trueとfalse が違うものとして定義されなければならないのかを、
論理的に証明してください。
798仕様書無しさん:04/07/07 23:58
区別したかったから
799仕様書無しさん:04/07/08 00:47
なんとなくじゃない?
800800:04/07/08 04:05
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
>>800
ドアフォ。VBは昔からそうじゃ。
802仕様書無しさん:04/07/09 20:42
C++のコードで、
bool flag;
...
if( flag != true ){

}

っていっぱいあるんだけど、よくないよねこれ?
803仕様書無しさん:04/07/09 21:15
>>802
よくないな。

>C++
↑こうじゃなくて  C++ こう書いた方がスマートだよ。 
804仕様書無しさん:04/07/09 21:16
そうか
805仕様書無しさん:04/07/09 21:53
↓こうだろ

if ()
{
}
806仕様書無しさん:04/07/09 22:00
それはいやだ
807仕様書無しさん:04/07/10 03:27
>>906
if()
{
}
808仕様書無しさん:04/07/10 16:17
if (flag == (bool)NULL)
809仕様書無しさん:04/07/12 03:34
if (flag == (bool)NULLPO)
while( galtu(>>809) );

811仕様書無しさん:04/08/14 20:20
>>1
>>-1
812仕様書無しさん:04/08/24 14:55
FALSEが-1なら
TRUEはx≧0
813仕様書無しさん:04/08/24 15:00
-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行で書く必要がある。
815仕様書無しさん:04/08/24 15:49
三項演算子くらい使えよ
816仕様書無しさん:04/08/24 15:54
>>815
if文を使わずにプログラム書くことに意味がある。
参考演算子を使うと、

a = ((b<c) ? ((c==0) ? 5 : 3) : ((c==0) ? 2 : 0));

となって無駄が多すぎるし、if によってパイプライン処理が妨げられて低速になる。
817仕様書無しさん:04/08/24 16:03
単純に置き換えるなら
a = (b<c ? 1 : 0)*2+(c==0 ? 1 : 0)*3;
じゃねぇの?

つか、条件文使ってる時点で低速云々逝っても意味ねー
818仕様書無しさん:04/08/24 16:10
>>814の前半の文には if が含まれないはず。
819仕様書無しさん:04/08/24 16:35
>>816
>if によってパイプライン処理が妨げられて低速になる。
そんなくだらない事を考える暇があるなら
可読性の高いコードを書く事に腐心しましょう。
820仕様書無しさん:04/08/24 16:57
>>819
可読性なんて、コメントをたくさん付けたり適度に改行・空白をあけることで解決します。
計算量の多いプログラムだったら、どうしてもパイプライン処理とかが問題になります。
高速化を馬鹿にするから、最近のプログラムは極端に重くなるんですよ。
可読性に腐心しすぎてスピードが極端に落ちてもいいんですか。

a = (b<c) * 2 /* b<c ならば 2 を加える */
+(c==0)*3;/* c==0 ならば 3 を加える */

とすれば何ら可読性に問題はありません(ここではタブが書けないけど)。
821仕様書無しさん:04/08/24 17:00
そもそも自分で
>TRUE==1 だと、こういう文のときに便利(実際に使われるかどうか分からないけど)
あるかどうか分からない状況を設定して、何を憤ってるのさ。
環境を限定して(trueが1である環境においてのみ)、自分はそうすりゃいいだろ。
だいたい「極端に落ちる」って、さらに何か脳内で条件付加したのか?
822仕様書無しさん:04/08/24 17:33
>>821
具体例は忘れたけど、似たような状況はありました。
条件も何も、
(b<c) と、((b<c)?0:1) では内部的に違うはず。
繰り返し処理(1億回くらいのループ)だとその差は大きいはずです。
823仕様書無しさん:04/08/24 17:41
だーら、
>環境を限定して(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?
826仕様書無しさん:04/08/24 18:05
>>824
なにが?
trueが1な環境ならそうすりゃいい、と言ってるのに、
最初からなんだって?
827仕様書無しさん:04/08/24 20:05
なんでココはこんなに香ばしいのですか?
828仕様書無しさん:04/08/24 22:39
お前が居るからちゃう?
829仕様書無しさん:04/08/25 12:07
>>826
環境に依存しないコードを書くことも大切では?
ある処理系では true==1, ある処理系では true==-1, 別な処理系ではそれ以外となれば
混乱の元かと。
830仕様書無しさん:04/08/25 12:14
突っ込み先は824の方じゃないか
831仕様書無しさん:04/08/25 12:30
>>820
>可読性なんて、コメントをたくさん付けたり適度に改行・空白をあけることで解決します。
やはり、作り捨てコードを書く人は言うことが違いますね。
>高速化を馬鹿にするから、最近のプログラムは極端に重くなるんですよ。
妄想癖もあるようです。

>>827
スレタイからして芳しいですから。
832仕様書無しさん:04/08/25 12:50
>>828
True = Not False = &HFFFF = -1 主義の
VB厨房必死ですね(w
833仕様書無しさん:04/08/25 13:17
>>831
>やはり、作り捨てコードを書く人は言うことが違いますね。
確かに製品としてのプログラムを書いたことはないですけど・・・

>妄想癖もあるようです。
現に、Windowsは重すぎます。
最速のパソコンを使えば殆ど気にならないかも知れないけど、
少し遅めのパソコンを使うと、10個くらいのアプリケーション(メモ帳や電卓を含む)を起動するとすぐに固まるし、
酷いときはマウスカーソルが止まることさえあります。
一つ一つのアプリケーションが使用するメモリが大きすぎるのだと思います。
これはアプリケーションが原因かも知れないし、Windowsが原因かも知れないし、他のところにあるかも知れません。
もしかしたら、今あるGUIなどを実装しようとすればWindows以上に軽くは出来ないのかも知れませんけど・・・
834仕様書無しさん:04/08/25 13:19
アプリのメモリ使用量が原因なら、アプリが原因だろう。
自分で何を書いてるか把握してないのか。
835仕様書無しさん:04/08/25 13:37
>>833
1.読みにくいコード
 1a.改造改造を重ねどんどん重くなってるコード
 1b.素人が書いたやっつけコード
 1c.速度重視で細工しまくったコード
2.読みやすいコード
 2a.考え方が整理されているコード

これを、速度順に並べると、
速------------------------遅
1c>>2a>越えられない壁>>1b>1a

ところが、これに修正1回が加わると、
「速度重視で細工しまくったコード」の速度はガタオチする危険がかなり高い。
つまり、商用のコードは読みやすさ重視で作ったほうが無難。
836仕様書無しさん:04/08/25 13:40
速度とかはどうでもいい、TRUEが-1かどうかを語るんだ
837835:04/08/25 13:42
ついでに言うと、「読みやすいコード」の方が修正も楽だし
修正時の速度低下も(担当が相当バカじゃない限り)かなり低く抑えられる。

「速度重視で細工しまくったコード」は、修正が難しいし
担当が相当賢く無い限り速度低下は防ぎづらい。

「高速化」とか言い出すなら、まずループの中身をシンプルにするとか
見やすくなる高速化を優先した方がいいぞ。

#もちろん、公式がある場合は多少複雑になっても式をコメントに書いてそれ使えば良い。
838仕様書無しさん:04/08/25 13:43
抽象化がキライな人たちが集まっているスレですね。
839仕様書無しさん:04/08/25 13:45
>>820
#素人さんに説明するつもりで書きます。無礼だと思われたならそう言ってください。
演算を行う部分が応答速度低下の原因(ボトルネック)になる事は稀です。
画面へ表示、二次記憶へのアクセス等のIOを行う時間が、メモリ上の操作(演算)の
10*3程度のオーダーで長いからです。
つまり、(一概には言えませんが)IOは演算の1000倍程度以上の時間がかかるからです。
#まあ稀にアルゴリズムレベルで大馬鹿なプログラムがあって、演算がボトルネックとなる例が無いとは言いませんが。

すなわち>>820より.>>819の見解のほうが職業PGとしての共通認識として正しいのです。
840仕様書無しさん:04/08/25 16:40
なんでboolean型と整数型が可換であることを前提に議論してるの?
841仕様書無しさん:04/08/25 17:30
あえて不可換にする必要がないから。
今時 boolean 型と整数型が不可換の言語なんて終わってると思う。
それが許されるのはちょっとしたスクリプト用の言語くらい。
842仕様書無しさん:04/08/25 17:39
今時が何か関係あるのだろうか。
843仕様書無しさん:04/08/25 21:29
>高速化を馬鹿にするから、最近のプログラムは極端に重くなるんですよ。
高速化を莫迦にしているのはお前だ。
それを語るなら、機械語の知識くらい身につけてからにしろ。

偽=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, ・・・

最近アセンブラを使っていないので忘れてました。逝ってきます
845仕様書無しさん:04/08/25 21:49
逝ってきます
846仕様書無しさん:04/08/25 21:52
; 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;
だろ。
848仕様書無しさん:04/08/25 23:35
もうボトルネックはCPUじゃないもんね。
849仕様書無しさん:04/08/25 23:59
>847
b,cがintかunsigned intかはどこにも書いていないのだが、
signedだとすると、b=1,c=0x80000000Lの時など正しい解を与えない。
unsignedだとしても、b=0x80000002L,c=1の時などに、やはりアウト。
850仕様書無しさん:04/08/27 12:19
藻前ら、アンドレ以下だな。
851仕様書無しさん:04/08/27 20:36
どうでも良いんだが、

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は変。
どう?
853852:04/08/27 23:59
> 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
となる。
もちろん、この同値関係は数学で言うイコールではない。
855仕様書無しさん:04/08/28 00:23
ぶっちゃけどうでもいいんだけど、どうしよう
856仕様書無しさん:04/08/28 00:38
>>855
とりあえず氏ね。
857852:04/08/28 00:53
>854
論理式とブール代数をごっちゃにしないでほしい。
5はれっきとした(ビット演算による)ブール代数の元。
ま、論理演算の方はa==bの変わりに(!a||b)&&(!b||a)を
使えばブール代数になるからいいんだけど(854の〜)
Cにもともとある==でブール代数になってくれればすっきりしてるんじゃない?
858仕様書無しさん:04/08/28 01:08
>>857
論理式≠ブール代数
ビット演算=ブール代数
ということ?

全ての整数(int型変数)は論理式におけるブール代数の元だと思うが?
もちろん、「=」ではなくて「〜」で考えればの話。
859仕様書無しさん:04/08/28 01:20
なんでfalseがゼロなのかと言う疑問に、合理的な回答はありますか?
trueがゼロでもいいじゃん。
と言うか、そっちの方が便利な事って結構多いと思いませんか?
860仕様書無しさん:04/08/28 01:30
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
863852:04/08/28 01:52
861は852ね。
>858
>論理式≠ブール代数
うーむ比較のしかたがよくわからんがとりあえずノリで答えれば

Cの論理式=ブール代数 modulo 「〜」
Cのビット演算=もろブール代数
864仕様書無しさん:04/08/28 01:59
ぜんぜん話についていけない
なんで論理型で整数を表現しようとしてるの?
っていうか、何の話してる?

865852:04/08/28 02:11
自分でもわからなくなってきたので整理してみた。

int modulo 「〜」だと論理式を(実質)2元のブール代数で
解釈できてうれしい。そのかわり元の比較に==はつかえない。
「aとbが両方とも真か偽」っていうのをa==bって書くとバグる可能性がある。

ビット演算だとintは素でブール代数になり真が-1となる。
だけど真と偽の他に元がいっぱいあってなんだか変。5って何よ?
866仕様書無しさん:04/08/28 13:17
>>864
逆だ逆。論理型を整数で表現してるんだ。
C厨が好きな下らない議論だよ。
867アンチC厨は氏ね:04/08/28 15:06
>>866
なんだと(@u@)
868仕様書無しさん:04/08/28 15:18
でも言語上の型が「論理型」でもメモリ上ではバイナリの
数値じゃないの?
869仕様書無しさん:04/08/28 15:30
バイナリはバイナリ
数値は数値
論理型は論理型

メモリ上では電気信号
870仕様書無しさん:04/08/28 15:44
>>869
屁理屈っぽい
871仕様書無しさん:04/08/28 17:08
ちゃんとした C プログラマなら
C に論理型などという型はない事は
理解されている事と存じます。

因みに _Bool は
「少なくとも0或いは1を格納できる整数型」
です。
872仕様書無しさん:04/09/01 09:44
>>871
論理型はないっていうか、表現できないから代替として
実装している、だね。

そもそもさー。スレタテはこの議論でたとえば題名通り
のコンセンサスを得たくてたてたんだろうから、その先
の「真意」があるはずなんだよね。

そ れ っ て な に ?
873仕様書無しさん:04/09/01 10:09
人間がコンピュータに合わせる時代は終わった。
論理型ぐらい実装しろや。
874仕様書無しさん:04/09/01 11:27
>>873
1bit処理のCPUを作れということですね
875仕様書無しさん:04/09/03 22:22
>>874
むしろ、 1bit だけ。
876仕様書無しさん:04/09/05 04:34
たぶん、>>873はコンピュータが論理回路のカタマリだということを知らない専門学校出の兵隊なんだろ。
877仕様書無しさん:04/09/06 14:55
論理型と論理回路って全然違くないか?
8781@偽者:04/09/09 12:35
まぁ・・・どうでも良いわけだが
879仕様書無しさん:04/09/16 14:33:17
せっかく32bitあるんだから、ファジィ論理実装しようぜ。

a ∧ b = min(a, b)
a ∨ b = max(a, b)
¬a = UINT_MAX - a
true = UINT_MAX
false = 0
880仕様書無しさん:04/09/16 21:41:37
# define TRUE rnd * 0xff
# define FALSE rnd * 0xff
881仕様書無しさん:04/09/17 09:04:24
○if(b == FALSE)
○if(b != FALSE)
×if(b == TRUE)
882仕様書無しさん:04/09/17 11:40:19
if( b )
if( !b )
883仕様書無しさん:04/09/17 11:40:39
おマイら、も少し柔軟性を持たせレ。

extern long TRUE;
extern long FALSE;

完璧。
884仕様書無しさん:04/09/17 21:19:19
>>883
printf("%s", TRUE);

フフフフ
885仕様書無しさん:04/09/18 16:55:29
お前ら馬鹿じゃねーのww
FALSEが0ならTRUEは1だっつーの(ワラ
頭悪ぃーなお前らww
886仕様書無しさん:04/09/18 17:17:52
どうでもいい
こんなこと議論してるひまがあったらプログラミングしたほうが有意義だろ?
887仕様書無しさん:04/09/18 21:01:45
「ファルス」が 0
「つるつる」が 1

それでいいんじゃないの?
見事に名が体を現しているし。
888仕様書無しさん:04/09/19 08:49:08
>>887
おもしろくねんだよ
ってゆーか超くだらねーし
お前頭の中いったいどーなってんのよ
889仕様書無しさん:04/09/19 10:15:25
>>887
俺の周りにも false を「ファルス」と読む奴が多いんだけど、
発音記号見る限り、あえてカタカナで書くなら「フォールス」だよな?
http://www.excite.co.jp/dictionary/english_japanese/?search=false&match=beginswith&dictionary=NEW_EJJE&block=37667&offset=530
890仕様書無しさん:04/09/19 12:01:23
アフォくさ。
マシン語の知識も無いのに
「自分はプログラマのつもり」の奴大杉。
891仕様書無しさん:04/09/19 13:09:52
アホくさ。マシン語が面倒くさいから上級言語開発したのに
「自分だけがプログラマのつもり」の奴お前だけ。
892890:04/09/19 13:23:34
>>891
だからぁ・・_| ̄|○
893仕様書無しさん:04/09/19 13:32:14
ひぃっ!>>890はヲタクだった!ヲタクにレスしちゃった!
89425:04/09/19 14:39:00
ひぃっ!      ひぃっ!      ひぃっ!      ひぃっ!
  ひぃっ!      ひぃっ!      ひぃっ!      ひぃ
    ひぃっ!      ひぃっ!      ひぃっ!      
      ひぃっ!      ひぃっ!      ひぃっ!    
っ!      ひぃっ!      ひぃっ!      ひぃっ!  
ひぃっ!      ひぃっ!      ひぃっ!      ひぃ
  ひぃっ!      ひぃっ!      ひぃっ!      
    ひぃっ!      ひぃっ!      ひぃっ!    
      ひぃっ!      ひぃっ!      ひぃっ!  
っ!      ひぃっ!      ひぃっ!      ひぃっ!
ひぃっ!      ひぃっ!      ひぃっ!      ひぃ
  ひぃっ!      ひぃっ!      ひぃっ!      
    ひぃっ!      ひぃっ!      ひぃっ!    
      ひぃっ!      ひぃっ!      ひぃっ!
895仕様書無しさん:04/09/19 15:04:35
>>893
あーあ、感染っちゃったかもよ?
896890:04/09/19 15:32:02
どうして“0”と“0以外”なのか
説明できないだろ。

急いで調べてみな。
897仕様書無しさん:04/09/19 15:38:37
考えるの面倒だからユーザに選ばせろ
898890:04/09/19 15:47:02
「++は1加算で、--は1減算」程度の知識しかないだろ。

急いで調べてみな。
899仕様書無しさん:04/09/19 16:05:46
うるせーよ馬鹿。周りに講釈たれられる相手がいないからこんなところでオナニーしてんだろう。
900仕様書無しさん:04/09/19 16:59:27
>>898
ウゼーなお前。
さっさと解説しろや。
901仕様書無しさん:04/09/19 18:06:16
>>896
もしかして、C の話をしてますか?
だとしたらかなり無知ですね。
902仕様書無しさん:04/09/19 19:04:04
0と0以外というより、0がFALSEだから「0でない」はTRUEってだけでは
903仕様書無しさん:04/09/19 21:49:45
>>902
正解。
904887:04/09/19 22:24:16
>>888
>お前頭の中いったいどーなってんのよ
こんな感じになっていますが、何か?

ファルス: o0o

つるつる: (1)
905仕様書無しさん:04/09/20 05:05:24
VC6だと、windef.hで、
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
typedef int BOOL;
となってるな。
ちなみに、boolは1バイトで、true==1, false==0だった。
bool型の変数を++は出来るが、--は出来ないらしい。++した場合は常にtrueだってさ。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclang/html/_langref_bool.asp

C++の仕様ちゃんと読んどくか、、、
906仕様書無しさん:04/09/20 12:48:56
お前ら頭悪すぎww
TRUEは1で、FALSEが0。分かる?
907仕様書無しさん:04/09/20 13:15:28
TRUEかFALSEかの違いはCCRの Z フラグがたっているかいないかだよ。 
908仕様書無しさん:04/09/20 13:30:14
ほかにもCCRのCフラグとかで代用ができる。
スーパーインテリなCやC++ユーザーなら理解できるだろう。

庶民派なVM言語の人間はだめだな。
909890: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自体が超高速だから、あんまり細かいこと気にする必要もないか。
910仕様書無しさん:04/09/20 18:43:45
TRUEはオン、FALSEはオフ
911仕様書無しさん:04/09/20 18:57:20
えーとここは「最高に頭悪い発言をするスレ」になったんだよね?
空気読めなくてごめん。
912仕様書無しさん:04/09/20 19:35:06
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自体が超高速だから、あんまり細かいこと気にする必要もないか。
913仕様書無しさん:04/09/20 20:15:57
890でもJava厨よりは幽愁。
914仕様書無しさん:04/09/20 20:25:10
お前らプログラミングした事無いっしょ(プゲラ
915仕様書無しさん:04/09/21 02:21:07
「プゲラ」 って頭悪そうだよな
916仕様書無しさん:04/09/21 12:54:01
>>909
>CPUには「0か0でないか?」を判定する能力しかないのだよ。
C だけでなく、プロセッサの知識もなかったようですね。
>で、賢いコンパイラなら++や--の場合は、この高速な処理を使うのだよ。(
コンパイラの知識もないようです。
>それにCPU自体が超高速だから、あんまり細かいこと気にする必要もないか。
速度的にシビアなアプリケーションの実装経験もないんですか?

ないないづくしですね。
917仕様書無しさん:04/09/21 13:27:08
とりあえず890のいうCPUはどこのメーカのCPUだ?
918仕様書無しさん:04/09/21 15:45:46
>>909
初心者にわかりやすくするためとはいえ、不正確な表現は良くない。
#最後の2行で素人であることがバレテいるぞ

>>916
>速度的にシビアなアプリケーションの実装経験もないんですか?
寡聞にしてインクリメントの際の命令が問題になるほどの
「速度的にシビアなアプリケーション」を知らないw。教えてクレw
#そんなもんネエヨ。君も素人だね
919仕様書無しさん:04/09/21 16:47:09
>>918
自演乙。
920仕様書無しさん:04/09/23 11:42:56
>>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
923仕様書無しさん:04/09/23 22:51:22
画面に表示された文字が0だからといって、実装が0とは限らんなぁ。
そもそも画面に表示された0の文字コードは0じゃないし。
924仕様書無しさん:04/09/24 00:07:10
>>923
そうなんだよね。
printf("%d\n", 0);
とやっても、実装により 0 の内部表現は 0 とは限らないし。
925仕様書無しさん:04/09/24 00:08:02
a++とか--bとかはinc,decよりむしろ
ポストインクリメントとかプリデクリメントの
アドレッシングモードに対応させた方が分かりやすいような。

6809 

LDA ,X+   ; A = *(X++);
STD ,Y++  ; *(Y += 2) = D;
LDB ,-Y   ; B = *(--Y);
LDX ,--S  ; S-=2; *(S) = X;

みたいな
926仕様書無しさん:04/09/24 00:52:03
>>924
Cの場合パディングビットと符号ビット以外は0になることが保証されている
ので、パディングビットまたは符号ビットが0以外になる場合だね。
逆に全ビット0は整数0になることが保証できる(たしか)。

ありそうなのが負の数が1の補数表現だったり、符号ビット+絶対値表現の
場合のいわゆる-0だね。

intの内部表現にパディングビットのある環境ってあるのかなあ。

>>923
trueはint main() { return 0; }だと思うけど。
(argv[0]を見てなんかやってるかも)
927仕様書無しさん:04/09/25 09:54:19
928仕様書無しさん:04/09/26 11:27:27
このスレまだやってたんかい
929仕様書無しさん:04/09/27 07:58:01
>>918
普通にいっぱいある。インタプリタの最内側でもいいし
グラフィックとかエンコードとかの処理の最内側ループでもいいし。
930仕様書無しさん:04/11/02 20:20:45
931仕様書無しさん:04/11/02 20:51:09
もうすぐ次スレだな。
932仕様書無しさん:04/11/02 21:56:21
まとめ
TRUEは定義されるものであって
なにかから算出されるものではない。よって正しいも糞もない。

以上。終了。
933仕様書無しさん:04/11/03 06:13:13
余談だが、Delphiとかでファイルストリームにboolean値を書き込んで、
バイナリエディタで確かめてみると、
Trueは勿論0x00、Falseは0xFFが書き込まれているのは知っていて
損はないと思うよ。今更だけど。
934933:04/11/03 06:14:15
すまん、逆だ。
Falseは0x00、Trueが0xFFだ。
おっちょこちょいだったな。
935仕様書無しさん:04/11/03 20:44:24
>>934
でも弊社では 0xFF は必ず Invalid Value を表すことになってますよ?
2 バイトなら 0xFFFF, 4 バイトなら 0xFFFFFFFF ね。
936仕様書無しさん:04/11/03 21:02:16
弊社では・・・・・・とか言われてもねー
937仕様書無しさん:04/11/08 23:05:14
VARIANT_TRUE
938仕様書無しさん:04/11/09 16:19:26
スレも終了が近いが、結局誰の意見が正しいのだ?
939仕様書無しさん:04/11/09 16:43:49
>>935
>弊社では

>>933の会社では0xFFは必ずTrueですが何か?^^;
940仕様書無しさん:04/11/09 17:01:31
>>935
C の古典的な書き方で、int main() がエラーを起こして異常終了する時は -1 (要するに全ビット起立!)を返すってのがあるな。
で、ここは TRUE/FALSE について話すスレなんだが、その Invalid Value と何か関係があるのか?
941仕様書無しさん:04/11/09 17:39:32
>>938
オレオレ
942仕様書無しさん:04/11/09 19:05:48
つーかDelphiではByte(True)=1だ
943仕様書無しさん:04/11/09 19:19:58
電気的にはtrue==1だろ。
PGは言語仕様次第。

糸冬 了
944仕様書無しさん:04/11/09 20:08:35
>>943
>電気的にはtrue==1だろ。
いいえ違います。
945仕様書無しさん:04/11/09 20:16:42
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
948仕様書無しさん:04/11/13 09:29:38
>>946
いいえ違います。
949仕様書無しさん:04/11/13 10:33:46

1 = ティムポ

0 = マムコ
950sage:04/11/13 15:24:55
>>949
はいそうです。
951仕様書無しさん:04/11/13 15:42:44
1000までに結論だしとくれよ
952仕様書無しさん:04/11/13 15:50:09
> TRUEは定義されるものであって
> なにかから算出されるものではない。よって正しいも糞もない。

これでいいと思うが。
953仕様書無しさん:04/11/13 16:50:50
でも-1がコンピュータ的には一番自然な定義だね。
954仕様書無しさん:04/11/13 17:29:05
>>953
もうバカは黙っとけ。
955仕様書無しさん:04/11/14 04:50:05
まあ、二乗するとマイナスになる数みたいなもんだよ。!0 って奴は。
956仕様書無しさん:04/11/23 14:15:17
-1だと2つキー押さなきゃならないだろ。
だからわざわざPCが入力者に思いやって1と1つのキーだけにしてくれてるんだよ。
分からないのか?
957仕様書無しさん:04/11/24 22:46:00
んなこたぁない
958仕様書無しさん:04/11/24 23:07:41
ぬるぽの出番はまだですか?
959仕様書無しさん:04/11/24 23:12:34
ガッの出番!
960仕様書無しさん:04/12/02 10:55:53
>>1はCにコダワってないな。
961仕様書無しさん:04/12/09 16:43:57
ところでこんなのはどうよ。
#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なんてわざわざ使わないのが一番だろ。
962仕様書無しさん:04/12/10 14:57:28
>>961
そんな「真偽値が何か解っていない間抜けなコード」持ち出されても。
963仕様書無しさん:04/12/30 11:24:29
やっと答えが出ました

#define TRUE (ここに何か数値)

というコードの意味は

『TRUE の値は不定、柔軟に決める』

ということでし
964仕様書無しさん:04/12/31 01:11:26
963がバカっぷりをさらしただけで何の答えにもなってないな
965仕様書無しさん:05/01/06 09:53:52
const TRUE = !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0;
966仕様書無しさん:05/01/11 18:33:47
>>961
だからなんでCを基準に考えるんだよ。
967仕様書無しさん:05/01/11 22:16:08
/* FALSE が 0 なら TRUE は -1 が正しい */
if(FALSE == 0){
  TRUE = -1;
}
968仕様書無しさん:05/01/13 15:57:24
#define TRUE ((void *)0)
#define FALSE ((void *)1)
969仕様書無しさん:05/01/13 16:40:39
ファルス!
トルゥアッ!!
970仕様書無しさん:05/01/13 18:16:04
つーか、真偽値を整数値にキャストできるような低級言語が高級言語を名乗ってることが一番の問題なんでわ?
971仕様書無しさん:05/01/13 23:49:08
BOOLならTRUEが1以上、FALSEは0。
972仕様書無しさん:05/01/13 23:59:53
TRUEは255か65535か4294967295(か18446744073709551615)でいいんじゃない?
973仕様書無しさん:05/01/14 00:18:04
真実などこの世には存在しない
974仕様書無しさん:05/01/14 00:42:25
なんでもいいよ
975仕様書無しさん:05/01/20 16:15:51
#define TURE 975
976仕様書無しさん:05/01/22 14:00:02
#define FALSE 976
977仕様書無しさん:05/01/22 19:30:03
#pragma message("それで結論は?")
978仕様書無しさん:05/01/22 22:36:33
>>977
このスレは>>56でもう結論は出ているんだよ。

979仕様書無しさん:05/01/29 07:50:30
Const short vbTrue = -1
980仕様書無しさん:05/01/29 10:36:21
Const Short vbFalse = 0
981仕様書無しさん:05/02/04 13:49:33
981
982仕様書無しさん:05/02/05 07:26:28
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仕様書無しさん:05/02/05 07:30:31
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
991仕様書無しさん:05/02/05 07:45:50
aaaa
992仕様書無しさん:05/02/05 07:46:29
991
993仕様書無しさん:05/02/05 07:47:07
993
994sage:05/02/05 07:47:26
a
995仕様書無しさん:05/02/05 07:47:55
b
996仕様書無しさん:05/02/05 07:48:21
995
997仕様書無しさん:05/02/05 07:48:51
997
998仕様書無しさん:05/02/05 07:49:58
998
999仕様書無しさん:05/02/05 07:52:00
999
1000仕様書無しさん:05/02/05 07:52:11
 *     +    巛 ヽ
            〒 !   +    。     +    。     *     。
      +    。  |  |
   *     +   / /   イヤッッホォォォオオォオウ!
       ∧_∧ / /
      (´∀` / / +    。     +    。   *     。
      ,-     f
      / ュヘ    | *     +    。     +   。 +        このスレッドは1000を超えました。
     〈_} )   |                                次スレも…VIPクオリティ!!
        /    ! +    。     +    +     *         http://ex7.2ch.net/news4vip/ 
       ./  ,ヘ  |
 ガタン ||| j  / |  | |||
――――――――――――  
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。