[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/06 12:27 / Filesize : 234 KB / Number-of Response : 1016
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 160



1 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 10:40:30.02 ID:PyoNDBFu0.net]
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

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

C11
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
www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 159
https://mevius.5ch.net/test/read.cgi/tech/1659623547/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

966 名前:デフォルトの名無しさん (ワッチョイ 67c9-ieXZ) mailto:sage [2023/04/17(月) 08:14:09.28 ID:TjOyN7pL0.net]
if (n < 0) n = -n;

967 名前:デフォルトの名無しさん (ササクッテロロ Spfb-tEYI) [2023/04/17(月) 09:53:06.18 ID:MNSyV7UUp.net]
文字列で与えなきゃデカい数字が扱えないやん

968 名前:デフォルトの名無しさん (ワッチョイ c75f-nEk4) mailto:sage [2023/04/17(月) 10:26:43.64 ID:jOIYUxZw0.net]
int chg(int n)
{
int a=0,b;
while(n) {
b=n/10;
a+=n-b*10;
n=b;
}

969 名前:デフォルトの名無しさん (ワッチョイ 67c9-ieXZ) mailto:sage [2023/04/17(月) 10:57:06.60 ID:TjOyN7pL0.net]
>>957
int で受けて 文字列化してるからちょっと
最初から文字列で受けてるなら一考の余地はあるかもね

970 名前:デフォルトの名無しさん (ワッチョイ 2763-2Cuq) mailto:sage [2023/04/17(月) 10:57:27.95 ID:I3IibvEZ0.net]
957涙目だなw

971 名前:デフォルトの名無しさん (テテンテンテン MM8f-/v6j) mailto:sage [2023/04/17(月) 12:21:07.80 ID:sfjAbensM.net]
プログラミングには最低限の数学的な素養が必要な事が証明された…
科学技術計算を扱わないとしても、計算論とか数学とは切っても切れない関係にある

972 名前:デフォルトの名無しさん (ワッチョイ 5f97-3fkD) mailto:sage [2023/04/17(月) 12:50:21.20 ID:9nZn/y+b0.net]
銀行の勘定系でも四則演算の知識は必要だし

973 名前:デフォルトの名無しさん (ワッチョイ 67c9-ieXZ) mailto:sage [2023/04/17(月) 12:56:30.89 ID:TjOyN7pL0.net]
文字列を受ける場合
int chg(const char* s)
{
 int ret = 0;
 char tmp[2] = { 0 };
 while (*s && !isdigit(*s)) s++; /*数字じゃないところは飛ばす */
 if (*s) {
  while (*s && isdigit(*s)) { /* 数字が連続している間だけ */
   tmp[0] = *s; ret += atoi(tmp);
   s++;
  }
 }
 return ret;
}

環境依存で
 isdigit(*s) を ('0'<=*s && *s <='9') に
 tmp[0] = *s; ret += atoi(tmp); を ret += s[0] - '0'; に
置き換えることもできるかもしれない

974 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-S3w6) mailto:sage [2023/04/17(月) 13:07:40.29 ID:FYaudfJt0.net]
>>963
> 環境依存で

数字に対応する文字コードが連続で昇順に並んでいることは
言語仕様で保証されている。



975 名前:デフォルトの名無しさん (ワッチョイ 67c9-ieXZ) mailto:sage [2023/04/17(月) 13:15:24.09 ID:TjOyN7pL0.net]
>>964
さんきゅう 数字は保障されてたか

976 名前:デフォルトの名無しさん (ワッチョイ 67c9-ieXZ) mailto:sage [2023/04/17(月) 13:21:38.21 ID:TjOyN7pL0.net]
次の while (*s && isdigit(*s)) と意図の一部は重なるし if (*s) はいらんかったね

977 名前:デフォルトの名無しさん (スプッッ Sdff-wBI8) mailto:sage [2023/04/17(月) 15:25:15.58 ID:DnqfCfHpd.net]
今のモダンな言語からしたら一見して下らないやり取りだけど
これがC言語なんよね・・・

978 名前:デフォルトの名無しさん (ワッチョイ c75f-nEk4) mailto:sage [2023/04/17(月) 15:50:16.10 ID:jOIYUxZw0.net]
ハードとアプリのあいだに多くの計算を必要とするソフトの層があるからね
OSやらで全部カバーするのは無理だからCは死なない

