!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
※前スレ
C言語なら俺に聞け 156
https://mevius.5ch.net/test/read.cgi/tech/1601271690/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 157
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0345-kMi9)
2021/06/28(月) 11:22:51.50ID:so+vl3vs0164デフォルトの名無しさん (ワッチョイ 4abd-EmkS)
2021/08/02(月) 01:06:43.81ID:AinH6UQa0 amd64で動くN-BASICがあるならできるんじゃない?
無いなら無理だわな
無いなら無理だわな
165デフォルトの名無しさん (ワッチョイ 7a01-stwz)
2021/08/02(月) 05:11:39.16ID:qOaSDvjS0166デフォルトの名無しさん (ワッチョイ d6d2-MjzU)
2021/08/02(月) 07:46:31.20ID:HO5h+jLQ0 最近はスマホのカメラ部品にTRON OS入ってるんだって?
もうBIOSやファームウェアもOSになるんじゃないかとも思っちゃう。
もうBIOSやファームウェアもOSになるんじゃないかとも思っちゃう。
167デフォルトの名無しさん (アウウィフ FF09-dcBe)
2021/08/02(月) 10:11:13.69ID:nmkqokJHF168デフォルトの名無しさん (アウウィフ FF09-dcBe)
2021/08/02(月) 10:12:43.19ID:nmkqokJHF169デフォルトの名無しさん (ワッチョイ 7a01-stwz)
2021/08/02(月) 11:03:41.91ID:qOaSDvjS0170デフォルトの名無しさん (ワントンキン MM8a-6lFD)
2021/08/02(月) 12:33:14.68ID:uwbNVnssM >>169
もちろんネタと書いてあるのでネタなんでしょ。
もちろんネタと書いてあるのでネタなんでしょ。
171デフォルトの名無しさん (エムゾネ FF9a-By/s)
2021/08/02(月) 13:13:02.28ID:y7YH8RaeF Basic Interpreter OS
172デフォルトの名無しさん (エムゾネ FF9a-By/s)
2021/08/02(月) 13:17:25.48ID:y7YH8RaeF 質問です
int flagA = 3 == 3;
int flagB = 3 == 3 == 3;
int flagC = 3 == 3 == 1;
の結果が
flagA : 1
flagB : 0
flagC : 1
になるのですが
flag B とか flag C は何が怒っているのでしょうか?
int flagA = 3 == 3;
int flagB = 3 == 3 == 3;
int flagC = 3 == 3 == 1;
の結果が
flagA : 1
flagB : 0
flagC : 1
になるのですが
flag B とか flag C は何が怒っているのでしょうか?
173デフォルトの名無しさん (ワッチョイ d6d2-By/s)
2021/08/02(月) 13:31:37.39ID:HO5h+jLQ0 >int flagB = 3 == 3 == 3;
↓
int flagB = (3 == 3) == 3;
↓
int flagB = (1) == 3;
↓
int flagB = 0;
>int flagC = 3 == 3 == 1;
↓
int flagC = (3 == 3) == 1;
↓
int flagC = ( 1 ) == 1;
↓
int flagC = 1;
↓
int flagB = (3 == 3) == 3;
↓
int flagB = (1) == 3;
↓
int flagB = 0;
>int flagC = 3 == 3 == 1;
↓
int flagC = (3 == 3) == 1;
↓
int flagC = ( 1 ) == 1;
↓
int flagC = 1;
174デフォルトの名無しさん (エムゾネ FF9a-By/s)
2021/08/02(月) 13:31:42.08ID:y7YH8RaeF int flagD = 3 != 3;
int flagE = 3 != 3 == 0;
int flagF = 3 != 3 == 1;
flagD : 0
flagE : 1
flagF : 0
になります
int flagE = 3 != 3 == 0;
int flagF = 3 != 3 == 1;
flagD : 0
flagE : 1
flagF : 0
になります
175デフォルトの名無しさん (ワッチョイ 1545-Xvfy)
2021/08/02(月) 13:31:46.39ID:59KH06XU0 タイホするっ!! ダーン ダーン
int flagB =
ここまでと
3 == 3 == 3
が別のパーツになっていて
== は左から結合するので
(3 == 3) == 3 となり真は1になるので
1 == 3 で偽すなわち0だ
int flagB =
ここまでと
3 == 3 == 3
が別のパーツになっていて
== は左から結合するので
(3 == 3) == 3 となり真は1になるので
1 == 3 で偽すなわち0だ
176デフォルトの名無しさん (エムゾネ FF9a-By/s)
2021/08/02(月) 13:41:18.14ID:y7YH8RaeF 解決しました
ありがとうございました
ありがとうございました
177デフォルトの名無しさん (ワッチョイ 7aad-ePXc)
2021/08/02(月) 16:38:34.45ID:qdvnGLBb0 俺が怒っている
178デフォルトの名無しさん (ワッチョイ 0d21-DKVi)
2021/08/02(月) 19:33:02.95ID:YziYRSV70 演算子の優先順位って覚えるのヤダー。自分書くと括弧だらけだわ。
どの辺が塩梅なんかねー?明示的でないと駄目よってコーディングとかもあるし。
どの辺が塩梅なんかねー?明示的でないと駄目よってコーディングとかもあるし。
179デフォルトの名無しさん (ワッチョイ d563-IKHw)
2021/08/02(月) 19:49:19.60ID:5dFVW6Kq0 それでいいよ
180デフォルトの名無しさん (ワッチョイ 6501-i0sM)
2021/08/02(月) 20:03:46.84ID:Uu01rKAP0 & ^ | なんかのビット演算が比較よか低いのが微妙に嫌
181デフォルトの名無しさん (ワッチョイ 1545-Xvfy)
2021/08/03(火) 09:51:48.02ID:wbx4PwZT0 憶える気のない者は成長しない
182デフォルトの名無しさん (アウアウウー Sa09-Vs42)
2021/08/03(火) 10:01:19.19ID:Z1msEN+ba 結合の優先度は、自分が分かっていても
記憶があやふやな人が不安になるといけないから
結局カッコを明示的に描くかな…
記憶があやふやな人が不安になるといけないから
結局カッコを明示的に描くかな…
183デフォルトの名無しさん (ワッチョイ 1545-Xvfy)
2021/08/03(火) 10:17:52.20ID:wbx4PwZT0 中学のマイコン部かよ
184デフォルトの名無しさん (オッペケ Sr05-DKVi)
2021/08/03(火) 13:41:40.87ID:34OfFMxOr >>181
覚える気があっても、覚えさせられる気がしねー。
覚える気があっても、覚えさせられる気がしねー。
185デフォルトの名無しさん (ワッチョイ 1545-Xvfy)
2021/08/03(火) 13:45:58.11ID:wbx4PwZT0 自分を磨くのは本人なので
そんなお節介は考えなくていい
そんなお節介は考えなくていい
186デフォルトの名無しさん (ワッチョイ d510-IKHw)
2021/08/03(火) 14:20:08.34ID:kdIV+1e00 CでC++の純粋仮想関数のような事をやりたいのですができますか? 疑似インターフェースです。
187デフォルトの名無しさん (ワッチョイ 1545-Xvfy)
2021/08/03(火) 14:30:35.30ID:wbx4PwZT0 typedef struct iunknown iunknown;
struct vtable
{
int (*query_interface)(iunknown*, int, void**);
int (*add_ref)(iunknown*);
int (*release)(iunknown*);
};
struct iunknown
{
long count;
vtable* vtbl;
};
みたいなことか?
struct vtable
{
int (*query_interface)(iunknown*, int, void**);
int (*add_ref)(iunknown*);
int (*release)(iunknown*);
};
struct iunknown
{
long count;
vtable* vtbl;
};
みたいなことか?
188デフォルトの名無しさん (ワッチョイ 1545-Xvfy)
2021/08/03(火) 14:31:17.98ID:wbx4PwZT0 あ、いかんvtableのtypedef忘れたけどまあ許せやw
189デフォルトの名無しさん (ワッチョイ 3a71-stwz)
2021/08/03(火) 14:32:38.22ID:lGpJxUYy0 のような事の解釈余地に幅がありすぎ
190デフォルトの名無しさん (テテンテンテン MMee-stwz)
2021/08/03(火) 19:27:01.81ID:I3gKaej4M 幅があると言うなら狭めるようなヒント書けばいいだけ
たたき台として>>187はそれほど悪くないと思う
たたき台として>>187はそれほど悪くないと思う
191デフォルトの名無しさん (ワッチョイ d510-IKHw)
2021/08/03(火) 20:41:05.50ID:kdIV+1e00 >>187
スゴーイ 感謝感激 ありがとうございます。
typedef struct {
void (*interface_a)();
void (*interface_b();
,
.
} TINTERFACEXXX;
typedef struct {
TINTERFACE ia;
} TOBJA;
なんてリレーションスタイルも考えたんですが、
いずれにしろ、クリーンアーキテクチャーのCでのSOLID原則ができるというところまでこぎつけました。
ありがとうございます。
スゴーイ 感謝感激 ありがとうございます。
typedef struct {
void (*interface_a)();
void (*interface_b();
,
.
} TINTERFACEXXX;
typedef struct {
TINTERFACE ia;
} TOBJA;
なんてリレーションスタイルも考えたんですが、
いずれにしろ、クリーンアーキテクチャーのCでのSOLID原則ができるというところまでこぎつけました。
ありがとうございます。
192デフォルトの名無しさん (ワッチョイ 2185-By/s)
2021/08/03(火) 23:48:19.32ID:Ucc8C21f0 COM最強
193デフォルトの名無しさん (JP 0Hee-YhuA)
2021/08/05(木) 14:10:06.71ID:9IiPo8vtH 奥村晴彦 『改訂新版 C言語による標準アルゴリズム事典』の
「改訂新版 序」に、
> 現代の慣習に従って、[…] EXIT_SUCCESSを0にしたりした
とあるのですが、EXIT_SUCCESSマクロ変数を使った方が
定数即値を決め打ちするよりも可搬的であり、
それこそ「現代の慣習」であるように思うのですが、
実際はEXIT_SUCCESSより0を使う方が「現代的」なんですかね。
なお、誤植も疑ったのですが、集録されている実際のコードにおいても
return 0;と書かれていました。
「改訂新版 序」に、
> 現代の慣習に従って、[…] EXIT_SUCCESSを0にしたりした
とあるのですが、EXIT_SUCCESSマクロ変数を使った方が
定数即値を決め打ちするよりも可搬的であり、
それこそ「現代の慣習」であるように思うのですが、
実際はEXIT_SUCCESSより0を使う方が「現代的」なんですかね。
なお、誤植も疑ったのですが、集録されている実際のコードにおいても
return 0;と書かれていました。
194デフォルトの名無しさん (ワッチョイ cee7-i0sM)
2021/08/05(木) 14:30:14.22ID:O0DzK1TA0195デフォルトの名無しさん (JP 0Hee-YhuA)
2021/08/05(木) 15:00:49.33ID:9IiPo8vtH196はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 213e-Gkqf)
2021/08/05(木) 15:20:09.93ID:igzlcjJl0 >>193
思想的にはともかく、その件については習慣として定着してるという事実があるんで、
事実に逆らってもしょうがない。
ちなみに main 関数だけは return 文を通過せずに } に到達した場合には
return 0; と同じになるという仕様になってるんで、 return 文自体を省略するという
スタイルもある。
思想的にはともかく、その件については習慣として定着してるという事実があるんで、
事実に逆らってもしょうがない。
ちなみに main 関数だけは return 文を通過せずに } に到達した場合には
return 0; と同じになるという仕様になってるんで、 return 文自体を省略するという
スタイルもある。
197デフォルトの名無しさん (ワッチョイ 1545-Xvfy)
2021/08/05(木) 16:18:55.16ID:TenuDSkO0 >>193
mainの出口は仕方ないんだよ
enumなんて考え方ができる遙か前に決まったことで今さら変えられないというのが現実だ
mainの第2引数だって今ならconst付けそうなところだけど
これまたconstなんかなかった頃に決まったことだ
mainの出口は仕方ないんだよ
enumなんて考え方ができる遙か前に決まったことで今さら変えられないというのが現実だ
mainの第2引数だって今ならconst付けそうなところだけど
これまたconstなんかなかった頃に決まったことだ
198デフォルトの名無しさん (アウアウウー Sa09-YhuA)
2021/08/05(木) 17:17:51.97ID:lrEA3gELa >>197
歴史的にはそうなのかもしれないけど、それだと「EXIT_SUCCESSを0に」することが「現代の慣習」であることの説明になってなくないような
なんでEXIT_SUCCESSと書いてたのを0と書くようにしたのかが知りたいんでは
もう納得してるみたいなんでアレだけども
歴史的にはそうなのかもしれないけど、それだと「EXIT_SUCCESSを0に」することが「現代の慣習」であることの説明になってなくないような
なんでEXIT_SUCCESSと書いてたのを0と書くようにしたのかが知りたいんでは
もう納得してるみたいなんでアレだけども
199デフォルトの名無しさん (ワッチョイ 1545-Xvfy)
2021/08/05(木) 17:57:00.56ID:TenuDSkO0 enumつったんだけど
話通じてねえな
話通じてねえな
200デフォルトの名無しさん (ワッチョイ 7a01-stwz)
2021/08/05(木) 18:23:46.65ID:sS7OglMj0 マジックナンバーなんて駄目でしよってノリでEXIT_SUCCESSを使ってたけどあまり流行らなかったから0に戻したってことじゃないの?
201デフォルトの名無しさん (ワッチョイ 7a01-stwz)
2021/08/05(木) 18:25:20.09ID:sS7OglMj0 >>199
マクロ (#define) の話だからenum関係ないよ
マクロ (#define) の話だからenum関係ないよ
202デフォルトの名無しさん (ワッチョイ 79bb-Gkqf)
2021/08/05(木) 18:36:03.13ID:C1udim1A0 C言語7不思議
enum { A=1 } main(void) { return A; }
このコードは合法か否か?
enum { A=1 } main(void) { return A; }
このコードは合法か否か?
203デフォルトの名無しさん (アウアウクー MMc5-uEVp)
2021/08/05(木) 18:54:07.04ID:nywX30PRM 法なんてない
204デフォルトの名無しさん (ワッチョイ 1545-Xvfy)
2021/08/05(木) 20:40:48.16ID:TenuDSkO0205デフォルトの名無しさん (テテンテンテン MMee-stwz)
2021/08/05(木) 21:00:13.63ID:RBdzanHxM オレのばっちゃが決めたんだ
206デフォルトの名無しさん (ワッチョイ 7a01-stwz)
2021/08/05(木) 21:12:45.92ID:sS7OglMj0207デフォルトの名無しさん (ワッチョイ 16da-Gkqf)
2021/08/05(木) 22:30:22.56ID:TWSeb4Gn0 横だけどeasing関数でマジックナンバーっての見たけど、結局何だったのかわからないままですわ
208デフォルトの名無しさん (ワッチョイ 6501-i0sM)
2021/08/05(木) 22:33:51.51ID:RyeVbM3/0 線形合同法で作る乱数に出てくる謎定数
209はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-yyuh)
2021/08/06(金) 00:25:46.52ID:xkvwFph10 >>202
基本的には否だが、許容される場合はありうる。
main の型は以下のいずれか。
@ int main(void);
A int main(int argc, char * argv[]);
B 以上の二つのいずれかと等価 †1
C 以上の三つのいずれでもない処理系定義の方法
それとは別に
「main関数の返却値の型がintと適合しない場合,ホスト環境に戻される終了状態は,未規定とする。」†2
とするという文言もある。
C で言う「未規定」というのは処理系が挙動を選択して良いことを意味するので、
適合しなくても適合したときと同等の処理になるように実装している処理系はあるかもしれない。
enum で定義した型 (列挙型) は
「char,符号付き整数型又は符号無し整数型と適合する型とする。型の選択は,処理系定義とする」 †3
とあり、列挙型が int と適合する可能性はある。
また、上述のCとして処理系が main の返却値の型が列挙型であったときを許容するような定義をしているかもしれない。
-------------------------
†1 typedef やマクロによる別名、あるいは型調整などで同等になるものという意味
†2 「適合」に関する規則は複雑なのでここでは説明しない
†3 個別の列挙型ごとに選択してよい
基本的には否だが、許容される場合はありうる。
main の型は以下のいずれか。
@ int main(void);
A int main(int argc, char * argv[]);
B 以上の二つのいずれかと等価 †1
C 以上の三つのいずれでもない処理系定義の方法
それとは別に
「main関数の返却値の型がintと適合しない場合,ホスト環境に戻される終了状態は,未規定とする。」†2
とするという文言もある。
C で言う「未規定」というのは処理系が挙動を選択して良いことを意味するので、
適合しなくても適合したときと同等の処理になるように実装している処理系はあるかもしれない。
enum で定義した型 (列挙型) は
「char,符号付き整数型又は符号無し整数型と適合する型とする。型の選択は,処理系定義とする」 †3
とあり、列挙型が int と適合する可能性はある。
また、上述のCとして処理系が main の返却値の型が列挙型であったときを許容するような定義をしているかもしれない。
-------------------------
†1 typedef やマクロによる別名、あるいは型調整などで同等になるものという意味
†2 「適合」に関する規則は複雑なのでここでは説明しない
†3 個別の列挙型ごとに選択してよい
210デフォルトの名無しさん (ワッチョイ b145-IIsV)
2021/08/06(金) 07:01:45.65ID:QgUKHcUo0 >>206
おまえさんこそ何かわかってなさそうだな
なぜ、その値なのか由来が不明な定数は
スペルが0であろうがEXIT_SUCCESSであろうが
0x00であろうが本質的に同じことだぞ
UNIXを背景とせずにreturn 0;が説明できるか?
おまえさんみたいにググって拾った情報を丸呑みしてると
わかってないやつの間違った理解が伝搬するだけだぜ
おまえさんこそ何かわかってなさそうだな
なぜ、その値なのか由来が不明な定数は
スペルが0であろうがEXIT_SUCCESSであろうが
0x00であろうが本質的に同じことだぞ
UNIXを背景とせずにreturn 0;が説明できるか?
おまえさんみたいにググって拾った情報を丸呑みしてると
わかってないやつの間違った理解が伝搬するだけだぜ
211デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/06(金) 08:15:51.79ID:3zvDecHz0 >>210
EXIT_SUCCESSがどういう意味かもわからないなら英語からやり直せよw
値の話じゃないことぐらい理解しろ
非常に稀な例としてEXIT_SUCCESSが0でないシステムが存在する
例えばOpenVMSでは
EXIT_SUCCESS = 1
EXIT_FAILURE = 2
だったりする
http://fafner.dyndns.org/cgi-bin/conan.com?key=CRTL~exit%2C_exit~Argument&title=VMS%20Help
なのでそういうシステムへの移植を考えてるなら意味はあるけどそんな人はほとんどいないからreturn 0;でいいやんって話
そもそもunixでも0, 1以外の値を返すコマンドは多数あってその場合は自分でEXIT_xxxを定義する必要あるから0, 1だけ定義されててもねぇって感じもあるし
EXIT_SUCCESSがどういう意味かもわからないなら英語からやり直せよw
値の話じゃないことぐらい理解しろ
非常に稀な例としてEXIT_SUCCESSが0でないシステムが存在する
例えばOpenVMSでは
EXIT_SUCCESS = 1
EXIT_FAILURE = 2
だったりする
http://fafner.dyndns.org/cgi-bin/conan.com?key=CRTL~exit%2C_exit~Argument&title=VMS%20Help
なのでそういうシステムへの移植を考えてるなら意味はあるけどそんな人はほとんどいないからreturn 0;でいいやんって話
そもそもunixでも0, 1以外の値を返すコマンドは多数あってその場合は自分でEXIT_xxxを定義する必要あるから0, 1だけ定義されててもねぇって感じもあるし
212デフォルトの名無しさん (ワッチョイ b145-IIsV)
2021/08/06(金) 08:30:30.04ID:QgUKHcUo0213はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-yyuh)
2021/08/06(金) 09:12:19.75ID:xkvwFph10 >>211
関係ない。 言語仕様としては 0 が成功を表すというのは保証された動作で、
もしもホスト環境の都合と食い違うならランタイムサポート (スタートアップルーチン) で補正すべきこと。
EXIT_SUCCESS 「も」成功を意味する値として使えるというのとは独立した話。
関係ない。 言語仕様としては 0 が成功を表すというのは保証された動作で、
もしもホスト環境の都合と食い違うならランタイムサポート (スタートアップルーチン) で補正すべきこと。
EXIT_SUCCESS 「も」成功を意味する値として使えるというのとは独立した話。
214デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/06(金) 09:17:08.98ID:3zvDecHz0215デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/06(金) 09:19:10.68ID:3zvDecHz0216デフォルトの名無しさん (ワッチョイ 1be7-mBWR)
2021/08/06(金) 09:19:24.86ID:9vf9CEgT0217デフォルトの名無しさん (ワッチョイ 1be7-mBWR)
2021/08/06(金) 09:26:12.98ID:9vf9CEgT0 >>215
mainの戻り値がデフォルトで正常なときは 0 なのは言語仕様に規定されてるね
0又はEXIT_SUCCESSの場合,成功終了
この「又は」はほんとにORなので、EXIT_SUCCESS=1 のときは 0でも1でも正常よ
mainの戻り値がデフォルトで正常なときは 0 なのは言語仕様に規定されてるね
0又はEXIT_SUCCESSの場合,成功終了
この「又は」はほんとにORなので、EXIT_SUCCESS=1 のときは 0でも1でも正常よ
218はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-yyuh)
2021/08/06(金) 09:44:11.58ID:xkvwFph10 >>215
繰り返すが EXIT_SUCCESS 「も」成功を表すことは保証されている。
それとは関係なく 0 が成功なのは保証された動作
以下は C99 からの抜粋 (日本語は JIS から対応箇所を抜粋)
5.1.2.2.3 Program termination
If the return type of the main function is a type compatible with int,areturn from the
initial call to the main function is equivalent to calling the exit function with the value
returned by the main function as its argument
main関数の返却値の型がintと適合する場合,main関数の最初の呼出しからの復帰は,
main関数が返す値を実引数としてもつexit関数の呼出しと等価とする
7.20.4.3 7.20.4.3 The exit function
If the value of status is zero or
EXIT_SUCCESS, an implementation-defined form of the status successful termination is
returned. If the value of status is EXIT_FAILURE, an implementation-defined form
of the status unsuccessful termination is returned. Otherwise the status returned is
implementation-defined.
statusの値が0又はEXIT?SUCCESSの場合,成功終了(successful termination)状態を処理系定義の形式で返す。
statusの値がEXIT?FAILUREの場合,失敗終了(unsuccessful termination)状態を処理系定義の形式で返す。
それ以外の場合,返される状態は処理系定義とする。
繰り返すが EXIT_SUCCESS 「も」成功を表すことは保証されている。
それとは関係なく 0 が成功なのは保証された動作
以下は C99 からの抜粋 (日本語は JIS から対応箇所を抜粋)
5.1.2.2.3 Program termination
If the return type of the main function is a type compatible with int,areturn from the
initial call to the main function is equivalent to calling the exit function with the value
returned by the main function as its argument
main関数の返却値の型がintと適合する場合,main関数の最初の呼出しからの復帰は,
main関数が返す値を実引数としてもつexit関数の呼出しと等価とする
7.20.4.3 7.20.4.3 The exit function
If the value of status is zero or
EXIT_SUCCESS, an implementation-defined form of the status successful termination is
returned. If the value of status is EXIT_FAILURE, an implementation-defined form
of the status unsuccessful termination is returned. Otherwise the status returned is
implementation-defined.
statusの値が0又はEXIT?SUCCESSの場合,成功終了(successful termination)状態を処理系定義の形式で返す。
statusの値がEXIT?FAILUREの場合,失敗終了(unsuccessful termination)状態を処理系定義の形式で返す。
それ以外の場合,返される状態は処理系定義とする。
219デフォルトの名無しさん (ワッチョイ b145-IIsV)
2021/08/06(金) 10:06:15.17ID:QgUKHcUo0 >>214
#define AHO_NO_3zvDecHz0 0
int main(void)
{
return AHO_NO_3zvDecHz0;
}
こう書いてもなぜ0なのかはわからない
マジックナンバーとはこういうことだぞ
extern int svc_get_success_code();
int main(void)
{
return svc_get_success_code();
}
こういうのと違うからな
#define AHO_NO_3zvDecHz0 0
int main(void)
{
return AHO_NO_3zvDecHz0;
}
こう書いてもなぜ0なのかはわからない
マジックナンバーとはこういうことだぞ
extern int svc_get_success_code();
int main(void)
{
return svc_get_success_code();
}
こういうのと違うからな
220デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/06(金) 10:38:06.15ID:3zvDecHz0221デフォルトの名無しさん (ワッチョイ b145-IIsV)
2021/08/06(金) 10:53:05.07ID:QgUKHcUo0 5.1.2.2.3 プログラム終了処理
main 関数の返却値の型がint と適合する場合,main 関数の最初の呼出しからの復帰は,main 関数が返す値を実引数としてもつexit 関数の呼出しと等価とする。main 関数を終了する}に到達した場合,main 関数は,値0 を返す。
7.20 一般ユーティリティ<stdlib.h>
EXIT_FAILURE
及び
EXIT_SUCCESS
は,整数定数式に展開され,それぞれホスト環境に失敗終了状態又は成功終了状態を返すために,exit関数の実引数として使用することができる。
main 関数の返却値の型がint と適合する場合,main 関数の最初の呼出しからの復帰は,main 関数が返す値を実引数としてもつexit 関数の呼出しと等価とする。main 関数を終了する}に到達した場合,main 関数は,値0 を返す。
7.20 一般ユーティリティ<stdlib.h>
EXIT_FAILURE
及び
EXIT_SUCCESS
は,整数定数式に展開され,それぞれホスト環境に失敗終了状態又は成功終了状態を返すために,exit関数の実引数として使用することができる。
222デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/06(金) 11:01:20.62ID:3zvDecHz0223デフォルトの名無しさん (ワッチョイ b145-IIsV)
2021/08/06(金) 11:25:57.87ID:QgUKHcUo0224デフォルトの名無しさん (テテンテンテン MM8b-bikt)
2021/08/06(金) 11:59:37.28ID:GGzcYLSBM225デフォルトの名無しさん (ワッチョイ b145-IIsV)
2021/08/06(金) 12:04:06.56ID:QgUKHcUo0 は? EXIT_SUCCESSの意味を英語で理解しろとか言ってきたのおまえさんだぜ
NO_PROBLEMなんてオレオレマクロでもおまえさんは満足なんだろ
どうりで規格票もロクに読まねえわけだ
プログラマ辞めちまえをそのまま返すぜドスカタン
NO_PROBLEMなんてオレオレマクロでもおまえさんは満足なんだろ
どうりで規格票もロクに読まねえわけだ
プログラマ辞めちまえをそのまま返すぜドスカタン
226デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/06(金) 13:43:09.92ID:3zvDecHz0 > は? EXIT_SUCCESSの意味を英語で理解しろとか言ってきたのおまえさんだぜ
EXITもSUCCESSも英語だから英語「を」理解しろって言ってるんだが?
英語の前にお前は日本語を理解できるようになならないと駄目だなw
EXITもSUCCESSも英語だから英語「を」理解しろって言ってるんだが?
英語の前にお前は日本語を理解できるようになならないと駄目だなw
227デフォルトの名無しさん (ワッチョイ b145-IIsV)
2021/08/06(金) 14:26:52.67ID:QgUKHcUo0 知らねえやつがまずいない英単語でドヤってて恥ずかしくねえの? ちょっと神経わからんなw
Cを使う以上はISO/IEC 9899に書かれていることが前提だからこそEXIT_SUCCESSというスペルの意味を知っているべきだが
おまえさんが露呈したアレこそがプログラマにあるまじき姿だろうがよ
Cを使う以上はISO/IEC 9899に書かれていることが前提だからこそEXIT_SUCCESSというスペルの意味を知っているべきだが
おまえさんが露呈したアレこそがプログラマにあるまじき姿だろうがよ
228デフォルトの名無しさん (ワッチョイ 33bd-kkkT)
2021/08/06(金) 14:34:50.29ID:KBiduyaj0 シェルスクリプトスレの名物キチガイコンビみたいだなお前ら
229デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/06(金) 15:10:51.95ID:3zvDecHz0230デフォルトの名無しさん (ワッチョイ b145-IIsV)
2021/08/06(金) 15:15:17.60ID:QgUKHcUo0231デフォルトの名無しさん (ワッチョイ b145-IIsV)
2021/08/06(金) 15:23:31.43ID:QgUKHcUo0 規格票は英語で書かれているわけだが
読んでないのは誰かさんだったね(プークスクス
読んでないのは誰かさんだったね(プークスクス
232デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/06(金) 15:34:06.02ID:3zvDecHz0233デフォルトの名無しさん (ワッチョイ b145-IIsV)
2021/08/06(金) 15:37:08.92ID:QgUKHcUo0 スルーすれば逃げられると思っているようなのでもう一度言ってやる
Cを使う以上はISO/IEC 9899に書かれていることが前提だからこそEXIT_SUCCESSというスペルの意味を知っているべきだが
おまえさんが露呈したアレこそがプログラマにあるまじき姿だろうがよ
Cを使う以上はISO/IEC 9899に書かれていることが前提だからこそEXIT_SUCCESSというスペルの意味を知っているべきだが
おまえさんが露呈したアレこそがプログラマにあるまじき姿だろうがよ
234デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/06(金) 17:07:54.01ID:3zvDecHz0 露呈したのはEXITやSUCCESSでドヤられたとか思うお前のレベルだろw
236デフォルトの名無しさん (ワッチョイ 3163-Z6Ah)
2021/08/06(金) 20:02:31.35ID:CzNdrnJF0 main以外の関数だと、成功失敗の値は特に決められてはいないんですよね?
237デフォルトの名無しさん (ワッチョイ d1da-+f9r)
2021/08/06(金) 20:47:42.91ID:y8oe7xdW0238デフォルトの名無しさん (ワッチョイ d101-mBWR)
2021/08/06(金) 20:49:05.43ID:+/iE6x4C0 (s)scanf() の戻りは渡った非引数への変換に成功した数ですし ケースバイケースですわね
239デフォルトの名無しさん (ワッチョイ d101-mBWR)
2021/08/06(金) 20:49:34.62ID:+/iE6x4C0 s/非/被/
240はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-yyuh)
2021/08/07(土) 00:16:24.99ID:YBZ7G4A60 >>236
規定はないけどある程度の習慣はあって、おおざっぱにまとめると
・関数が受け持つ機能が副作用であり、
返却値は成功or失敗のみを通知すればよいときは 0 を成功値とする
・関数が意味のある値を返すときはありうる値の範囲ではない値を失敗値とする
(0、ヌルポインタ、負数、無限、NaNなど)
・入力値 (関数の引数) が正しい限り失敗がないことを見込めるときは
不正な入力があった場合を未定義とする
(呼出し前にチェックされているか、ロジック上正しいことをプログラマが保証することを期待する)
という感じだと思う。
あくまでも標準ライブラリやそれを踏襲した習慣をまとめるとこんな感じだろうという私なりのまとめなので
常に正しい選択というわけではないということはことわっておくが、
標準ライブラリを全く使わないようなプログラムもないだろうし
標準ライブラリを真似ておけば全体として一貫性が出て綺麗なんじゃないかな。
規定はないけどある程度の習慣はあって、おおざっぱにまとめると
・関数が受け持つ機能が副作用であり、
返却値は成功or失敗のみを通知すればよいときは 0 を成功値とする
・関数が意味のある値を返すときはありうる値の範囲ではない値を失敗値とする
(0、ヌルポインタ、負数、無限、NaNなど)
・入力値 (関数の引数) が正しい限り失敗がないことを見込めるときは
不正な入力があった場合を未定義とする
(呼出し前にチェックされているか、ロジック上正しいことをプログラマが保証することを期待する)
という感じだと思う。
あくまでも標準ライブラリやそれを踏襲した習慣をまとめるとこんな感じだろうという私なりのまとめなので
常に正しい選択というわけではないということはことわっておくが、
標準ライブラリを全く使わないようなプログラムもないだろうし
標準ライブラリを真似ておけば全体として一貫性が出て綺麗なんじゃないかな。
241デフォルトの名無しさん (ワッチョイ 6985-6hcM)
2021/08/07(土) 00:29:33.44ID:rXkekRAR0 strcmp
242はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-yyuh)
2021/08/07(土) 00:54:21.18ID:YBZ7G4A60 strcmp は失敗しない。
243デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/07(土) 06:09:45.55ID:ZNSsPCBy0245デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/07(土) 09:05:40.63ID:AEz+LKNR0246デフォルトの名無しさん (ワッチョイ 9910-qxAg)
2021/08/07(土) 09:15:42.75ID:xdlB1E9b0 exitなんかで終わらしちゃダメでしょ
returnで終わらせないと
returnで終わらせないと
248デフォルトの名無しさん (ワッチョイ 3163-Z6Ah)
2021/08/07(土) 11:27:30.28ID:sspluaGX0 exit は どこでもドアで便利
249デフォルトの名無しさん (ワッチョイ 13ad-E1rX)
2021/08/07(土) 17:43:31.00ID:efxonHum0 どこから終わっても良いのか?それとも出口は一つにすべきか?
250ハノン ◆QZaw55cn4c
2021/08/07(土) 18:13:40.12 >>249
どこからでも return してよいのか?それとも return 文の記述は一箇所に限定するべきか?
どこからでも return してよいのか?それとも return 文の記述は一箇所に限定するべきか?
251デフォルトの名無しさん (ワッチョイ 3163-Z6Ah)
2021/08/07(土) 18:18:29.86ID:sspluaGX0 一つの関数内でreturnは一つにするというコーディング規約があったときは
gotoの使用が増えてましたっけ
gotoの使用が増えてましたっけ
252デフォルトの名無しさん (ワッチョイ 13ad-Z6Ah)
2021/08/07(土) 18:31:09.62ID:efxonHum0 Cなので仕方がないな。他の言語のように例外処理が try ... catch とかで使えれば gogo なくしても見易く書けるだろうけど。
253デフォルトの名無しさん (ワッチョイ 59bb-yyuh)
2021/08/07(土) 18:35:47.91ID:HEQEjPMP0 出口を1つにしたほうが達成感がある
だがreturnお前はだめだ
だがreturnお前はだめだ
254デフォルトの名無しさん (ワッチョイ 13ad-Z6Ah)
2021/08/07(土) 18:36:21.14ID:efxonHum0 goto なしでやる方法は色々あるが、30年ぐらい前に何も参考にせずに俺が考えついたのは for (;;) のブロックに入れて途中で条件により break する方式。
255デフォルトの名無しさん (ワッチョイ 13ad-QnWA)
2021/08/07(土) 18:44:02.64ID:608OSAzY0 無限ループって怖くね?
256デフォルトの名無しさん (ワッチョイ 33bd-kkkT)
2021/08/07(土) 18:54:15.41ID:vvCAvRb50 実利の無いこだわりはやめていただきたく……
257デフォルトの名無しさん (ワッチョイ 13ad-E1rX)
2021/08/07(土) 18:54:27.54ID:efxonHum0 >>255
最後のbreakを忘れたらそうなるのでそれだけは注意が必要
最後のbreakを忘れたらそうなるのでそれだけは注意が必要
258デフォルトの名無しさん (ワッチョイ 13ad-E1rX)
2021/08/07(土) 18:58:54.78ID:efxonHum0 ま、しかし、今はそういう例外処理的なやつは躊躇せずにgoto使うけどね。そうしないと見づらいし分かり難くなるから。
259デフォルトの名無しさん (ワッチョイ 59bb-yyuh)
2021/08/07(土) 19:27:07.82ID:HEQEjPMP0 gotoを上手く使えないのは自制心がないやつだけだ
俺みたいに自制心のある人間はgotoとはマブダチになれる
俺みたいに自制心のある人間はgotoとはマブダチになれる
260デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/07(土) 20:03:57.86ID:AEz+LKNR0 >>258
に一票
に一票
261デフォルトの名無しさん (ワッチョイ 3163-Z6Ah)
2021/08/07(土) 20:13:31.71ID:sspluaGX0 フルメタルジャケット思い出したw
262デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/07(土) 21:20:33.45ID:ZNSsPCBy0 >>245
あ、じゃあ違うんだな?
> EXIT_SUCCESSがどういう意味かもわからないなら英語からやり直せよw
規格票もロクに読まないからEXIT_SUCCESSがどういう意味かわからんやつが
英語がどうたら言うのは確たる根拠もなく言ってた戯れ言てことだな
PC画面に映ってるアフォはオモロイなwww
あ、じゃあ違うんだな?
> EXIT_SUCCESSがどういう意味かもわからないなら英語からやり直せよw
規格票もロクに読まないからEXIT_SUCCESSがどういう意味かわからんやつが
英語がどうたら言うのは確たる根拠もなく言ってた戯れ言てことだな
PC画面に映ってるアフォはオモロイなwww
263デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/07(土) 21:41:58.88ID:AEz+LKNR0 まずマジックナンバーの話なのか規格の話なのかはっきりさせようか…
あと「〇〇がわからないなら□□しろ」と言うのは「〇〇がわからない」と言ってる訳じゃないぞw
あと「〇〇がわからないなら□□しろ」と言うのは「〇〇がわからない」と言ってる訳じゃないぞw
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★7 [七波羅探題★]
- 「そんなに米国が言う通りにやりたいのか」小泉氏、防衛費増額で立民・後藤祐一氏に反論 [少考さん★]
- 中国がここまで過敏になるのは日本に前科があるから。盧溝橋、満州事変。ジャップの先制攻撃は挙げればキリがないけど [472617201]
- 犬って顔くっつけて寝たがるよな
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
- 実際、朝7~8時の電車通勤は確実にQOL下げてるけど、心に余裕のない社畜にそれ言ったら炎上するよな [315293707]
- テレ朝とTBS、中国側が事前通告したと音声を公開。捏造では?と話題 [776365898]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★4 [597533159]
