!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+vl3vs0159デフォルトの名無しさん (ワッチョイ 1545-Xvfy)
2021/08/01(日) 21:58:23.19ID:4Ph4Dvnc0 なるね
何か困るの?
何か困るの?
160はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 213e-Gkqf)
2021/08/01(日) 22:05:54.64ID:grRzUWQ80 >>158
はっきりした基準はないという前提だけどぼんやりとした概念的な部分では
OS はアプリケーションソフトの対比的なものだと思う。
用途ごとのアプリケーションソフトを起動するという前提がないなら機能的に OS 相当のものを
含んでいても普通は OS とは言わないんじゃないかな。
はっきりした基準はないという前提だけどぼんやりとした概念的な部分では
OS はアプリケーションソフトの対比的なものだと思う。
用途ごとのアプリケーションソフトを起動するという前提がないなら機能的に OS 相当のものを
含んでいても普通は OS とは言わないんじゃないかな。
161デフォルトの名無しさん (ワッチョイ d563-IKHw)
2021/08/01(日) 23:18:55.12ID:bX2lzryL0 ホントにOSだと主張するなら、ぜひWindowsの仮想環境で動かしてみてくれ
162デフォルトの名無しさん (ワッチョイ 4abd-EmkS)
2021/08/02(月) 00:18:03.59ID:AinH6UQa0 もしかして仮想マシンとエミュレータ混同してる?
163デフォルトの名無しさん (ワッチョイ d563-IKHw)
2021/08/02(月) 00:39:04.73ID:5dFVW6Kq0 動かせないのなら、回りくどい事言わず、無理ですと言えば済むよ
164デフォルトの名無しさん (ワッチョイ 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使うけどね。そうしないと見づらいし分かり難くなるから。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- ヨッシー、ヘイホー、テレサ ←こいつらwwwwwwwww
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- くそしてかがやけ
- テレビ「地震!津波!高いところへ逃げて!」