979 名前:デフォルトの名無しさん (アウアウウー Sacb-/q5i) mailto:sage [2023/04/17(月) 15:51:50.57 ID:kmcXsww3a.net]
>>964
漢数字も並んでたら嬉しかったと思いませんか

980 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-S3w6) mailto:sage [2023/04/17(月) 16:54:39.89 ID:FYaudfJt0.net]
>>969
現実には JIS は読みの順序で Unicode は部首の画数の順序が原則。
漢数字を例外にしたらそれはそれで不格好だし嬉しくない人もいるだろう。

まあ Unicode は後から追加した分だのなんだのでそんなに綺麗に並んでいるわけでもないので
どうせぐちゃぐちゃなら数字くらいは並べても良かったんちゃうかなというのは気持ちはわかる。

981 名前:デフォルトの名無しさん (テテンテンテン MM8f-/v6j) mailto:sage [2023/04/17(月) 17:19:21.10 ID:tJ5lxHq2M.net]
一二三四…Why Japanese people!

982 名前: []
[ここ壊れてます]

983 名前:デフォルトの名無しさん (スッププ Sd7f-1OZE) mailto:sage [2023/04/17(月) 19:13:46.43 ID:92m0URlPd.net]
>>967
くくく、、愚かな、、

984 名前:デフォルトの名無しさん (スッププ Sd7f-1OZE) mailto:sage [2023/04/17(月) 19:21:15.62 ID:92m0URlPd.net]
>>954
アンサインドイントで受けたれや!



985 名前:デフォルトの名無しさん (アウアウウー Sacb-/q5i) mailto:sage [2023/04/17(月) 20:38:59.46 ID:RKcegE7fa.net]
壱<弐<参<死<伍<碌<質<八<苦<拾<

986 名前:百<銭<萬
ですね判ります
[]
[ここ壊れてます]

987 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-S3w6) mailto:sage [2023/04/18(火) 08:26:27.42 ID:aNj1uNjV0.net]
>>971
英語の綴りの不規則さも大概やないけ! と突っ込んで完成するネタだと個人的には思ってる。

988 名前:デフォルトの名無しさん (スフッ Sd7f-fSvC) mailto:sage [2023/04/18(火) 14:58:32.85 ID:aePy3OZ8d.net]
未初期化の自動変数には「不定値」が割り当てられる、と調べるたり自分が学んでいる本でも書いていますが、自分のコンパイラは常に「0」になっているようです 
なぜでしょうか? 
ちなみにgcc-10です gcc-11だと「不定値」になります

989 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f32-iKPJ) [2023/04/18(火) 15:29:21.41 ID:rjFDtS/R0.net]
不定の値とは「未規定の値又はトラップ表現」と規定されてる。
常に 0 であってもこの規定に反しないよ。

990 名前:デフォルトの名無しさん (スフッ Sd7f-7nfa) [2023/04/18(火) 16:27:26.25 ID:U9oAz8h1d.net]
>>977 ありがとうございます
ちなみに「トラップ表現」とはなんでしょうか?

991 名前:デフォルトの名無しさん (スフッ Sd7f-foDO) [2023/04/18(火) 16:57:48.54 ID:U9oAz8h1d.net]
976です chatgptで調べました
C言語の仕様では、自動変数を初期化しない場合、その値は不定とされています。これは、コンパイラがメモリ上で変数を割り当てる際に、その領域が以前に使用されていたデータを含んでいる可能性があるためです。

しかしながら、一部のコンパイラでは、自動変数を0で初期化することがあります。これは、セキュリティ上の理由から、またはコードの可読性を向上させるために行われることがあります。

ただし、コンパイラが自動変数を0で初期化することが保証されているわけではありません。したがって、プログラマは自動変数を使用する前に必ず初期化するように注意する必要があります。

992 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f32-iKPJ) [2023/04/18(火) 17:04:00.61 ID:rjFDtS/R0.net]
>>978
トラップ表現は「オブジェクト型の値を表現しないオブジェクト表現」ということになってる。
その型としてあり得ないビットパターンってこと。
オブジェクトとして格納されたトラップ表現を文字型ではない左辺値式として読みだした場合の結果は未定義となる。
副作用としてそのような表現が生成される場合も未定義。

C の仕様でいう未定義というのは「何が起きても (たとえば暴走しても) 良い」という意味なので実質的に禁止だと思ってもいいよ。

とはいえ整数型でトラップ表現があるアーキテクチャを私は見たことが無いけどな。

