19/02/06 13:39:03.21 c4bnQMl3M.net
↑
次スレを作る時は上記1行をコピーして2行に増やして必ず1行目に入るようにしてください。
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
URLリンク(paiza.io)
URLリンク(ideone.com)
URLリンク(codepad.org)
C11
URLリンク(www.open-std.org)
C99
URLリンク(www.open-std.org)
URLリンク(kikakurui.com)
C FAQ 日本語訳
URLリンク(www.kouno.jp)
JPCERT C コーディングスタンダード
URLリンク(www.jpcert.or.jp)
※前スレ
C言語なら俺に聞け 149
スレリンク(tech板)
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2:デフォルトの名無しさん
19/02/06 13:43:35.56 c4bnQMl3M.net
ミスってる
!extend:checked:vvvvv:1000:512
を書き込み内容にするためにもう一行書かなければならないのね
3:デフォルトの名無しさん
19/02/06 13:53:52.35 bwpbLxE30.net
そうしろって書いてあるじゃん
4:デフォルトの名無しさん
19/02/06 14:08:04.08 6cW+g5Qj0.net
違うな
シェバンに類似する特殊な一行目は書き込みすると失われる、だろ
だから次の手順説明のために同じものをもう一行増やす
しかも「必ず1行目に入るように」って書いてあるから二行に増やしても先頭に空白行があると受理されないハズだ
もう一行書くだけじゃダメだからな
5:デフォルトの名無しさん
19/02/06 14:19:35.82 NIgQMFwf0.net
>>1 乙です、ドンマイ
6:デフォルトの名無しさん
19/02/06 16:08:05.73 1SbGZlcV0.net
では、続きをしようか
986 名前:デフォルトの名無しさん (ワッチョイ df01-vS77)[sage] 投稿日:2019/02/06(水) 04:57:27.49 ID:eUM592Vs0
ループから抜けるときに goto使ったらダメなんですか?
for (...) {
for (...) {
if (...) goto LOOP_EXIT;
}
}
LOOP_EXIT:
こういう感じで書いたら先輩に怒られました。
フラグ見てループ抜けるように修正しろと。
指示されたので従いますけど、どうしてダメなのかよく分かりません。
どなたか納得するような理由をご存知でしょうか?
7:デフォルトの名無しさん
19/02/06 16:09:43.98 1SbGZlcV0.net
若き日の俺は、gotoの他にフラグも無闇に使うなと教わったものだが
フラグはいいってことになったのは、いつからだ? どういう経緯でだ?
8:デフォルトの名無しさん
19/02/06 16:21:58.32 bwpbLxE30.net
Cにはラベル付きbreak文って無いんだね初めて知った
Javaのラベル付きbreak文
loop_exit: for(...) {
for(...) {
if (...) {
break loop_exit;
}
}
}
まぁJavaでもあまり使ったことないけど…。
9:デフォルトの名無しさん
19/02/06 16:41:15.95 1SbGZlcV0.net
#define break goto
みたいなしょーもないことしても本質的に何も変わっちゃいねえ
10:デフォルトの名無しさん
19/02/06 18:02:39.46 CtZpHCTya.net
gotoよりフラグがやばいよな。
11:デフォルトの名無しさん
19/02/06 19:00:59.18 jnwpwdAT0.net
goto があっても
いいじゃないか
C言語だもの
12:デフォルトの名無しさん
19/02/06 19:48:43.15 KUGC24GrM.net
goto文そのものが悪いわけではない。いまだにgoto文の使用そのものがよくないというやつらのせいでおかしくなっている。
goto文で前のif文内に飛んでみたり、ループのなかに飛んでみたりと、乱用して人間には理解しづらいスパゲティプログラムを作るなという話なのに。
continue文だって実体はgoto文で、コンピュータにとってはメモリ上のマシン語を順番に実行しない場合はすべてメモリのアドレスのジャンプでgoto文。
13:デフォルトの名無しさん
19/02/06 20:21:21.69 WRu6z6Oe0.net
センサーで取得した計測値を数値では無く文字列で返す関数を作ろうと思ってる。
どんな計測結果が得られるか事前には分からないため文字列のサイズは関数内で
mallocを使ってリサイズする予定。
このとき測定結果が格納された文字列を関数から渡してもらうのに、
a) 引数に文字列のポインタのポインタを渡す
void sokutei( char** buff )
{
・・・
*buff = (char*)malloc( sizeof(char)*length );
・・・
}
と、
b) 関数の返値に文字列のポインタを指定する
char* sokutei(void)
{
・・・
char* buff = (char*)malloc( sizeof(char)*length );
・・・
return (buff);
}
の二つの方法があるけど
一般的にはどっちの方法がお薦め?
14:デフォルトの名無しさん
19/02/06 20:30:53.85 1SbGZlcV0.net
>>12
機械語が分岐命令になる高級言語のステートメントを全否定というのは
構造化とはまったく違う話だな
15:デフォルトの名無しさん
19/02/06 20:31:48.22 1SbGZlcV0.net
>>13
別にどっちでも
16:デフォルトの名無しさん
19/02/06 20:34:02.27 WRu6z6Oe0.net
>>15
そ、そう・・・
17:デフォルトの名無しさん
19/02/06 20:50:04.50 y48wBDHW0.net
>>13
> センサーで取得した計測値を数値では無く文字列で返す関数を作ろうと思ってる。
これ自体が糞。
計測値は生で保持して、表示する時だけ文字列に変更しろ。
そうすればprintfだけで行けるだろ。
無駄に可変長のバッファなんて持とうとするから無駄に面倒になる。
初心者だから分からないのだと思うが、そもそも複雑にならないように全体像をまず組むんだよ。
18:デフォルトの名無しさん
19/02/06 21:37:14.88 CtZpHCTya.net
voidにするならポインタ返した方がいいと思うよ。
正しさでいうと、既存のライブラリ使ってシリアライズするのが正しい。
19:デフォルトの名無しさん
19/02/06 22:39:39.17 eUM592Vs0.net
関数の戻り値は処理の成否のみを返す。
正常終了なら0、異常終了なら非ゼロ。
入出力は引数で渡す。
と、決めて統一するのが良いと思う。
20:デフォルトの名無しさん
19/02/06 22:43:12.36 WRu6z6Oe0.net
助言ありがとう
確かに関数の戻り値は処理の成否のみに限定するのはスッキリしていいかも
> 文字列で返すのが糞
確かにその通りで(;^ω^)
21:デフォルトの名無しさん
19/02/06 23:32:22.18 eUM592Vs0.net
重要なのは統一するってこと。
標準ライブラリには戻り値に二つの意味を持たせているのが多いから、個人的に好きじゃない。
fopen() 成功時はファイルポインタを返し、失敗時はNULLを返す。
strtol() 成功時は変換結果を返し、失敗時は0を返す。
これじゃ変換結果が0なのか、失敗して0なのか分からない。
で、errnoを見ろってことになってる。
なんでこうなってるかというと、戻り値に処理の成否と結果の二つを持たせているから。
だったら、分ければいいじゃんって話。
22:デフォルトの名無しさん
19/02/06 23:38:05.98 y48wBDHW0.net
>>20
多分相場が分かってないのだと思うけど、
正しく初心者の自覚があるのなら、ある程度縛りプレイで行った方がいい。
C言語なんて現役で50年来てるし、そのセンサーだって民生品なら誰かが同様に使ってる。
それでもそれ用のライブラリがないのなら、それはそもそもそういう使い方をする奴がこれまで居なかったということ。
つまり、そのやり方が間違っている、と見ていい。
初心者が自前でライブラリみたいな物をいきなり組まなければならない時点で設計が間違ってる。
それは君らがよく誤用している「無能な働き者」に該当する。
(ただし繰り返すが、Webでの多くは誤用されているので注意)
23:デフォルトの名無しさん
19/02/07 00:06:12.90 AP44nO75a.net
副作用がメインならともかく、欲しいものを素直にreturnすればいいよ。
24:デフォルトの名無しさん
19/02/07 00:29:49.70 92YFdzoB0.net
strtol()は変換できなかった時の戻り値が曖昧だから0やらLONG_MAX、LONG_MINに固定してるだけだと思ってたんだけど
25:デフォルトの名無しさん
19/02/07 00:29:57.91 xA+ztU7B0.net
バカかコイツラNaNが出たらどーすんだよ
文字列が正しいだろJK
26:デフォルトの名無しさん
19/02/07 05:23:13.49 TUp6R+x+F.net
>>20
C言語の戻り値って、エラーのみで返して、正の値って無いから、C++だな、C++言語に行くように
27:
28:デフォルトの名無しさん
19/02/07 06:44:41.17 3iAi8jGM0.net
>>19
それやだ
んなことするくらいならsetjmpだ
29:デフォルトの名無しさん
19/02/07 07:00:15.05 zkf2ry7x0.net
>>13
ほんとうはaのときは引数にエラーがいるし、bのときは戻り地を
エラーにしないといけないからあまり変わらない
30:デフォルトの名無しさん
19/02/07 17:48:23.42 hewX2k170.net
くっそ初心者なんだがガウスの消去法でn次連立方程式を解くようにしたいんだがn次を入力させてからやるにはどうやりゃいいんだ?
31:さまよえる蟻人間
19/02/07 17:57:54.86 trMMLIP2d.net
行列の格納先に配列のかわりにmallocで動的に確保する。
32:デフォルトの名無しさん
19/02/07 21:03:55.08 2L3KkQ6GM.net
n以外はどうやって入力させるつもりだったの?
33:13
19/02/07 23:25:09.01 9IdI5ETg0.net
a)の方法。空の文字列を渡そうとすると失敗するっぽい
char** str;
sokutei( str );
これやっても有意な文字列はstrに返ってこなかった。
もしこれやるならb)の方法じゃ無いとダメかも↓
cha* str;
str = sokutei();
34:デフォルトの名無しさん
19/02/07 23:38:06.10 92YFdzoB0.net
初心者だから間違ってるかもしれんけど
外でメモリ確保してないからじゃない?
文字列を関数内で作ってたら関数処理終わった後は文字列がそのまま残るかは保証されなかったような気が
外で配列宣言して関数に渡して、関数内でそこにmemcpyさせるとか?
35:デフォルトの名無しさん
19/02/07 23:41:01.38 2ez4owIb0.net
>>32
それやるなら、こうじゃね?
char* str;
sokutei(&str);
36:デフォルトの名無しさん
19/02/07 23:59:08.20 92YFdzoB0.net
あぁmallocしてんのね…
aは何でchar**なんだろう
37:デフォルトの名無しさん
19/02/08 00:24:25.67 ssW/5KIMa.net
ちゃ
38:デフォルトの名無しさん
19/02/08 07:47:48.49 Mb3d412j0.net
>>29
C99以後ならVLAという手もある
int n;
scanf("%d", &n);
double mat[n][n + 1];
39:デフォルトの名無しさん
19/02/08 08:37:48.99 uDm/bfU0d.net
>>34
あぁなるほど
char **str;
sokutei(str); // 関数の引数にstrのアドレスがコピーされるだけ
だから関数内で代入してもコピーに再代入してるだけか
char *str;
sokutei(&str); // str自体のアドレスを渡す
これなら外のstrにmallocで確保したアドレスが入るのね
40:デフォルトの名無しさん
19/02/08 09:08:14.73 kNpkYNE/0.net
渡した引数を書き換えてくれるインターフェースは
scanf() の使い方と同じくするしかない
41:デフォルトの名無しさん
19/02/08 13:03:58.19 VZqJ7QJN0.net
Cに未来はあるのか
42:
19/02/08 21:04:27.25 umhqtjI80.net
>>37
VLA は廃れていく方向のダメな子じゃないですか?c++ からも linux からも追放されたようですし
43:
19/02/08 21:05:05.81 umhqtjI80.net
>>40
たくさんの人に使ってもらいたいライブラリを書くのなら、現状 C しかないと思います
44:デフォルトの名無しさん
19/02/08 21:45:38.59 Mb3d412j0.net
>>41
C++にはもともと導入されてないから追放とかじゃない
vectorがあるからいらんかったというだけ
45:デフォルトの名無しさん
19/02/09 01:59:26.91 babOKSMs0.net
>>26
ANSI Cでは何かしらの値を返さなければいけない。
46:デフォルトの名無しさん
19/02/10 10:04:34.79 wNxUL6Ap0.net
どこかのHPで「自分は頭悪くてC言語の命令が覚えられなかったからアセンブラでプログラミングしてた」という記述を見たんだけど
アセンブラの方がよっぽど難しいと思うんだけど、アセンブラできる人からしたら違う�
47:フかな?
48:デフォルトの名無しさん
19/02/10 10:40:12.32 FPonLwYC0.net
単に、新しいものを覚えるより使い慣れたアセンブラのままでやった方が早いという話じゃないかな。
あるいは情報処理試験の話だったとか。
49:デフォルトの名無しさん
19/02/10 10:47:05.06 nPt8HxnAa.net
おそろしく英語がわからんプログラマーを見ると少し哀れみを感じる
50:デフォルトの名無しさん
19/02/10 10:48:33.87 /aZS7s8b0.net
>>45
ものにもよるけど理解するのはアセンブラのほうが単純なぶん簡単。
51:デフォルトの名無しさん
19/02/10 12:53:55.02 C8AJlGLg0.net
一部には変数概念を理解できなかった御仁もいるらしい
52:デフォルトの名無しさん
19/02/10 12:55:24.84 nnE1Q40B0.net
CPU設計者じゃないかな
53:デフォルトの名無しさん
19/02/10 13:26:11.80 6kY6tuUn0.net
アーキテクチャや機械語ニーモニックは簡単なんだけど
CPUと直接関係のない、アセンブラ指示子やコマンドを覚えて
エラーなくアセンブル通るようにするのは大変
54:デフォルトの名無しさん
19/02/10 13:34:57.75 fhaaLeE2a.net
わかりやすいアセンブラ作るとCになると思うよ
55:
19/02/10 13:41:05.68 nGIVWkyn0.net
>>52
ならないですね…
56:デフォルトの名無しさん
19/02/10 14:46:39.63 vOpxNkmL0.net
構造化アセンブラとかあったな
結局流行らなかったけど
57:デフォルトの名無しさん
19/02/10 16:31:12.43 ixgHA2PX0.net
構造化アセンブラ使っていればいずれCに移行するし
Cで記述できない部分はインラインアセンブラで補うようになる
構造化されているとはいえアセンブラはあくまでアセンブラ
生産性はCには及ばない
元組込みマイコンプログラマより
58:デフォルトの名無しさん
19/02/10 17:36:00.24 XdgVAt+K0.net
>>45
アセンブラってのは理屈じゃない決めごとを憶えるだけでいいが
Cやその他の高級言語は構造化だとか処理系依存がどうたらという
どっかの知らん馬の骨が強弁する作法シキタリに付き合わされるから
気が短いやつはプイと出てっちまうのさ
鵜呑みをせず納得ずくでしか動かんやつという意味では大物の素養がある
59:デフォルトの名無しさん
19/02/10 17:48:21.83 6qUtXmPD0.net
最初がBASIC小僧だった経験から言わせてもらうと、
サブルーチン(Cでは関数)に値を渡す返すって部分が分からなかったな。
ある計算をさせるサブルーチンにパラメータを与えたいときは
大域変数に入れて共有する、値の返却も同様。
これはアセンブラでも同じでしょ。レジスタで渡す返すも可能だけど。
その後、8bitマシン語少年に進み、Cを勉強した時は
ポインタ加算の自動スケーリングに引っかかった。
int *p = &a[0];
p += 4; // ここで p == &a[4] になるのが納得いかない
新たな p が指す先は a[2] か a[1] (intのサイズに依存)、と考えたわけ。
60:デフォルトの名無しさん
19/02/10 18:06:18.52 ialxvDQ60.net
プリプロセッサで MASM の REPT句と同じようなのが欲しいいかも と思ったことはある
61:デフォルトの名無しさん
19/02/11 08:42:09.13 sI6uV93B0.net
C言語学び始めたときに(BASIC、Z80/8086アセンブラの経験はあった)「C言語の非常識」とかいう本読んで
トラブルになりそうなところを先に学んだんでそう苦労しなかったな。
それより16bit DOS時代だったんでコンパイル設定でメモリモデルがLARGEだのHUGEだのの方が理解でできんかった。
まだ学生で「インターネットください」より前の時代で調べる手段がわからんかったし。
62:デフォルトの名無しさん
19/02/11 16:17:31.30 aNfCU32+0.net
それ30年ぐらい前だよね。
large だの huge だのは本読んだりして覚えたなあ。
63:デフォルトの名無しさん
19/02/11 16:27:55.76 nk0/BZLe0.net
nearとfar
懐かしいな
64:デフォルトの名無しさん
19/02/11 16:39:10.95 adB+iGat0.net
数百MBの配列データを扱うときにコンパクトモデル利用したな
65:デフォルトの名無しさん
19/02/11 16:57:59.18 /r6pt/Ls0.net
30 年前に C コンパイラにアセンブラソース出させて C を学んだけど
ひょっとして普通はしないことなの?
66:デフォルトの名無しさん
19/02/11 16:58:51.46 7mPrdtBm0.net
>>62
CPUはなんでしたか?
67:デフォルトの名無しさん
19/02/11 17:08:20.36 adB+iGat0.net
MS-DOSでPC98使ってました
多分80386だったんじゃないかな?
68:デフォルトの名無しさん
19/02/11 17:11:09.55 CRK5hAp10.net
RA21
69:デフォルトの名無しさん
19/02/11 17:20:25.05 adB+iGat0.net
なんかそれっぽいw
CADのデータを扱うアプリで、データが大きくなりすぎて
PCによっては読込すら出来なくなってしまい
アプリを立ち上げずに画面表示やプロッター出力する
プログラムを作れという指令が飛んだんです
データ構造は比較的簡単で、先頭部分に部品基本イメージ、
その後ろから、固定長で膨大な描画情報がある感じです
描画情報を64k未満の配列に分割して格納し、
それぞれの配列アドレスを格納した配列経由で操作するイメージでした
70:デフォルトの名無しさん
19/02/11 17:31:32.52 3tLemvMU0.net
DXFのENTITIESセクションとかかな 頭に部品イメージ云々
71:デフォルトの名無しさん
19/02/11 17:40:57.96 adB+iGat0.net
そんな感じです
ソフトは有名な高額ソフトではありません
スタンドアロンのMS-DOSで動作可能なほど
コンパクトなものでした(名前失念w)
72:デフォルトの名無しさん
19/02/11 17:51:01.28 Hh2Z/MAZ0.net
>>63
コードが最適化されるのが前提なところがあるので
今はしたくてもちょっと難しい気がする
できることはできるけど、イマイチ学習効果が薄そう
73:デフォルトの名無しさん
19/02/11 17:52:29.43 MkFOBvt90.net
そもそもPC-98シリーズで数百MBのメモリー載る機種あるのか?
HDDですら数十MBクラスが普通だったと思うが…
74:デフォルトの名無しさん
19/02/11 18:00:50.47 adB+iGat0.net
>>71
メガバイトって事は無いですね
初期の無印98で128KB、MAX640KBだったかな
386乗せたRAシリーズだと標準で640KB+1024KBだったと思う
75:デフォルトの名無しさん
19/02/11 18:55:56.19 ItYOkWkR0.net
あれ?
98note 使ってたけどメモリ増設で16MB 積むか12MBで妥協するかで悩んでいた記憶が…
勘違いかな?
76:デフォルトの名無しさん
19/02/11 19:06:33.17 sI6uV93B0.net
Ap2でいくら載せてたかなぁ・・・。
20だか30M程度だったと思う。
パリ有りメモリで近所で扱ってる店も無かった時代なんで。
ぐぐったら公式で最大 73.6MB 、非公式で125.6MBまでいけたらしい。
>HDDですら数十MBクラスが普通だったと思うが…
それはSASI HDDじゃないか?VM時代か?
RXで340M、AP2で4G のSCSI HDD使ってたよ。
77:デフォルトの名無しさん
19/02/12 02:24:51.56 xDY2FToe0.net
Cしかかけませんっていうの
78:デフォルトの名無しさん
19/02/12 02:25:15.35 xDY2FToe0.net
Cしか書けませんっていうのは新卒就活のときに不利?
他にどんな言語を習得すればいいんだろうか
79:デフォルトの名無しさん
19/02/12 02:52:19.85 wp1a6nq70.net
まず「他にどんな言語を習得すれば良いんだろうか」なんて言ってること自体がかなり的外れかな
手段と目的の順序が逆
あと面接のときに「何故C言語を習得し、それを何に使ったんですか?」って聞かれてちゃんと答えられる?
80:デフォルトの名無しさん
19/02/12 03:06:28.22 jEa3f+fD0.net
新卒であればプログラム言語そのものより他にアピールした方がいいと思うけどな
組み込みであれば現代制御理論、解析系であれば有限要素解析などC言語のプログラミングを応用する専門分野の知識を売り込んだほうがいいと思う
81:デフォルトの名無しさん
19/02/12 05:55:34.89 4zHmA9zW0.net
>>76
俺んとこではそれで充分
ただしCが書けるといってもHello worldの域を出ていないのは書けるうちに入らない
アルゴリズムの基本ができているかどうかを見ている
できていれば他言語が必要になっても泥縄ができるからだ
俺だってもともとアセンブラ屋で正社員3年目くらいのときにCの案件が回ってきて必死こいて憶えた
82:デフォルトの名無しさん
19/02/12 06:06:40.84 QnKLUVRS0.net
>>76
冗談抜きで一番大事な言語は日本語と英語。
開発職に論理的な表現力は重要。
83:デフォルトの名無しさん
19/02/12 09:06:46.70 lJ9WNOSb0.net
AならばBであるを表現できますか?と聞く
84:デフォルトの名無しさん
19/02/12 09:17:13.28 puzbyhsI0.net
64ビットCPUでもデフォルトの命令のオペランドが32ビットだから
linuxでint_fast32_tを使うのは間違いだったんだな
多分64ビットのアドレス計算も32bitの命令があるからパッディングとかも
起こらないだろうな
85:デフォルトの名無しさん
19/02/12 09:24:10.34 Y0SH8Lt40.net
>>82 どこが間違いなの?
86:デフォルトの名無しさん
19/02/12 09:29:01.84 puzbyhsI0.net
>>83
linuxはint_fast32_tが64ビットになってるから
87:デフォルトの名無しさん
19/02/12 13:06:03.99 puzbyhsI0.net
>>82の4行目で多分って書いたけど
64ビットのムーブ命令は32ビットなら0埋めされるから
ポインターの引き算をしなければ64ビット整数を使う必要ないということだな
88:デフォルトの名無しさん
19/02/12 13:19:08.47 4zHmA9zW0.net
ポインタの引き算に使うんならptrdiff_tだね
int_fast32_tが何ビットかには関係ない
89:デフォルトの名無しさん
19/02/12 15:07:18.06 s+eQ0w2IM.net
>>84
amd64では64bitが最速でないのに64bitが選ばれるのはおかしいっていう主張?
90:デフォルトの名無しさん
19/02/12 15:11:10.99 puzbyhsI0.net
>>86
わからん
>>87
正解
91:デフォルトの名無しさん
19/02/12 18:52:25.91 2Rlz0B+x0.net
このスレの平均年齢って幾つなんだ…(驚愕)
Cってもう若者は触らないっていう感じなんですかね。
92:デフォルトの名無しさん
19/02/12 19:06:37.74 5/zfp5Xa0.net
ここに書き込みしているのは、人間じゃないから
93:デフォルトの名無しさん
19/02/12 19:13:42.99 QnKLUVRS0.net
若者のC言語離れが叫ばれて久しいからな。
94:デフォルトの名無しさん
19/02/12 19:16:16.52 5/zfp5Xa0.net
50年前は、概ね若者だった
95:デフォルトの名無しさん
19/02/12 19:43:56.33 9j8xXtILM.net
いまどきの若者ならみんなPythonに行ってるよ
やや年食ってる連中ならJavaやC#
職人気質で頑固な偏屈者はC++
Cはかつての栄光を引き摺って余生を過ごす老人の言語
96:デフォルトの名無しさん
19/02/12 19:46:30.05 5/zfp5Xa0.net
Lunuxのソースって言語はなんだっけ?
97:
19/02/12 22:27:27.41 afakhEje0.net
>>93
でも言語を超えて活用されるライブラリ(libzip, libpng/libjpeg etc)は C で書かれることはあっても、OOP 諸言語で書かれることはないかと思うのですが?
C++ で記述される汎用ライブラリはありますか?
98:デフォルトの名無しさん
19/02/12 22:3
99:0:48.71 ID:Jl2Y8iQt0.net
100:デフォルトの名無しさん
19/02/12 22:31:50.68 Jl2Y8iQt0.net
むしろ立場が怪しいのはjavaじゃないか?
101:デフォルトの名無しさん
19/02/12 22:33:34.82 CAePQpAGa.net
>>95
やっぱりアプリよりになっちゃうのは確かだね。
XMLのパーサとかだとオブジェクト指向の有り難みがある。
102:デフォルトの名無しさん
19/02/12 22:38:44.87 Jl2Y8iQt0.net
jsonをcで扱うのは涙がでますよ……
103:デフォルトの名無しさん
19/02/12 22:57:01.03 CAePQpAGa.net
Cでがんばろうと思うと、glibみたいな形になっちゃいますね。
104:デフォルトの名無しさん
19/02/13 12:23:21.90 ds2YQTN50.net
俺は有名な言語はほとんど全種類使えるから適材適所で使い分けてるは
105:デフォルトの名無しさん
19/02/13 12:36:20.22 FB2A40HJ0.net
使えるというか、Cが分かるなら「~の言語でやれ」って言われたらどの言語でも3日で仕事出来るくらいは当然だけどね。
java勢とかが3日でCやれと言われてポインタまみれのコード読むのは無理だろうけど。
106:デフォルトの名無しさん
19/02/13 12:50:19.10 j9mDOCj4x.net
極端だけど、突然Prologでやれ!と言われても3日じゃまともに使えないと思う。
107:デフォルトの名無しさん
19/02/13 12:57:25.03 oF8nMyvD0.net
3日でできてしまう仕事ってお粗末そうだな
108:デフォルトの名無しさん
19/02/13 13:04:19.59 a9PctXZid.net
まあ新しい言語の勉強始めたら3日目にはそれなりに手が動くようになってるだろうからな。
でも仕事で使おうとするとプロジェクト設定の方法がわからないとかその辺で詰むと思うわ。
109:デフォルトの名無しさん
19/02/13 13:07:22.57 oF8nMyvD0.net
練達言語でさえ3日つーとやっつけ仕事くせえぞ
110:デフォルトの名無しさん
19/02/13 13:12:51.57 V+opB2+Aa.net
>>99
ライブラリないの?
111:デフォルトの名無しさん
19/02/13 13:15:49.92 V+opB2+Aa.net
3日ねえ。まあ、書けるには書けてもその言語の特性をうまく活用できるところまでは行きそうにないな。
112:デフォルトの名無しさん
19/02/13 13:23:21.11 q5+/i40P0.net
百歩譲って自分がもし言語が3日で出来たとしても業務知識や専門知識は3日では身に付かんから無理だわw
113:デフォルトの名無しさん
19/02/13 14:38:53.83 FB2A40HJ0.net
>>109
Cしかわからなかったけど、入社して「これわかりやすいから」とjavapressをポンと渡され、3日後にはjavaで養鶏管理のシステムを作らされていたぞ。
業務知識なんて仕様書と上司に聞きながら覚えるものじゃん。業務知識覚えてから仕事って、新卒じゃないんだからw
114:デフォルトの名無しさん
19/02/13 14:42:28.64 q5+/i40P0.net
業務知識覚えてから仕事なんて一言も書いてないけどw
こういう人ってちゃんとドキュメント類読めてるんだろうか
自己解釈でガンガン進めてから修正で苦労してそう
あと君が3日で出来るすごい人なのは充分分かったよ
115:デフォルトの名無しさん
19/02/13 14:42:57.53 Fe5QsHU80.net
業務知識を知ってから作るんだろう
新卒じゃないと知識なしに作り始めるのか
116:デフォルトの名無しさん
19/02/13 14:49:42.00 fZcB94Cs0.net
鶏が何を食っているか新卒で知っている人はいない。
貝殻食っていると知ってた?
117:デフォルトの名無しさん
19/02/13 15:10:52.45 Fe5QsHU80.net
仕様書に書いてあるんだろう
上司に教えてもらいながら開発するベテランさんは
知っていることなのかな?
118:デフォルトの名無しさん
19/02/13 15:11:22.39 4FvVMQftM.net
マジかよ、仕様書に貝殻ボタン追加しないと
119:デフォルトの名無しさん
19/02/13 15:28:42.70 ERyLIjVv0.net
貝殻というか石や砂など砂嚢(砂肝)に飲み込むものなら何でも良いんじゃないの?
120:デフォルトの名無しさん
19/02/13 15:30:11.62 q5+/i40P0.net
皆さん鶏に詳しすぎません?w
もしかして:鶏 飼ってる
121:デフォルトの名無しさん
19/02/13 15:3
122:1:15.00 ID:ds2YQTN50.net
123:デフォルトの名無しさん
19/02/13 15:32:23.03 Fe5QsHU80.net
カルシウムが不足すると、イライラしてくる
貝殻囓ると多少は改善する
124:デフォルトの名無しさん
19/02/13 15:34:17.67 FB2A40HJ0.net
Cが出来るなら仕事で求められる程度のコーディングは3日で皆も出来るでしょというだけのお話だったのになぜか餌の話になっててワロタw
125:デフォルトの名無しさん
19/02/13 15:40:57.70 d5jEja6x0.net
Cのスレに書き込んでてかつ鶏飼育してるってすげー組み合わせ
126:デフォルトの名無しさん
19/02/13 15:43:10.55 q5+/i40P0.net
ここの人たちはマイコンで全自動の餌やり制御とか余裕で作ってそうだからなぁ
127:デフォルトの名無しさん
19/02/13 15:54:21.06 Q5DduoYTM.net
むしろ全自動鶏作ろう。
128:デフォルトの名無しさん
19/02/13 18:00:49.65 2WlGbphz0.net
まぁ、C言語のCはChickenの頭文字だからね。
129:デフォルトの名無しさん
19/02/13 18:16:41.77 i20vW39tM.net
ここでスベるとか…
130:デフォルトの名無しさん
19/02/13 18:19:31.10 q5+/i40P0.net
おじいさまたち、しっかりたのみますよ
131:デフォルトの名無しさん
19/02/14 00:55:10.36 eGYXBQeH0.net
>>124
「はじめてのC」
132:デフォルトの名無しさん
19/02/14 07:24:34.92 J1vF692V0.net
鶏の雌雄判別機を作ったらまじで大儲けできる。
133:デフォルトの名無しさん
19/02/14 07:33:43.74 5EPJ06Po0.net
鶏ではなくてひよこの雌雄判別だろ
134:デフォルトの名無しさん
19/02/14 07:42:05.06 J1vF692V0.net
玉子だったらなお良い。
135:デフォルトの名無しさん
19/02/14 07:45:47.66 MhXZGfUyd.net
それは機械学習の世界だからなpythonでやるべきだな
136:デフォルトの名無しさん
19/02/14 07:52:15.98 5EPJ06Po0.net
機械学習の段階に持っていく以前にどうやって特徴点を抽出するんだよ
137:デフォルトの名無しさん
19/02/14 08:01:05.34 bVlNWlBE0.net
>>130
レーザー使って卵のうちにてのはもうあるらしい
138:デフォルトの名無しさん
19/02/14 08:44:29.64 MhXZGfUyd.net
>>132
AIを信じろ、心を無にして写真を撮り続けるんだ。
139:デフォルトの名無しさん
19/02/14 09:27:48.57 9tQDIG7ca.net
鶏のスレができたと聞いてゆっくり歩いてきました。
140:デフォルトの名無しさん
19/02/14 12:09:08.34 EQjYAhePp.net
>>124
A、B、そしてC言語だ、アホw
141:デフォルトの名無しさん
19/02/14 12:31:22.40 eoj/2xbH0.net
B (programming language) が A programming language の流れを汲んでいるとは初耳だな
142:デフォルトの名無しさん
19/02/14 12:35:11.20 EQjYAhePp.net
っAPL
143:デフォルトの名無しさん
19/02/14 16:09:27.74 7mjvw7zr0.net
Bは聞いたことがあるが、Aがあるのは初めて知ったw
144:デフォルトの名無しさん
19/02/14 17:42:21.71 WWAGjmY5M.net
>>128
ひよこの時点で選別されている。
145:デフォルトの名無しさん
19/02/14 17:54:09.12 5EPJ06Po0.net
ひよこ鑑定士
URLリンク(furikake.doda.jp)
146:デフォルトの名無しさん
19/02/14 17:55:33.11 dTIeIK2I0.net
まじかよプログラム書いてる場合じゃない
147:デフォルトの名無しさん
19/02/14 19:22:48.32 Jtoe5svL0.net
雄のひよこの運命はマジでミンチ
148:デフォルトの名無しさん
19/02/14 20:04:09.42 lvuH5t8P0.net
ひよこ鑑定士の雌雄判定プログラムになるわ
149:デフォルトの名無しさん
19/02/14 21:15:49.32 FnxMJF+Da.net
昔々小学生の頃に道で売ってたカラーひよこを買って、だいたいは一晩で死ぬわけだがその時は電球で暖めたり色々やったら生き長らえて成長し、立派な鶏に成長し、その後親戚に引き取られて行ったが、すぐに食われた。
150:デフォルトの名無しさん
19/02/15 09:35:49.46 PLZ5J6XD0.net
ヒヨちゃん、ミケ、チョビ
151:デフォルトの名無しさん
19/02/16 00:17:44.31 yq1cCgqT0.net
#include "A.h"
#include "B.h"
A.hとB.hに同じ内容の同じ名前の関数が定義されてると
こうインクルードした時点で
152:コンパイラから二重定義されてるぞ とおしかりを受けるわけだがどうしたらいいかな? 手作業でA.hないしはB.hから該当する関数を削除しないといけないかな?
153:デフォルトの名無しさん
19/02/16 00:26:14.00 BHwuOYP40.net
ヘッダーで関数を定義するのが悪いんじゃ
154:デフォルトの名無しさん
19/02/16 00:31:06.99 DIoBwVhC0.net
#pragma onceではダメですか?
そういう話ではない?
155:デフォルトの名無しさん
19/02/16 00:35:57.27 QGJnkP2m0.net
AB共にその関数使用でインクルードするソースが多数あるのであれば
どちらか一方は関数削除し代わりにもう片方をインクルード
156:デフォルトの名無しさん
19/02/16 00:57:35.72 BxPlGezW0.net
いや普通に二重で定義せずに名前変えろよ
157:デフォルトの名無しさん
19/02/16 01:15:06.97 P5gjDjW+0.net
うん、事情によらず同じ名前の関数定義があっちゃだめでしょ。
158:デフォルトの名無しさん
19/02/16 01:16:19.79 BHwuOYP40.net
そのヘッダーをインクルードするソースが複数あったら、
やはりリンク時に二重定義とならないか?
159:デフォルトの名無しさん
19/02/16 01:45:16.86 0XZqCZxyM.net
定義の意味が曖昧だけど自分ならヘッダーはプロトタイプ宣言だけなので関数定義そのものが
二重になることはまず無いな
*.cと*.hファイルの関数定義と宣言をきちんと区別していれば同一関数の二重定義なんて事態には
そうならないと思うんだが
160:デフォルトの名無しさん
19/02/16 03:04:51.53 yq1cCgqT0.net
int型の変数を文字列に変える
INT2STRって関数がバッティングしてる
便利な関数だからいろんなヘッダファイルに仕込んでるんだけど
そういうヘッダファイルを複数includeするとバッティングしちゃうんだよね
161:デフォルトの名無しさん
19/02/16 04:31:59.37 0BUCSxrk0.net
バッティングする関数を別のヘッダーにする。
162:デフォルトの名無しさん
19/02/16 05:23:54.50 mG+jUdie0.net
関数宣言だけなら多重でも文句はいわれない
マクロやtypedefに構造体の衝突ならインクルードガード施してそれだけをヘッダーに
};
163:デフォルトの名無しさん
19/02/16 07:51:21.96 cXYf2t9G0.net
#ifdef
#ifndef
#endif
の出番?
164:デフォルトの名無しさん
19/02/16 08:25:13.37 VTuLU8k00.net
ライブラリのヘッダ見てマネればいいじゃん
#ifndef _STDIO_H
#define _STDIO_H 1
...
#endif
165:デフォルトの名無しさん
19/02/16 08:47:05.29 DIoBwVhC0.net
みなさんpragma onceじゃなくてifndef派なんですね
166:デフォルトの名無しさん
19/02/16 08:52:07.39 q1DAaOKG0.net
>>155
> INT2STRって関数がバッティングしてる
> 便利な関数だからいろんなヘッダファイルに仕込んでるんだけど
その関数を定義した"int2str.h"を作って
#pragma onceなり#ifndefなりでインクルードガードしておく
各ヘッダーファイルは"int2str.h"をインクルードすればいいだけ
167:デフォルトの名無しさん
19/02/16 09:05:18.00 P5gjDjW+0.net
>>155
「便利な関数だからいろんなヘッダファイルに仕込んでるんだけど」
普通は
「便利な関数だからライブラリ化していろんな実装ファイルでインクルードしてる」
とするべきでしょ。
ヘッダファイルの使い方も間違ってるような…
168:デフォルトの名無しさん
19/02/16 09:09:29.43 P5gjDjW+0.net
>>161
たぶんint2str.hはヘッダーファイルじゃなくて実装ファイルでインクルードすべき性質のものだよね。
細かいことかもしれないけど、ヘッダーファイルでインクルードすると他のファイルへの影響が増えるから、必要がない限りは実装ファイルの方でインクルードするべきだと思う。
169:デフォルトの名無しさん
19/02/16 09:19:18.44 mG+jUdie0.net
関数の実体をヘッダーにおいているのか
inline キーワードが使えるなら… という話かな?
170:デフォルトの名無しさん
19/02/16 09:40:04.81 suSnt5KvM.net
>>163
いやそんなことはみんなわかっててでも本人やりたいならこうすればいいよって言ってるだけだろ
171:デフォルトの名無しさん
19/02/16 09:59:46.09 t+1YRxqBa.net
これはみんなボケてるの?
172:デフォルトの名無しさん
19/02/16 10:56:39.56 BHwuOYP40.net
ワザとだろう
173:デフォルトの名無しさん
19/02/16 10:58:48.72 yq1cCgqT0.net
ありがとう、みんなが背中押してくれたから決心が付いた(`・ω・´)
ヘッダーファイルint2str.hを作って
関数INT2STRの実体はint2str.cに記述、
int2str.hには
#ifndef _INT2STR_H
#define _INT2STR_H
...
#endif
でくくって多重定義を防ぐ(`・ω・´)b
174:デフォルトの名無しさん
19/02/16 13:29:20.93 GySit7mC0.net
#include <stdio.h>
int f(int i){
switch(i){
defalut:
return i;
}
}
int main(void) {
printf("%d\n", f(2));
return 0;
}
このコードを実行するとfの入力が何であっても0が出力されるんですけどなぜですか?
175:デフォルトの名無しさん
19/02/16 13:46:58.56 3/SZoFmmd.net
>>169
一応手元で試したらちゃんと2がでたよ。
printfでなくてmain関数の結果を表示してるとか?
176:デフォルトの名無しさん
19/02/16 13:49:29.31 BHwuOYP40.net
>>169
defalut:
177:デフォルトの名無しさん
19/02/16 14:04:34.91 WseEcsSPM.net
defaultがラベルになる?switch の中に return だけになるのか?switch 素通りして関数の最後に return 無いけど return 0 になるのか?これコンパイルとおるの?
少なくともコンパイル警告は出るはずだから、素人は警告無視すんな
178:デフォルトの名無しさん
19/02/16 14:11:52.03 BHwuOYP40.net
ラベルは、警告出ないだろう
これ昔ハマったことあるw
179:デフォルトの名無しさん
19/02/16 14:29:47.26 z2OC1C8Ix.net
あー、これね。
これそのものじゃないけどcaseを書き忘れて同じようにハマった経験あるわ。
180:デフォルトの名無しさん
19/02/16 14:34:18.78 h+JOL/Xg0.net
初心者なんですけどファイルをfopenで開いてからcloseせずに別のモードでまたfopenするのは問題ありですか?
181:デフォルトの名無しさん
19/02/16 14:41:10.94 FAU3Sbcr0.net
>>169
コピペして実行してみたがこちらでは 4195622 が出力されたw
gcc -Wall でコンパイルしてみると「ラベル ‘defalut’ が定義されていますが使用されていません」が出る。
綴り間違いだな。l と u が入れ違いになっている。
182:デフォルトの名無しさん
19/02/16 14:58:25.69 GySit7mC0.net
ありがとうございました!
綴が違っていたことに気づきませんでした!
183:デフォルトの名無しさん
19/02/16 15:18:12.53 jgcdGKnj0.net
なるほど -Wreturn-type とか -Wall つけないと int 型の関数に return が無くても警告出ないのか
184:デフォルトの名無しさん
19/02/16 15:31:05.97 3/SZoFmmd.net
>>170
コピペせずに手打ちでやったから "defalut" に気づかなかった。。
185:デフォルトの名無しさん
19/02/16 15:42:31.02 GG6HVTci0.net
バグの大半は手書き
186:デフォルトの名無しさん
19/02/16 16:44:51.50 /Su8h7T90.net
>>175
単一のファイルを複数回、fclose()しないでfopen()するってことかな。
複数の FILE* が単一のファイル(名)を操作してる状態。
FIO24-C. すでにオープンされているファイルをオープンしない
URLリンク(www.jpcert.or.jp)
↑によると「(前略)同一のファイルを同時に複数回オープンできるかどうかも、
処理系定義とする」ってことだから、一般的には好ましくないね。
すでにfopen()されててまだfclose()されてないファイルに対する
2回目のfopen()が成功する(場合もある)か、常に失敗するかも「処理系定義」だし。
187:デフォルトの名無しさん
19/02/16 18:01:42.08 OrPj8CII0.net
>>159,168 予約識別子はやめとこう。
188:デフォルトの名無しさん
19/02/16 19:51:50.72 h+JOL/Xg0.net
>>181
詳しい説明ありがとうございます
189:デフォルトの名無しさん
19/02/17 08:39:19.73 uUoaBuH/0.net
んじゃこうだな
#ifndef STDIO_H_
#define STDIO_H_ 1
...
#endif
190:デフォルトの名無しさん
19/02/19 10:01:13.72 IvpU5OFea.net
おまいらならFEのC言語問題余裕の全問正解なわけ?10分もかからんくらい?
191:デフォルトの名無しさん
19/02/19 10:15:05.54 +p6oUoec0.net
少し古いが第一種情報とエンベデッドスペシャリスト程度はクリアしてる
即答クイズじゃないんだから時間気
192:にするのは間抜けだぞ
193:デフォルトの名無しさん
19/02/19 17:04:59.95 uTkGj35D0.net
>>185
ああいう問題は実務では存在しないから簡単ではないよ。
194:デフォルトの名無しさん
19/02/19 18:44:17.22 BOKvhiPA0.net
マジで言い訳でもなんでもなく
業務のときと使う脳味噌が全然 違う。
普段 ファイルを単純に移動させるにも 外環境からどういう邪魔が入りうるか
プール単位で跨ぐときどういうセキュリティーホールがあるか
とかいうことを重箱の隅をつつくように考えてるのに
条件分岐を一度も使わずに素数生成しろ みたいな問題が出てくるんだもん
しかも出/入力データの危険性は一切考えない、っていうパターンがほとんど。
195:
19/02/19 18:54:53.10 BVj1SDNF0.net
>>188
>条件分岐を一度も使わずに素数生成しろ
おもしろい問題じゃないですか、三項演算子 OK ならできそうですね
196:デフォルトの名無しさん
19/02/19 18:56:33.83 +p6oUoec0.net
そういった類の具体的な問題対処能力を試してみたいのであればスペシャリスト系の過去問でも見てみれば?
エンベデッドかデータベース試験の午後の記述問題あたりがいいと思う
URLリンク(www.jitec.ipa.go.jp)
197:デフォルトの名無しさん
19/02/19 19:25:12.60 rpeG63p80.net
情報処理試験は実務やってたらAPよりスペシャリストのほうが簡単だわ。
198:デフォルトの名無しさん
19/02/20 17:11:05.26 5682Vwfvx.net
「100以下の素数を表示するブログラムを作りなさい」
どんなプログラムを作るかで実務向きかどうかを判断できるらしい。
199:デフォルトの名無しさん
19/02/20 17:34:21.53 yWD0fIVX0.net
で、実務向きと判断される人はどういう風に回答するんだろうかw
200:デフォルトの名無しさん
19/02/20 17:56:41.12 V5JGZApS0.net
「100以下の素数を表示するブログラムを作りなさい」だと
手打ちの固定テーブル(初期化済み配列)って解答もありそうだな。
2重のforループで「エラトステネスのふるい」を回して0/1の配列を生成。
値を表示する/しないは、要素2個の関数ポインタを格納した配列ってトリック。
そもそもfor, whileや三項演算子は「条件分岐」じゃないのか?
みたいな疑問を感じ始めると答えられないね。
201:デフォルトの名無しさん
19/02/20 18:03:03.37 /pFWY/nZ0.net
単純に考えれば素数を漏れなく見つけるにはエラトステネスのふるいによるしかない
いかにして無駄な計算を避けるかが重要
プラグラム言語よりもいかに数学的素養の能力を身に着けているかが問われる
馬鹿正直に2から100までループを回すようならまったく実務には向いてない
整数論の基礎だけで100以下の判定に必要な要素は2,3,5,7だけであることはすぐにわかる
プログラムに落とし込む以前の問題
202:デフォルトの名無しさん
19/02/20 18:09:44.13 yWD0fIVX0.net
該当する素数一覧が埋め込まれた文字列を表示するプログラムが一番速そう
203:デフォルトの名無しさん
19/02/20 18:34:58.50 MxetRGgJd.net
俺は拡張性がちらついてエラトステネスにしたくなるわ。どれだけの実行速度が求められるのかわからないとどの方法でやるか決心がつかなくてタイムアップしそうw
204:デフォルトの名無しさん
19/02/20 18:48:50.68 WptMO45ba.net
>>192
問題の意図や目的を明示せずに解かせた答えだけみても、その人がどんな意図でその回答を出したのかは断定できないから、これだけで実務がどうこう言うのは短絡的だとは思うよ。
よくある性格診断とかで、○○を選んだあなたは××な性格です~ってのがあるけど、�
205:烽キいてもまったく説得力のない決めつけがほとんどだし。それよりはいくぶんましだけど。
206:デフォルトの名無しさん
19/02/20 18:51:44.09 yWD0fIVX0.net
実務的には、「要求を満たし、簡潔にして高速で間違いがないこと」位かな
207:デフォルトの名無しさん
19/02/20 18:53:27.21 onU160B4F.net
>>199
いや拡張性をサッとそえとく心配りは必要だろ
208:デフォルトの名無しさん
19/02/20 18:55:22.57 MxetRGgJd.net
夜な夜な素数配列DBをどんどん作ってくれるプログラムと、素数配列DBから値を引っ張ってくれるプログラムの組み合わせでファイナルアンサーだ!
209:さまよえる蟻人間
19/02/20 18:55:39.06 AQq/x/Ljd.net
3以上の素数は奇数であること。
n以下の素数を調べるときは、ルートn以下の約数を調べればいいこと。
整数論を勉強したなら、これくらいは知っておいて欲しい。
210:デフォルトの名無しさん
19/02/20 19:05:39.41 agArr1lpa.net
>>199
組み込み用でメモリが非常に少ないマシン用のプログラムの場合もう一捻り必要。
211:デフォルトの名無しさん
19/02/20 19:07:07.48 agArr1lpa.net
ま、いいや。うちに帰ってから俺が変なプログラム作ってみるよ。
212:194
19/02/20 19:09:30.26 V5JGZApS0.net
>>196 こんな感じね。
#include <stdio.h>
int main(void)
{
puts("2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97");
return 0;
}
どうやって文字列を作ったかはヒミツ。本当に合ってるかは不明。
「素数なら表示し、素数でなければ表示しない」の部分は
テーブルがすでに出来てるとすれば、
tbl[i] && printf("%d\n", i);
てな具合に論理演算子の短絡評価を使う手もあるか。
パズルとしては面白いけど、実用で何の意味があるのか、
金払って受験する資格試験の問題としてどうなのか、疑問だなぁ。
213:さまよえる蟻人間
19/02/20 19:12:37.32 AQq/x/Ljd.net
素数の知識がなければ暗号解読やハッキングができないかも。
214:デフォルトの名無しさん
19/02/20 19:33:00.95 /pFWY/nZ0.net
この流れだと
世の中のあらゆる暗号鍵はあらかじめ配列に格納することで突破可能、どうやって配列を作るかは秘密
とか言い出しそうだな
本質が分かってない
素数を高速に表示することが目的ではなく素数を少ない計算量で見つける事が本来の目的
215:デフォルトの名無しさん
19/02/20 19:46:25.77 V5JGZApS0.net
>>188 「条件分岐を一度も使わずに素数生成しろ」
>>192 「100以下の素数を表示するブログラムを作りなさい」
2つの問題に同時に応えてるコメントがあるみたいね。
「条件分岐を使わずに100以下の素数を表示するプログラム」てことで。
かく言う自分もそのクチなんだけど。
216:さまよえる蟻人間
19/02/20 19:56:53.43 jAMIqMc60.net
>>207
そのアイディアに近いものはレインボーテーブルと呼ばれていて、すでに実用化されている。
217:デフォルトの名無しさん
19/02/20 20:08:03.07 /pFWY/nZ0.net
>>209
レインボーテーブルはハッシュの検索高速化のための技術だと認識してたけど、素数を利用した暗号鍵の
Decryptにも実用レベルで応用できるのか?
218:さまよえる蟻人間
19/02/20 20:23:16.84 jAMIqMc60.net
一般的なコンピューターでは素数暗号の解読は困難だね。A5/1 Security Projectが進めばどうなるかわからないが。
219:さまよえる蟻人間
19/02/20 20:25:26.46 jAMIqMc60.net
Windowsのユーザーアカウントくらいなら数日あれば。。。
220:デフォルトの名無しさん
19/02/20 20:27:13.73 EKI9LXSlM.net
>>192
「100以下の素数を表示するブログラムを作りなさい」
これ素数の定義が問題に記載されておないとただの数学の問題になってしまうな。
221:
19/02/20 20:30:13.22 P8vN2pc30.net
>>195
>整数論の基礎
素数だけで構成する積による表現がすべて自然数について存在すること、ならびに、この積の表現が一通りであることを証明してください
>整数論の基礎
単に掛け算の交換則だけでいいのでは?
222:
19/02/20 20:31:37.35 P8vN2pc30.net
>>197
エラトステネスの篩にも欠点があります。
篩の大きさだけ広大なメモリ空間を確保しなければなりません
限られたメモリ容量で超巨大な素数を求めることは可能ですか?
223:
19/02/20 20:32:29.86 P8vN2pc30.net
>>202
>3以上の素数は奇数であること。
>n以下の素数を調べるときは、ルートn以下の約数を調べればいいこと。
あえて聞きます、証明はどのようなものに?
224:
19/02/20 20:33:15.91 P8vN2pc30.net
>>205
それは表示した数が、果たして素数かどうか、を示してはいませんよね
225:
19/02/20 20:33:54.09 P8vN2pc30.net
>>206
RSA 暗号はもう古いです、今は elgamal 暗号がトレンドです
226:さまよえる蟻人間
19/02/20 20:33:59.13 jAMIqMc60.net
>>215
「ある整数の倍数の存在が周期的であること」を利用すれば、メモリーを節約できる。
227:
19/02/20 20:34:54.39 P8vN2pc30.net
>>207
>素数を少ない計算量で見つける事
個人的には、素数の原始根を求める方法が知りたいです、いまんところ力技で解くしかないかと
228:
19/02/20 20:37:58.24 P8vN2pc30.net
>>219
たしかに 2 と 3 の公倍数である 6 をもとに
6n + 1, 6n + 5 だけをテーブルに載せる、とかは可能ですね
私はやったことがない、それはどうでもいいとして、これをコード化(coding-realized) したのも見たことがありません、いつか誰かやるだろうと思っていたんですが、なかなか表に表れませんね
229:さまよえる蟻人間
19/02/20 20:44:12.93 jAMIqMc60.net
>>216
3以上の素数pが奇数でない、すなわち偶数であれば、偶数の定義より、pは2で割り切れるが、pに2以外の約数があれば素数でない。矛盾。□
230:デフォルトの名無しさん
19/02/20 20:48:00.19 ZC/ijL840.net
>>201
サーバー側ならこれが攻守最強だな。隙がねぇ……
231:さまよえる蟻人間
19/02/20 20:56:41.09 jAMIqMc60.net
>>216
時間切れ。すまん。
232:
19/02/20 20:59:36.97 P8vN2pc30.net
>>222
>pに2以外の約数があれば
ここがおかしい
233:さまよえる蟻人間
19/02/20 21:00:10.59 jAMIqMc60.net
>>221
素数プログラミングの競技に参加してやってみれば?
234:さまよえる蟻人間
19/02/20 21:01:27.72 jAMIqMc60.net
>>225
「約数2があれば」に訂正。
235:
19/02/20 21:02:29.11 P8vN2pc30.net
>>227
うむ、それでいい感じですね
236:さまよえる蟻人間
19/02/20 21:06:35.67 jAMIqMc60.net
倍数の周期性を使えばBuzzFizz問題の応用(多重化)でメモリーが節約できるはず。
237:さまよえる蟻人間
19/02/20 21:10:58.63 jAMIqMc60.net
バッチ処理で素数生成するなら、途中から計算を再開できるようにしておくとよい。
238:さまよえる蟻人間
19/02/20 21:12:34.79 jAMIqMc60.net
>>216
「素数生成 ルート」でWeb検索。
239:デフォルトの名無しさん
19/02/20 21:39:38.70 IdoLDUDuM.net
巨大な素数の一覧
URLリンク(ja.wikipedia.org)
1億桁を超える素数を発見すれば懸賞金が手に入るぞ
お前ら頑張れ
240:デフォルトの名無しさん
19/02/20 22:33:31.62 bRSP0nNv0.net
大学の授業でやってるがわけわからん
241:デフォルトの名無しさん
19/02/21 04:51:28.69 k7mDakXF0.net
「3以上の素数は偶数ではない」って、
「2以外の2の倍数は素数ではない」と言い換えられるよね。
対偶命題の真偽は等しい、ってことで。
「3以上」「2以外」の部分の処理がちょいと面倒かも知れんが。
素数の定義から自動的に成立する、トートロジーって気もする。
実用的には、チェックすべき対象が一気に半減するから
決して役に立たないつまらない事実とは言わないけど。
242:デフォルトの名無しさん
19/02/21 05:47:41.57 0ZBMuCH70.net
なぜ「nの倍数」のうち「2の倍数」だけを特別視するんだ?
243:デフォルトの名無しさん
19/02/21 06:56:30.22 k7mDakXF0.net
たぶん2の倍数に特別に「偶数」って名前がついてるから。
て言うか「2の倍数」を「偶数」と呼び替えるせいで
「3以上の素数は偶数ではない」がそれらしい命題に見える心理的効果。
244:デフォルトの名無しさん
19/02/21 07:07:07.36 0ZBMuCH70.net
じゃあ例えば3の倍数を俺数と呼ぶことにすれば
「5以上の素数は俺数ではない」がそれらしい命題に見えるわけか
245:デフォルトの名無しさん
19/02/21 09:23:02.63 hmZcoRew0.net
>>237
実際にそういう理屈で俺数をちゃんと名前つけて定義してた気がする
246:デフォルトの名無しさん
19/02/21 10:06:27.81 vm8j2cEaM.net
URLリンク(ja.wikipedia.org)
集合論的な数学理論の構成では集合やその元に対して写像や関係を導入し、それらが満たすべき公理を列挙する。その公理を満たすような「構造」を持った個々の集合が理論の具体的な実現を示していて、それら一つ一つの実現に共通の性質が公理から演繹的に証明される。
247:デフォルトの名無しさん
19/02/21 10:43:14.10 hP/J64Xh0.net
10進数で扱ったときに下一桁だけで素数でないか判定できるし
248:デフォルトの名無しさん
19/02/21 11:52:49.43 TYXtdJfXM.net
URLリンク(ja.wikipedia.org)
一般には、素数は代数体の整数環の素元として定義される(そこでは反数などの同伴なものも素数に含まれる)。このため、有理整数環での素数は有理素数と呼ばれることもある。
自然数あるいは実数の中での素数の分布の様子は高度に非自明で、リーマン予想などの現代数学の重要な問題との興味深い結び付きが発見されている。
249:デフォルトの名無しさん
19/02/21 12:21:11.52 9bhJdGzC0.net
>>240
意味ないじゃん
下位一桁で素数か判定できるなら有り難いが
250:デフォルトの名無しさん
19/02/21 12:24:22.12 ZaAjcalq0.net
2の倍数は1個となりにあるけれど3の倍数は2個となりにあるわけじゃないからだろ
251:デフォルトの名無しさん
19/02/21 12:26:58.45 hP/J64Xh0.net
世界の半数の人間を一気に殺せるとしたら、スゴイ兵器だろう
252:デフォルトの名無しさん
19/02/21 12:45:09.74 AfMCgFa5H.net
もういいからいいかげんCの話しろよ
253:デフォルトの名無しさん
19/02/21 12:48:37.97 FW7y2HsrM.net
URLリンク(ja.wikipedia.org)
ガウスの貢献はこの集合、今日整数の合同類 の環 ℤ/nℤ と呼ばれる代数系、の構造を詳らかにするものであった。第一に加法に関して考えれば、これは 1 を生成元とする巡回群を定める。第二に乗法に関しては、これは法 n に依存して性質が異なり、法 n が素数ならば体が得られる。このような方法により、計算の記述は簡素化される。
254:デフォルトの名無しさん
19/02/21 13:04:43.82 SFQD6HMZx.net
やっぱり理系はみんな素数が好きなのねん
255:デフォルトの名無しさん
19/02/21 13:23:11.53 ZaAjcalq0.net
平方剰余の相互法則は奇数の素数でしかなりたたないから2は特別らしい
256:デフォルトの名無しさん
19/02/21 20:15:32.30 lsmx9sV60.net
ダメプログラマだらけだな。
257:デフォルトの名無しさん
19/02/21 20:25:59.92 m+qFL4AC0.net
プログラマ以前のただのC言語の評論家の集まりだからな
数学の素養どころか一般的な定番アルゴリズムすら理解しているのか怪しいのがいくらでもいる
258:デフォルトの名無しさん
19/02/21 20:29:14.38 lsmx9sV60.net
「100までの素数」は単にロジックが書けるかどうかの話で、素数の話ではないだろうに。
259:デフォルトの名無しさん
19/02/21 20:33:10.06 m+qFL4AC0.net
配列に数字を並べて表示するだけの処理の何処にロジックがあるのやら
あれではただのゴリ押しだ
260:デフォルトの名無しさん
19/02/21 20:52:13.17 S9yUyDkx0.net
誰かがこの問題から実務向きかどうかがわかる、なんて言うからいけない
261:さまよえる蟻人間
19/02/21 21:00:34.34 3Jj6vI7vd.net
最近知ったことだが、clangとclang++には、-pedantic -Wallの他に-Weverythingというオプションがある。これを使えば最大限に警告してくれる。
262:デフォルトの名無しさん
19/02/21 21:25:46.65 lsmx9sV60.net
とりあえず、Cできない娘は受付時に言うとか、ホームページにわかるようにしてくれないとキツイ。
263:デフォルトの名無しさん
19/02/21 21:49:34.71 hP/J64Xh0.net
ロジックはアタマの中に
264:デフォルトの名無しさん
19/02/22 11:10:49.03 Wvys6/Wz0.net
>192
「オッケーグーグル、『100以下の素数を表示するブログラム』を端末にダウンロードして!」
265:デフォルトの名無しさん
19/02/22 15:27:06.91 bcwEHSMYa.net
С言語
266:デフォルトの名無しさん
19/02/22 15:32:39.50 MGDdaAr30.net
偶素数と奇素数
267:デフォルトの名無しさん
19/02/22 21:00:52.74 JBg0shn90.net
C言語とか勉強じゃなくて仕事だったり動くもの作らないと覚えられないと思うんだけど
何をすることでC出来るようになったの?
268:デフォルトの名無しさん
19/02/22 21:11:58.58 FtBJuZ9s0.net
勉強だったとしても動くもの作り続ければだろうよ
269:デフォルトの名無しさん
19/02/22 21:52:23.52 /efpuxREa.net
納期までに完成させないと大変な事になるというスリルとサスペンスが人間の能力を引き出すのです。
しかしこれは恐怖から逃れようとする行為なので恐怖がなくなる、または度胸がついてしまったらそこで終わりです。
270:デフォルトの名無しさん
19/02/23 16:48:48.66 RKMUv84W0.net
#defineじゃなくてconstすすめてくるやつは机上の空論だな
constつかったら最適ななしにするとswitchのラベルにつかえないじゃないか
271:デフォルトの名無しさん
19/02/23 17:14:59.00 7GKXwuwj0.net
>>263
C++ では const 変数を case ラベルに使えるから、混同してる人かも。
272:デフォルトの名無しさん
19/02/23 17:46:54.59 7GKXwuwj0.net
C なら「名前のついた整数」は enum だね。
スコープ効くし case のラベルにも配列定義の要素数の指定にも使える。
273:デフォルトの名無しさん
19/02/23 20:56:53.69 Ez7Plxd90.net
Cのenumはenum-baseがないから
どでかい定数には使えない
274:デフォルトの名無しさん
19/02/23 21:13:59.35 tyf/JAHu0.net
enumはあくまで値の大小は関係なくユニークな識別子であって、大きな値が問題になるような用途に使うのはいかがなものか。
275:デフォルトの名無しさん
19/02/23 21:41:02.60 W1FUX4jY0.net
プリミティブな定数以外のスイッチって
ものすごく気持ち悪いんだが
長大数渡して色々工夫してスイッチするのと
似たようなことコンパイラがやらなきゃいかんよね
276:デフォルトの名無しさん
19/02/24 07:48:44.15 RgZ/0jGo0.net
C の enum は「互いに区別できる一群の整数値の組」で、
具体的な値にさほど拘らない用途で使うべき、っていう
言語機能のそもそも論を言われると、その通りなんだよな。
その意味では case のラベルに enum の値を使うのはいいけど、
配列定義の要素数で使うのは便利にコキ使いすぎ、って感じか。
実際のところ enum で表現できる値の範囲が、
配列の要素数指定に使える範囲(size_t)と一致するか、という
疑問を持って調べたけど、いまいちハッキリせず今も解消してない。
まぁ、それ言うと case ラベルで受け入れられる値の範囲が
enum の範囲と同じか、についても確信ないんだが。
(権威主義に逃げ込む気はないと事前に言い訳した上で)
#define のマクロ値の代わりに enum の値を使うってのは、
カーニハンとパイクの『プログラミング作法』第1章、
「1.5 マジックナンバー」で紹介されてることを付記しておく。
277:デフォルトの名無しさん
19/02/24 08:31:42.99 fxLM3JpE0.net
enum
{
a = 4294967297
};
int main()
{
printf("%d\n", sizeof a);
printf("%llx\n", a);
}
gcc:
8
100000001
cl:
4
1
どっちが正しい?
とりあえずはコケるほうに合わせるが
278:デフォルトの名無しさん
19/02/24 08:40:26.06 7CaxIYof0.net
以前に組込み用途の8bitマイコン用C言語を使っていた時の話
CPUの機能的にint型は8bitだった
ところが多条件の分岐処理でif-elseを使った時よりenum変数のswitch文使った方が明らかにパフォーマンスが
低下して問題になったことがあった
訳が分からず逆アセンブルして調べてみるとenum変数は何故か16bitに展開されていて条件判定毎に型変換が
発生していたことが原因だっということがあった、という昔の思い出
279:デフォルトの名無しさん
19/02/24 13:48:01.77 gUJTdPsI0.net
>>271
int が 8bit という時点で仕様に反しているので
整数演算のいろんなところで暗黙に int に変換してから
計算する C のルールが破綻するんじゃなかろうか。
処理系が必ずしも言語の規格に完全準拠する必要はないけど、
基本的な部分で変えちゃうとどういう挙動になるのか
予想しづらいよな。
280:デフォルトの名無しさん
19/02/24 14:00:01.86 7CaxIYof0.net
charがその処理系の最小bit数であることだけは仕様に明記されてるけど
それ以外の整数型は大小関係だけが規定されていてintそのものに
具体的なbit数の決まりはなかったんじゃなかったっけ?
実際その時もchar、short、intが8bitで、longが16bitだったと思う
281:デフォルトの名無しさん
19/02/24 14:04:53.91 gUJTdPsI0.net
>>270
C ではこういうルールになっている
・ 列挙定数の値を定義する式は int 型で表現可能な値を持つ整数定数式でなければならない
・ 列挙体 (列挙型のオブジェクト) の大きさは要素の全てを保持可能な大きさをもつ
がその選択は処理系定義である。
・ 列挙定数の型は (列挙型ではなく) int である
つまり、 C では列挙体と列挙定数の型が異なり、
列挙定数の型は int そのもの。
それは単に int の大きさがそれぞれ違うってだけじゃないの?
だとするとどちらの挙動も仕様通り。
(余談だが C++ では列挙定数の型は列挙型なので、 C とは少し解釈が違う。)
282:デフォルトの名無しさん
19/02/24 14:05:53.36 yQAH7TUL0.net
>>273
気持ちとしては賛成したいんだが
残念なことにISO/IEC9899 5.2.4.2.1 Sizes of integer types <limits.h>に、
INT_MAX +32767と書いてあるんだ
腹立たしいクソ規定だがそうなっている
283:デフォルトの名無しさん
19/02/24 14:15:23.84 gUJTdPsI0.net
>>273
ビット数という形ではないが、
limits.h で定義される各整数型が表現可能な数値の範囲を表すマクロ
についての最低限度の値という形で間接的に定義されている。
C99 だと 5.2.4.2.1 にある。
int は実質的に 16bit は必要。
284:デフォルトの名無しさん
19/02/24 15:01:36.58 eMMK67XW0.net
整数型をワードより大きくしなきゃいけない
なんてなったら使い物にならんよな
285:デフォルトの名無しさん
19/02/24 16:23:47.05 9mv8IHEdd.net
確かにint型は規格的には最低16bit必要みたいだなぁ
C11 N1570 draft
5.2.4.2.1
―int型オブジェクトの最低値
INT_MIN -32767 // -(2^15 - 1)
―int型オブジェクトの最大値
INT_MAX 32767 // 2^15 - 1
6.2.5.5
「単なる」int型オブジェクトは実行環境のアーキテクチャにとって自然な(<limits.h>ヘッダに定義されたINT_MINからINT_MAXまでの任意の値を含むに十分大きい)サイズをもつ。
286:デフォルトの名無しさん
19/02/24 16:36:11.63 BJ3WFlaM0.net
>>271
そのせいで組み込みでswitch使うな伝説が発生したんだな
逆に16ビット以上なら使っても問題ないということか
287:デフォルトの名無しさん
19/02/24 16:49:38.07 7CaxIYof0.net
言語規格そのものというより標準ライブラリの都合というかヘッダーの仕様だけのような気がするけど
limit.hで最大値と最小値を規定するのであれば-128と127を宣言すればintの範囲を変更した実装も可能ではあるな
厳密には問題があるかも知れないけどC99準拠の実装と言うことでお茶を濁している処理系はあり得そうだ
288:デフォルトの名無しさん
19/02/24 19:23:23.70 iK4D+UQia.net
>>279
組み込み市場的に8ー16bitが主流だけどな。
289:デフォルトの名無しさん
19/02/24 22:09:42.91 8/luM3Zk0.net
一時期、組み込みもLinuxに席巻されそうになったこともあるけど昨今のIoTブームで16bit以下の超省電力が復権してきたイメージあるわ。
290:デフォルトの名無しさん
19/02/24 22:14:44.36 uaNZoE2Ca.net
でもそういう機器ってメモリの読み書きしかすることねえもんな。
あんまりおもろない。
291:デフォルトの名無しさん
19/02/24 22:24:41.13 7CaxIYof0.net
組み込みではLinuxどころかOSすら搭載してないシステムも多いよ
ネット家電なんかの一部を除けばエアコン、冷蔵庫、洗濯機など家電製品の殆どはOSもファイルシステムもネットワークスタックも無縁のスタンドアローン動作
電源投入リセット後ひたすら処理ループを回すだけ
CPUコアは8bitか16bitでRAMは数KB、ROMは数十KB程度のワンチップマイコン
292:デフォルトの名無しさん
19/02/24 22:29:53.46 7CaxIYof0.net
メモリの読み書きよりもIOポートを制御するのがメインの仕事
293:デフォルトの名無しさん
19/02/24 22:33:57.82 2wDVhIfR0.net
殆ど電卓だな
294:デフォルトの名無しさん
19/02/24 22:41:13.06 7CaxIYof0.net
電卓ほど単純ではないけどね
まともにフィードバック制御を実装するにはそれなりの演算負荷は掛かる
センサー入力に応じて出力を迅速安定に目標に追従させるには裏では予測判断も必要
マイコン使っている以上は単調なON/OFF制御では無いよ
295:デフォルトの名無しさん
19/02/24 22:49:58.22 gSQz1x8q0.net
欲深い人間のことだからどうせすぐいろんなことをさせたくなる
296:デフォルトの名無しさん
19/02/24 23:23:28.26 wTcw/8fo0.net
IoTなら制御はサーバー側じゃないの?
297:デフォルトの名無しさん
19/02/24 23:28:06.97 2wDVhIfR0.net
Fog computing がキーワードだそうだ
298:デフォルトの名無しさん
19/02/25 00:12:03.18 dk4D1NQWa.net
IOポート制御とメモリ読み書きの違いがわからない
299:デフォルトの名無しさん
19/02/25 00:27:51.25 LzC1voP10.net
メモリーバスが I/O につながってることもあるしな。
300:デフォルトの名無しさん
19/02/25 06:19:38.59 /Zb+jKgT0.net
>>291
IOポートを弄るにはそれぞれのSFR(特殊機能レジスタ)を操作する
一般的なメモリマップトIO方式ではSFRはCPUの特定のアドレス空間にマッピングされてる
Cプログラムからはそのアドレス空間をそれぞれ適当な変数に割り当てて基本的にはビット操作で制御する
SFRのイメージが分からなければ適当なマイコンのデータシート�
301:ナも見てみるとある程度は分かると思うよ 参考として電子工作で有名なPICマイコンのサイト貼っておくので見てみるといいよ
302:デフォルトの名無しさん
19/02/25 06:22:12.63 /Zb+jKgT0.net
ごめん
リンク貼り忘れた
URLリンク(www.microchip.co.jp)
303:デフォルトの名無しさん
19/02/25 07:08:32.40 YApQAEs00.net
>>274
だな
あのあとgcc -pedanticとやってみたら
ちゃんと警告出たわ
304:デフォルトの名無しさん
19/02/25 07:37:13.02 p9N2Idf00.net
組み込みマイコンでI/O空間がx86みたいに別なマイコンってあるかな
305:デフォルトの名無しさん
19/02/25 07:40:18.98 dk4D1NQWa.net
>>293
だから、区別ないじゃん
306:デフォルトの名無しさん
19/02/25 07:52:33.64 /Zb+jKgT0.net
メモリ(RAM)に割り当てられた変数は演算とその結果に意味がある
IO(SFR)に割り当てられた変数はビットのR/W操作そのものに意味がある
SFR変数上で演算操作を行うとほぼ確実に誤動作、暴走する
307:デフォルトの名無しさん
19/02/25 07:58:55.56 51Y60IO10.net
>>297
I/Oポートの挙動はメモリと同じとは限らない
書き込みと読み出しが別のものに繋がっていることもある
volatileは本来このためにある
308:デフォルトの名無しさん
19/02/25 08:52:03.76 OZaxYFd40.net
本当か?
揮発性だぞ
309:デフォルトの名無しさん
19/02/25 08:52:04.55 QDSDQN71x.net
>>296
あるよ。AVRはメモリマップされたIO空間にin/out命令で効率的にアクセスできる。
310:デフォルトの名無しさん
19/02/25 10:42:31.86 KHsK1sBo0.net
>>299
READアクセスでSR、WRITEアクセスでCRというケースは珍しくないが
なんで突然volatileが出てくるんだ? 全然関係ないぞ
311:デフォルトの名無しさん
19/02/25 11:12:53.53 /Zb+jKgT0.net
Read動作を確実に実行するためだろう
プログラム上はSFR変数からダミー変数への代入にしか見えないので何の演算にも関与しないと判断されて
コンパイル時の最適化で処理が削除される恐れがある
SFR変数はvolatile宣言しておくのが普通
312:デフォルトの名無しさん
19/02/25 11:41:24.89 KHsK1sBo0.net
それはREADの回数やタイミングの話だろ
READとWRITEで対象が異なる場合があることと何の関係があるんだよ
313:デフォルトの名無しさん
19/02/25 11:52:53.97 /Zb+jKgT0.net
そこに拘っていたのか
てっきりメモリとIOによる変数の扱いの注意点のことかと思っていたわ
314:デフォルトの名無しさん
19/02/25 11:58:40.63 QDSDQN71x.net
volatileなしだと、同じsfrにwriteした直後にreadすると最適化により実際にはreadされないことがある。
315:デフォルトの名無しさん
19/02/25 12:03:53.38 s/jxdMxMa.net
メモリとIOは違うっていっても、要は裏でなんかやってるだけだし。
だからvolatileなんて話も出てくる。
316:デフォルトの名無しさん
19/02/25 12:15:38.73 KHsK1sBo0.net
>>305
他に何に拘っていると言うんだ?
> 書き込みと読み出しが別のものに繋がっていることもある
↑
何の関係があるんだ
↓
> volatileは本来このためにある
答えるか撤回かどうなんだ
317:デフォルトの名無しさん
19/02/25 12:41:00.22 QDSDQN71x.net
>>308
>>306
318:デフォルトの名無しさん
19/02/25 12:44:45.62 KHsK1sBo0.net
>>309
306は話のすり替えだ
READの回数やタイミングの話なんかしていない
READとWRITEの対象が違うということについてだ
volatileと何の関係があるのか
ただの言い間違えか
どっちだ?
319:デフォルトの名無しさん
19/02/25 12:48:10.76 QDSDQN71x.net
>>310
CRにwriteした直後に同じアドレスのSRをreadした時に最適化され、write値がそのままread値に使われるのをvolatileなしでどうやって回避するのん?
320:デフォルトの名無しさん
19/02/25 12:49:09.15 y5m/9TYHM.net
>>308
横からだけど>>305の2行目ぐらい読んでやれよ
それとも俺様に謝らないと許せないってか? w
321:デフォルトの名無しさん
19/02/25 12:53:40.05 /Zb+jKgT0.net
>>308
知らんがな、>>299本人に聞けよ
一般に言えることはメモリ上の変数の場合は読み込みと書き込みの間には必ず何らかの関連性を持っている
意味もなく読み込みや書き込みを行うことはなくその値は必ず何処かで利用される
利用されなければ変数もろとも普通は最適化で削除される
SFRの変数の場合はRead/Writeその操作の行為そのものが目的であってその結果その値がどうなろうが値そのものには何の意味もない
コンパイラにそのことを明示的に指示する方法がvolatileということ
322:デフォルトの名無しさん
19/02/25 12:57:22.86 P8ZqxZ/40.net
こうして見るとやはりC言語は組み込み屋専門ということか
話が難しすぎてついていけねえw
323:デフォルトの名無しさん
19/02/25 12:59:43.43 KHsK1sBo0.net
>>311
という説明ができるの、あんただけみたいだな
頓珍漢なレスばっかでイラついてたわ
324:デフォルトの名無しさん
19/02/25 13:15:23.23 QDSDQN71x.net
>>314
全然難しくはないし、組み込みに限った話じゃないよ。
ただ単に「今見えている処理とは別のとこからそのアドレスの値が更新される可能性があるので最適化しちゃダメよ」ってのを明示的に示すためのvolatileなので。
C#やJavaとかでもスレッドをまたいで不用意にアクセスする変数はvolatileつけないとバグるし。
325:デフォルトの名無しさん
19/02/25 13:16:39.48 X/kVtIsHa.net
組込専門、みたいなひとって抽象的な話のできないクソ多いよ。
コードもクソが多い。sleepせずにビジーウェイト使うタイプ。
326:デフォルトの名無しさん
19/02/25 13:17:16.26 /Zb+jKgT0.net
横レスだけどWrite属性のSFRの値(この場合CR)をReadしても値は不定だけどね
同一アドレスにマッピングされているRead属性のSFRの値(SR)の値が返ってきて変数に代入されているだけ
普通はWrite属性のSFRの状態を記憶する必要があればバッファ変数に内容を保存しておく
327:デフォルトの名無しさん
19/02/25 13:49:48.67 KHsK1sBo0.net
write属性なんて用語あったっけ
ゲートだけ出てるのはREでデコード
トーテムポールになってるのをWEでデコード
というのは属性か?
328:デフォルトの名無しさん
19/02/25 14:03:17.60 /Zb+jKgT0.net
Read/Write属性というのはあるよ
むしろその方が多い
ただ前レスに出てきたCR(コントロールレジスタ)とSR(ステータスレジスタ)は意図的にその名称通りにWriteまたはRead専用属性の例として
提示してきたんだろ、多分
329:デフォルトの名無しさん
19/02/25 14:20:45.00 KHsK1sBo0.net
いやーないだろ
ゲートが出てるだけのユニットにWRITEサイクルを実行なんてしねえし
330:デフォルトの名無しさん
19/02/25 14:31:07.16 /Zb+jKgT0.net
すまん
書き込みの意図がいまいちよく分からんのだけど出力形式の切り替えの話か?
オープンコレクタ出力とトーテムポール出力の切り替えか?
というかこの文脈でデコードの意味が分からん、何のこと?
331:デフォルトの名無しさん
19/02/25 14:45:57.95 P9mrobVPa.net
キモい奴だなおい
332:デフォルトの名無しさん
19/02/25 14:54:09.36 ruBOF67JM.net
誰かわかる奴いるのか?
俺も>>319は意味わからん
333:デフォルトの名無しさん
19/02/25 15:17:20.76 80dSpUWIM.net
何となくだけど入出力兼用ポートの設定か?
334:デフォルトの名無しさん
19/02/25 17:25:52.43 8PqGNbvAd.net
volatileの話が本筋と関係ないなら適当に流して先に進めばよかったんだよ。
それなのに噛みついて話を爆発させてしまったところにコミュニケーション能力の欠如を感じる。
335:デフォルトの名無しさん
19/02/25 17:28:47.58 t1ehA5N1M.net
このスレはC言語という話題を通じてマウント取り合うスレなので、今日も平和に通常運転。
336:デフォルトの名無しさん
19/02/25 18:07:46.57 Gp/kzS5R0.net
ゲートが出てるのがオープンコレクタとかもう
そのうち電圧が流れるとか言い出しそうな勢いだな
337:デフォルトの名無しさん
19/02/25 18:39:15.96 HIs9VhePM.net
volatileまではまだ分かる
ゲートやトーテムポールやデコードの単語の羅列は意味不明
338:デフォルトの名無しさん
19/02/25 19:02:12.96 y5m/9TYHM.net
>>320
> Read/Write属性というのはあるよ
いやいや、 Read onlyとかWrite onlyって言うのはわかるけどRead/Write属性なんて言う用語を使うか?
って話な
>>324
なんとなくデコードって言うのはアドレスデコードした信号(要するにChip select)にRE(多分Read enable)とかWE(Write enable)をandする話だと思う
ゲートとトーテムポールはよくわからん
339:デフォルトの名無しさん
19/02/25 20:16:10.80 UvFSeIeRM.net
>>330
そういうことか
マイコン内蔵デバイスの話ではなくてガチのハードウェア回路設計のアドレスデコードとコントロール信号の話か
唐突過ぎて訳が分からなかった
340:デフォルトの名無しさん
19/02/25 20:28:08.49 QIf4DqH5M.net
ReadやWriteではなくて入力信号と出力信号だな
341:デフォルトの名無しさん
19/02/25 20:33:09.01 8ylBAHsD0.net
内部or外部CPUバスのことを言ってるにしても、Write onlyがないってとこに繋がらない。
やっぱ解読不可だわ。
342:デフォルトの名無しさん
19/02/25 20:33:17.49 MFA8pp4Y0.net
そういえばread-modify-writeっのを思い出したな
もう10年以上前の事だが
343:デフォルトの名無しさん
19/02/25 20:50:44.04 QIf4DqH5M.net
懐かしい話題だな
わざわざラッチ回路を設けて問題回避したりしていたな
344:デフォルトの名無しさん
19/02/26 06:45:38.56 H5mf7PMC0.net
>>330
ちょっと亀レス気味だけど、確かに属性というのは一般的ではなかったかな
当時使っていたCコンパイラでは同一アドレスにマッピングされたRead OnlyとWrite OnlyのSFR変数は
共用体unionで宣言するのだけど、それぞれが読み込み/書き込み専用の変数名であることを明示するために
プリプロセッサの#pragmaでいわゆる属性(R, W, R/W)を宣言することが出来た
Read属性変数に代入操作を行なったりするとコンパイル時に警告されるような仕組みになってた
345:デフォルトの名無しさん
19/02/26 07:46:54.76 25yR6Zgwx.net
write属性レジスタってのは確かに一般的ではないけど、かといって用語としてwrite専用レジスタじゃないといけないって明確なルールもないだろうし、仕様書書いてるわけじゃないので別に雰囲気で伝わるから気にしなくていいんじゃない?
346:デフォルトの名無しさん
19/02/26 08:50:06.80 Dl2cSn2NM.net
一般的な用語じゃないとそこにどんな機能が含まれてるかわからんからな
>>336見りゃわかると思うがそもそもレジスタの機能ですらなかったわけだし
347:デフォルトの名無しさん
19/02/26 09:19:26.09 8U12byKKM.net
議論の流れで大体わかるけどな
さすがにプログラム言語やマイコンの話の中でいきなり回路設計の話が出てきた時は
しばらく話について行けなかったが
348:デフォルトの名無しさん
19/02/26 12:28:24.64 Dl2cSn2NM.net
>>339
お前はわかるのかも知れんが>>319みたいにちゃんと確認しようとする奴もいる
そもそも一般的で無い用語を使う理由もないだろ
349:デフォルトの名無しさん
19/02/26 12:41:52.52 25yR6Zgwx.net
これぐらいのことが話の流れで推測できないなんて、生き辛そう。
お大事に。
350:デフォルトの名無しさん
19/02/26 12:49:02.64 7/JIXwXVM.net
>>317で指摘されているけど抽象的な話のできない人というのは確かにいるからな
351:デフォルトの名無しさん
19/02/26 13:31:09.42 H5mf7PMC0.net
確かに昔からハードウェア弄ってきた純粋の組込み専門屋にとって、周辺デバイスの制御レジスタをSFR変数として抽象化して捉えることが出来ないとは思ってもなかった
一般的ではなくても属性で話は通じると思ってたんだけどなあ
というか本当にC言語で開発してるのだろうか?
352:デフォルトの名無しさん
19/02/26 13:45:18.64 hfhf4rvY0.net
「出来ないとは思ってもなかった」
否定の否定表現でわかりにくい。
353:デフォルトの名無しさん
19/02/26 14:19:05.67 QncW9pKQH.net
SFRって特定アーキテクチャの特殊用語じゃん。何勝手に一般化してるん。
354:デフォルトの名無しさん
19/02/26 14:38:19.53 WUqkAqLeM.net
ワンチップマイコン使ったことが無いのなら口を挟まないほうがいいよ
どこの製品でもSFRで話は通じる
355:デフォルトの名無しさん
19/02/26 14:46:05.57 qT2RVqJL0.net
分かったからワンチップマイコンは別の所でやれ
356:デフォルトの名無しさん
19/02/26 14:55:37.46 4VLeDBYTd.net
もしかして組み込み以外の話は
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
で聞いた方がいいのか?
357:デフォルトの名無しさん
19/02/26 15:07:48.55 qT2RVqJL0.net
C言語の一般的な話題を扱うスレなんだから
特定の人間を排除するような発言をするのはおかしいだろう
そういう特定の話題をしたいならスレを立ててすればいい
ワンチップマイコンは専用スレ立ててそこでやれと言う話
358:デフォルトの名無しさん
19/02/26 15:14:00.56 XovqVjcQM.net
今や純粋なC言語の所理系は初心者の学習用途か組込み開発用途くらいでしか使われていない
スレに組込み開発経験者が集まるのは自然な流れ
359:デフォルトの名無しさん
19/02/26 15:18:02.00 XovqVjcQM.net
どちらかといえばC言語学習者は高圧的で排他的な気はする
360:デフォルトの名無しさん
19/02/26 15:29:48.44 qT2RVqJL0.net
集まるのは良いが、「黙ってろ」はないな
361:デフォルトの名無しさん
19/02/26 15:45:14.31 vHMOYNHiM.net
妥当な発言なら問題ないんだけどね
挑発的な発言が目に余るので煽り発言は控えたほうがいいと言ってるだけ
362:デフォルトの名無しさん
19/02/26 15:46:01.71 qT2RVqJL0.net
そういう発言自体が荒らしになるとは思わないのか
363:デフォルトの名無しさん
19/02/26 15:48:03.09 qT2RVqJL0.net
そもそもワンチップマイコンの知識は
C言語の話題をやり取りする上で必須ではないだろう
そういう話題を話したいなら専用スレを立てろと言っている
364:デフォルトの名無しさん
19/02/26 15:48:26.91 vHMOYNHiM.net
人にとやかく言う前に自分の発言見直して見れば?
365:デフォルトの名無しさん
19/02/26 16:10:12.93 lxe9rt7zM.net
相変わらずみんな仲いいな。
今日も平和に通常運転。
366:デフォルトの名無しさん
19/02/26 17:43:39.42 k06atLuFa.net
みんな愛し合っているのさ
367:デフォルトの名無しさん
19/02/26 18:00:07.68 4VLeDBYTd.net
現実から目をそらすな。明らかに仲悪そうだぞ。
368:デフォルトの名無しさん
19/02/26 18:03:23.92 UtNGjYRh0.net
大嫌い 大嫌い 大嫌い 大好き☆
369:デフォルトの名無しさん
19/02/26 18:35:04.99 c2o2e7e/a.net
>>359
つんでれ
370:デフォルトの名無しさん
19/02/26 19:43:38.47 hfhf4rvY0.net
>>346
それ単にプログラム内のルールにすぎない。どんな言語であれ、入れ物を使い分けを限定することで、プログラマのミス防止や可読性、保守性が高まるのは、まともなプログラマなら必ずやっている。
これがハードウェアの機能にあるのか、ソフトウェアの機能にあるのか、それともそんな機能はないのでコーディングルールなのかの違いにすぎない。
371:デフォルトの名無しさん
19/02/26 19:52:11.95 hfhf4rvY0.net
>>346
それ単にプログラム内のルールにすぎない。どんな言語であれ、入れ物を使い分けを限定することで、プログラマのミス防止や可読性、保守性が高まるのは、まともなプログラマなら理解している。
これがハードウェアの機能なのか、ソフトウェアの機能なのか、それともそんな機能はないのでコーディングルールなのかの違いにすぎず、現代では常識的な話。
コンピュータにとっては動けばいいわけで、設計の話とアーキテクチャの話をごちゃ混ぜするからよくない。
高水準言語であればあたりまえすぎることだが、C言語は中水準言語で、OS、ハードウェアの組み合わせにより、動きが異なるから、本来は仕様、設計があって考えること。
これがアーキテクチャがこうだから、こういう発想になるというのは順番が逆。
372:デフォルトの名無しさん
19/02/26 19:57:57.62 Dl2cSn2NM.net
普通に一般化してる用語で話せばいいのになぜかオレオレ用語使って指摘されたらわからないのかとか逆ギレw
なんとなくはわかってもそのローカル用語が意図してるものと自分が思ってるものが同じかどうかはわからんから指摘してるのに…
まともなエンジニアじゃないんだろうな
373:デフォルトの名無しさん
19/02/26 20:20:38.82 c2o2e7e/a.net
長文が溢れるスレ
374:デフォルトの名無しさん
19/02/26 20:45:40.56 rW40iFORM.net
知識や能力の不足に対する自己防衛反応みたいなものだから流し読みしてればいい
375:デフォルトの名無しさん
19/02/26 21:45:18.69 7TQlJfaY0.net
>>366
>>353, >>356
376:デフォルトの名無しさん
19/02/27 12:00:03.35 wHsSBDML0.net
具体例なしで一般論しか言わないやつは信用できない
特徴は具体的な質問されると話をそらすか黙り込むやつ
377:デフォルトの名無しさん
19/02/27 12:55:17.62 1o6M4rIDa.net
そんな一般論だけ書かれても・・・
378:デフォルトの名無しさん
19/02/27 17:52:20.13 n00Gq01P0.net
>>346
あ? ベアメタル系のプロだが
おまえみたいな手合いがSFRとかどういう意味で言ってるのかは警戒するぞ
379:デフォルトの名無しさん
19/02/27 18:37:51.02 OX9NrkAd0.net
ベアメタル系のプロの意味がよく分からないけどC言語と何か関係あるの?
380:デフォルトの名無しさん
19/02/27 21:26:14.35 1o6M4rIDa.net
Bare ボーン
まゆげボーン
381:デフォルトの名無しさん
19/02/27 22:06:45.86 n00Gq01P0.net
貴様が知る必要はない
382:デフォルトの名無しさん
19/02/27 23:34:44.12 OqYQPgaeM.net
大体何と勘違いしたのか予測はつくがおそらく間違ってるぞ
少なくともx86系では通用しない
383:デフォルトの名無しさん
19/02/28 08:01:20.41 7nNuTdUM0.net
だから具体例を書けよ
384:デフォルトの名無しさん
19/03/01 15:17:20.50 ixp8onlm0.net
すみません、初心者なんですが図書館にプログラミング言語Cという本があったので借りてきて勉強中です。
p105のコード
nはint
if(n / 10)
printd(n / 10)
なんで割り算自体を条件に出来るのですか。
385:デフォルトの名無しさん
19/03/01 15:19:35.58 24bVz3/E0.net
出来るかどうかは自分で試した方がいい
その上で、なんでそうなるかを考え、
分からないときに聞きにおいで
386:さまよえる蟻人間
19/03/01 15:20:45.58 7MuZNvWwd.net
>>376
わり算の結果(この場合は整数)がゼロじゃなかったら論理値の真(true)と見なされる。
387:デフォルトの名無しさん
19/03/01 15:23:30.96 ber2ILYja.net
>>376
C言語のifは0か0以外かしか見ていないため。
388:デフォルトの名無しさん
19/03/01 15:38:09.31 ixp8onlm0.net
>>378 >>378
ありがとうございます、==とか>とかでの比較しか頭になかったんですけど、ifは0かどうかだけなんですね。
389:デフォルトの名無しさん
19/03/01 15:53:16.08 nQNJhNQvd.net
他の言語でいえば
1:true
0:false
って感じですな
390:デフォルトの名無しさん
19/03/01 15:54:07.94 nQNJhNQvd.net
>>381
この表現は語弊があるので忘れてください、すみません
391:デフォルトの名無しさん
19/03/01 16:01:43.78 yZJ4Zkhu0.net
>>376
こういうように条件文に、実質的なbool 値以外を書いたら、ダメ!
MISRA-C みたいな、安全なコーディング規則があって、禁止事項になってるから、
普通のプログラマーは、変に思うはず