!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
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 0345-kMi9)
2021/06/28(月) 11:22:51.50ID:so+vl3vs02デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/28(月) 11:26:33.76ID:so+vl3vs0 前スレ末期の流れを再掲
> 996 自分:デフォルトの名無しさん (ワッチョイ 0f45-Sffs)[sage] 投稿日:2021/06/28(月) 09:33:23.09 ID:so+vl3vs0 [1/2]
> printf("%d", sizeof (char)123); とやろうとしたら
> キャストのカッコがsizeofのカッコと解釈されてエラーになるのな
> printf("%d", sizeof((char)123)); ならおkなんだけど
> なんだか気持ち悪い
>
> 997 返信:デフォルトの名無しさん (ワッチョイ cf05-Ibo0)[sage] 投稿日:2021/06/28(月) 10:13:18.97 ID:x/UkG1ge0
> >>996
> sizeofって括弧なしで使えるの? 知らなかった
>
> 998 返信:デフォルトの名無しさん (ワッチョイ 0fda-qjGA)[sage] 投稿日:2021/06/28(月) 10:20:43.69 ID:WejOUFlX0
> >>996
> sizeof演算子の優先順位はcast演算子の優先順位より高いので、括弧がないと
> まず最初にsizeofと数値リテラルが評価されてその後でその結果をcastで評価するという
> おかしな状態になるのでエラーになったのでは?
>
> 999 自分:デフォルトの名無しさん (ワッチョイ 0f45-Sffs)[sage] 投稿日:2021/06/28(月) 10:38:03.51 ID:so+vl3vs0 [2/2]
> sizeofとキャストはどちらも単項式なので右から結合するはず
> にも関わらずキャストが先に読まれないので気持ち悪いと言ったんだ
> 字句解析と意味解析ってことかな
>
> 1000 名前:デフォルトの名無しさん (ワッチョイ 0fd2-kMi9)[] 投稿日:2021/06/28(月) 11:05:48.75 ID:HW6dR9O/0
> そもそも
> sizeof (char)
> paだけでいいものをそう記述してるのが気持ち悪い。
> 996 自分:デフォルトの名無しさん (ワッチョイ 0f45-Sffs)[sage] 投稿日:2021/06/28(月) 09:33:23.09 ID:so+vl3vs0 [1/2]
> printf("%d", sizeof (char)123); とやろうとしたら
> キャストのカッコがsizeofのカッコと解釈されてエラーになるのな
> printf("%d", sizeof((char)123)); ならおkなんだけど
> なんだか気持ち悪い
>
> 997 返信:デフォルトの名無しさん (ワッチョイ cf05-Ibo0)[sage] 投稿日:2021/06/28(月) 10:13:18.97 ID:x/UkG1ge0
> >>996
> sizeofって括弧なしで使えるの? 知らなかった
>
> 998 返信:デフォルトの名無しさん (ワッチョイ 0fda-qjGA)[sage] 投稿日:2021/06/28(月) 10:20:43.69 ID:WejOUFlX0
> >>996
> sizeof演算子の優先順位はcast演算子の優先順位より高いので、括弧がないと
> まず最初にsizeofと数値リテラルが評価されてその後でその結果をcastで評価するという
> おかしな状態になるのでエラーになったのでは?
>
> 999 自分:デフォルトの名無しさん (ワッチョイ 0f45-Sffs)[sage] 投稿日:2021/06/28(月) 10:38:03.51 ID:so+vl3vs0 [2/2]
> sizeofとキャストはどちらも単項式なので右から結合するはず
> にも関わらずキャストが先に読まれないので気持ち悪いと言ったんだ
> 字句解析と意味解析ってことかな
>
> 1000 名前:デフォルトの名無しさん (ワッチョイ 0fd2-kMi9)[] 投稿日:2021/06/28(月) 11:05:48.75 ID:HW6dR9O/0
> そもそも
> sizeof (char)
> paだけでいいものをそう記述してるのが気持ち悪い。
3デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/28(月) 11:28:49.59ID:so+vl3vs0 >>前スレ1000
いやcharのサイズが知りたいのではなく
キャスト式(char)123のサイズを調べようとしたんだ
Cはchar変数の値を使おうとするとintに拡張するし文字定数もint型なので
char型の値を持つ式なんてあるのかって
いやcharのサイズが知りたいのではなく
キャスト式(char)123のサイズを調べようとしたんだ
Cはchar変数の値を使おうとするとintに拡張するし文字定数もint型なので
char型の値を持つ式なんてあるのかって
4デフォルトの名無しさん (ブーイモ MM0f-iMxR)
2021/06/28(月) 11:37:03.08ID:XSoi24UgM cppreferenceのc operator precedenceの項の注釈によるとオペアンドはtype castにはできないって書いてあるね。ただ仕様書の該当箇所は探せなかった
5デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/28(月) 11:58:43.53ID:so+vl3vs0 脚注2は俺が気持ち悪いと言ったことと似てるけどsizeof(int)*pが
(sizeof(int)) * pという算術乗算になるという話なら単項式のsizeofより優先順位が低いからまだわかる
(sizeof(int)) * pという算術乗算になるという話なら単項式のsizeofより優先順位が低いからまだわかる
6デフォルトの名無しさん (ブーイモ MM0f-iMxR)
2021/06/28(月) 12:57:31.08ID:XSoi24UgM A.2.1が引用元みたいなんで読んでみるとsizeof (int)123はダメだね。
sizeof +(int)123なら動くようだ。sizeof (int){1}も動きそう。
sizeof +(int)123なら動くようだ。sizeof (int){1}も動きそう。
7デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/28(月) 15:54:14.85ID:so+vl3vs0 あーそうか
A.2.1. (6.5.3)では
unary-expressionに該当するものの1つに
unary-operator cast-expressionがあるけど
unary-operatorにキーワードsizeofが含まれず、
カッコなしのキャスト式は
sizeof unary-expressionとなっていて
sizeof cast-expressionではないってことか
A.2.1. (6.5.3)では
unary-expressionに該当するものの1つに
unary-operator cast-expressionがあるけど
unary-operatorにキーワードsizeofが含まれず、
カッコなしのキャスト式は
sizeof unary-expressionとなっていて
sizeof cast-expressionではないってことか
8デフォルトの名無しさん (ワッチョイ 3fad-wfqF)
2021/06/29(火) 00:32:13.44ID:jRoYjmsV0 ところで sizeof((char) 123) と sizeof(char) って同じことだよな?
9デフォルトの名無しさん (ブーイモ MM53-FyAt)
2021/06/29(火) 01:01:59.00ID:cYz04uBKM ポインタキャストは敷居線さえ跨がなきゃ思い通りの値出てくるけど
数値キャストは難しいんだよな
数値キャストは難しいんだよな
10デフォルトの名無しさん (アウアウウー Sad3-TUf5)
2021/06/29(火) 01:04:11.67ID:lZY/6JCta >>8
GCC 9.3.0 では両方とも 1 でした
GCC 9.3.0 では両方とも 1 でした
11デフォルトの名無しさん (ブーイモ MM53-FyAt)
2021/06/29(火) 01:05:05.10ID:cYz04uBKM printf さんの独自性もあるし
12デフォルトの名無しさん (ワッチョイ 3fad-wfqF)
2021/06/29(火) 02:00:52.74ID:jRoYjmsV0 >>10
ていうかやるまでもなく結果が同じにならないとおかしいよね。
一方は値を char 型にキャストしているんだから sizeof の結果は char 型のサイズになる。
もう一方は char 型のサイズを求めているから char 型のサイズになる。
ていうかやるまでもなく結果が同じにならないとおかしいよね。
一方は値を char 型にキャストしているんだから sizeof の結果は char 型のサイズになる。
もう一方は char 型のサイズを求めているから char 型のサイズになる。
13はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-0Yon)
2021/06/29(火) 04:29:15.93ID:OP5z1lEO0 二項演算子のいくつかでは汎整数拡張が適用されることになっているが
sizeof に渡す分には char のオブジェクトは char のオブジェクトだよ。
sizeof に渡す分には char のオブジェクトは char のオブジェクトだよ。
14デフォルトの名無しさん (ワッチョイ 0fd2-hdpQ)
2021/06/29(火) 08:37:44.49ID:F75/2W0I0 char型 + char型 の式でもint型に拡張されるんだっけ?
15デフォルトの名無しさん (スッップ Sd5f-OBU1)
2021/06/29(火) 13:20:32.79ID:f0Xm8hptd もち
単項プラスでさえ拡張する
単項プラスでさえ拡張する
16デフォルトの名無しさん (ワッチョイ cfbb-0Yon)
2021/06/29(火) 13:41:07.94ID:dKjX5GmV0 typedefによる新しい型の定義って、コンパイラの工程的にはどの工程で定義されるの?
字句解析?構文解析?プリプロセスじゃないよね
字句解析?構文解析?プリプロセスじゃないよね
17デフォルトの名無しさん (ワッチョイ 3f66-j5Ba)
2021/06/29(火) 14:16:01.66ID:NxeKtV2S0 質問が間違ってる気がするけどね。
コンパイルレベルで処理されるのか、リンクするまで処理されないのか、でしょ。
で、typedefは前者
コンパイルレベルで処理されるのか、リンクするまで処理されないのか、でしょ。
で、typedefは前者
18デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/29(火) 20:18:28.43ID:SX14oDOe0 翻訳段階の何番目でやってんのかって質問だろ
19デフォルトの名無しさん (ワッチョイ 0f01-htoQ)
2021/06/29(火) 20:52:30.02ID:0ahpifum0 構文解析の後 typedef と認知したうえで、シンボルのテーブルに追加してかないと
置換?読み替え?はできないよねぇ…
C言語は、その構造上1回の通読では解決できないんだっけ?
置換?読み替え?はできないよねぇ…
C言語は、その構造上1回の通読では解決できないんだっけ?
20デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/29(火) 21:06:15.61ID:SX14oDOe0 5.1.1.2 Translation phasesくらい読んでから来いよ
21デフォルトの名無しさん (ワッチョイ 3f66-j5Ba)
2021/06/29(火) 22:00:49.44ID:NxeKtV2S0 だからぁw
構文解析ってのはパーサね?w←これは例えばbisonで作るやつね?w
字句解析ってのはレキシカルアナライザね?w←これは例えばflexで作るやつね?w
レキシカルアナライザかパーサかって、そもそもレキシカルアナライザってのは
字句区切るだけだよwそれをどんな命令であるかを解釈を決めるのが構文解析ねw
コンパイルの1pass,2passって話なら、まあそれでもいいけどさw
用語がでたらめすぎんでしょ。
だいたいそんなこと知ってどうするんだよ?w
構文解析ってのはパーサね?w←これは例えばbisonで作るやつね?w
字句解析ってのはレキシカルアナライザね?w←これは例えばflexで作るやつね?w
レキシカルアナライザかパーサかって、そもそもレキシカルアナライザってのは
字句区切るだけだよwそれをどんな命令であるかを解釈を決めるのが構文解析ねw
コンパイルの1pass,2passって話なら、まあそれでもいいけどさw
用語がでたらめすぎんでしょ。
だいたいそんなこと知ってどうするんだよ?w
22デフォルトの名無しさん (ワッチョイ 3f36-wfqF)
2021/06/29(火) 22:05:17.86ID:gp7v5PNW0 セキュリティホール探し?
23デフォルトの名無しさん (ワッチョイ cfbb-lfrx)
2021/06/29(火) 23:35:14.00ID:dKjX5GmV0 Cの構文解析器実装してるんだけどBNFのtypedefの扱いがイミフなんだよねー
24デフォルトの名無しさん (ワッチョイ 3f66-YS6X)
2021/06/29(火) 23:57:55.23ID:NxeKtV2S0 >>23
またぁw
BNF関係ないでしょうw
つか、typedefなんて意味不明なんてことはないと思うけど。
特定の記法のことを指してるの?BNFで書かれた
typedefの規則が読みとれないって言ってるの?w
typedef struct {...};
と
struct {...} xxx;
を区別できないとかそんな話?
よくわかんないけど、変に切り出すんじゃなくて、
ストレートにこれがやりたいけど、これどうしたらいいか
わかんない、って聞く方がいいと思うんだが。
なにいってんだか、知ってる人ほど却ってわかんねーと思うんだが。
またぁw
BNF関係ないでしょうw
つか、typedefなんて意味不明なんてことはないと思うけど。
特定の記法のことを指してるの?BNFで書かれた
typedefの規則が読みとれないって言ってるの?w
typedef struct {...};
と
struct {...} xxx;
を区別できないとかそんな話?
よくわかんないけど、変に切り出すんじゃなくて、
ストレートにこれがやりたいけど、これどうしたらいいか
わかんない、って聞く方がいいと思うんだが。
なにいってんだか、知ってる人ほど却ってわかんねーと思うんだが。
25デフォルトの名無しさん (ワッチョイ 3f01-kMi9)
2021/06/30(水) 00:35:54.93ID:dsegDYOD0 typedefがstorage-class specifierに属してることを言ってるなら
構文上の便宜のためだけ(for syntactic convenience only)って6.7.1(5)に書いてあるけど
Annexのsyntax summaryだけ見てる感じかな
かなりエスパーしてるから的外れだったらすまぬ
構文上の便宜のためだけ(for syntactic convenience only)って6.7.1(5)に書いてあるけど
Annexのsyntax summaryだけ見てる感じかな
かなりエスパーしてるから的外れだったらすまぬ
26デフォルトの名無しさん (ワッチョイ cfbb-lfrx)
2021/06/30(水) 01:02:59.78ID:xHlidKVh0 みなさんレスありがとう
「C BNF」でググって一番上に出るBNFを参考に実装しているんだけど、BNFが古いせいかtypedefの構文が欠落してるような気がして(気のせいでした。↓のレス参照)
でも<typedef-name>という要素はあるからtypedef機能自体はあるらしい
BNFに書いてないってことは構文解析以前の処理になるのかもしれないと思ってここで聞いてみたんだけど
混乱した人もいるみたいですまない
>>25
あー!そういうことですか
なるほど疑問が解けました
typedefをspecifierで扱ってるわけですね
ありがとうございます
「C BNF」でググって一番上に出るBNFを参考に実装しているんだけど、BNFが古いせいかtypedefの構文が欠落してるような気がして(気のせいでした。↓のレス参照)
でも<typedef-name>という要素はあるからtypedef機能自体はあるらしい
BNFに書いてないってことは構文解析以前の処理になるのかもしれないと思ってここで聞いてみたんだけど
混乱した人もいるみたいですまない
>>25
あー!そういうことですか
なるほど疑問が解けました
typedefをspecifierで扱ってるわけですね
ありがとうございます
27デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/30(水) 06:48:58.92ID:tpFz8l2w028デフォルトの名無しさん (ワッチョイ cfbb-lfrx)
2021/06/30(水) 09:43:56.46ID:xHlidKVh029デフォルトの名無しさん (ワッチョイ b6da-xL6t)
2021/07/17(土) 09:12:05.75ID:17h8nqYk0 リスト型構造体配列って他の言語でもあるのでしょうか?
現在職業訓練で勉強中なのですが、独学でやらないといけない範囲のようでして、
時間的余裕があまりない状態です。
他言語でも似たような考えが出てきて、Cで覚えておくと役立つなど
ございましたら、頑張って挑戦してみようと思っています。
現在職業訓練で勉強中なのですが、独学でやらないといけない範囲のようでして、
時間的余裕があまりない状態です。
他言語でも似たような考えが出てきて、Cで覚えておくと役立つなど
ございましたら、頑張って挑戦してみようと思っています。
30デフォルトの名無しさん (ブーイモ MM0e-xXJe)
2021/07/17(土) 12:16:52.25ID:xP6i4weKM リスト型構造体配列ってのは講師の人の自作用語?
それなら定義を示してもらわんと。
それなら定義を示してもらわんと。
31デフォルトの名無しさん (ワッチョイ aabd-WluE)
2021/07/17(土) 12:38:05.00ID:+M7J9sQi0 リンクリストなら他の言語にもある
普通は配列とは言わないからその言葉は謎だけど……
普通は配列とは言わないからその言葉は謎だけど……
32デフォルトの名無しさん (ワッチョイ 9501-zSg9)
2021/07/17(土) 13:34:21.36ID:e6axNbpd0 ポインタの代わりに配列のインデックスを保持してるような感じなのかね?
リスト型構造体配列
リスト型構造体配列
33デフォルトの名無しさん (ワッチョイ c628-0cQV)
2021/07/17(土) 16:17:40.91ID:USprSk230 C99かそれ以降の標準的な環境において
(bool)someval
と
!!someval
って(例外なしに)全くおなじ効果を生むと思っていいですか。
前者はJISX3010の6.3.1.2などで「値が0になるなら0,それ以外なら1」と書かれている一方,
後者は(初学者なので経験がなく,正しい認識ではないかもしれませんが)慣用的な書き方なので
規格票にも書かれておらず,正確に同じ意味なのかどうかを確かめられませんでした。
(bool)someval
と
!!someval
って(例外なしに)全くおなじ効果を生むと思っていいですか。
前者はJISX3010の6.3.1.2などで「値が0になるなら0,それ以外なら1」と書かれている一方,
後者は(初学者なので経験がなく,正しい認識ではないかもしれませんが)慣用的な書き方なので
規格票にも書かれておらず,正確に同じ意味なのかどうかを確かめられませんでした。
34デフォルトの名無しさん (ワッチョイ 95da-cm0L)
2021/07/18(日) 00:36:46.74ID:vIcCvIPT0 >>33
「意味するところは全く違うが、結果だけ見れば全く同じ」です。
「意味するところは全く違うが、結果だけ見れば全く同じ」です。
35デフォルトの名無しさん (アウアウウー Sa39-rGUB)
2021/07/18(日) 01:19:32.77ID:euqgtMPHa bool型が導入されたことで得られるメリットはは何かあるでしょうか
またデメリットはあるでしょうか
またデメリットはあるでしょうか
36デフォルトの名無しさん (ラクッペペ MM0e-cm0L)
2021/07/18(日) 07:53:07.50ID:OEfNT0QGM メリットは、必ず真偽値になること
デメリットは、必ず真偽値になってしまうこと
例えばエラーコードのようにいい加減な経緯で拡張していくことはできない
デメリットは、必ず真偽値になってしまうこと
例えばエラーコードのようにいい加減な経緯で拡張していくことはできない
37ハノン ◆QZaw55cn4c (ワッチョイ aee9-6rOL)
2021/07/18(日) 09:54:45.66ID:9YAoR/6C0 >>35
ctypes.h の isalpha() とか islower() とかその他大勢は、偽のときは 0 を必ず返しますが、真のときは 1 とは限らない 0 でない別の数を返したりするんですよ
そういうのは紛らわしいので、そういう紛らわしさが減る bool の存在はありがたいですね
ctypes.h の isalpha() とか islower() とかその他大勢は、偽のときは 0 を必ず返しますが、真のときは 1 とは限らない 0 でない別の数を返したりするんですよ
そういうのは紛らわしいので、そういう紛らわしさが減る bool の存在はありがたいですね
38デフォルトの名無しさん (エムゾネ FFfa-E0YB)
2021/07/18(日) 16:58:13.77ID:jPlpwmsoF 関数の () は演算子
キャストの () は演算子
だそうですが
数学の数式で優先度上げるのに相当する () は演算子ですか?
キャストの () は演算子
だそうですが
数学の数式で優先度上げるのに相当する () は演算子ですか?
39デフォルトの名無しさん (ワッチョイ 5a7f-xL6t)
2021/07/18(日) 17:14:40.88ID:6AMrYKMS0 いいえ
40デフォルトの名無しさん (アウアウキー Sa4d-vUbb)
2021/07/18(日) 20:03:28.13ID:i83/r50ia >>34
ありがとうございます!
ありがとうございます!
42はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-xL6t)
2021/07/18(日) 21:49:36.58ID:+Ch+KzUq0 >>33
真偽値型にキャストした結果の型は _Bool で、 !! を通した型は int という違いはある。
https://wandbox.org/permlink/zlxhRTGr5Sj8IsiH
整数を扱う多くの場合では整数拡張が入ったりして違いが吸収
されてしまうからどちらでもいい場合がほとんどだと思うけど、
あらゆる状況で完全に同じとは言い切れない。
ちなみに C++ では整数に ! を適用した結果は bool なので、
もちろん !! の結果も bool になる。
真偽値型にキャストした結果の型は _Bool で、 !! を通した型は int という違いはある。
https://wandbox.org/permlink/zlxhRTGr5Sj8IsiH
整数を扱う多くの場合では整数拡張が入ったりして違いが吸収
されてしまうからどちらでもいい場合がほとんどだと思うけど、
あらゆる状況で完全に同じとは言い切れない。
ちなみに C++ では整数に ! を適用した結果は bool なので、
もちろん !! の結果も bool になる。
43デフォルトの名無しさん (ワッチョイ 4545-zSg9)
2021/07/18(日) 21:52:36.39ID:V2Gw1I3v044デフォルトの名無しさん (ワッチョイ c628-Tv+1)
2021/07/18(日) 22:42:35.27ID:4j3GDjyk0 >>42
_Generic 便利ですね……。C11から追加されたんだ。
_Generic 便利ですね……。C11から追加されたんだ。
45デフォルトの名無しさん (ワッチョイ c628-Tv+1)
2021/07/18(日) 22:44:22.95ID:4j3GDjyk0 >>38
ほとんど関係ないけど,Haskelだと優先度を上げる()記法を
$演算子で代用できるから,
「優先度を上げる()を演算子としてみる」というのはそう不自然ではないかも。
でも(たぶん)C言語だとそういうことはない。
ほとんど関係ないけど,Haskelだと優先度を上げる()記法を
$演算子で代用できるから,
「優先度を上げる()を演算子としてみる」というのはそう不自然ではないかも。
でも(たぶん)C言語だとそういうことはない。
46デフォルトの名無しさん (エムゾネ FFfa-iTam)
2021/07/19(月) 17:37:03.07ID:3YhpibAgF こういう認定試験用にC言語勉強するときって
https://www.sikaku.gr.jp/js/cpjv/
32bit版のコンパイラの方が良いんでしょうか?
64bit版でintとかsize_tとかサイズ変わると困りませんか?
https://www.sikaku.gr.jp/js/cpjv/
32bit版のコンパイラの方が良いんでしょうか?
64bit版でintとかsize_tとかサイズ変わると困りませんか?
47デフォルトの名無しさん (ワッチョイ 4545-zSg9)
2021/07/19(月) 17:41:05.09ID:GP2gJIPC0 逆にsizeof(size_t)が返す値が処理系定義であることを考え落とす癖がつくと
そこを弱点として狙われるぞ
そこを弱点として狙われるぞ
48はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-xL6t)
2021/07/20(火) 15:47:40.82ID:BjsPOMc70 変わって困ることならむしろ困ってみたほうが勉強になるんじゃね。
49デフォルトの名無しさん (エムゾネ FFfa-E0YB)
2021/07/20(火) 17:03:23.21ID:2ecX9oPqF > 1級で使用する環境について(公開試験)
コンパイラ Borland C++ Compiler 5.5
JIS X 3010-1993に対応
エディタ TeraPadまたはメモ帳
文字コード:SHIFT-JIS、改行コード:CR+LF
※当コンパイラの操作にはコマンドプロンプトの知識が必要です。
※解答用のソースプログラムは、SHIFT-JISで保存してください。
※指定した保存形式で保存されていない場合は、採点の対象となりません。
・・・なんだかなぁ
コンパイラ Borland C++ Compiler 5.5
JIS X 3010-1993に対応
エディタ TeraPadまたはメモ帳
文字コード:SHIFT-JIS、改行コード:CR+LF
※当コンパイラの操作にはコマンドプロンプトの知識が必要です。
※解答用のソースプログラムは、SHIFT-JISで保存してください。
※指定した保存形式で保存されていない場合は、採点の対象となりません。
・・・なんだかなぁ
50デフォルトの名無しさん (ガラプー KK7e-/Rtw)
2021/07/20(火) 18:27:33.17ID:rDNdpvsmK せめてC99対応コンパイラにしようよ
51デフォルトの名無しさん (ワッチョイ f6bb-xXJe)
2021/07/20(火) 18:37:29.47ID:LjuPHZpl0 JISX 3010 1993で使えない構文や関数を回避して回答する能力を受験者に課すなんてなかなか高度な試験だね
52デフォルトの名無しさん (ドコグロ MM0e-WluE)
2021/07/20(火) 20:03:33.02ID:Plw9uEZeM BCCってまだVSの無料版が無かった頃に無料で使えるコンパイラとして粂井氏のHPで紹介されてて使ってたなあ
その時代から何も進化してない資格なんだろうな……
その時代から何も進化してない資格なんだろうな……
53デフォルトの名無しさん (アウアウウー Sa39-rGUB)
2021/07/21(水) 00:20:28.07ID:fGno+40ia bccとかLSI-C(試食版)とか、Cマガの付録で
54デフォルトの名無しさん (ワッチョイ 95da-cm0L)
2021/07/21(水) 07:39:41.26ID:A0/pIuIc0 BCCは知ってても それだけじゃ困ります
55デフォルトの名無しさん (ワッチョイ 4545-zSg9)
2021/07/21(水) 09:12:39.48ID:+0/niNvm0 > JIS X 3010-1993に対応
つーことは
int main(void)
{
printf("");
int x; /* これがダメ */
//このコメントもダメ
for(int y = 0; y < 1; y++) ; //これもダメ
}
今どきのコンパイラはみんなOKなのに
うっかり使うと減点されるという陰険な罠だな
つーことは
int main(void)
{
printf("");
int x; /* これがダメ */
//このコメントもダメ
for(int y = 0; y < 1; y++) ; //これもダメ
}
今どきのコンパイラはみんなOKなのに
うっかり使うと減点されるという陰険な罠だな
56デフォルトの名無しさん (ワッチョイ 615f-E0YB)
2021/07/21(水) 09:45:21.46ID:DbniEar00 検定する側が時代遅れで
しかもこんなレベルじゃ
最早コボちゃん世代を嗤えませんね?
しかもこんなレベルじゃ
最早コボちゃん世代を嗤えませんね?
57はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-xL6t)
2021/07/21(水) 10:08:36.90ID:tIqEOSex0 まあそういう時代もあったというのは知識として有るに越したことは無いが、
前提とされるとだいぶんしんどいな。
前提とされるとだいぶんしんどいな。
58デフォルトの名無しさん (ワッチョイ 55f0-BuM5)
2021/07/21(水) 11:16:37.45ID:CAhJ9aCx0 じじい度検定になっとる
59デフォルトの名無しさん (ワッチョイ 9501-zSg9)
2021/07/21(水) 20:55:54.33ID:NQ6A/S1F0 Cの範囲内なのにえらいストレスフルやな
//コメントや for 内の変数宣言が禁じられると辛い
//コメントや for 内の変数宣言が禁じられると辛い
60デフォルトの名無しさん (テテンテンテン MM0e-+scu)
2021/07/21(水) 21:11:33.77ID:kmyfY3M8M だんだんいじくり回されてワケわからん言語になるんだろうな
61はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-xL6t)
2021/07/21(水) 22:43:38.51ID:tIqEOSex062デフォルトの名無しさん (ワッチョイ c628-Tv+1)
2021/07/22(木) 00:04:04.57ID:0pHC70l40 今日,O'rellyの『Lex & Yacc』で「自己参照型構造体」という概念を知ったんだけど,
これが動作する理屈とかこういう書き方をする利点がマジでわからなくて苦戦してる。
でもこれを理解できるようになればメモリ確保やポインタ参照の話がわかるようになる……
と期待してがんばる。
これが動作する理屈とかこういう書き方をする利点がマジでわからなくて苦戦してる。
でもこれを理解できるようになればメモリ確保やポインタ参照の話がわかるようになる……
と期待してがんばる。
63はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-xL6t)
2021/07/22(木) 00:13:03.51ID:r7I3CYuM0 基本的なメモリ管理をわからない段階で yacc の本を読んでるのか。
実用を通して理解するのもひとつの道ではあるだろうけど、
最初はもっと単純な事例集みたいなのを見るほうがいいと思う。
実用を通して理解するのもひとつの道ではあるだろうけど、
最初はもっと単純な事例集みたいなのを見るほうがいいと思う。
64蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdfa-rTLR)
2021/07/22(木) 00:14:52.69ID:24/oAOWdd65デフォルトの名無しさん (ワッチョイ da01-+scu)
2021/07/22(木) 09:38:36.05ID:ERrrf0sq0 自分が興味あることから掘り下げて行くのはいいと思うよ
とりあえず C言語 リスト構造 とかでググってみて
とりあえず C言語 リスト構造 とかでググってみて
66デフォルトの名無しさん (エムゾネ FFfa-E0YB)
2021/07/22(木) 10:14:39.29ID:I7nexIleF struct A { A a; }; ではないからな
struct A { A *p; }; ならただのポインタ
struct A { A *p; }; ならただのポインタ
67デフォルトの名無しさん (ワッチョイ 552c-Rh1M)
2021/07/22(木) 10:53:20.02ID:kFdJ5CFB0 Ruby は、Bison, flex だったか?
68デフォルトの名無しさん (ワッチョイ c628-Tv+1)
2021/07/22(木) 12:38:58.69ID:0pHC70l40 >>63
「勉強不足」といわれればそれはその通りなんだけど
寧ろC言語のやっかいな部分にできるだけ触らないですむように
という動機でlexとyaccを学んでるんですよね……。
↑まあこういう考え方が間違ってるかもということに
『Lex & Yacc』を読んでいて気付きはじめていますが……
>>65
こういう↓ことですよね。
https://dev.grapecity.co.jp/support/powernews/column/clang/031/page02.htm
実は『Lex & Yacc』内ではそのコード概念の名前はでてこなくて
コード断片でggったりしてました。
「勉強不足」といわれればそれはその通りなんだけど
寧ろC言語のやっかいな部分にできるだけ触らないですむように
という動機でlexとyaccを学んでるんですよね……。
↑まあこういう考え方が間違ってるかもということに
『Lex & Yacc』を読んでいて気付きはじめていますが……
>>65
こういう↓ことですよね。
https://dev.grapecity.co.jp/support/powernews/column/clang/031/page02.htm
実は『Lex & Yacc』内ではそのコード概念の名前はでてこなくて
コード断片でggったりしてました。
69デフォルトの名無しさん (ワッチョイ 4545-zSg9)
2021/07/22(木) 12:48:57.06ID:MMqyZQ9/070デフォルトの名無しさん (エムゾネ FFfa-E0YB)
2021/07/22(木) 14:18:45.83ID:I7nexIleF 「自己参照型」っていうのが
誤訳なんじゃないかって思ってる
実際には「自己型参照型」でしかない
ポインタを代入するときに自分自身(オブジェクト)のポインタを代入する訳じゃないから
自己を参照してる訳じゃないんだ
ここを誤解するから理解が進まない
>>69 君には伝わってるから良いよ
誤訳なんじゃないかって思ってる
実際には「自己型参照型」でしかない
ポインタを代入するときに自分自身(オブジェクト)のポインタを代入する訳じゃないから
自己を参照してる訳じゃないんだ
ここを誤解するから理解が進まない
>>69 君には伝わってるから良いよ
71デフォルトの名無しさん (ワッチョイ 4545-zSg9)
2021/07/22(木) 14:34:42.13ID:MMqyZQ9/0 ISO: self-referential structure
JIS: 自己参照する構造体
誤訳かねえ
JIS: 自己参照する構造体
誤訳かねえ
72デフォルトの名無しさん (ワッチョイ 8969-R8z5)
2021/07/22(木) 14:50:14.55ID:G9vEgy1w0 int arg;
p = (*p)(arg);
戻りが関数(A)のポインタとなる 引数int を取る関数(A) の宣言もまた
記述が無理な事案ですかの
p = (*p)(arg);
戻りが関数(A)のポインタとなる 引数int を取る関数(A) の宣言もまた
記述が無理な事案ですかの
73デフォルトの名無しさん (ワッチョイ 552c-Rh1M)
2021/07/22(木) 15:29:46.76ID:kFdJ5CFB0 自己参照型は、2分木とか?
親は、2つの子のポインターを持っていて、それが再帰的に続くもので、
親子は同じ構造をしているもの
親は、2つの子のポインターを持っていて、それが再帰的に続くもので、
親子は同じ構造をしているもの
74はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-xL6t)
2021/07/22(木) 16:19:06.28ID:r7I3CYuM0 わざわざ「自己参照する構造体」という用語が与えられているのは構造体タグのスコープを
説明する文法解説上の都合じゃないかな。
ノードを直列に接続すればリストになったり複数の接続を持てば木になったりというデータ構造のことと、
他のノードへの接続には C ではポインタを使うのが自然だというふたつの事柄を併せると
結果的に自分自身 (を含む構造体) と同じ型のオブジェクトを指すポインタが現れることもあるというだけのことで、
(データ構造、また、その管理においては) 指している型が同じなのか違うのかで
ことさらに区別して考える意味はあまりないように思う。
説明する文法解説上の都合じゃないかな。
ノードを直列に接続すればリストになったり複数の接続を持てば木になったりというデータ構造のことと、
他のノードへの接続には C ではポインタを使うのが自然だというふたつの事柄を併せると
結果的に自分自身 (を含む構造体) と同じ型のオブジェクトを指すポインタが現れることもあるというだけのことで、
(データ構造、また、その管理においては) 指している型が同じなのか違うのかで
ことさらに区別して考える意味はあまりないように思う。
75デフォルトの名無しさん (ワッチョイ daad-n9Kp)
2021/07/22(木) 16:44:22.00ID:zX6Mldkk0 C言語の勉強中にリスト構造とかの部分でポインタがよくわからない!って人良く見るけど
実際のところC言語で仕事するときにリストとか二分木ってあんま使わなくね?
構造体の配列は良く見るけど
組み込み系とかだとメモリ少しでも節約するためにリストにしたりするの?
実際のところC言語で仕事するときにリストとか二分木ってあんま使わなくね?
構造体の配列は良く見るけど
組み込み系とかだとメモリ少しでも節約するためにリストにしたりするの?
76デフォルトの名無しさん (ワッチョイ 4545-zSg9)
2021/07/22(木) 16:55:22.66ID:MMqyZQ9/0 > 組み込み系とかだとメモリ少しでも節約するためにリストにしたりするの?
意味がよくわからんが
組み込みでもリストもmallocも普通に使うぞ
OSがなきゃmalloc使えんとでも思っているのか?
意味がよくわからんが
組み込みでもリストもmallocも普通に使うぞ
OSがなきゃmalloc使えんとでも思っているのか?
77デフォルトの名無しさん (ワッチョイ daad-n9Kp)
2021/07/22(木) 17:03:27.91ID:zX6Mldkk078デフォルトの名無しさん (ワッチョイ 4545-zSg9)
2021/07/22(木) 17:12:18.33ID:MMqyZQ9/0 > C言語で仕事するときにリストとか二分木ってあんま使わなくね?
気に障るってか、数秒えってなった
気に障るってか、数秒えってなった
79はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-xL6t)
2021/07/22(木) 17:27:11.52ID:r7I3CYuM0 >>75
ワイはプロではないし組み込みのこともよう知らんけど
言語処理系を作ったときに当然ながら構文木を組み立てたりはしたし、
宣言した名前を保存するハッシュテーブルはチェイン法を使ったのでリストの一種でもあるわな。
(今なら面倒くさいので C++ で書いてしまう (標準ライブラリのコンテナを使う) だろうけど。)
分野によるとは思うけど、リストや木がそんなにほとんど目にしないというほうが不自然な気がする。
ワイはプロではないし組み込みのこともよう知らんけど
言語処理系を作ったときに当然ながら構文木を組み立てたりはしたし、
宣言した名前を保存するハッシュテーブルはチェイン法を使ったのでリストの一種でもあるわな。
(今なら面倒くさいので C++ で書いてしまう (標準ライブラリのコンテナを使う) だろうけど。)
分野によるとは思うけど、リストや木がそんなにほとんど目にしないというほうが不自然な気がする。
80デフォルトの名無しさん (ワッチョイ bd21-ayZy)
2021/07/22(木) 17:58:20.48ID:4yFOTvD80 >>77
横からだけどマイコン次第だわな。メモリの動的確保なんて、
そもそも無理ーって処理系もある。コンパイル時にメモリは固定しちゃう。
昨今の32bitのARMマイコンやらESPやら最近触ってるけどmallocも普通にあるし、
サポートライブラリにlistのソース付いてたり(それを使うべきかは悩む)。
更にc++なんかも普通に使えるから、なんか落ち着かんw
横からだけどマイコン次第だわな。メモリの動的確保なんて、
そもそも無理ーって処理系もある。コンパイル時にメモリは固定しちゃう。
昨今の32bitのARMマイコンやらESPやら最近触ってるけどmallocも普通にあるし、
サポートライブラリにlistのソース付いてたり(それを使うべきかは悩む)。
更にc++なんかも普通に使えるから、なんか落ち着かんw
81デフォルトの名無しさん (テテンテンテン MM0e-+scu)
2021/07/22(木) 21:02:00.87ID:NQdyjX4FM 簡単なテキストエディタ作ってみてください
82デフォルトの名無しさん (アウアウウー Sa5d-Hgw+)
2021/07/23(金) 00:04:27.67ID:efwzK8IKa っsed
83デフォルトの名無しさん (ワッチョイ b963-3Z6B)
2021/07/23(金) 00:26:23.76ID:IkF8M4100 あれは簡単なのか?w
コマンド自由に操れる人、果たしているのかな?
コマンド自由に操れる人、果たしているのかな?
84デフォルトの名無しさん (ワッチョイ 1301-wc+D)
2021/07/23(金) 06:51:28.40ID:U6L8J7vD0 作るのが簡単 ≠ 使うのが簡単
85デフォルトの名無しさん (ワッチョイ 3945-RnSF)
2021/07/23(金) 07:52:07.52ID:/J+0ROXX0 えー? sed禁止とか言われたら立ち直れんぞ
86デフォルトの名無しさん (ワッチョイ d12d-WppR)
2021/07/23(金) 09:04:13.56ID:/WZbwRMt0 sed awkして(ry
87デフォルトの名無しさん (ワッチョイ b15f-Hgw+)
2021/07/23(金) 09:41:53.92ID:lst4CtWH0 Screen EDitor ですねわかります
88デフォルトの名無しさん (ワッチョイ 2b28-h4Fy)
2021/07/23(金) 18:17:37.42ID:kuO5Sx1T0 よくUnixについての記事や書籍に,
「sedは入力全体を一度に読み込まず一行ごとに処理するから
動作が遅くならず,メモリ容量も気にしなくていい」
みたいなことが書いてあって,それは概ね事実だと思うんだけど,
C言語でsedを実装するときもviを実装するときに比べて
メモリ確保とかが楽なんだろうか。
「sedは入力全体を一度に読み込まず一行ごとに処理するから
動作が遅くならず,メモリ容量も気にしなくていい」
みたいなことが書いてあって,それは概ね事実だと思うんだけど,
C言語でsedを実装するときもviを実装するときに比べて
メモリ確保とかが楽なんだろうか。
89デフォルトの名無しさん (ワッチョイ 532c-TOGs)
2021/07/23(金) 19:24:45.90ID:Nx0yKcVz0 Ruby では、
IO.readlines は、ファイル内のすべてを読み込むが、
IO#each_line は、1行ずつ読み込む
IO.readlines は、ファイル内のすべてを読み込むが、
IO#each_line は、1行ずつ読み込む
90デフォルトの名無しさん (ワッチョイ b963-3Z6B)
2021/07/23(金) 19:49:44.19ID:IkF8M4100 sedにもホールドスペースがあるから、テキスト全体を読み込んで処理する事も出来る
91デフォルトの名無しさん (ガラプー KK8b-HU3q)
2021/07/23(金) 23:06:00.86ID:kreL/CiTK92デフォルトの名無しさん (ワッチョイ 2b28-h4Fy)
2021/07/24(土) 00:40:19.89ID:osiAYP280 >>91
最新の標準Unixだとsedは最低8192バイトだけ読み込めばいいみたいよ。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
最新の標準Unixだとsedは最低8192バイトだけ読み込めばいいみたいよ。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
93デフォルトの名無しさん (ワッチョイ b963-3Z6B)
2021/07/24(土) 01:03:44.23ID:3ie/V+ee0 POSIX標準は満たすべき最低レベルを規定しているって事ではないかな?
GNU sed の実装はこうみたいだ
For those who want to write portable sed scripts, be aware that some implementations have been known
to limit line lengths (for the pattern and hold spaces) to be no more than 4000 bytes. The POSIX standard
specifies that conforming sed implementations shall support at least 8192 byte line lengths. GNU sed has
no built-in limit on line length; as long as it can malloc() more (virtual) memory, you can feed or construct
lines as long as you like.
GNU sed の実装はこうみたいだ
For those who want to write portable sed scripts, be aware that some implementations have been known
to limit line lengths (for the pattern and hold spaces) to be no more than 4000 bytes. The POSIX standard
specifies that conforming sed implementations shall support at least 8192 byte line lengths. GNU sed has
no built-in limit on line length; as long as it can malloc() more (virtual) memory, you can feed or construct
lines as long as you like.
9462 (ガックシ 06eb-qCnf)
2021/07/26(月) 12:30:48.85ID:yVSFJZsJ6 自己参照型構造体(用語法的に正しくないという指摘もあるけど…)がちょっとわかったかも。
はじめは『もう一度基礎からC言語』の第31回「データ構造(10)〜構造体をポインタでつなぐ」
https://dev.grapecity.co.jp/support/powernews/column/clang/031/page02.htm
を参考にしてたんだけど,記事集の題名からも察せる通り「初めてC言語を学んでいる」
という状態で読むには向いていなかった。
図書館でそれっぽい本を漁って見つけた,
『C実践プログラミング』の17章「高度なポインタ」にある解説が
初学者としては一番わかりやすかった。
わざわざこのスレで報告する需要はないかもしれないけど,
将来に,おなじような概念の理解で詰まっているひとの
助けになるかもしれないからという言い訳でもって書き込ませてください。
--
C言語でデータ構造を作ろうと思ったら,
基本的にコンパイル時から大きさを決め打ちして用意せざる得ないけれど,
無から有を作り出せるー*1]malloc関数を用いることで
コンパイル時ではなく実行時に自由に拡大できるという,
記憶領域を食いにくいのに大規模な情報を格納できるデータ構造を作れる。
なぜ構造体を使うのかは自明すぎるためか書籍では明言されていなかった。
あえて言葉にするなら,
C言語において 複雑な情報を格納できるデータ構造を作るにあたって
「構造体を定義する」ことはもっとも一般的な慣行であることと,
C言語の演算子に自己参照型構造体の操作に非常に便利な演算子
構造体ポインタ演算子->が用意されているということが決め手なのかな。
*1: ちょっと違う気がするけど,書籍にはそう書いてあった。
はじめは『もう一度基礎からC言語』の第31回「データ構造(10)〜構造体をポインタでつなぐ」
https://dev.grapecity.co.jp/support/powernews/column/clang/031/page02.htm
を参考にしてたんだけど,記事集の題名からも察せる通り「初めてC言語を学んでいる」
という状態で読むには向いていなかった。
図書館でそれっぽい本を漁って見つけた,
『C実践プログラミング』の17章「高度なポインタ」にある解説が
初学者としては一番わかりやすかった。
わざわざこのスレで報告する需要はないかもしれないけど,
将来に,おなじような概念の理解で詰まっているひとの
助けになるかもしれないからという言い訳でもって書き込ませてください。
--
C言語でデータ構造を作ろうと思ったら,
基本的にコンパイル時から大きさを決め打ちして用意せざる得ないけれど,
無から有を作り出せるー*1]malloc関数を用いることで
コンパイル時ではなく実行時に自由に拡大できるという,
記憶領域を食いにくいのに大規模な情報を格納できるデータ構造を作れる。
なぜ構造体を使うのかは自明すぎるためか書籍では明言されていなかった。
あえて言葉にするなら,
C言語において 複雑な情報を格納できるデータ構造を作るにあたって
「構造体を定義する」ことはもっとも一般的な慣行であることと,
C言語の演算子に自己参照型構造体の操作に非常に便利な演算子
構造体ポインタ演算子->が用意されているということが決め手なのかな。
*1: ちょっと違う気がするけど,書籍にはそう書いてあった。
95デフォルトの名無しさん (エムゾネ FF33-Hgw+)
2021/07/26(月) 14:20:07.95ID:9MzzzjGrF https://dev.grapecity.co.jp/support/powernews/column/clang/031/page02.htm
観たけど余談が多過ぎてなかなか本題に入らずイライラするω
あと確かに初心者向けではない
入口にたどり着く前に挫折する文章の書き方だと思う
観たけど余談が多過ぎてなかなか本題に入らずイライラするω
あと確かに初心者向けではない
入口にたどり着く前に挫折する文章の書き方だと思う
96デフォルトの名無しさん (エムゾネ FF33-Hgw+)
2021/07/26(月) 14:22:50.46ID:9MzzzjGrF >『C実践プログラミング』の17章「高度なポインタ」にある解説が
君にとって判り易かったのかも知れないが
君の感想文を読むとあまり良い本ではなさそう
君にとって判り易かったのかも知れないが
君の感想文を読むとあまり良い本ではなさそう
97デフォルトの名無しさん (ワッチョイ b15f-5PYr)
2021/07/26(月) 14:35:32.21ID:5u5J/MDS0 ama zon 4900900648
2冊目か3冊目に読む本
2005年6月21日に日本でレビュー済み
以前、某雑誌の特集で、Cがわかればすべてがわかるというのがあり
ましたが、まぁヨイショのし過ぎな文句なのかもしれませんが、依然
として、知っておいたほうがよい言語だと思います。
Cでプログラムするような機会は、ほんとここしばらく全くないです
けど、Cを勉強していたおかげで今までかなり助かってます。なんと
いってもCの影響を受けた言語は多いですからね、色々応用がきくも
のなのですよ。
で、肝心のこの本ですが、前訳本でも書きましたが、初心者を脱しよ
うとしている人にとっては最適だと思います。よくありがちな、Cの
文法やテクをただ書いているだけの本とは違います。プログラムのス
タイルやプログラムの仕方についての記述が数多くあります。
Cのような言語の場合、どのようにコーディングするのか、言い換え
るとWHATだけでなくHOWについて必ず考えなくてはならないと思いま
す。この本は常に、HOWについて意識した記述をしており、そういった
点が、この本を推奨する大きな理由です。
ただ、この本だけで、ポインタとかのキモはさすがに理解できません
でしたので、別の本を読む必要があります。
2冊目か3冊目に読む本
2005年6月21日に日本でレビュー済み
以前、某雑誌の特集で、Cがわかればすべてがわかるというのがあり
ましたが、まぁヨイショのし過ぎな文句なのかもしれませんが、依然
として、知っておいたほうがよい言語だと思います。
Cでプログラムするような機会は、ほんとここしばらく全くないです
けど、Cを勉強していたおかげで今までかなり助かってます。なんと
いってもCの影響を受けた言語は多いですからね、色々応用がきくも
のなのですよ。
で、肝心のこの本ですが、前訳本でも書きましたが、初心者を脱しよ
うとしている人にとっては最適だと思います。よくありがちな、Cの
文法やテクをただ書いているだけの本とは違います。プログラムのス
タイルやプログラムの仕方についての記述が数多くあります。
Cのような言語の場合、どのようにコーディングするのか、言い換え
るとWHATだけでなくHOWについて必ず考えなくてはならないと思いま
す。この本は常に、HOWについて意識した記述をしており、そういった
点が、この本を推奨する大きな理由です。
ただ、この本だけで、ポインタとかのキモはさすがに理解できません
でしたので、別の本を読む必要があります。
98デフォルトの名無しさん (エムゾネ FF33-Hgw+)
2021/07/26(月) 14:52:24.77ID:9wDqt6nuF99デフォルトの名無しさん (ワッチョイ b15f-5PYr)
2021/07/26(月) 14:57:02.20ID:5u5J/MDS0 不充分。この本だけでは足りない。
2019年4月13日に日本でレビュー済み
敢えてこの本を買う意味が分からない。
20世紀に買ったが、この本だけでは解決できない問題があり、投げた。
よくある fgets & sscanf のコードの部分では、入力バッファのクリアを行う方法が書かれていなかった。
当時はインターネットのコンテンツが今ほど発達しておらず独学ではお手上げ。
他にも何か問題点があった気がするし、今や様々な解説サイト、また「よくある解説サイトの誤りを指摘するサイト」で足りる。
セキュリティ対策についても、wikipediaのサンプルコードやjpcertの「CERT セキュアコーディングスタンダード」など、今では豊富な資料がネットで入手できる。必要なら英文資料だってネットで容易に入手できる(もちろんC99の規格文書も)。
2019年4月13日に日本でレビュー済み
敢えてこの本を買う意味が分からない。
20世紀に買ったが、この本だけでは解決できない問題があり、投げた。
よくある fgets & sscanf のコードの部分では、入力バッファのクリアを行う方法が書かれていなかった。
当時はインターネットのコンテンツが今ほど発達しておらず独学ではお手上げ。
他にも何か問題点があった気がするし、今や様々な解説サイト、また「よくある解説サイトの誤りを指摘するサイト」で足りる。
セキュリティ対策についても、wikipediaのサンプルコードやjpcertの「CERT セキュアコーディングスタンダード」など、今では豊富な資料がネットで入手できる。必要なら英文資料だってネットで容易に入手できる(もちろんC99の規格文書も)。
100デフォルトの名無しさん (アウアウウー Sa5d-HpcZ)
2021/07/26(月) 16:06:22.39ID:+kNv7glZa 諸々のコンパイラや環境がC11に準拠するようになって久しく、また業務やOSSでもC11で導入された新機能を使うようになってきてる印象があるんだけど(要出典w)、こと並列処理に関してはまだまだC99+POSIXスレッドを使ってた方が良さそうね。
久しぶりに並列処理を書いてみようと思ったんだけど、C11で標準規格として導入されたthread.hに対応してるコンパイラが現時点でも(特にUnix系で)ほとんどないことが意外だった。
今のところthread.hをUnixで使いたかったらmusl Cくらいしか選択肢がないし、
ttps://www.etalabs.net/compare_libcs.html
3年前の電子掲示板の書き込み(要は典拠性が低い)ではあるけど
ttps://www.reddit.com/r/C_Programming/comments/94acpl/c11_vs_pthreads/
ほとんどの人がC11ではなくPOSIXが定めてるスレッド使ってるみたいだし。
せっかく汎OS的に並列処理がかけそうな規格なのに、もったいないというかなんというか。。。
久しぶりに並列処理を書いてみようと思ったんだけど、C11で標準規格として導入されたthread.hに対応してるコンパイラが現時点でも(特にUnix系で)ほとんどないことが意外だった。
今のところthread.hをUnixで使いたかったらmusl Cくらいしか選択肢がないし、
ttps://www.etalabs.net/compare_libcs.html
3年前の電子掲示板の書き込み(要は典拠性が低い)ではあるけど
ttps://www.reddit.com/r/C_Programming/comments/94acpl/c11_vs_pthreads/
ほとんどの人がC11ではなくPOSIXが定めてるスレッド使ってるみたいだし。
せっかく汎OS的に並列処理がかけそうな規格なのに、もったいないというかなんというか。。。
101ハノン ◆QZaw55cn4c (ワッチョイ 7be9-8Qmj)
2021/07/26(月) 20:52:03.28ID:PhHFyA7M0 >>99
>入力バッファのクリアを行う方法
入力バッファのフラッシュは確か MS のコンパイラだけでしか使えない環境依存だったかと
行末に \n が在る、とかのルールがあれば、それが出るまで読み捨てればいいのですが、そういうルールがなければどうしようもない気が
>入力バッファのクリアを行う方法
入力バッファのフラッシュは確か MS のコンパイラだけでしか使えない環境依存だったかと
行末に \n が在る、とかのルールがあれば、それが出るまで読み捨てればいいのですが、そういうルールがなければどうしようもない気が
102ハノン ◆QZaw55cn4c (ワッチョイ 7be9-8Qmj)
2021/07/26(月) 20:54:03.66ID:PhHFyA7M0103はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 413e-QsN2)
2021/07/26(月) 21:07:00.92ID:afAoM3cN0 >>100
C11 のスレッドはオプショナルなのでスレッドを提供しなくても C11 準拠を名乗れる。
C の立場からすれば標準ではあまり高レイヤな機能を要求するのは気が引けるだろうし、
かといっていまどきスレッドに全く触れないでいるというわけにもいかないという妥協なんじゃないかな。
C11 のスレッドの基本的なモデルは POSIX のスレッドとそんなに違いがない (名前が違う程度) ので、
かえって乗り換える強い動機にならないのかも。
C11 のスレッドはオプショナルなのでスレッドを提供しなくても C11 準拠を名乗れる。
C の立場からすれば標準ではあまり高レイヤな機能を要求するのは気が引けるだろうし、
かといっていまどきスレッドに全く触れないでいるというわけにもいかないという妥協なんじゃないかな。
C11 のスレッドの基本的なモデルは POSIX のスレッドとそんなに違いがない (名前が違う程度) ので、
かえって乗り換える強い動機にならないのかも。
10462 (ワッチョイ 2b28-h4Fy)
2021/07/26(月) 22:30:44.17ID:sOMY1Y2o0 >>96
>>98
ご指摘ありがとうございます。
構造体リストについてもう一度 勉強しようと思います。
(他の方も書評の引用などありがとうございます)
『C実践プログラミング』のAmazon書評にあった
『Cクイックリファレンス 第2版』というのを試しに読んでみたところ,
かなり規格網羅的で丁寧だと感じたので,
当面はこれで勉強してみようと思います。
こちらの書籍には「
struct data {
// some code...
struct data *next
}
」という形のコードの解説そのものはありませんが,
ポインタの解説をCの規格に沿ってしてくれているので
かなり良い教科書として使えそうです。
以後言い訳::
いまのところ,まだC言語の規格が全て頭に入っている状態ですらなく,
ましてや実際のプログラミング作法も分かっていない段階なので,
ある書籍を見たときの(現代における)正確性・信頼性の判断が
できないんですよね……。
『C実践プログラミング』は昔のO'Reillyが出している書籍なので
ある程度信頼できるかな,と思って読み進めていたんですが,
(実際,本質を突いていて分かりやすいと感じる部分も多くありました)
時代的にも正味の内容的にも現代において参考にすべき
良書とはいいがたいのかな……?
>>98
ご指摘ありがとうございます。
構造体リストについてもう一度 勉強しようと思います。
(他の方も書評の引用などありがとうございます)
『C実践プログラミング』のAmazon書評にあった
『Cクイックリファレンス 第2版』というのを試しに読んでみたところ,
かなり規格網羅的で丁寧だと感じたので,
当面はこれで勉強してみようと思います。
こちらの書籍には「
struct data {
// some code...
struct data *next
}
」という形のコードの解説そのものはありませんが,
ポインタの解説をCの規格に沿ってしてくれているので
かなり良い教科書として使えそうです。
以後言い訳::
いまのところ,まだC言語の規格が全て頭に入っている状態ですらなく,
ましてや実際のプログラミング作法も分かっていない段階なので,
ある書籍を見たときの(現代における)正確性・信頼性の判断が
できないんですよね……。
『C実践プログラミング』は昔のO'Reillyが出している書籍なので
ある程度信頼できるかな,と思って読み進めていたんですが,
(実際,本質を突いていて分かりやすいと感じる部分も多くありました)
時代的にも正味の内容的にも現代において参考にすべき
良書とはいいがたいのかな……?
105デフォルトの名無しさん (ワッチョイ 532c-MYQi)
2021/07/27(火) 05:25:18.45ID:x4yitIm80 ポインターで次へつないでいく、リストみたいな自己参照型。next pointer。
同じ構造体のリスト。
動的関数型のElixir は、片方向リストを使う
a → b → c → d
struct data {
struct data *next
}
これが両方向リストなら、struct data *prev も持たなければならない。
次・前の2方向へ、たどれなければならないから
a ←→ b ←→ c ←→ d
ポインターに、null を代入すれば、次・前は存在しない。
つまり、終端を表す
詳細は、アルゴリズム・データ構造を参照
同じ構造体のリスト。
動的関数型のElixir は、片方向リストを使う
a → b → c → d
struct data {
struct data *next
}
これが両方向リストなら、struct data *prev も持たなければならない。
次・前の2方向へ、たどれなければならないから
a ←→ b ←→ c ←→ d
ポインターに、null を代入すれば、次・前は存在しない。
つまり、終端を表す
詳細は、アルゴリズム・データ構造を参照
106デフォルトの名無しさん (ワッチョイ 3945-RnSF)
2021/07/27(火) 10:57:27.91ID:cZjH0t2V0107デフォルトの名無しさん (ワッチョイ 8169-8Xcr)
2021/07/27(火) 11:05:53.35ID:/ekQh9610 双方向で b を削除するのに
b->prev->next = b->next;
b->next->prev = b->prev;
b さよなら
これで済むからありがたい表記ではあるな
b->prev->next = b->next;
b->next->prev = b->prev;
b さよなら
これで済むからありがたい表記ではあるな
108デフォルトの名無しさん (ワッチョイ fbe7-WppR)
2021/07/27(火) 11:39:36.88ID:neQM5ma+0109デフォルトの名無しさん (ワッチョイ b963-3Z6B)
2021/07/27(火) 11:42:04.93ID:sIvc9ZAG0 忘れずにちゃんと成仏させろよな
110デフォルトの名無しさん (エムゾネ FF33-Hgw+)
2021/07/27(火) 16:12:06.91ID:Dog97BpdF >>106
屁理屈
屁理屈
111デフォルトの名無しさん (ワッチョイ 3945-RnSF)
2021/07/27(火) 17:25:02.44ID:cZjH0t2V0112デフォルトの名無しさん (エムゾネ FF33-Hgw+)
2021/07/27(火) 18:25:54.21ID:Dog97BpdF そもそも話がかみあってない
こっちは気付いてるけど
君は気付いていない
ただそれだけ
だから屁理屈
こっちは気付いてるけど
君は気付いていない
ただそれだけ
だから屁理屈
113デフォルトの名無しさん (ワッチョイ 3945-RnSF)
2021/07/27(火) 18:38:55.37ID:cZjH0t2V0 結局、自分は尻尾を見せないんだな
やりあう価値もないゴミだな、唾棄
やりあう価値もないゴミだな、唾棄
114デフォルトの名無しさん (ワッチョイ d901-RnSF)
2021/07/27(火) 18:52:50.94ID:S/tVMF6N0 自己参照型の構造体で固定段数のリンク手繰るのに便利にはなってるけど
自己参照型の構造体があるがゆえに -> ができたんじゃなく
単にポインタの指し先(構造体)のメンバを (*). じゃ遠回りなので直接指定したいがための存在だと思ってる
自己参照型の構造体があるがゆえに -> ができたんじゃなく
単にポインタの指し先(構造体)のメンバを (*). じゃ遠回りなので直接指定したいがための存在だと思ってる
115デフォルトの名無しさん (ガラプー KK8b-HU3q)
2021/07/27(火) 19:55:06.48ID:rlqI0SGsK116はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 413e-QsN2)
2021/07/27(火) 23:09:50.37ID:eiJldbv00 >>115
Rust ではそうしてるんだから C でも最初からそういう選択も出来たはずではあると思う。
だけど違うことをするのに同じ見た目にするのが良いかどうかというのは微妙なところ。
どちらが良いと一概に言えるもんではないからな。
Rust ではそうしてるんだから C でも最初からそういう選択も出来たはずではあると思う。
だけど違うことをするのに同じ見た目にするのが良いかどうかというのは微妙なところ。
どちらが良いと一概に言えるもんではないからな。
117デフォルトの名無しさん (テテンテンテン MMeb-wc+D)
2021/07/28(水) 00:16:37.31ID:GYM2ckiMM CはRustの派生だったのか、知らなかった
118はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 413e-QsN2)
2021/07/28(水) 00:34:49.35ID:0ASLy6H40119デフォルトの名無しさん (ワッチョイ b963-3Z6B)
2021/07/28(水) 00:53:01.29ID:Fz30Fvzo0 FortranやCobolにも導入して欲しいのか?
120デフォルトの名無しさん (ワッチョイ 2b28-h4Fy)
2021/07/28(水) 01:00:09.40ID:nkHrLyVI0 うーん?
ある構文(範疇としては演算子の形態論?)について,
「他の言語での採用例があるからC言語がそういう構文を持っていても不思議じゃなかった」
という話が展開されていたと思うんですけど,
どうして「RustはCの派生」とかFortranやCOBOLの構文の話になったんですかね……?
ある構文(範疇としては演算子の形態論?)について,
「他の言語での採用例があるからC言語がそういう構文を持っていても不思議じゃなかった」
という話が展開されていたと思うんですけど,
どうして「RustはCの派生」とかFortranやCOBOLの構文の話になったんですかね……?
121デフォルトの名無しさん (ワッチョイ b3bd-N0I0)
2021/07/28(水) 01:46:29.97ID:LX2CDHAF0 バカだから
122デフォルトの名無しさん (JP 0Heb-qCnf)
2021/07/28(水) 09:52:29.36ID:M/k1RjyqH C99以降で真偽型をboolのように表記したいときは<stdbool.h>を読み込みますが,
規格票には「型boolはマクロとして定義しろ」とあります。
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n2596.pdf#section.7.18
一般に既存の型から新しい表記の型を定義するときはtypedefを使うべきだと
(典拠は失念したのですが)聞いたことがあります。
たしか,コンパイラによる検査があったりより構文的に厳密になったりするから,
というような理由だったはずです。
真偽型boolがtypedefではなくマクロで定義されている理由ってなんでしょうか。
思い当たる理由としては,C++との互換性がありますが,それをC言語の規格で考慮する意味がない
(というか,C++の規格をC側から参照すると循環的になってしまう気がする)
気がします…。
C規格の論理的根拠の真偽型にかんする節も読みましたが,
「typedefではなくマクロを使う理由」は記載されていませんでした。
http://www.open-std.org/JTC1/SC22/WG14/www/docs/C99RationaleV5.10.pdf
規格票には「型boolはマクロとして定義しろ」とあります。
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n2596.pdf#section.7.18
一般に既存の型から新しい表記の型を定義するときはtypedefを使うべきだと
(典拠は失念したのですが)聞いたことがあります。
たしか,コンパイラによる検査があったりより構文的に厳密になったりするから,
というような理由だったはずです。
真偽型boolがtypedefではなくマクロで定義されている理由ってなんでしょうか。
思い当たる理由としては,C++との互換性がありますが,それをC言語の規格で考慮する意味がない
(というか,C++の規格をC側から参照すると循環的になってしまう気がする)
気がします…。
C規格の論理的根拠の真偽型にかんする節も読みましたが,
「typedefではなくマクロを使う理由」は記載されていませんでした。
http://www.open-std.org/JTC1/SC22/WG14/www/docs/C99RationaleV5.10.pdf
123デフォルトの名無しさん (ワッチョイ d901-bSA8)
2021/07/28(水) 10:26:19.41ID:vTqcwKkg0 マクロだと#undefできるから自分でboolを定義してる古いコードのための移行措置っぽいね
<stdbool.h>をincludeしなければいいと思うけど間接的にincludeされるケースもあるんだろう
_Boolの方は予約語になってる
7.18 (4)
..., a program may undefine and perhaps then redefine the macros bool, true, and false.
プログラムはbool、true、falseマクロをundefineして再定義することができる
7.31.11 (1)
The ability to undefine and perhaps then redefine the macros bool, true, and false is an obsolescent
feature.
⇒ bool、true、falseをundefineして再定義できる特性は廃止されつつある
<stdbool.h>をincludeしなければいいと思うけど間接的にincludeされるケースもあるんだろう
_Boolの方は予約語になってる
7.18 (4)
..., a program may undefine and perhaps then redefine the macros bool, true, and false.
プログラムはbool、true、falseマクロをundefineして再定義することができる
7.31.11 (1)
The ability to undefine and perhaps then redefine the macros bool, true, and false is an obsolescent
feature.
⇒ bool、true、falseをundefineして再定義できる特性は廃止されつつある
124デフォルトの名無しさん (アウウィフ FF5d-5PYr)
2021/07/28(水) 12:14:26.76ID:I0vZ6ZDJF Win32APIとか使わずに
Cの標準関数でカレントディレクトリではなく
今実行中のexeのpathを得る方法はどれですか?
Cの標準関数でカレントディレクトリではなく
今実行中のexeのpathを得る方法はどれですか?
125デフォルトの名無しさん (ワッチョイ 8169-8Xcr)
2021/07/28(水) 12:21:24.51ID:Zs50Z/m/0 int main(int argc, char* argv[])
の argv[0] で実行ファイルへのフルパスがえられるのは環境依存だったかな・・・
の argv[0] で実行ファイルへのフルパスがえられるのは環境依存だったかな・・・
126デフォルトの名無しさん (アウアウウー Sa5d-UreN)
2021/07/28(水) 12:22:28.68ID:uGnpdH8xa mainの第2引数の argv[0] にはコマンドラインから入力した通りのコマンド名が入っているんだっけ
フルパスで入っているんだっけ
フルパスで入っているんだっけ
127デフォルトの名無しさん (アウアウウー Sa5d-UreN)
2021/07/28(水) 12:24:05.30ID:uGnpdH8xa 被った
たしか Windows はフルパスだったような…
違ってたらごめんなさい
たしか Windows はフルパスだったような…
違ってたらごめんなさい
128デフォルトの名無しさん (テテンテンテン MMeb-wc+D)
2021/07/28(水) 12:27:22.89ID:TLecxenIM 実装に依存
129デフォルトの名無しさん (アウアウウー Sa5d-UreN)
2021/07/28(水) 12:35:40.50ID:uGnpdH8xa Windows という書き方はよくないかな
シェルの実装によると思います
なので、WSLに持っていくと期待通りに動かなかったりするかもしれません
ここでは Windows限定でよさそうだけど
シェルの実装によると思います
なので、WSLに持っていくと期待通りに動かなかったりするかもしれません
ここでは Windows限定でよさそうだけど
130デフォルトの名無しさん (ワッチョイ 13ad-3Z6B)
2021/07/28(水) 13:20:46.92ID:6qacKWPx0 え?そう? Windows で C 使う人って今はあまりいないのでは? Linux とかなら分かるけど。
131デフォルトの名無しさん (ワッチョイ 8b61-QsN2)
2021/07/28(水) 13:41:10.64ID:4VQYix970 powershellはフルパスだけどcmdは入力のまま
結局はCreateProcessに渡した文字列なのでフルパス前提にしちゃだめよ
OSに依存しない方法で確実なのはないよなぁ
argv[0]が
ファイル名のみ:カレント+環境変数pathを走査
相対パス:カレントと連結
絶対パス:そのまま
とかやればそこそこいけるだろうけどめんどくさいな
結局はCreateProcessに渡した文字列なのでフルパス前提にしちゃだめよ
OSに依存しない方法で確実なのはないよなぁ
argv[0]が
ファイル名のみ:カレント+環境変数pathを走査
相対パス:カレントと連結
絶対パス:そのまま
とかやればそこそこいけるだろうけどめんどくさいな
132デフォルトの名無しさん (ワッチョイ d901-bSA8)
2021/07/28(水) 13:54:41.98ID:vTqcwKkg0 純粋なC標準の範囲では不可能な気がする
カレントディレクトリをとるgetcwd()もPOSIX(unistd.h)だし
C言語の標準ライブラリにはディレクトリ階層の概念自体がなさそう
カレントディレクトリをとるgetcwd()もPOSIX(unistd.h)だし
C言語の標準ライブラリにはディレクトリ階層の概念自体がなさそう
133デフォルトの名無しさん (アウアウウー Sa5d-UreN)
2021/07/28(水) 13:55:33.60ID:uGnpdH8xa134デフォルトの名無しさん (アウウィフ FF5d-5PYr)
2021/07/28(水) 14:05:55.87ID:I0vZ6ZDJF みなさんありがとうございます
dirname(argv[0]) したら argv[0] が壊れました
ほんとうにがりがとうございました
dirname(argv[0]) したら argv[0] が壊れました
ほんとうにがりがとうございました
135蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd33-vTy/)
2021/07/28(水) 14:19:05.25ID:JuarLz62d 本当のニガリが10、あったと?
136デフォルトの名無しさん (ガックシ 06eb-qCnf)
2021/07/28(水) 14:21:25.34ID:tV9+c+Bb6 これ解決策じゃなくて愚痴なんだが、main()関数が使えるのはホスト環境で、つまりmain()関数のargv[]引数は「OSによる支援」を前提にできるんだから、実装依存じゃなくて「argv[0]には実行されたファイルのOSにおけるパス名が格納される」みたいな仕様にしてもよかった気がする。
それこそstdint.hみたいに、多種多様な機器への対応を考えなくてもいい関数なんだから、実行環境のファイルシステムやらをある程度は仮定しちゃってもいいわけで。
それこそstdint.hみたいに、多種多様な機器への対応を考えなくてもいい関数なんだから、実行環境のファイルシステムやらをある程度は仮定しちゃってもいいわけで。
137デフォルトの名無しさん (ワッチョイ 13ad-9C7i)
2021/07/28(水) 16:21:41.95ID:6qacKWPx0 ファイルシステムもOSもない組み込み機器もあるわけで・・・
138はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 413e-QsN2)
2021/07/28(水) 16:21:59.41ID:0ASLy6H40 >>136
どんな OS でも Unix 風のファイルシステムを採用しているというわけではなくて、
たとえば BTRON が採用しているファイルシステムでは
同名のファイルが存在してよく、ディレクトリのような階層化は存在しない。
全体で唯一に区別できる名前 (フルパスに相当するもの) がない。
OS だってファイルシステムだって多種多様なんで、
起動時に「なんらかの」文字列で情報が与えられるということ以上は
環境依存にならざるを得ないよ。
どんな OS でも Unix 風のファイルシステムを採用しているというわけではなくて、
たとえば BTRON が採用しているファイルシステムでは
同名のファイルが存在してよく、ディレクトリのような階層化は存在しない。
全体で唯一に区別できる名前 (フルパスに相当するもの) がない。
OS だってファイルシステムだって多種多様なんで、
起動時に「なんらかの」文字列で情報が与えられるということ以上は
環境依存にならざるを得ないよ。
139はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 413e-QsN2)
2021/07/28(水) 16:25:16.04ID:0ASLy6H40140デフォルトの名無しさん (ワッチョイ d9da-RnSF)
2021/07/28(水) 18:03:22.93ID:Y6SMxOTL0141デフォルトの名無しさん (ワッチョイ d901-RnSF)
2021/07/28(水) 18:21:15.71ID:S51yZazJ0 コード記述してて実行ファイルのフルパスが必要となるんだから
それなりのOSから叩き起こされてること前提よね
それなりのOSから叩き起こされてること前提よね
142デフォルトの名無しさん (ワッチョイ 2b28-h4Fy)
2021/07/28(水) 18:43:00.22ID:nkHrLyVI0 >>138
> BTRON が採用しているファイルシステムでは
> 同名のファイルが存在してよく、ディレクトリのような階層化は存在しない
知らんかった……。
調べたところBTRONは組込み機器向けのファームウェアじゃなさそうだし,
ホスト環境=「それなりのOSが期待できる」環境あっても,
「あるファイルのパス名が存在して,その絶対値が文字列として一意に定まる」
ことさえ期待できないのか……。
> BTRON が採用しているファイルシステムでは
> 同名のファイルが存在してよく、ディレクトリのような階層化は存在しない
知らんかった……。
調べたところBTRONは組込み機器向けのファームウェアじゃなさそうだし,
ホスト環境=「それなりのOSが期待できる」環境あっても,
「あるファイルのパス名が存在して,その絶対値が文字列として一意に定まる」
ことさえ期待できないのか……。
143デフォルトの名無しさん (ガラプー KK8b-HU3q)
2021/07/28(水) 18:54:22.92ID:wp9dn28tK144デフォルトの名無しさん (ワッチョイ 2b28-h4Fy)
2021/07/28(水) 18:56:43.36ID:nkHrLyVI0 > [...] the array members argv[0] through argv[argc-1] inclusive shall contain pointers to strings, which are given implementation-defined values by the host environment prior to program startup.
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n2596.pdf#section.5.1.2.2.1
C2xでもargv[0]に何が格納されるかは「実装依存」って書いてあるね……めちゃくちゃ残念だ。
あとこれ読んでて気が付いたけど,「ホスト環境」ってhost environmentじゃないのね。
hosted enviromentだから,正確に訳すなら「ホスト済み環境」とかのほうが良いのかな?
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n2596.pdf#section.5.1.2.2.1
C2xでもargv[0]に何が格納されるかは「実装依存」って書いてあるね……めちゃくちゃ残念だ。
あとこれ読んでて気が付いたけど,「ホスト環境」ってhost environmentじゃないのね。
hosted enviromentだから,正確に訳すなら「ホスト済み環境」とかのほうが良いのかな?
145デフォルトの名無しさん (ワッチョイ d901-bSA8)
2021/07/28(水) 22:12:53.76ID:vTqcwKkg0 そのhosted environmentはプログラムの実行環境(execution environments)を
・freestanding(自立した環境=OS無しの組み込み系)
・hosted(OSにhostされた環境)
に分けたものだからOSとかプラットフォームを指すホスト環境とはたぶん別の意味
・freestanding(自立した環境=OS無しの組み込み系)
・hosted(OSにhostされた環境)
に分けたものだからOSとかプラットフォームを指すホスト環境とはたぶん別の意味
146デフォルトの名無しさん (ワッチョイ 1545-Xvfy)
2021/07/30(金) 19:40:44.58ID:ftRMaVHk0 hosted environmentの概念には明らかにUNIXが背景になってるね
MS-DOSだのCP/MだのROM BASICだのまでは想定してない
MS-DOSだのCP/MだのROM BASICだのまでは想定してない
147デフォルトの名無しさん (ワッチョイ 2628-8ZXO)
2021/07/31(土) 21:45:13.12ID:c1SsRmFt0148はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 213e-Gkqf)
2021/08/01(日) 11:25:29.19ID:grRzUWQ80 >>147
性能とかじゃなくてモデル化の仕方が多様という話。
たとえば古い時代の BASIC (N-BASIC など) は環境変数やコマンドラインという概念は持たないが、
違う形でデータを受け渡す方法は持っていて、どちらが高性能かというようなものではない。
性能とかじゃなくてモデル化の仕方が多様という話。
たとえば古い時代の BASIC (N-BASIC など) は環境変数やコマンドラインという概念は持たないが、
違う形でデータを受け渡す方法は持っていて、どちらが高性能かというようなものではない。
149デフォルトの名無しさん (ワッチョイ 2628-8ZXO)
2021/08/01(日) 18:29:17.83ID:1DStn3/B0 >>148
今 調べた知識なのでいろいろ間違っているとは思うのですが,
N-BASICとかってそもそも「OS」なんですかね……?
「hosted environmentという概念はUnixを想定したもので,
古いBASICでは通用しない」
という話からは,
1. Unixと古いBASICが同列の概念である
2. hosted environmentは「OSがある環境」を指している
ようなことが読み取れるんですが,
1. N-BASICはUnixのような
「機器→抽象化層1 (HAL/OS) →カーネル→シェル」
みたいな構造では表わせない位置にあるため
Unixと同列(あるいは類似)の概念として扱うのは
違うような気がすること
2. そもそもhosted environmentは
C2x規格の5.1.2.2で規定されている動作を実装した処理環境であって
「OSがある環境」を指してはいないこと
(だからUnixがどう,みたいな話は関係ない?)
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n2596.pdf#paragraph.5.1.2.2
などから,ちょっと納得しがたいです……。
今 調べた知識なのでいろいろ間違っているとは思うのですが,
N-BASICとかってそもそも「OS」なんですかね……?
「hosted environmentという概念はUnixを想定したもので,
古いBASICでは通用しない」
という話からは,
1. Unixと古いBASICが同列の概念である
2. hosted environmentは「OSがある環境」を指している
ようなことが読み取れるんですが,
1. N-BASICはUnixのような
「機器→抽象化層1 (HAL/OS) →カーネル→シェル」
みたいな構造では表わせない位置にあるため
Unixと同列(あるいは類似)の概念として扱うのは
違うような気がすること
2. そもそもhosted environmentは
C2x規格の5.1.2.2で規定されている動作を実装した処理環境であって
「OSがある環境」を指してはいないこと
(だからUnixがどう,みたいな話は関係ない?)
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n2596.pdf#paragraph.5.1.2.2
などから,ちょっと納得しがたいです……。
150デフォルトの名無しさん (ワッチョイ 1545-Xvfy)
2021/08/01(日) 18:40:30.22ID:4Ph4Dvnc0 IPLで起動して、ハードウエアへのアクセスを代行し、
コマンドをタイプして結果を文字で表示するCUI
という観点からはUNIXとBASICは同列だよ
MS-DOSでのデバドラはお行儀でしかなく
アプリが直接I/Oなんて珍しくもなんともないが
一応argc, argvという概念はあった
言い出すとマイクロカーネルをヨイショする連中を嘲笑うように
モノリシックカーネルでいったLinuxは、じゃあOSに非ずなのかと
OSとは何か、何が該当し、何が該当しないのかは
見方が色々で誰もが認める基準はなかなかできない
コマンドをタイプして結果を文字で表示するCUI
という観点からはUNIXとBASICは同列だよ
MS-DOSでのデバドラはお行儀でしかなく
アプリが直接I/Oなんて珍しくもなんともないが
一応argc, argvという概念はあった
言い出すとマイクロカーネルをヨイショする連中を嘲笑うように
モノリシックカーネルでいったLinuxは、じゃあOSに非ずなのかと
OSとは何か、何が該当し、何が該当しないのかは
見方が色々で誰もが認める基準はなかなかできない
151デフォルトの名無しさん (ワッチョイ d563-IKHw)
2021/08/01(日) 19:45:48.16ID:bX2lzryL0 なんかわざと煽ろうとしている?
152デフォルトの名無しさん (ワッチョイ 4146-6lFD)
2021/08/01(日) 20:00:02.07ID:tSrdcQx/0 OSから外れた例をわざわざ挙げたのだろうと思っていたが、OSが何か分からない人でしたか...
153はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 213e-Gkqf)
2021/08/01(日) 20:46:27.86ID:grRzUWQ80 >>149
> N-BASICとかってそもそも「OS」なんですかね……?
---------- JIS X 0001-1994 ----------
オペレーティングシステム, OS(省略形)
プログラムの実行を制御するソフトウェアであって,
資源割振り,スケジューリング,入出力制御,
データ管理などのサービスを提供するもの。
備考
オペレーティングシステムは,ソフトウェアが主体であるが,
部分的にハードウェア化することも可能である。
-------------------------------------
まあ要するに OS がどのような構成を持つものなのかというのは曖昧で、
Unix 的な立ち位置も OS が持ちうる構成のひとつでしかないんよ。
> Unixと同列(あるいは類似)の概念として扱うのは
> 違うような気がすること
「モデル化の仕方は多様」という例のひとつとして N-BASIC を出している。
違うように感じられるならそれは提示した意図通り。
> N-BASICとかってそもそも「OS」なんですかね……?
---------- JIS X 0001-1994 ----------
オペレーティングシステム, OS(省略形)
プログラムの実行を制御するソフトウェアであって,
資源割振り,スケジューリング,入出力制御,
データ管理などのサービスを提供するもの。
備考
オペレーティングシステムは,ソフトウェアが主体であるが,
部分的にハードウェア化することも可能である。
-------------------------------------
まあ要するに OS がどのような構成を持つものなのかというのは曖昧で、
Unix 的な立ち位置も OS が持ちうる構成のひとつでしかないんよ。
> Unixと同列(あるいは類似)の概念として扱うのは
> 違うような気がすること
「モデル化の仕方は多様」という例のひとつとして N-BASIC を出している。
違うように感じられるならそれは提示した意図通り。
154デフォルトの名無しさん (テテンテンテン MMee-stwz)
2021/08/01(日) 20:59:26.94ID:6Hcq0V/AM この人の理解が間違えている。
わざと言っているとしたら悪質
わざと言っているとしたら悪質
155デフォルトの名無しさん (ワッチョイ 56bb-cES+)
2021/08/01(日) 21:23:59.60ID:fSdDKS6o0156デフォルトの名無しさん (ワッチョイ fa02-Gkqf)
2021/08/01(日) 21:37:13.51ID:dQpg7mz50 N-BASICは確かにハードウエアを直接制御できるという意味では
OSに近い。ただ今のOSとは全然違う。BASICだと遅すぎるので
大半はマシン語で直接書いてある。今のOSとは考え方が違う。
OSに近い。ただ今のOSとは全然違う。BASICだと遅すぎるので
大半はマシン語で直接書いてある。今のOSとは考え方が違う。
157デフォルトの名無しさん (ワッチョイ 1545-Xvfy)
2021/08/01(日) 21:43:51.38ID:4Ph4Dvnc0 BASICそのものはマシン語で書かれているんだが
158デフォルトの名無しさん (ワッチョイ 2628-8ZXO)
2021/08/01(日) 21:54:08.54ID:1DStn3/B0 >>156
たしかにそういう意味では「OS」といえるのかもしれないですね。
ただ,それだと組込み機器のファームウェアだって
機器を操作できる,対人インターフェースがあるという点ではOSといえることになりません?
たしかにそういう意味では「OS」といえるのかもしれないですね。
ただ,それだと組込み機器のファームウェアだって
機器を操作できる,対人インターフェースがあるという点ではOSといえることになりません?
159デフォルトの名無しさん (ワッチョイ 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使うけどね。そうしないと見づらいし分かり難くなるから。
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
264デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/08(日) 05:41:26.37ID:X9nZYb130 つまり出鱈目な前提で寝言ぬかしてるってことか
265デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/08(日) 06:43:20.13ID:3G5PI5Y70 仮定法も知らないアホかよw
266デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/08(日) 07:32:57.11ID:X9nZYb130 根拠なし、前提は出鱈目
恥を知れよまずは
恥を知れよまずは
267デフォルトの名無しさん (テテンテンテン MM8b-bikt)
2021/08/08(日) 09:53:42.66ID:766a9h8SM 仮定法を理解できなかったのか…
可哀想にw
可哀想にw
268デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/08(日) 10:19:43.20ID:X9nZYb130 証明も承認もされていない前提で何かぬかして
それを肯定して欲しがるのは二重質問だろアフォ
それを肯定して欲しがるのは二重質問だろアフォ
269デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/08(日) 10:55:03.30ID:3G5PI5Y70 証明とか承認とか、仮定法に全く関係なくて笑える
肯定とかに至っては全く意味不明w
肯定とかに至っては全く意味不明w
270デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/08(日) 10:56:31.55ID:X9nZYb130 前提を間違ってるのをどんなに言い訳しても無駄だよ
,,-―--、
|:::::::::::::;;;ノ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|::::::::::( 」 <仮定法仮定法仮定法仮定法・・・・
ノノノ ヽ_l \______________
,,-┴―┴- 、 ∩_
/,|┌-[]─┐| \ ( ノ
/ ヽ| | バ | '、/\ / /
/ `./| | カ | |\ /
\ ヽ| lゝ | | \__/
\ |  ̄ ̄ ̄ |
⊂|______|
|l_l i l_l |
| ┬ |
,,-―--、
|:::::::::::::;;;ノ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|::::::::::( 」 <仮定法仮定法仮定法仮定法・・・・
ノノノ ヽ_l \______________
,,-┴―┴- 、 ∩_
/,|┌-[]─┐| \ ( ノ
/ ヽ| | バ | '、/\ / /
/ `./| | カ | |\ /
\ ヽ| lゝ | | \__/
\ |  ̄ ̄ ̄ |
⊂|______|
|l_l i l_l |
| ┬ |
271デフォルトの名無しさん (ワッチョイ 33bd-kkkT)
2021/08/08(日) 10:58:09.47ID:o6Sz00kX0 いい加減にしろキチガイコンビ
もう3日目だぞ
もう3日目だぞ
272デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/08(日) 11:40:04.29ID:3G5PI5Y70 なんの前提も置いてないのに前提が間違ってると言い続けるしかないポンコツBOT並みの知能だからねぇw
273デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/08(日) 11:45:29.53ID:X9nZYb130 > EXIT_SUCCESSがどういう意味かもわからないなら英語からやり直せよw
前提: EXIT_SUCCESSがどういう意味かわからない
主張: 英語からやり直せ
該当者がいないんだが
あ、1人いたな規格票読まねえやつがw
前提: EXIT_SUCCESSがどういう意味かわからない
主張: 英語からやり直せ
該当者がいないんだが
あ、1人いたな規格票読まねえやつがw
274デフォルトの名無しさん (ワッチョイ 1302-Nh3K)
2021/08/08(日) 12:51:11.36ID:aqugezwJ0 >>257
for (;;) するくらいなら do {} while (0); 選ぶかな
for (;;) するくらいなら do {} while (0); 選ぶかな
275デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/08(日) 12:53:24.15ID:3G5PI5Y70 こんなのもわかんねーなら会社辞めちまえまえ!
って言われて会社辞めるアホやな
まあ辞めた方が会社にも本人にも良さそうだけどw
って言われて会社辞めるアホやな
まあ辞めた方が会社にも本人にも良さそうだけどw
276デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/08(日) 12:56:23.19ID:3G5PI5Y70277デフォルトの名無しさん (ワッチョイ 9910-qxAg)
2021/08/08(日) 13:34:46.83ID:yE7YGXiy0 なるほどね
do{}while(0)ね
do{}while(0)ね
278デフォルトの名無しさん (ワッチョイ 3163-Z6Ah)
2021/08/08(日) 13:38:12.62ID:EooHPpNB0 while (1) は、たまに使います
280デフォルトの名無しさん (ワッチョイ 61b0-+f9r)
2021/08/08(日) 14:44:42.99ID:Cdmlpdjr0 while(1)だとどのツールでどういう警告が出る?
281デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/08(日) 14:55:49.48ID:3G5PI5Y70 >>280
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4127?view=msvc-160
最近(でもないか)の奴はwhile(1)だと警告を出さないようにしてるみたいだけど
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4127?view=msvc-160
最近(でもないか)の奴はwhile(1)だと警告を出さないようにしてるみたいだけど
282デフォルトの名無しさん (ワッチョイ 59bb-yyuh)
2021/08/08(日) 15:21:56.83ID:ubSlJzPI0 Warningって読み方ウォーニング?
ワーニングじゃないの?
ワーニングじゃないの?
284デフォルトの名無しさん (ワッチョイ 3163-Z6Ah)
2021/08/08(日) 15:41:10.34ID:EooHPpNB0 >>280
cl -W4 while.c
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
while.c
while.c(5) : warning C4127: 条件式が定数です。
cl -W4 while.c
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
while.c
while.c(5) : warning C4127: 条件式が定数です。
285ハノン ◆QZaw55cn4c
2021/08/08(日) 15:56:39.95 >>280,281
うーん、手元の cygwin gcc 10.2.0 では while (1) も while (42) もウォーニングは出ませんね、コメントありがとうございます‥‥昭和は遠くなりにけり
うーん、手元の cygwin gcc 10.2.0 では while (1) も while (42) もウォーニングは出ませんね、コメントありがとうございます‥‥昭和は遠くなりにけり
286デフォルトの名無しさん (ワッチョイ d1da-+f9r)
2021/08/08(日) 22:32:52.55ID:19kZVfwv0 >>282
アメリカ人だと ゥワーニン って言ってた
インド人(会話は英語)は ウォニング ってグまではっきり言ってた
こっちから言うときは片仮名で「ワーニング」って言っても余裕で通じた
まあエンジニアどうしで通じりゃ適当でいいんだよ
アメリカ人だと ゥワーニン って言ってた
インド人(会話は英語)は ウォニング ってグまではっきり言ってた
こっちから言うときは片仮名で「ワーニング」って言っても余裕で通じた
まあエンジニアどうしで通じりゃ適当でいいんだよ
287はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-yyuh)
2021/08/09(月) 00:46:08.57ID:OWI9S7jW0 >>282
グーグル翻訳に発音させてみたらどちらともつかぬ半端な発音に聞こえる。
グーグル翻訳に発音させてみたらどちらともつかぬ半端な発音に聞こえる。
288デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/09(月) 07:13:46.14ID:eF2Q2UUf0289デフォルトの名無しさん (スップ Sd73-E7wc)
2021/08/09(月) 11:00:51.25ID:5Oj13b1Xd for(;;) はforeverと読む(俺定義)
290デフォルトの名無しさん (ワッチョイ ebd2-NW/4)
2021/08/09(月) 11:51:07.90ID:Lb8CQXvk0 >282
「ア」と「オ」の発音の違いは曖昧。
…というのをトリビアの泉でやってた。
「ア」と「オ」の発音の違いは曖昧。
…というのをトリビアの泉でやってた。
291デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/09(月) 12:03:01.28ID:eF2Q2UUf0 アに近い←米語
オに近い←英語
オに近い←英語
292デフォルトの名無しさん (ワッチョイ 1302-yyuh)
2021/08/09(月) 12:40:56.75ID:GX8oEfXz0 ウォーニング
と発音した方が通じやすいけどな
と発音した方が通じやすいけどな
293デフォルトの名無しさん (ワッチョイ 532c-Lto6)
2021/08/09(月) 12:42:49.10ID:78aLRiJY0 while( 条件式 )
そもそも条件式には、実質的なブール値・真偽値しか使えない。
MISRA-C 違反
そもそも条件式には、実質的なブール値・真偽値しか使えない。
MISRA-C 違反
294デフォルトの名無しさん (ワッチョイ 3163-Z6Ah)
2021/08/09(月) 13:25:39.38ID:c/YgMY770 これ最初に間違えた奴誰?
295デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/09(月) 13:41:09.70ID:eF2Q2UUf0 whileの括弧の中は制御式な
== と != は等価式
不等号は関係式
条件式はいわゆる三項演算子だぞ
== と != は等価式
不等号は関係式
条件式はいわゆる三項演算子だぞ
296デフォルトの名無しさん (ワッチョイ d1da-+f9r)
2021/08/09(月) 13:54:46.12ID:Hd/9N5qL0 参考までに
297デフォルトの名無しさん (ワッチョイ 3163-Z6Ah)
2021/08/09(月) 14:03:11.33ID:c/YgMY770 >>295
等価式と関係式の意味的違いがよく分からん
等価式と関係式の意味的違いがよく分からん
298はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-yyuh)
2021/08/09(月) 14:30:20.02ID:OWI9S7jW0299デフォルトの名無しさん (ワッチョイ 9910-qxAg)
2021/08/09(月) 15:32:43.41ID:WWM043YB0 結局は成り立つか成り立たないかってことでしょ
その2つを厳密に分ける意味はなに?
その2つを厳密に分ける意味はなに?
300デフォルトの名無しさん (ワッチョイ 61b0-+f9r)
2021/08/09(月) 15:43:28.94ID:qYrd5+ip0 算術式 関係式 論理式 という分類は聞いたことがあるが>>295みたいなのは初耳だなぁ。
301はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-yyuh)
2021/08/09(月) 16:04:49.05ID:OWI9S7jW0302デフォルトの名無しさん (テテンテンテン MM8b-bikt)
2021/08/09(月) 16:10:06.60ID:hymvfobjM 等価式 ⊂ 関係式
でしょ
でしょ
303デフォルトの名無しさん (ワッチョイ 33bd-kkkT)
2021/08/09(月) 16:23:09.32ID:JaaB5Egp0304はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-yyuh)
2021/08/09(月) 16:36:37.59ID:OWI9S7jW0 >>302
構文規則としては
等価式:
関係式
等価式 == 関係式
等価式 != 関係式
と書いてあるからその考え方でも間違いとは言い切れないけど
それを言うなら
シフト式:
加減式
シフト式 << 加減式
シフト式 >> 加減式
だからといって 加減式 ⊂ シフト式 と言ってしまうと (日常的な感覚としては) ちょっと違和感があるし、
このへんの言葉はシンタクスを定義する上での便宜的な概念 (BNF で書くとそうなるってだけ)
だから、演算子の機能上の意味付けとは分けて考える必要がある。
構文規則としては
等価式:
関係式
等価式 == 関係式
等価式 != 関係式
と書いてあるからその考え方でも間違いとは言い切れないけど
それを言うなら
シフト式:
加減式
シフト式 << 加減式
シフト式 >> 加減式
だからといって 加減式 ⊂ シフト式 と言ってしまうと (日常的な感覚としては) ちょっと違和感があるし、
このへんの言葉はシンタクスを定義する上での便宜的な概念 (BNF で書くとそうなるってだけ)
だから、演算子の機能上の意味付けとは分けて考える必要がある。
305デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/09(月) 16:38:11.39ID:S8n0VVLE0306デフォルトの名無しさん (ワッチョイ 61b0-+f9r)
2021/08/09(月) 16:39:33.74ID:qYrd5+ip0307デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/09(月) 16:41:53.02ID:S8n0VVLE0308はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-yyuh)
2021/08/09(月) 16:51:05.91ID:OWI9S7jW0309デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/09(月) 17:02:47.61ID:eF2Q2UUf0 6.8.5.1 while 文 制御式の評価は,ループ本体の各実行の前に行う。
6.8.5.2 do 文 制御式の評価は,ループ本体の各実行の後に行う。
6.8.5.3 for 文 文
for ( 節1 ; 式2 ; 式3 ) 文
の動作は次のとおりとする。式2 は制御式とし,ループ本体の各実行の前に評価する。
6.8.5.2 do 文 制御式の評価は,ループ本体の各実行の後に行う。
6.8.5.3 for 文 文
for ( 節1 ; 式2 ; 式3 ) 文
の動作は次のとおりとする。式2 は制御式とし,ループ本体の各実行の前に評価する。
310デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/09(月) 17:06:46.07ID:eF2Q2UUf0 条件式なんてオレ用語はwhileの括弧の中で比較だけが許されると思いたがるバイアスの顕れだろ
いいか、もっぺん言うぞ バイアス
いいか、もっぺん言うぞ バイアス
311デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/09(月) 17:12:09.00ID:S8n0VVLE0313293 (ワッチョイ 532c-Lto6)
2021/08/09(月) 18:00:51.96ID:78aLRiJY0 if ( 条件式 )
Ruby では、条件式にオブジェクトを書いても、
偽になるのは、nil, false の2つだけだが、
他の動的言語では、各型に偽がある。
空文字列・空配列・空辞書、0, 0.0 など
あまりに、バグの組み合わせが多いために、
実質的なブール値・真偽値しか使えないのが普通
それで、TypeScript みたいに型チェックが流行るようになった。
C も同じで、型チェック必須言語
これらが無いと、バグが多すぎて、製品レベルの品質基準にならない
Ruby では、条件式にオブジェクトを書いても、
偽になるのは、nil, false の2つだけだが、
他の動的言語では、各型に偽がある。
空文字列・空配列・空辞書、0, 0.0 など
あまりに、バグの組み合わせが多いために、
実質的なブール値・真偽値しか使えないのが普通
それで、TypeScript みたいに型チェックが流行るようになった。
C も同じで、型チェック必須言語
これらが無いと、バグが多すぎて、製品レベルの品質基準にならない
314デフォルトの名無しさん (ワッチョイ 9910-qxAg)
2021/08/09(月) 18:05:14.63ID:WWM043YB0 ループを制御するための式だから制御式というんだろうけど、
制御式のなかで
例えば
while(i++==10)
なんて出来たとしてもそんな書き方しないだろうし
制御式のなかで
例えば
while(i++==10)
なんて出来たとしてもそんな書き方しないだろうし
315ハノン ◆QZaw55cn4c
2021/08/09(月) 18:20:08.88316デフォルトの名無しさん (ワッチョイ 1301-bikt)
2021/08/09(月) 18:26:16.77ID:S8n0VVLE0318デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/09(月) 20:27:51.00ID:eF2Q2UUf0319デフォルトの名無しさん (テテンテンテン MM8b-bikt)
2021/08/09(月) 20:56:50.79ID:CmP62z0OM while(i++!=10)
なら、あるかも
なら、あるかも
320はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-yyuh)
2021/08/10(火) 01:18:25.50ID:7+xjomdk0 プログラミング言語C 第2版 (いわゆる K&R) に載っているくらいなので C では珍しくないのは確か。
日本語版の 129 ページあたりに「こうした慣用法はマスターすべきである」と書いてある。
日本語版の 129 ページあたりに「こうした慣用法はマスターすべきである」と書いてある。
321デフォルトの名無しさん (ワッチョイ 6bda-Z6Ah)
2021/08/10(火) 01:22:24.66ID:wjw1gmPx0 K&Rは古典なので現代において参考にするようなものではない
322はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-yyuh)
2021/08/10(火) 02:16:48.33ID:7+xjomdk0 あらたに書くときに使うべきではないと思うけど古いコードがあるのも現実なんやで。
323293 (ワッチョイ 532c-Lto6)
2021/08/10(火) 11:49:11.43ID:9wi/dlAk0 ++, -- は、バグが多いから、Ruby から排除された
Go でも、単独文でしか書けない。
組み合わせることができない
これらを組み合わせると、MISRA-C 違反。
MISRA-C に則っていないものは、製品レベルとして使えない
Andrew Koenig のC Traps and Pitfalls「Cプログラミングの落とし穴」、
組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、2006、MISRA‐C研究会
こういう本を読んでいないだろ
Go でも、単独文でしか書けない。
組み合わせることができない
これらを組み合わせると、MISRA-C 違反。
MISRA-C に則っていないものは、製品レベルとして使えない
Andrew Koenig のC Traps and Pitfalls「Cプログラミングの落とし穴」、
組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、2006、MISRA‐C研究会
こういう本を読んでいないだろ
324デフォルトの名無しさん (ラクッペペ MM8b-dR52)
2021/08/10(火) 12:28:40.74ID:MOslRoWuM 書いてはいけないが、読める必要はある。
目を背けるな
目を背けるな
325デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/10(火) 12:38:24.67ID:PfQcBK0N0 「おやつは300円以内」のようなくだらねえことが延々書き連ねてある
ツッコミどころ満載なやつ馬鹿馬鹿しくて相手してらんね
ツッコミどころ満載なやつ馬鹿馬鹿しくて相手してらんね
326デフォルトの名無しさん (アウアウウー Sa55-YY0C)
2021/08/10(火) 15:45:47.63ID:21u4vH9ca >>324
いろんなスレでNG推奨と言われてることから目を背けている奴に何を言っても無駄だろう
いろんなスレでNG推奨と言われてることから目を背けている奴に何を言っても無駄だろう
327デフォルトの名無しさん (ワッチョイ 9910-qxAg)
2021/08/10(火) 15:51:29.27ID:Ix5h21qC0328デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/10(火) 15:52:38.52ID:PfQcBK0N0 プログラミング以外のところでも「俺様が知らない言葉を使うな」という痛いやつがいるのと同じ
329デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/10(火) 15:54:17.27ID:PfQcBK0N0 >>327
IOCCCのルールを守っていないからだろ
IOCCCのルールを守っていないからだろ
330ハノン ◆QZaw55cn4c
2021/08/10(火) 18:42:13.96 テステス
331ハノン ◆QZaw55cn4c
2021/08/10(火) 18:45:30.07 >>327
何をやっているのか努力しないと読めないのが辛いです、そういう曲芸を仕事でやられたらボロクソなのも仕方がないとおもいますね
何をやっているのか努力しないと読めないのが辛いです、そういう曲芸を仕事でやられたらボロクソなのも仕方がないとおもいますね
332蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd33-HBlf)
2021/08/10(火) 18:58:54.35ID:98gOzHW9d333デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/11(水) 08:41:39.44ID:19rzwYjH0 doubleでfor回したりはするね
334デフォルトの名無しさん (ワッチョイ ebd2-NW/4)
2021/08/11(水) 10:26:21.33ID:fvD2fRTR0 >327
単純にソースの目的がわからない。
バイトオーダ(エンディアン)の確認?
{{ ... }/*コメ*/}というコーディングもなんかキモイ。
単純にソースの目的がわからない。
バイトオーダ(エンディアン)の確認?
{{ ... }/*コメ*/}というコーディングもなんかキモイ。
335デフォルトの名無しさん (ワッチョイ 9910-qxAg)
2021/08/11(水) 13:02:40.93ID:c2ypq8+M0 レスありがとうございました。
>>327は、
https://medaka.5ch.net/test/read.cgi/prog/1625843192/
というスレで、初心者の1が質問を投げるとこから始まります。
入力された文字を逆順で表示したいという内容です。
それで1が貼ったコードを巡り、いつしか省力化の流れになって、
そして投下されたのが>>327です。
>>327は、
https://medaka.5ch.net/test/read.cgi/prog/1625843192/
というスレで、初心者の1が質問を投げるとこから始まります。
入力された文字を逆順で表示したいという内容です。
それで1が貼ったコードを巡り、いつしか省力化の流れになって、
そして投下されたのが>>327です。
336デフォルトの名無しさん (ワッチョイ 33bd-kkkT)
2021/08/11(水) 13:57:42.27ID:EWMgwFeS0 なるほどなあ
とりあえず文字列としてしか使われない領域に意味ありげにint配列使ってるのと、バイトオーダーに依存している、の2点が最大のクソポイントか
とりあえず文字列としてしか使われない領域に意味ありげにint配列使ってるのと、バイトオーダーに依存している、の2点が最大のクソポイントか
337デフォルトの名無しさん (ワッチョイ ebd2-dtsT)
2021/08/11(水) 16:04:17.52ID:fvD2fRTR0 >334
>{{ ... }/*コメ*/}というコーディングもなんかキモイ。
Chromeのせいか?
なんか変な文字化け(変換?)起こしてるっぽい。
>char len,i;
が char len、i; ってなるとか。
FireFoxで開いたら正常表示された。
>335
>入力された文字を逆順で表示したいという内容です。
把握
>327
>Stdin
>abcdefg
7文字ってことは
>printf("%c%c%c%c",...
の最初のループの1文字目は "\0"が出力されてるのかな?それでいいのか?
int t[25];が0クリアされてるならいいけど、
ゴミが残ってると正しく表示されないんじゃないか?
>{{ ... }/*コメ*/}というコーディングもなんかキモイ。
Chromeのせいか?
なんか変な文字化け(変換?)起こしてるっぽい。
>char len,i;
が char len、i; ってなるとか。
FireFoxで開いたら正常表示された。
>335
>入力された文字を逆順で表示したいという内容です。
把握
>327
>Stdin
>abcdefg
7文字ってことは
>printf("%c%c%c%c",...
の最初のループの1文字目は "\0"が出力されてるのかな?それでいいのか?
int t[25];が0クリアされてるならいいけど、
ゴミが残ってると正しく表示されないんじゃないか?
338デフォルトの名無しさん (ワッチョイ d101-mBWR)
2021/08/11(水) 16:25:45.76ID:91mms/zJ0 バイトオーダー決め打ちなのと
sizeof(int) == sizeof(char) * 4 前提にしつつ 4文字づつパックで処理してる工夫なんだろうけど
わざわざ難しくしてってのおふざけ暴走が生んだ結果だな
sizeof(int) == sizeof(char) * 4 前提にしつつ 4文字づつパックで処理してる工夫なんだろうけど
わざわざ難しくしてってのおふざけ暴走が生んだ結果だな
339デフォルトの名無しさん (ワッチョイ 13ad-E1rX)
2021/08/12(木) 04:13:22.60ID:zN4hKecF0340デフォルトの名無しさん (ワッチョイ 13ad-E1rX)
2021/08/12(木) 04:15:08.28ID:zN4hKecF0 あ、逆順に出すの?それにしても複雑怪奇だなあ。どうしてそうなった?
341デフォルトの名無しさん (ワッチョイ 13ad-Z6Ah)
2021/08/12(木) 06:20:29.21ID:zN4hKecF0 >>335
そっちのスレにまともなやつのURLを貼っといた。
そっちのスレにまともなやつのURLを貼っといた。
342デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/12(木) 07:41:49.84ID:+O9ZyhRw0343デフォルトの名無しさん (ワッチョイ 532c-Lto6)
2021/08/12(木) 15:37:03.65ID:s+UN3BdM0 i>-1 は、i >= 0 の方が、分かりやすい
344デフォルトの名無しさん (ワッチョイ 59bb-yyuh)
2021/08/12(木) 16:26:35.93ID:qgQ8hJHG0 char型のiをわざわざintにキャストしてるのは何か理由があるのか
最初からintでiを定義しておけばいいのに
最初からintでiを定義しておけばいいのに
345デフォルトの名無しさん (ワッチョイ 532c-Lto6)
2021/08/12(木) 17:14:43.67ID:s+UN3BdM0 8ビットを、32ビットに変換するのは汎整数拡張
実際のCPU でも、8ビットでは処理できないので、
32ビットに変換してから処理して、8ビットに戻す
つまり汎整数拡張は、ほぼ無害
実際のCPU でも、8ビットでは処理できないので、
32ビットに変換してから処理して、8ビットに戻す
つまり汎整数拡張は、ほぼ無害
346デフォルトの名無しさん (ワッチョイ 33bd-kkkT)
2021/08/12(木) 17:48:37.78ID:iQcpjp5R0 INT07-C. 数値には符号の有無を明示した char 型のみを使用する
https://www.jpcert.or.jp/sc-rules/c-int07-c.html
https://www.jpcert.or.jp/sc-rules/c-int07-c.html
347デフォルトの名無しさん (ワッチョイ 49a6-NW/4)
2021/08/12(木) 19:28:25.65ID:PwkehoUJ0 処理系によってcharがunsignedだったりするから
ライブラリのポーティングでえらい目にあったりするのよね
ライブラリのポーティングでえらい目にあったりするのよね
348デフォルトの名無しさん (ワッチョイ 532c-Lto6)
2021/08/12(木) 20:05:44.88ID:s+UN3BdM0 MISRA-C でも、単なるchar 型は使用禁止。
-128〜127 か、0〜255 か、どちらか分からないから
signed char か、unsigned char を、明示して使わなければならない。
または、int8 か、uint8
-128〜127 か、0〜255 か、どちらか分からないから
signed char か、unsigned char を、明示して使わなければならない。
または、int8 か、uint8
349デフォルトの名無しさん (ワッチョイ b145-mBWR)
2021/08/12(木) 20:13:25.34ID:+O9ZyhRw0 信者以外には全く何の関係もないことだな
350デフォルトの名無しさん (ワッチョイ 9946-ePa0)
2021/08/12(木) 23:08:22.05ID:hI2dv5iP0 信仰しなさい。
351デフォルトの名無しさん (ワッチョイ 59bb-yyuh)
2021/08/12(木) 23:18:10.25ID:qgQ8hJHG0 char「我をたたえよ」
「チャー!」「チャー!」
「チャー!」「チャー!」
352デフォルトの名無しさん (ワッチョイ 9910-KYEC)
2021/08/12(木) 23:20:40.68ID:iqzxJUR40 やっぱりプログラム板は勉強になります
353デフォルトの名無しさん (ワッチョイ 3163-Z6Ah)
2021/08/12(木) 23:22:37.60ID:ZBXe4sG30 あれは「チャー」って叫ぶのか?「キャー」じゃだめなの?
354ハノン ◆QZaw55cn4c
2021/08/13(金) 01:00:42.90 「シャー」が正解です…
355デフォルトの名無しさん (ワッチョイ 42ad-Iu++)
2021/08/14(土) 01:39:23.05ID:Znm3fqvr0 きゃら
356デフォルトの名無しさん (ワッチョイ edba-NTPF)
2021/08/14(土) 16:41:42.16ID:r/g27g8Q0 ヒャル
357はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 463e-cJil)
2021/08/14(土) 16:51:07.63ID:xM4RG8+90 語源というか原形は character でその綴りを縮めたのだと考えれば、
(そしてあえて発音をカタカナに当てはめようとするのであれば)
キャー、もしくはキャラが順当なんじゃないかな。
(そしてあえて発音をカタカナに当てはめようとするのであれば)
キャー、もしくはキャラが順当なんじゃないかな。
358ハノン ◆QZaw55cn4c
2021/08/14(土) 19:03:43.32 欧米人なら letter を使いそうなものを、それを character(=象形文字系統)としたその心が知りたい‥‥どうでもいい話ですみません
359デフォルトの名無しさん (ワッチョイ e269-cJil)
2021/08/14(土) 20:55:06.51ID:kmQRiZG00 characterはcharと略せるけどletterは略せないとか?
一文字でも縮めることにやっきになってたみたいだし
charは「きゃら」だけど、enumを「いなむ」って言っちゃう
enumerateは「あにゅむれい」なのに
一文字でも縮めることにやっきになってたみたいだし
charは「きゃら」だけど、enumを「いなむ」って言っちゃう
enumerateは「あにゅむれい」なのに
360デフォルトの名無しさん (テテンテンテン MM26-VYeI)
2021/08/14(土) 21:43:24.21ID:g6ShE1m2M アニメで良いよ
361デフォルトの名無しさん (ワッチョイ 42ad-Iu++)
2021/08/14(土) 22:34:56.70ID:Znm3fqvr0 性格,性質,気質,特質,特性,特色,人格,品性,高潔さ,正直さ
362デフォルトの名無しさん (ワッチョイ 8101-pBez)
2021/08/14(土) 22:38:05.04ID:io8zq2Gb0 むこうの語感的にletterだとアルファベットだけで数字とか記号を含めないかもしれない
363デフォルトの名無しさん (ワッチョイ 4d85-/ojN)
2021/08/14(土) 23:51:39.71ID:lbIZmRLc0 >>358
letterだとletになりそうだから嫌ったんだろ
letterだとletになりそうだから嫌ったんだろ
364はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 463e-cJil)
2021/08/15(日) 00:01:55.60ID:oR5NZ4bd0 いっそのこと単に byte とでもしておけばよかったのかもしれない。
365デフォルトの名無しさん (ワッチョイ 4201-VYeI)
2021/08/15(日) 00:05:31.44ID:U+FsjVqC0366デフォルトの名無しさん (ワッチョイ ed7c-BgPC)
2021/08/15(日) 00:25:17.76ID:ftNChFXo0367デフォルトの名無しさん (アウアウウー Saa5-PlbL)
2021/08/15(日) 01:04:08.98ID:lrNh9u+Sa 歴史的に char と byte はどっちが先なのかな
368デフォルトの名無しさん (ワッチョイ aebb-eplb)
2021/08/15(日) 04:44:19.93ID:Jy6PA5Os0 英語圏でもチャーだけどな
ググればすぐわかる
ググればすぐわかる
369デフォルトの名無しさん (アウアウウー Saa5-ZsKU)
2021/08/15(日) 06:15:17.61ID:FL52AdfHa370デフォルトの名無しさん (アウアウウー Saa5-ZsKU)
2021/08/15(日) 06:18:12.36ID:0d93Uofwa char siu
チャーシュー
チャーシュー
371デフォルトの名無しさん (アウアウウー Saa5-xe7r)
2021/08/15(日) 16:55:39.88ID:76TevYyAa372はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 463e-cJil)
2021/08/15(日) 17:59:18.88ID:oR5NZ4bd0373デフォルトの名無しさん (ワッチョイ aebb-eplb)
2021/08/15(日) 19:39:25.14ID:Jy6PA5Os0 >>371
英語設定でググってみるといいよ
チャー派とカー派がいてチャー派が優勢のように見える。
reddit見るとお前ガンダム見たことないんか?シャーーー!とかlisperが混乱するだろがってコメントがあってワロ
英語設定でググってみるといいよ
チャー派とカー派がいてチャー派が優勢のように見える。
reddit見るとお前ガンダム見たことないんか?シャーーー!とかlisperが混乱するだろがってコメントがあってワロ
374デフォルトの名無しさん (ワッチョイ 6eda-NTPF)
2021/08/15(日) 19:58:39.32ID:l+/QmNzh0 care派も結構いるっぽいが
375デフォルトの名無しさん (アウアウクー MMb1-9nCG)
2021/08/15(日) 21:05:49.36ID:g44nIVaSM プログラムを書くのに読み方なんて意味が通じればどっちでもいいやん
376デフォルトの名無しさん (ワッチョイ 4d36-pBez)
2021/08/16(月) 00:02:13.11ID:r0BCUeQy0 初心者です、stdio.hの保存場所が知りたいです
Visual Studio Communuty 2018を使っており、標準ライブラリはインクルードディレクトリに指定された場所にあるということでした
プロパティでインクルードディレクトリを確認したところ、以下のようになっていましたが意味が分かりません
$(VC_IncludePath);$(WindowsSDK_IncludePath);
変数になっているようですが、どこかで確認できるのでしょうか?
Visual Studio Communuty 2018を使っており、標準ライブラリはインクルードディレクトリに指定された場所にあるということでした
プロパティでインクルードディレクトリを確認したところ、以下のようになっていましたが意味が分かりません
$(VC_IncludePath);$(WindowsSDK_IncludePath);
変数になっているようですが、どこかで確認できるのでしょうか?
377デフォルトの名無しさん (アウアウウー Saa5-PlbL)
2021/08/16(月) 00:13:21.48ID:x3HJsFala 間違っていたらごめんなさい
その $() で囲まれた文字列をコマンドプロンプトから
echo %文字列%
として表示される文字列はどうでしょう
その $() で囲まれた文字列をコマンドプロンプトから
echo %文字列%
として表示される文字列はどうでしょう
378デフォルトの名無しさん (ワッチョイ 8101-pBez)
2021/08/16(月) 00:14:50.67ID:wg/zbZxl0 その値のところをクリックして<編集...>を選べば評価された値が見えると思う
その画面の右下の「マクロ>>」ってボタンを押せば使われてる変数の値も見える
上の構成がDebugかReleaseかで値が違う変数もあるけどIncludePathはたぶん同じ
2019で確認したから微妙に違うかもしれない
その画面の右下の「マクロ>>」ってボタンを押せば使われてる変数の値も見える
上の構成がDebugかReleaseかで値が違う変数もあるけどIncludePathはたぶん同じ
2019で確認したから微妙に違うかもしれない
379デフォルトの名無しさん (アウアウウー Saa5-PlbL)
2021/08/16(月) 00:19:13.32ID:x3HJsFala echo で確認する方法は、その環境下でなければ
なので、別にコマンドプロンプトを起動してではダメですね
なので、別にコマンドプロンプトを起動してではダメですね
380デフォルトの名無しさん (ワッチョイ 4d36-pBez)
2021/08/16(月) 00:21:12.34ID:r0BCUeQy0381デフォルトの名無しさん (アウアウウー Saa5-PlbL)
2021/08/16(月) 00:23:50.80ID:x3HJsFala そ
382デフォルトの名無しさん (ワッチョイ 3163-NTPF)
2021/08/16(月) 00:29:55.90ID:sQwoI9K70 VSインストールすると環境変数セットするバッチファイルが入って来たと思うが、今は違うのか?
古い知識で済まん
古い知識で済まん
383デフォルトの名無しさん (ワッチョイ 41e6-ipN5)
2021/08/16(月) 04:32:44.78ID:pMWrjH7B0 てすてす
384デフォルトの名無しさん (ワッチョイ 42ad-Iu++)
2021/08/16(月) 10:19:54.49ID:sZNsU9Vp0 すてすて
385デフォルトの名無しさん (エムゾネ FF62-/ojN)
2021/08/16(月) 14:57:58.88ID:Gh+OcB3lF 実は VisualStudio は初心者向けじゃない
386デフォルトの名無しさん (ワッチョイ e95f-/m/d)
2021/08/16(月) 20:10:17.02ID:BeGCPKkC0 visual studioが覇権取ってからプログラミングが嫌になりました・・・
プログラミングが嫌というかvisual studioの設定とか使い方とかそういうのを覚えるのが・・・
LSI C+メモ帳で良かったのに・・・
プログラミングが嫌というかvisual studioの設定とか使い方とかそういうのを覚えるのが・・・
LSI C+メモ帳で良かったのに・・・
387デフォルトの名無しさん (ワッチョイ 3163-NTPF)
2021/08/16(月) 20:17:22.96ID:sQwoI9K70 LSI C(試食版)は16ビットコンパイラでしかもSmodelしか作れないから
64ビットWindows環境で動かすのは無理じゃない?
64ビットWindows環境で動かすのは無理じゃない?
388デフォルトの名無しさん (ワッチョイ d2bd-IYZN)
2021/08/16(月) 20:37:48.81ID:4H+7uDzk0 ……Visual Studio Community 2018なんてあったっけ?
389デフォルトの名無しさん (ワッチョイ 2247-ipN5)
2021/08/16(月) 20:41:26.98ID:1MUZwyiI0 vs2019 と cuda の相性が悪かったが治ったのなら起こしてくだしあ
390デフォルトの名無しさん (ワッチョイ 4d36-pBez)
2021/08/16(月) 22:55:54.30ID:r0BCUeQy0 素朴な疑問でprintfでdouble型を表示させようとしたとき%lfでなく%fにする理由なんですが、
floatを引数とするとdouble型にキャストされるので、printfではfloat型もdouble型も同じ%fと記述すればいいことになっている
と言う理解で合ってますか?
floatを引数とするとdouble型にキャストされるので、printfではfloat型もdouble型も同じ%fと記述すればいいことになっている
と言う理解で合ってますか?
391デフォルトの名無しさん (ワッチョイ 49b0-jBWP)
2021/08/16(月) 23:08:54.14ID:GAZDNQn70 相性悪いって何かあったっけ?
392はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e23e-cJil)
2021/08/17(火) 03:49:27.19ID:yPn/BtRt0 >>390
あってる。
printf ではというか可変長引数では既定の実引数拡張のルールで float は double に拡張されるから区別しようがない。
よくわかってないやつが %lf って書いちゃうから C99 から仕様に入れることになったみたいな話だったはず。
(逆に言えばそれまでは無かった。)
でも引数に double を与えるつもりなら意味的にそれがわかるにこしたことはないので、
人間が読み書きする都合を考えるなら積極的に区別したほうがいいと思う。
あってる。
printf ではというか可変長引数では既定の実引数拡張のルールで float は double に拡張されるから区別しようがない。
よくわかってないやつが %lf って書いちゃうから C99 から仕様に入れることになったみたいな話だったはず。
(逆に言えばそれまでは無かった。)
でも引数に double を与えるつもりなら意味的にそれがわかるにこしたことはないので、
人間が読み書きする都合を考えるなら積極的に区別したほうがいいと思う。
393デフォルトの名無しさん (ワッチョイ 7145-/m/d)
2021/08/17(火) 05:49:50.95ID:bbuY4XG00 >>387
64で16bitモード使えないのは単なる嫌がらせ
技術的に本当はできるのに拒否してる
必要ならVM使うといい
過去バージョンは↓で入手できる
https://winworldpc.com/library/operating-systems
64で16bitモード使えないのは単なる嫌がらせ
技術的に本当はできるのに拒否してる
必要ならVM使うといい
過去バージョンは↓で入手できる
https://winworldpc.com/library/operating-systems
394ハノン ◆QZaw55cn4c
2021/08/17(火) 10:00:30.15395デフォルトの名無しさん (ワッチョイ 7145-/m/d)
2021/08/17(火) 10:22:58.26ID:bbuY4XG00396デフォルトの名無しさん (ガラプー KKd6-DrmD)
2021/08/17(火) 11:04:10.80ID:1ngtDSTVK397デフォルトの名無しさん (ワッチョイ 7145-/m/d)
2021/08/17(火) 11:14:12.12ID:bbuY4XG00 年代的に元々floatが標準のつもりだったんだろうな
398デフォルトの名無しさん (テテンテンテン MM26-VYeI)
2021/08/17(火) 11:56:57.33ID:4Ah+oX6mM 当たり前は時代と共に変わる
399デフォルトの名無しさん (ワッチョイ 42ad-Iu++)
2021/08/17(火) 16:52:28.09ID:5M+zf85m0 >>396
倍精度ってのを表したかったんだろうな。
倍精度ってのを表したかったんだろうな。
400デフォルトの名無しさん (ワッチョイ 49b0-jBWP)
2021/08/17(火) 21:48:20.20ID:G/OIjFk20401デフォルトの名無しさん (アウアウウー Saa5-PlbL)
2021/08/17(火) 22:05:20.16ID:SEkFORwja 計算自体は倍精度でやっていて、floatの場合結果を丸めてるの?
402デフォルトの名無しさん (ワッチョイ 4201-VYeI)
2021/08/17(火) 22:24:11.58ID:oC68rP2o0 そもそも
> 可変長引数では既定の実引数拡張のルールで float は double に拡張される
って言うのがよくわからん
普通にfloatはfloatのまま渡しゃいいじゃんと思うんだけどなんか理由あったのかな?
> 可変長引数では既定の実引数拡張のルールで float は double に拡張される
って言うのがよくわからん
普通にfloatはfloatのまま渡しゃいいじゃんと思うんだけどなんか理由あったのかな?
403はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e23e-cJil)
2021/08/17(火) 22:44:19.25ID:yPn/BtRt0 引数の受け渡しにスタックを使う場合でもレジスタを使う場合でも
ワードサイズより小さい型はどうせそのワードサイズに調整して積むことになるので切り詰める意味がない。
(ワードにたくさん情報を詰め込むことも出来るといえば出来るけどかえって非効率になる。)
だから int より小さい型を int に調整するというのはハードウェア的
な都合が反映されていると思う。
昔は浮動書数点演算ユニット (FPU) は CPU の外に持っているのが普通だったんだが
その時代でも FPU のレジスタは大きめなサイズを持っていた。
double が収まるレジスタがあるなら double で受け渡すほうが都合が良かったんだろう。
※ この場合の「ワード」は2バイトという意味ではなく各アーキテクチャにおける基本サイズという意味なので注意
ワードサイズより小さい型はどうせそのワードサイズに調整して積むことになるので切り詰める意味がない。
(ワードにたくさん情報を詰め込むことも出来るといえば出来るけどかえって非効率になる。)
だから int より小さい型を int に調整するというのはハードウェア的
な都合が反映されていると思う。
昔は浮動書数点演算ユニット (FPU) は CPU の外に持っているのが普通だったんだが
その時代でも FPU のレジスタは大きめなサイズを持っていた。
double が収まるレジスタがあるなら double で受け渡すほうが都合が良かったんだろう。
※ この場合の「ワード」は2バイトという意味ではなく各アーキテクチャにおける基本サイズという意味なので注意
404デフォルトの名無しさん (ワッチョイ 7145-/m/d)
2021/08/18(水) 09:07:55.01ID:a3KKdrJy0 ん、8087由来のサイズになってるのはlong doubleだろ
405デフォルトの名無しさん (ワッチョイ 46e7-/m/d)
2021/08/18(水) 09:53:36.78ID:AHN/ch/v0 long double って表現がもう頭悪いよね・・・
406デフォルトの名無しさん (ワッチョイ 7145-/m/d)
2021/08/18(水) 14:10:11.42ID:a3KKdrJy0 %lfはどう見てもlong floatだね
%dはint用にしちゃってるから仕方なかったのかな
%dはint用にしちゃってるから仕方なかったのかな
407デフォルトの名無しさん (ワッチョイ 4946-SBAK)
2021/08/18(水) 19:02:54.03ID:9oCYCOnk0 >>405
ダブロン って表現だとゲンが悪すぎるだろ・・
ダブロン って表現だとゲンが悪すぎるだろ・・
408ハノン ◆QZaw55cn4c
2021/08/18(水) 19:55:50.38409デフォルトの名無しさん (ワッチョイ 3163-NTPF)
2021/08/18(水) 20:09:35.86ID:Wv6HiLZZ0 符号部1ビット+指数部15ビット+仮数部64ビット
410デフォルトの名無しさん (ワッチョイ ff02-VfHF)
2021/08/22(日) 01:54:25.30ID:0Cz6ueFz0 Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
411デフォルトの名無しさん (ワッチョイ 9fda-I8u9)
2021/08/22(日) 11:26:19.76ID:D+A51yiS0 pythonを可読性高いという時点で眉唾だな・・・
412デフォルトの名無しさん (ワッチョイ ffe7-Awm0)
2021/08/23(月) 11:13:34.28ID:4N/X7GO90 char *b = "0123456";
printf("%x\n", 3[b]);
// 33
これって、どうしてこういう書き方 3[b] ができるんだっけか
シンタックスシュガーとかじゃなく、明確な理屈があって出来ちゃうんだよね?
printf("%x\n", 3[b]);
// 33
これって、どうしてこういう書き方 3[b] ができるんだっけか
シンタックスシュガーとかじゃなく、明確な理屈があって出来ちゃうんだよね?
413デフォルトの名無しさん (エムゾネ FF9f-tXhk)
2021/08/23(月) 11:39:17.23ID:JYwdk8yBF *(3 + b)
414デフォルトの名無しさん (ワッチョイ 7fad-WNkQ)
2021/08/23(月) 11:42:03.51ID:UaBHP8Yo0415デフォルトの名無しさん (ワッチョイ ffe7-Awm0)
2021/08/23(月) 11:52:16.18ID:4N/X7GO90416デフォルトの名無しさん (ワッチョイ 9fda-FcIJ)
2021/08/23(月) 22:51:00.15ID:qUWlnfUi0 標準でもそのまんまだなぁ
> A postfix expression followed by an expression in square brackets [] is a subscripted designation of an element of an array object.
> The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2))).
> Because of the conversion rules that apply to the binary + operator, if E1 is an array object (equivalently, a pointer to the initial element of an array object) and E2 is an integer, E1[E2] designates the E2-th element of E1 (counting from zero).
> A postfix expression followed by an expression in square brackets [] is a subscripted designation of an element of an array object.
> The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2))).
> Because of the conversion rules that apply to the binary + operator, if E1 is an array object (equivalently, a pointer to the initial element of an array object) and E2 is an integer, E1[E2] designates the E2-th element of E1 (counting from zero).
417デフォルトの名無しさん (ワッチョイ 9f63-FcIJ)
2021/08/23(月) 22:55:19.33ID:OjohHfKH0 余計なお世話になるが
printf("%x\n", 3["0123456"]);
これでもいいんだよな
printf("%x\n", 3["0123456"]);
これでもいいんだよな
419デフォルトの名無しさん (ワッチョイ ffe7-Awm0)
2021/08/24(火) 10:01:54.33ID:tBKv4I6S0 脱線するけど、そもそもCでこの書き方できたのか
printf("%x\n", "0123456"[3]);
なんかできないと思い込んでた。 Cはなんでもできるんだな
printf("%x\n", "0123456"[3]);
なんかできないと思い込んでた。 Cはなんでもできるんだな
420デフォルトの名無しさん (ワッチョイ 9f45-Awm0)
2021/08/24(火) 17:49:40.18ID:DexxKsi10 IOCCCの黎明期ならマウントとれたネタだね
今ドヤるやつはプークスクスされるだけ
今ドヤるやつはプークスクスされるだけ
421デフォルトの名無しさん (ワッチョイ 7f81-WQfa)
2021/08/24(火) 19:44:16.50ID:KCG/N/Sb0 stack領域で確保したポインタをfreeしたらどうなるんですか?
422デフォルトの名無しさん (テテンテンテン MM4f-9KvQ)
2021/08/24(火) 20:03:31.48ID:Y1wLIEKvM >>419
> printf("%x\n", 3["0123456"]);
はともかく
> printf("%x\n", "0123456"[3]);
は実用でもそこそこ使うだろ
4bitの数値を16進数に変換する時に
"0123456789abcdef"[i]
ってやるとかは定番
> printf("%x\n", 3["0123456"]);
はともかく
> printf("%x\n", "0123456"[3]);
は実用でもそこそこ使うだろ
4bitの数値を16進数に変換する時に
"0123456789abcdef"[i]
ってやるとかは定番
423デフォルトの名無しさん (テテンテンテン MM4f-9KvQ)
2021/08/24(火) 20:04:24.13ID:Y1wLIEKvM >>421
鼻から悪魔が出てくる
鼻から悪魔が出てくる
424デフォルトの名無しさん (ワッチョイ 7f81-WQfa)
2021/08/25(水) 01:30:07.26ID:6n+Di1sM0 >>423
どういうことですか?
どういうことですか?
425デフォルトの名無しさん (アウアウウー Sa63-wElo)
2021/08/25(水) 01:52:34.44ID:7J8MKXIfa >>421
酔ってるからかもしれないけど、質問の意味からして分からない
実装によるだろうけど、動的に確保されるオブジェクトはヒープに確保されるだろうし
黙ってれば確保したメモリへのアドレスを保持するポインタはスタックに置かれるし
実装によるけど
酔ってるからかもしれないけど、質問の意味からして分からない
実装によるだろうけど、動的に確保されるオブジェクトはヒープに確保されるだろうし
黙ってれば確保したメモリへのアドレスを保持するポインタはスタックに置かれるし
実装によるけど
426デフォルトの名無しさん (ワッチョイ 7fad-WNkQ)
2021/08/25(水) 02:58:06.66ID:kk6d2P3X0 >>422
定番って言えそうなほど使われているソースを見たことないなあ。
定番って言えそうなほど使われているソースを見たことないなあ。
427デフォルトの名無しさん (ワッチョイ 7fad-WNkQ)
2021/08/25(水) 03:01:55.29ID:kk6d2P3X0 >>421
alloca()でメモり確保した場合のことを言ってるの?だとすればfree()しちゃダメだよ。やってしまった場合にどうなるかは使っているライブラリによるんじゃないかな。そういう呼び出しを想定していないライブラリだと落ちるかも知れない。
alloca()でメモり確保した場合のことを言ってるの?だとすればfree()しちゃダメだよ。やってしまった場合にどうなるかは使っているライブラリによるんじゃないかな。そういう呼び出しを想定していないライブラリだと落ちるかも知れない。
428はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f3e-T33Q)
2021/08/25(水) 03:30:51.31ID:BzERENYF0 >>424
未定義のこと。
C における未定義は何が起きても構わないことを意味する。
あるときネットニュース上でそれを説明するやりとりがあって、
あらゆることが起こりうるという例として鼻から悪魔が出てくる
ことも含まれるというような言い回しが使われた。
https://groups.google.com/g/comp.std.c/c/ycpVKxTZkgw/m/S2hHdTbv4d8J
それが定着して未定義のことを鼻から悪魔というのが通例になっている。
未定義のこと。
C における未定義は何が起きても構わないことを意味する。
あるときネットニュース上でそれを説明するやりとりがあって、
あらゆることが起こりうるという例として鼻から悪魔が出てくる
ことも含まれるというような言い回しが使われた。
https://groups.google.com/g/comp.std.c/c/ycpVKxTZkgw/m/S2hHdTbv4d8J
それが定着して未定義のことを鼻から悪魔というのが通例になっている。
429デフォルトの名無しさん (テテンテンテン MM4f-9KvQ)
2021/08/25(水) 05:56:16.97ID:oIlmdH3GM >>426
ちょっとググればすぐに出てくるぐらいには使われてる
char hex_from_nibble(unsigned char n){
return "0123456789ABCDEF"[n & 0xf];
}
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13162097918
ちょっとググればすぐに出てくるぐらいには使われてる
char hex_from_nibble(unsigned char n){
return "0123456789ABCDEF"[n & 0xf];
}
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13162097918
430デフォルトの名無しさん (エムゾネ FF9f-tXhk)
2021/08/25(水) 09:19:52.23ID:U8ZXR+0VF431デフォルトの名無しさん (ガラプー KK8f-qz4m)
2021/08/25(水) 09:57:31.74ID:U3t+QZRrK >>421
スタック…と言うかmalloc(calloc/realloc)で確保したポインタ以外をfreeすると何がおこるか判らない(鼻から悪魔)。
実際の話だと、大抵の実装ではmallocは確保した領域に管理情報を埋めて返し、freeはその管理情報を見て解放処理をする。この場合、管理情報がデタラメになるのでメモリアクセス違反でプログラムが落ちる事が多い。
スタック…と言うかmalloc(calloc/realloc)で確保したポインタ以外をfreeすると何がおこるか判らない(鼻から悪魔)。
実際の話だと、大抵の実装ではmallocは確保した領域に管理情報を埋めて返し、freeはその管理情報を見て解放処理をする。この場合、管理情報がデタラメになるのでメモリアクセス違反でプログラムが落ちる事が多い。
432デフォルトの名無しさん (ワッチョイ 9f45-Awm0)
2021/08/25(水) 10:00:41.38ID:VHSVWUHA0 freeは何もしないことも許される、なんて言って呼び出しそのものを否定するやついたな昔
433デフォルトの名無しさん (ワッチョイ 9f63-FcIJ)
2021/08/25(水) 11:31:20.70ID:hlr8Pa7o0 ほとんどの場合は、無人の荒野を爆撃するだけだろうが
いつかは住民が住んでいるところを攻撃するぞ
いつかは住民が住んでいるところを攻撃するぞ
434デフォルトの名無しさん (ワッチョイ 7f81-WQfa)
2021/08/25(水) 12:30:15.33ID:6n+Di1sM0 僕はc言語自体初心者だったのですが、stack領域で確保したポインタをfreeするというのは以下のコードを指すつもりで言ってました。
int a;
free(&a);
鼻から悪魔が出るというのは未定義動作になると言うのを言うんですね。また一つ勉強になりました。
int a;
free(&a);
鼻から悪魔が出るというのは未定義動作になると言うのを言うんですね。また一つ勉強になりました。
435デフォルトの名無しさん (ワッチョイ 9f63-FcIJ)
2021/08/25(水) 12:58:42.10ID:hlr8Pa7o0 ポインタでもないし、何をしたいかが分からん
この時空を破壊したいなら、もっと考えてからにして
この時空を破壊したいなら、もっと考えてからにして
436デフォルトの名無しさん (ワッチョイ ffe7-Awm0)
2021/08/25(水) 13:00:03.19ID:wz3i5qam0437デフォルトの名無しさん (ワッチョイ 7f81-WQfa)
2021/08/25(水) 13:41:27.53ID:6n+Di1sM0 >>435
ポインタとアドレス同じ意味で使ってます
ポインタとアドレス同じ意味で使ってます
438デフォルトの名無しさん (オッペケ Sr73-qjSG)
2021/08/25(水) 13:46:43.33ID:f+OmsRJCr >>434
ちなC++触りだすとスコープ{}内で宣言したものはスコープ出たところで
勝手に始末されるちゅー理屈で実装することも増えると思う。
でかい一時配列とかスタックに置きたくもないしいちいちfreeとかdeleteのこと考えたくないから。
変な所でreturnとかしたらfree忘れちゃう。C言語だとその辺は厳格にしないといけない。
あと、ローカル変数のアドレスをあまり気安く使ってると、そのうち関数抜けて廃棄された
アドレスを参照してしまうバグをだしちゃうかも。一度位は通る道かもね。
ちなC++触りだすとスコープ{}内で宣言したものはスコープ出たところで
勝手に始末されるちゅー理屈で実装することも増えると思う。
でかい一時配列とかスタックに置きたくもないしいちいちfreeとかdeleteのこと考えたくないから。
変な所でreturnとかしたらfree忘れちゃう。C言語だとその辺は厳格にしないといけない。
あと、ローカル変数のアドレスをあまり気安く使ってると、そのうち関数抜けて廃棄された
アドレスを参照してしまうバグをだしちゃうかも。一度位は通る道かもね。
439デフォルトの名無しさん (ワッチョイ 1f85-tXhk)
2021/08/25(水) 19:45:37.21ID:s4bO6YKI0 >>433
中國のロケットの落下騒ぎを思い出したわ
中國のロケットの落下騒ぎを思い出したわ
440デフォルトの名無しさん (ワッチョイ 9fb0-nscA)
2021/08/25(水) 22:01:22.70ID:ENQvEefU0441デフォルトの名無しさん (ワッチョイ 9f63-FcIJ)
2021/08/25(水) 22:22:45.99ID:hlr8Pa7o0 >>440
では、何をfreeしたのか、説明して
では、何をfreeしたのか、説明して
442デフォルトの名無しさん (ワッチョイ 7fbd-NTmZ)
2021/08/25(水) 22:46:23.25ID:SkXNk2uR0 ポインタはアドレスを格納する変数
&aはアドレスだが変数ではないのでポインタではない
&aはアドレスだが変数ではないのでポインタではない
443はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f3e-T33Q)
2021/08/25(水) 23:25:02.44ID:/Q8zinJC0 >>442
いいえ。 ポインタ型の値がポインタです。 (See C99 6.2.5)
C の用語ではメモリ (ストレージ) を占めるものがはオブジェクトで、それを型で意味付けしたものを値 (value) と言います。
実体としては同じですがレイヤによって呼び方が変わる場合があり、アドレスとポインタの違いも同様のものと考えられます。
いいえ。 ポインタ型の値がポインタです。 (See C99 6.2.5)
C の用語ではメモリ (ストレージ) を占めるものがはオブジェクトで、それを型で意味付けしたものを値 (value) と言います。
実体としては同じですがレイヤによって呼び方が変わる場合があり、アドレスとポインタの違いも同様のものと考えられます。
444デフォルトの名無しさん (ワッチョイ ffe9-T33Q)
2021/08/25(水) 23:28:23.41ID:F2PvOiSs0 >>442
何年か前にも見た覚えのある言説だな。元は何だろう?
何年か前にも見た覚えのある言説だな。元は何だろう?
445デフォルトの名無しさん (ワッチョイ 1fbb-T33Q)
2021/08/26(木) 01:58:36.79ID:aNUIA15f0 int *p; // ポインタ変数またはポインタ
int a;
&a; // アドレスまたはポインタ
int b = &a; // bはアドレス値の入った整数
int *c = &a; // cはポインタ
こういうこと?
アドレスとポインタは明確に区別されてるの?
int a;
&a; // アドレスまたはポインタ
int b = &a; // bはアドレス値の入った整数
int *c = &a; // cはポインタ
こういうこと?
アドレスとポインタは明確に区別されてるの?
446デフォルトの名無しさん (ワッチョイ 9f63-FcIJ)
2021/08/26(木) 02:10:26.24ID:/WHSCxQr0 int a;
int *b;
b = &a;
&a = b;
int *b;
b = &a;
&a = b;
447デフォルトの名無しさん (ワッチョイ 1fbb-T33Q)
2021/08/26(木) 02:21:59.91ID:aNUIA15f0 >>446
なるほど?
なるほど?
448デフォルトの名無しさん (ワッチョイ 1fbb-T33Q)
2021/08/26(木) 02:37:50.30ID:aNUIA15f0 >6.5.3.2 アドレス及び間接演算子
>単項&演算子は,そのオペランドのアドレスを返す。オペランドが型“?型”をもっている場合,結果は,型“?型へのポインタ”をもつ。
だからアドレスとポインタどっちでも良いんじゃないの
>単項&演算子は,そのオペランドのアドレスを返す。オペランドが型“?型”をもっている場合,結果は,型“?型へのポインタ”をもつ。
だからアドレスとポインタどっちでも良いんじゃないの
449デフォルトの名無しさん (ワッチョイ 9f21-qjSG)
2021/08/26(木) 07:03:21.90ID:H9rsGF960 &aはint*型のアドレス値(右辺値)で、変数ではないから代入は出来ない。
言葉の厳密な定義は知らんが、自分はポインタは型に紐付いたアドレスと理解してる。
組み込みなんかで
uint32_t a = 0x4020000;
...
*(int*)a = 1;
とか書くけどa自体はただの整数値だしね。
言葉の厳密な定義は知らんが、自分はポインタは型に紐付いたアドレスと理解してる。
組み込みなんかで
uint32_t a = 0x4020000;
...
*(int*)a = 1;
とか書くけどa自体はただの整数値だしね。
450デフォルトの名無しさん (ワッチョイ ffe7-Awm0)
2021/08/26(木) 09:15:02.06ID:GExK9GsR0451デフォルトの名無しさん (ワッチョイ 9f45-Awm0)
2021/08/26(木) 09:25:24.33ID:IpfDe45b0 アドレスも年齢も表現の対象
ポインタとintが型の名前
ポインタとintが型の名前
452デフォルトの名無しさん (ワッチョイ 9f45-Awm0)
2021/08/26(木) 09:26:46.39ID:IpfDe45b0 ageMipoとioDirectionがアプリケーションハンガリアン
iMipoとpDirectionがシステムハンガリアン
iMipoとpDirectionがシステムハンガリアン
453デフォルトの名無しさん (ワッチョイ 7f81-WQfa)
2021/08/26(木) 14:51:44.03ID:BSY6c8/C0 >>441
みればわかりますよね?
みればわかりますよね?
454デフォルトの名無しさん (ワッチョイ 7f3e-T33Q)
2021/08/26(木) 16:05:40.12ID:oVdr9HnU0 言語仕様の文面の上ではアドレスとポインタの区別ははっきりしないので同一視してもかまわないとは思う。
少なくともポインタという用語がポインタ型の変数を指すという主張には賛成できないというだけ。
ただ、言語仕様の範囲内ではそれでいいんだけども言語仕様の範囲外というか実装上の理屈では区別している場合がある。
言語仕様上はポインタの比較は同一の配列 (または集成体オブジェクト) 内の要素を比較した場合や
ヌルポインタとの比較についてしか定義されておらず、それ以外は未定義であると明記 (C99 6.5.8 参照) されていて
関連のない場所のポインタの比較であることが静的に把握できるときは定数に置き換える最適化が適用されることもあるんで
アドレスを比較した通りの結果になるとは限らない。
https://wandbox.org/permlink/SqW5wzZM3fD912Nh
そんなわけでポインタが素朴なアドレス (実体が整数値) だと思っていると思わぬ結果を生むことも有る。
少なくともポインタという用語がポインタ型の変数を指すという主張には賛成できないというだけ。
ただ、言語仕様の範囲内ではそれでいいんだけども言語仕様の範囲外というか実装上の理屈では区別している場合がある。
言語仕様上はポインタの比較は同一の配列 (または集成体オブジェクト) 内の要素を比較した場合や
ヌルポインタとの比較についてしか定義されておらず、それ以外は未定義であると明記 (C99 6.5.8 参照) されていて
関連のない場所のポインタの比較であることが静的に把握できるときは定数に置き換える最適化が適用されることもあるんで
アドレスを比較した通りの結果になるとは限らない。
https://wandbox.org/permlink/SqW5wzZM3fD912Nh
そんなわけでポインタが素朴なアドレス (実体が整数値) だと思っていると思わぬ結果を生むことも有る。
455デフォルトの名無しさん (ワッチョイ 9f45-Awm0)
2021/08/26(木) 16:26:17.74ID:IpfDe45b0 気持ちだけは、俺も昔そう思いたかったことがあるけど
JIS X3010ではそうなっていないので、その気持ちはきっぱり捨てた
JIS X3010ではそうなっていないので、その気持ちはきっぱり捨てた
456デフォルトの名無しさん (ワッチョイ ffe7-Awm0)
2021/08/26(木) 16:56:32.08ID:GExK9GsR0 int a; のときに &a+1 とかやると sizeof(int) 進むのね!
マジかよ知らなかった!
じゃあこの &a はほぼポインタだと思っていいのかな? いいの?
マジかよ知らなかった!
じゃあこの &a はほぼポインタだと思っていいのかな? いいの?
457デフォルトの名無しさん (ワッチョイ 9f45-Awm0)
2021/08/26(木) 17:01:04.55ID:IpfDe45b0 「ほぼ」じゃなく明白にポインタ
458はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f3e-T33Q)
2021/08/26(木) 17:09:18.58ID:oVdr9HnU0459デフォルトの名無しさん (ラクッペペ MM4f-2CIX)
2021/08/26(木) 18:57:41.72ID:B7a9vIltM aはint型の変数
&aは変数aをアドレス演算子&で評価した値
得られた値の型はintへのポインタ型int*
&aは変数aをアドレス演算子&で評価した値
得られた値の型はintへのポインタ型int*
460デフォルトの名無しさん (オッペケ Sr73-qjSG)
2021/08/26(木) 19:23:18.52ID:2RMrl6dxr >>456
例から少し外れるけど*(&a[0])に対して*(&a[0]+1)がおかしな場所指すと嫌だしな。
例から少し外れるけど*(&a[0])に対して*(&a[0]+1)がおかしな場所指すと嫌だしな。
461デフォルトの名無しさん (ワッチョイ 1fbb-T33Q)
2021/08/26(木) 19:47:54.06ID:aNUIA15f0 ポインタ型の変数→ポインタ、ポインタ変数
ポインタ型の値→ポインタ、アドレス
アドレス演算子の結果→ポインタ、アドレス
こういうことか
ポインタ型の値→ポインタ、アドレス
アドレス演算子の結果→ポインタ、アドレス
こういうことか
462デフォルトの名無しさん (ワッチョイ 9f01-Awm0)
2021/08/26(木) 22:07:08.65ID:cHqKnQ440 そして配列 int a[5] から a は何者? 引数に渡すとどーなる? という深淵な所へ
463デフォルトの名無しさん (ワッチョイ 5145-Ctl7)
2021/08/27(金) 07:17:43.92ID:5AM8fV7q0464デフォルトの名無しさん (ワッチョイ 8269-JMbW)
2021/08/27(金) 08:24:46.38ID:TRiQmtYg0 > int b = &a;
ポインタ型の値を整数型の値に暗黙に変換して代入
ポインタ型の値を整数型の値に暗黙に変換して代入
465デフォルトの名無しさん (オッペケ Sr51-pLPt)
2021/08/27(金) 09:31:13.97ID:sfbhubJqr >>464
gccでやったら注意された。g++でやったらガチギレされた。
gccでやったら注意された。g++でやったらガチギレされた。
466デフォルトの名無しさん (ガラプー KK16-Cwam)
2021/08/27(金) 09:39:50.45ID:02SXv6gRK467デフォルトの名無しさん (ワッチョイ 8269-JMbW)
2021/08/27(金) 09:43:34.61ID:TRiQmtYg0 ポインタを整数値として変換した際、その値が int の範囲内に収まるかどうかは環境でまちまちやでねぇ
468デフォルトの名無しさん (ワッチョイ 5145-Ctl7)
2021/08/27(金) 09:54:11.87ID:5AM8fV7q0 ここはCスレ
C++の参照はスレ違い
C++の参照はスレ違い
469デフォルトの名無しさん (ガラプー KK16-Cwam)
2021/08/27(金) 10:16:24.88ID:02SXv6gRK470デフォルトの名無しさん (ワッチョイ 8269-JMbW)
2021/08/27(金) 10:21:47.24ID:TRiQmtYg0 わかってないのに短絡で int は危ないけど
LP64 やら LLP64 やら ILP64 やら
自分のがどうなってるかわかっててやるか、ポータビリティを鑑みて気を使った書き方するか
LP64 やら LLP64 やら ILP64 やら
自分のがどうなってるかわかっててやるか、ポータビリティを鑑みて気を使った書き方するか
471デフォルトの名無しさん (ワッチョイ 5145-Ctl7)
2021/08/27(金) 10:44:46.26ID:5AM8fV7q0 ポインタのビット列を格納しきれる整数型が必ず存在する保証って箇条どこだっけ
472デフォルトの名無しさん (ワッチョイ eebb-icxm)
2021/08/27(金) 11:00:51.55ID:nK81wxcE0 >>469
いまや大抵の環境でintじゃ足りないだろ。大丈夫か?
いまや大抵の環境でintじゃ足りないだろ。大丈夫か?
473はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 423e-3Axr)
2021/08/27(金) 11:13:41.38ID:i+fGpSJz0 >>471
6.3.2.3 では「結果は何らかの整数型の値の範囲に含まれているとは限らない」とあるし、
7.18.1.4 では intptr_t は省略可能であるともあるので保証はないと解釈すべきだと思う。
6.3.2.3 では「結果は何らかの整数型の値の範囲に含まれているとは限らない」とあるし、
7.18.1.4 では intptr_t は省略可能であるともあるので保証はないと解釈すべきだと思う。
474デフォルトの名無しさん (ワッチョイ 5145-Ctl7)
2021/08/27(金) 11:49:10.69ID:5AM8fV7q0475デフォルトの名無しさん (ワッチョイ eebb-icxm)
2021/08/27(金) 12:26:48.67ID:nK81wxcE0 >>474
馬鹿なの?主要pfのintサイズも知らないのかよ
馬鹿なの?主要pfのintサイズも知らないのかよ
476デフォルトの名無しさん (ワッチョイ 5145-Ctl7)
2021/08/27(金) 12:55:50.72ID:5AM8fV7q0 日本語でおk
477デフォルトの名無しさん (ワッチョイ eebb-icxm)
2021/08/27(金) 14:37:29.53ID:nK81wxcE0 うわ基地外に触っちまった
478デフォルトの名無しさん (ワッチョイ 6991-hsyq)
2021/08/27(金) 15:11:03.04ID:28SvbL190 友達いて良かったじゃないか
479デフォルトの名無しさん (ワッチョイ 5145-Ctl7)
2021/08/27(金) 18:08:24.28ID:5AM8fV7q0 よしてくれ
直接的な罵倒語で話す次元のやつと一緒にすんな
直接的な罵倒語で話す次元のやつと一緒にすんな
480デフォルトの名無しさん (ワッチョイ 4281-bHCE)
2021/08/27(金) 19:45:46.03ID:dNdDj0y10 >>479
○すぞ
○すぞ
481デフォルトの名無しさん (ワッチョイ c95f-Ctl7)
2021/08/27(金) 22:47:56.20ID:3kbeL8sr0 愛すぞ
482デフォルトの名無しさん (アウアウウー Sa85-0BKB)
2021/08/27(金) 23:16:53.36ID:fvnuyojga 推すぞ
483デフォルトの名無しさん (ワッチョイ 61da-Y/PZ)
2021/08/27(金) 23:51:09.87ID:5LgeY8Yf0 スッゾオラー!
484デフォルトの名無しさん (アウアウクー MM11-bmw4)
2021/08/28(土) 00:56:23.65ID:TAUITiELM >>479
諭すぞ
諭すぞ
485デフォルトの名無しさん (ワッチョイ 1163-U7Lh)
2021/08/28(土) 01:07:55.46ID:ArBPUbYg0 宿題のことも思い出してやって
486デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
2021/08/28(土) 02:24:48.25ID:Kasf1Z4n0 >>358
レターは文字の集合。キャラクターとしたのは文字として認識していない記号等を含めたため。
レターは文字の集合。キャラクターとしたのは文字として認識していない記号等を含めたため。
487デフォルトの名無しさん (ワッチョイ 4281-bHCE)
2021/08/28(土) 14:36:23.66ID:0ROz2KLh0 >>486
なるほど
なるほど
488デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
2021/08/28(土) 19:25:44.91ID:Kasf1Z4n0 >>487
制御文字を含めたのも理由かな
制御文字を含めたのも理由かな
489デフォルトの名無しさん (ワッチョイ 4281-bHCE)
2021/08/28(土) 19:26:13.75ID:0ROz2KLh0 >>488
なるほど
なるほど
490デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
2021/08/28(土) 19:38:40.56ID:Kasf1Z4n0 文字のことをキャラクターと呼び始めたのはC言語じゃねえよ。
13年前にできたCOBOLですらキャラクターと呼んでんだぜ?
13年前にできたCOBOLですらキャラクターと呼んでんだぜ?
491デフォルトの名無しさん (ワッチョイ fdad-9F4v)
2021/08/28(土) 19:51:11.77ID:foB6MXRR0 俺に聞けって言われてもな
なに聞いたらいいかわからん
変に言語のマニアックな知識つけるより、アルゴリズム沢山知ってた方がいいと思うから言語や開発環境についてはvalgrindとかcmakeとか基本的なことを身に付いてればそれで十分だと思ってるわ
だからすまんけど聞きたいことはない
なに聞いたらいいかわからん
変に言語のマニアックな知識つけるより、アルゴリズム沢山知ってた方がいいと思うから言語や開発環境についてはvalgrindとかcmakeとか基本的なことを身に付いてればそれで十分だと思ってるわ
だからすまんけど聞きたいことはない
492デフォルトの名無しさん (ワッチョイ 6e46-NOxv)
2021/08/28(土) 19:58:54.24ID:J7/U097I0493デフォルトの名無しさん (ワッチョイ 1163-U7Lh)
2021/08/28(土) 20:03:04.96ID:ArBPUbYg0 C言語が1972年、COBOLが1959年
こういうことを言いたいのでは無いか?
こういうことを言いたいのでは無いか?
494デフォルトの名無しさん (ワッチョイ 6921-pLPt)
2021/08/28(土) 20:08:53.74ID:GTTRCLIA0 子供の英会話聞いてるとletter aとか頻出するが、まだキャラクターは出てこないな。
495デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
2021/08/28(土) 21:27:40.38ID:Kasf1Z4n0 キャラクターの本来の意味は文字じゃないんだぜ?
あたりまえなんだぜえ?
あたりまえなんだぜえ?
496デフォルトの名無しさん (ワッチョイ ad85-Wwpo)
2021/08/29(日) 01:18:09.40ID:TPHdi4yb0 >言いたいのでは無いか?
ここの「無い」に漢字を使うことに違和感感じるのは漏れだけ?
ここの「無い」に漢字を使うことに違和感感じるのは漏れだけ?
497デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
2021/08/29(日) 01:49:09.89ID:HDdtcjYC0 「〇〇ではないのか。」の「ない」は形容詞。
ただし、これは形容詞を代用した言い回しなので、「無い」とはっきり形容とわかる使い方以外の場合は、日本語のおかしさが出てしまうので違和感がある。
そもそもわざわざ「ない」を「無い」と書く必要がない。戦後教育では漢字で書かなくてもわかることは仮名で書くと決めて、学校では漢字で書かないよう指導しているのに、漢字で書くやつはそれをすっかり忘れているだけだ。
ただし、これは形容詞を代用した言い回しなので、「無い」とはっきり形容とわかる使い方以外の場合は、日本語のおかしさが出てしまうので違和感がある。
そもそもわざわざ「ない」を「無い」と書く必要がない。戦後教育では漢字で書かなくてもわかることは仮名で書くと決めて、学校では漢字で書かないよう指導しているのに、漢字で書くやつはそれをすっかり忘れているだけだ。
498デフォルトの名無しさん (ワッチョイ 1163-U7Lh)
2021/08/29(日) 01:52:08.61ID:5p1Kcso30 割とどうでもいい話だな
国語教育スレにでもうつってそこで続けてくれ
国語教育スレにでもうつってそこで続けてくれ
499デフォルトの名無しさん (ワッチョイ 6e46-NOxv)
2021/08/29(日) 02:38:33.54ID:7/doTy/i0 > 違和感感じる
に違和感覚えるのは漏れだけ?
に違和感覚えるのは漏れだけ?
500デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
2021/08/29(日) 02:48:49.23ID:HDdtcjYC0501デフォルトの名無しさん (ワッチョイ 02ad-U7Lh)
2021/08/29(日) 04:28:31.20ID:Lt7wAmk40 無いと言えばこの前ドイツ語の映画で Nein って言ってる時に日本語字幕に「無い」と出ていて一致していて笑った。
502デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
2021/08/29(日) 05:28:11.66ID:HDdtcjYC0 >>501
否定の言葉の発音がNで始まるのは人類共通
否定の言葉の発音がNで始まるのは人類共通
503デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
2021/08/29(日) 05:30:35.87ID:HDdtcjYC0 人類が言葉を話す前の拒否を表す叫びが言葉になったのだろう。
504デフォルトの名無しさん (ワッチョイ a5bb-U7Lh)
2021/08/29(日) 08:16:38.59ID:0FIWs/PL0 いやだ!
やめろ!
はNじゃないけど
やめろ!
はNじゃないけど
505デフォルトの名無しさん (アウアウウー Sa85-0BKB)
2021/08/29(日) 08:19:11.41ID:z+CvjRY2a スモモモモモモモモ
506デフォルトの名無しさん (ガラプー KK16-Cwam)
2021/08/29(日) 08:43:55.40ID:kXE2QuW0K507デフォルトの名無しさん (ワッチョイ 2236-u6Y8)
2021/08/29(日) 08:46:40.86ID:XBz6dM210 離散データを連続データのように見せかけるフィルターを作りたい。
アルゴリズム名を教えてください。
アルゴリズム名を教えてください。
508デフォルトの名無しさん (ワッチョイ 5145-Ctl7)
2021/08/29(日) 08:51:04.40ID:s3BI9dN30 不是
↑
Nで始まるどころか含まれてもいない
↑
Nで始まるどころか含まれてもいない
509デフォルトの名無しさん (ワッチョイ 3d5f-Wwpo)
2021/08/29(日) 09:56:38.96ID:Qq6uUubw0 _countof を使うべきですか?
https://docs.microsoft.com/ja-jp/cpp/c-runtime-library/reference/countof-macro?view=msvc-160
もっと良い計数方法ありますか?
https://docs.microsoft.com/ja-jp/cpp/c-runtime-library/reference/countof-macro?view=msvc-160
もっと良い計数方法ありますか?
510デフォルトの名無しさん (ワッチョイ 3d5f-Wwpo)
2021/08/29(日) 10:01:34.24ID:Qq6uUubw0 >>502
フランス語には何故 pas があるの?
フランス語には何故 pas があるの?
511デフォルトの名無しさん (エムゾネ FF22-pzwr)
2021/08/29(日) 10:14:57.45ID:LcGcn6bDF512デフォルトの名無しさん (NZ 0H4a-Wux5)
2021/08/29(日) 16:11:09.82ID:bszwbM+aH513デフォルトの名無しさん (ワッチョイ c101-ahI4)
2021/08/29(日) 16:24:27.16ID:Gww7yuPw0 >>510
neの発音が小さくて聞き取れないから付けることになった
neの発音が小さくて聞き取れないから付けることになった
514デフォルトの名無しさん (ワッチョイ 02ad-U7Lh)
2021/08/29(日) 17:57:42.29ID:Lt7wAmk40 nulぽ
515デフォルトの名無しさん (ワッチョイ ada2-m34F)
2021/08/29(日) 18:16:18.76ID:jyQ+I+xW0 ( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←>>514
(_フ彡 /
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←>>514
(_フ彡 /
516デフォルトの名無しさん (ワッチョイ 1163-U7Lh)
2021/08/29(日) 18:44:57.73ID:5p1Kcso30 日本語だとにゃー、英語だとmew
517507 (ワッチョイ 2236-u6Y8)
2021/08/29(日) 19:19:21.76ID:XBz6dM210 投稿するスレッドを間違えてしまったかもしれません。>>507
それ以後、いろいろ調べつづけましたが、
どうやら内挿法とか補間法とか呼ばれていることが分かりました。
そのためのアルゴリズムを探してみます。
ありがとうございました。
それ以後、いろいろ調べつづけましたが、
どうやら内挿法とか補間法とか呼ばれていることが分かりました。
そのためのアルゴリズムを探してみます。
ありがとうございました。
518デフォルトの名無しさん (ワッチョイ 1163-U7Lh)
2021/08/29(日) 19:26:53.70ID:5p1Kcso30 宿題スレやお題スレなら、反応があるかも知れん
519507 (ワッチョイ 2236-u6Y8)
2021/08/29(日) 19:40:59.03ID:XBz6dM210 離散的なデータのプロットから滑らかな曲線を得たいのですが、
ベジェ曲線を使う必要があるため、それも計算する必要があります。
ではこの辺でさようなら。
ベジェ曲線を使う必要があるため、それも計算する必要があります。
ではこの辺でさようなら。
520デフォルトの名無しさん (アウウィフ FF85-4thN)
2021/08/30(月) 14:56:32.12ID:a7szkEqkF FFT
521デフォルトの名無しさん (アウアウウー Sa85-0BKB)
2021/08/30(月) 17:40:48.45ID:7tjRHlOya Final Fantasy XII
522デフォルトの名無しさん (ワッチョイ 6101-Ctl7)
2021/08/30(月) 22:24:16.28ID:u8tdK0uP0 与えられた離散的な点を必ず通る曲線なのか適度に近いとろこを通す曲線なのか
523デフォルトの名無しさん (アウアウウー Sa85-0BKB)
2021/08/31(火) 20:16:31.77ID:5EZjygd6a Fire Fox TV
525デフォルトの名無しさん (ワッチョイ 724d-U7Lh)
2021/09/01(水) 09:37:56.74ID:BXH5CjID0527デフォルトの名無しさん (ワッチョイ 595e-xJJl)
2021/09/11(土) 14:53:10.23ID:H4dj0oy10 代入時など左辺に&をつけない理由って、元々左辺の変数はその変数のアドレスを示しているんですか?
528デフォルトの名無しさん (ワッチョイ 6d63-dGLa)
2021/09/11(土) 17:29:15.71ID:fnRem4gD0 左辺にアドレス値を書いても、そのアドレスに格納してくれるわけではない
529デフォルトの名無しさん (ワッチョイ 0a69-wHYb)
2021/09/11(土) 19:49:04.18ID:UoYK8G+w0 変数は(多くの場合)メモリ上に置かれる
a=bの式をコンパイラは「bのアドレスのメモリにある値をaのアドレスのメモリにコピーする」と解釈する
でもそれをソースコード上で&a=&bと書かせてもお得なことはないよね
言語上では「a, bは(抽象化された)変数」で、その変数への代入は「a=b」でいいよね
a=bの式をコンパイラは「bのアドレスのメモリにある値をaのアドレスのメモリにコピーする」と解釈する
でもそれをソースコード上で&a=&bと書かせてもお得なことはないよね
言語上では「a, bは(抽象化された)変数」で、その変数への代入は「a=b」でいいよね
530デフォルトの名無しさん (ワッチョイ e521-se0r)
2021/09/11(土) 20:30:31.76ID:IpYcp5mx0 >>527
C++だと参照型が近いけど、あれはあれで窮屈ながらも、便利っちゃ便利かもな。
でもポインタ幅きかせてるCであえて拡張したい記法かといえば微妙よね。
void func(char &c) { c *= 2; }
みたいなのね。
C++だと参照型が近いけど、あれはあれで窮屈ながらも、便利っちゃ便利かもな。
でもポインタ幅きかせてるCであえて拡張したい記法かといえば微妙よね。
void func(char &c) { c *= 2; }
みたいなのね。
531デフォルトの名無しさん (ワッチョイ 595e-xJJl)
2021/09/11(土) 22:33:45.82ID:H4dj0oy10 皆さんありがとう
scanfで変数に&を付ける理由はいろんなとこに書いてあるんだけど、
それならなんで普通の代入の時に&を付けないんだ?
って疑問に思ってました
scanfで変数に&を付ける理由はいろんなとこに書いてあるんだけど、
それならなんで普通の代入の時に&を付けないんだ?
って疑問に思ってました
532デフォルトの名無しさん (アウアウウー Sa21-ndeh)
2021/09/11(土) 23:06:30.86ID:LC2TQyRsa void f(int *p)
{ *p = 1; }
….
int i;
i = 0;
printf("%d\n"); // 0
f(&i);
printf("%d\n"); // 1
{ *p = 1; }
….
int i;
i = 0;
printf("%d\n"); // 0
f(&i);
printf("%d\n"); // 1
533デフォルトの名無しさん (ワッチョイ 6d63-dGLa)
2021/09/12(日) 00:21:46.80ID:F+ZN0nvA0 scanfに限らず、関数に変数を渡すと、その関数は、
渡された変数の値を受け取れるだけで、
変数の値の書き換えは出来ません
書き換えて欲しいときは、書き換える場所を関数に教えます
普通の代入の時は、その変数を直接操作できるので
あえてアドレス表記する必要が無いです
渡された変数の値を受け取れるだけで、
変数の値の書き換えは出来ません
書き換えて欲しいときは、書き換える場所を関数に教えます
普通の代入の時は、その変数を直接操作できるので
あえてアドレス表記する必要が無いです
534デフォルトの名無しさん (ワッチョイ eaad-pW2y)
2021/09/12(日) 02:58:55.75ID:zHKafq1A0 memcpy(&a, &b, sizeof(a));
なんてことを、昔々構造体の変数の代入が出来ないCのサブセットのコンパイラでやったことがあったような気がするが、もはや記憶も曖昧になるぐらいの大昔。時の経つのは早いものぢゃ。
なんてことを、昔々構造体の変数の代入が出来ないCのサブセットのコンパイラでやったことがあったような気がするが、もはや記憶も曖昧になるぐらいの大昔。時の経つのは早いものぢゃ。
535デフォルトの名無しさん (ワッチョイ ad45-m40g)
2021/09/12(日) 10:12:20.10ID:BvG4P5vd0 サブセットつーか、そもそもK&R Cは構造体代入できないね
536デフォルトの名無しさん (ワッチョイ e521-se0r)
2021/09/12(日) 14:36:50.48ID:Yq9DVfRn0 >>531
int c;に対して&c = 100という記述はだめなのって疑問かな?
代入演算子は左辺に変数を置いて値を書き込む特別な演算子だけど、
それをその変数の型を含むアドレス値を左辺に置いてそのアドレスに
書き込むという定義とするわけだ。
定義自体がややこしいし、
アドレス全面押しにする理由がない(むしろ遮蔽したい)、
頻繁に用いる演算子ゆえタイプ数が増えたりするのは好まない、
などメリットがないのだろうね。
=と==を=にまとめてしまって、代入時は&付けるという方向は
あるかも知れませんが、コード中代入のが多いでしょうから、
代入をシンプルにしたのではと。
int c;に対して&c = 100という記述はだめなのって疑問かな?
代入演算子は左辺に変数を置いて値を書き込む特別な演算子だけど、
それをその変数の型を含むアドレス値を左辺に置いてそのアドレスに
書き込むという定義とするわけだ。
定義自体がややこしいし、
アドレス全面押しにする理由がない(むしろ遮蔽したい)、
頻繁に用いる演算子ゆえタイプ数が増えたりするのは好まない、
などメリットがないのだろうね。
=と==を=にまとめてしまって、代入時は&付けるという方向は
あるかも知れませんが、コード中代入のが多いでしょうから、
代入をシンプルにしたのではと。
537デフォルトの名無しさん (ワッチョイ ad45-m40g)
2021/09/12(日) 14:42:45.51ID:BvG4P5vd0 FORTRANの代入を真似ただけだろ
538デフォルトの名無しさん (ワッチョイ eaad-dGLa)
2021/09/13(月) 01:06:14.49ID:MTzB4xqO0 >>535
あ。そうだったっけ。忘れてた。
あ。そうだったっけ。忘れてた。
539デフォルトの名無しさん (ワッチョイ eaad-dGLa)
2021/09/13(月) 01:13:16.73ID:MTzB4xqO0 int c;
*(&c) = 1;
ていうのなら出来る。
コンパイラは何の警告も出さずにコンパイルするかも知れないが、結局 c = 1; をやっているのと同じコードが出力されると思う。
*(&c) = 1;
ていうのなら出来る。
コンパイラは何の警告も出さずにコンパイルするかも知れないが、結局 c = 1; をやっているのと同じコードが出力されると思う。
540はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a3e-wHYb)
2021/09/13(月) 01:28:42.84ID:b2LY5t5P0 代入演算子の左辺に現れることが出来るのは変更可能な左辺値 (modifiable lvalue) で、
>>539 の例はその条件を満たす。
>>527
たとえば
int c = 1;
a = 2;
というのは C では有効なコードだけれど、変数を評価すると格納されている値になるというルールを
そのまま適用すると
1 = 2;
になってしまっておかしい、左辺は「場所」でないといけないという感覚はとても良い感性なのだけれど、
左辺がアドレスということにしたとしてもアドレスはポインタ型の「値」でしかないのでそれはそれで
なんだか変なことになる。
結局は特別な規則を導入必要はあって、 C においてはそれが lvalue という概念というわけ。
>>539 の例はその条件を満たす。
>>527
たとえば
int c = 1;
a = 2;
というのは C では有効なコードだけれど、変数を評価すると格納されている値になるというルールを
そのまま適用すると
1 = 2;
になってしまっておかしい、左辺は「場所」でないといけないという感覚はとても良い感性なのだけれど、
左辺がアドレスということにしたとしてもアドレスはポインタ型の「値」でしかないのでそれはそれで
なんだか変なことになる。
結局は特別な規則を導入必要はあって、 C においてはそれが lvalue という概念というわけ。
541デフォルトの名無しさん (テテンテンテン MM3e-h3Yj)
2021/09/13(月) 07:34:08.89ID:wBWjVwq/M わざとやってるのか知らんけどコードくらいまともに書けよ
542デフォルトの名無しさん (スプッッ Sd12-dgdc)
2021/09/13(月) 09:12:44.29ID:BLplThEad >>531
C++は面倒なことになったな
#include <iostream>
using namespace std;
int main(int ac, char **av)
{
int a = 3;
int &b = a;
cout << a << b << endl;
return 0;
}
C++は面倒なことになったな
#include <iostream>
using namespace std;
int main(int ac, char **av)
{
int a = 3;
int &b = a;
cout << a << b << endl;
return 0;
}
543デフォルトの名無しさん (ワッチョイ ad45-m40g)
2021/09/13(月) 09:47:47.66ID:B8QV0Pmm0 ここはCスレ
544デフォルトの名無しさん (アウアウウー Sa21-ndeh)
2021/09/13(月) 13:35:49.31ID:lh01OzgJa545デフォルトの名無しさん (ワッチョイ 6a69-bL/7)
2021/09/13(月) 16:53:30.27ID:XjglcLZY0 副作用をポインタを経由して呼び出し元に伝播する ポインタ渡し
引数変数への代入がそのまま呼び出し元の変数に反映される 参照渡し(C言語には無い)
引数変数への代入がそのまま呼び出し元の変数に反映される 参照渡し(C言語には無い)
546デフォルトの名無しさん (ワッチョイ 6a69-bL/7)
2021/09/13(月) 16:57:08.25ID:XjglcLZY0 関数の壁(呼び出し元と 呼び出された関数内の記述)を超えるときに & を使って壁を越える工夫をする
同じコード内の変数への代入ならば不要
同じコード内の変数への代入ならば不要
547デフォルトの名無しさん (テテンテンテン MM3e-h3Yj)
2021/09/13(月) 17:04:06.19ID:JA2CmiO7M &使わないと釣り銭をもらえない
548はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a3e-wHYb)
2021/09/13(月) 17:52:01.78ID:b2LY5t5P0 C の仕様では引数は一貫して値渡しで、その値の型がポインタ型のこともあるという理屈になってる。
(仕様の理屈はともかくポインタの活用の仕方としてポインタ渡しと呼ぶことを否定するわけではない。)
(仕様の理屈はともかくポインタの活用の仕方としてポインタ渡しと呼ぶことを否定するわけではない。)
549デフォルトの名無しさん (ワッチョイ a95f-q+67)
2021/09/13(月) 17:58:15.13ID:+BvkCNRX0 C言語は昔からアドレス渡しと言っているけどな。
550デフォルトの名無しさん (ワッチョイ a95f-q+67)
2021/09/13(月) 18:00:26.00ID:+BvkCNRX0 ポインタ渡しだとポインタ変数限定みたいに捉えてしまいそうだなw
551デフォルトの名無しさん (ワッチョイ 5985-dgdc)
2021/09/13(月) 20:02:35.33ID:LTFifztG0 「アドレス渡し」の方がアセンブラに近い
ただしポインタ型のサイズで加減するアドレッシング機能付き
「ポインタ渡し」はPASCAL由来やろ
あと配列のサイズも一緒に渡す機能は付いてたらよかったのになーともたまに思う
ただしポインタ型のサイズで加減するアドレッシング機能付き
「ポインタ渡し」はPASCAL由来やろ
あと配列のサイズも一緒に渡す機能は付いてたらよかったのになーともたまに思う
552デフォルトの名無しさん (ワッチョイ a95f-q+67)
2021/09/13(月) 21:18:13.15ID:+BvkCNRX0 OSを作るために作られたのに
553デフォルトの名無しさん (アウアウウー Sa21-ndeh)
2021/09/14(火) 01:01:51.69ID:cEQHQvCwa ポインタには型があるから、オブジェクトの大きさも、structへのポインタなら、各メンバへのオフセットや大きさやら…
554デフォルトの名無しさん (ワッチョイ a95f-q+67)
2021/09/14(火) 06:05:05.77ID:48wIBTET0 >>553
型はあってないようなもの
型はあってないようなもの
555デフォルトの名無しさん (ワッチョイ ad45-m40g)
2021/09/14(火) 07:07:50.62ID:TY9EyEr50 カーニハンは辛辣なPascal批判の論文書いてるね
556デフォルトの名無しさん (ワッチョイ ad45-m40g)
2021/09/14(火) 07:08:21.19ID:TY9EyEr50557デフォルトの名無しさん (ワッチョイ e521-se0r)
2021/09/14(火) 07:16:50.67ID:0vgLnSzd0 >>556
論文って開いてみたら、タイトルクソワロタ。
論文って開いてみたら、タイトルクソワロタ。
558デフォルトの名無しさん (ワッチョイ ad45-m40g)
2021/09/14(火) 07:26:42.56ID:TY9EyEr50 よかったね
559デフォルトの名無しさん (テテンテンテン MM3e-PBPl)
2021/09/14(火) 09:36:35.35ID:Hja/bGISM 卒論のテーマはこれで決まりだな
560デフォルトの名無しさん (ワッチョイ c55f-m40g)
2021/09/14(火) 10:50:21.10ID:5Y/jembp0 アドレス私って、
b = a;
c = a;
とかやってて、a=0にすると、bもcも0になるってこと?
b = a;
c = a;
とかやってて、a=0にすると、bもcも0になるってこと?
561デフォルトの名無しさん (ワッチョイ ad45-m40g)
2021/09/14(火) 11:31:36.84ID:TY9EyEr50 それは参照だ
C++のな
Cでやるなら
#define b a
#define c a
C++のな
Cでやるなら
#define b a
#define c a
562デフォルトの名無しさん (エムゾネ FF0a-dgdc)
2021/09/14(火) 13:58:37.43ID:eQ96wDaCF >>557
Matz の論文は I hate C++ だぞω
Matz の論文は I hate C++ だぞω
563デフォルトの名無しさん (ワッチョイ a95f-q+67)
2021/09/14(火) 15:48:56.00ID:48wIBTET0 >>556
性能重視の部分は考え方の違いだな。UNIXを作るにあたって不要な部分を取り除いた結果がC。
性能重視の部分は考え方の違いだな。UNIXを作るにあたって不要な部分を取り除いた結果がC。
564デフォルトの名無しさん (ワッチョイ a95f-q+67)
2021/09/14(火) 15:51:55.83ID:48wIBTET0 >>560
メモリのアドレスを直接、渡すから、呼び出し元の領域をそういうふうに直接、触ることになる。
メモリのアドレスを直接、渡すから、呼び出し元の領域をそういうふうに直接、触ることになる。
565ハノン ◆QZaw55cn4c
2021/09/14(火) 17:38:29.69 私は pascal は好きなんですけど‥‥
566デフォルトの名無しさん (ワッチョイ eaad-pW2y)
2021/09/14(火) 23:42:22.10ID:/drSXHoF0 Delphiは昔使ってたな。拡張しまくったPascalというかなんというか。
567デフォルトの名無しさん (ワッチョイ a95f-q+67)
2021/09/15(水) 00:41:20.00ID:h1CB84tY0 アセンブラのようなことができた方がいいというのが出発点だからなあ
568はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a3e-wHYb)
2021/09/15(水) 01:36:14.40ID:/JHaU2Oz0 今でこそ C は低レイヤ寄りと見做されるけど「高級言語で OS を書きたい」というモチベーションから作られている。
おそらく当時の感覚からすればむしろアセンブラ的な世界からの脱却だったんじゃないかな。
歴史的経緯はある程度は記録を辿れるけど時代を背景にした「感覚」というのは現代人からはなかなか掴みづらくてあくまでも想像だけど。
おそらく当時の感覚からすればむしろアセンブラ的な世界からの脱却だったんじゃないかな。
歴史的経緯はある程度は記録を辿れるけど時代を背景にした「感覚」というのは現代人からはなかなか掴みづらくてあくまでも想像だけど。
569デフォルトの名無しさん (ワッチョイ a95f-q+67)
2021/09/15(水) 05:11:14.87ID:h1CB84tY0 おおざっぱに言うとアセンブラの見た目を変更したのがC
570デフォルトの名無しさん (ワッチョイ ad45-m40g)
2021/09/15(水) 07:08:27.66ID:+suq2kti0 アセンブラの無駄のなさと、高級言語の移植性の、両取りを狙う試みだね
571ハノン ◆QZaw55cn4c
2021/09/15(水) 14:05:30.69 それはどうでしょうか‥
turbo c の asm 文抜きのいきなりインラインはよく使っていましたが、そんな turbo c でもキャリーフラグを直接使えなかった気がします、そんな記憶がふつふつと
turbo c の asm 文抜きのいきなりインラインはよく使っていましたが、そんな turbo c でもキャリーフラグを直接使えなかった気がします、そんな記憶がふつふつと
572デフォルトの名無しさん (ワッチョイ ad45-m40g)
2021/09/15(水) 14:16:20.72ID:+suq2kti0 ローテート命令はキャリーありの9bit循環とキャリーなしの8bit循環があるから
そこまで言語では面倒見きれなかったってだけ
ステータスレジスタを陽に記述すると移植性なくなるが
そんなことしなくても当時のUNIXの95%を記述できたしな
そこまで言語では面倒見きれなかったってだけ
ステータスレジスタを陽に記述すると移植性なくなるが
そんなことしなくても当時のUNIXの95%を記述できたしな
573デフォルトの名無しさん (ブーイモ MM3e-J6z6)
2021/09/15(水) 15:25:36.81ID:23VOu0KJM #ifdef flagresister取得可能(ならば)
専用式
#elseif
~
専用式
#elseif
~
574デフォルトの名無しさん (ブーイモ MM3e-J6z6)
2021/09/15(水) 15:31:31.69ID:23VOu0KJM みたいな専用式を言語仕様に含めたやり方も出来たかもしれん
当時の演算能力内でwrite once,RA かつアカデミック感目指してomit しちゃったんかな
当時の演算能力内でwrite once,RA かつアカデミック感目指してomit しちゃったんかな
575デフォルトの名無しさん (ラクッペペ MM3e-K+dR)
2021/09/15(水) 16:26:01.26ID:1Mo2XUv5M Keep the language small and simple.
576デフォルトの名無しさん (テテンテンテン MM3e-h3Yj)
2021/09/15(水) 17:05:05.53ID:dV7Qc7xZM577ハノン ◆QZaw55cn4c
2021/09/15(水) 17:16:31.92 >>576
そうなんですね、なんちゃって多倍長をやっていて、ここでローテート&キャリーが使えればなぁぁぁ、とつくづく
そうなんですね、なんちゃって多倍長をやっていて、ここでローテート&キャリーが使えればなぁぁぁ、とつくづく
578はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a3e-wHYb)
2021/09/15(水) 17:52:22.20ID:/JHaU2Oz0 >>576-577
TL/1 はあくまでも演算子がキャリー/ボロー付き演算の命令にそのままコンパイルされるってだけなんで、
配列アクセスなどのときに勝手にアドレス計算でフラグが設定されてしまうといった意図しない影響があって
あまり使い勝手は良くない。
あまり詳しくないけど LLVM はキャリーフラグを扱う方法があって
かつレキシカルな伝播として記述できたはずなんで、
たぶん LLVM IR でならなんとか記述できるんじゃないかな。
LLVM IR を高級といえるかどうかはたいへん微妙な話だが……。
TL/1 はあくまでも演算子がキャリー/ボロー付き演算の命令にそのままコンパイルされるってだけなんで、
配列アクセスなどのときに勝手にアドレス計算でフラグが設定されてしまうといった意図しない影響があって
あまり使い勝手は良くない。
あまり詳しくないけど LLVM はキャリーフラグを扱う方法があって
かつレキシカルな伝播として記述できたはずなんで、
たぶん LLVM IR でならなんとか記述できるんじゃないかな。
LLVM IR を高級といえるかどうかはたいへん微妙な話だが……。
579デフォルトの名無しさん (アウアウウー Sa5b-hED7)
2021/09/17(金) 10:00:39.91ID:oDWWsmOUa580デフォルトの名無しさん (テテンテンテン MM8f-vJdV)
2021/09/17(金) 10:32:07.44ID:+c0nDJY5M >>578
例えばこんなを高級言語って言う?
define i32 @main(i32 %argc, i8** %argv) #0 {
%1 = alloca i32, align 4
%2 = alloca i32, align 4
%3 = alloca i8**, align 8
store i32 0, i32* %1
store i32 %argc, i32* %2, align 4
store i8** %argv, i8*** %3, align 8
%4 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0))
ret i32 2
}
>>579
ごめん、意味分からん
単なるVTL (Very Tiny Language) の話にしか見えない
例えばこんなを高級言語って言う?
define i32 @main(i32 %argc, i8** %argv) #0 {
%1 = alloca i32, align 4
%2 = alloca i32, align 4
%3 = alloca i8**, align 8
store i32 0, i32* %1
store i32 %argc, i32* %2, align 4
store i8** %argv, i8*** %3, align 8
%4 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0))
ret i32 2
}
>>579
ごめん、意味分からん
単なるVTL (Very Tiny Language) の話にしか見えない
581デフォルトの名無しさん (ラクッペペ MM8f-bbAV)
2021/09/17(金) 14:21:22.00ID:g2c8KLlcM >>580
rustよりは高級に見えるな
rustよりは高級に見えるな
582はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f3e-IhC7)
2021/09/17(金) 14:42:13.05ID:hv2MZm4l0 >>580
そこから様々なターゲットの機械語を生成しうるという意味では
ハードウェアにベッタリと紐付いているわけではなくて
LLVM IR を低水準言語と呼ぶのはなんか違うなって思うけど、
だからといって日常的に人間が直接書くことを前提においてるわけでもない
という点では高級とも言いにくいかな……という意味で「微妙」と評した。
そこから様々なターゲットの機械語を生成しうるという意味では
ハードウェアにベッタリと紐付いているわけではなくて
LLVM IR を低水準言語と呼ぶのはなんか違うなって思うけど、
だからといって日常的に人間が直接書くことを前提においてるわけでもない
という点では高級とも言いにくいかな……という意味で「微妙」と評した。
583デフォルトの名無しさん (ワッチョイ 171d-QiSa)
2021/09/17(金) 16:26:05.73ID:J/w/zJeW0 シリコンバレーで働いて気付いた「技術力向上」だけに固執するエンジニアのダメさ【Sansan CTO 藤倉成太】
https://type.jp/et/feature/9402/
DeNA×メルカリ×サイバーエージェント人事担当が面接で必ずする質問とは?「技術力だけアピールしても内定は出ない」
https://type.jp/et/feature/10236/
DeNA・メルカリ・CA人事が証言! スキルはあるのに“面接で落ちる”エンジニアに足りないもの
https://type.jp/et/feature/10402/
https://type.jp/et/feature/9402/
DeNA×メルカリ×サイバーエージェント人事担当が面接で必ずする質問とは?「技術力だけアピールしても内定は出ない」
https://type.jp/et/feature/10236/
DeNA・メルカリ・CA人事が証言! スキルはあるのに“面接で落ちる”エンジニアに足りないもの
https://type.jp/et/feature/10402/
584デフォルトの名無しさん (テテンテンテン MM8f-vJdV)
2021/09/17(金) 20:48:41.30ID:M17TGSOPM585はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f3e-IhC7)
2021/09/17(金) 20:59:27.14ID:hv2MZm4l0 >>584
JVM のバイトコードは言語ではないと思うから高級言語とは言わないけど、低水準でもないでしょ。
JVM のバイトコードは言語ではないと思うから高級言語とは言わないけど、低水準でもないでしょ。
586デフォルトの名無しさん (テテンテンテン MM8f-vJdV)
2021/09/17(金) 21:50:22.49ID:/PAMmlQoM 低水準の話はしてないから
> 高級言語とは言わない
でFAやね
> 高級言語とは言わない
でFAやね
587はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f3e-IhC7)
2021/09/17(金) 22:00:48.37ID:hv2MZm4l0 そうか。
588デフォルトの名無しさん (ワッチョイ 1763-qDHA)
2021/09/17(金) 22:31:46.08ID:C7S/bCm80 C言語だってコンパイルすればバイナリ
589デフォルトの名無しさん (ワッチョイ 9fad-qDHA)
2021/09/18(土) 04:33:04.80ID:iNoegsL20 倍也
590デフォルトの名無しさん (エムゾネ FFbf-hED7)
2021/09/18(土) 08:52:55.38ID:bA/qQPAiF バイトコードをいい加減に扱い過ぎ
591デフォルトの名無しさん (ワッチョイ 1745-I/Yj)
2021/09/18(土) 09:19:07.92ID:1ehO0L4U0 >>580
特定CPUのアーキテクチャに言及してないな
特定CPUのアーキテクチャに言及してないな
592デフォルトの名無しさん (ワッチョイ b7bb-qDHA)
2021/09/18(土) 18:56:12.62ID:RjbxwxKL0 宣言と定義についてなんですが
int a; // 宣言
int b = 1; // 定義
宣言と定義ではどちらもメモリ(スタック)は確保されているという理解であってますか?
int a; // 宣言
int b = 1; // 定義
宣言と定義ではどちらもメモリ(スタック)は確保されているという理解であってますか?
593デフォルトの名無しさん (ワッチョイ 1763-qDHA)
2021/09/18(土) 19:10:22.14ID:bsPUoCV00 はい
594デフォルトの名無しさん (ワッチョイ 1fbd-SDcz)
2021/09/18(土) 19:28:32.87ID:I+biH5jK0 はいじゃないが
595デフォルトの名無しさん (ワッチョイ bfe9-IhC7)
2021/09/18(土) 19:42:16.97ID:jTQBMDyZ0596デフォルトの名無しさん (ワッチョイ ff61-IhC7)
2021/09/18(土) 19:43:03.59ID:XFa1Ksn/0 コンパイラと最適化オプション次第
597デフォルトの名無しさん (ワッチョイ b7bb-qDHA)
2021/09/18(土) 19:48:26.79ID:RjbxwxKL0 >>595
定義は宣言の下位概念ってことですか?
定義は宣言の下位概念ってことですか?
598ハノン ◆QZaw55cn4c (ワッチョイ 9f47-o3tO)
2021/09/18(土) 19:55:00.96ID:/DXMasS60 >>592
いいえ
定義では格納場所を確保しますが、宣言では存在のみ指示しても格納場所は確保されません、私は気が向けば宣言には extern をつけるようにしないわけではない、という感じかな
なおその例は少し変で、代入を伴えば定義というわけでも、代入がなければ宣言というわけでもない、というのが個人的感覚です、詳しい人の解説を希望します
例外は、リンカが頑張って格納場所を作ってくれる例の何とかとかいうキーワードがあったのですがおもいだせません、今日モデルナを射った後転んで頭を打ってしまった、結果、いっそう馬鹿になってしまいました‥‥
いいえ
定義では格納場所を確保しますが、宣言では存在のみ指示しても格納場所は確保されません、私は気が向けば宣言には extern をつけるようにしないわけではない、という感じかな
なおその例は少し変で、代入を伴えば定義というわけでも、代入がなければ宣言というわけでもない、というのが個人的感覚です、詳しい人の解説を希望します
例外は、リンカが頑張って格納場所を作ってくれる例の何とかとかいうキーワードがあったのですがおもいだせません、今日モデルナを射った後転んで頭を打ってしまった、結果、いっそう馬鹿になってしまいました‥‥
599ハノン ◆QZaw55cn4c (ワッチョイ 9f47-o3tO)
2021/09/18(土) 20:04:32.98ID:/DXMasS60 >>592
宣言か定義か、という問題は、単一モジュールでプログラムを構成している段階ではあまり気にしなくてもいいと思います
複数の c ソースを分割コンパイルし、最後に得られたオブジェクトをライブラリともあわせて結合する、という作法に進めば自然に理解できるようになりますのでご心配なさらなくともいいでしょう
私も昔は「extern は要らない子!」とか馬鹿をいっていましたが、これは撤回します、extern がどうしても必要な場面に遭遇したのです
まあそういうわけで一度にいっぺんに賢くなるのは私には難しいことのようです
宣言か定義か、という問題は、単一モジュールでプログラムを構成している段階ではあまり気にしなくてもいいと思います
複数の c ソースを分割コンパイルし、最後に得られたオブジェクトをライブラリともあわせて結合する、という作法に進めば自然に理解できるようになりますのでご心配なさらなくともいいでしょう
私も昔は「extern は要らない子!」とか馬鹿をいっていましたが、これは撤回します、extern がどうしても必要な場面に遭遇したのです
まあそういうわけで一度にいっぺんに賢くなるのは私には難しいことのようです
600デフォルトの名無しさん (ワッチョイ b7bb-qDHA)
2021/09/18(土) 20:41:39.21ID:RjbxwxKL0 >>598
たとえば
int a;
printf("%d\n", a);
なんですが、この場合のaは定義されているということですか?
代入式があるのが定義だと思ってました
宣言と定義の文脈はコードによって変わるということなんですかね
たとえば
int a;
printf("%d\n", a);
なんですが、この場合のaは定義されているということですか?
代入式があるのが定義だと思ってました
宣言と定義の文脈はコードによって変わるということなんですかね
601デフォルトの名無しさん (テテンテンテン MM8f-vJdV)
2021/09/18(土) 21:25:06.90ID:JTl7f6jwM 簡単に言えば宣言はその名前をコンパイラに伝えるもの
定義はその実体を確保するためのもの
>>592の例は両方共に宣言であり定義でもある
C言語では定義のみすると言うのはできないと思う
宣言のみはexternとか前方参照のためのstruct xxx;とかで使われる
定義はその実体を確保するためのもの
>>592の例は両方共に宣言であり定義でもある
C言語では定義のみすると言うのはできないと思う
宣言のみはexternとか前方参照のためのstruct xxx;とかで使われる
602デフォルトの名無しさん (ワッチョイ 97da-jOHa)
2021/09/18(土) 21:44:48.00ID:YluaRA/40 >>596
屁理屈こねんなやボケが
屁理屈こねんなやボケが
603デフォルトの名無しさん (ワッチョイ bfe9-IhC7)
2021/09/18(土) 22:06:39.93ID:jTQBMDyZ0604デフォルトの名無しさん (ワッチョイ b7bb-qDHA)
2021/09/18(土) 22:22:54.90ID:RjbxwxKL0605デフォルトの名無しさん (アウアウウー Sa5b-XGHE)
2021/09/18(土) 22:32:01.92ID:vqHZXwmna606デフォルトの名無しさん (テテンテンテン MM8f-vJdV)
2021/09/18(土) 22:36:06.58ID:/Dm63BCIM607デフォルトの名無しさん (ワッチョイ b7bb-qDHA)
2021/09/18(土) 22:53:55.61ID:RjbxwxKL0608デフォルトの名無しさん (アウアウウー Sa5b-XGHE)
2021/09/18(土) 23:32:59.41ID:vqHZXwmna aは定義されている、でよいと思います
ちなみに、自分は宣言とか定義とか「言葉」は意識しないです
ただ、ここにオブジェクトが実在するのか、他のどこかにあるオブジェクトを使うのかは明確に意識しなければなりません
int main(void) {
int a;
extern int x:
return 0;
}
ここで xは、関数外のどこかで定義された int型のオブジェクを参照します、という宣言
ちなみに、自分は宣言とか定義とか「言葉」は意識しないです
ただ、ここにオブジェクトが実在するのか、他のどこかにあるオブジェクトを使うのかは明確に意識しなければなりません
int main(void) {
int a;
extern int x:
return 0;
}
ここで xは、関数外のどこかで定義された int型のオブジェクを参照します、という宣言
609ハノン ◆QZaw55cn4c (ワッチョイ 9f47-o3tO)
2021/09/18(土) 23:37:35.98ID:/DXMasS60 >>607
そうですね
それに、そのコードは関数 int main(void) も宣言かつ定義していますね
関数の場合は、関数の中身が書いておれば宣言かつ定義、関数の呼び出され方だけしか書いていなければ宣言、とすぐにわかるので、キーワード extern は省かれる傾向にありますね
詳しい人に解説いただき私も感謝します
そうですね
それに、そのコードは関数 int main(void) も宣言かつ定義していますね
関数の場合は、関数の中身が書いておれば宣言かつ定義、関数の呼び出され方だけしか書いていなければ宣言、とすぐにわかるので、キーワード extern は省かれる傾向にありますね
詳しい人に解説いただき私も感謝します
610デフォルトの名無しさん (ワッチョイ 1763-qDHA)
2021/09/18(土) 23:38:56.69ID:bsPUoCV00 質問
externを関数内で宣言したとき、有効範囲は次のどれになりますか?
1.宣言した関数のスコープ内で有効
2.宣言したソースの後続行で有効
3.宣言を書いたソースの全体で有効
externを関数内で宣言したとき、有効範囲は次のどれになりますか?
1.宣言した関数のスコープ内で有効
2.宣言したソースの後続行で有効
3.宣言を書いたソースの全体で有効
611デフォルトの名無しさん (アウアウウー Sa5b-XGHE)
2021/09/18(土) 23:43:44.98ID:vqHZXwmna A.1
612デフォルトの名無しさん (アウアウウー Sa5b-XGHE)
2021/09/18(土) 23:45:59.85ID:vqHZXwmna 通常の変数と同様に、ブロック {} で括られるかと
613はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f3e-IhC7)
2021/09/19(日) 00:58:34.79ID:aMl1OG4b0 JISX3010:2003 の 6.7 から抜粋
> 宣言は、幾つかの識別子の解釈及び属性を指定する。
> 識別子の定義 (definition) とは、宣言のうち次のものをいう。
> ・オブジェクトに対しては、そのオブジェクトの記憶域を確保する宣言
> ・関数に対しては、関数本体を含む宣言
> ・列挙定数又は型定義名に対しては、その識別子の(唯一の)宣言
> 宣言は、幾つかの識別子の解釈及び属性を指定する。
> 識別子の定義 (definition) とは、宣言のうち次のものをいう。
> ・オブジェクトに対しては、そのオブジェクトの記憶域を確保する宣言
> ・関数に対しては、関数本体を含む宣言
> ・列挙定数又は型定義名に対しては、その識別子の(唯一の)宣言
614デフォルトの名無しさん (アウアウウー Sa5b-hED7)
2021/09/19(日) 12:56:33.95ID:/yxUr6Cya 関数の中とか{}ブロックの中とかで
#include とか #define 出来れば良いのにと思うことはある
(いや出来ることは出来るけど)
#include とか #define 出来れば良いのにと思うことはある
(いや出来ることは出来るけど)
615デフォルトの名無しさん (ワッチョイ f737-tt/w)
2021/09/19(日) 14:00:14.49ID:k97hf5Wx0 >614
その辺は古い仕様の限界だから……
その辺は古い仕様の限界だから……
616デフォルトの名無しさん (ワッチョイ 97da-jOHa)
2021/09/19(日) 14:08:34.86ID:dcXPbcRy0617デフォルトの名無しさん (ガラプー KK4f-cmG/)
2021/09/19(日) 15:49:36.39ID:1EdICjsOK618デフォルトの名無しさん (アウアウウー Sa5b-XGHE)
2021/09/19(日) 16:19:30.05ID:gqeRua+ma // foo.c
#include <stdio.h>
int f(void)
{
extern int glob:
return glob + 1;
}
int main()
{
printf("%d\n", f()); // 124(次行がないとき)
printf("%d\n", glob); // エラー
return 0:
}
// bar.c
int glob = 123;
でした
勘違いだったらごめんなさい
#include <stdio.h>
int f(void)
{
extern int glob:
return glob + 1;
}
int main()
{
printf("%d\n", f()); // 124(次行がないとき)
printf("%d\n", glob); // エラー
return 0:
}
// bar.c
int glob = 123;
でした
勘違いだったらごめんなさい
619デフォルトの名無しさん (アウアウウー Sa5b-XGHE)
2021/09/19(日) 16:24:53.88ID:gqeRua+ma int f(void)
{
__{
____extern int glob:
__}
__return glob + 1; // glob undeclared
}
{
__{
____extern int glob:
__}
__return glob + 1; // glob undeclared
}
620デフォルトの名無しさん (ワッチョイ d721-cDqY)
2021/09/19(日) 18:52:30.28ID:AMdE/BCe0 extern の変数をスコープ内に書きたい場面ってあまり思いつかない。
ヘッダファイルに書くのサボりたい時くらいしかそんな書き方しないな〜
ヘッダファイルに書くのサボりたい時くらいしかそんな書き方しないな〜
621デフォルトの名無しさん (アウアウウー Sa5b-XGHE)
2021/09/19(日) 19:48:44.86ID:gqeRua+ma622デフォルトの名無しさん (テテンテンテン MM8f-vJdV)
2021/09/19(日) 19:52:36.17ID:tWZRSjBtM >>620
俺はそのスコープでしか使わないなら普通にスコープ内に書くけど?
俺はそのスコープでしか使わないなら普通にスコープ内に書くけど?
623621 (アウアウウー Sa5b-XGHE)
2021/09/19(日) 20:02:10.63ID:gqeRua+ma624デフォルトの名無しさん (ワッチョイ 9f63-qDHA)
2021/09/19(日) 20:34:55.88ID:qdWHvjUr0 ひょっとして、#define も関数内で記述すると
そのスコープ内で有効になるのかな?
そのスコープ内で有効になるのかな?
625デフォルトの名無しさん (ワッチョイ d721-cDqY)
2021/09/19(日) 20:40:54.81ID:AMdE/BCe0 >>624
流石にそれはない。
流石にそれはない。
626621 (アウアウウー Sa5b-XGHE)
2021/09/19(日) 20:42:46.70ID:gqeRua+ma #includeとか #defineとか、プリプロセッサが処理する時点では、スコープとか、C言語の文法すら関知しないかも
トークンの
識別くらいで
トークンの
識別くらいで
627デフォルトの名無しさん (ワッチョイ d721-uvbS)
2021/09/19(日) 21:23:46.86ID:AMdE/BCe0 こんな #define 見たくないけど・・・
---------------------------------------
void func() {
#define A 100
}
int main() {
int i = A;
}
---------------------------------------
gcc -E prepro.c
---------------------------------------
# 1 "prepro.c"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 384 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "prepro.c" 2
void func() {
}
int main() {
int i = 100;
}
---------------------------------------
---------------------------------------
void func() {
#define A 100
}
int main() {
int i = A;
}
---------------------------------------
gcc -E prepro.c
---------------------------------------
# 1 "prepro.c"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 384 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "prepro.c" 2
void func() {
}
int main() {
int i = 100;
}
---------------------------------------
628デフォルトの名無しさん (ワッチョイ 775f-hED7)
2021/09/20(月) 10:14:32.45ID:rmuhdvcF0 Cにnamespaceが無いのが逝けない娘
629デフォルトの名無しさん (ワッチョイ 97da-jOHa)
2021/09/20(月) 15:37:40.46ID:ql5RJosy0 いらねぇだろネームスペースなんか
630デフォルトの名無しさん (ワッチョイ 1745-I/Yj)
2021/09/20(月) 16:28:35.49ID:WSYscKBB0 namespaceが欲しいのにC++を使わないのが逝けない娘
太古の昔、Cにクラスが無いのが逝けない娘だと思った人とは行動力が違いすぎるな
太古の昔、Cにクラスが無いのが逝けない娘だと思った人とは行動力が違いすぎるな
631デフォルトの名無しさん (ワッチョイ 9fad-qDHA)
2021/09/20(月) 17:39:30.67ID:WNFThOB/0 CはCのままで良い。他の言語で実現出来ているんだし。その機能を使いたいならそちらの言語を使えば良い。
それでは何かが足りないというのなら新言語作れば良い。
自分では作る技術力がなくても仕様を考えてネットで公開しておけばやがて暇と技術力のある誰かが作ってくれるだろう。
それでは何かが足りないというのなら新言語作れば良い。
自分では作る技術力がなくても仕様を考えてネットで公開しておけばやがて暇と技術力のある誰かが作ってくれるだろう。
632デフォルトの名無しさん (ワッチョイ f737-tt/w)
2021/09/20(月) 18:06:11.00ID:xT0MCUkn0 >622
型を間違えてもエラーにならないから全くお勧めしない
型を間違えてもエラーにならないから全くお勧めしない
633デフォルトの名無しさん (テテンテンテン MM8f-vJdV)
2021/09/20(月) 19:39:36.63ID:QS4OJe2QM634デフォルトの名無しさん (ワッチョイ ffbb-liuG)
2021/09/20(月) 19:50:34.34ID:vvw4JppL0 ミスする可能性が上がるから各コードでexternせずに必要ならヘッダに書いてもらえってことじゃね?
そもそもexternなんてextern "C"以外滅多に使わないけどな
そもそもexternなんてextern "C"以外滅多に使わないけどな
635デフォルトの名無しさん (ワッチョイ 1fbd-SDcz)
2021/09/20(月) 19:57:31.48ID:LO5PkHvF0 >>633
前スレより
975 デフォルトの名無しさん (ワッチョイ b363-19dE) sage 2021/06/21(月) 23:06:35.04 ID:jHz8GYW10
// b.c
int b[] = {123, 456};
// a.c
#include <stdio.h>
int a[] = {123, 456};
int main()
{
extern int *b;
printf("val b\n");
printf("%d\n", *(b + 1));
// printf("val a\n");
// printf("%d\n", *(a + 1));
return 0;
}
こういう分割ソースをコンパイル、リンクして実行すると、何も表示無しで終了する
デバッガー使って実行してみると、SEGVになってる
前スレより
975 デフォルトの名無しさん (ワッチョイ b363-19dE) sage 2021/06/21(月) 23:06:35.04 ID:jHz8GYW10
// b.c
int b[] = {123, 456};
// a.c
#include <stdio.h>
int a[] = {123, 456};
int main()
{
extern int *b;
printf("val b\n");
printf("%d\n", *(b + 1));
// printf("val a\n");
// printf("%d\n", *(a + 1));
return 0;
}
こういう分割ソースをコンパイル、リンクして実行すると、何も表示無しで終了する
デバッガー使って実行してみると、SEGVになってる
636ハノン ◆QZaw55cn4c (ワッチョイ 9f47-o3tO)
2021/09/20(月) 20:10:17.55ID:+hQanlE40 >>634
>ミスする可能性が上がるから各コードでexternせずに必要ならヘッダに書いてもらえってことじゃね?
そうそう、extern による宣言と定義とが食い違うとエラーがでますから、そのためのヘッダの分離ということですね
>そもそもexternなんてextern "C"以外滅多に使わないけどな
関数の宣言は extern 省略可能ですし、ライブラリ側で共用のメモリを確保することは滅多にないです私は
>ミスする可能性が上がるから各コードでexternせずに必要ならヘッダに書いてもらえってことじゃね?
そうそう、extern による宣言と定義とが食い違うとエラーがでますから、そのためのヘッダの分離ということですね
>そもそもexternなんてextern "C"以外滅多に使わないけどな
関数の宣言は extern 省略可能ですし、ライブラリ側で共用のメモリを確保することは滅多にないです私は
637621 (アウアウウー Sa5b-XGHE)
2021/09/20(月) 23:40:17.11ID:y5y6BCAna >>635
これは関数のスコープに書かなくても(ファイルスコープでも)同じじゃない?
これは関数のスコープに書かなくても(ファイルスコープでも)同じじゃない?
638621 (アウアウウー Sa5b-XGHE)
2021/09/21(火) 00:23:33.65ID:7n0ZYlgRa639デフォルトの名無しさん (ワッチョイ 1fbd-SDcz)
2021/09/21(火) 00:26:56.39ID:aEoN/PBD0 >>637
同じですね
そもそもexternを明示的に書く必要がある状況って、
あるソースで定義されているグローバル変数を他のソースに公開して使えるようにするために、
ヘッダにextern int a;のように書いておいて、他のソースにはそれを#includeさせる
(すると他のソースでは余計な領域が確保されない)
のパターンが基本だと思っています
だからそもそもブロックスコープでexternするのってなんで? 覗き魔? って思ってしまう
同じですね
そもそもexternを明示的に書く必要がある状況って、
あるソースで定義されているグローバル変数を他のソースに公開して使えるようにするために、
ヘッダにextern int a;のように書いておいて、他のソースにはそれを#includeさせる
(すると他のソースでは余計な領域が確保されない)
のパターンが基本だと思っています
だからそもそもブロックスコープでexternするのってなんで? 覗き魔? って思ってしまう
640デフォルトの名無しさん (ワッチョイ 1745-I/Yj)
2021/09/21(火) 03:22:03.74ID:rkkhSUpi0 ブロックスコープ内でexternはK&R C時代の名残で今は完全に無意味
641デフォルトの名無しさん (ワッチョイ 1745-I/Yj)
2021/09/21(火) 03:23:48.34ID:rkkhSUpi0 関数原型でのexternは単項プラスみたいなもん
staticじゃないよと強調する反対語
staticじゃないよと強調する反対語
642ハノン ◆QZaw55cn4c (ワッチョイ 9f47-o3tO)
2021/09/21(火) 03:36:19.96ID:9i80hc760 >>639
>ヘッダにextern int a;のように書いておいて、他のソースにはそれを#includeさせる
「他のソース」でないソースも、そのヘッダを #include しておけばダチェックにもなるし
>ヘッダにextern int a;のように書いておいて、他のソースにはそれを#includeさせる
「他のソース」でないソースも、そのヘッダを #include しておけばダチェックにもなるし
643デフォルトの名無しさん (ワッチョイ f737-tt/w)
2021/09/21(火) 19:14:32.01ID:8eqDWQ5I0644621 (アウアウウー Sa5b-XGHE)
2021/09/21(火) 22:41:16.78ID:rS8f3YVDa // b.c
char a[] = { 0, 1 };
// a.c
int main()
{
__extern int *a;
__printf("%d\n", a[1]):
__return 0;
}
不勉強でした
上のコードは警告もなしにコンパイルが通りますね
実行すると segmentation fault ですが
リンク時はデータ型はチェックされず、名前だけで参照を解決してるのですかね……
古い仕様で、今さら変更はできないんでしょうね、チェックができたとしても
char a[] = { 0, 1 };
// a.c
int main()
{
__extern int *a;
__printf("%d\n", a[1]):
__return 0;
}
不勉強でした
上のコードは警告もなしにコンパイルが通りますね
実行すると segmentation fault ですが
リンク時はデータ型はチェックされず、名前だけで参照を解決してるのですかね……
古い仕様で、今さら変更はできないんでしょうね、チェックができたとしても
645デフォルトの名無しさん (ワッチョイ 1745-I/Yj)
2021/09/21(火) 22:46:25.12ID:rkkhSUpi0 型システムを持たずラベルの綴りのみを手がかりに参照解決するリンカを操るツールの1つだからねCは
リンカにあれもこれもと機能を持たせるのはメインフレームのファイルシステムにあれもこれも持たせようとしたVSAMの再来だ
インフラ的なものにアプリの都合を無闇に押しつけるべきではないことを歴史から学ぶべきだぞ
リンカにあれもこれもと機能を持たせるのはメインフレームのファイルシステムにあれもこれも持たせようとしたVSAMの再来だ
インフラ的なものにアプリの都合を無闇に押しつけるべきではないことを歴史から学ぶべきだぞ
646はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f3e-IhC7)
2021/09/21(火) 23:19:06.05ID:tYtQqya30 C には「プロトタイプ (関数原型) を持たない関数宣言」があって、
関数の型が曖昧なまま関数が存在することだけを宣言できる。
プロトタイプ (プロトタイプ宣言) がある場合にはその関数を呼出すにあたって実引数と仮引数の間では代入と同じ規則
で (可能な場合には) 暗黙の型変換が適用されるが、プロトタイプがない場合には
既定の実引数拡張 (可変長引数に実引数を渡すときと同じ規則) が適用されて実引数と仮引数の辻褄が
あってないときは未定義という扱いになる。
更には C89 は暗黙の関数宣言という規則があって (C99 では廃止されている)
関数を呼出そうとした時点で関数が宣言されていない場合には実引数の型から一定の規則に基づいて
関数の型を推測し、関数が宣言されたかのように振る舞うことになっている。
なので関数宣言が存在しなくても二度以上の関数呼出しの型に矛盾があれば検出はされる。
もちろん関数定義の実体と辻褄があってなかったらそれは未定義だけど。
このあたりのクソみたいな規則は「C++ では採用しなかった仕様」として D&E でちょっと触れられてる。
関数の型が曖昧なまま関数が存在することだけを宣言できる。
プロトタイプ (プロトタイプ宣言) がある場合にはその関数を呼出すにあたって実引数と仮引数の間では代入と同じ規則
で (可能な場合には) 暗黙の型変換が適用されるが、プロトタイプがない場合には
既定の実引数拡張 (可変長引数に実引数を渡すときと同じ規則) が適用されて実引数と仮引数の辻褄が
あってないときは未定義という扱いになる。
更には C89 は暗黙の関数宣言という規則があって (C99 では廃止されている)
関数を呼出そうとした時点で関数が宣言されていない場合には実引数の型から一定の規則に基づいて
関数の型を推測し、関数が宣言されたかのように振る舞うことになっている。
なので関数宣言が存在しなくても二度以上の関数呼出しの型に矛盾があれば検出はされる。
もちろん関数定義の実体と辻褄があってなかったらそれは未定義だけど。
このあたりのクソみたいな規則は「C++ では採用しなかった仕様」として D&E でちょっと触れられてる。
647デフォルトの名無しさん (ワッチョイ 1745-I/Yj)
2021/09/21(火) 23:25:07.21ID:rkkhSUpi0 > 実引数の型から一定の規則に基づいて関数の型を推測し
func(1);
↓
int func();
func("string");
↓
int func();
こうなるだけで推測なんて気の利いたことはしないよ
func(1);
↓
int func();
func("string");
↓
int func();
こうなるだけで推測なんて気の利いたことはしないよ
648621 (アウアウウー Sa5b-XGHE)
2021/09/21(火) 23:27:49.11ID:rS8f3YVDa プロトタイプ宣言は C++からの逆輸入だからな….
その昔の Cったら
その昔の Cったら
649はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f3e-IhC7)
2021/09/21(火) 23:34:12.47ID:tYtQqya30 >>647
あ、ほんまやな。
仕様上のルールは「extern int func(); が書かれていたものとみなす」というだけで、
具体的なチェックをどこまでするかは処理系次第 (たぶんあまり真面目にやってなかったと思うけど) だな。
あ、ほんまやな。
仕様上のルールは「extern int func(); が書かれていたものとみなす」というだけで、
具体的なチェックをどこまでするかは処理系次第 (たぶんあまり真面目にやってなかったと思うけど) だな。
650デフォルトの名無しさん (ワッチョイ ff46-bwRU)
2021/09/22(水) 05:28:22.60ID:iWoXuoBc0651デフォルトの名無しさん (ワッチョイ 9fad-QxrA)
2021/09/22(水) 14:25:23.40ID:Te29kBsr0 どうだったっけなあ?
652はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f3e-IhC7)
2021/09/22(水) 14:32:16.52ID:1hd+XsHu0 The C programming language (いわゆる K&R 第一版) の
APPENDIX A 8.3 Declarators を見る限りでは
引数リストが空の形式しかないように見える。
関数であるということは宣言できるが型チェックはガバガバっぽい。
D&E の 2.6 静的タイプチェック の項では
> C with Classes のシンタクスとルールはその後 ANSI C の規格にも採用されたが
> C with Classes の最初の実装の時点ですでに完全な形をしていた。
という一文があるので C の型チェックは C++ (の前身である C with Classes)
からの影響ということで間違いないと思う。
APPENDIX A 8.3 Declarators を見る限りでは
引数リストが空の形式しかないように見える。
関数であるということは宣言できるが型チェックはガバガバっぽい。
D&E の 2.6 静的タイプチェック の項では
> C with Classes のシンタクスとルールはその後 ANSI C の規格にも採用されたが
> C with Classes の最初の実装の時点ですでに完全な形をしていた。
という一文があるので C の型チェックは C++ (の前身である C with Classes)
からの影響ということで間違いないと思う。
653デフォルトの名無しさん (エムゾネ FFbf-hED7)
2021/09/22(水) 14:42:52.46ID:KzVGjGnLF 初耳だわ
はちみつは何歳?
はちみつは何歳?
654デフォルトの名無しさん (ワッチョイ bfe7-I/Yj)
2021/09/22(水) 15:34:35.81ID:p7uTNZa70 47歳くらいだと思う
655ハノン ◆QZaw55cn4c (ワッチョイ 9f47-o3tO)
2021/09/22(水) 17:51:09.10ID:z5uxQYPx0 >>644
そのコード、仮に a.c で
extern int *a;
ではなくて
extern char *a;
であってもセグフォが出ると思います、試してませんけど‥‥
なにか二重に勘違いしてませんか?それとも私が二重に勘違いしているのか?
そのコード、仮に a.c で
extern int *a;
ではなくて
extern char *a;
であってもセグフォが出ると思います、試してませんけど‥‥
なにか二重に勘違いしてませんか?それとも私が二重に勘違いしているのか?
656はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f3e-IhC7)
2021/09/22(水) 18:02:31.76ID:1hd+XsHu0 >>655
配列として定義したものをポインタとして宣言するのは間違いだな。
配列として定義したものをポインタとして宣言するのは間違いだな。
657はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f3e-IhC7)
2021/09/22(水) 18:04:06.47ID:1hd+XsHu0 FAQ に書いてあったわ。
http://www.c-faq.com/aryptr/aryptr1.html
http://www.c-faq.com/aryptr/aryptr1.html
658デフォルトの名無しさん (ブーイモ MM8f-liuG)
2021/09/22(水) 18:35:41.60ID:Il91zgnyM 47歳
研究部門に所属
趣味は手芸
研究部門に所属
趣味は手芸
659621 (アウアウウー Sa5b-XGHE)
2021/09/22(水) 19:31:52.27ID:u8cZI69ma >>655
ありがとうございます
はい、char と char でもダメですね
データ型がことなれば、リンケージできないのではと思い実験してみました
定義側でメモリに配置されているのは値で、extern宣言で参照する側が期待するのはポインタが配置されていることなのでうまくいきませんね(違うかな)
ありがとうございます
はい、char と char でもダメですね
データ型がことなれば、リンケージできないのではと思い実験してみました
定義側でメモリに配置されているのは値で、extern宣言で参照する側が期待するのはポインタが配置されていることなのでうまくいきませんね(違うかな)
661デフォルトの名無しさん (ワッチョイ 9f69-5MQP)
2021/09/23(木) 08:15:49.41ID:0q4HMCJB0 >>638
変数に対しても型情報付加したマングリングするぐらいかねぇ?
変数に対しても型情報付加したマングリングするぐらいかねぇ?
663ハノン ◆QZaw55cn4c (ワッチョイ 9f47-o3tO)
2021/09/23(木) 10:02:57.46ID:HaJtCNmP0664ハノン ◆QZaw55cn4c (ワッチョイ 9f47-o3tO)
2021/09/23(木) 13:38:03.01ID:HaJtCNmP0 >>658
ほとんどプロの人‥‥完璧なアマは私くらいですか
ほとんどプロの人‥‥完璧なアマは私くらいですか
665はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f3e-IhC7)
2021/09/23(木) 16:56:05.29ID:pKS1sRJG0 COFF フォーマットを見てるんだが、
関数が返す値の型を格納するところは有っても引数の型については無いみたいだ。
http://delorie.com/djgpp/doc/coff/symtab.html
ヘッダファイルで型情報をやりとりする前提なんだな。
ELF だとたぶん詳細な型も入れられそうな雰囲気があるんだけど複雑でようわからん……。
関数が返す値の型を格納するところは有っても引数の型については無いみたいだ。
http://delorie.com/djgpp/doc/coff/symtab.html
ヘッダファイルで型情報をやりとりする前提なんだな。
ELF だとたぶん詳細な型も入れられそうな雰囲気があるんだけど複雑でようわからん……。
666デフォルトの名無しさん (ワッチョイ d31b-QjBH)
2021/09/24(金) 19:26:12.39ID:bEXGgTP60 もしかしてc言語って新たにブロック文つくったら構造体の二重定義って可能になるんですか?
試しに
{
struct a{};
{
struct a{};
}
}
ってcompiler explorerで打ち込んだらcompile通りました。
こんなの初耳です。
ちなみに同じブロック文で二重定義したらcompile errorが起こりました。
試しに
{
struct a{};
{
struct a{};
}
}
ってcompiler explorerで打ち込んだらcompile通りました。
こんなの初耳です。
ちなみに同じブロック文で二重定義したらcompile errorが起こりました。
667ハノン ◆QZaw55cn4c (ワッチョイ b247-+9yW)
2021/09/24(金) 20:31:56.55ID:B0dAhYuN0 >>659
今回の例でもわかるように、無節操にバンバン extern 宣言を複数の C ソースファイルのあちこちに混入させるのは非常にマズイので、
普通はサブモジュールの extern 宣言だけを別のファイルにまとめておいて、そのサブモジュールを使用するソースで #include するのが標準的です
この extern 宣言だけをまとめたファイルを特にヘッダファイルと呼びます
https://ideone.com/rdbae2
実体を定義したサブモジュールもヘッダを #include するようにしておけば、ヘッダの誤りも検出することができます
なにかこういう基本文法を終えた後に位置するべき基本的な作法集をまとめたアドバンス教科書、みたいなものはないものでしょうか?
今回の例でもわかるように、無節操にバンバン extern 宣言を複数の C ソースファイルのあちこちに混入させるのは非常にマズイので、
普通はサブモジュールの extern 宣言だけを別のファイルにまとめておいて、そのサブモジュールを使用するソースで #include するのが標準的です
この extern 宣言だけをまとめたファイルを特にヘッダファイルと呼びます
https://ideone.com/rdbae2
実体を定義したサブモジュールもヘッダを #include するようにしておけば、ヘッダの誤りも検出することができます
なにかこういう基本文法を終えた後に位置するべき基本的な作法集をまとめたアドバンス教科書、みたいなものはないものでしょうか?
668621 (アウアウウー Sa43-LUZf)
2021/09/24(金) 20:48:31.47ID:PKobCCv1a669ハノン ◆QZaw55cn4c (ワッチョイ b247-+9yW)
2021/09/24(金) 20:54:31.27ID:B0dAhYuN0670デフォルトの名無しさん (ワッチョイ d31b-QjBH)
2021/09/24(金) 22:23:44.15ID:bEXGgTP60671デフォルトの名無しさん (ワッチョイ d31b-QjBH)
2021/09/24(金) 22:25:13.81ID:bEXGgTP60672ハノン ◆QZaw55cn4c (ワッチョイ b247-+9yW)
2021/09/25(土) 06:49:29.05ID:YrZFQiAF0673デフォルトの名無しさん (ワッチョイ 1ee9-2Lmd)
2021/09/25(土) 11:02:06.77ID:dAtBdpVF0 >>670
> 同じ変数名が複数ソース上にあるとき現在の位置から見て最も内側のブロックで宣言されたものの方で解決するという当たり前の規則だと認識してます
その「当たり前」の規則は変数名に限ったものじゃくて構造体タグ名についても同じ規則が適用される。
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2596.pdf
6.2.1 Scopes of identifiers
> A label name is the only kind of identifier that has function scope. ...
>
> Every other identifier has scope determined by the placement of its declaration (in a declarator or
> type specifier). ...
> ...
> ... the scope of one entity (the inner scope) will end strictly before the scope of the other
> entity (the outer scope). Within the inner scope, the identifier designates the entity declared in the
> inner scope; the entity declared in the outer scope is hidden (and not visible) within the inner scope.
ただし変数名とタグ名とでは名前空間 (name space) が異なる。
> 同じ変数名が複数ソース上にあるとき現在の位置から見て最も内側のブロックで宣言されたものの方で解決するという当たり前の規則だと認識してます
その「当たり前」の規則は変数名に限ったものじゃくて構造体タグ名についても同じ規則が適用される。
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2596.pdf
6.2.1 Scopes of identifiers
> A label name is the only kind of identifier that has function scope. ...
>
> Every other identifier has scope determined by the placement of its declaration (in a declarator or
> type specifier). ...
> ...
> ... the scope of one entity (the inner scope) will end strictly before the scope of the other
> entity (the outer scope). Within the inner scope, the identifier designates the entity declared in the
> inner scope; the entity declared in the outer scope is hidden (and not visible) within the inner scope.
ただし変数名とタグ名とでは名前空間 (name space) が異なる。
674デフォルトの名無しさん (エムゾネ FF32-kEnG)
2021/09/25(土) 11:05:50.70ID:lBxoEpbFF {
int a;
{
int a;
}
}
とやってることは同じ
int a;
{
int a;
}
}
とやってることは同じ
675デフォルトの名無しさん (ワッチョイ f2a4-X0+7)
2021/09/25(土) 16:07:19.71ID:Uwq7lnPV0 >>666
二重定義じゃなくて、入れ子構造の中での定義にすぎないからでは?
イメージとしては、コンパイラとしては、外側の構造体は
struct XX_a {}
内側の構造体は
struct X_a_a{}
みたいな感じで管理してコード展開してるだけ。
二重定義じゃなくて、入れ子構造の中での定義にすぎないからでは?
イメージとしては、コンパイラとしては、外側の構造体は
struct XX_a {}
内側の構造体は
struct X_a_a{}
みたいな感じで管理してコード展開してるだけ。
676デフォルトの名無しさん (ワッチョイ d31b-QjBH)
2021/09/25(土) 16:37:10.46ID:g8iabg1P0 >>673
出典出してくださってありがとうございます
declarator内かtype specifier内かどっちかで現れたかにも関わらず識別子には同じような規則が適用されるのですね
この知見を趣味のコンパイラづくりに役立てたいと思います
ありがとうございました
出典出してくださってありがとうございます
declarator内かtype specifier内かどっちかで現れたかにも関わらず識別子には同じような規則が適用されるのですね
この知見を趣味のコンパイラづくりに役立てたいと思います
ありがとうございました
677デフォルトの名無しさん (エムゾネ FF1f-jOtc)
2021/10/04(月) 14:36:02.21ID:ly3pkK+7F int a = -4 % 3; // -1
int b = -3 % 3; // 0
int c = -2 % 3; // -2
int d = -1 % 3; // -1
int e = (-4) % 3; // -1
int f = (-3) % 3; // 0
int g = (-2) % 3; // -2
int h = (-1) % 3; // -1
これは仕様ですか?環境依存ですか?
int b = -3 % 3; // 0
int c = -2 % 3; // -2
int d = -1 % 3; // -1
int e = (-4) % 3; // -1
int f = (-3) % 3; // 0
int g = (-2) % 3; // -2
int h = (-1) % 3; // -1
これは仕様ですか?環境依存ですか?
678デフォルトの名無しさん (ワッチョイ ff69-Uy5C)
2021/10/04(月) 14:53:49.95ID:DbNnxaRn0 C90は実装による
C99は被除数と同じ符号 ((ISO/IEC 9899:1999) の 6.5.5 見ろ)ってwiki に書いてあったけど
6節の (a/b) * b + a % b === a と
整数化に際しての丸めの方向から結果的にそう解釈すればいいってことなのかな
C99は被除数と同じ符号 ((ISO/IEC 9899:1999) の 6.5.5 見ろ)ってwiki に書いてあったけど
6節の (a/b) * b + a % b === a と
整数化に際しての丸めの方向から結果的にそう解釈すればいいってことなのかな
679デフォルトの名無しさん (ワッチョイ 3337-tRNm)
2021/10/06(水) 19:35:08.68ID:7g8s0ol20 まあ環境依存だと割と困ってたので
C99でIntelの実装にあわせただけなんですけどね
C99でIntelの実装にあわせただけなんですけどね
680はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 533e-M2B7)
2021/10/07(木) 15:44:53.27ID:UkaMQ5gY0681デフォルトの名無しさん (スップ Sdea-N/QG)
2021/10/12(火) 19:07:27.42ID:4loHRlApd 配列から数個おきに取得するとき、なにかアルゴリズムとかライブラリ関数みたいなものってありませんか?
↓みたいなコードです。nが大きく、物凄い時間掛かっていて...
for(i=0; i<n; i++) a[i] = b[i*3];
↓みたいなコードです。nが大きく、物凄い時間掛かっていて...
for(i=0; i<n; i++) a[i] = b[i*3];
682デフォルトの名無しさん (ワッチョイ 5ebb-dT87)
2021/10/12(火) 19:16:28.78ID:bbG44xQB0683デフォルトの名無しさん (ワッチョイ 4a63-JSxF)
2021/10/12(火) 19:22:19.41ID:xFkpIt2+0 >nが大きく、物凄い時間掛かっていて..
オンメモリーで扱えていなさそう
オンメモリーで扱えていなさそう
684デフォルトの名無しさん (ワッチョイ 0b10-YrVY)
2021/10/12(火) 20:33:05.08ID:1lOq7tfe0 a書とb読で互いにページ追い出されてスラッシングみたいになってんのかねえ
685デフォルトの名無しさん (ワッチョイ 0b02-QN1G)
2021/10/12(火) 20:59:19.20ID:UHyGo8Qe0 それ、3個おきという意味?
686デフォルトの名無しさん (ワッチョイ 4f2c-Mxyx)
2021/10/12(火) 21:57:57.62ID:TH86hbHp0 皆様ありがとうございます、Cだとなかなか難しそうですね...
データは数百MBくらいの画像で、mallocで確保した領域にあります。
RGBRGBRGB・・・からRだけを取り出す、みたいな処理で、
頻出しそうだし何かうまい方法あるんじゃないかと思ったんですが。
データは数百MBくらいの画像で、mallocで確保した領域にあります。
RGBRGBRGB・・・からRだけを取り出す、みたいな処理で、
頻出しそうだし何かうまい方法あるんじゃないかと思ったんですが。
687デフォルトの名無しさん (ワッチョイ 4a63-JSxF)
2021/10/13(水) 00:46:23.98ID:5Y743A290 >>686
ちょっと試してみた
a[] 100MB, b[] 300MB の配列確保して、
配列bを適当に初期化したあと
a[i] = b[i*3]; を実行してみた
それしかしていないが処理は1秒程度だった
64bit環境でメモリ16GB、i7 6700k skylake 4GHz
手持ちのコンパイラは Microsoft(R) 32-bit C/C++
Optimizing Compiler Version 16.00.40219.01 for 80x86
参考になるかな
ちょっと試してみた
a[] 100MB, b[] 300MB の配列確保して、
配列bを適当に初期化したあと
a[i] = b[i*3]; を実行してみた
それしかしていないが処理は1秒程度だった
64bit環境でメモリ16GB、i7 6700k skylake 4GHz
手持ちのコンパイラは Microsoft(R) 32-bit C/C++
Optimizing Compiler Version 16.00.40219.01 for 80x86
参考になるかな
688デフォルトの名無しさん (アウアウウー Sa2f-JXsI)
2021/10/13(水) 00:54:53.24ID:MLaNN2iaa 8ビット無駄になるけど、RGBを 32ビットの整数として、>> と & では?
689デフォルトの名無しさん (アウアウウー Sa2f-JXsI)
2021/10/13(水) 00:55:52.69ID:MLaNN2iaa バイト境界より速いかも
690デフォルトの名無しさん (ワッチョイ de46-i3Db)
2021/10/13(水) 01:22:15.55ID:l1MPihFP0 単純な方法でもいうほど遅くなるわけない
最速を目指すならSIMDでやれ
最速を目指すならSIMDでやれ
691デフォルトの名無しさん (ワッチョイ 4a63-JSxF)
2021/10/13(水) 02:10:45.46ID:5Y743A290 >>686 の説明文で触れてない重たい処理があるのかもしれん
692デフォルトの名無しさん (ワッチョイ 0fbd-N/QG)
2021/10/13(水) 12:24:48.28ID:89OLuObV0 ループ内で他の事をすると格段に遅くなったので(コンパイラの最適化の関係でしょうか?)
他の処理はすべて外に出して、書いた処理だけにしてる状況です。
ちょっとした実験に使いたいコードで、装置からの出力がだいたいGByte/sくらいなので、それに追い付く処理速度が理想なんですが...
並列化勉強しないと無理ですかね...
>>687
テストまでありがとうございます、こちらでもそれくらいのオーダーでした。
環境のせいではなさそうで安心しました。
他の処理はすべて外に出して、書いた処理だけにしてる状況です。
ちょっとした実験に使いたいコードで、装置からの出力がだいたいGByte/sくらいなので、それに追い付く処理速度が理想なんですが...
並列化勉強しないと無理ですかね...
>>687
テストまでありがとうございます、こちらでもそれくらいのオーダーでした。
環境のせいではなさそうで安心しました。
693デフォルトの名無しさん (ワッチョイ 2a69-Rsiz)
2021/10/13(水) 20:54:31.47ID:B1aurOR80 他の事したらキャッシュの効率落ちるわな
GByte/sってSATA3の速度超えてる
リアルタイムに加工するのはまだまだ無理なんじゃ
GByte/sってSATA3の速度超えてる
リアルタイムに加工するのはまだまだ無理なんじゃ
694デフォルトの名無しさん (スップ Sdea-18iY)
2021/10/14(木) 07:22:07.33ID:IjEclFwpd FPGAの出番だな
695デフォルトの名無しさん (ワントンキン MM56-e7Yh)
2021/10/14(木) 08:48:28.90ID:RLbfxynZM サイズが全然違って参考にならないかもしれないけど、以前テスト用の音声データのサンプリングレート落とす時に似たような事やった時は、a[i] b[j]でi++,j+=3みたいにやった方が早かった記憶。
696デフォルトの名無しさん (ワッチョイ 4f54-e7Yh)
2021/10/14(木) 16:42:28.33ID:1iGiane/0 >>692
コード見てないからなんとも言えないけど、本当にそのループだけで1秒ってのは時間かかりすぎじゃないかな。
このコードでgcc 最適化オプションなしでも0.3秒、-O2なら0.000002秒。
5年くらい前のCore i7 3.3GHz メモリ16GB
勘違いしてないか心配だけどコード。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int count = 100*1024*1024;
unsigned char *a = (unsigned char*)malloc(count * sizeof(unsigned char));
unsigned char *b = (unsigned char*)malloc(3 * count * sizeof(unsigned char));
clock_t t = clock();
for(int i = 0;i<count;i++){
a[i] = b[i*3];
}
t = clock() - t;
printf("%f\n",(double)t/CLOCKS_PER_SEC);
return 0;
}
コード見てないからなんとも言えないけど、本当にそのループだけで1秒ってのは時間かかりすぎじゃないかな。
このコードでgcc 最適化オプションなしでも0.3秒、-O2なら0.000002秒。
5年くらい前のCore i7 3.3GHz メモリ16GB
勘違いしてないか心配だけどコード。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int count = 100*1024*1024;
unsigned char *a = (unsigned char*)malloc(count * sizeof(unsigned char));
unsigned char *b = (unsigned char*)malloc(3 * count * sizeof(unsigned char));
clock_t t = clock();
for(int i = 0;i<count;i++){
a[i] = b[i*3];
}
t = clock() - t;
printf("%f\n",(double)t/CLOCKS_PER_SEC);
return 0;
}
697デフォルトの名無しさん (ワッチョイ 4a63-JSxF)
2021/10/14(木) 17:04:51.16ID:LTwSvEh70 >>687 だが、正確に測定したわけではない
>物凄い時間掛かっていて...
こういう質問だったので、そんなにかからないよという程度の返事
ものすごい時間が掛かると言う処理の内容が分からないとこれ以上は・・・
>物凄い時間掛かっていて...
こういう質問だったので、そんなにかからないよという程度の返事
ものすごい時間が掛かると言う処理の内容が分からないとこれ以上は・・・
698デフォルトの名無しさん (ガックシ 06b7-i3Db)
2021/10/14(木) 18:27:12.03ID:ciTZIm8Y6 それは最適化で消えただけだ
699デフォルトの名無しさん (ワッチョイ 4f54-e7Yh)
2021/10/14(木) 18:45:28.00ID:1iGiane/0 >>698
ですよねw -O2で0.18秒。
ですよねw -O2で0.18秒。
700デフォルトの名無しさん (ワッチョイ 0b10-YrVY)
2021/10/14(木) 19:22:12.25ID:B0s+ugv/0 もしやコードとかアルゴリズムの話じゃなくて、ミリ秒単位を長いと感じるかどうかってことなのか
701デフォルトの名無しさん (ブーイモ MM76-dT87)
2021/10/14(木) 20:39:33.49ID:60mfbtKJM Gbps出したいんだから当然そうでしょ
702デフォルトの名無しさん (アウアウウー Sa2f-JXsI)
2021/10/14(木) 22:30:42.31ID:oXMWcY6Na >>698
すでに書かれてたか
すでに書かれてたか
703デフォルトの名無しさん (ワッチョイ 2b21-AnEa)
2021/10/15(金) 00:03:27.81ID:XHojpqKh0 >>699
volatileつけてM1macで-O0で0.25秒、-O2で0.05秒位だな。普通に間に合いそう。
volatileつけてM1macで-O0で0.25秒、-O2で0.05秒位だな。普通に間に合いそう。
704デフォルトの名無しさん (アウアウウー Sacf-PkDM)
2021/10/15(金) 01:46:57.39ID:vumwfiEZa まったく自信がないのにチャチャ入れるようで申し訳ないのだけど、volatile を書く位置によっても結果がことなるかなと
おそらく a の * の左側に記述したのだと思うけど、動的に確保したメモリに対して有効なのかな…
誰か詳しい人いませんか?
おそらく a の * の左側に記述したのだと思うけど、動的に確保したメモリに対して有効なのかな…
誰か詳しい人いませんか?
705はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ef3e-an4T)
2021/10/15(金) 02:01:35.27ID:2ebxtk1m0 ・ volatile で修飾された変数 (メモリ領域) は初期系にとって未知の方法で更新されうるというプログラマから処理系に対するヒント
・ (未知の方法で更新されていても) 言語仕様で定めるところの抽象計算機の動作に厳密に従わなければならない
という規則なので volatile の修飾先が変数 a であってもポインタ a が指す先であってもこの場合は結果的に最適化は抑制されると思う。
・ (未知の方法で更新されていても) 言語仕様で定めるところの抽象計算機の動作に厳密に従わなければならない
という規則なので volatile の修飾先が変数 a であってもポインタ a が指す先であってもこの場合は結果的に最適化は抑制されると思う。
706デフォルトの名無しさん (アウアウウー Sacf-PkDM)
2021/10/15(金) 02:05:14.85ID:vumwfiEZa ありがとうございます
おっしゃる通りのような気がします
おっしゃる通りのような気がします
707デフォルトの名無しさん (ワントンキン MM7f-t/lv)
2021/10/15(金) 07:55:14.31ID:Svg6ZUXsM >>686
画像だけならopenCVにsplitというのがあってrgb に分割された配列を返してくれるんだけど、後のレスから察するにどんどん流し込まれて来るみたいだからそのまま使えるかわからないです。
そのsplitではインデックスの計算にOpenCLを使っていますが、もちろん他の処理にも使えるから、ソース読んでみて損は無いと思います。
画像だけならopenCVにsplitというのがあってrgb に分割された配列を返してくれるんだけど、後のレスから察するにどんどん流し込まれて来るみたいだからそのまま使えるかわからないです。
そのsplitではインデックスの計算にOpenCLを使っていますが、もちろん他の処理にも使えるから、ソース読んでみて損は無いと思います。
708デフォルトの名無しさん (ワッチョイ 9f69-tt7j)
2021/10/15(金) 08:19:09.19ID:WeKxZ2Hf0 工夫するにしてもマルチスレッドで分割するぐらいしか思い浮かばん
領域を n分割し nスレッドパラに走らせて複製
領域を n分割し nスレッドパラに走らせて複製
709デフォルトの名無しさん (ワッチョイ efe9-an4T)
2021/10/15(金) 09:12:03.80ID:+uEUiKf90 >>705-706
volatile の修飾先によってどこの最適化が抑制されるかが異なるので結果も異なるだろう。
volatile の修飾先によってどこの最適化が抑制されるかが異なるので結果も異なるだろう。
710デフォルトの名無しさん (ワッチョイ 6b01-Avck)
2021/10/15(金) 09:44:49.60ID:FX8yed990 すみません、マジの初心者で申し訳ないんですけど、
今サンプルコードを写したりしながら勉強しているんですが、
毎回#includeとかint main(void)とかって書かなくて済む方法
ってありますか?
visual studio 2019を使ってます。
良ければ誰か教えてください。
今サンプルコードを写したりしながら勉強しているんですが、
毎回#includeとかint main(void)とかって書かなくて済む方法
ってありますか?
visual studio 2019を使ってます。
良ければ誰か教えてください。
711デフォルトの名無しさん (ブーイモ MMbf-/RkZ)
2021/10/15(金) 09:58:43.65ID:5/Pqp5xeM 今後数千行、数万行のプログラムを書いていくことになるんで、int mainを自動入力させたいなんて気持ちはそのうち自動的に消えるので安心してください
712デフォルトの名無しさん (エムゾネ FFbf-mxW8)
2021/10/15(金) 10:13:57.88ID:Sjupi756F713デフォルトの名無しさん (ワッチョイ 6b01-Avck)
2021/10/15(金) 10:23:34.05ID:FX8yed990 >>712
ありがとうございます!
元々それらを使っていたのですが、今使っているサンプルコードが書かれている本が
コマンドプロンプトで実行することを想定して作られているのか、
よく途中でscanfを使って入力の読み取りをするのですが、オンライン上だとそれができないのです。
visual studio 2019で、テンプレを自分で作っておいてそれを
読み込むような技があれば教えてほしいです。
ありがとうございます!
元々それらを使っていたのですが、今使っているサンプルコードが書かれている本が
コマンドプロンプトで実行することを想定して作られているのか、
よく途中でscanfを使って入力の読み取りをするのですが、オンライン上だとそれができないのです。
visual studio 2019で、テンプレを自分で作っておいてそれを
読み込むような技があれば教えてほしいです。
714デフォルトの名無しさん (ワッチョイ 6b01-Avck)
2021/10/15(金) 10:53:31.08ID:FX8yed990 自力で調べて解決できました。
ありがとうございました。
ありがとうございました。
715デフォルトの名無しさん (ワッチョイ efe7-twAR)
2021/10/15(金) 12:55:13.67ID:/xIATXuH0 どういたしまして。 お役に立ててなによりです。
716デフォルトの名無しさん (ワッチョイ bb5f-akk3)
2021/10/16(土) 13:51:30.67ID:0CjYy/Ai0 C言語初学者です
for文を使って1からnまでの総和を求め、
さらに答えを例えばn==3なら
1+2+3=6と表示したいのですが、この表示の仕方がわかりません
ご教授お願い致します
for文を使って1からnまでの総和を求め、
さらに答えを例えばn==3なら
1+2+3=6と表示したいのですが、この表示の仕方がわかりません
ご教授お願い致します
717デフォルトの名無しさん (ワッチョイ 9fad-i7rg)
2021/10/16(土) 14:26:17.75ID:W6fuAKpz0 int i.n,x;
n=3;
x=0;
for(i=1;i<=n;i++){
x+=i;
printf("%d",i);
if(i!=n)printf("+");
}
printf("=%d¥r¥n",x);
n=3;
x=0;
for(i=1;i<=n;i++){
x+=i;
printf("%d",i);
if(i!=n)printf("+");
}
printf("=%d¥r¥n",x);
718デフォルトの名無しさん (ワッチョイ bb5f-akk3)
2021/10/16(土) 14:38:37.10ID:0CjYy/Ai0719デフォルトの名無しさん (ドコグロ MMcf-ORg4)
2021/10/16(土) 16:54:36.35ID:r+1DV466M >>717
最終行の ¥r って要るの?
最終行の ¥r って要るの?
720はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ef3e-ZO17)
2021/10/16(土) 17:51:52.16ID:E+4r+lYs0 >>719
基本的には不要。
・ 改行を表すものは (C の規格の範囲内では) 文字であるかのように扱う
・ テキストモードでの入出力ではホスト環境の都合に合わせて変換してよい
ということになっていて、改行を2バイトの符号で扱うホスト環境では \n という一文字を
その2バイトに変換するのは入出力関数の仕事。
ただし、標準出力をバイナリモードで開き直している場合だとか、
改行を1バイトの符号で表すホスト環境で2バイトの符号で表す環境のために出力したい
といった事情で改行を \r\n と書くことが無いとは言い切れない。
基本的には不要。
・ 改行を表すものは (C の規格の範囲内では) 文字であるかのように扱う
・ テキストモードでの入出力ではホスト環境の都合に合わせて変換してよい
ということになっていて、改行を2バイトの符号で扱うホスト環境では \n という一文字を
その2バイトに変換するのは入出力関数の仕事。
ただし、標準出力をバイナリモードで開き直している場合だとか、
改行を1バイトの符号で表すホスト環境で2バイトの符号で表す環境のために出力したい
といった事情で改行を \r\n と書くことが無いとは言い切れない。
721デフォルトの名無しさん (ワッチョイ bb5f-an4T)
2021/10/16(土) 22:25:40.97ID:0CjYy/Ai0 質問です
入力された文字列と文字数を表示するプログラムで
Enterキーのみが入力されるまでループして入力要求をするようにしたいのですが
1〜4文字の入力はループするのですが5文字入力するとループが終わってしまいます
どうなおせばいいでしょうか?
よろしくお願いします
/*************************************/
#include <stdio.h>
#include <string.h>
int main(void){
char str[] = "Hello";
fgets(str,sizeof(str),stdin);
while (str[0] !='\n'){
if (str[0] != '\n'){
printf("文字列%s\n",str);
printf("文字数%d\n",strlen(str));
fgets(str,sizeof(str),stdin);
}else{
break;
}
}
}
/*************************************/
入力された文字列と文字数を表示するプログラムで
Enterキーのみが入力されるまでループして入力要求をするようにしたいのですが
1〜4文字の入力はループするのですが5文字入力するとループが終わってしまいます
どうなおせばいいでしょうか?
よろしくお願いします
/*************************************/
#include <stdio.h>
#include <string.h>
int main(void){
char str[] = "Hello";
fgets(str,sizeof(str),stdin);
while (str[0] !='\n'){
if (str[0] != '\n'){
printf("文字列%s\n",str);
printf("文字数%d\n",strlen(str));
fgets(str,sizeof(str),stdin);
}else{
break;
}
}
}
/*************************************/
722デフォルトの名無しさん (ワッチョイ 9f63-ZO17)
2021/10/16(土) 22:28:04.06ID:j08Y/8ma0 よく出来たクイズですね
723デフォルトの名無しさん (ワッチョイ dfbd-lptH)
2021/10/16(土) 22:33:18.38ID:N8k1BZc20 AOJかなんかですか
724デフォルトの名無しさん (ワッチョイ 9f63-ZO17)
2021/10/16(土) 22:39:04.82ID:j08Y/8ma0 >>721
>1〜4文字の入力はループするのですが5文字入力するとループが終わってしまいます
設問として、何文字までの入力を受け付けるようにし、
それを越える文字数入力された場合はどうすると指示されてます?
>1〜4文字の入力はループするのですが5文字入力するとループが終わってしまいます
設問として、何文字までの入力を受け付けるようにし、
それを越える文字数入力された場合はどうすると指示されてます?
725デフォルトの名無しさん (ワッチョイ bb5f-akk3)
2021/10/16(土) 22:43:54.01ID:0CjYy/Ai0726デフォルトの名無しさん (ワッチョイ 9f63-ZO17)
2021/10/16(土) 22:50:23.50ID:j08Y/8ma0727デフォルトの名無しさん (ワッチョイ 0f61-an4T)
2021/10/16(土) 22:59:47.56ID:g8LyFw1O0 ・str配列を大きくする
・fgetsした結果のstrに改行文字が含まれてない場合は次の改行文字までstdinを読み飛ばす
等
・fgetsした結果のstrに改行文字が含まれてない場合は次の改行文字までstdinを読み飛ばす
等
728デフォルトの名無しさん (ワッチョイ bb5f-akk3)
2021/10/16(土) 23:00:22.34ID:0CjYy/Ai0 >>726
配列の箱増やしたらループするようになりました
ありがとうございます
あと1つ問題が残っていて文字列表示のあとに改行が無駄に1つ入ってしまいます
どうにかできないでしょうか?
現状
abcde
です
したい表示
abcdeです
配列の箱増やしたらループするようになりました
ありがとうございます
あと1つ問題が残っていて文字列表示のあとに改行が無駄に1つ入ってしまいます
どうにかできないでしょうか?
現状
abcde
です
したい表示
abcdeです
729デフォルトの名無しさん (ワッチョイ 1f36-ZO17)
2021/10/16(土) 23:00:54.46ID:iHqDmbcU0 >char str[] = "Hello";
とにかくここが気持ち悪い・・・
とにかくここが気持ち悪い・・・
730デフォルトの名無しさん (ワッチョイ 9f63-ZO17)
2021/10/16(土) 23:02:15.17ID:j08Y/8ma0731デフォルトの名無しさん (ワッチョイ 8bda-diS6)
2021/10/16(土) 23:02:51.64ID:hXa8blxW0 >>729
それは別に普通では?
それは別に普通では?
732デフォルトの名無しさん (ワッチョイ 9f63-ZO17)
2021/10/16(土) 23:08:52.93ID:j08Y/8ma0 >>728
切り詰め方はこんな感じで
if (str[strlen(str) - 1] == '\n')
str[strlen(str) - 1] = 0;
↑全角空白は適当に置き換えて
切り詰め方はこんな感じで
if (str[strlen(str) - 1] == '\n')
str[strlen(str) - 1] = 0;
↑全角空白は適当に置き換えて
733デフォルトの名無しさん (ワッチョイ 3b54-t/lv)
2021/10/16(土) 23:13:30.42ID:D7GMWgGE0 Hello!って!付ければいいよ。元気が足りない。
さらにこれfgetsの動作の理解を問う良問なんだから、無駄な改行なんぞ気にする余裕があるならfretsのドキュメント読んだ方がいいぞ。
さらにこれfgetsの動作の理解を問う良問なんだから、無駄な改行なんぞ気にする余裕があるならfretsのドキュメント読んだ方がいいぞ。
734デフォルトの名無しさん (ワッチョイ 3b54-t/lv)
2021/10/16(土) 23:14:42.85ID:D7GMWgGE0 >>733
偉そうに言ってスペルミスですね。fgets です
偉そうに言ってスペルミスですね。fgets です
735デフォルトの名無しさん (ワッチョイ bb5f-akk3)
2021/10/16(土) 23:26:16.40ID:0CjYy/Ai0736デフォルトの名無しさん (ワッチョイ bb5f-akk3)
2021/10/16(土) 23:27:52.08ID:0CjYy/Ai0 >>733
正しく書き直せた場合の実行結果に改行が入ってなかったので気になりました汗
正しく書き直せた場合の実行結果に改行が入ってなかったので気になりました汗
737デフォルトの名無しさん (ワッチョイ 1f36-ZO17)
2021/10/17(日) 00:24:13.17ID:IGrhvydt0 >スマートな初期化方法があれば教えて欲しいです
バッファサイズをちゃんと決めておくぐらいか?
ギリギリのサイズじゃなく余裕をもって(最大文字数+1(終端NULL)かつ32bitOSなら4バイト、64bitOSなら8バイト単位とか)。
定義後すぐにfgetsに渡すなら初期化も要らないと思うけど、念のためにやるなら
char str[8]="";
か
char str[8]={0};
かな。
バッファサイズをちゃんと決めておくぐらいか?
ギリギリのサイズじゃなく余裕をもって(最大文字数+1(終端NULL)かつ32bitOSなら4バイト、64bitOSなら8バイト単位とか)。
定義後すぐにfgetsに渡すなら初期化も要らないと思うけど、念のためにやるなら
char str[8]="";
か
char str[8]={0};
かな。
738デフォルトの名無しさん (ワッチョイ 9fad-ZO17)
2021/10/17(日) 06:25:57.65ID:atjZW8su0 >>731
そうやって初期化した str[] の内容を後で書き換えるのは普通ではないと思う。
可能だが気を付けてないとバグの元になりそうだしね。
似たようなのに char *p = "hoge"; があるが、これはコンパイラによっては文字列をリードオンリーになるようにコード作って *p = 'A'; なんて後でやるとOSがプログラム停止させたりする。
しかしCの文法としては間違いではないのでコンパイルエラーにならない。
そうやって初期化した str[] の内容を後で書き換えるのは普通ではないと思う。
可能だが気を付けてないとバグの元になりそうだしね。
似たようなのに char *p = "hoge"; があるが、これはコンパイラによっては文字列をリードオンリーになるようにコード作って *p = 'A'; なんて後でやるとOSがプログラム停止させたりする。
しかしCの文法としては間違いではないのでコンパイルエラーにならない。
739ハノン ◆QZaw55cn4c (NZ 0H3f-9L2Q)
2021/10/17(日) 07:57:57.94ID:iZHfLY3SH740デフォルトの名無しさん (ワッチョイ 8b01-twAR)
2021/10/17(日) 08:24:02.20ID:steRrM330 大文字→小文字への変換等の文字列長変わらない題材は
str[] で初期化しそうだわ
str[] で初期化しそうだわ
741デフォルトの名無しさん (ブーイモ MM7f-ExJR)
2021/10/17(日) 21:22:20.52ID:YXxqNhTYM 初期化のときだけ [] をキッチリポインタと区別するc の仕様がちょっと気持ち悪い
って感じかな
って感じかな
742デフォルトの名無しさん (ワッチョイ 9f63-ZO17)
2021/10/17(日) 21:57:04.28ID:8CkFjl5X0 [] は記憶域の確保
ポインタは記憶域の操作
ポインタは記憶域の操作
743デフォルトの名無しさん (スップ Sdbf-bX8k)
2021/10/18(月) 07:29:22.77ID:SjUVJOBmd externや二次元配列でも区別しとるじゃろうが
元々違うものを区別されたからちゅうてガタガタぬかすなや
同じと思いたがるのが間違っとるんじや
元々違うものを区別されたからちゅうてガタガタぬかすなや
同じと思いたがるのが間違っとるんじや
744デフォルトの名無しさん (エムゾネ FFbf-mxW8)
2021/10/18(月) 16:00:11.31ID:r9t2S6+pF char **hoge;
char *hage[];
好き嫌いが判れるな
char *hage[];
好き嫌いが判れるな
745デフォルトの名無しさん (ワッチョイ 9f63-ZO17)
2021/10/18(月) 16:05:46.60ID:3P96aY7G0 ウンコとカレーは別のものです
746デフォルトの名無しさん (ワッチョイ 7b37-G8xN)
2021/10/18(月) 19:51:04.60ID:g0y5TC1t0 そもそも初期化の*と演算子の*だって違うものだからな……
747デフォルトの名無しさん (ワッチョイ dbbb-ZO17)
2021/10/18(月) 20:04:38.45ID:o7eKMY2r0 関数の引数のary[]はポインタだって言ったじゃないですか
748デフォルトの名無しさん (スップ Sdbf-bX8k)
2021/10/18(月) 20:18:11.14ID:SjUVJOBmd ついでに頓珍漢
749デフォルトの名無しさん (ワントンキン MMbf-t/lv)
2021/10/19(火) 07:28:30.98ID:KQylMF0MM >>738
終端文字忘れてるからじゃないの?
終端文字忘れてるからじゃないの?
750デフォルトの名無しさん (ワントンキン MMbf-t/lv)
2021/10/19(火) 08:18:32.37ID:KQylMF0MM >>749
char *pか、勘違いすみません。
char *pか、勘違いすみません。
751デフォルトの名無しさん (アウアウウー Sacf-mxW8)
2021/10/20(水) 09:23:25.20ID:OEiI06HQa すごい勘違いレス
752デフォルトの名無しさん (スップ Sdbf-IIM9)
2021/10/20(水) 18:53:19.81ID:X+tmlWS+d if ((ss == 0) || (ss == 5) || (ss == 10) || (ss == 15) || (ss ==20) || (ss == 25) || (ss == 30) || (ss == 35) || (ss == 40) || (ss == 45) || (ss == 50) || (ss == 55)) {
hogehoge();
}
だいぶん無駄な書き方だと思いました
一桁の値が0が5の時に実行したいです
アドバイスお願いします
hogehoge();
}
だいぶん無駄な書き方だと思いました
一桁の値が0が5の時に実行したいです
アドバイスお願いします
753デフォルトの名無しさん (ワッチョイ 0f46-5kqq)
2021/10/20(水) 18:59:09.50ID:2b7An4Iy0 ss%5==0
754デフォルトの名無しさん (スップ Sdbf-IIM9)
2021/10/20(水) 19:00:41.26ID:X+tmlWS+d755デフォルトの名無しさん (スップ Sdbf-IIM9)
2021/10/20(水) 19:01:44.45ID:X+tmlWS+d >>753
どうもありがとうございました
どうもありがとうございました
756デフォルトの名無しさん (ワッチョイ 2b21-NRqJ)
2021/10/20(水) 19:41:14.72ID:+2OzLQ7p0 >>754
節子それ余りやない。ssss=ss-sss*10とかやらんと。
組み込みマイコンだと/,%なしで頑張る縛りプレーもあるで。自分がよくやるのは対応する値域を限定して、
掛け算と >> による割り算で計算する。それより難しいの頭がついてこん。
節子それ余りやない。ssss=ss-sss*10とかやらんと。
組み込みマイコンだと/,%なしで頑張る縛りプレーもあるで。自分がよくやるのは対応する値域を限定して、
掛け算と >> による割り算で計算する。それより難しいの頭がついてこん。
757デフォルトの名無しさん (スップ Sdbf-IIM9)
2021/10/20(水) 20:06:00.50ID:X+tmlWS+d758デフォルトの名無しさん (ワッチョイ 2b21-NRqJ)
2021/10/20(水) 20:19:57.63ID:+2OzLQ7p0 >>757
ArduinoってUnoあたりは弱いマイコンなのにadafruitのサンプルとか浮動小数点演算してたり感覚おかしくなる。
1秒ごとの処理なら、1秒ごとにカウンタ増やして5になったら何かするって処理でもいいと思う。
使ってるマイコンが除算回路持ってるかは調べといたほうがいい。32bitマイコンでも割り算は省略されたり。
まぁ動きゃいいので効率や速度も捨てるのも、それが能動的な選択なら構わないとは思う。
ちなArduinoのスケッチは、古めのC++だったりするので、たまCで見慣れん文法が出て来る。
ArduinoってUnoあたりは弱いマイコンなのにadafruitのサンプルとか浮動小数点演算してたり感覚おかしくなる。
1秒ごとの処理なら、1秒ごとにカウンタ増やして5になったら何かするって処理でもいいと思う。
使ってるマイコンが除算回路持ってるかは調べといたほうがいい。32bitマイコンでも割り算は省略されたり。
まぁ動きゃいいので効率や速度も捨てるのも、それが能動的な選択なら構わないとは思う。
ちなArduinoのスケッチは、古めのC++だったりするので、たまCで見慣れん文法が出て来る。
759デフォルトの名無しさん (ブーイモ MMcf-ExJR)
2021/10/21(木) 11:57:16.85ID:F1Ma0oSBM if(++ss &5 && ss+=11) {....}
minutes=(ss &5)+ss/16*5;
minutes=(ss &5)+ss/16*5;
760デフォルトの名無しさん (ブーイモ MMcf-ExJR)
2021/10/21(木) 11:59:08.14ID:F1Ma0oSBM minutes=(ss & 7)+ss/16*5;
761デフォルトの名無しさん (スップ Sda2-ysAg)
2021/10/22(金) 14:51:19.29ID:xwM6FSoTd762デフォルトの名無しさん (スップ Sda2-ysAg)
2021/10/22(金) 14:54:54.89ID:xwM6FSoTd >>761
mmが上の条件でなおかつmmがpmmとは異なりssが0のときに動かしたいです
mmが上の条件でなおかつmmがpmmとは異なりssが0のときに動かしたいです
763デフォルトの名無しさん (スップ Sda2-ysAg)
2021/10/22(金) 14:57:33.61ID:xwM6FSoTd >>753 これを応用して、mmから2を引いて5で割り切れたときですかね
764デフォルトの名無しさん (ワッチョイ 2991-l2C9)
2021/10/22(金) 15:05:16.53ID:1X6Ns9Hp0 witch (mm) {
case 2: case 7: case 12: case 17:
case 22: case 27: case 32: case 37:
case 42: case 47: case 52: case 57:
hoge(); break;
default: break;
}
case 2: case 7: case 12: case 17:
case 22: case 27: case 32: case 37:
case 42: case 47: case 52: case 57:
hoge(); break;
default: break;
}
765デフォルトの名無しさん (ワッチョイ 2991-l2C9)
2021/10/22(金) 15:12:34.58ID:1X6Ns9Hp0 頭のsが落ちてた><
766デフォルトの名無しさん (スップ Sda2-ysAg)
2021/10/22(金) 15:57:50.32ID:xwM6FSoTd767デフォルトの名無しさん (ワッチョイ e910-kr9p)
2021/10/22(金) 17:17:41.96ID:ZQZyZs9H0 if( (mm>1) &&
(mm<58 ) &&
!( (mm-2)%5) ) {.....}
かな?
(mm<58 ) &&
!( (mm-2)%5) ) {.....}
かな?
768デフォルトの名無しさん (ワッチョイ 0269-z4aL)
2021/10/22(金) 17:38:23.94ID:gkJZOHn00 ((mm-2) % 5) == 0
!((mm-2) % 5)
(mm % 5) == 2
ふむ。 なやましい
!((mm-2) % 5)
(mm % 5) == 2
ふむ。 なやましい
769デフォルトの名無しさん (スップ Sda2-ysAg)
2021/10/22(金) 18:24:39.18ID:xwM6FSoTd770デフォルトの名無しさん (ワッチョイ 5d1b-gYUW)
2021/10/24(日) 23:50:25.11ID:P21IrDZK0 今から数年前はc言語マスターっていうコテハンがいたような覚えがあるんだけど今は見る影もなくなっちゃったな
今でも覗いているのかな
いなくなったらいなくなったで寂しいもんだ
今でも覗いているのかな
いなくなったらいなくなったで寂しいもんだ
771デフォルトの名無しさん (ワッチョイ 5d1b-gYUW)
2021/10/24(日) 23:54:50.86ID:P21IrDZK0 あと片山博文って奴もいたがあいつはtwitterで元気にやってるね
すっかりtwitterのit畑に馴染んでいる
すっかりtwitterのit畑に馴染んでいる
772デフォルトの名無しさん (エムゾネ FFa2-iXiw)
2021/10/25(月) 10:50:24.50ID:vmRZrQEpF ここは人減り杉たな
773無し (ワッチョイ 3901-iXiw)
2021/10/25(月) 22:34:33.20ID:tqAHcDS70 #include<stdio.h>
void main(void){
puts("Hello world.");
}
Cの基礎。
void main(void){
puts("Hello world.");
}
Cの基礎。
774はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 063e-WU2P)
2021/10/25(月) 22:51:17.12ID:dRHq7DJG0 >>773
mian の返却値を void にすんなよ。
mian の返却値を void にすんなよ。
775デフォルトの名無しさん (ワッチョイ 0263-WU2P)
2021/10/25(月) 23:12:03.34ID:0vce0GaV0 どこでも出口
exit(EXIT_SUCCESS);
exit(EXIT_SUCCESS);
776デフォルトの名無しさん (ワッチョイ 65bb-WU2P)
2021/10/26(火) 01:39:39.55ID:M1juxUvT0 人が減ってる?
それじゃ俺も参加するか
よっこらC(セックス)
それじゃ俺も参加するか
よっこらC(セックス)
777デフォルトの名無しさん (ワッチョイ 0263-WU2P)
2021/10/26(火) 01:46:13.55ID:l3iKjiOk0 「初めてのC」ってタイトル見たとき、ちょっとドキドキしたw
778デフォルトの名無しさん (ワッチョイ 12bd-dMWn)
2021/10/26(火) 02:22:35.07ID:LRGmoAXR0 みぁ〜ん
779デフォルトの名無しさん (ワッチョイ 65bb-WU2P)
2021/10/26(火) 05:48:52.32ID:M1juxUvT0 みぁ〜ん
780デフォルトの名無しさん (ワッチョイ 2eb2-8Piu)
2021/10/26(火) 06:52:29.03ID:ch+2e+/f0781デフォルトの名無しさん (ワッチョイ 0263-WU2P)
2021/10/26(火) 11:35:56.09ID:l3iKjiOk0 トイレ使ったら水を流すだろ
782デフォルトの名無しさん (ワッチョイ e910-kr9p)
2021/10/26(火) 11:41:12.20ID:4NkYNYny0 ふんばっても何も出なかったからそのまま出てきたわ。
783デフォルトの名無しさん (ワッチョイ 81da-0EqD)
2021/10/26(火) 17:15:10.74ID:rbEPHvg70 なぜC言語は「言語」までつけて呼ぶのでしょうか
PASCAL言語とかFORTRAN言語とかPython言語とかいう言い方は聞いたことがないので気になりました
一文字で語呂が良くないから?
PASCAL言語とかFORTRAN言語とかPython言語とかいう言い方は聞いたことがないので気になりました
一文字で語呂が良くないから?
784デフォルトの名無しさん (オッペケ Sr11-gYUW)
2021/10/26(火) 17:16:53.12ID:iznG3/8mr 音節が一つだけだからでしょ
goと一緒
goと一緒
785デフォルトの名無しさん (ワッチョイ 81da-0EqD)
2021/10/26(火) 17:19:02.10ID:rbEPHvg70 >>784
仮に「F」なんていう言語があったとしたら、それには「言語」は付けないのが自然なんですかね
仮に「F」なんていう言語があったとしたら、それには「言語」は付けないのが自然なんですかね
786デフォルトの名無しさん (スッップ Sda2-KSFI)
2021/10/26(火) 17:24:23.61ID:FOkaXEb/d 俺は日常Cと言ってる
787デフォルトの名無しさん (ブーイモ MMe6-wnYK)
2021/10/26(火) 17:30:07.02ID:TdYowdfsM788デフォルトの名無しさん (オッペケ Sr11-gYUW)
2021/10/26(火) 17:43:08.10ID:iznG3/8mr789デフォルトの名無しさん (ブーイモ MM0d-oXrF)
2021/10/26(火) 17:50:47.85ID:JgL6RS+zM またまたご冗談を
790デフォルトの名無しさん (ワッチョイ 81da-0EqD)
2021/10/26(火) 18:07:04.47ID:rbEPHvg70 >>788
馬鹿なんでしょうね
馬鹿なんでしょうね
791デフォルトの名無しさん (ワッチョイ 12bd-dMWn)
2021/10/26(火) 18:10:28.34ID:LRGmoAXR0 アルファベット一文字なら言語ってつける
Goだけなんか例外的なだけで
Goだけなんか例外的なだけで
792デフォルトの名無しさん (ワッチョイ 81da-0EqD)
2021/10/26(火) 18:13:16.33ID:rbEPHvg70 >>791
これって日本特有なんですかね
これって日本特有なんですかね
793デフォルトの名無しさん (テテンテンテン MMe6-Rw6J)
2021/10/26(火) 18:19:10.90ID:l/KP9TR6M 普通に短すぎる識別子の弊害だろ
言語付けとけば>>777のレスは無かった
言語付けとけば>>777のレスは無かった
794デフォルトの名無しさん (ワッチョイ 65bb-WU2P)
2021/10/26(火) 19:33:22.81ID:M1juxUvT0 日本語ではC言語で検索しやすくなるが外国はどうしてんだ?
C lang とかで検索してるのかな?
C lang とかで検索してるのかな?
795デフォルトの名無しさん (スッップ Sda2-KSFI)
2021/10/26(火) 19:47:06.75ID:FOkaXEb/d 英語圏でもC languageとは言うね
796デフォルトの名無しさん (ワッチョイ a236-WU2P)
2021/10/26(火) 21:52:27.56ID:ucHGO5Lk0 アセンブリ言語って自分的には違和感ないけど業界的にはどうなの?
797デフォルトの名無しさん (ワッチョイ 2eb2-8Piu)
2021/10/26(火) 21:56:53.26ID:ch+2e+/f0 普通だね
アセンブラ言語でもどっちでも
しょせんカタカナだし
ドヤるとバカっぽいから放置
アセンブラ言語でもどっちでも
しょせんカタカナだし
ドヤるとバカっぽいから放置
798デフォルトの名無しさん (ワッチョイ 13ad-BvZE)
2021/10/30(土) 00:17:48.25ID:0q4JizrL0 もう英字一文字の言語は飽和状態だからこれからは平仮名一文字とか漢字一文字の言語名にした方が良いな。
799デフォルトの名無しさん (ワッチョイ 13ad-OgfA)
2021/10/30(土) 00:23:08.83ID:0q4JizrL0 ʗ言語
800デフォルトの名無しさん (ワッチョイ 0bb2-JVmF)
2021/10/30(土) 08:25:14.25ID:HlbDM8n/0 ツー言語 (゚∀゚)
801デフォルトの名無しさん (スップ Sd73-fCHU)
2021/10/30(土) 11:53:47.66ID:A30JUN42d802デフォルトの名無しさん (ワッチョイ 13ad-BvZE)
2021/10/30(土) 17:29:52.20ID:0q4JizrL0 私意言語
803デフォルトの名無しさん (ワッチョイ b11b-lV4V)
2021/10/30(土) 18:01:56.38ID:zJlZfWf60804デフォルトの名無しさん (ワッチョイ b11b-lV4V)
2021/10/30(土) 18:03:58.48ID:zJlZfWf60 luaって調べたら月の画像が出てきてめちゃくちゃ怖いぞ
805デフォルトの名無しさん (オッペケ Src5-GNc3)
2021/10/30(土) 19:36:45.48ID:d9y/i02Wr 月が怖いってサテライトキャノンでも撃たれたのか?
806デフォルトの名無しさん (アウアウウー Sa9d-48dE)
2021/10/30(土) 19:51:07.93ID:lpthGY+1a 月を怖がる人ってたまにいるけど
前世とか今世で悪いことでもしたんかね
前世とか今世で悪いことでもしたんかね
807デフォルトの名無しさん (ワッチョイ b11b-lV4V)
2021/10/30(土) 20:22:41.40ID:zJlZfWf60 天体の画像が怖い
808ハノン ◆QZaw55cn4c (NZ 0H63-jJ2N)
2021/10/30(土) 20:27:03.94ID:nIglmucmH809デフォルトの名無しさん (テテンテンテン MMeb-uh0P)
2021/10/30(土) 20:59:50.65ID:f9Pytl6VM お仕置きでもされたのかな
810デフォルトの名無しさん (ワッチョイ b11b-lV4V)
2021/10/30(土) 21:01:00.69ID:zJlZfWf60 天体恐怖症なんやワイ
木星とか海王星とか怖い
木星とか海王星とか怖い
811デフォルトの名無しさん (オッペケ Src5-GNc3)
2021/10/30(土) 22:33:29.21ID:d9y/i02Wr 地球は恐くないん?
812デフォルトの名無しさん (ワッチョイ 1363-BvZE)
2021/10/30(土) 23:11:54.45ID:w/6Ssgd00 裏側にいる事に気がつくと、落ちてしまうそうだ
813デフォルトの名無しさん (ワッチョイ b11b-lV4V)
2021/10/30(土) 23:41:41.51ID:zJlZfWf60814デフォルトの名無しさん (ワッチョイ b11b-lV4V)
2021/10/30(土) 23:42:05.22ID:zJlZfWf60 火星の衛星とかも怖いです
歪な形してるやつ
歪な形してるやつ
815デフォルトの名無しさん (ワッチョイ b11b-lV4V)
2021/10/30(土) 23:43:09.25ID:zJlZfWf60 冥王星の最新画像見たけどめちゃくちゃ怖くて直視できなかった
816デフォルトの名無しさん (ワッチョイ 81b2-JVmF)
2021/10/31(日) 09:06:05.96ID:eEOPPlKd0 アロコスなんかカワイイ形してんじゃん
817デフォルトの名無しさん (アウアウウー Sa9d-48dE)
2021/10/31(日) 11:07:20.50ID:dKAtRzTxa 乙py
乙py
乙py
818デフォルトの名無しさん (アウアウウー Sa9d-48dE)
2021/10/31(日) 11:30:55.69ID:dKAtRzTxa819デフォルトの名無しさん (ワッチョイ b11b-lV4V)
2021/10/31(日) 11:33:04.24ID:xmsO/hLH0 >>818
グロ
グロ
820デフォルトの名無しさん (ワッチョイ 1363-BvZE)
2021/10/31(日) 11:46:46.80ID:TjuXDVeD0 NHK-BSプレミアム『グレートネイチャー』の宣伝臭が鼻につくくらいで
扱っている題材は台湾の自然、どこがグロなんだ?
扱っている題材は台湾の自然、どこがグロなんだ?
821デフォルトの名無しさん (ワッチョイ b11b-lV4V)
2021/10/31(日) 14:17:04.25ID:xmsO/hLH0 >>820
地球の中心コアへの旅っていう関連動画がグロい
地球の中心コアへの旅っていう関連動画がグロい
822デフォルトの名無しさん (ワッチョイ 13ad-BvZE)
2021/11/01(月) 03:55:44.21ID:6HuVbq6K0 饅頭怖い
823デフォルトの名無しさん (ワッチョイ 2bbd-ruXn)
2021/11/01(月) 11:25:10.37ID:/Zy4WfCe0 lu分解をc言語でやりたく、次のようなコード(1部分になります)を書いたのですが、y0の値が0.8になるはずなのに全く違うものとなってしまいます。原因が全くわからないのですが、どこを改良すればよいのでしょうか。
for(int n = 1; n <= M+1; n++){
t = n*dt;
for(int i = 0; i <= N; i++){
x[i] = 0.0;
}
/* Ax = uを解く */
/* Ly = u */
y[0] = u[0]/l[0][0];
for (int i = 1; i <= N; i++){
y[i] = (u[i] - l[1][i]*y[i-1])/l[0][i];
}
/* Ux = y */
x[N] = y[N];
for (int i = N-1; i >= 0; i--){
x[i] = y[i] - m[i]*y[i+1];
}
/* 更新 */
for(int i = 0; i <= N; i++){
u[i] = x[i];
}
}
for(int n = 1; n <= M+1; n++){
t = n*dt;
for(int i = 0; i <= N; i++){
x[i] = 0.0;
}
/* Ax = uを解く */
/* Ly = u */
y[0] = u[0]/l[0][0];
for (int i = 1; i <= N; i++){
y[i] = (u[i] - l[1][i]*y[i-1])/l[0][i];
}
/* Ux = y */
x[N] = y[N];
for (int i = N-1; i >= 0; i--){
x[i] = y[i] - m[i]*y[i+1];
}
/* 更新 */
for(int i = 0; i <= N; i++){
u[i] = x[i];
}
}
824デフォルトの名無しさん (エムゾネ FF33-48dE)
2021/11/01(月) 12:00:24.14ID:z/x9VzKbF int → double または float
825デフォルトの名無しさん (ワッチョイ 1369-flnY)
2021/11/01(月) 13:05:24.25ID:qmVDupeY0 x, y, l, m, u の宣言で添え字のとりえる範囲分はちゃんと確保してる?
(lu分解として正しいかどうかはおいといて)ループのコードから
x 0..N まで → 最低限 double x[N+1];
y 0..N まで → 最低限 double y[N+1];
u 0..N まで → 最低限 double m[N+1];
m 0..N-1 まで → 最低限 double m[N];
l [0][0]..[1][N] まで → 最低限 double l[2][N+1];
(lu分解として正しいかどうかはおいといて)ループのコードから
x 0..N まで → 最低限 double x[N+1];
y 0..N まで → 最低限 double y[N+1];
u 0..N まで → 最低限 double m[N+1];
m 0..N-1 まで → 最低限 double m[N];
l [0][0]..[1][N] まで → 最低限 double l[2][N+1];
826デフォルトの名無しさん (ワッチョイ 2bbd-ruXn)
2021/11/01(月) 15:07:15.16ID:/Zy4WfCe0 最初に宣言して確保してるので、大丈夫だと思うんですが、、
いちおうx,y,l,m,uをそれぞれ出力してみたのですが、yだけ間違えた値になってしまいます。
ループの順番とかがおかしいんですかね?
いちおうx,y,l,m,uをそれぞれ出力してみたのですが、yだけ間違えた値になってしまいます。
ループの順番とかがおかしいんですかね?
827デフォルトの名無しさん (ワッチョイ 13ad-BvZE)
2021/11/01(月) 19:03:15.19ID:6HuVbq6K0 全ての変数の宣言を書け
828デフォルトの名無しさん (ワッチョイ 1901-JVmF)
2021/11/01(月) 20:58:39.67ID:6+jC3RjR0 最小限再現できるコードを書いてもらわんと指摘することはできんねぇ
(そして最小限再現にシェイプアップする過程でやらかしを見つける)
(そして最小限再現にシェイプアップする過程でやらかしを見つける)
829デフォルトの名無しさん (ワッチョイ 6910-7alp)
2021/11/02(火) 07:44:51.26ID:I7k+rE/i0 >lu分解
java版?なら見つかった。
ttps://qiita.com/edo_m18/items/1d67532bed4a083cddb3
java版?なら見つかった。
ttps://qiita.com/edo_m18/items/1d67532bed4a083cddb3
830デフォルトの名無しさん (エムゾネ FF33-48dE)
2021/11/02(火) 10:38:39.23ID:px0qcy1yF831デフォルトの名無しさん (ワッチョイ 81b2-JVmF)
2021/11/03(水) 06:47:18.51ID:biZn6gZT0 小学生の頃から知ってたことばかりでウルトラつまんねえ番組だ
832デフォルトの名無しさん (ワッチョイ 515f-Ds5/)
2021/11/07(日) 10:08:30.22ID:gNBrcBZD0 サイコパスゲイ病人菊永裕太郎
833デフォルトの名無しさん (ワッチョイ f59b-bQ3l)
2021/11/08(月) 14:05:50.44ID:QzkUvy+x0834デフォルトの名無しさん (ワッチョイ a37d-IZSS)
2021/11/13(土) 19:10:26.04ID:EXpCOp4b0 int main() {
return 0;
}
いきなりこれの意味がわかりません。解説によるとゼロを返して正常終了する。
とかなんとかなんですが、どういう意味でしょうか。
オンライン上にゼロの意味の解説が見つかりません。
return 0;
}
いきなりこれの意味がわかりません。解説によるとゼロを返して正常終了する。
とかなんとかなんですが、どういう意味でしょうか。
オンライン上にゼロの意味の解説が見つかりません。
835デフォルトの名無しさん (ワッチョイ e336-wd7R)
2021/11/13(土) 19:43:45.28ID:Q3rklS0i0 大抵の解説では「OSに返す値」となってる。
プログラムが正常終了したら 0。
異常終了や目的の処理が出来なかったときには0以外を返すのが慣例。
Linuxならシェルで echo $?
Windowsならコマンドプロンプト/バッチファイルで echo %ERRORLEVEL%
で確認できる・・・らしい。
0以外を受け取ったからとOSが何か特別な処理をするわけではない。
プログラムが正常終了したら 0。
異常終了や目的の処理が出来なかったときには0以外を返すのが慣例。
Linuxならシェルで echo $?
Windowsならコマンドプロンプト/バッチファイルで echo %ERRORLEVEL%
で確認できる・・・らしい。
0以外を受け取ったからとOSが何か特別な処理をするわけではない。
836デフォルトの名無しさん (ワッチョイ a5da-WW/G)
2021/11/13(土) 19:53:04.62ID:NDPTYcvp0837デフォルトの名無しさん (ワッチョイ 2302-lRA9)
2021/11/13(土) 20:53:19.24ID:pG0a2gxf0 この段階では
0をかえす
そして
正常終了する
ぐらいの認識でいいんじゃないの?
別にどんな整数を返しても正常終了するわけだし
0をかえす
そして
正常終了する
ぐらいの認識でいいんじゃないの?
別にどんな整数を返しても正常終了するわけだし
838はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2b3e-wd7R)
2021/11/13(土) 20:56:10.46ID:FTD0k+Bx0 >>834-835
厳密にいえば、言語仕様上では
・ 0 又は EXIT_SUCCESS の場合は成功終了であることを処理系定義の方法で返す
・ EXIT_FAILURE の場合は失敗終了であることを処理系定義の方法で返す
・ それら意外の場合には返される状態は処理系定義とする
という規則になっている。
どのように解釈されるかは言語仕様の側でははっきりとは決めずにホスト環境 (普通は OS のこと) や処理系の都合次第なので、
言語よりは OS の資料にあたるほうがわかりやすいかもしれない。
言語仕様として確実に保証してるのは少なくとも成功したのか失敗したのかだけは返せる (受け取るかどうかは知らんけど) ってだけだね。
POSIX (Unix 系 OS) では exit status と呼んでるけど、
Windows では error level とか exit code と言ってる。
厳密にいえば、言語仕様上では
・ 0 又は EXIT_SUCCESS の場合は成功終了であることを処理系定義の方法で返す
・ EXIT_FAILURE の場合は失敗終了であることを処理系定義の方法で返す
・ それら意外の場合には返される状態は処理系定義とする
という規則になっている。
どのように解釈されるかは言語仕様の側でははっきりとは決めずにホスト環境 (普通は OS のこと) や処理系の都合次第なので、
言語よりは OS の資料にあたるほうがわかりやすいかもしれない。
言語仕様として確実に保証してるのは少なくとも成功したのか失敗したのかだけは返せる (受け取るかどうかは知らんけど) ってだけだね。
POSIX (Unix 系 OS) では exit status と呼んでるけど、
Windows では error level とか exit code と言ってる。
839デフォルトの名無しさん (JP 0Hab-x5sK)
2021/11/13(土) 22:33:17.66ID:uR+eQ86NH 単独で使う場合は関係ないけど
シェルとかバッチファイルから呼び出す場合にエラーや望まない結果だったら処理を中断とかしたい場合に
ちゃんと値を返しておくと便利になる
シェルとかバッチファイルから呼び出す場合にエラーや望まない結果だったら処理を中断とかしたい場合に
ちゃんと値を返しておくと便利になる
840デフォルトの名無しさん (ワッチョイ 2363-wd7R)
2021/11/13(土) 22:42:47.32ID:J/2HuwPl0 パイプ使うときはどう利用すればいい?
841デフォルトの名無しさん (ワッチョイ 1d0b-4vRU)
2021/11/13(土) 22:51:27.93ID:TY5ABTi00 棒を挟むんだよ
842ハノン ◆QZaw55cn4c (ワッチョイ 9be9-KVNp)
2021/11/13(土) 22:53:39.30ID:DyUYxUU00 >>839
呼び出したプログラムが返してくる値を使うプログラムとしては make がありますね…
呼び出したプログラムが返してくる値を使うプログラムとしては make がありますね…
843デフォルトの名無しさん (ワッチョイ 9521-EbYB)
2021/11/14(日) 09:01:01.66ID:TENET21t0 >>834
補足として、CのAPIにも失敗時に0を割り当てる場合と、成功時に0を割り当てる場合がある。
エラーの要因なんかを意識したい体系では後者も普通に使われるが、同じコード内で前者と
混在せざえるをえない事もある。マクロなんかを使った記述を意識しないとハマるぞw
補足として、CのAPIにも失敗時に0を割り当てる場合と、成功時に0を割り当てる場合がある。
エラーの要因なんかを意識したい体系では後者も普通に使われるが、同じコード内で前者と
混在せざえるをえない事もある。マクロなんかを使った記述を意識しないとハマるぞw
845デフォルトの名無しさん (ワッチョイ 1be7-4vRU)
2021/11/14(日) 13:25:42.20ID:EUNDgDvQ0846デフォルトの名無しさん (エムゾネ FF43-09aj)
2021/11/14(日) 13:59:30.15ID:E00roTgyF847ハノン ◆QZaw55cn4c (ワッチョイ 9be9-KVNp)
2021/11/14(日) 14:07:31.05ID:5CSGBVhH0 >>846
リンクされるスタートアップが返り値の存在を前提にしているというのに、main() ごときが返り値の有無を指定するなんて傲慢じゃないですかぁぁぁぁ!
リンクされるスタートアップが返り値の存在を前提にしているというのに、main() ごときが返り値の有無を指定するなんて傲慢じゃないですかぁぁぁぁ!
848はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a53e-wd7R)
2021/11/14(日) 15:32:15.51ID:A4GQ1/1N0 main の型を変則的にするくらいなら main をエントリーポイントにしない
(エントリーポイントの関数を別の名前にする) ほうが好ましいと個人的には思う。
言語仕様の外 (処理系定義) で定義された方法を使おうとしていることがわかりやすいので。
(エントリーポイントの関数を別の名前にする) ほうが好ましいと個人的には思う。
言語仕様の外 (処理系定義) で定義された方法を使おうとしていることがわかりやすいので。
849デフォルトの名無しさん (スップ Sd03-EoEW)
2021/11/15(月) 08:57:20.76ID:ELwWgVHxd >>846
俺もそう思う
俺もそう思う
850デフォルトの名無しさん (スップ Sd03-EoEW)
2021/11/15(月) 08:59:15.64ID:ELwWgVHxd 実行開始点は◯◯関数とドキュメントのどこに書こうか悩まずに済むならそうしたい
851834 (ワッチョイ a37d-Itmb)
2021/11/15(月) 18:18:16.98ID:oeHKaDHh0 ただの慣例なんですね、ご回答ありがとうございました。
852デフォルトの名無しさん (ワッチョイ 1554-WW/G)
2021/11/15(月) 19:21:59.60ID:BFf+frEV0 C言語初心者です。sleepを使って一文字ずつ
2秒ごとに表示したいのですが
Windowsの端末だとうまくいくのですが、
Ubuntuだと8秒後にまとめてHelloと一度に
表示されてしまいます。ubuntuでも
windowsのように一文字ずつ表示させたいのですが
できないのでしょうか?コンパイラはGCCです。
#include <stdio.h>
#include <unistd.h>
int main (){
printf("H");
sleep(2);
printf("e");
sleep(2);
printf("l");
sleep(2);
printf("l");
sleep(2);
printf("o\n");
return 0;
}
2秒ごとに表示したいのですが
Windowsの端末だとうまくいくのですが、
Ubuntuだと8秒後にまとめてHelloと一度に
表示されてしまいます。ubuntuでも
windowsのように一文字ずつ表示させたいのですが
できないのでしょうか?コンパイラはGCCです。
#include <stdio.h>
#include <unistd.h>
int main (){
printf("H");
sleep(2);
printf("e");
sleep(2);
printf("l");
sleep(2);
printf("l");
sleep(2);
printf("o\n");
return 0;
}
853ハノン ◆QZaw55cn4c (ワッチョイ 9be9-KVNp)
2021/11/15(月) 19:27:49.92ID:a976/UsH0 >>852
printf('A'); fflush(stdout); はいかが?
printf('A'); fflush(stdout); はいかが?
854デフォルトの名無しさん (ワッチョイ 1dbb-lRA9)
2021/11/15(月) 19:28:12.24ID:Xr7xQZWT0 printfとsleepの間に↓
fflush(stdout);
fflush(stdout);
855デフォルトの名無しさん (ワッチョイ 1554-WW/G)
2021/11/15(月) 19:45:10.08ID:BFf+frEV0856はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a53e-wd7R)
2021/11/15(月) 23:18:43.35ID:LEZCO+bp0 >>852
どちらの挙動も言語仕様的にはアリ。
ストリームが対話型装置を参照していると判定できて、かつその場合に限り完全バッファリングすることになっていて、
逆に言えば対話型装置 (この場合はコンソール) に繋がっているときはラインバッファリングかもしれないし、
バッファリング無しかもしれない。
フラッシュを明示的に指示するのでもよいが、 setvbuf 関数でバッファリングをしないように設定することもできる。
どちらの挙動も言語仕様的にはアリ。
ストリームが対話型装置を参照していると判定できて、かつその場合に限り完全バッファリングすることになっていて、
逆に言えば対話型装置 (この場合はコンソール) に繋がっているときはラインバッファリングかもしれないし、
バッファリング無しかもしれない。
フラッシュを明示的に指示するのでもよいが、 setvbuf 関数でバッファリングをしないように設定することもできる。
857はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a53e-wd7R)
2021/11/15(月) 23:20:10.09ID:LEZCO+bp0858デフォルトの名無しさん (ワッチョイ 2363-wd7R)
2021/11/15(月) 23:52:40.37ID:9q/xF8xE0 低レベルの出力関数使ってバッファリングを回避してみる、とか
859デフォルトの名無しさん (ワッチョイ 4b46-Itmb)
2021/11/16(火) 21:41:05.99ID:vUDwceGd0 lintの無い事い今更気付いたのだが、代替何?
860デフォルトの名無しさん (ワッチョイ 2301-riRZ)
2021/11/16(火) 23:22:15.69ID:hcv5mNbC0 >>859
clion
clion
861デフォルトの名無しさん (アウアウウー Saa9-09aj)
2021/11/17(水) 02:29:57.06ID:+JwFzM8Ra >>851
int main(){
int a=0;
return a;
}
と
void main(){
int a=0;
}
をそれぞれ asm 付きでコンパイルして比較してみ
判ったら次は a=0; を inline にしてみ
int main(){
int a=0;
return a;
}
と
void main(){
int a=0;
}
をそれぞれ asm 付きでコンパイルして比較してみ
判ったら次は a=0; を inline にしてみ
862デフォルトの名無しさん (ガラプー KKab-UqSN)
2021/11/17(水) 16:44:53.52ID:802yK0wSK >>859
splint
splint
863はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a53e-wd7R)
2021/11/17(水) 17:37:06.80ID:R6z6I7690 >>859
コンパイラが細かくチェックするようになったから lint の出番がなくなった。
gcc や clang なら -fsyntax-only オプションを付けると文法のチェックまでで段階を止める。
必要な警告オプションを付けた上でこれを使えば古い時代の lint より厳しいくらいだと思う。
(ちなみに -Wall や -Wextra を付けても全ての警告が有効になるわけではない。)
コンパイラが細かくチェックするようになったから lint の出番がなくなった。
gcc や clang なら -fsyntax-only オプションを付けると文法のチェックまでで段階を止める。
必要な警告オプションを付けた上でこれを使えば古い時代の lint より厳しいくらいだと思う。
(ちなみに -Wall や -Wextra を付けても全ての警告が有効になるわけではない。)
864ハノン ◆QZaw55cn4c (ワッチョイ 9be9-KVNp)
2021/11/17(水) 19:11:13.17ID:Kdlo9yNJ0865デフォルトの名無しさん (スップ Sd03-x5sK)
2021/11/17(水) 20:49:44.01ID:U3uLHNTwd 最近のコンパイラはミスタイプすると
「contが見つかりません、もしかしてcountのことですか?」みたいなことまで言ってくるもんなあ
グーグルかよ
「contが見つかりません、もしかしてcountのことですか?」みたいなことまで言ってくるもんなあ
グーグルかよ
867デフォルトの名無しさん (ワッチョイ dd10-+irO)
2021/11/18(木) 00:32:41.46ID:HOoxCKRv0 入門サイトで勉強しててこんな感じのコードがエラーになって
{
int a = 100;
printf("数値:%d アドレス:%x", a, &a);
}
gccのエラーをコピペで検索すると、&aはポインタだから、アドレス:%pだと回答がヒット。
コンパイラやバージョンによって挙動が違うのでしょうか?
{
int a = 100;
printf("数値:%d アドレス:%x", a, &a);
}
gccのエラーをコピペで検索すると、&aはポインタだから、アドレス:%pだと回答がヒット。
コンパイラやバージョンによって挙動が違うのでしょうか?
868はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a53e-wd7R)
2021/11/18(木) 00:55:33.69ID:ku1GvVZm0 >>867
言語仕様で未規定や処理系定義としている場合があって、
そういうのは処理系や実行環境の都合に合わせて決めていいことになってる。
そして「未定義」とされている場合は何が起こってもいいことになってるので、
暴走するかもしれないし、 OS が止めてくれるかもしれないし、しれっと意味不明の結果を出力するかもしれない。
たぶんそれは未定義に該当すると思う。
C の可変長引数は型チェックをゆるゆるにすることで実現されていて、
処理系の内実をわかってる人は言語仕様上の保証がない (けど実態としては問題がない) コードを書くのは普通にある。
パソコンで一般的に使われている呼び出し規約 (関数を呼出す機械語レベルの挙動の規則) だと
ポインタと (レジスタの幅以下の大きさの) 整数は同じ方法で渡すので問題にならないんだけど、
言語仕様では保証がない。
可変長引数の型チェックはゆるゆるなんだけど printf は頻出するからコンパイラが特別扱いで
少しチェックを厳しくしているのでエラーになることもあったりする。
まあ基本的には保証されてないのでやらないほうがいいよ。
言語仕様で未規定や処理系定義としている場合があって、
そういうのは処理系や実行環境の都合に合わせて決めていいことになってる。
そして「未定義」とされている場合は何が起こってもいいことになってるので、
暴走するかもしれないし、 OS が止めてくれるかもしれないし、しれっと意味不明の結果を出力するかもしれない。
たぶんそれは未定義に該当すると思う。
C の可変長引数は型チェックをゆるゆるにすることで実現されていて、
処理系の内実をわかってる人は言語仕様上の保証がない (けど実態としては問題がない) コードを書くのは普通にある。
パソコンで一般的に使われている呼び出し規約 (関数を呼出す機械語レベルの挙動の規則) だと
ポインタと (レジスタの幅以下の大きさの) 整数は同じ方法で渡すので問題にならないんだけど、
言語仕様では保証がない。
可変長引数の型チェックはゆるゆるなんだけど printf は頻出するからコンパイラが特別扱いで
少しチェックを厳しくしているのでエラーになることもあったりする。
まあ基本的には保証されてないのでやらないほうがいいよ。
869867 (ワッチョイ dd10-+irO)
2021/11/18(木) 01:52:34.49ID:HOoxCKRv0870はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a53e-wd7R)
2021/11/18(木) 02:23:30.05ID:ku1GvVZm0 逆に完全に言語仕様に沿っていても警告になる場合もあるし、
(基本的には警告が出ないようなコードのほうが綺麗ではあるが)
言語仕様的に OK なのか NG なのか、
とりあえず自分の実行環境で OK なのか NG なのかを正確に把握するのはかなり分かり難いと思う。
(基本的には警告が出ないようなコードのほうが綺麗ではあるが)
言語仕様的に OK なのか NG なのか、
とりあえず自分の実行環境で OK なのか NG なのかを正確に把握するのはかなり分かり難いと思う。
871デフォルトの名無しさん (ワッチョイ cb0e-4vRU)
2021/11/18(木) 02:53:45.75ID:SHW/gJRC0872デフォルトの名無しさん (スプッッ Sd93-HWhl)
2021/11/18(木) 10:38:56.92ID:7kNuqccRd 0から100までの整数のうち、17の倍数となる数の合計を求め、かつ途中の加算処理を出力するプログラムをつくったのですが、うまくいきません。
873デフォルトの名無しさん (スプッッ Sd93-HWhl)
2021/11/18(木) 10:39:42.31ID:7kNuqccRd うまくいかないのは過程を出力する処理の過程なのですが、どうしたらよいですか。
コードは以下です。
#include <stdio.h>
int main()
{
int i,sum=0;
for(i=17; i<=100; i=i+17) {
sum=sum+i;
printf("途中計算→%d\n", sum);
}
printf("合計=%d\n",sum);
return 0;
}
コードは以下です。
#include <stdio.h>
int main()
{
int i,sum=0;
for(i=17; i<=100; i=i+17) {
sum=sum+i;
printf("途中計算→%d\n", sum);
}
printf("合計=%d\n",sum);
return 0;
}
874デフォルトの名無しさん (ワッチョイ cb0e-4vRU)
2021/11/18(木) 10:49:25.32ID:SHW/gJRC0 ダッサいループ書いてないで公式立てたら?
875デフォルトの名無しさん (ワッチョイ e369-lRA9)
2021/11/18(木) 11:10:34.71ID:R1PabgqQ0876デフォルトの名無しさん (ワッチョイ cb0e-4vRU)
2021/11/18(木) 11:14:20.02ID:SHW/gJRC0 17から開始で17ずつ増やしてるだろ
0は17の倍数じゃないそうだが
0は17の倍数じゃないそうだが
877デフォルトの名無しさん (ワッチョイ 4bbb-fsgr)
2021/11/18(木) 11:32:07.83ID:RYwZiL190 >>873
何がどううまく行かないの?あってそうに見えるけど
何がどううまく行かないの?あってそうに見えるけど
878デフォルトの名無しさん (エムゾネ FF43-09aj)
2021/11/18(木) 14:40:44.78ID:/He/baLSF879デフォルトの名無しさん (エムゾネ FF43-09aj)
2021/11/18(木) 14:45:21.17ID:/He/baLSF >>873
printf("途中計算→%d, %d, %d\n", i / 17, i, sum);
printf("途中計算→%d, %d, %d\n", i / 17, i, sum);
880デフォルトの名無しさん (エムゾネ FF43-09aj)
2021/11/18(木) 14:45:34.58ID:/He/baLSF881デフォルトの名無しさん (スッップ Sd43-x5sK)
2021/11/18(木) 18:35:31.06ID:CfNf7HSld >>867
伝統的にポインタはintと同じメモリサイズなので昔はそう書いてた
そうなんだよな最近のコンパイラはprintfのフォーマットと引数をチェックしてるんだよな
もう慣れたが最初不思議な気がした
組み込みだと自分でprintf関数作ったり(標準だと使わない機能が多くて重すぎるから)するけどそんな時はどうなるのだろうとか
伝統的にポインタはintと同じメモリサイズなので昔はそう書いてた
そうなんだよな最近のコンパイラはprintfのフォーマットと引数をチェックしてるんだよな
もう慣れたが最初不思議な気がした
組み込みだと自分でprintf関数作ったり(標準だと使わない機能が多くて重すぎるから)するけどそんな時はどうなるのだろうとか
882デフォルトの名無しさん (ワッチョイ e2ad-+VBe)
2021/11/19(金) 00:07:30.77ID:tkL53aTR0 >>872
( ´_ゝ`)フーン
( ´_ゝ`)フーン
883デフォルトの名無しさん (ワッチョイ e2ad-+VBe)
2021/11/19(金) 00:11:12.00ID:tkL53aTR0 >>873
それでいいのでは?
それでいいのでは?
884はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 573e-+VBe)
2021/11/19(金) 00:18:54.40ID:bln5kEpJ0 64 ビット環境では LP64 や LLP64 (int とポインタの大きさが違う) が標準的になってしまったから
古いコードをそのまま持ってきたら通らないってことは割とよくあるよね。
古いコードをそのまま持ってきたら通らないってことは割とよくあるよね。
885デフォルトの名無しさん (ワッチョイ e2ad-+VBe)
2021/11/19(金) 00:37:21.78ID:tkL53aTR0 long と int (及び char *)を全て32bitとして扱っていて、辛うじてコンパイルは通るが決してまともに動かない
プログラムがあったので、しょうがないから gcc の -m32 と32bit用ライブラリで何とかした。何せ量が膨大で、
人力で直してたら多分何人か死んでたと思う。
プログラムがあったので、しょうがないから gcc の -m32 と32bit用ライブラリで何とかした。何せ量が膨大で、
人力で直してたら多分何人か死んでたと思う。
886デフォルトの名無しさん (ワッチョイ c60e-acBJ)
2021/11/19(金) 05:44:49.46ID:6rl9yCzd0 俺が出向いた、とあるクライアントでは人海戦術してた
887デフォルトの名無しさん (エムゾネ FF02-iUmB)
2021/11/19(金) 10:15:17.36ID:eyeX0xyMF long が int に追い越されたのかと思った
888ハノン ◆QZaw55cn4c (ワッチョイ 4ee9-XdqU)
2021/11/20(土) 20:09:18.64ID:NniTuIFb0 >>884-886
far near 修飾があたりまえな世界から来た私にとっては、なんで今更なことしているの?と疑問におもっていました
far near 修飾があたりまえな世界から来た私にとっては、なんで今更なことしているの?と疑問におもっていました
889デフォルトの名無しさん (ワッチョイ ef63-YZaJ)
2021/11/20(土) 20:11:58.21ID:LAgO+4EW0 そういえばhageモデルなんてあったな
890ハノン ◆QZaw55cn4c (ワッチョイ 4ee9-XdqU)
2021/11/20(土) 21:32:53.52ID:NniTuIFb0 >>889
hage モデル、もとい huge モデルにはバグがある、とのもっぱらの噂でしたが実際どうだったんでしょうか…
hage モデル、もとい huge モデルにはバグがある、とのもっぱらの噂でしたが実際どうだったんでしょうか…
891デフォルトの名無しさん (ワッチョイ e2ad-+VBe)
2021/11/20(土) 22:42:01.83ID:PPXRLNML0 ていうか、8086のHugeみたいなものはバグ作り込んでしまいそうで怖いよな。ポインタ絡みで。
違う値が同じアドレスになる事あるし。
違う値が同じアドレスになる事あるし。
892デフォルトの名無しさん (ワッチョイ ef63-YZaJ)
2021/11/20(土) 22:45:40.83ID:LAgO+4EW0 当時300kを越える配列を処理したくて使いました
使うというか、複数のセグメントに分割して割り当て、
自前で配列インデックスを計算してアクセスしただけですが
使うというか、複数のセグメントに分割して割り当て、
自前で配列インデックスを計算してアクセスしただけですが
893はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 573e-+VBe)
2021/11/21(日) 00:46:36.95ID:mkw0m2hl0 違う場所が同じ値になるような場合があっても言語仕様が保証している範囲ではちゃんと仕様通りだったりするんだよな。
というより保証が可能な範囲をうまいこと言語仕様にまとめたって感じなんだと思う。
というより保証が可能な範囲をうまいこと言語仕様にまとめたって感じなんだと思う。
894デフォルトの名無しさん (ワッチョイ c60e-acBJ)
2021/11/21(日) 08:41:13.51ID:uokK0Aao0 >>888
Windowsが64bit主流になっていく頃にも一騒動あったよ
Windowsが64bit主流になっていく頃にも一騒動あったよ
895ハノン ◆QZaw55cn4c (ワッチョイ 4ee9-XdqU)
2021/11/21(日) 12:42:55.44ID:ODZrEgDk0 >>891
さらに年寄りの繰言を続けますが、
>違う値が同じアドレスになる事あるし。
というのは far ポインタでも同じです、far と hage じゃなかった huge の違いは、オフセットの繰り上がりがセグメントに反映されるかされないか
私は余計なことはしてほしくないので、繰り上がりがない far を愛用していました、huge はいまいち信用できませんでした
さらに年寄りの繰言を続けますが、
>違う値が同じアドレスになる事あるし。
というのは far ポインタでも同じです、far と hage じゃなかった huge の違いは、オフセットの繰り上がりがセグメントに反映されるかされないか
私は余計なことはしてほしくないので、繰り上がりがない far を愛用していました、huge はいまいち信用できませんでした
896ハノン ◆QZaw55cn4c (ワッチョイ 4ee9-XdqU)
2021/11/21(日) 12:44:00.07ID:ODZrEgDk0897デフォルトの名無しさん (ワッチョイ b7bb-D8AZ)
2021/12/01(水) 02:11:41.33ID:AqcF5lvQ0 構造体のパディングの値って未規定ですか?
898ハノン ◆QZaw55cn4c (ワッチョイ bfe9-Dsww)
2021/12/01(水) 02:24:50.55ID:VU8XmWVx0 >>897
パディングの状況に依存するコードを書くのはよろしくない、というのが一般論だったかと
ファイル入出力で問題になりますが、私はもう、ちまちま fwrite() fread() で「1 byte ずつ」やるしかない、とまで諦めています
環境がバッファリングしてくれますし
パディングの状況に依存するコードを書くのはよろしくない、というのが一般論だったかと
ファイル入出力で問題になりますが、私はもう、ちまちま fwrite() fread() で「1 byte ずつ」やるしかない、とまで諦めています
環境がバッファリングしてくれますし
899はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-D8AZ)
2021/12/01(水) 02:53:05.18ID:Y6HO3vrm0 未規定であるしパディングの大きさに依存するようなコードは避けるのが行儀のよいコードであるのは間違いないけど、
対象にしている処理系での挙動がはっきりしていて移植の可能性もない (または移植のコストをかける覚悟がある)
のなら依存するコードを書くことはそれなりにあると思う。
マクロで切り分けて configure (とか cmake とかのメタビルドツール) で各アーキテクチャの都合に対処することは可能だし。
良くはない。 良くはないがそういう良くないことも出来るのが C ってもんなわけで。
対象にしている処理系での挙動がはっきりしていて移植の可能性もない (または移植のコストをかける覚悟がある)
のなら依存するコードを書くことはそれなりにあると思う。
マクロで切り分けて configure (とか cmake とかのメタビルドツール) で各アーキテクチャの都合に対処することは可能だし。
良くはない。 良くはないがそういう良くないことも出来るのが C ってもんなわけで。
900デフォルトの名無しさん (ワッチョイ d763-HfRa)
2021/12/01(水) 11:58:37.67ID:Jc7L6V7f0 昔、構造体の扱いで失敗した事がある
あるサイトで構造体を引数にして削除処理を行う関数を提供されたが、
実際に使おうとすると引数エラーを返されてしまい途方に暮れた
構造体メンバーには仕様書通りに必要な値をセットしている
しばらくして原因が分かった
関数側は引数が正しくセットされているかを、
処理対象の領域に格納されている同一の構造体と比較しチェックしていた
その比較に memcmp を使っていた
呼び出すこちら側は、構造体を自動変数として領域確保していた
あるサイトで構造体を引数にして削除処理を行う関数を提供されたが、
実際に使おうとすると引数エラーを返されてしまい途方に暮れた
構造体メンバーには仕様書通りに必要な値をセットしている
しばらくして原因が分かった
関数側は引数が正しくセットされているかを、
処理対象の領域に格納されている同一の構造体と比較しチェックしていた
その比較に memcmp を使っていた
呼び出すこちら側は、構造体を自動変数として領域確保していた
901デフォルトの名無しさん (ワッチョイ 97da-GC8a)
2021/12/01(水) 19:41:43.68ID:Dt37aX+70 構造体の比較をmemcmpでやるの本当にバッドプラクティスだと思うわ
横着せずに比較関数作れと
横着せずに比較関数作れと
902デフォルトの名無しさん (ブーイモ MMdb-sYxR)
2021/12/01(水) 20:37:38.80ID:sYF3bwwtM 横着したくなるというか識別子増やすの躊躇させる言語仕様が招く面倒ね
メンバメソッド系はオブ臭く棲み分けに反し今更入れる必要ないと思うけど
一層にぶち撒かず妥当なルールでツール類で拾いやすいサポートネームスペース括りみたいなのがあれば
void bossy(struct *a);
bool bossy.supporter(struct const*a);
メンバメソッド系はオブ臭く棲み分けに反し今更入れる必要ないと思うけど
一層にぶち撒かず妥当なルールでツール類で拾いやすいサポートネームスペース括りみたいなのがあれば
void bossy(struct *a);
bool bossy.supporter(struct const*a);
903デフォルトの名無しさん (ワッチョイ ff0e-eHdc)
2021/12/02(木) 03:58:26.91ID:boATToTk0 素直にC++使っとけ
904デフォルトの名無しさん (ワッチョイ 9710-CJRK)
2021/12/02(木) 15:46:31.22ID:nsbZ2n490 若者のc言語離れ
905デフォルトの名無しさん (スップ Sd3f-hol4)
2021/12/02(木) 15:56:03.63ID:NxRkNBX1d バブルの頃に努力?修練?ぎやはははだっせー
と言ってたのが結局、日本の致命傷になっちまったな
それを今まだ言ってる堀江みたいなぶっ飛んだキチガイもいるし
どーすんだこれ
と言ってたのが結局、日本の致命傷になっちまったな
それを今まだ言ってる堀江みたいなぶっ飛んだキチガイもいるし
どーすんだこれ
906デフォルトの名無しさん (ワッチョイ bfe9-Dsww)
2021/12/02(木) 16:51:51.31ID:BMPRSKoA0907デフォルトの名無しさん (ワッチョイ ff0e-eHdc)
2021/12/02(木) 18:59:50.96ID:boATToTk0 植民地支配がどんなに恐ろしいことか知らないようだな
朝鮮半島に先進国並みのインフラを作ったり
狭い島国に世界最大のメガロポリスができるのと
フィリピンのバナナ農家が受けている仕打ちの違いわかる?
朝鮮半島に先進国並みのインフラを作ったり
狭い島国に世界最大のメガロポリスができるのと
フィリピンのバナナ農家が受けている仕打ちの違いわかる?
908デフォルトの名無しさん (ワッチョイ d763-HfRa)
2021/12/02(木) 19:37:18.40ID:+Bf3UEhm0 君はここに来なくて良いから、その代わりに
半島に行って自慢して感謝されてこいよ
半島に行って自慢して感謝されてこいよ
909デフォルトの名無しさん (ワッチョイ ff0e-eHdc)
2021/12/02(木) 19:51:25.65ID:boATToTk0 わかるかなぁ、わかんねぇだろうなぁ
910デフォルトの名無しさん (ブーイモ MMfb-sYxR)
2021/12/02(木) 21:23:20.96ID:bRKtguKwM c++のネームスペースさんはadl とかテンプレート混じりでsfiane とか
使うつもりがなくても簡単に誤爆する罠のせいで妥当な実装ではないね
使うつもりがなくても簡単に誤爆する罠のせいで妥当な実装ではないね
911デフォルトの名無しさん (ワッチョイ bfe9-Dsww)
2021/12/02(木) 21:28:04.80ID:BMPRSKoA0912デフォルトの名無しさん (ワッチョイ ff0e-eHdc)
2021/12/02(木) 21:44:47.29ID:boATToTk0 >>910
うわー 整然と整列された弾薬を蹴飛ばして地雷原と言っちゃう手合いか
うわー 整然と整列された弾薬を蹴飛ばして地雷原と言っちゃう手合いか
914デフォルトの名無しさん (ワッチョイ 6e69-wVd4)
2021/12/03(金) 21:09:10.77ID:qejwogbL0915デフォルトの名無しさん (ワッチョイ d9b3-lq0O)
2021/12/03(金) 22:17:35.13ID:4DnkKvZO0 >>914
WIndowsAPIはC言語で使うのが正解でC++では使わないっというのを別スレで見たんですが、そうなの?
WIndowsAPIはC言語で使うのが正解でC++では使わないっというのを別スレで見たんですが、そうなの?
916デフォルトの名無しさん (ワッチョイ c063-cP/Y)
2021/12/03(金) 22:43:36.48ID:qIm8KpH10917デフォルトの名無しさん (ワッチョイ d9b3-lq0O)
2021/12/03(金) 23:01:33.51ID:4DnkKvZO0 サンクス
918デフォルトの名無しさん (ワッチョイ aee9-BBtJ)
2021/12/04(土) 00:32:09.23ID:d5QmhWSv0 >>915
補足すると自前でC++を使ってやる方法も win16 初期には見られたが、
https://www.aa;mazon.co.jp/dp/4774100544/
結局みんな MFC ばかり使うようになりました、もうひとつのメーカー製の OWL ですら滅びたようです
MFC の使い方の本は私は持っていない…
補足すると自前でC++を使ってやる方法も win16 初期には見られたが、
https://www.aa;mazon.co.jp/dp/4774100544/
結局みんな MFC ばかり使うようになりました、もうひとつのメーカー製の OWL ですら滅びたようです
MFC の使い方の本は私は持っていない…
919デフォルトの名無しさん (ワッチョイ aee9-BBtJ)
2021/12/04(土) 00:34:51.25ID:d5QmhWSv0920デフォルトの名無しさん (ワッチョイ c063-cP/Y)
2021/12/04(土) 00:37:46.81ID:eEY2XAtO0 使い方って言うほどの高度の内容ではないかも
ドキュメント的にはMSのサイトが本家だし詳しいかも
確かサンプルも載せてたはず
https://docs.microsoft.com/ja-jp/cpp/mfc/documents-views-and-the-framework?view=msvc-170
この辺から入っていくのかな?無事生還を祈る
ドキュメント的にはMSのサイトが本家だし詳しいかも
確かサンプルも載せてたはず
https://docs.microsoft.com/ja-jp/cpp/mfc/documents-views-and-the-framework?view=msvc-170
この辺から入っていくのかな?無事生還を祈る
921デフォルトの名無しさん (ワッチョイ c063-cP/Y)
2021/12/04(土) 00:39:25.21ID:eEY2XAtO0922デフォルトの名無しさん (ワッチョイ c063-cP/Y)
2021/12/04(土) 01:16:03.60ID:eEY2XAtO0 C++の、さらなる深みに入りたいなら、こちらのスレの方が良いかも知れない
Microsoft Foundation Classライブラリ専用スレ
https://mevius.5ch.net/test/read.cgi/tech/1474384848/
Visual Studio 2022
https://mevius.5ch.net/test/read.cgi/tech/1634166667/
C++相談室 part158
https://mevius.5ch.net/test/read.cgi/tech/1636969758/
Microsoft Foundation Classライブラリ専用スレ
https://mevius.5ch.net/test/read.cgi/tech/1474384848/
Visual Studio 2022
https://mevius.5ch.net/test/read.cgi/tech/1634166667/
C++相談室 part158
https://mevius.5ch.net/test/read.cgi/tech/1636969758/
923デフォルトの名無しさん (ワッチョイ e2ad-Z6Z9)
2021/12/04(土) 03:50:46.66ID:2dOPVhNC0924デフォルトの名無しさん (ワッチョイ e2ad-Z6Z9)
2021/12/04(土) 03:52:50.38ID:2dOPVhNC0925デフォルトの名無しさん (ワッチョイ e2ad-Z6Z9)
2021/12/04(土) 03:57:24.10ID:2dOPVhNC0926デフォルトの名無しさん (ワッチョイ e2ad-Z6Z9)
2021/12/04(土) 04:06:08.86ID:2dOPVhNC0927デフォルトの名無しさん (ワッチョイ 8a0e-qcc3)
2021/12/04(土) 05:37:11.06ID:FSuqUkr60 MFCはWin32 GDIの極薄すけすけのラッパーだ
俺なんかMFCから憶えてそこから多くを知った
俺なんかMFCから憶えてそこから多くを知った
928デフォルトの名無しさん (アウアウウー Saab-zMcX)
2021/12/04(土) 10:14:46.95ID:h5ysN7XFa WinUIとかもいいけど、MFCに代わるちゃんとしたCなGUIライブラリを用意して欲しかったわ
929デフォルトの名無しさん (ワッチョイ 8cbb-4KVg)
2021/12/04(土) 11:19:54.80ID:7g1ihlkq0 winuiはイケてないの?
930デフォルトの名無しさん (ワッチョイ aee9-BBtJ)
2021/12/04(土) 19:24:30.40ID:d5QmhWSv0 >>927
では win16 時代の本
https://www.a;mazon.co.jp/gp/product/4774100501/
でも何かしら得るものがあるってことですね、最近ちょっと元気が出てきたから買おうかな、やすいし
では win16 時代の本
https://www.a;mazon.co.jp/gp/product/4774100501/
でも何かしら得るものがあるってことですね、最近ちょっと元気が出てきたから買おうかな、やすいし
932デフォルトの名無しさん (ワッチョイ e2ad-Z6Z9)
2021/12/05(日) 02:12:34.65ID:NlN9zBro0 >>930
本が100円でも送料が300円以上だったりするので、古本は要注意。
メルカリで送料込みで安いやつ探した方が良いかも知れない。
(但し、300円以下はあまりない。理由は自分で出品してみると分かる)
本が100円でも送料が300円以上だったりするので、古本は要注意。
メルカリで送料込みで安いやつ探した方が良いかも知れない。
(但し、300円以下はあまりない。理由は自分で出品してみると分かる)
933デフォルトの名無しさん (スッップ Sd70-6a6v)
2021/12/05(日) 04:30:24.51ID:VQoGm9OLd 47氏こと金子氏はMFCでWinnyを作ったんだな
934デフォルトの名無しさん (ワッチョイ aee9-BBtJ)
2021/12/05(日) 15:55:33.73ID:HAXCanWR0 >>933
winny2 は BCC/OWL だったと聞いた気がします
winny2 は BCC/OWL だったと聞いた気がします
935デフォルトの名無しさん (スッップ Sd70-6a6v)
2021/12/05(日) 16:50:16.47ID:VQoGm9OLd RIP
936デフォルトの名無しさん (ワッチョイ aee9-BBtJ)
2021/12/05(日) 18:32:01.15ID:HAXCanWR0 >>932
ありがとうございます!
ありがとうございます!
937デフォルトの名無しさん (ワッチョイ aee9-BBtJ)
2021/12/07(火) 05:13:43.34ID:WxNsBn2X0 >>934
金子氏の書籍より、VC++ から C++Builder に GUI の変更を目的に変えた、との記述を見つけました
Borland C++ Builder 4.0, および 5.0 であれば OWL5.0 をサポートしていますが、VCL の可能性のほうが高いですね
金子氏の書籍より、VC++ から C++Builder に GUI の変更を目的に変えた、との記述を見つけました
Borland C++ Builder 4.0, および 5.0 であれば OWL5.0 をサポートしていますが、VCL の可能性のほうが高いですね
938デフォルトの名無しさん (ワッチョイ b6e7-qcc3)
2021/12/08(水) 16:27:00.62ID:iGfgkXA80 Windows上で編集してLinux上でコンパイルしたいんだけど
そういうのに適したIDEでお前らが使ってるおすすめを教えて
そういうのに適したIDEでお前らが使ってるおすすめを教えて
939デフォルトの名無しさん (ワッチョイ ba02-TfuE)
2021/12/08(水) 18:39:45.04ID:RLv6UJuP0 >>938
vscode
vscode
940デフォルトの名無しさん (ワッチョイ d02c-oWHg)
2021/12/08(水) 18:59:09.17ID:GPDURn2W0 Ruby on Rails では、WSL2, Linux, Docker, VSCode(Remote Container, Remote WSL)など、
本物のLinux(CUI)で開発できる。
MSYS2/MinGW みたいなWindows でコンパイルした、日本語でバグるものを使う必要もない
Dockerを使わずに、日本人が作った、バージョンマネージャーのanyenv で、
rbenv, nodenv, pyenv など、多言語を統一的に扱う事もできる
組み込み用mruby の本には、Virtualbox, Vagrant を使う。
WSLはサポートしないと書いてあるけど、WSLでも使えるかも?
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11
宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応
人工衛星イザナギ・イザナミで、使っている
本物のLinux(CUI)で開発できる。
MSYS2/MinGW みたいなWindows でコンパイルした、日本語でバグるものを使う必要もない
Dockerを使わずに、日本人が作った、バージョンマネージャーのanyenv で、
rbenv, nodenv, pyenv など、多言語を統一的に扱う事もできる
組み込み用mruby の本には、Virtualbox, Vagrant を使う。
WSLはサポートしないと書いてあるけど、WSLでも使えるかも?
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11
宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応
人工衛星イザナギ・イザナミで、使っている
941デフォルトの名無しさん (ワッチョイ ce01-1kDn)
2021/12/08(水) 20:28:27.76ID:pzF9gjPk0942デフォルトの名無しさん (ワッチョイ d910-PP5C)
2021/12/09(木) 11:14:02.01ID:89810ylo0 実用的なところで夜間に移動する北のミサイル発射トラック追尾。
個人的希望でgoogleカーの追尾。
個人的希望でgoogleカーの追尾。
943デフォルトの名無しさん (スッップ Sd70-6a6v)
2021/12/09(木) 13:22:59.56ID:avfziXHId 頭頂部が日に日に薄くなっていくような気がするから
その辺のチェックを毎日やってほしい
その辺のチェックを毎日やってほしい
944デフォルトの名無しさん (ワッチョイ c063-cP/Y)
2021/12/09(木) 13:26:11.16ID:NPIqJHRg0 >Linux上でコンパイルしたい
Linuxのシェル上でコンパイルしたいという意味?
それともGCCを使いたいという意味?
Linuxのシェル上でコンパイルしたいという意味?
それともGCCを使いたいという意味?
945デフォルトの名無しさん (ワッチョイ dfad-8/hI)
2021/12/10(金) 02:07:06.32ID:Uh57IFJZ0 そう言えば以前 Windows で動く IDE で Linux で動くプログラムの編集をしてそのまま
リモートで Linux 側でコンパイルして更にリモートでデバッグまでできれば良いなと
思ったが、どうやらそれができるものはなさそうなので諦めて Linux 上で IDE を動かした。
まあでもクロス開発というか、リモートデバッグというか、そういうのが出来ると便利だよな。
リモートで Linux 側でコンパイルして更にリモートでデバッグまでできれば良いなと
思ったが、どうやらそれができるものはなさそうなので諦めて Linux 上で IDE を動かした。
まあでもクロス開発というか、リモートデバッグというか、そういうのが出来ると便利だよな。
946デフォルトの名無しさん (ワッチョイ bfe7-4DaK)
2021/12/10(金) 09:42:22.14ID:bMtT4XMq0 >>944
Linuxにインストールしてあるgccでコンパイルしたい
ビルドボタン押したらssh経由でmakeできたら素敵だが
使ってるgccのバージョンがちょっとどころじゃなく古いので
できればMinGW gccとかじゃなくて現物のgcc使いたい感じ
Linuxにインストールしてあるgccでコンパイルしたい
ビルドボタン押したらssh経由でmakeできたら素敵だが
使ってるgccのバージョンがちょっとどころじゃなく古いので
できればMinGW gccとかじゃなくて現物のgcc使いたい感じ
947デフォルトの名無しさん (ワッチョイ df02-cLCX)
2021/12/10(金) 11:35:51.37ID:vRQI3bYg0 上でも書いたけど vs code ではダメなの?
ターゲットが WSL、コンテナ、ssh 接続関係なく
Win 環境から編集、コンパイル、デバッグ一通りなんでもできるよ。
ターゲットが WSL、コンテナ、ssh 接続関係なく
Win 環境から編集、コンパイル、デバッグ一通りなんでもできるよ。
948デフォルトの名無しさん (ワッチョイ bfe7-4DaK)
2021/12/10(金) 14:06:37.92ID:bMtT4XMq0 そこまでおっしゃるのなら、試してさしあげてもよろしくってよ?
949デフォルトの名無しさん (ワッチョイ 7fbb-xF/V)
2021/12/10(金) 15:29:28.42ID:IPFkCC9z0 歯ね
950デフォルトの名無しさん (ワッチョイ 4746-rE6U)
2021/12/10(金) 18:11:12.39ID:7gXx5u630 羽?
951デフォルトの名無しさん (ワッチョイ 6763-xLgN)
2021/12/10(金) 18:59:12.87ID:wbbsNkrV0 教えて差し上げて
952デフォルトの名無しさん (ワッチョイ dfad-8/hI)
2021/12/11(土) 03:38:45.47ID:LF8J+dNV0 >>945 を昨日書いたが、さっきこんなの見つけた。有料だけどな。
JetBrains、リモート開発機能と軽量IDE「Fleet」を発表
https://japan.zdnet.com/article/35180131/
JetBrains、リモート開発機能と軽量IDE「Fleet」を発表
https://japan.zdnet.com/article/35180131/
953940 (ワッチョイ 7f2c-yjVA)
2021/12/11(土) 13:26:00.16ID:iDGs+tOs0 漏れは、Ruby on Rails, WSL2, Ubuntu 18.04 で、
Web Socket など、Railsで使う各モジュールがネイティブコンパイルされるけど、
build-essential とか入れておけば、
Rails のインストール時に、勝手にコンパイルされる
build-essential には、
gcc(GNU C compiler), g++(GNU C++ compiler), libc6-dev(GNU C Library), make などが入っています
パッケージ: build-essential
https://packages.ubuntu.com/ja/bionic/build-essential
43.0 MB のアーカイブを取得して、165 MB のディスク容量が使われます
Web Socket など、Railsで使う各モジュールがネイティブコンパイルされるけど、
build-essential とか入れておけば、
Rails のインストール時に、勝手にコンパイルされる
build-essential には、
gcc(GNU C compiler), g++(GNU C++ compiler), libc6-dev(GNU C Library), make などが入っています
パッケージ: build-essential
https://packages.ubuntu.com/ja/bionic/build-essential
43.0 MB のアーカイブを取得して、165 MB のディスク容量が使われます
954デフォルトの名無しさん (スプッッ Sd7f-9zNQ)
2021/12/11(土) 22:36:35.78ID:KvUnFidtd VS2022に昔のプログラム持ってったら
isspace()とかに80h以上の文字入れると例外になるけど
いいのかこれ
テーブルで処理してて80h以上は負だからテーブル外になるって理由はわかるんだけどさあ
昔のはなんとかうまくやってた気がするんだけど
isspace()とかに80h以上の文字入れると例外になるけど
いいのかこれ
テーブルで処理してて80h以上は負だからテーブル外になるって理由はわかるんだけどさあ
昔のはなんとかうまくやってた気がするんだけど
955デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/12(日) 01:29:13.77ID:xqkchTt80 >>954 それ char で負の値を渡してるんじゃね?
956デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/12(日) 01:30:08.80ID:xqkchTt80957ハノン ◆QZaw55cn4c (ワッチョイ bfe9-cB3R)
2021/12/12(日) 06:11:48.38ID:i1KpRZU20958はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 873e-8/hI)
2021/12/12(日) 11:16:13.91ID:553p9mhC0 char が符号付か符号無しかは処理系定義で、
符号無しであるような処理系では char が int に拡張されたときに負数になることはない。
(考慮する必要はない。)
C にはそういう処理系定義とか未規定とか未定義がもりだくさんなので
ある処理系の定義では未定義を踏まずに済むプログラムでも
別の処理系では (処理系定義のコンボで結果的に) 未定義に引っかかることはよくある。
C のプログラムで完全に処理系定義や未規定を避けるというのは困難な話だし、
(可能なら環境依存を避けるように意識するのは良い作法ではあるけど)
違う環境に持ってきたらその程度の修正は必要なものだと思って諦めるしかしょうがない。
符号無しであるような処理系では char が int に拡張されたときに負数になることはない。
(考慮する必要はない。)
C にはそういう処理系定義とか未規定とか未定義がもりだくさんなので
ある処理系の定義では未定義を踏まずに済むプログラムでも
別の処理系では (処理系定義のコンボで結果的に) 未定義に引っかかることはよくある。
C のプログラムで完全に処理系定義や未規定を避けるというのは困難な話だし、
(可能なら環境依存を避けるように意識するのは良い作法ではあるけど)
違う環境に持ってきたらその程度の修正は必要なものだと思って諦めるしかしょうがない。
959デフォルトの名無しさん (ワッチョイ 7f0e-4DaK)
2021/12/12(日) 11:27:28.68ID:0XY4m15b0 未規定を避ける必要はない
未規定のブレ幅以内に収まるように書いてあるプログラムは適格
そうでないプログラムは不適格で未定義の動作となるだけだ
未規定のブレ幅以内に収まるように書いてあるプログラムは適格
そうでないプログラムは不適格で未定義の動作となるだけだ
960デフォルトの名無しさん (ワッチョイ a710-yRuc)
2021/12/12(日) 17:20:11.74ID:lpH8MLUG0 未規定と、明示的な未定義は違うのか?
961デフォルトの名無しさん (ワッチョイ 7f0e-4DaK)
2021/12/12(日) 17:33:46.14ID:0XY4m15b0 違う。
たとえば
int f1(), f2();
int a = f1() - f2();
のようなことをしているとき、
f1とf2の評価順序は未規定
f1とf2の評価順序によりaに入る値が変動する場合は未定義の動作だ
たとえば
int f1(), f2();
int a = f1() - f2();
のようなことをしているとき、
f1とf2の評価順序は未規定
f1とf2の評価順序によりaに入る値が変動する場合は未定義の動作だ
962デフォルトの名無しさん (ワッチョイ 6763-xLgN)
2021/12/12(日) 17:44:58.99ID:Qvw+czy00 未規定って処理系毎に好きに実装して良いんでしたっけ?
963デフォルトの名無しさん (ワッチョイ a7da-u2LQ)
2021/12/12(日) 17:55:44.75ID:YDRHEr6M0 処理系が好きに実装してよいし, ひとつの処理系の中で一貫している必要も, ドキュメントに明記する必要もない
964デフォルトの名無しさん (ワッチョイ 6763-xLgN)
2021/12/12(日) 17:58:06.91ID:Qvw+czy00 未定義動作だと、最悪SEGVでも良いようなオイ
965デフォルトの名無しさん (ワッチョイ a7da-u2LQ)
2021/12/12(日) 17:59:00.60ID:YDRHEr6M0 SEGVはマシな方なんですが
966はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 873e-8/hI)
2021/12/12(日) 18:09:59.00ID:553p9mhC0967デフォルトの名無しさん (ドコグロ MM9f-JVtf)
2021/12/12(日) 18:12:53.56ID:aAJ0FK40M >>962
処理系どころか同じソースでもコンパイル毎に変えることすら許される
処理系どころか同じソースでもコンパイル毎に変えることすら許される
968デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/12(日) 19:00:18.24ID:xqkchTt80969デフォルトの名無しさん (ワッチョイ bf66-cB3R)
2021/12/12(日) 23:13:30.38ID:VXD697/Q0 >>968
いやあってる
演算子の結合規則・優先順位は、あくまでも複数の演算子があったときにどの演算子を先に処理するか、に過ぎない
オペランドを二つ持つ演算子一つに限れば、どっちのオペランドを先に評価するかは処理系依存だったと思う
これは関数の引数についても同じ
いやあってる
演算子の結合規則・優先順位は、あくまでも複数の演算子があったときにどの演算子を先に処理するか、に過ぎない
オペランドを二つ持つ演算子一つに限れば、どっちのオペランドを先に評価するかは処理系依存だったと思う
これは関数の引数についても同じ
970デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/12(日) 23:20:10.63ID:xqkchTt80 >>969
だれも結合優先度の話はしてないと思う。
> f1とf2の評価順序は未規定
これについては未規定で異論は無いんだよ。
> f1とf2の評価順序によりaに入る値が変動する場合は未定義の動作だ
でも、こっちは嘘じゃね?という話。そんな規定文面確認できない。
だれも結合優先度の話はしてないと思う。
> f1とf2の評価順序は未規定
これについては未規定で異論は無いんだよ。
> f1とf2の評価順序によりaに入る値が変動する場合は未定義の動作だ
でも、こっちは嘘じゃね?という話。そんな規定文面確認できない。
971デフォルトの名無しさん (ワッチョイ a7da-u2LQ)
2021/12/13(月) 00:34:13.21ID:0Z9P9uJp0 C17Draftのpp.65 6.5 1では?
> If a side effect on a scalar object is unsequenced relative to either a different side effect on the same scalar object or a value computation using the value of the same scalar object, the behavior is undefined.
> If there are multiple allowable orderings of the subexpressions of an expression, the behavior is undefined if such an unsequenced side effect occurs in any of the orderings.
> If a side effect on a scalar object is unsequenced relative to either a different side effect on the same scalar object or a value computation using the value of the same scalar object, the behavior is undefined.
> If there are multiple allowable orderings of the subexpressions of an expression, the behavior is undefined if such an unsequenced side effect occurs in any of the orderings.
972デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/13(月) 01:22:45.02ID:aR9zk0xx0 >>971
複数の関数呼び出し先にある評価同士、あるいは呼び出し元と呼び出し先にある評価同士は
indeterminately sequenced となり、 unsequenced にはならない。
6.5.2.2 Function calls p10
> ... Every evaluation in the calling function (including other function calls)
> that is not otherwise specifically sequenced before or after the execution of the body of the called
> function is indeterminately sequenced with respect to the execution of the called function. 96)
...
> 96) In other words, function executions do not “interleave” with each other.
>961 の f1, f2 は関数なので、 f1() - f2() の結果が未規定だからといって未定義動作にはならない。
複数の関数呼び出し先にある評価同士、あるいは呼び出し元と呼び出し先にある評価同士は
indeterminately sequenced となり、 unsequenced にはならない。
6.5.2.2 Function calls p10
> ... Every evaluation in the calling function (including other function calls)
> that is not otherwise specifically sequenced before or after the execution of the body of the called
> function is indeterminately sequenced with respect to the execution of the called function. 96)
...
> 96) In other words, function executions do not “interleave” with each other.
>961 の f1, f2 は関数なので、 f1() - f2() の結果が未規定だからといって未定義動作にはならない。
973デフォルトの名無しさん (ワッチョイ a7da-u2LQ)
2021/12/13(月) 02:53:30.01ID:0Z9P9uJp0 >>972
OK, 関数呼び出しを噛ませたことで評価順序が未規定ではなく不定(一方が他方の後(先)であることは保証される)になるので, 呼出先関数で副作用があっても(結果は未規定だが)未定義動作ではない, と
確かによくある a = i++ + ++i; みたいな例が適切だったか
OK, 関数呼び出しを噛ませたことで評価順序が未規定ではなく不定(一方が他方の後(先)であることは保証される)になるので, 呼出先関数で副作用があっても(結果は未規定だが)未定義動作ではない, と
確かによくある a = i++ + ++i; みたいな例が適切だったか
974デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/13(月) 03:50:46.86ID:aR9zk0xx0 >>973
あともう1点念のため。
その例 a = i++ + ++i は未定義動作になる例として適切なんだけど、未定義動作になる理由は >971 の規定であって、
>961 の「評価順序によりaに入る値が変動する場合」というような理由じゃない。
例えば a = (i = 0) + (i = 0) は、どっちの i = 0 を先に評価しても a に入る値は 0 で変動しないけど、未定義動作となる。
あともう1点念のため。
その例 a = i++ + ++i は未定義動作になる例として適切なんだけど、未定義動作になる理由は >971 の規定であって、
>961 の「評価順序によりaに入る値が変動する場合」というような理由じゃない。
例えば a = (i = 0) + (i = 0) は、どっちの i = 0 を先に評価しても a に入る値は 0 で変動しないけど、未定義動作となる。
975デフォルトの名無しさん (ワッチョイ bfe7-4DaK)
2021/12/14(火) 17:26:28.72ID:LP8Fmqr90 自作ライブラリのヘッダと標準関数のヘッダの読み込み順って
なにか決まりごとはあるの?
#include "jisaku.h"
#include <stdio.h>
ってやってたらキモイって言われたんだけど、これなんかおかしいか?
インクルードガード利いてるし順番なんてどうでもいいだろ っていうか
だったら自作のヘッダが先に来るべきだろ って思うんだけど
なにか決まりごとはあるの?
#include "jisaku.h"
#include <stdio.h>
ってやってたらキモイって言われたんだけど、これなんかおかしいか?
インクルードガード利いてるし順番なんてどうでもいいだろ っていうか
だったら自作のヘッダが先に来るべきだろ って思うんだけど
976はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 873e-8/hI)
2021/12/14(火) 18:00:24.76ID:+JRF3Q+g0 >>975
たとえば assert.h を #include する前にマクロ NDEBUG が定義されていると assert が無効になるといったように
動作の切り替えをするマクロというものが存在する。
標準ではそういうマクロは下線で始まる名前になってることが多いから自分のコードの中の名前がたまたま衝突するということは
そうそうないんだけど、各処理系やライブラリに固有の切り替え用マクロが雑な短い名前だったら意図せず影響を与えるかもしれない。
単なる習慣としてもプロジェクト内のヘッダは後に書くのが定着しているね。
たとえば assert.h を #include する前にマクロ NDEBUG が定義されていると assert が無効になるといったように
動作の切り替えをするマクロというものが存在する。
標準ではそういうマクロは下線で始まる名前になってることが多いから自分のコードの中の名前がたまたま衝突するということは
そうそうないんだけど、各処理系やライブラリに固有の切り替え用マクロが雑な短い名前だったら意図せず影響を与えるかもしれない。
単なる習慣としてもプロジェクト内のヘッダは後に書くのが定着しているね。
977デフォルトの名無しさん (ワッチョイ a720-8/hI)
2021/12/14(火) 18:01:10.76ID:la3dHmwP0 ユーザー先だと、標準的な関数やdefineが定義済みになって不具合が出るかもしれないし
一般的な方から読み込んだほうがいいのでは?
一般的な方から読み込んだほうがいいのでは?
978デフォルトの名無しさん (ワッチョイ 87bb-8/hI)
2021/12/14(火) 18:42:48.59ID:nW+wkdEb0 なんか本の著者は自作モジュールを先にインクルードするって言ってたな
理由はそのほうがコンパイルエラーが早くなるかららしい
理由はそのほうがコンパイルエラーが早くなるかららしい
979デフォルトの名無しさん (ワッチョイ bfe7-4DaK)
2021/12/14(火) 19:01:07.43ID:LP8Fmqr90980デフォルトの名無しさん (ワッチョイ 6763-xLgN)
2021/12/14(火) 19:56:33.18ID:J7XSbp4E0 コンパイルエラーが無くなってもバグは残るからなあ
981デフォルトの名無しさん (ワッチョイ 872c-N/e5)
2021/12/14(火) 21:37:05.35ID:Il/nsfIC0982デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/14(火) 22:16:45.94ID:yrIaaVQv0 >>979
決断に水を差すことになるかもしれないけど、↓のベストアンサーでは自作ヘッダが先だよ。
https://stackoverflow.com/questions/2762568/c-c-include-header-file-order
決断に水を差すことになるかもしれないけど、↓のベストアンサーでは自作ヘッダが先だよ。
https://stackoverflow.com/questions/2762568/c-c-include-header-file-order
983デフォルトの名無しさん (ワッチョイ 7f0e-4DaK)
2021/12/14(火) 22:26:46.15ID:Eg2Dauqu0 くだらねえ
単に依存関係ってだけのことだろ
一概にどっちが先であるべきだなんて押しつけは糞食らえだ
単に依存関係ってだけのことだろ
一概にどっちが先であるべきだなんて押しつけは糞食らえだ
984デフォルトの名無しさん (ワッチョイ 6763-xLgN)
2021/12/14(火) 23:19:28.66ID:J7XSbp4E0 以前のサイトだと
標準ライブラリ
業務共通ライブラリ
個別ライブラリ
の順にインクルードしなさいと決められてた
標準ライブラリ
業務共通ライブラリ
個別ライブラリ
の順にインクルードしなさいと決められてた
985デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/15(水) 00:55:34.24ID:Nn1Wh5vx0 まぁ、これも他のスタイルと同じで、どっちがいいというよりは単純なルールで統一されていることが重要なものと思ってる。
986デフォルトの名無しさん (ワッチョイ 7f0e-4DaK)
2021/12/15(水) 05:27:05.50ID:XqRMbcSJ0 押しつけはやる気と引き換えだ
そのコストに見合う理があるべき
そのコストに見合う理があるべき
987はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 873e-8/hI)
2021/12/16(木) 11:05:28.00ID:78Qrz9F+0 ヘッダのインクルードは全て .c の側でやる (ヘッダ内でインクルードしない) という流儀もある。
既にほとんど滅びた流儀だろうし、現代的ではないと断っておくがこの考え方を取るのであれば
インクルードの順序は重要になる。
// foo.h
struct foo{};
// bar.h
// ここで foo.h や stdint.h をインクルードしない
void bar(foo, uint32_t);
// bar.c
#include <stdint.h>
#include "foo.h"
#include "bar.h"
void bar(foo x, uint32_t y) { printf("bar\n"); }
// main.c
#include <stdio.h>
#include <stdint.h>
#include "foo.h"
#include "bar.h"
int main(void) { struct foo x; bar(x); }
メインの側で適切な順序にしないといけないから抽象不足だが、
インクルードガードしてても読み込んでプリプロセスの手順を通すという処理は発生してしまうので
それすらも最低限であるのが好ましいなどの思惑があるのだと思う。
(いまどきのコンパイラではインクルードガードのパターンを検出して
二度目にはファイルを読むことすらしないものもあるらしい。)
まあリソースをケチるのが正義だった昔の話やね。
既にほとんど滅びた流儀だろうし、現代的ではないと断っておくがこの考え方を取るのであれば
インクルードの順序は重要になる。
// foo.h
struct foo{};
// bar.h
// ここで foo.h や stdint.h をインクルードしない
void bar(foo, uint32_t);
// bar.c
#include <stdint.h>
#include "foo.h"
#include "bar.h"
void bar(foo x, uint32_t y) { printf("bar\n"); }
// main.c
#include <stdio.h>
#include <stdint.h>
#include "foo.h"
#include "bar.h"
int main(void) { struct foo x; bar(x); }
メインの側で適切な順序にしないといけないから抽象不足だが、
インクルードガードしてても読み込んでプリプロセスの手順を通すという処理は発生してしまうので
それすらも最低限であるのが好ましいなどの思惑があるのだと思う。
(いまどきのコンパイラではインクルードガードのパターンを検出して
二度目にはファイルを読むことすらしないものもあるらしい。)
まあリソースをケチるのが正義だった昔の話やね。
988デフォルトの名無しさん (ワッチョイ 97c3-pn1I)
2021/12/18(土) 21:34:42.48ID:U4IWqRR10 test
989デフォルトの名無しさん (ワッチョイ 37bb-g56a)
2021/12/23(木) 19:14:59.61ID:Xd/JFvMa0 レジスタから「値を読みだす」というのは「値をコピーする」と同義ですか?
990デフォルトの名無しさん (ワッチョイ a34c-ch9D)
2021/12/24(金) 05:09:46.99ID:ZnDQBfvC0 なんか違和感ある言い方だな
「読む」とはCPUへの入力、「書き込む」がCPUからの出力で
たとえばメモリリードはメモリからの出力、メモリライトはメモリへの入力を意味する
「コピー」はそれで合ってる
「ムーブ」になる場合は必ずそう断るから
「読む」とはCPUへの入力、「書き込む」がCPUからの出力で
たとえばメモリリードはメモリからの出力、メモリライトはメモリへの入力を意味する
「コピー」はそれで合ってる
「ムーブ」になる場合は必ずそう断るから
991デフォルトの名無しさん (ワッチョイ c5bb-t0J7)
2021/12/24(金) 05:42:34.84ID:TL6ByUiE0 >>990
たとえば
int a = 1;
int b = a + 2;
この「a + 2」の「a」の部分はメモリリードしてるということですよね
このとき計算のためにCPUに値を入力(コピー)しているという理解で合ってますか?
たとえば
int a = 1;
int b = a + 2;
この「a + 2」の「a」の部分はメモリリードしてるということですよね
このとき計算のためにCPUに値を入力(コピー)しているという理解で合ってますか?
992デフォルトの名無しさん (ワッチョイ 17da-zE/T)
2021/12/24(金) 05:43:27.34ID:+etymfSa0 レジスタからの読み出しは読み出しという操作自体に副作用がある(レジスタに対する読み出しを検知してデバイスが何かを行う)場合があるので, 必ずしも同義とは言えない
993デフォルトの名無しさん (ワッチョイ a34c-ch9D)
2021/12/24(金) 05:58:42.33ID:ZnDQBfvC0 >>991
合ってる
合ってる
994デフォルトの名無しさん (ワッチョイ c5bb-t0J7)
2021/12/24(金) 06:05:01.87ID:TL6ByUiE0995デフォルトの名無しさん (ワッチョイ 8d01-SPNH)
2021/12/24(金) 06:43:15.91ID:M4a7QlIa0 >>991
>CPUに値を入力
レジスタはCPUなのかメモリなのか
int a = 1;
int b = a + 2;
これがアセンブラだと
mov ax,1
add ax,2
mov ptr[b], ax
メモリに書き込んでるのは3行目しかないが
>CPUに値を入力
レジスタはCPUなのかメモリなのか
int a = 1;
int b = a + 2;
これがアセンブラだと
mov ax,1
add ax,2
mov ptr[b], ax
メモリに書き込んでるのは3行目しかないが
996デフォルトの名無しさん (ワッチョイ c5bb-t0J7)
2021/12/25(土) 01:01:40.65ID:s/Gdf1X50 >>995
アセンブラよくわからないんですが
mov ax, 1 // axレジスタに1をコピー
add ax, 2 // axレジスタの値に2を加算
mov ptr[b], ax // axレジスタの値をptr[b]にコピー
でしょうか
ptr[b]っていうのはなんですか?
アセンブラよくわからないんですが
mov ax, 1 // axレジスタに1をコピー
add ax, 2 // axレジスタの値に2を加算
mov ptr[b], ax // axレジスタの値をptr[b]にコピー
でしょうか
ptr[b]っていうのはなんですか?
997デフォルトの名無しさん (ワッチョイ eb69-e50p)
2021/12/25(土) 01:29:37.77ID:M0D5aTvU0 最適化で変数aがレジスタに充てられてるんだな
最適化を抑制すれば
mov ax,1
mov ptr[a], ax
mov ax, ptr[a]
add ax,2
mov ptr[b], ax
とかになるんじゃね
最適化を抑制すれば
mov ax,1
mov ptr[a], ax
mov ax, ptr[a]
add ax,2
mov ptr[b], ax
とかになるんじゃね
998デフォルトの名無しさん (ワッチョイ 9db3-ass7)
2021/12/25(土) 11:51:05.24ID:9FGZD56t0 #include <stdio.h>
999デフォルトの名無しさん (ワッチョイ 9db3-ass7)
2021/12/25(土) 11:51:41.94ID:9FGZD56t0 int main(void)
{
printf("good-bye 157\n");
{
printf("good-bye 157\n");
1000デフォルトの名無しさん (ワッチョイ 9db3-ass7)
2021/12/25(土) 11:52:11.17ID:9FGZD56t0 }
/*このすれは終了しました*/
/*このすれは終了しました*/
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 180日 0時間 29分 20秒
新しいスレッドを立ててください。
life time: 180日 0時間 29分 20秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 【野球】野球の未来に危機感「マイナースポーツになる」 宮本慎也氏が開催…学童大会 [尺アジ★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 【訃報】声優・西村知道さん死去 「SLAM DUNK」安西先生役 9月に体調不良のため一時休業 [少考さん★]
- 中国「日本のネトウヨを根絶してやるからな」。ネトウヨ、人生が終わる [805596214]
- おはようございます [577451214]
- (´・ω・`)刑務所での暮らしwwwwwwwwwwwwwwww
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- なぜ人間は架空の人物に感情移入するのか
- 【愛国者速報】山上徹也、金に困りTwitterのお金配り垢に応募していた。犯行もお金があったら暫くやらなかったと供述 [856698234]
