C言語なら俺に聞け 163

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7bba-Lem2)
垢版 |
2024/07/16(火) 22:43:54.18ID:ZrsCjURC0
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.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言語なら俺に聞け 162
https://mevius.5ch.net/test/read.cgi/tech/1698653580/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2デフォルトの名無しさん (アウアウエー Sa02-hIhh)
垢版 |
2024/07/16(火) 23:09:40.55ID:zAWhziLLa
O2
2024/07/17(水) 00:38:03.50ID:x2xsFX7F0
"甲乙丙丁"[1];
2024/07/17(水) 02:16:43.37ID:rcKIBlXh0
C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf
5デフォルトの名無しさん (スプッッ Sda5-cSaw)
垢版 |
2024/07/19(金) 12:09:58.52ID:7xb1gIFBd
C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf
2024/08/13(火) 10:33:10.70ID:0tpsfiHy0
C99以降のC言語では、main関数が正常に終了した場合、
明示的にreturn 0;を記述しなくても、コンパイラが自動的にreturn 0;を
挿入することが規定されています。
これにより、main関数の最後にreturn文を省略することが可能になりました。

これまじ?
いや省略できるのは知ってたけど
書かなくても言語仕様的に正しいってことなのでは
7デフォルトの名無しさん (ワッチョイ 2e2a-Fna2)
垢版 |
2024/08/13(火) 10:54:13.55ID:rWI8dcbL0
>>6
> 省略できる

これまじ? ってやってみたら省略できた。知らんかった。
2024/08/13(火) 11:02:03.46ID:zgXpATPx0
C++の方は最初からそうじゃなかったっけ?
2024/08/13(火) 11:04:04.36ID:iZOfVN0Y0
ところで、main以外はどうなんだろう
mainだけ特別って事なのかな?OSとも絡むし
2024/08/13(火) 11:58:17.89ID:ZDyvNux60
>>9
retunr 0; が補われるルールは main だけの特別扱いだけど……。

関連する変な規則として C では関数の返却値の型が void ではないときに return せずに } に到達、かつ、関数の呼び出し元が値を使おうとするのは未定義ということになってる。
逆に言えば } に到達するだけなら OK ってことね。
C++ だと関数の返却値の型が void でないときに return せずに } に到達するだけで駄目という違いがある。
2024/08/13(火) 20:38:38.66ID:Yor/eSuX0
>>9
値を返さない関数ならreturnは省略できる
値を返す関数だと戻り値が不定になる
(多分コンパイルでwarningが出るか最近のではerrorになるだろうな)
そのくらい一度も試したことないのか?
12デフォルトの名無しさん (アウアウエー Sa4a-ZlnX)
垢版 |
2024/08/14(水) 08:45:20.95ID:92pG5tQ9a
CPUが最後に処理したアキュムレータの内容が
戻り値として有効になってるケースが多い
違う実装があったら教えてくれ
2024/08/14(水) 09:29:38.29ID:o5Tm+MCf0
戻さないで自動的に挿入されるのならvoidでいいやん
2024/08/14(水) 16:14:28.35ID:91FNum+40
>>12
CPUでも最適化レベルでも変わるのでその情報は無意味だ
素直にvoidにしとけばいいじゃん
15デフォルトの名無しさん (ワッチョイ 42ad-ZlnX)
垢版 |
2024/08/17(土) 12:40:14.00ID:P2kCpMMm0
>>12
じゃあお前に教えるために
これからそういうの作ろう
2024/08/17(土) 17:19:02.88ID:w43wc/GB0
>>12
最適化が絡むとなんでも起こる。
GCC でやってみた。
https://godbolt.org/z/rzoEqdYWz

インライン化と合わさったときはおそらく
「なんでもいいなら事前に適当な定数 (この場合はゼロ) に置き換えてええやろ」ということが起こってる。
インライン化を抑止したらそのときに入ってたでたらめな値になる。
17デフォルトの名無しさん (ワッチョイ 9f2a-0AGY)
垢版 |
2024/08/18(日) 12:47:05.86ID:z2E2wJpW0
CGCのサイクル
https://www.cgcjapan.co.jp/recruit/images/system/cgc-system.jpg
18デフォルトの名無しさん (ワッチョイ 7fad-9uNt)
垢版 |
2024/08/19(月) 14:50:35.14ID:2a6IfSVu0
CCG
https://dic.pixiv.net/a/CCG
■ このスレッドは過去ログ倉庫に格納されています