5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

真/偽を表す返値って?!

1 :デフォルトの名無しさん:2001/08/03(金) 17:58
返値に、

正常:0
エラー:-1

とするルールって、昔からありますけど、発祥はどこなんですかね。

JavaScriptなんかだと、boolean(true/false)の他に、
if文等では、「数値の0」、空文字列""、null、undefined、NaNを
false、それ以外はtrueとして扱われますね。

お上の都合もあって、コーディングルールを統一する時に
色々面倒なんですよね...

おそらく過去にもこういうスレあったんだろうとは思うんですが、
現行スレにはないし、倉庫漁るのも...だったので新規一本立ちしてみます。

2 :デフォルトの名無しさん:2001/08/03(金) 18:00
>>1
そんなルールねーよ。

3 :デフォルトの名無しさん:2001/08/03(金) 18:12
unixのシステムコールは大体そうなっとる。
例外あるかな?

4 :デフォルトの名無しさん:2001/08/03(金) 18:31
!0=0xFF・・・
だから-1なだけでは?

整数値返すべき関数のエラー値を負の数で表現すると
扱いやすいとか、そんな理由は無いかなぁ?

5 :デフォルトの名無しさん:2001/08/03(金) 18:48
>!0=0xFF・・・
>だから-1なだけでは?

Cだと !0==1 だけど?

6 :デフォルトの名無しさん:2001/08/03(金) 19:07
>>4 それはビット補数演算死でしょ

~(0x00) = 0xFF

# やべ、チルダでよかったっけ?マチルダさ〜ん

7 :デフォルトの名無しさん:2001/08/03(金) 19:10
ははは。

8 :1:2001/08/03(金) 19:19
企業でのコーディングルールはどうなってるんですかね>返値
勤めてる方の意見も聞いてみたいです。
大抵の方は気にせずに、正常:0 エラー:-1にしてるのかな。

私自身が前に勤めていた時はどうしていたか、記憶にないです...鬱
今現在、個人的には正常:1 エラー:0が好きなんですが...異常ですか 笑

9 : :2001/08/03(金) 19:26
つか、boolだと エラーの種類返せないじゃん

10 :デフォルトの名無しさん:2001/08/03(金) 19:28
>>8 例外。今時の C/C++/Java 系は返値でエラーを示すような
ダサい設計どこもしとらん (組み込みとかは別だろうが)。

11 :デフォルトの名無しさん:2001/08/03(金) 19:55
BOOL/booleanで返すならtrueで正常でいいし
intで返すなら0=正常、それ以外=エラー(エラーコード)
今時ならbooleanで返して例外投げるか、Win的にするなら
GetLastErrorとか使うか

12 :デフォルトの名無しさん:2001/08/03(金) 20:12
>今時の C/C++/Java 系は返値でエラーを示すようなダサい設計どこもしとらん

C++, Java はともかく、
Cに例外ってありましたっけ。

ってもしやC99には取り入れられた?

13 :1:2001/08/03(金) 20:22
もちろん、こんな私だって最近はJavaでboolean使ったりするわけですが、
ASPでエラーチェック関数用意した時とか...

14 :デフォルトの名無しさん:2001/08/03(金) 20:23
特定の処理系にはあるのかも。C99標準にはないでしょ。
http://www.geocities.co.jp/SiliconValley/1002/c99d/

15 :デフォルトの名無しさん:2001/08/03(金) 20:27
無理矢理Cでマクロとlongjumpつかって例外のまねごとしたことあるけど
死んだ>俺が

16 :デフォルトの名無しさん:2001/08/03(金) 20:27
デジタル回路の名残でないのか?
電圧低い→false、0
電圧高い→true、1

17 :デフォルトの名無しさん:2001/08/03(金) 20:31
>>14
inlineがCでも使えたなんてしらなんだ。

18 :デフォルトの名無しさん:2001/08/03(金) 20:35
誰もgccとは言ってないけど。

>>17
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/gccextend.html

おもしろいよ。もし例外が使えるCの処理系があるなら教えて欲しいです。

19 :デフォルトの名無しさん:2001/08/03(金) 20:41
前の会社は戻り値は文字列で返していました(C言語)。
"OK", "NG"
"YES", "NO"
"TRUE", "FALSE"
"GOOD", "BAD"
・・・
しかも統一されていない。
1グローバル変数に値を入力する。
2関数を呼ぶ
3戻り値チェック
4OKならこの関数の結果がグローバル変数へ代入されている。
 NGなら前に呼んだ関数の結果がグローバル変数へ代入されたまま。

COBOLのプログラムをCへ忠実に移植したものです。
かなり古いCOBOL仕様です。70年代。

20 :デフォルトの名無しさん:2001/08/03(金) 21:22
>今現在、個人的には正常:1 エラー:0が好きなんですが...異常ですか 笑

「正常」は1種類しかないけど、「失敗」には何種類もあるので、
正常:0 エラー:その他 のほうがやっぱり合理的ではないでしょうか?

21 :デフォルトの名無しさん:2001/08/03(金) 21:40
最近のはほとんど C++ 対応だから、逆に例外が使えない C コンパイラ
を探す方が難しいのではないか?LSI C-86試食版とかか。

22 :デフォルトの名無しさん:2001/08/03(金) 21:51
>>21
>最近のはほとんど C++ 対応だから

Cとしてコンパイルさせたときも例外使えるのか?

23 :デフォルトの名無しさん:2001/08/03(金) 22:03
Cで戻り値で表すなら 正常/成功=!0 異常/失敗=0 派です。
エラー原因は別の変数使う。
if (func()) //成功
if (!func()) //失敗

24 :デフォルトの名無しさん:2001/08/03(金) 22:37
どうせならebxレジスタにでも格納しましょう。

25 :デフォルトの名無しさん:2001/08/03(金) 23:07
なぜわざわざ C としてコンパイルする必要があるんだ?
オープンソースで作ってるなら話はべつだが、使えるもの使わん奴は
ただの車輪屋さんだぞ。ちなみに数年前の gcc はオプションで例外
使えるようになってたが、よくコンパイルで「構文が複雑すぎる」と
文句いわれてた。

26 :デフォルトの名無しさん:2001/08/03(金) 23:14
>>25
駄目駄目なC屋が書いたコードはconst性のチェックでひっかかって
コンパイルできず、Cとしてコンパイルするに1票

27 :25:2001/08/03(金) 23:17
>>26 それは悲しすぎる...

28 :26:2001/08/03(金) 23:19
でもありがちじゃない?
C屋が書いたライブラリを使う羽目になるとconst_castしまくりなんだけど。
俺の周りだけ?

29 :26:2001/08/03(金) 23:21
やばい。別にCが嫌いなわけじゃないです。
実際に今も2ch見ながらCのコード書いてる。

30 :デフォルトの名無しさん:2001/08/03(金) 23:25
しかもスレの趣旨からはずれた...ごめん。

31 :デフォルトの名無しさん:2001/08/04(土) 11:44
真理値についてHSPで激しく争っていた人々がいたなあ。

7 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)