993 名前:デフォルトの名無しさん (スプッッ Sdff-ZLJR) [2023/04/18(火) 18:20:39.02 ID:Qric2C4Yd.net]
トラップ表現を調べてみたけどほぼほぼ処理系定義絡みなのね

signed int16の0x8000は-32768かもしれないし、トラップ表現かもしれない
1の補数系でsigned int16の0xffffは0かもしれないし、トラップ表現かもしれない
int32* の4バイト境界に合ってないポインタ(int* p=0x0001)は、強制的に4バイト境界に直されるかもしれないし、トラップ表現かもしれない

994 名前:デフォルトの名無しさん (スフッ Sd7f-foDO) [2023/04/18(火) 19:26:15.76 ID:U9oAz8h1d.net]
>>980 ありがとうございます 勉強になりました



995 名前:デフォルトの名無しさん (テテンテンテン MM8f-/v6j) mailto:sage [2023/04/19(水) 02:26:26.48 ID:Nl7uhZkpM.net]
自分のコンパイラってのを明らかにしてくれ
どうしても言えないってならしょうがないが…

996 名前:デフォルトの名無しさん (ワッチョイ 6746-KCd8) [2023/04/19(水) 02:43:50.96 ID:MHEst9B30.net]
>>983
> ちなみにgcc-10です
と書かれている。

997 名前:デフォルトの名無しさん mailto:sage [2023/04/19(水) 06:44:34.46 ID:Dcht9s5K0.net]
>>983
バーカ(笑)

998 名前:デフォルトの名無しさん [2023/04/19(水) 06:59:06.58 ID:twYHK80b0.net]
983息してるか?www

999 名前:デフォルトの名無しさん mailto:sage [2023/04/19(水) 07:47:07.07 ID:BpfZGgoRd.net]
かてなおったかな

1000 名前:デフォルトの名無しさん mailto:sage [2023/04/19(水) 10:03:53.18 ID:rE0e6VM+0.net]
自作コンパイラの話する?

1001 名前:デフォルトの名無しさん mailto:sage [2023/04/19(水) 10:43:43.68 ID:m2bdQTksd.net]
いいぜ?お前からな?

1002 名前:デフォルトの名無しさん mailto:sage [2023/04/19(水) 11:58:53.24 ID:rE0e6VM+0.net]
ぼくはLex&YACCでPL/0を作って満

1003 名前:足しました。おわり []
[ここ壊れてます]

1004 名前:デフォルトの名無しさん mailto:sage [2023/04/19(水) 13:12:38.94 ID:IP5wt1Fbd.net]
夜中に路地から飛び出て来たら俺もびびる
でも >>991 では語れんわ!



1005 名前:デフォルトの名無しさん mailto:sage [2023/04/19(水) 20:04:36.21 ID:3t8AIZsr0.net]
C言語のソースコードを検査して処理系依存や未定義動作等の環境によって
結果が変わりうる可能性のある部分を見つけてくれるツールってどんなのがありますか?
コードエディタはvscodeなのでこれと連携できるとなおよいです

1006 名前:デフォルトの名無しさん mailto:sage [2023/04/20(木) 08:07:01.48 ID:B156zYN00.net]
lintでググれ

1007 名前:デフォルトの名無しさん mailto:sage [2023/04/20(木) 08:23:22.20 ID:3as2C0030.net]
BingAIに聞け

1008 名前:デフォルトの名無しさん [2023/04/20(木) 09:13:39.09 ID:EuuMXrfTa.net]
とにかくggr

1009 名前:デフォルトの名無しさん mailto:sage [2023/04/20(木) 16:00:12.38 ID:ZTK8T1RQd.net]
チャットジーピーテー

1010 名前:デフォルトの名無しさん (ラクッペペ MM8f-bKDU) mailto:sage [2023/04/20(木) 23:37:04.36 ID:BN6x5ZIFM.net]
さすがに検査対象としてソースコードそのものをchatGPTに丸投げするのはマズイ
個人情報や機密情報をそのまま入力するのは止めるように開発元のopenAIが忠告してたはず

1011 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 06:41:53.06 ID:NmcLOv2EM.net]
>>993
よさそう。サンキュー

1012 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 13:41:26.17 ID:cgpIrgwq0.net]
次スレどこ?

1013 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 14:06:43.23 ID:rqj2HSDF0.net]
次スレ

https://mevius.5ch.net/test/read.cgi/tech/1682053520/

1014 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 114日 3時間 26分 13秒



1015 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<234KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef