↑
次スレを作る時は上記1行をコピーして2行に増やして必ず1行目に入るようにしてください。
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言語なら俺に聞け 149
https://mevius.5ch.net/test/read.cgi/tech/1540731704/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 150
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (アウアウクー MM57-IE4z)
2019/02/06(水) 13:39:03.21ID:c4bnQMl3M2デフォルトの名無しさん (アウアウクー MMb3-IE4z)
2019/02/06(水) 13:43:35.56ID:c4bnQMl3M ミスってる
!extend:checked:vvvvv:1000:512
を書き込み内容にするためにもう一行書かなければならないのね
!extend:checked:vvvvv:1000:512
を書き込み内容にするためにもう一行書かなければならないのね
3デフォルトの名無しさん (ワッチョイ df52-5rgS)
2019/02/06(水) 13:53:52.35ID:bwpbLxE30 そうしろって書いてあるじゃん
4デフォルトの名無しさん (ワッチョイ 7fa5-se+6)
2019/02/06(水) 14:08:04.08ID:6cW+g5Qj0 違うな
シェバンに類似する特殊な一行目は書き込みすると失われる、だろ
だから次の手順説明のために同じものをもう一行増やす
しかも「必ず1行目に入るように」って書いてあるから二行に増やしても先頭に空白行があると受理されないハズだ
もう一行書くだけじゃダメだからな
シェバンに類似する特殊な一行目は書き込みすると失われる、だろ
だから次の手順説明のために同じものをもう一行増やす
しかも「必ず1行目に入るように」って書いてあるから二行に増やしても先頭に空白行があると受理されないハズだ
もう一行書くだけじゃダメだからな
5デフォルトの名無しさん (ワッチョイ ff63-S1Ul)
2019/02/06(水) 14:19:35.82ID:NIgQMFwf0 >>1 乙です、ドンマイ
6デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/06(水) 16:08:05.73ID:1SbGZlcV0 では、続きをしようか
986 名前:デフォルトの名無しさん (ワッチョイ df01-vS77)[sage] 投稿日:2019/02/06(水) 04:57:27.49 ID:eUM592Vs0
ループから抜けるときに goto使ったらダメなんですか?
for (...) {
for (...) {
if (...) goto LOOP_EXIT;
}
}
LOOP_EXIT:
こういう感じで書いたら先輩に怒られました。
フラグ見てループ抜けるように修正しろと。
指示されたので従いますけど、どうしてダメなのかよく分かりません。
どなたか納得するような理由をご存知でしょうか?
986 名前:デフォルトの名無しさん (ワッチョイ df01-vS77)[sage] 投稿日:2019/02/06(水) 04:57:27.49 ID:eUM592Vs0
ループから抜けるときに goto使ったらダメなんですか?
for (...) {
for (...) {
if (...) goto LOOP_EXIT;
}
}
LOOP_EXIT:
こういう感じで書いたら先輩に怒られました。
フラグ見てループ抜けるように修正しろと。
指示されたので従いますけど、どうしてダメなのかよく分かりません。
どなたか納得するような理由をご存知でしょうか?
7デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/06(水) 16:09:43.98ID:1SbGZlcV0 若き日の俺は、gotoの他にフラグも無闇に使うなと教わったものだが
フラグはいいってことになったのは、いつからだ? どういう経緯でだ?
フラグはいいってことになったのは、いつからだ? どういう経緯でだ?
8デフォルトの名無しさん (ワッチョイ df52-S1Ul)
2019/02/06(水) 16:21:58.32ID:bwpbLxE30 Cにはラベル付きbreak文って無いんだね初めて知った
Javaのラベル付きbreak文
loop_exit: for(...) {
for(...) {
if (...) {
break loop_exit;
}
}
}
まぁJavaでもあまり使ったことないけど…。
Javaのラベル付きbreak文
loop_exit: for(...) {
for(...) {
if (...) {
break loop_exit;
}
}
}
まぁJavaでもあまり使ったことないけど…。
9デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/06(水) 16:41:15.95ID:1SbGZlcV0 #define break goto
みたいなしょーもないことしても本質的に何も変わっちゃいねえ
みたいなしょーもないことしても本質的に何も変わっちゃいねえ
10デフォルトの名無しさん (アウアウカー Sa53-MNmT)
2019/02/06(水) 18:02:39.46ID:CtZpHCTya gotoよりフラグがやばいよな。
11デフォルトの名無しさん (ワッチョイ ff02-vS77)
2019/02/06(水) 19:00:59.18ID:jnwpwdAT0 goto があっても
いいじゃないか
C言語だもの
いいじゃないか
C言語だもの
12デフォルトの名無しさん (アウアウクー MMb3-rTH6)
2019/02/06(水) 19:48:43.15ID:KUGC24GrM goto文そのものが悪いわけではない。いまだにgoto文の使用そのものがよくないというやつらのせいでおかしくなっている。
goto文で前のif文内に飛んでみたり、ループのなかに飛んでみたりと、乱用して人間には理解しづらいスパゲティプログラムを作るなという話なのに。
continue文だって実体はgoto文で、コンピュータにとってはメモリ上のマシン語を順番に実行しない場合はすべてメモリのアドレスのジャンプでgoto文。
goto文で前のif文内に飛んでみたり、ループのなかに飛んでみたりと、乱用して人間には理解しづらいスパゲティプログラムを作るなという話なのに。
continue文だって実体はgoto文で、コンピュータにとってはメモリ上のマシン語を順番に実行しない場合はすべてメモリのアドレスのジャンプでgoto文。
13デフォルトの名無しさん (ワッチョイ 7fab-qf6r)
2019/02/06(水) 20:21:21.69ID:WRu6z6Oe0 センサーで取得した計測値を数値では無く文字列で返す関数を作ろうと思ってる。
どんな計測結果が得られるか事前には分からないため文字列のサイズは関数内で
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);
}
の二つの方法があるけど
一般的にはどっちの方法がお薦め?
どんな計測結果が得られるか事前には分からないため文字列のサイズは関数内で
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デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/06(水) 20:30:53.85ID:1SbGZlcV015デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/06(水) 20:31:48.22ID:1SbGZlcV0 >>13
別にどっちでも
別にどっちでも
16デフォルトの名無しさん (ワッチョイ 7fab-qf6r)
2019/02/06(水) 20:34:02.27ID:WRu6z6Oe0 >>15
そ、そう・・・
そ、そう・・・
17デフォルトの名無しさん (ワッチョイ df7b-se+6)
2019/02/06(水) 20:50:04.50ID:y48wBDHW0 >>13
> センサーで取得した計測値を数値では無く文字列で返す関数を作ろうと思ってる。
これ自体が糞。
計測値は生で保持して、表示する時だけ文字列に変更しろ。
そうすればprintfだけで行けるだろ。
無駄に可変長のバッファなんて持とうとするから無駄に面倒になる。
初心者だから分からないのだと思うが、そもそも複雑にならないように全体像をまず組むんだよ。
> センサーで取得した計測値を数値では無く文字列で返す関数を作ろうと思ってる。
これ自体が糞。
計測値は生で保持して、表示する時だけ文字列に変更しろ。
そうすればprintfだけで行けるだろ。
無駄に可変長のバッファなんて持とうとするから無駄に面倒になる。
初心者だから分からないのだと思うが、そもそも複雑にならないように全体像をまず組むんだよ。
18デフォルトの名無しさん (アウアウカー Sa53-MNmT)
2019/02/06(水) 21:37:14.88ID:CtZpHCTya voidにするならポインタ返した方がいいと思うよ。
正しさでいうと、既存のライブラリ使ってシリアライズするのが正しい。
正しさでいうと、既存のライブラリ使ってシリアライズするのが正しい。
19デフォルトの名無しさん (ワッチョイ df01-vS77)
2019/02/06(水) 22:39:39.17ID:eUM592Vs0 関数の戻り値は処理の成否のみを返す。
正常終了なら0、異常終了なら非ゼロ。
入出力は引数で渡す。
と、決めて統一するのが良いと思う。
正常終了なら0、異常終了なら非ゼロ。
入出力は引数で渡す。
と、決めて統一するのが良いと思う。
20デフォルトの名無しさん (ワッチョイ 7fab-qf6r)
2019/02/06(水) 22:43:12.36ID:WRu6z6Oe0 助言ありがとう
確かに関数の戻り値は処理の成否のみに限定するのはスッキリしていいかも
> 文字列で返すのが糞
確かにその通りで(;^ω^)
確かに関数の戻り値は処理の成否のみに限定するのはスッキリしていいかも
> 文字列で返すのが糞
確かにその通りで(;^ω^)
21デフォルトの名無しさん (ワッチョイ df01-vS77)
2019/02/06(水) 23:32:22.18ID:eUM592Vs0 重要なのは統一するってこと。
標準ライブラリには戻り値に二つの意味を持たせているのが多いから、個人的に好きじゃない。
fopen() 成功時はファイルポインタを返し、失敗時はNULLを返す。
strtol() 成功時は変換結果を返し、失敗時は0を返す。
これじゃ変換結果が0なのか、失敗して0なのか分からない。
で、errnoを見ろってことになってる。
なんでこうなってるかというと、戻り値に処理の成否と結果の二つを持たせているから。
だったら、分ければいいじゃんって話。
標準ライブラリには戻り値に二つの意味を持たせているのが多いから、個人的に好きじゃない。
fopen() 成功時はファイルポインタを返し、失敗時はNULLを返す。
strtol() 成功時は変換結果を返し、失敗時は0を返す。
これじゃ変換結果が0なのか、失敗して0なのか分からない。
で、errnoを見ろってことになってる。
なんでこうなってるかというと、戻り値に処理の成否と結果の二つを持たせているから。
だったら、分ければいいじゃんって話。
22デフォルトの名無しさん (ワッチョイ df7b-se+6)
2019/02/06(水) 23:38:05.98ID:y48wBDHW0 >>20
多分相場が分かってないのだと思うけど、
正しく初心者の自覚があるのなら、ある程度縛りプレイで行った方がいい。
C言語なんて現役で50年来てるし、そのセンサーだって民生品なら誰かが同様に使ってる。
それでもそれ用のライブラリがないのなら、それはそもそもそういう使い方をする奴がこれまで居なかったということ。
つまり、そのやり方が間違っている、と見ていい。
初心者が自前でライブラリみたいな物をいきなり組まなければならない時点で設計が間違ってる。
それは君らがよく誤用している「無能な働き者」に該当する。
(ただし繰り返すが、Webでの多くは誤用されているので注意)
多分相場が分かってないのだと思うけど、
正しく初心者の自覚があるのなら、ある程度縛りプレイで行った方がいい。
C言語なんて現役で50年来てるし、そのセンサーだって民生品なら誰かが同様に使ってる。
それでもそれ用のライブラリがないのなら、それはそもそもそういう使い方をする奴がこれまで居なかったということ。
つまり、そのやり方が間違っている、と見ていい。
初心者が自前でライブラリみたいな物をいきなり組まなければならない時点で設計が間違ってる。
それは君らがよく誤用している「無能な働き者」に該当する。
(ただし繰り返すが、Webでの多くは誤用されているので注意)
23デフォルトの名無しさん (アウアウカー Sa49-3h0o)
2019/02/07(木) 00:06:12.90ID:AP44nO75a 副作用がメインならともかく、欲しいものを素直にreturnすればいいよ。
24デフォルトの名無しさん (ワッチョイ 495f-QV4H)
2019/02/07(木) 00:29:49.70ID:92YFdzoB0 strtol()は変換できなかった時の戻り値が曖昧だから0やらLONG_MAX、LONG_MINに固定してるだけだと思ってたんだけど
25デフォルトの名無しさん (ワッチョイ 82a5-l1YC)
2019/02/07(木) 00:29:57.91ID:xA+ztU7B0 バカかコイツラNaNが出たらどーすんだよ
文字列が正しいだろJK
文字列が正しいだろJK
26デフォルトの名無しさん (エムゾネ FF22-NjBW)
2019/02/07(木) 05:23:13.49ID:TUp6R+x+F >>20
C言語の戻り値って、エラーのみで返して、正の値って無いから、C++だな、C++言語に行くように
C言語の戻り値って、エラーのみで返して、正の値って無いから、C++だな、C++言語に行くように
27デフォルトの名無しさん (ワッチョイ aeab-feI+)
2019/02/07(木) 06:44:41.17ID:3iAi8jGM028デフォルトの名無しさん (ワッチョイ 82d2-CHas)
2019/02/07(木) 07:00:15.05ID:zkf2ry7x029デフォルトの名無しさん (ワッチョイ 8602-XlDt)
2019/02/07(木) 17:48:23.42ID:hewX2k170 くっそ初心者なんだがガウスの消去法でn次連立方程式を解くようにしたいんだがn次を入力させてからやるにはどうやりゃいいんだ?
30さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd22-IbdQ)
2019/02/07(木) 17:57:54.86ID:trMMLIP2d 行列の格納先に配列のかわりにmallocで動的に確保する。
31デフォルトの名無しさん (ブーイモ MMcd-LgSH)
2019/02/07(木) 21:03:55.08ID:2L3KkQ6GM n以外はどうやって入力させるつもりだったの?
3213 (ワッチョイ 82ab-/WZR)
2019/02/07(木) 23:25:09.01ID:9IdI5ETg0 a)の方法。空の文字列を渡そうとすると失敗するっぽい
char** str;
sokutei( str );
これやっても有意な文字列はstrに返ってこなかった。
もしこれやるならb)の方法じゃ無いとダメかも↓
cha* str;
str = sokutei();
char** str;
sokutei( str );
これやっても有意な文字列はstrに返ってこなかった。
もしこれやるならb)の方法じゃ無いとダメかも↓
cha* str;
str = sokutei();
33デフォルトの名無しさん (ワッチョイ 495f-QV4H)
2019/02/07(木) 23:38:06.10ID:92YFdzoB0 初心者だから間違ってるかもしれんけど
外でメモリ確保してないからじゃない?
文字列を関数内で作ってたら関数処理終わった後は文字列がそのまま残るかは保証されなかったような気が
外で配列宣言して関数に渡して、関数内でそこにmemcpyさせるとか?
外でメモリ確保してないからじゃない?
文字列を関数内で作ってたら関数処理終わった後は文字列がそのまま残るかは保証されなかったような気が
外で配列宣言して関数に渡して、関数内でそこにmemcpyさせるとか?
34デフォルトの名無しさん (ワッチョイ 2567-feI+)
2019/02/07(木) 23:41:01.38ID:2ez4owIb035デフォルトの名無しさん (ワッチョイ 495f-QV4H)
2019/02/07(木) 23:59:08.20ID:92YFdzoB0 あぁmallocしてんのね…
aは何でchar**なんだろう
aは何でchar**なんだろう
36デフォルトの名無しさん (アウアウカー Sa49-3h0o)
2019/02/08(金) 00:24:25.67ID:ssW/5KIMa ちゃ
37デフォルトの名無しさん (ワッチョイ aeab-feI+)
2019/02/08(金) 07:47:48.49ID:Mb3d412j038デフォルトの名無しさん (スフッ Sd22-QV4H)
2019/02/08(金) 08:37:48.99ID:uDm/bfU0d >>34
あぁなるほど
char **str;
sokutei(str); // 関数の引数にstrのアドレスがコピーされるだけ
だから関数内で代入してもコピーに再代入してるだけか
char *str;
sokutei(&str); // str自体のアドレスを渡す
これなら外のstrにmallocで確保したアドレスが入るのね
あぁなるほど
char **str;
sokutei(str); // 関数の引数にstrのアドレスがコピーされるだけ
だから関数内で代入してもコピーに再代入してるだけか
char *str;
sokutei(&str); // str自体のアドレスを渡す
これなら外のstrにmallocで確保したアドレスが入るのね
39デフォルトの名無しさん (ワッチョイ a969-drk2)
2019/02/08(金) 09:08:14.73ID:kNpkYNE/0 渡した引数を書き換えてくれるインターフェースは
scanf() の使い方と同じくするしかない
scanf() の使い方と同じくするしかない
40デフォルトの名無しさん (ワッチョイ a900-uNFS)
2019/02/08(金) 13:03:58.19ID:VZqJ7QJN0 Cに未来はあるのか
>>37
VLA は廃れていく方向のダメな子じゃないですか?c++ からも linux からも追放されたようですし
VLA は廃れていく方向のダメな子じゃないですか?c++ からも linux からも追放されたようですし
>>40
たくさんの人に使ってもらいたいライブラリを書くのなら、現状 C しかないと思います
たくさんの人に使ってもらいたいライブラリを書くのなら、現状 C しかないと思います
43デフォルトの名無しさん (ワッチョイ aeab-feI+)
2019/02/08(金) 21:45:38.59ID:Mb3d412j044デフォルトの名無しさん (ワッチョイ bd5f-1QgP)
2019/02/09(土) 01:59:26.91ID:babOKSMs0 >>26
ANSI Cでは何かしらの値を返さなければいけない。
ANSI Cでは何かしらの値を返さなければいけない。
45デフォルトの名無しさん (ワッチョイ 9127-feI+)
2019/02/10(日) 10:04:34.79ID:wNxUL6Ap0 どこかのHPで「自分は頭悪くてC言語の命令が覚えられなかったからアセンブラでプログラミングしてた」という記述を見たんだけど
アセンブラの方がよっぽど難しいと思うんだけど、アセンブラできる人からしたら違うのかな?
アセンブラの方がよっぽど難しいと思うんだけど、アセンブラできる人からしたら違うのかな?
46デフォルトの名無しさん (ワッチョイ e1f2-feI+)
2019/02/10(日) 10:40:12.32ID:FPonLwYC0 単に、新しいものを覚えるより使い慣れたアセンブラのままでやった方が早いという話じゃないかな。
あるいは情報処理試験の話だったとか。
あるいは情報処理試験の話だったとか。
47デフォルトの名無しさん (アウアウウー Sa05-3h0o)
2019/02/10(日) 10:47:05.06ID:nPt8HxnAa おそろしく英語がわからんプログラマーを見ると少し哀れみを感じる
48デフォルトの名無しさん (ワッチョイ e101-UsED)
2019/02/10(日) 10:48:33.87ID:/aZS7s8b0 >>45
ものにもよるけど理解するのはアセンブラのほうが単純なぶん簡単。
ものにもよるけど理解するのはアセンブラのほうが単純なぶん簡単。
49デフォルトの名無しさん (ワッチョイ 82a5-l1YC)
2019/02/10(日) 12:53:55.02ID:C8AJlGLg0 一部には変数概念を理解できなかった御仁もいるらしい
50デフォルトの名無しさん (ワッチョイ 868c-gf/b)
2019/02/10(日) 12:55:24.84ID:nnE1Q40B0 CPU設計者じゃないかな
51デフォルトの名無しさん (ワッチョイ 922d-DOJB)
2019/02/10(日) 13:26:11.80ID:6kY6tuUn0 アーキテクチャや機械語ニーモニックは簡単なんだけど
CPUと直接関係のない、アセンブラ指示子やコマンドを覚えて
エラーなくアセンブル通るようにするのは大変
CPUと直接関係のない、アセンブラ指示子やコマンドを覚えて
エラーなくアセンブル通るようにするのは大変
52デフォルトの名無しさん (アウアウカー Sa49-3h0o)
2019/02/10(日) 13:34:57.75ID:fhaaLeE2a わかりやすいアセンブラ作るとCになると思うよ
>>52
ならないですね…
ならないですね…
54デフォルトの名無しさん (ワッチョイ 0201-3tWi)
2019/02/10(日) 14:46:39.63ID:vOpxNkmL0 構造化アセンブラとかあったな
結局流行らなかったけど
結局流行らなかったけど
55デフォルトの名無しさん (ワッチョイ 91da-feI+)
2019/02/10(日) 16:31:12.43ID:ixgHA2PX0 構造化アセンブラ使っていればいずれCに移行するし
Cで記述できない部分はインラインアセンブラで補うようになる
構造化されているとはいえアセンブラはあくまでアセンブラ
生産性はCには及ばない
元組込みマイコンプログラマより
Cで記述できない部分はインラインアセンブラで補うようになる
構造化されているとはいえアセンブラはあくまでアセンブラ
生産性はCには及ばない
元組込みマイコンプログラマより
56デフォルトの名無しさん (ワッチョイ aeab-feI+)
2019/02/10(日) 17:36:00.24ID:XdgVAt+K0 >>45
アセンブラってのは理屈じゃない決めごとを憶えるだけでいいが
Cやその他の高級言語は構造化だとか処理系依存がどうたらという
どっかの知らん馬の骨が強弁する作法シキタリに付き合わされるから
気が短いやつはプイと出てっちまうのさ
鵜呑みをせず納得ずくでしか動かんやつという意味では大物の素養がある
アセンブラってのは理屈じゃない決めごとを憶えるだけでいいが
Cやその他の高級言語は構造化だとか処理系依存がどうたらという
どっかの知らん馬の骨が強弁する作法シキタリに付き合わされるから
気が短いやつはプイと出てっちまうのさ
鵜呑みをせず納得ずくでしか動かんやつという意味では大物の素養がある
57デフォルトの名無しさん (ワッチョイ a17b-D6og)
2019/02/10(日) 17:48:21.83ID:6qUtXmPD0 最初がBASIC小僧だった経験から言わせてもらうと、
サブルーチン(Cでは関数)に値を渡す返すって部分が分からなかったな。
ある計算をさせるサブルーチンにパラメータを与えたいときは
大域変数に入れて共有する、値の返却も同様。
これはアセンブラでも同じでしょ。レジスタで渡す返すも可能だけど。
その後、8bitマシン語少年に進み、Cを勉強した時は
ポインタ加算の自動スケーリングに引っかかった。
int *p = &a[0];
p += 4; // ここで p == &a[4] になるのが納得いかない
新たな p が指す先は a[2] か a[1] (intのサイズに依存)、と考えたわけ。
サブルーチン(Cでは関数)に値を渡す返すって部分が分からなかったな。
ある計算をさせるサブルーチンにパラメータを与えたいときは
大域変数に入れて共有する、値の返却も同様。
これはアセンブラでも同じでしょ。レジスタで渡す返すも可能だけど。
その後、8bitマシン語少年に進み、Cを勉強した時は
ポインタ加算の自動スケーリングに引っかかった。
int *p = &a[0];
p += 4; // ここで p == &a[4] になるのが納得いかない
新たな p が指す先は a[2] か a[1] (intのサイズに依存)、と考えたわけ。
58デフォルトの名無しさん (ワッチョイ 4101-drk2)
2019/02/10(日) 18:06:18.52ID:ialxvDQ60 プリプロセッサで MASM の REPT句と同じようなのが欲しいいかも と思ったことはある
59デフォルトの名無しさん (ワッチョイ 6ed2-/WZR)
2019/02/11(月) 08:42:09.13ID:sI6uV93B0 C言語学び始めたときに(BASIC、Z80/8086アセンブラの経験はあった)「C言語の非常識」とかいう本読んで
トラブルになりそうなところを先に学んだんでそう苦労しなかったな。
それより16bit DOS時代だったんでコンパイル設定でメモリモデルがLARGEだのHUGEだのの方が理解でできんかった。
まだ学生で「インターネットください」より前の時代で調べる手段がわからんかったし。
トラブルになりそうなところを先に学んだんでそう苦労しなかったな。
それより16bit DOS時代だったんでコンパイル設定でメモリモデルがLARGEだのHUGEだのの方が理解でできんかった。
まだ学生で「インターネットください」より前の時代で調べる手段がわからんかったし。
60デフォルトの名無しさん (ワッチョイ 8602-Z23n)
2019/02/11(月) 16:17:31.30ID:aNfCU32+0 それ30年ぐらい前だよね。
large だの huge だのは本読んだりして覚えたなあ。
large だの huge だのは本読んだりして覚えたなあ。
61デフォルトの名無しさん (ワッチョイ e101-feI+)
2019/02/11(月) 16:27:55.76ID:nk0/BZLe0 nearとfar
懐かしいな
懐かしいな
62デフォルトの名無しさん (ワッチョイ 6e63-OF6d)
2019/02/11(月) 16:39:10.95ID:adB+iGat0 数百MBの配列データを扱うときにコンパクトモデル利用したな
63デフォルトの名無しさん (ワッチョイ 221e-wI+I)
2019/02/11(月) 16:57:59.18ID:/r6pt/Ls0 30 年前に C コンパイラにアセンブラソース出させて C を学んだけど
ひょっとして普通はしないことなの?
ひょっとして普通はしないことなの?
64デフォルトの名無しさん (ワッチョイ 427c-GiBE)
2019/02/11(月) 16:58:51.46ID:7mPrdtBm0 >>62
CPUはなんでしたか?
CPUはなんでしたか?
65デフォルトの名無しさん (ワッチョイ 6e63-OF6d)
2019/02/11(月) 17:08:20.36ID:adB+iGat0 MS-DOSでPC98使ってました
多分80386だったんじゃないかな?
多分80386だったんじゃないかな?
66デフォルトの名無しさん (ワッチョイ 2504-feI+)
2019/02/11(月) 17:11:09.55ID:CRK5hAp10 RA21
67デフォルトの名無しさん (ワッチョイ 6e63-OF6d)
2019/02/11(月) 17:20:25.05ID:adB+iGat0 なんかそれっぽいw
CADのデータを扱うアプリで、データが大きくなりすぎて
PCによっては読込すら出来なくなってしまい
アプリを立ち上げずに画面表示やプロッター出力する
プログラムを作れという指令が飛んだんです
データ構造は比較的簡単で、先頭部分に部品基本イメージ、
その後ろから、固定長で膨大な描画情報がある感じです
描画情報を64k未満の配列に分割して格納し、
それぞれの配列アドレスを格納した配列経由で操作するイメージでした
CADのデータを扱うアプリで、データが大きくなりすぎて
PCによっては読込すら出来なくなってしまい
アプリを立ち上げずに画面表示やプロッター出力する
プログラムを作れという指令が飛んだんです
データ構造は比較的簡単で、先頭部分に部品基本イメージ、
その後ろから、固定長で膨大な描画情報がある感じです
描画情報を64k未満の配列に分割して格納し、
それぞれの配列アドレスを格納した配列経由で操作するイメージでした
68デフォルトの名無しさん (ワッチョイ a969-drk2)
2019/02/11(月) 17:31:32.52ID:3tLemvMU0 DXFのENTITIESセクションとかかな 頭に部品イメージ云々
69デフォルトの名無しさん (ワッチョイ 6e63-OF6d)
2019/02/11(月) 17:40:57.96ID:adB+iGat0 そんな感じです
ソフトは有名な高額ソフトではありません
スタンドアロンのMS-DOSで動作可能なほど
コンパクトなものでした(名前失念w)
ソフトは有名な高額ソフトではありません
スタンドアロンのMS-DOSで動作可能なほど
コンパクトなものでした(名前失念w)
70デフォルトの名無しさん (ワッチョイ fe7c-OF6d)
2019/02/11(月) 17:51:01.28ID:Hh2Z/MAZ071デフォルトの名無しさん (ワッチョイ 0201-3tWi)
2019/02/11(月) 17:52:29.43ID:MkFOBvt90 そもそもPC-98シリーズで数百MBのメモリー載る機種あるのか?
HDDですら数十MBクラスが普通だったと思うが…
HDDですら数十MBクラスが普通だったと思うが…
72デフォルトの名無しさん (ワッチョイ 6e63-OF6d)
2019/02/11(月) 18:00:50.47ID:adB+iGat073デフォルトの名無しさん (ワッチョイ 91da-uR/r)
2019/02/11(月) 18:55:56.19ID:ItYOkWkR0 あれ?
98note 使ってたけどメモリ増設で16MB 積むか12MBで妥協するかで悩んでいた記憶が…
勘違いかな?
98note 使ってたけどメモリ増設で16MB 積むか12MBで妥協するかで悩んでいた記憶が…
勘違いかな?
74デフォルトの名無しさん (ワッチョイ 6ed2-/WZR)
2019/02/11(月) 19:06:33.17ID:sI6uV93B0 Ap2でいくら載せてたかなぁ・・・。
20だか30M程度だったと思う。
パリ有りメモリで近所で扱ってる店も無かった時代なんで。
ぐぐったら公式で最大 73.6MB 、非公式で125.6MBまでいけたらしい。
>HDDですら数十MBクラスが普通だったと思うが…
それはSASI HDDじゃないか?VM時代か?
RXで340M、AP2で4G のSCSI HDD使ってたよ。
20だか30M程度だったと思う。
パリ有りメモリで近所で扱ってる店も無かった時代なんで。
ぐぐったら公式で最大 73.6MB 、非公式で125.6MBまでいけたらしい。
>HDDですら数十MBクラスが普通だったと思うが…
それはSASI HDDじゃないか?VM時代か?
RXで340M、AP2で4G のSCSI HDD使ってたよ。
75デフォルトの名無しさん (ワッチョイ bdc3-EwQo)
2019/02/12(火) 02:24:51.56ID:xDY2FToe0 Cしかかけませんっていうの
76デフォルトの名無しさん (ワッチョイ bdc3-EwQo)
2019/02/12(火) 02:25:15.35ID:xDY2FToe0 Cしか書けませんっていうのは新卒就活のときに不利?
他にどんな言語を習得すればいいんだろうか
他にどんな言語を習得すればいいんだろうか
77デフォルトの名無しさん (ワッチョイ 49e6-OF6d)
2019/02/12(火) 02:52:19.85ID:wp1a6nq70 まず「他にどんな言語を習得すれば良いんだろうか」なんて言ってること自体がかなり的外れかな
手段と目的の順序が逆
あと面接のときに「何故C言語を習得し、それを何に使ったんですか?」って聞かれてちゃんと答えられる?
手段と目的の順序が逆
あと面接のときに「何故C言語を習得し、それを何に使ったんですか?」って聞かれてちゃんと答えられる?
78デフォルトの名無しさん (ワッチョイ 91da-uR/r)
2019/02/12(火) 03:06:28.22ID:jEa3f+fD0 新卒であればプログラム言語そのものより他にアピールした方がいいと思うけどな
組み込みであれば現代制御理論、解析系であれば有限要素解析などC言語のプログラミングを応用する専門分野の知識を売り込んだほうがいいと思う
組み込みであれば現代制御理論、解析系であれば有限要素解析などC言語のプログラミングを応用する専門分野の知識を売り込んだほうがいいと思う
79デフォルトの名無しさん (ワッチョイ aebf-feI+)
2019/02/12(火) 05:55:34.89ID:4zHmA9zW0 >>76
俺んとこではそれで充分
ただしCが書けるといってもHello worldの域を出ていないのは書けるうちに入らない
アルゴリズムの基本ができているかどうかを見ている
できていれば他言語が必要になっても泥縄ができるからだ
俺だってもともとアセンブラ屋で正社員3年目くらいのときにCの案件が回ってきて必死こいて憶えた
俺んとこではそれで充分
ただしCが書けるといってもHello worldの域を出ていないのは書けるうちに入らない
アルゴリズムの基本ができているかどうかを見ている
できていれば他言語が必要になっても泥縄ができるからだ
俺だってもともとアセンブラ屋で正社員3年目くらいのときにCの案件が回ってきて必死こいて憶えた
80デフォルトの名無しさん (ワッチョイ e101-UsED)
2019/02/12(火) 06:06:40.84ID:QnKLUVRS081デフォルトの名無しさん (ワッチョイ 868c-gf/b)
2019/02/12(火) 09:06:46.70ID:lJ9WNOSb0 AならばBであるを表現できますか?と聞く
82デフォルトの名無しさん (ワッチョイ 82d2-CHas)
2019/02/12(火) 09:17:13.28ID:puzbyhsI0 64ビットCPUでもデフォルトの命令のオペランドが32ビットだから
linuxでint_fast32_tを使うのは間違いだったんだな
多分64ビットのアドレス計算も32bitの命令があるからパッディングとかも
起こらないだろうな
linuxでint_fast32_tを使うのは間違いだったんだな
多分64ビットのアドレス計算も32bitの命令があるからパッディングとかも
起こらないだろうな
83デフォルトの名無しさん (ワッチョイ 0233-/WZR)
2019/02/12(火) 09:24:10.34ID:Y0SH8Lt40 >>82 どこが間違いなの?
84デフォルトの名無しさん (ワッチョイ 82d2-CHas)
2019/02/12(火) 09:29:01.84ID:puzbyhsI0 >>83
linuxはint_fast32_tが64ビットになってるから
linuxはint_fast32_tが64ビットになってるから
85デフォルトの名無しさん (ワッチョイ 82d2-CHas)
2019/02/12(火) 13:06:03.99ID:puzbyhsI086デフォルトの名無しさん (ワッチョイ aebf-feI+)
2019/02/12(火) 13:19:08.47ID:4zHmA9zW0 ポインタの引き算に使うんならptrdiff_tだね
int_fast32_tが何ビットかには関係ない
int_fast32_tが何ビットかには関係ない
87デフォルトの名無しさん (ブーイモ MMcd-LgSH)
2019/02/12(火) 15:07:18.06ID:s+eQ0w2IM >>84
amd64では64bitが最速でないのに64bitが選ばれるのはおかしいっていう主張?
amd64では64bitが最速でないのに64bitが選ばれるのはおかしいっていう主張?
88デフォルトの名無しさん (ワッチョイ 82d2-CHas)
2019/02/12(火) 15:11:10.99ID:puzbyhsI089デフォルトの名無しさん (ワッチョイ a900-uNFS)
2019/02/12(火) 18:52:25.91ID:2Rlz0B+x0 このスレの平均年齢って幾つなんだ…(驚愕)
Cってもう若者は触らないっていう感じなんですかね。
Cってもう若者は触らないっていう感じなんですかね。
90デフォルトの名無しさん (ワッチョイ 6e63-OF6d)
2019/02/12(火) 19:06:37.74ID:5/zfp5Xa0 ここに書き込みしているのは、人間じゃないから
91デフォルトの名無しさん (ワッチョイ e101-UsED)
2019/02/12(火) 19:13:42.99ID:QnKLUVRS0 若者のC言語離れが叫ばれて久しいからな。
92デフォルトの名無しさん (ワッチョイ 6e63-OF6d)
2019/02/12(火) 19:16:16.52ID:5/zfp5Xa0 50年前は、概ね若者だった
93デフォルトの名無しさん (ラクペッ MM99-uR/r)
2019/02/12(火) 19:43:56.33ID:9j8xXtILM いまどきの若者ならみんなPythonに行ってるよ
やや年食ってる連中ならJavaやC#
職人気質で頑固な偏屈者はC++
Cはかつての栄光を引き摺って余生を過ごす老人の言語
やや年食ってる連中ならJavaやC#
職人気質で頑固な偏屈者はC++
Cはかつての栄光を引き摺って余生を過ごす老人の言語
94デフォルトの名無しさん (ワッチョイ 6e63-OF6d)
2019/02/12(火) 19:46:30.05ID:5/zfp5Xa0 Lunuxのソースって言語はなんだっけ?
>>93
でも言語を超えて活用されるライブラリ(libzip, libpng/libjpeg etc)は C で書かれることはあっても、OOP 諸言語で書かれることはないかと思うのですが?
C++ で記述される汎用ライブラリはありますか?
でも言語を超えて活用されるライブラリ(libzip, libpng/libjpeg etc)は C で書かれることはあっても、OOP 諸言語で書かれることはないかと思うのですが?
C++ で記述される汎用ライブラリはありますか?
96デフォルトの名無しさん (ワッチョイ 6e8f-IyyE)
2019/02/12(火) 22:30:48.71ID:Jl2Y8iQt0 Cの使い手が減ったんじゃなくて他の言語の仕事が増えてるんじゃないの。
もともとサーバー側のシステム開発をCでやったりはレアでしょ。
もともとサーバー側のシステム開発をCでやったりはレアでしょ。
97デフォルトの名無しさん (ワッチョイ 6e8f-IyyE)
2019/02/12(火) 22:31:50.68ID:Jl2Y8iQt0 むしろ立場が怪しいのはjavaじゃないか?
98デフォルトの名無しさん (アウアウウー Sa05-3h0o)
2019/02/12(火) 22:33:34.82ID:CAePQpAGa99デフォルトの名無しさん (ワッチョイ 6e8f-IyyE)
2019/02/12(火) 22:38:44.87ID:Jl2Y8iQt0 jsonをcで扱うのは涙がでますよ……
100デフォルトの名無しさん (アウアウウー Sa05-3h0o)
2019/02/12(火) 22:57:01.03ID:CAePQpAGa Cでがんばろうと思うと、glibみたいな形になっちゃいますね。
101デフォルトの名無しさん (ワッチョイ 82d2-CHas)
2019/02/13(水) 12:23:21.90ID:ds2YQTN50 俺は有名な言語はほとんど全種類使えるから適材適所で使い分けてるは
102デフォルトの名無しさん (ワッチョイ 9127-feI+)
2019/02/13(水) 12:36:20.22ID:FB2A40HJ0 使えるというか、Cが分かるなら「〜の言語でやれ」って言われたらどの言語でも3日で仕事出来るくらいは当然だけどね。
java勢とかが3日でCやれと言われてポインタまみれのコード読むのは無理だろうけど。
java勢とかが3日でCやれと言われてポインタまみれのコード読むのは無理だろうけど。
103デフォルトの名無しさん (アークセー Sxd1-UsED)
2019/02/13(水) 12:50:19.10ID:j9mDOCj4x 極端だけど、突然Prologでやれ!と言われても3日じゃまともに使えないと思う。
104デフォルトの名無しさん (ワッチョイ ae82-feI+)
2019/02/13(水) 12:57:25.03ID:oF8nMyvD0 3日でできてしまう仕事ってお粗末そうだな
105デフォルトの名無しさん (スッップ Sd22-IyyE)
2019/02/13(水) 13:04:19.59ID:a9PctXZid まあ新しい言語の勉強始めたら3日目にはそれなりに手が動くようになってるだろうからな。
でも仕事で使おうとするとプロジェクト設定の方法がわからないとかその辺で詰むと思うわ。
でも仕事で使おうとするとプロジェクト設定の方法がわからないとかその辺で詰むと思うわ。
106デフォルトの名無しさん (ワッチョイ ae82-feI+)
2019/02/13(水) 13:07:22.57ID:oF8nMyvD0 練達言語でさえ3日つーとやっつけ仕事くせえぞ
107デフォルトの名無しさん (アウアウウー Sa05-KI3Y)
2019/02/13(水) 13:12:51.57ID:V+opB2+Aa >>99
ライブラリないの?
ライブラリないの?
108デフォルトの名無しさん (アウアウウー Sa05-KI3Y)
2019/02/13(水) 13:15:49.92ID:V+opB2+Aa 3日ねえ。まあ、書けるには書けてもその言語の特性をうまく活用できるところまでは行きそうにないな。
109デフォルトの名無しさん (ワッチョイ 49e6-feI+)
2019/02/13(水) 13:23:21.11ID:q5+/i40P0 百歩譲って自分がもし言語が3日で出来たとしても業務知識や専門知識は3日では身に付かんから無理だわw
110デフォルトの名無しさん (ワッチョイ 9127-feI+)
2019/02/13(水) 14:38:53.83ID:FB2A40HJ0 >>109
Cしかわからなかったけど、入社して「これわかりやすいから」とjavapressをポンと渡され、3日後にはjavaで養鶏管理のシステムを作らされていたぞ。
業務知識なんて仕様書と上司に聞きながら覚えるものじゃん。業務知識覚えてから仕事って、新卒じゃないんだからw
Cしかわからなかったけど、入社して「これわかりやすいから」とjavapressをポンと渡され、3日後にはjavaで養鶏管理のシステムを作らされていたぞ。
業務知識なんて仕様書と上司に聞きながら覚えるものじゃん。業務知識覚えてから仕事って、新卒じゃないんだからw
111デフォルトの名無しさん (ワッチョイ 49e6-feI+)
2019/02/13(水) 14:42:28.64ID:q5+/i40P0 業務知識覚えてから仕事なんて一言も書いてないけどw
こういう人ってちゃんとドキュメント類読めてるんだろうか
自己解釈でガンガン進めてから修正で苦労してそう
あと君が3日で出来るすごい人なのは充分分かったよ
こういう人ってちゃんとドキュメント類読めてるんだろうか
自己解釈でガンガン進めてから修正で苦労してそう
あと君が3日で出来るすごい人なのは充分分かったよ
112デフォルトの名無しさん (ワッチョイ c5da-mcoJ)
2019/02/13(水) 14:42:57.53ID:Fe5QsHU80 業務知識を知ってから作るんだろう
新卒じゃないと知識なしに作り始めるのか
新卒じゃないと知識なしに作り始めるのか
113デフォルトの名無しさん (ワッチョイ 868c-gf/b)
2019/02/13(水) 14:49:42.00ID:fZcB94Cs0 鶏が何を食っているか新卒で知っている人はいない。
貝殻食っていると知ってた?
貝殻食っていると知ってた?
114デフォルトの名無しさん (ワッチョイ c5da-mcoJ)
2019/02/13(水) 15:10:52.45ID:Fe5QsHU80 仕様書に書いてあるんだろう
上司に教えてもらいながら開発するベテランさんは
知っていることなのかな?
上司に教えてもらいながら開発するベテランさんは
知っていることなのかな?
115デフォルトの名無しさん (ブーイモ MMcd-LgSH)
2019/02/13(水) 15:11:22.39ID:4FvVMQftM マジかよ、仕様書に貝殻ボタン追加しないと
116デフォルトの名無しさん (ワッチョイ 91da-uR/r)
2019/02/13(水) 15:28:42.70ID:ERyLIjVv0 貝殻というか石や砂など砂嚢(砂肝)に飲み込むものなら何でも良いんじゃないの?
117デフォルトの名無しさん (ワッチョイ 49e6-feI+)
2019/02/13(水) 15:30:11.62ID:q5+/i40P0 皆さん鶏に詳しすぎません?w
もしかして:鶏 飼ってる
もしかして:鶏 飼ってる
118デフォルトの名無しさん (ワッチョイ 82d2-CHas)
2019/02/13(水) 15:31:15.00ID:ds2YQTN50 卵うむにはカルシウムがいるだろう
119デフォルトの名無しさん (ワッチョイ c5da-mcoJ)
2019/02/13(水) 15:32:23.03ID:Fe5QsHU80 カルシウムが不足すると、イライラしてくる
貝殻囓ると多少は改善する
貝殻囓ると多少は改善する
120デフォルトの名無しさん (ワッチョイ 9127-feI+)
2019/02/13(水) 15:34:17.67ID:FB2A40HJ0 Cが出来るなら仕事で求められる程度のコーディングは3日で皆も出来るでしょというだけのお話だったのになぜか餌の話になっててワロタw
121デフォルトの名無しさん (ワッチョイ a900-uNFS)
2019/02/13(水) 15:40:57.70ID:d5jEja6x0 Cのスレに書き込んでてかつ鶏飼育してるってすげー組み合わせ
122デフォルトの名無しさん (ワッチョイ 49e6-feI+)
2019/02/13(水) 15:43:10.55ID:q5+/i40P0 ここの人たちはマイコンで全自動の餌やり制御とか余裕で作ってそうだからなぁ
123デフォルトの名無しさん (バットンキン MM96-azlk)
2019/02/13(水) 15:54:21.06ID:Q5DduoYTM むしろ全自動鶏作ろう。
124デフォルトの名無しさん (ワッチョイ a17b-D6og)
2019/02/13(水) 18:00:49.65ID:2WlGbphz0 まぁ、C言語のCはChickenの頭文字だからね。
125デフォルトの名無しさん (ドコグロ MM09-CTVZ)
2019/02/13(水) 18:16:41.77ID:i20vW39tM ここでスベるとか…
126デフォルトの名無しさん (ワッチョイ 49e6-feI+)
2019/02/13(水) 18:19:31.10ID:q5+/i40P0 おじいさまたち、しっかりたのみますよ
127デフォルトの名無しさん (ワッチョイ 275f-3QuV)
2019/02/14(木) 00:55:10.36ID:eGYXBQeH0 >>124
「はじめてのC」
「はじめてのC」
128デフォルトの名無しさん (ワッチョイ bf8c-l0e6)
2019/02/14(木) 07:24:34.92ID:J1vF692V0 鶏の雌雄判別機を作ったらまじで大儲けできる。
129デフォルトの名無しさん (ワッチョイ 07da-OxnY)
2019/02/14(木) 07:33:43.74ID:5EPJ06Po0 鶏ではなくてひよこの雌雄判別だろ
130デフォルトの名無しさん (ワッチョイ bf8c-l0e6)
2019/02/14(木) 07:42:05.06ID:J1vF692V0 玉子だったらなお良い。
131デフォルトの名無しさん (スプッッ Sdff-tyEA)
2019/02/14(木) 07:45:47.66ID:MhXZGfUyd それは機械学習の世界だからなpythonでやるべきだな
132デフォルトの名無しさん (ワッチョイ 07da-yQ/S)
2019/02/14(木) 07:52:15.98ID:5EPJ06Po0 機械学習の段階に持っていく以前にどうやって特徴点を抽出するんだよ
133デフォルトの名無しさん (ワッチョイ 077f-+3Lz)
2019/02/14(木) 08:01:05.34ID:bVlNWlBE0 >>130
レーザー使って卵のうちにてのはもうあるらしい
レーザー使って卵のうちにてのはもうあるらしい
134デフォルトの名無しさん (スプッッ Sdff-tyEA)
2019/02/14(木) 08:44:29.64ID:MhXZGfUyd >>132
AIを信じろ、心を無にして写真を撮り続けるんだ。
AIを信じろ、心を無にして写真を撮り続けるんだ。
135デフォルトの名無しさん (アウアウウー Sa4b-s2oh)
2019/02/14(木) 09:27:48.57ID:9tQDIG7ca 鶏のスレができたと聞いてゆっくり歩いてきました。
136デフォルトの名無しさん (ササクッテロル Sp7b-mDuQ)
2019/02/14(木) 12:09:08.34ID:EQjYAhePp >>124
A、B、そしてC言語だ、アホw
A、B、そしてC言語だ、アホw
137デフォルトの名無しさん (ワッチョイ 7f3a-yQ/S)
2019/02/14(木) 12:31:22.40ID:eoj/2xbH0 B (programming language) が A programming language の流れを汲んでいるとは初耳だな
138デフォルトの名無しさん (ササクッテロル Sp7b-mDuQ)
2019/02/14(木) 12:35:11.20ID:EQjYAhePp っAPL
139デフォルトの名無しさん (ワッチョイ 7f63-cT+3)
2019/02/14(木) 16:09:27.74ID:7mjvw7zr0 Bは聞いたことがあるが、Aがあるのは初めて知ったw
140デフォルトの名無しさん (アウアウクー MM7b-3QuV)
2019/02/14(木) 17:42:21.71ID:WWAGjmY5M >>128
ひよこの時点で選別されている。
ひよこの時点で選別されている。
141デフォルトの名無しさん (ワッチョイ 07da-yQ/S)
2019/02/14(木) 17:54:09.12ID:5EPJ06Po0142デフォルトの名無しさん (ワッチョイ 47e6-yQ/S)
2019/02/14(木) 17:55:33.11ID:dTIeIK2I0 まじかよプログラム書いてる場合じゃない
143デフォルトの名無しさん (ワッチョイ bf8c-l0e6)
2019/02/14(木) 19:22:48.32ID:Jtoe5svL0 雄のひよこの運命はマジでミンチ
144デフォルトの名無しさん (ワッチョイ 7f8f-M0iL)
2019/02/14(木) 20:04:09.42ID:lvuH5t8P0 ひよこ鑑定士の雌雄判定プログラムになるわ
145デフォルトの名無しさん (アウアウウー Sa4b-s2oh)
2019/02/14(木) 21:15:49.32ID:FnxMJF+Da 昔々小学生の頃に道で売ってたカラーひよこを買って、だいたいは一晩で死ぬわけだがその時は電球で暖めたり色々やったら生き長らえて成長し、立派な鶏に成長し、その後親戚に引き取られて行ったが、すぐに食われた。
146デフォルトの名無しさん (ワッチョイ ff7c-cT+3)
2019/02/15(金) 09:35:49.46ID:PLZ5J6XD0 ヒヨちゃん、ミケ、チョビ
147デフォルトの名無しさん (ワッチョイ 5fab-A2tD)
2019/02/16(土) 00:17:44.31ID:yq1cCgqT0 #include "A.h"
#include "B.h"
A.hとB.hに同じ内容の同じ名前の関数が定義されてると
こうインクルードした時点でコンパイラから二重定義されてるぞ
とおしかりを受けるわけだがどうしたらいいかな?
手作業でA.hないしはB.hから該当する関数を削除しないといけないかな?
#include "B.h"
A.hとB.hに同じ内容の同じ名前の関数が定義されてると
こうインクルードした時点でコンパイラから二重定義されてるぞ
とおしかりを受けるわけだがどうしたらいいかな?
手作業でA.hないしはB.hから該当する関数を削除しないといけないかな?
148デフォルトの名無しさん (ワッチョイ 7f63-cT+3)
2019/02/16(土) 00:26:14.00ID:BHwuOYP40 ヘッダーで関数を定義するのが悪いんじゃ
149デフォルトの名無しさん (ワッチョイ 47e6-yQ/S)
2019/02/16(土) 00:31:06.99ID:DIoBwVhC0 #pragma onceではダメですか?
そういう話ではない?
そういう話ではない?
150デフォルトの名無しさん (ワッチョイ 077f-iXJN)
2019/02/16(土) 00:35:57.27ID:QGJnkP2m0 AB共にその関数使用でインクルードするソースが多数あるのであれば
どちらか一方は関数削除し代わりにもう片方をインクルード
どちらか一方は関数削除し代わりにもう片方をインクルード
151デフォルトの名無しさん (ワッチョイ 5f78-foAg)
2019/02/16(土) 00:57:35.72ID:BxPlGezW0 いや普通に二重で定義せずに名前変えろよ
152デフォルトの名無しさん (ワッチョイ 7f8f-tyEA)
2019/02/16(土) 01:15:06.97ID:P5gjDjW+0 うん、事情によらず同じ名前の関数定義があっちゃだめでしょ。
153デフォルトの名無しさん (ワッチョイ 7f63-cT+3)
2019/02/16(土) 01:16:19.79ID:BHwuOYP40 そのヘッダーをインクルードするソースが複数あったら、
やはりリンク時に二重定義とならないか?
やはりリンク時に二重定義とならないか?
154デフォルトの名無しさん (ラクペッ MM9b-OxnY)
2019/02/16(土) 01:45:16.86ID:0XZqCZxyM 定義の意味が曖昧だけど自分ならヘッダーはプロトタイプ宣言だけなので関数定義そのものが
二重になることはまず無いな
*.cと*.hファイルの関数定義と宣言をきちんと区別していれば同一関数の二重定義なんて事態には
そうならないと思うんだが
二重になることはまず無いな
*.cと*.hファイルの関数定義と宣言をきちんと区別していれば同一関数の二重定義なんて事態には
そうならないと思うんだが
155デフォルトの名無しさん (ワッチョイ 5fab-A2tD)
2019/02/16(土) 03:04:51.53ID:yq1cCgqT0 int型の変数を文字列に変える
INT2STRって関数がバッティングしてる
便利な関数だからいろんなヘッダファイルに仕込んでるんだけど
そういうヘッダファイルを複数includeするとバッティングしちゃうんだよね
INT2STRって関数がバッティングしてる
便利な関数だからいろんなヘッダファイルに仕込んでるんだけど
そういうヘッダファイルを複数includeするとバッティングしちゃうんだよね
156デフォルトの名無しさん (ワッチョイ bf8c-l0e6)
2019/02/16(土) 04:31:59.37ID:0BUCSxrk0 バッティングする関数を別のヘッダーにする。
157デフォルトの名無しさん (ワッチョイ 8701-5sVJ)
2019/02/16(土) 05:23:54.50ID:mG+jUdie0 関数宣言だけなら多重でも文句はいわれない
マクロやtypedefに構造体の衝突ならインクルードガード施してそれだけをヘッダーに
};
マクロやtypedefに構造体の衝突ならインクルードガード施してそれだけをヘッダーに
};
158デフォルトの名無しさん (ワッチョイ 7fd2-A2tD)
2019/02/16(土) 07:51:21.96ID:cXYf2t9G0 #ifdef
#ifndef
#endif
の出番?
#ifndef
#endif
の出番?
159デフォルトの名無しさん (ワッチョイ 8701-yQ/S)
2019/02/16(土) 08:25:13.37ID:VTuLU8k00 ライブラリのヘッダ見てマネればいいじゃん
#ifndef _STDIO_H
#define _STDIO_H 1
...
#endif
#ifndef _STDIO_H
#define _STDIO_H 1
...
#endif
160デフォルトの名無しさん (ワッチョイ 47e6-yQ/S)
2019/02/16(土) 08:47:05.29ID:DIoBwVhC0 みなさんpragma onceじゃなくてifndef派なんですね
161デフォルトの名無しさん (ワッチョイ 5f01-3Kdw)
2019/02/16(土) 08:52:07.39ID:q1DAaOKG0 >>155
> INT2STRって関数がバッティングしてる
> 便利な関数だからいろんなヘッダファイルに仕込んでるんだけど
その関数を定義した"int2str.h"を作って
#pragma onceなり#ifndefなりでインクルードガードしておく
各ヘッダーファイルは"int2str.h"をインクルードすればいいだけ
> INT2STRって関数がバッティングしてる
> 便利な関数だからいろんなヘッダファイルに仕込んでるんだけど
その関数を定義した"int2str.h"を作って
#pragma onceなり#ifndefなりでインクルードガードしておく
各ヘッダーファイルは"int2str.h"をインクルードすればいいだけ
162デフォルトの名無しさん (ワッチョイ 7f8f-tyEA)
2019/02/16(土) 09:05:18.00ID:P5gjDjW+0 >>155
「便利な関数だからいろんなヘッダファイルに仕込んでるんだけど」
普通は
「便利な関数だからライブラリ化していろんな実装ファイルでインクルードしてる」
とするべきでしょ。
ヘッダファイルの使い方も間違ってるような…
「便利な関数だからいろんなヘッダファイルに仕込んでるんだけど」
普通は
「便利な関数だからライブラリ化していろんな実装ファイルでインクルードしてる」
とするべきでしょ。
ヘッダファイルの使い方も間違ってるような…
163デフォルトの名無しさん (ワッチョイ 7f8f-tyEA)
2019/02/16(土) 09:09:29.43ID:P5gjDjW+0 >>161
たぶんint2str.hはヘッダーファイルじゃなくて実装ファイルでインクルードすべき性質のものだよね。
細かいことかもしれないけど、ヘッダーファイルでインクルードすると他のファイルへの影響が増えるから、必要がない限りは実装ファイルの方でインクルードするべきだと思う。
たぶんint2str.hはヘッダーファイルじゃなくて実装ファイルでインクルードすべき性質のものだよね。
細かいことかもしれないけど、ヘッダーファイルでインクルードすると他のファイルへの影響が増えるから、必要がない限りは実装ファイルの方でインクルードするべきだと思う。
164デフォルトの名無しさん (ワッチョイ 8701-5sVJ)
2019/02/16(土) 09:19:18.44ID:mG+jUdie0 関数の実体をヘッダーにおいているのか
inline キーワードが使えるなら… という話かな?
inline キーワードが使えるなら… という話かな?
165デフォルトの名無しさん (ドコグロ MM1f-3Kdw)
2019/02/16(土) 09:40:04.81ID:suSnt5KvM >>163
いやそんなことはみんなわかっててでも本人やりたいならこうすればいいよって言ってるだけだろ
いやそんなことはみんなわかっててでも本人やりたいならこうすればいいよって言ってるだけだろ
166デフォルトの名無しさん (アウアウウー Sa4b-JTNF)
2019/02/16(土) 09:59:46.09ID:t+1YRxqBa これはみんなボケてるの?
167デフォルトの名無しさん (ワッチョイ 7f63-cT+3)
2019/02/16(土) 10:56:39.56ID:BHwuOYP40 ワザとだろう
168デフォルトの名無しさん (ワッチョイ 5fab-A2tD)
2019/02/16(土) 10:58:48.72ID:yq1cCgqT0 ありがとう、みんなが背中押してくれたから決心が付いた(`・ω・´)
ヘッダーファイルint2str.hを作って
関数INT2STRの実体はint2str.cに記述、
int2str.hには
#ifndef _INT2STR_H
#define _INT2STR_H
...
#endif
でくくって多重定義を防ぐ(`・ω・´)b
ヘッダーファイルint2str.hを作って
関数INT2STRの実体はint2str.cに記述、
int2str.hには
#ifndef _INT2STR_H
#define _INT2STR_H
...
#endif
でくくって多重定義を防ぐ(`・ω・´)b
169デフォルトの名無しさん (ワッチョイ 5fd2-5nnY)
2019/02/16(土) 13:29:20.93ID:GySit7mC0 #include <stdio.h>
int f(int i){
switch(i){
defalut:
return i;
}
}
int main(void) {
printf("%d\n", f(2));
return 0;
}
このコードを実行するとfの入力が何であっても0が出力されるんですけどなぜですか?
int f(int i){
switch(i){
defalut:
return i;
}
}
int main(void) {
printf("%d\n", f(2));
return 0;
}
このコードを実行するとfの入力が何であっても0が出力されるんですけどなぜですか?
170デフォルトの名無しさん (スッップ Sd7f-tyEA)
2019/02/16(土) 13:46:58.56ID:3/SZoFmmd171デフォルトの名無しさん (ワッチョイ 7f63-cT+3)
2019/02/16(土) 13:49:29.31ID:BHwuOYP40 >>169
defalut:
defalut:
172デフォルトの名無しさん (ブーイモ MM6b-JXvc)
2019/02/16(土) 14:04:34.91ID:WseEcsSPM defaultがラベルになる?switch の中に return だけになるのか?switch 素通りして関数の最後に return 無いけど return 0 になるのか?これコンパイルとおるの?
少なくともコンパイル警告は出るはずだから、素人は警告無視すんな
少なくともコンパイル警告は出るはずだから、素人は警告無視すんな
173デフォルトの名無しさん (ワッチョイ 7f63-cT+3)
2019/02/16(土) 14:11:52.03ID:BHwuOYP40 ラベルは、警告出ないだろう
これ昔ハマったことあるw
これ昔ハマったことあるw
174デフォルトの名無しさん (アークセー Sx7b-cMBS)
2019/02/16(土) 14:29:47.26ID:z2OC1C8Ix あー、これね。
これそのものじゃないけどcaseを書き忘れて同じようにハマった経験あるわ。
これそのものじゃないけどcaseを書き忘れて同じようにハマった経験あるわ。
175デフォルトの名無しさん (ワッチョイ 47ad-MMHW)
2019/02/16(土) 14:34:18.78ID:h+JOL/Xg0 初心者なんですけどファイルをfopenで開いてからcloseせずに別のモードでまたfopenするのは問題ありですか?
176デフォルトの名無しさん (ワッチョイ bf02-yQ/S)
2019/02/16(土) 14:41:10.94ID:FAU3Sbcr0 >>169
コピペして実行してみたがこちらでは 4195622 が出力されたw
gcc -Wall でコンパイルしてみると「ラベル ‘defalut’ が定義されていますが使用されていません」が出る。
綴り間違いだな。l と u が入れ違いになっている。
コピペして実行してみたがこちらでは 4195622 が出力されたw
gcc -Wall でコンパイルしてみると「ラベル ‘defalut’ が定義されていますが使用されていません」が出る。
綴り間違いだな。l と u が入れ違いになっている。
177デフォルトの名無しさん (ワッチョイ 5fd2-5nnY)
2019/02/16(土) 14:58:25.69ID:GySit7mC0 ありがとうございました!
綴が違っていたことに気づきませんでした!
綴が違っていたことに気づきませんでした!
178デフォルトの名無しさん (ワッチョイ 5f84-8zyB)
2019/02/16(土) 15:18:12.53ID:jgcdGKnj0 なるほど -Wreturn-type とか -Wall つけないと int 型の関数に return が無くても警告出ないのか
179デフォルトの名無しさん (スッップ Sd7f-tyEA)
2019/02/16(土) 15:31:05.97ID:3/SZoFmmd >>170
コピペせずに手打ちでやったから "defalut" に気づかなかった。。
コピペせずに手打ちでやったから "defalut" に気づかなかった。。
180デフォルトの名無しさん (ワッチョイ bf8c-l0e6)
2019/02/16(土) 15:42:31.02ID:GG6HVTci0 バグの大半は手書き
181デフォルトの名無しさん (ワッチョイ 877b-WJvq)
2019/02/16(土) 16:44:51.50ID:/Su8h7T90 >>175
単一のファイルを複数回、fclose()しないでfopen()するってことかな。
複数の FILE* が単一のファイル(名)を操作してる状態。
FIO24-C. すでにオープンされているファイルをオープンしない
ttps://www.jpcert.or.jp/sc-rules/c-fio24-c.html
↑によると「(前略)同一のファイルを同時に複数回オープンできるかどうかも、
処理系定義とする」ってことだから、一般的には好ましくないね。
すでにfopen()されててまだfclose()されてないファイルに対する
2回目のfopen()が成功する(場合もある)か、常に失敗するかも「処理系定義」だし。
単一のファイルを複数回、fclose()しないでfopen()するってことかな。
複数の FILE* が単一のファイル(名)を操作してる状態。
FIO24-C. すでにオープンされているファイルをオープンしない
ttps://www.jpcert.or.jp/sc-rules/c-fio24-c.html
↑によると「(前略)同一のファイルを同時に複数回オープンできるかどうかも、
処理系定義とする」ってことだから、一般的には好ましくないね。
すでにfopen()されててまだfclose()されてないファイルに対する
2回目のfopen()が成功する(場合もある)か、常に失敗するかも「処理系定義」だし。
182デフォルトの名無しさん (ワッチョイ 5f33-A2tD)
2019/02/16(土) 18:01:42.08ID:OrPj8CII0 >>159,168 予約識別子はやめとこう。
183デフォルトの名無しさん (ワッチョイ 47ad-MMHW)
2019/02/16(土) 19:51:50.72ID:h+JOL/Xg0 >>181
詳しい説明ありがとうございます
詳しい説明ありがとうございます
184デフォルトの名無しさん (ワッチョイ 8701-yQ/S)
2019/02/17(日) 08:39:19.73ID:uUoaBuH/0 んじゃこうだな
#ifndef STDIO_H_
#define STDIO_H_ 1
...
#endif
#ifndef STDIO_H_
#define STDIO_H_ 1
...
#endif
185デフォルトの名無しさん (アウアウエー Sa1f-Nxmh)
2019/02/19(火) 10:01:13.72ID:IvpU5OFea おまいらならFEのC言語問題余裕の全問正解なわけ?10分もかからんくらい?
186デフォルトの名無しさん (ワッチョイ 5fda-OxnY)
2019/02/19(火) 10:15:05.54ID:+p6oUoec0 少し古いが第一種情報とエンベデッドスペシャリスト程度はクリアしてる
即答クイズじゃないんだから時間気にするのは間抜けだぞ
即答クイズじゃないんだから時間気にするのは間抜けだぞ
187デフォルトの名無しさん (ワッチョイ 275f-3QuV)
2019/02/19(火) 17:04:59.95ID:uTkGj35D0 >>185
ああいう問題は実務では存在しないから簡単ではないよ。
ああいう問題は実務では存在しないから簡単ではないよ。
188デフォルトの名無しさん (ワッチョイ 4700-tIDa)
2019/02/19(火) 18:44:17.22ID:BOKvhiPA0 マジで言い訳でもなんでもなく
業務のときと使う脳味噌が全然 違う。
普段 ファイルを単純に移動させるにも 外環境からどういう邪魔が入りうるか
プール単位で跨ぐときどういうセキュリティーホールがあるか
とかいうことを重箱の隅をつつくように考えてるのに
条件分岐を一度も使わずに素数生成しろ みたいな問題が出てくるんだもん
しかも出/入力データの危険性は一切考えない、っていうパターンがほとんど。
業務のときと使う脳味噌が全然 違う。
普段 ファイルを単純に移動させるにも 外環境からどういう邪魔が入りうるか
プール単位で跨ぐときどういうセキュリティーホールがあるか
とかいうことを重箱の隅をつつくように考えてるのに
条件分岐を一度も使わずに素数生成しろ みたいな問題が出てくるんだもん
しかも出/入力データの危険性は一切考えない、っていうパターンがほとんど。
190デフォルトの名無しさん (ワッチョイ 5fda-iZZg)
2019/02/19(火) 18:56:33.83ID:+p6oUoec0 そういった類の具体的な問題対処能力を試してみたいのであればスペシャリスト系の過去問でも見てみれば?
エンベデッドかデータベース試験の午後の記述問題あたりがいいと思う
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/_index_mondai.html
エンベデッドかデータベース試験の午後の記述問題あたりがいいと思う
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/_index_mondai.html
191デフォルトの名無しさん (ワッチョイ 8701-cMBS)
2019/02/19(火) 19:25:12.60ID:rpeG63p80 情報処理試験は実務やってたらAPよりスペシャリストのほうが簡単だわ。
192デフォルトの名無しさん (アークセー Sx7b-cMBS)
2019/02/20(水) 17:11:05.26ID:5682Vwfvx 「100以下の素数を表示するブログラムを作りなさい」
どんなプログラムを作るかで実務向きかどうかを判断できるらしい。
どんなプログラムを作るかで実務向きかどうかを判断できるらしい。
193デフォルトの名無しさん (ワッチョイ 7f63-cT+3)
2019/02/20(水) 17:34:21.53ID:yWD0fIVX0 で、実務向きと判断される人はどういう風に回答するんだろうかw
194デフォルトの名無しさん (ワッチョイ 877b-WJvq)
2019/02/20(水) 17:56:41.12ID:V5JGZApS0 「100以下の素数を表示するブログラムを作りなさい」だと
手打ちの固定テーブル(初期化済み配列)って解答もありそうだな。
2重のforループで「エラトステネスのふるい」を回して0/1の配列を生成。
値を表示する/しないは、要素2個の関数ポインタを格納した配列ってトリック。
そもそもfor, whileや三項演算子は「条件分岐」じゃないのか?
みたいな疑問を感じ始めると答えられないね。
手打ちの固定テーブル(初期化済み配列)って解答もありそうだな。
2重のforループで「エラトステネスのふるい」を回して0/1の配列を生成。
値を表示する/しないは、要素2個の関数ポインタを格納した配列ってトリック。
そもそもfor, whileや三項演算子は「条件分岐」じゃないのか?
みたいな疑問を感じ始めると答えられないね。
195デフォルトの名無しさん (ワッチョイ 5fda-yQ/S)
2019/02/20(水) 18:03:03.37ID:/pFWY/nZ0 単純に考えれば素数を漏れなく見つけるにはエラトステネスのふるいによるしかない
いかにして無駄な計算を避けるかが重要
プラグラム言語よりもいかに数学的素養の能力を身に着けているかが問われる
馬鹿正直に2から100までループを回すようならまったく実務には向いてない
整数論の基礎だけで100以下の判定に必要な要素は2,3,5,7だけであることはすぐにわかる
プログラムに落とし込む以前の問題
いかにして無駄な計算を避けるかが重要
プラグラム言語よりもいかに数学的素養の能力を身に着けているかが問われる
馬鹿正直に2から100までループを回すようならまったく実務には向いてない
整数論の基礎だけで100以下の判定に必要な要素は2,3,5,7だけであることはすぐにわかる
プログラムに落とし込む以前の問題
196デフォルトの名無しさん (ワッチョイ 7f63-cT+3)
2019/02/20(水) 18:09:44.13ID:yWD0fIVX0 該当する素数一覧が埋め込まれた文字列を表示するプログラムが一番速そう
197デフォルトの名無しさん (スッップ Sd7f-tyEA)
2019/02/20(水) 18:34:58.50ID:MxetRGgJd 俺は拡張性がちらついてエラトステネスにしたくなるわ。どれだけの実行速度が求められるのかわからないとどの方法でやるか決心がつかなくてタイムアップしそうw
198デフォルトの名無しさん (アウアウウー Sa4b-4Twi)
2019/02/20(水) 18:48:50.68ID:WptMO45ba >>192
問題の意図や目的を明示せずに解かせた答えだけみても、その人がどんな意図でその回答を出したのかは断定できないから、これだけで実務がどうこう言うのは短絡的だとは思うよ。
よくある性格診断とかで、○○を選んだあなたは××な性格です〜ってのがあるけど、解説を聞いてもまったく説得力のない決めつけがほとんどだし。それよりはいくぶんましだけど。
問題の意図や目的を明示せずに解かせた答えだけみても、その人がどんな意図でその回答を出したのかは断定できないから、これだけで実務がどうこう言うのは短絡的だとは思うよ。
よくある性格診断とかで、○○を選んだあなたは××な性格です〜ってのがあるけど、解説を聞いてもまったく説得力のない決めつけがほとんどだし。それよりはいくぶんましだけど。
199デフォルトの名無しさん (ワッチョイ 7f63-cT+3)
2019/02/20(水) 18:51:44.09ID:yWD0fIVX0 実務的には、「要求を満たし、簡潔にして高速で間違いがないこと」位かな
200デフォルトの名無しさん (エムゾネ FF7f-tyEA)
2019/02/20(水) 18:53:27.21ID:onU160B4F >>199
いや拡張性をサッとそえとく心配りは必要だろ
いや拡張性をサッとそえとく心配りは必要だろ
201デフォルトの名無しさん (スッップ Sd7f-tyEA)
2019/02/20(水) 18:55:22.57ID:MxetRGgJd 夜な夜な素数配列DBをどんどん作ってくれるプログラムと、素数配列DBから値を引っ張ってくれるプログラムの組み合わせでファイナルアンサーだ!
202さまよえる蟻人間 ◆T6xkBnTXz7B0 (スププ Sd7f-fXCu)
2019/02/20(水) 18:55:39.06ID:AQq/x/Ljd 3以上の素数は奇数であること。
n以下の素数を調べるときは、ルートn以下の約数を調べればいいこと。
整数論を勉強したなら、これくらいは知っておいて欲しい。
n以下の素数を調べるときは、ルートn以下の約数を調べればいいこと。
整数論を勉強したなら、これくらいは知っておいて欲しい。
203デフォルトの名無しさん (アウアウウー Sa4b-s2oh)
2019/02/20(水) 19:05:39.41ID:agArr1lpa >>199
組み込み用でメモリが非常に少ないマシン用のプログラムの場合もう一捻り必要。
組み込み用でメモリが非常に少ないマシン用のプログラムの場合もう一捻り必要。
204デフォルトの名無しさん (アウアウウー Sa4b-s2oh)
2019/02/20(水) 19:07:07.48ID:agArr1lpa ま、いいや。うちに帰ってから俺が変なプログラム作ってみるよ。
205194 (ワッチョイ 877b-WJvq)
2019/02/20(水) 19:09:30.26ID:V5JGZApS0 >>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);
てな具合に論理演算子の短絡評価を使う手もあるか。
パズルとしては面白いけど、実用で何の意味があるのか、
金払って受験する資格試験の問題としてどうなのか、疑問だなぁ。
#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);
てな具合に論理演算子の短絡評価を使う手もあるか。
パズルとしては面白いけど、実用で何の意味があるのか、
金払って受験する資格試験の問題としてどうなのか、疑問だなぁ。
206さまよえる蟻人間 ◆T6xkBnTXz7B0 (スププ Sd7f-fXCu)
2019/02/20(水) 19:12:37.32ID:AQq/x/Ljd 素数の知識がなければ暗号解読やハッキングができないかも。
207デフォルトの名無しさん (ワッチョイ 5fda-iZZg)
2019/02/20(水) 19:33:00.95ID:/pFWY/nZ0 この流れだと
世の中のあらゆる暗号鍵はあらかじめ配列に格納することで突破可能、どうやって配列を作るかは秘密
とか言い出しそうだな
本質が分かってない
素数を高速に表示することが目的ではなく素数を少ない計算量で見つける事が本来の目的
世の中のあらゆる暗号鍵はあらかじめ配列に格納することで突破可能、どうやって配列を作るかは秘密
とか言い出しそうだな
本質が分かってない
素数を高速に表示することが目的ではなく素数を少ない計算量で見つける事が本来の目的
208デフォルトの名無しさん (ワッチョイ 877b-WJvq)
2019/02/20(水) 19:46:25.77ID:V5JGZApS0209さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8701-fXCu)
2019/02/20(水) 19:56:53.43ID:jAMIqMc60 >>207
そのアイディアに近いものはレインボーテーブルと呼ばれていて、すでに実用化されている。
そのアイディアに近いものはレインボーテーブルと呼ばれていて、すでに実用化されている。
210デフォルトの名無しさん (ワッチョイ 5fda-yQ/S)
2019/02/20(水) 20:08:03.07ID:/pFWY/nZ0211さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8701-fXCu)
2019/02/20(水) 20:23:16.84ID:jAMIqMc60 一般的なコンピューターでは素数暗号の解読は困難だね。A5/1 Security Projectが進めばどうなるかわからないが。
212さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8701-fXCu)
2019/02/20(水) 20:25:26.46ID:jAMIqMc60 Windowsのユーザーアカウントくらいなら数日あれば。。。
213デフォルトの名無しさん (アウアウクー MM7b-3QuV)
2019/02/20(水) 20:27:13.73ID:EKI9LXSlM >>195
>整数論の基礎
素数だけで構成する積による表現がすべて自然数について存在すること、ならびに、この積の表現が一通りであることを証明してください
>整数論の基礎
単に掛け算の交換則だけでいいのでは?
>整数論の基礎
素数だけで構成する積による表現がすべて自然数について存在すること、ならびに、この積の表現が一通りであることを証明してください
>整数論の基礎
単に掛け算の交換則だけでいいのでは?
>>205
それは表示した数が、果たして素数かどうか、を示してはいませんよね
それは表示した数が、果たして素数かどうか、を示してはいませんよね
>>206
RSA 暗号はもう古いです、今は elgamal 暗号がトレンドです
RSA 暗号はもう古いです、今は elgamal 暗号がトレンドです
219さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8701-fXCu)
2019/02/20(水) 20:33:59.13ID:jAMIqMc60 >>215
「ある整数の倍数の存在が周期的であること」を利用すれば、メモリーを節約できる。
「ある整数の倍数の存在が周期的であること」を利用すれば、メモリーを節約できる。
>>219
たしかに 2 と 3 の公倍数である 6 をもとに
6n + 1, 6n + 5 だけをテーブルに載せる、とかは可能ですね
私はやったことがない、それはどうでもいいとして、これをコード化(coding-realized) したのも見たことがありません、いつか誰かやるだろうと思っていたんですが、なかなか表に表れませんね
たしかに 2 と 3 の公倍数である 6 をもとに
6n + 1, 6n + 5 だけをテーブルに載せる、とかは可能ですね
私はやったことがない、それはどうでもいいとして、これをコード化(coding-realized) したのも見たことがありません、いつか誰かやるだろうと思っていたんですが、なかなか表に表れませんね
222さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8701-fXCu)
2019/02/20(水) 20:44:12.93ID:jAMIqMc60 >>216
3以上の素数pが奇数でない、すなわち偶数であれば、偶数の定義より、pは2で割り切れるが、pに2以外の約数があれば素数でない。矛盾。□
3以上の素数pが奇数でない、すなわち偶数であれば、偶数の定義より、pは2で割り切れるが、pに2以外の約数があれば素数でない。矛盾。□
223デフォルトの名無しさん (ワッチョイ 7f8f-M0iL)
2019/02/20(水) 20:48:00.19ID:ZC/ijL840 >>201
サーバー側ならこれが攻守最強だな。隙がねぇ……
サーバー側ならこれが攻守最強だな。隙がねぇ……
226さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8701-fXCu)
2019/02/20(水) 21:00:10.59ID:jAMIqMc60 >>221
素数プログラミングの競技に参加してやってみれば?
素数プログラミングの競技に参加してやってみれば?
227さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8701-fXCu)
2019/02/20(水) 21:01:27.72ID:jAMIqMc60 >>225
「約数2があれば」に訂正。
「約数2があれば」に訂正。
>>227
うむ、それでいい感じですね
うむ、それでいい感じですね
229さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8701-fXCu)
2019/02/20(水) 21:06:35.67ID:jAMIqMc60 倍数の周期性を使えばBuzzFizz問題の応用(多重化)でメモリーが節約できるはず。
230さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8701-fXCu)
2019/02/20(水) 21:10:58.63ID:jAMIqMc60 バッチ処理で素数生成するなら、途中から計算を再開できるようにしておくとよい。
231さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8701-fXCu)
2019/02/20(水) 21:12:34.79ID:jAMIqMc60 >>216
「素数生成 ルート」でWeb検索。
「素数生成 ルート」でWeb検索。
232デフォルトの名無しさん (ラクペッ MM9b-iZZg)
2019/02/20(水) 21:39:38.70ID:IdoLDUDuM 巨大な素数の一覧
https://ja.wikipedia.org/wiki/%E5%B7%A8%E5%A4%A7%E3%81%AA%E7%B4%A0%E6%95%B0%E3%81%AE%E4%B8%80%E8%A6%A7
1億桁を超える素数を発見すれば懸賞金が手に入るぞ
お前ら頑張れ
https://ja.wikipedia.org/wiki/%E5%B7%A8%E5%A4%A7%E3%81%AA%E7%B4%A0%E6%95%B0%E3%81%AE%E4%B8%80%E8%A6%A7
1億桁を超える素数を発見すれば懸賞金が手に入るぞ
お前ら頑張れ
233デフォルトの名無しさん (ワッチョイ 8701-YoT1)
2019/02/20(水) 22:33:31.62ID:bRSP0nNv0 大学の授業でやってるがわけわからん
234デフォルトの名無しさん (ワッチョイ 3d7b-Frsa)
2019/02/21(木) 04:51:28.69ID:k7mDakXF0 「3以上の素数は偶数ではない」って、
「2以外の2の倍数は素数ではない」と言い換えられるよね。
対偶命題の真偽は等しい、ってことで。
「3以上」「2以外」の部分の処理がちょいと面倒かも知れんが。
素数の定義から自動的に成立する、トートロジーって気もする。
実用的には、チェックすべき対象が一気に半減するから
決して役に立たないつまらない事実とは言わないけど。
「2以外の2の倍数は素数ではない」と言い換えられるよね。
対偶命題の真偽は等しい、ってことで。
「3以上」「2以外」の部分の処理がちょいと面倒かも知れんが。
素数の定義から自動的に成立する、トートロジーって気もする。
実用的には、チェックすべき対象が一気に半減するから
決して役に立たないつまらない事実とは言わないけど。
235デフォルトの名無しさん (ワッチョイ a6ca-rusg)
2019/02/21(木) 05:47:41.57ID:0ZBMuCH70 なぜ「nの倍数」のうち「2の倍数」だけを特別視するんだ?
236デフォルトの名無しさん (ワッチョイ 3d7b-Frsa)
2019/02/21(木) 06:56:30.22ID:k7mDakXF0 たぶん2の倍数に特別に「偶数」って名前がついてるから。
て言うか「2の倍数」を「偶数」と呼び替えるせいで
「3以上の素数は偶数ではない」がそれらしい命題に見える心理的効果。
て言うか「2の倍数」を「偶数」と呼び替えるせいで
「3以上の素数は偶数ではない」がそれらしい命題に見える心理的効果。
237デフォルトの名無しさん (ワッチョイ a6ca-rusg)
2019/02/21(木) 07:07:07.36ID:0ZBMuCH70 じゃあ例えば3の倍数を俺数と呼ぶことにすれば
「5以上の素数は俺数ではない」がそれらしい命題に見えるわけか
「5以上の素数は俺数ではない」がそれらしい命題に見えるわけか
238デフォルトの名無しさん (ワッチョイ b67c-dS/9)
2019/02/21(木) 09:23:02.63ID:hmZcoRew0 >>237
実際にそういう理屈で俺数をちゃんと名前つけて定義してた気がする
実際にそういう理屈で俺数をちゃんと名前つけて定義してた気がする
239デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/21(木) 10:06:27.81ID:vm8j2cEaM https://ja.wikipedia.org/wiki/%E5%9C%8F%E8%AB%96
集合論的な数学理論の構成では集合やその元に対して写像や関係を導入し、それらが満たすべき公理を列挙する。その公理を満たすような「構造」を持った個々の集合が理論の具体的な実現を示していて、それら一つ一つの実現に共通の性質が公理から演繹的に証明される。
集合論的な数学理論の構成では集合やその元に対して写像や関係を導入し、それらが満たすべき公理を列挙する。その公理を満たすような「構造」を持った個々の集合が理論の具体的な実現を示していて、それら一つ一つの実現に共通の性質が公理から演繹的に証明される。
240デフォルトの名無しさん (ワッチョイ 6663-dS/9)
2019/02/21(木) 10:43:14.10ID:hP/J64Xh0 10進数で扱ったときに下一桁だけで素数でないか判定できるし
241デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/21(木) 11:52:49.43ID:TYXtdJfXM https://ja.wikipedia.org/wiki/%E4%BB%A3%E6%95%B0%E4%BD%93
一般には、素数は代数体の整数環の素元として定義される(そこでは反数などの同伴なものも素数に含まれる)。このため、有理整数環での素数は有理素数と呼ばれることもある。
自然数あるいは実数の中での素数の分布の様子は高度に非自明で、リーマン予想などの現代数学の重要な問題との興味深い結び付きが発見されている。
一般には、素数は代数体の整数環の素元として定義される(そこでは反数などの同伴なものも素数に含まれる)。このため、有理整数環での素数は有理素数と呼ばれることもある。
自然数あるいは実数の中での素数の分布の様子は高度に非自明で、リーマン予想などの現代数学の重要な問題との興味深い結び付きが発見されている。
242デフォルトの名無しさん (ワッチョイ a60d-rusg)
2019/02/21(木) 12:21:11.52ID:9bhJdGzC0243デフォルトの名無しさん (ワッチョイ 11d2-E+eR)
2019/02/21(木) 12:24:22.12ID:ZaAjcalq0 2の倍数は1個となりにあるけれど3の倍数は2個となりにあるわけじゃないからだろ
244デフォルトの名無しさん (ワッチョイ 6663-dS/9)
2019/02/21(木) 12:26:58.45ID:hP/J64Xh0 世界の半数の人間を一気に殺せるとしたら、スゴイ兵器だろう
245デフォルトの名無しさん (JP 0Hb5-haK8)
2019/02/21(木) 12:45:09.74ID:AfMCgFa5H もういいからいいかげんCの話しろよ
246デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/21(木) 12:48:37.97ID:FW7y2HsrM https://ja.wikipedia.org/wiki/%E5%90%88%E5%90%8C%E7%AE%97%E8%A1%93
ガウスの貢献はこの集合、今日整数の合同類 の環 ℤ/nℤ と呼ばれる代数系、の構造を詳らかにするものであった。第一に加法に関して考えれば、これは 1 を生成元とする巡回群を定める。第二に乗法に関しては、これは法 n に依存して性質が異なり、法 n が素数ならば体が得られる。このような方法により、計算の記述は簡素化される。
ガウスの貢献はこの集合、今日整数の合同類 の環 ℤ/nℤ と呼ばれる代数系、の構造を詳らかにするものであった。第一に加法に関して考えれば、これは 1 を生成元とする巡回群を定める。第二に乗法に関しては、これは法 n に依存して性質が異なり、法 n が素数ならば体が得られる。このような方法により、計算の記述は簡素化される。
247デフォルトの名無しさん (アークセー Sxbd-DIal)
2019/02/21(木) 13:04:43.82ID:SFQD6HMZx やっぱり理系はみんな素数が好きなのねん
248デフォルトの名無しさん (ワッチョイ 11d2-E+eR)
2019/02/21(木) 13:23:11.53ID:ZaAjcalq0 平方剰余の相互法則は奇数の素数でしかなりたたないから2は特別らしい
249デフォルトの名無しさん (ワッチョイ a95f-qM0Q)
2019/02/21(木) 20:15:32.30ID:lsmx9sV60 ダメプログラマだらけだな。
250デフォルトの名無しさん (ワッチョイ 6ada-JHNE)
2019/02/21(木) 20:25:59.92ID:m+qFL4AC0 プログラマ以前のただのC言語の評論家の集まりだからな
数学の素養どころか一般的な定番アルゴリズムすら理解しているのか怪しいのがいくらでもいる
数学の素養どころか一般的な定番アルゴリズムすら理解しているのか怪しいのがいくらでもいる
251デフォルトの名無しさん (ワッチョイ a95f-qM0Q)
2019/02/21(木) 20:29:14.38ID:lsmx9sV60 「100までの素数」は単にロジックが書けるかどうかの話で、素数の話ではないだろうに。
252デフォルトの名無しさん (ワッチョイ 6ada-JHNE)
2019/02/21(木) 20:33:10.06ID:m+qFL4AC0 配列に数字を並べて表示するだけの処理の何処にロジックがあるのやら
あれではただのゴリ押しだ
あれではただのゴリ押しだ
253デフォルトの名無しさん (ワッチョイ 668f-89Xw)
2019/02/21(木) 20:52:13.17ID:S9yUyDkx0 誰かがこの問題から実務向きかどうかがわかる、なんて言うからいけない
254さまよえる蟻人間 ◆T6xkBnTXz7B0 (スププ Sd0a-zIhq)
2019/02/21(木) 21:00:34.34ID:3Jj6vI7vd 最近知ったことだが、clangとclang++には、-pedantic -Wallの他に-Weverythingというオプションがある。これを使えば最大限に警告してくれる。
255デフォルトの名無しさん (ワッチョイ a95f-qM0Q)
2019/02/21(木) 21:25:46.65ID:lsmx9sV60 とりあえず、Cできない娘は受付時に言うとか、ホームページにわかるようにしてくれないとキツイ。
256デフォルトの名無しさん (ワッチョイ 6663-dS/9)
2019/02/21(木) 21:49:34.71ID:hP/J64Xh0 ロジックはアタマの中に
257デフォルトの名無しさん (ワッチョイ 66d2-uGSY)
2019/02/22(金) 11:10:49.03ID:Wvys6/Wz0 >192
「オッケーグーグル、『100以下の素数を表示するブログラム』を端末にダウンロードして!」
「オッケーグーグル、『100以下の素数を表示するブログラム』を端末にダウンロードして!」
258デフォルトの名無しさん (アウアウウー Sa21-0aQJ)
2019/02/22(金) 15:27:06.91ID:bcwEHSMYa С言語
259デフォルトの名無しさん (ワッチョイ 7d01-rusg)
2019/02/22(金) 15:32:39.50ID:MGDdaAr30 偶素数と奇素数
260デフォルトの名無しさん (ワッチョイ 6d27-rusg)
2019/02/22(金) 21:00:52.74ID:JBg0shn90 C言語とか勉強じゃなくて仕事だったり動くもの作らないと覚えられないと思うんだけど
何をすることでC出来るようになったの?
何をすることでC出来るようになったの?
261デフォルトの名無しさん (ワッチョイ 8d7f-zTIm)
2019/02/22(金) 21:11:58.58ID:FtBJuZ9s0 勉強だったとしても動くもの作り続ければだろうよ
262デフォルトの名無しさん (アウアウウー Sa21-0aQJ)
2019/02/22(金) 21:52:23.52ID:/efpuxREa 納期までに完成させないと大変な事になるというスリルとサスペンスが人間の能力を引き出すのです。
しかしこれは恐怖から逃れようとする行為なので恐怖がなくなる、または度胸がついてしまったらそこで終わりです。
しかしこれは恐怖から逃れようとする行為なので恐怖がなくなる、または度胸がついてしまったらそこで終わりです。
263デフォルトの名無しさん (ワッチョイ 11d2-E+eR)
2019/02/23(土) 16:48:48.66ID:RKMUv84W0 #defineじゃなくてconstすすめてくるやつは机上の空論だな
constつかったら最適ななしにするとswitchのラベルにつかえないじゃないか
constつかったら最適ななしにするとswitchのラベルにつかえないじゃないか
264デフォルトの名無しさん (ワッチョイ 3d7b-Frsa)
2019/02/23(土) 17:14:59.00ID:7GKXwuwj0 >>263
C++ では const 変数を case ラベルに使えるから、混同してる人かも。
C++ では const 変数を case ラベルに使えるから、混同してる人かも。
265デフォルトの名無しさん (ワッチョイ 3d7b-Frsa)
2019/02/23(土) 17:46:54.59ID:7GKXwuwj0 C なら「名前のついた整数」は enum だね。
スコープ効くし case のラベルにも配列定義の要素数の指定にも使える。
スコープ効くし case のラベルにも配列定義の要素数の指定にも使える。
266デフォルトの名無しさん (ワッチョイ a60e-rusg)
2019/02/23(土) 20:56:53.69ID:Ez7Plxd90 Cのenumはenum-baseがないから
どでかい定数には使えない
どでかい定数には使えない
267デフォルトの名無しさん (ワッチョイ 7d01-DIal)
2019/02/23(土) 21:13:59.35ID:tyf/JAHu0 enumはあくまで値の大小は関係なくユニークな識別子であって、大きな値が問題になるような用途に使うのはいかがなものか。
268デフォルトの名無しさん (ワッチョイ 66aa-ihwj)
2019/02/23(土) 21:41:02.60ID:W1FUX4jY0 プリミティブな定数以外のスイッチって
ものすごく気持ち悪いんだが
長大数渡して色々工夫してスイッチするのと
似たようなことコンパイラがやらなきゃいかんよね
ものすごく気持ち悪いんだが
長大数渡して色々工夫してスイッチするのと
似たようなことコンパイラがやらなきゃいかんよね
269デフォルトの名無しさん (ワッチョイ 3d7b-Frsa)
2019/02/24(日) 07:48:44.15ID:RgZ/0jGo0 C の enum は「互いに区別できる一群の整数値の組」で、
具体的な値にさほど拘らない用途で使うべき、っていう
言語機能のそもそも論を言われると、その通りなんだよな。
その意味では case のラベルに enum の値を使うのはいいけど、
配列定義の要素数で使うのは便利にコキ使いすぎ、って感じか。
実際のところ enum で表現できる値の範囲が、
配列の要素数指定に使える範囲(size_t)と一致するか、という
疑問を持って調べたけど、いまいちハッキリせず今も解消してない。
まぁ、それ言うと case ラベルで受け入れられる値の範囲が
enum の範囲と同じか、についても確信ないんだが。
(権威主義に逃げ込む気はないと事前に言い訳した上で)
#define のマクロ値の代わりに enum の値を使うってのは、
カーニハンとパイクの『プログラミング作法』第1章、
「1.5 マジックナンバー」で紹介されてることを付記しておく。
具体的な値にさほど拘らない用途で使うべき、っていう
言語機能のそもそも論を言われると、その通りなんだよな。
その意味では case のラベルに enum の値を使うのはいいけど、
配列定義の要素数で使うのは便利にコキ使いすぎ、って感じか。
実際のところ enum で表現できる値の範囲が、
配列の要素数指定に使える範囲(size_t)と一致するか、という
疑問を持って調べたけど、いまいちハッキリせず今も解消してない。
まぁ、それ言うと case ラベルで受け入れられる値の範囲が
enum の範囲と同じか、についても確信ないんだが。
(権威主義に逃げ込む気はないと事前に言い訳した上で)
#define のマクロ値の代わりに enum の値を使うってのは、
カーニハンとパイクの『プログラミング作法』第1章、
「1.5 マジックナンバー」で紹介されてることを付記しておく。
270デフォルトの名無しさん (ワッチョイ a60e-rusg)
2019/02/24(日) 08:31:42.99ID:fxLM3JpE0 enum
{
a = 4294967297
};
int main()
{
printf("%d\n", sizeof a);
printf("%llx\n", a);
}
gcc:
8
100000001
cl:
4
1
どっちが正しい?
とりあえずはコケるほうに合わせるが
{
a = 4294967297
};
int main()
{
printf("%d\n", sizeof a);
printf("%llx\n", a);
}
gcc:
8
100000001
cl:
4
1
どっちが正しい?
とりあえずはコケるほうに合わせるが
271デフォルトの名無しさん (ワッチョイ 6ada-rusg)
2019/02/24(日) 08:40:26.06ID:7CaxIYof0 以前に組込み用途の8bitマイコン用C言語を使っていた時の話
CPUの機能的にint型は8bitだった
ところが多条件の分岐処理でif-elseを使った時よりenum変数のswitch文使った方が明らかにパフォーマンスが
低下して問題になったことがあった
訳が分からず逆アセンブルして調べてみるとenum変数は何故か16bitに展開されていて条件判定毎に型変換が
発生していたことが原因だっということがあった、という昔の思い出
CPUの機能的にint型は8bitだった
ところが多条件の分岐処理でif-elseを使った時よりenum変数のswitch文使った方が明らかにパフォーマンスが
低下して問題になったことがあった
訳が分からず逆アセンブルして調べてみるとenum変数は何故か16bitに展開されていて条件判定毎に型変換が
発生していたことが原因だっということがあった、という昔の思い出
272デフォルトの名無しさん (ワッチョイ 5e3e-dS/9)
2019/02/24(日) 13:48:01.77ID:gUJTdPsI0 >>271
int が 8bit という時点で仕様に反しているので
整数演算のいろんなところで暗黙に int に変換してから
計算する C のルールが破綻するんじゃなかろうか。
処理系が必ずしも言語の規格に完全準拠する必要はないけど、
基本的な部分で変えちゃうとどういう挙動になるのか
予想しづらいよな。
int が 8bit という時点で仕様に反しているので
整数演算のいろんなところで暗黙に int に変換してから
計算する C のルールが破綻するんじゃなかろうか。
処理系が必ずしも言語の規格に完全準拠する必要はないけど、
基本的な部分で変えちゃうとどういう挙動になるのか
予想しづらいよな。
273デフォルトの名無しさん (ワッチョイ 6ada-rusg)
2019/02/24(日) 14:00:01.86ID:7CaxIYof0 charがその処理系の最小bit数であることだけは仕様に明記されてるけど
それ以外の整数型は大小関係だけが規定されていてintそのものに
具体的なbit数の決まりはなかったんじゃなかったっけ?
実際その時もchar、short、intが8bitで、longが16bitだったと思う
それ以外の整数型は大小関係だけが規定されていてintそのものに
具体的なbit数の決まりはなかったんじゃなかったっけ?
実際その時もchar、short、intが8bitで、longが16bitだったと思う
274デフォルトの名無しさん (ワッチョイ 5e3e-dS/9)
2019/02/24(日) 14:04:53.91ID:gUJTdPsI0 >>270
C ではこういうルールになっている
・ 列挙定数の値を定義する式は int 型で表現可能な値を持つ整数定数式でなければならない
・ 列挙体 (列挙型のオブジェクト) の大きさは要素の全てを保持可能な大きさをもつ
がその選択は処理系定義である。
・ 列挙定数の型は (列挙型ではなく) int である
つまり、 C では列挙体と列挙定数の型が異なり、
列挙定数の型は int そのもの。
それは単に int の大きさがそれぞれ違うってだけじゃないの?
だとするとどちらの挙動も仕様通り。
(余談だが C++ では列挙定数の型は列挙型なので、 C とは少し解釈が違う。)
C ではこういうルールになっている
・ 列挙定数の値を定義する式は int 型で表現可能な値を持つ整数定数式でなければならない
・ 列挙体 (列挙型のオブジェクト) の大きさは要素の全てを保持可能な大きさをもつ
がその選択は処理系定義である。
・ 列挙定数の型は (列挙型ではなく) int である
つまり、 C では列挙体と列挙定数の型が異なり、
列挙定数の型は int そのもの。
それは単に int の大きさがそれぞれ違うってだけじゃないの?
だとするとどちらの挙動も仕様通り。
(余談だが C++ では列挙定数の型は列挙型なので、 C とは少し解釈が違う。)
275デフォルトの名無しさん (ワッチョイ 392f-rusg)
2019/02/24(日) 14:05:53.36ID:yQAH7TUL0 >>273
気持ちとしては賛成したいんだが
残念なことにISO/IEC9899 5.2.4.2.1 Sizes of integer types <limits.h>に、
INT_MAX +32767と書いてあるんだ
腹立たしいクソ規定だがそうなっている
気持ちとしては賛成したいんだが
残念なことにISO/IEC9899 5.2.4.2.1 Sizes of integer types <limits.h>に、
INT_MAX +32767と書いてあるんだ
腹立たしいクソ規定だがそうなっている
276デフォルトの名無しさん (ワッチョイ 5e3e-dS/9)
2019/02/24(日) 14:15:23.84ID:gUJTdPsI0 >>273
ビット数という形ではないが、
limits.h で定義される各整数型が表現可能な数値の範囲を表すマクロ
についての最低限度の値という形で間接的に定義されている。
C99 だと 5.2.4.2.1 にある。
int は実質的に 16bit は必要。
ビット数という形ではないが、
limits.h で定義される各整数型が表現可能な数値の範囲を表すマクロ
についての最低限度の値という形で間接的に定義されている。
C99 だと 5.2.4.2.1 にある。
int は実質的に 16bit は必要。
277デフォルトの名無しさん (ワッチョイ 66aa-ihwj)
2019/02/24(日) 15:01:36.58ID:eMMK67XW0 整数型をワードより大きくしなきゃいけない
なんてなったら使い物にならんよな
なんてなったら使い物にならんよな
278デフォルトの名無しさん (スッップ Sd0a-5Ibu)
2019/02/24(日) 16:23:47.05ID:9mv8IHEdd 確かに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までの任意の値を含むに十分大きい)サイズをもつ。
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までの任意の値を含むに十分大きい)サイズをもつ。
279デフォルトの名無しさん (ワッチョイ 2a79-dS/9)
2019/02/24(日) 16:36:11.63ID:BJ3WFlaM0280デフォルトの名無しさん (ワッチョイ 6ada-JHNE)
2019/02/24(日) 16:49:38.07ID:7CaxIYof0 言語規格そのものというより標準ライブラリの都合というかヘッダーの仕様だけのような気がするけど
limit.hで最大値と最小値を規定するのであれば-128と127を宣言すればintの範囲を変更した実装も可能ではあるな
厳密には問題があるかも知れないけどC99準拠の実装と言うことでお茶を濁している処理系はあり得そうだ
limit.hで最大値と最小値を規定するのであれば-128と127を宣言すればintの範囲を変更した実装も可能ではあるな
厳密には問題があるかも知れないけどC99準拠の実装と言うことでお茶を濁している処理系はあり得そうだ
281デフォルトの名無しさん (アウアウウー Sa21-sU2d)
2019/02/24(日) 19:23:23.70ID:iK4D+UQia >>279
組み込み市場的に8ー16bitが主流だけどな。
組み込み市場的に8ー16bitが主流だけどな。
282デフォルトの名無しさん (ワッチョイ 7d01-DIal)
2019/02/24(日) 22:09:42.91ID:8/luM3Zk0 一時期、組み込みもLinuxに席巻されそうになったこともあるけど昨今のIoTブームで16bit以下の超省電力が復権してきたイメージあるわ。
283デフォルトの名無しさん (アウアウウー Sa21-rcBw)
2019/02/24(日) 22:14:44.36ID:uaNZoE2Ca でもそういう機器ってメモリの読み書きしかすることねえもんな。
あんまりおもろない。
あんまりおもろない。
284デフォルトの名無しさん (ワッチョイ 6ada-JHNE)
2019/02/24(日) 22:24:41.13ID:7CaxIYof0 組み込みではLinuxどころかOSすら搭載してないシステムも多いよ
ネット家電なんかの一部を除けばエアコン、冷蔵庫、洗濯機など家電製品の殆どはOSもファイルシステムもネットワークスタックも無縁のスタンドアローン動作
電源投入リセット後ひたすら処理ループを回すだけ
CPUコアは8bitか16bitでRAMは数KB、ROMは数十KB程度のワンチップマイコン
ネット家電なんかの一部を除けばエアコン、冷蔵庫、洗濯機など家電製品の殆どはOSもファイルシステムもネットワークスタックも無縁のスタンドアローン動作
電源投入リセット後ひたすら処理ループを回すだけ
CPUコアは8bitか16bitでRAMは数KB、ROMは数十KB程度のワンチップマイコン
285デフォルトの名無しさん (ワッチョイ 6ada-JHNE)
2019/02/24(日) 22:29:53.46ID:7CaxIYof0 メモリの読み書きよりもIOポートを制御するのがメインの仕事
286デフォルトの名無しさん (ワッチョイ 6663-dS/9)
2019/02/24(日) 22:33:57.82ID:2wDVhIfR0 殆ど電卓だな
287デフォルトの名無しさん (ワッチョイ 6ada-JHNE)
2019/02/24(日) 22:41:13.06ID:7CaxIYof0 電卓ほど単純ではないけどね
まともにフィードバック制御を実装するにはそれなりの演算負荷は掛かる
センサー入力に応じて出力を迅速安定に目標に追従させるには裏では予測判断も必要
マイコン使っている以上は単調なON/OFF制御では無いよ
まともにフィードバック制御を実装するにはそれなりの演算負荷は掛かる
センサー入力に応じて出力を迅速安定に目標に追従させるには裏では予測判断も必要
マイコン使っている以上は単調なON/OFF制御では無いよ
288デフォルトの名無しさん (ワッチョイ 6aab-uGSY)
2019/02/24(日) 22:49:58.22ID:gSQz1x8q0 欲深い人間のことだからどうせすぐいろんなことをさせたくなる
289デフォルトの名無しさん (ワッチョイ 668f-89Xw)
2019/02/24(日) 23:23:28.26ID:wTcw/8fo0 IoTなら制御はサーバー側じゃないの?
290デフォルトの名無しさん (ワッチョイ 6663-dS/9)
2019/02/24(日) 23:28:06.97ID:2wDVhIfR0 Fog computing がキーワードだそうだ
291デフォルトの名無しさん (アウアウウー Sa21-rcBw)
2019/02/25(月) 00:12:03.18ID:dk4D1NQWa IOポート制御とメモリ読み書きの違いがわからない
292デフォルトの名無しさん (ワッチョイ 5e3e-dS/9)
2019/02/25(月) 00:27:51.25ID:LzC1voP10 メモリーバスが I/O につながってることもあるしな。
293デフォルトの名無しさん (ワッチョイ 6ada-rusg)
2019/02/25(月) 06:19:38.59ID:/Zb+jKgT0 >>291
IOポートを弄るにはそれぞれのSFR(特殊機能レジスタ)を操作する
一般的なメモリマップトIO方式ではSFRはCPUの特定のアドレス空間にマッピングされてる
Cプログラムからはそのアドレス空間をそれぞれ適当な変数に割り当てて基本的にはビット操作で制御する
SFRのイメージが分からなければ適当なマイコンのデータシートでも見てみるとある程度は分かると思うよ
参考として電子工作で有名なPICマイコンのサイト貼っておくので見てみるといいよ
IOポートを弄るにはそれぞれのSFR(特殊機能レジスタ)を操作する
一般的なメモリマップトIO方式ではSFRはCPUの特定のアドレス空間にマッピングされてる
Cプログラムからはそのアドレス空間をそれぞれ適当な変数に割り当てて基本的にはビット操作で制御する
SFRのイメージが分からなければ適当なマイコンのデータシートでも見てみるとある程度は分かると思うよ
参考として電子工作で有名なPICマイコンのサイト貼っておくので見てみるといいよ
294デフォルトの名無しさん (ワッチョイ 6ada-rusg)
2019/02/25(月) 06:22:12.63ID:/Zb+jKgT0295デフォルトの名無しさん (ワッチョイ 392f-rusg)
2019/02/25(月) 07:08:32.40ID:YApQAEs00296デフォルトの名無しさん (ワッチョイ 5d2d-4xwP)
2019/02/25(月) 07:37:13.02ID:p9N2Idf00 組み込みマイコンでI/O空間がx86みたいに別なマイコンってあるかな
297デフォルトの名無しさん (アウアウウー Sa21-rcBw)
2019/02/25(月) 07:40:18.98ID:dk4D1NQWa >>293
だから、区別ないじゃん
だから、区別ないじゃん
298デフォルトの名無しさん (ワッチョイ 6ada-rusg)
2019/02/25(月) 07:52:33.64ID:/Zb+jKgT0 メモリ(RAM)に割り当てられた変数は演算とその結果に意味がある
IO(SFR)に割り当てられた変数はビットのR/W操作そのものに意味がある
SFR変数上で演算操作を行うとほぼ確実に誤動作、暴走する
IO(SFR)に割り当てられた変数はビットのR/W操作そのものに意味がある
SFR変数上で演算操作を行うとほぼ確実に誤動作、暴走する
299デフォルトの名無しさん (ワッチョイ eaf9-uGSY)
2019/02/25(月) 07:58:55.56ID:51Y60IO10300デフォルトの名無しさん (ワッチョイ 6aa5-KM03)
2019/02/25(月) 08:52:03.76ID:OZaxYFd40 本当か?
揮発性だぞ
揮発性だぞ
301デフォルトの名無しさん (アークセー Sxbd-DIal)
2019/02/25(月) 08:52:04.55ID:QDSDQN71x >>296
あるよ。AVRはメモリマップされたIO空間にin/out命令で効率的にアクセスできる。
あるよ。AVRはメモリマップされたIO空間にin/out命令で効率的にアクセスできる。
302デフォルトの名無しさん (ワッチョイ a6e1-rusg)
2019/02/25(月) 10:42:31.86ID:KHsK1sBo0303デフォルトの名無しさん (ワッチョイ 6ada-rusg)
2019/02/25(月) 11:12:53.53ID:/Zb+jKgT0 Read動作を確実に実行するためだろう
プログラム上はSFR変数からダミー変数への代入にしか見えないので何の演算にも関与しないと判断されて
コンパイル時の最適化で処理が削除される恐れがある
SFR変数はvolatile宣言しておくのが普通
プログラム上はSFR変数からダミー変数への代入にしか見えないので何の演算にも関与しないと判断されて
コンパイル時の最適化で処理が削除される恐れがある
SFR変数はvolatile宣言しておくのが普通
304デフォルトの名無しさん (ワッチョイ a6e1-rusg)
2019/02/25(月) 11:41:24.89ID:KHsK1sBo0 それはREADの回数やタイミングの話だろ
READとWRITEで対象が異なる場合があることと何の関係があるんだよ
READとWRITEで対象が異なる場合があることと何の関係があるんだよ
305デフォルトの名無しさん (ワッチョイ 6ada-rusg)
2019/02/25(月) 11:52:53.97ID:/Zb+jKgT0 そこに拘っていたのか
てっきりメモリとIOによる変数の扱いの注意点のことかと思っていたわ
てっきりメモリとIOによる変数の扱いの注意点のことかと思っていたわ
306デフォルトの名無しさん (アークセー Sxbd-DIal)
2019/02/25(月) 11:58:40.63ID:QDSDQN71x volatileなしだと、同じsfrにwriteした直後にreadすると最適化により実際にはreadされないことがある。
307デフォルトの名無しさん (アウアウカー Sa55-rcBw)
2019/02/25(月) 12:03:53.38ID:s/jxdMxMa メモリとIOは違うっていっても、要は裏でなんかやってるだけだし。
だからvolatileなんて話も出てくる。
だからvolatileなんて話も出てくる。
308デフォルトの名無しさん (ワッチョイ a6e1-rusg)
2019/02/25(月) 12:15:38.73ID:KHsK1sBo0309デフォルトの名無しさん (アークセー Sxbd-DIal)
2019/02/25(月) 12:41:00.22ID:QDSDQN71x310デフォルトの名無しさん (ワッチョイ a6e1-rusg)
2019/02/25(月) 12:44:45.62ID:KHsK1sBo0 >>309
306は話のすり替えだ
READの回数やタイミングの話なんかしていない
READとWRITEの対象が違うということについてだ
volatileと何の関係があるのか
ただの言い間違えか
どっちだ?
306は話のすり替えだ
READの回数やタイミングの話なんかしていない
READとWRITEの対象が違うということについてだ
volatileと何の関係があるのか
ただの言い間違えか
どっちだ?
311デフォルトの名無しさん (アークセー Sxbd-DIal)
2019/02/25(月) 12:48:10.76ID:QDSDQN71x >>310
CRにwriteした直後に同じアドレスのSRをreadした時に最適化され、write値がそのままread値に使われるのをvolatileなしでどうやって回避するのん?
CRにwriteした直後に同じアドレスのSRをreadした時に最適化され、write値がそのままread値に使われるのをvolatileなしでどうやって回避するのん?
312デフォルトの名無しさん (ドコグロ MMb1-ZgJD)
2019/02/25(月) 12:49:09.15ID:y5m/9TYHM313デフォルトの名無しさん (ワッチョイ 6ada-rusg)
2019/02/25(月) 12:53:40.05ID:/Zb+jKgT0314デフォルトの名無しさん (ワッチョイ 6d27-rusg)
2019/02/25(月) 12:57:22.86ID:P8ZqxZ/40 こうして見るとやはりC言語は組み込み屋専門ということか
話が難しすぎてついていけねえw
話が難しすぎてついていけねえw
315デフォルトの名無しさん (ワッチョイ a6e1-rusg)
2019/02/25(月) 12:59:43.43ID:KHsK1sBo0316デフォルトの名無しさん (アークセー Sxbd-DIal)
2019/02/25(月) 13:15:23.23ID:QDSDQN71x >>314
全然難しくはないし、組み込みに限った話じゃないよ。
ただ単に「今見えている処理とは別のとこからそのアドレスの値が更新される可能性があるので最適化しちゃダメよ」ってのを明示的に示すためのvolatileなので。
C#やJavaとかでもスレッドをまたいで不用意にアクセスする変数はvolatileつけないとバグるし。
全然難しくはないし、組み込みに限った話じゃないよ。
ただ単に「今見えている処理とは別のとこからそのアドレスの値が更新される可能性があるので最適化しちゃダメよ」ってのを明示的に示すためのvolatileなので。
C#やJavaとかでもスレッドをまたいで不用意にアクセスする変数はvolatileつけないとバグるし。
317デフォルトの名無しさん (アウアウウー Sa21-rcBw)
2019/02/25(月) 13:16:39.48ID:X/kVtIsHa 組込専門、みたいなひとって抽象的な話のできないクソ多いよ。
コードもクソが多い。sleepせずにビジーウェイト使うタイプ。
コードもクソが多い。sleepせずにビジーウェイト使うタイプ。
318デフォルトの名無しさん (ワッチョイ 6ada-rusg)
2019/02/25(月) 13:17:16.26ID:/Zb+jKgT0 横レスだけどWrite属性のSFRの値(この場合CR)をReadしても値は不定だけどね
同一アドレスにマッピングされているRead属性のSFRの値(SR)の値が返ってきて変数に代入されているだけ
普通はWrite属性のSFRの状態を記憶する必要があればバッファ変数に内容を保存しておく
同一アドレスにマッピングされているRead属性のSFRの値(SR)の値が返ってきて変数に代入されているだけ
普通はWrite属性のSFRの状態を記憶する必要があればバッファ変数に内容を保存しておく
319デフォルトの名無しさん (ワッチョイ a6e1-rusg)
2019/02/25(月) 13:49:48.67ID:KHsK1sBo0 write属性なんて用語あったっけ
ゲートだけ出てるのはREでデコード
トーテムポールになってるのをWEでデコード
というのは属性か?
ゲートだけ出てるのはREでデコード
トーテムポールになってるのをWEでデコード
というのは属性か?
320デフォルトの名無しさん (ワッチョイ 6ada-rusg)
2019/02/25(月) 14:03:17.60ID:/Zb+jKgT0 Read/Write属性というのはあるよ
むしろその方が多い
ただ前レスに出てきたCR(コントロールレジスタ)とSR(ステータスレジスタ)は意図的にその名称通りにWriteまたはRead専用属性の例として
提示してきたんだろ、多分
むしろその方が多い
ただ前レスに出てきたCR(コントロールレジスタ)とSR(ステータスレジスタ)は意図的にその名称通りにWriteまたはRead専用属性の例として
提示してきたんだろ、多分
321デフォルトの名無しさん (ワッチョイ a6e1-rusg)
2019/02/25(月) 14:20:45.00ID:KHsK1sBo0 いやーないだろ
ゲートが出てるだけのユニットにWRITEサイクルを実行なんてしねえし
ゲートが出てるだけのユニットにWRITEサイクルを実行なんてしねえし
322デフォルトの名無しさん (ワッチョイ 6ada-rusg)
2019/02/25(月) 14:31:07.16ID:/Zb+jKgT0 すまん
書き込みの意図がいまいちよく分からんのだけど出力形式の切り替えの話か?
オープンコレクタ出力とトーテムポール出力の切り替えか?
というかこの文脈でデコードの意味が分からん、何のこと?
書き込みの意図がいまいちよく分からんのだけど出力形式の切り替えの話か?
オープンコレクタ出力とトーテムポール出力の切り替えか?
というかこの文脈でデコードの意味が分からん、何のこと?
323デフォルトの名無しさん (アウアウカー Sa55-rcBw)
2019/02/25(月) 14:45:57.95ID:P9mrobVPa キモい奴だなおい
324デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/25(月) 14:54:09.36ID:ruBOF67JM 誰かわかる奴いるのか?
俺も>>319は意味わからん
俺も>>319は意味わからん
325デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/25(月) 15:17:20.76ID:80dSpUWIM 何となくだけど入出力兼用ポートの設定か?
326デフォルトの名無しさん (スプッッ Sdea-89Xw)
2019/02/25(月) 17:25:52.43ID:8PqGNbvAd volatileの話が本筋と関係ないなら適当に流して先に進めばよかったんだよ。
それなのに噛みついて話を爆発させてしまったところにコミュニケーション能力の欠如を感じる。
それなのに噛みついて話を爆発させてしまったところにコミュニケーション能力の欠如を感じる。
327デフォルトの名無しさん (バッミングク MMb1-DIal)
2019/02/25(月) 17:28:47.58ID:t1ehA5N1M このスレはC言語という話題を通じてマウント取り合うスレなので、今日も平和に通常運転。
328デフォルトの名無しさん (ワッチョイ 59cb-rusg)
2019/02/25(月) 18:07:46.57ID:Gp/kzS5R0 ゲートが出てるのがオープンコレクタとかもう
そのうち電圧が流れるとか言い出しそうな勢いだな
そのうち電圧が流れるとか言い出しそうな勢いだな
329デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/25(月) 18:39:15.96ID:HIs9VhePM volatileまではまだ分かる
ゲートやトーテムポールやデコードの単語の羅列は意味不明
ゲートやトーテムポールやデコードの単語の羅列は意味不明
330デフォルトの名無しさん (ドコグロ MMb1-ZgJD)
2019/02/25(月) 19:02:12.96ID:y5m/9TYHM331デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/25(月) 20:16:10.80ID:UvFSeIeRM332デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/25(月) 20:28:08.49ID:QIf4DqH5M ReadやWriteではなくて入力信号と出力信号だな
333デフォルトの名無しさん (ワッチョイ 7d01-DIal)
2019/02/25(月) 20:33:09.01ID:8ylBAHsD0 内部or外部CPUバスのことを言ってるにしても、Write onlyがないってとこに繋がらない。
やっぱ解読不可だわ。
やっぱ解読不可だわ。
334デフォルトの名無しさん (ワッチョイ 66c8-BjwS)
2019/02/25(月) 20:33:17.49ID:MFA8pp4Y0 そういえばread-modify-writeっのを思い出したな
もう10年以上前の事だが
もう10年以上前の事だが
335デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/25(月) 20:50:44.04ID:QIf4DqH5M 懐かしい話題だな
わざわざラッチ回路を設けて問題回避したりしていたな
わざわざラッチ回路を設けて問題回避したりしていたな
336デフォルトの名無しさん (ワッチョイ 6ada-rusg)
2019/02/26(火) 06:45:38.56ID:H5mf7PMC0 >>330
ちょっと亀レス気味だけど、確かに属性というのは一般的ではなかったかな
当時使っていたCコンパイラでは同一アドレスにマッピングされたRead OnlyとWrite OnlyのSFR変数は
共用体unionで宣言するのだけど、それぞれが読み込み/書き込み専用の変数名であることを明示するために
プリプロセッサの#pragmaでいわゆる属性(R, W, R/W)を宣言することが出来た
Read属性変数に代入操作を行なったりするとコンパイル時に警告されるような仕組みになってた
ちょっと亀レス気味だけど、確かに属性というのは一般的ではなかったかな
当時使っていたCコンパイラでは同一アドレスにマッピングされたRead OnlyとWrite OnlyのSFR変数は
共用体unionで宣言するのだけど、それぞれが読み込み/書き込み専用の変数名であることを明示するために
プリプロセッサの#pragmaでいわゆる属性(R, W, R/W)を宣言することが出来た
Read属性変数に代入操作を行なったりするとコンパイル時に警告されるような仕組みになってた
337デフォルトの名無しさん (アークセー Sxbd-DIal)
2019/02/26(火) 07:46:54.76ID:25yR6Zgwx write属性レジスタってのは確かに一般的ではないけど、かといって用語としてwrite専用レジスタじゃないといけないって明確なルールもないだろうし、仕様書書いてるわけじゃないので別に雰囲気で伝わるから気にしなくていいんじゃない?
338デフォルトの名無しさん (ドコグロ MM15-ZgJD)
2019/02/26(火) 08:50:06.80ID:Dl2cSn2NM 一般的な用語じゃないとそこにどんな機能が含まれてるかわからんからな
>>336見りゃわかると思うがそもそもレジスタの機能ですらなかったわけだし
>>336見りゃわかると思うがそもそもレジスタの機能ですらなかったわけだし
339デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/26(火) 09:19:26.09ID:8U12byKKM 議論の流れで大体わかるけどな
さすがにプログラム言語やマイコンの話の中でいきなり回路設計の話が出てきた時は
しばらく話について行けなかったが
さすがにプログラム言語やマイコンの話の中でいきなり回路設計の話が出てきた時は
しばらく話について行けなかったが
340デフォルトの名無しさん (ドコグロ MM15-ZgJD)
2019/02/26(火) 12:28:24.64ID:Dl2cSn2NM341デフォルトの名無しさん (アークセー Sxbd-DIal)
2019/02/26(火) 12:41:52.52ID:25yR6Zgwx これぐらいのことが話の流れで推測できないなんて、生き辛そう。
お大事に。
お大事に。
342デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/26(火) 12:49:02.64ID:7/JIXwXVM >>317で指摘されているけど抽象的な話のできない人というのは確かにいるからな
343デフォルトの名無しさん (ワッチョイ 6ada-rusg)
2019/02/26(火) 13:31:09.42ID:H5mf7PMC0 確かに昔からハードウェア弄ってきた純粋の組込み専門屋にとって、周辺デバイスの制御レジスタをSFR変数として抽象化して捉えることが出来ないとは思ってもなかった
一般的ではなくても属性で話は通じると思ってたんだけどなあ
というか本当にC言語で開発してるのだろうか?
一般的ではなくても属性で話は通じると思ってたんだけどなあ
というか本当にC言語で開発してるのだろうか?
344デフォルトの名無しさん (ワッチョイ a95f-qM0Q)
2019/02/26(火) 13:45:18.64ID:hfhf4rvY0 「出来ないとは思ってもなかった」
否定の否定表現でわかりにくい。
否定の否定表現でわかりにくい。
345デフォルトの名無しさん (JP 0Hb5-haK8)
2019/02/26(火) 14:19:05.67ID:QncW9pKQH SFRって特定アーキテクチャの特殊用語じゃん。何勝手に一般化してるん。
346デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/26(火) 14:38:19.53ID:WUqkAqLeM ワンチップマイコン使ったことが無いのなら口を挟まないほうがいいよ
どこの製品でもSFRで話は通じる
どこの製品でもSFRで話は通じる
347デフォルトの名無しさん (ワッチョイ 11da-1onY)
2019/02/26(火) 14:46:05.57ID:qT2RVqJL0 分かったからワンチップマイコンは別の所でやれ
348デフォルトの名無しさん (スッップ Sd0a-89Xw)
2019/02/26(火) 14:55:37.46ID:4VLeDBYTd もしかして組み込み以外の話は
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
で聞いた方がいいのか?
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
で聞いた方がいいのか?
349デフォルトの名無しさん (ワッチョイ 11da-1onY)
2019/02/26(火) 15:07:48.55ID:qT2RVqJL0 C言語の一般的な話題を扱うスレなんだから
特定の人間を排除するような発言をするのはおかしいだろう
そういう特定の話題をしたいならスレを立ててすればいい
ワンチップマイコンは専用スレ立ててそこでやれと言う話
特定の人間を排除するような発言をするのはおかしいだろう
そういう特定の話題をしたいならスレを立ててすればいい
ワンチップマイコンは専用スレ立ててそこでやれと言う話
350デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/26(火) 15:14:00.56ID:XovqVjcQM 今や純粋なC言語の所理系は初心者の学習用途か組込み開発用途くらいでしか使われていない
スレに組込み開発経験者が集まるのは自然な流れ
スレに組込み開発経験者が集まるのは自然な流れ
351デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/26(火) 15:18:02.00ID:XovqVjcQM どちらかといえばC言語学習者は高圧的で排他的な気はする
352デフォルトの名無しさん (ワッチョイ 11da-1onY)
2019/02/26(火) 15:29:48.44ID:qT2RVqJL0 集まるのは良いが、「黙ってろ」はないな
353デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/26(火) 15:45:14.31ID:vHMOYNHiM 妥当な発言なら問題ないんだけどね
挑発的な発言が目に余るので煽り発言は控えたほうがいいと言ってるだけ
挑発的な発言が目に余るので煽り発言は控えたほうがいいと言ってるだけ
354デフォルトの名無しさん (ワッチョイ 11da-1onY)
2019/02/26(火) 15:46:01.71ID:qT2RVqJL0 そういう発言自体が荒らしになるとは思わないのか
355デフォルトの名無しさん (ワッチョイ 11da-1onY)
2019/02/26(火) 15:48:03.09ID:qT2RVqJL0 そもそもワンチップマイコンの知識は
C言語の話題をやり取りする上で必須ではないだろう
そういう話題を話したいなら専用スレを立てろと言っている
C言語の話題をやり取りする上で必須ではないだろう
そういう話題を話したいなら専用スレを立てろと言っている
356デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/26(火) 15:48:26.91ID:vHMOYNHiM 人にとやかく言う前に自分の発言見直して見れば?
357デフォルトの名無しさん (バッミングク MMb1-DIal)
2019/02/26(火) 16:10:12.93ID:lxe9rt7zM 相変わらずみんな仲いいな。
今日も平和に通常運転。
今日も平和に通常運転。
358デフォルトの名無しさん (アウアウウー Sa21-rusg)
2019/02/26(火) 17:43:39.42ID:k06atLuFa みんな愛し合っているのさ
359デフォルトの名無しさん (スッップ Sd0a-89Xw)
2019/02/26(火) 18:00:07.68ID:4VLeDBYTd 現実から目をそらすな。明らかに仲悪そうだぞ。
360デフォルトの名無しさん (ワッチョイ 6d27-rusg)
2019/02/26(火) 18:03:23.92ID:UtNGjYRh0 大嫌い 大嫌い 大嫌い 大好き☆
361デフォルトの名無しさん (アウアウウー Sa21-0aQJ)
2019/02/26(火) 18:35:04.99ID:c2o2e7e/a >>359
つんでれ
つんでれ
362デフォルトの名無しさん (ワッチョイ a95f-qM0Q)
2019/02/26(火) 19:43:38.47ID:hfhf4rvY0 >>346
それ単にプログラム内のルールにすぎない。どんな言語であれ、入れ物を使い分けを限定することで、プログラマのミス防止や可読性、保守性が高まるのは、まともなプログラマなら必ずやっている。
これがハードウェアの機能にあるのか、ソフトウェアの機能にあるのか、それともそんな機能はないのでコーディングルールなのかの違いにすぎない。
それ単にプログラム内のルールにすぎない。どんな言語であれ、入れ物を使い分けを限定することで、プログラマのミス防止や可読性、保守性が高まるのは、まともなプログラマなら必ずやっている。
これがハードウェアの機能にあるのか、ソフトウェアの機能にあるのか、それともそんな機能はないのでコーディングルールなのかの違いにすぎない。
363デフォルトの名無しさん (ワッチョイ a95f-qM0Q)
2019/02/26(火) 19:52:11.95ID:hfhf4rvY0 >>346
それ単にプログラム内のルールにすぎない。どんな言語であれ、入れ物を使い分けを限定することで、プログラマのミス防止や可読性、保守性が高まるのは、まともなプログラマなら理解している。
これがハードウェアの機能なのか、ソフトウェアの機能なのか、それともそんな機能はないのでコーディングルールなのかの違いにすぎず、現代では常識的な話。
コンピュータにとっては動けばいいわけで、設計の話とアーキテクチャの話をごちゃ混ぜするからよくない。
高水準言語であればあたりまえすぎることだが、C言語は中水準言語で、OS、ハードウェアの組み合わせにより、動きが異なるから、本来は仕様、設計があって考えること。
これがアーキテクチャがこうだから、こういう発想になるというのは順番が逆。
それ単にプログラム内のルールにすぎない。どんな言語であれ、入れ物を使い分けを限定することで、プログラマのミス防止や可読性、保守性が高まるのは、まともなプログラマなら理解している。
これがハードウェアの機能なのか、ソフトウェアの機能なのか、それともそんな機能はないのでコーディングルールなのかの違いにすぎず、現代では常識的な話。
コンピュータにとっては動けばいいわけで、設計の話とアーキテクチャの話をごちゃ混ぜするからよくない。
高水準言語であればあたりまえすぎることだが、C言語は中水準言語で、OS、ハードウェアの組み合わせにより、動きが異なるから、本来は仕様、設計があって考えること。
これがアーキテクチャがこうだから、こういう発想になるというのは順番が逆。
364デフォルトの名無しさん (ドコグロ MM15-ZgJD)
2019/02/26(火) 19:57:57.62ID:Dl2cSn2NM 普通に一般化してる用語で話せばいいのになぜかオレオレ用語使って指摘されたらわからないのかとか逆ギレw
なんとなくはわかってもそのローカル用語が意図してるものと自分が思ってるものが同じかどうかはわからんから指摘してるのに…
まともなエンジニアじゃないんだろうな
なんとなくはわかってもそのローカル用語が意図してるものと自分が思ってるものが同じかどうかはわからんから指摘してるのに…
まともなエンジニアじゃないんだろうな
365デフォルトの名無しさん (アウアウウー Sa21-0aQJ)
2019/02/26(火) 20:20:38.82ID:c2o2e7e/a 長文が溢れるスレ
366デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/26(火) 20:45:40.56ID:rW40iFORM 知識や能力の不足に対する自己防衛反応みたいなものだから流し読みしてればいい
367デフォルトの名無しさん (ワッチョイ ea01-ZgJD)
2019/02/26(火) 21:45:18.69ID:7TQlJfaY0368デフォルトの名無しさん (ワッチョイ 11d2-E+eR)
2019/02/27(水) 12:00:03.35ID:wHsSBDML0 具体例なしで一般論しか言わないやつは信用できない
特徴は具体的な質問されると話をそらすか黙り込むやつ
特徴は具体的な質問されると話をそらすか黙り込むやつ
369デフォルトの名無しさん (アウアウウー Sa21-0aQJ)
2019/02/27(水) 12:55:17.62ID:1o6M4rIDa そんな一般論だけ書かれても・・・
370デフォルトの名無しさん (ワッチョイ a69d-rusg)
2019/02/27(水) 17:52:20.13ID:n00Gq01P0371デフォルトの名無しさん (ワッチョイ 6ada-rusg)
2019/02/27(水) 18:37:51.02ID:OX9NrkAd0 ベアメタル系のプロの意味がよく分からないけどC言語と何か関係あるの?
372デフォルトの名無しさん (アウアウウー Sa21-0aQJ)
2019/02/27(水) 21:26:14.35ID:1o6M4rIDa Bare ボーン
まゆげボーン
まゆげボーン
373デフォルトの名無しさん (ワッチョイ a69d-rusg)
2019/02/27(水) 22:06:45.86ID:n00Gq01P0 貴様が知る必要はない
374デフォルトの名無しさん (ラクペッ MM65-JHNE)
2019/02/27(水) 23:34:44.12ID:OqYQPgaeM 大体何と勘違いしたのか予測はつくがおそらく間違ってるぞ
少なくともx86系では通用しない
少なくともx86系では通用しない
375デフォルトの名無しさん (ワッチョイ f7d2-mfNA)
2019/02/28(木) 08:01:20.41ID:7nNuTdUM0 だから具体例を書けよ
376デフォルトの名無しさん (ワッチョイ d7da-mjQG)
2019/03/01(金) 15:17:20.50ID:ixp8onlm0 すみません、初心者なんですが図書館にプログラミング言語Cという本があったので借りてきて勉強中です。
p105のコード
nはint
if(n / 10)
printd(n / 10)
なんで割り算自体を条件に出来るのですか。
p105のコード
nはint
if(n / 10)
printd(n / 10)
なんで割り算自体を条件に出来るのですか。
377デフォルトの名無しさん (ワッチョイ f7da-w9Lt)
2019/03/01(金) 15:19:35.58ID:24bVz3/E0 出来るかどうかは自分で試した方がいい
その上で、なんでそうなるかを考え、
分からないときに聞きにおいで
その上で、なんでそうなるかを考え、
分からないときに聞きにおいで
378さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdbf-tIeT)
2019/03/01(金) 15:20:45.58ID:7MuZNvWwd >>376
わり算の結果(この場合は整数)がゼロじゃなかったら論理値の真(true)と見なされる。
わり算の結果(この場合は整数)がゼロじゃなかったら論理値の真(true)と見なされる。
379デフォルトの名無しさん (アウアウウー Sa9b-RuLt)
2019/03/01(金) 15:23:30.96ID:ber2ILYja >>376
C言語のifは0か0以外かしか見ていないため。
C言語のifは0か0以外かしか見ていないため。
380デフォルトの名無しさん (ワッチョイ d7da-mjQG)
2019/03/01(金) 15:38:09.31ID:ixp8onlm0381デフォルトの名無しさん (スッップ Sdbf-x13U)
2019/03/01(金) 15:53:16.08ID:nQNJhNQvd 他の言語でいえば
1:true
0:false
って感じですな
1:true
0:false
って感じですな
382デフォルトの名無しさん (スッップ Sdbf-x13U)
2019/03/01(金) 15:54:07.94ID:nQNJhNQvd >>381
この表現は語弊があるので忘れてください、すみません
この表現は語弊があるので忘れてください、すみません
383デフォルトの名無しさん (ワッチョイ ff2c-Im2K)
2019/03/01(金) 16:01:43.78ID:yZJ4Zkhu0384デフォルトの名無しさん (ワッチョイ 9fda-AU+X)
2019/03/01(金) 16:53:12.47ID:omZ6F1i00 他の言語ならともかくC言語プログラマ的には普通だな
385デフォルトの名無しさん (ワッチョイ 9f18-W5e4)
2019/03/01(金) 16:59:37.54ID:wVb5PmwP0 説教くせえことを書くならてめーの言葉遣いくらい気をつけろ
boolじゃねえだろ_Boolだ
MISRA-Cが安全だなんて決まりはどこにもねえぞ
コーディング基準はそれを守りさえすれば安全だなんて信じているようだが自分の頭で考えることを放棄した手合いか?
少なくともそういうカスはPGとして普通未満だぜ
boolじゃねえだろ_Boolだ
MISRA-Cが安全だなんて決まりはどこにもねえぞ
コーディング基準はそれを守りさえすれば安全だなんて信じているようだが自分の頭で考えることを放棄した手合いか?
少なくともそういうカスはPGとして普通未満だぜ
386デフォルトの名無しさん (アウアウウー Sa9b-RuLt)
2019/03/01(金) 17:32:32.07ID:ber2ILYja >>380
そう。比較する演算子を使うとその結果が0または1になるので他の言語でのifと同じようにも使える。
そう。比較する演算子を使うとその結果が0または1になるので他の言語でのifと同じようにも使える。
387デフォルトの名無しさん (アウアウカー Sa6b-WzxR)
2019/03/01(金) 17:49:40.28ID:lMpRUADOa boolも予約語だと思うよ。ただの別名だけど。
388デフォルトの名無しさん (ワッチョイ 9f18-W5e4)
2019/03/01(金) 18:05:13.76ID:wVb5PmwP0 ISO/IEC 9899:2011 7.18 Boolean type and values <stdbool.h> には
マクロと書いてあるが、どこかに予約語と書いてあるのか?
ISO/IEC 9899:2011 6.4.1 Keywords にはねえぞ
マクロと書いてあるが、どこかに予約語と書いてあるのか?
ISO/IEC 9899:2011 6.4.1 Keywords にはねえぞ
389デフォルトの名無しさん (アウアウウー Sa9b-WzxR)
2019/03/01(金) 18:07:32.60ID:OVLCgqzva まあboolでもいいってことだな
390デフォルトの名無しさん (ワッチョイ 9f18-W5e4)
2019/03/01(金) 18:17:05.43ID:wVb5PmwP0 話そらすな
boolは予約語か違うのか
boolは予約語か違うのか
391デフォルトの名無しさん (スッップ Sdbf-x13U)
2019/03/01(金) 18:24:56.22ID:nQNJhNQvd >MISRA-Cが安全だなんて決まりはどこにもねえぞ
>コーディング基準はそれを守りさえすれば安全だなんて信じているようだが自分の頭で考えることを放棄した手合いか?
>少なくともそういうカスはPGとして普通未満だぜ
この3行が主張なわけでboolについて話してる時点で話それてないか?w
>コーディング基準はそれを守りさえすれば安全だなんて信じているようだが自分の頭で考えることを放棄した手合いか?
>少なくともそういうカスはPGとして普通未満だぜ
この3行が主張なわけでboolについて話してる時点で話それてないか?w
392383 (ワッチョイ ff2c-Im2K)
2019/03/01(金) 18:25:12.46ID:yZJ4Zkhu0 漏れが言ってるのは「実質的なbool 値」
特定の物を指していない、一般的な言語での概念
条件文に、実質的なbool 値以外を書いたら、ダメ!
品質基準から減点される
トヨタでも、100点満点中、5点しか取れなかったとか、言ってる人いる
MISRA-C 無しのC 言語は使ってはならないと、決まっている!
特定の物を指していない、一般的な言語での概念
条件文に、実質的なbool 値以外を書いたら、ダメ!
品質基準から減点される
トヨタでも、100点満点中、5点しか取れなかったとか、言ってる人いる
MISRA-C 無しのC 言語は使ってはならないと、決まっている!
393デフォルトの名無しさん (アウアウウー Sa9b-RuLt)
2019/03/01(金) 18:32:42.09ID:ber2ILYja 昔々、int bool = 0; と書いてあって普通に変数として bool が使われている夫馬ログラムを見た事がある。
394デフォルトの名無しさん (ワッチョイ ff63-3oSp)
2019/03/01(金) 18:33:26.36ID:5vu7ZTEs0 昔はintの別名でマクロ定義してたな
今は予約語だったのか
今は予約語だったのか
395デフォルトの名無しさん (アウアウウー Sa9b-RuLt)
2019/03/01(金) 18:33:54.49ID:ber2ILYja 夫馬ってなんやねんw
スマホでの打ち間違いは候補間違いもあるからより変な風になるなあ。
スマホでの打ち間違いは候補間違いもあるからより変な風になるなあ。
396さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ d701-tIeT)
2019/03/01(金) 18:37:31.49ID:V2sWjbOV0 boolが予約語というのは聞いたことない。
<stdint.h>で使えるのは知ってるけど。
<stdint.h>で使えるのは知ってるけど。
397デフォルトの名無しさん (ワッチョイ 9f18-W5e4)
2019/03/01(金) 18:37:42.66ID:wVb5PmwP0398デフォルトの名無しさん (ワッチョイ 9f18-W5e4)
2019/03/01(金) 18:38:42.45ID:wVb5PmwP0 >>391
ほう論点が2つあるのをおまえの脳内では話がそれたと言うのか
ほう論点が2つあるのをおまえの脳内では話がそれたと言うのか
399さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ d701-tIeT)
2019/03/01(金) 18:40:37.97ID:V2sWjbOV0400デフォルトの名無しさん (スッップ Sdbf-x13U)
2019/03/01(金) 18:41:18.61ID:nQNJhNQvd >>398
いやすまん、boolについては論点にしてないと勘違いしていた。
いやすまん、boolについては論点にしてないと勘違いしていた。
401さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ d701-tIeT)
2019/03/01(金) 18:42:35.19ID:V2sWjbOV0 <stdbool.h>の間違いだった。すまぬ。
402デフォルトの名無しさん (スッップ Sdbf-x13U)
2019/03/01(金) 18:44:20.24ID:nQNJhNQvd またひとつ勉強になったよ
403デフォルトの名無しさん (ワッチョイ d701-WeXs)
2019/03/01(金) 18:47:58.98ID:corsBm1i0 やっぱり相変わらずみんな仲いいな。
今日も平和に通常運転。
今日も平和に通常運転。
404デフォルトの名無しさん (ワッチョイ bfe9-IBRN)
2019/03/01(金) 19:14:14.07ID:HVxvwZsK0405デフォルトの名無しさん (ワッチョイ bfe9-IBRN)
2019/03/01(金) 19:15:03.21ID:HVxvwZsK0 >>383
MISRA-C は馬鹿が使うものと聞いていますので、あなたも馬鹿の一人なんですね
MISRA-C は馬鹿が使うものと聞いていますので、あなたも馬鹿の一人なんですね
406デフォルトの名無しさん (ワッチョイ bfe9-IBRN)
2019/03/01(金) 19:16:07.43ID:HVxvwZsK0 >>385
C99 の _Bool はいろいろと残念な仕様なので、そんなものを使っていたら馬鹿呼ばわりされてもしかたがないと思います…
C99 の _Bool はいろいろと残念な仕様なので、そんなものを使っていたら馬鹿呼ばわりされてもしかたがないと思います…
407デフォルトの名無しさん (ワッチョイ bfe9-IBRN)
2019/03/01(金) 19:16:49.73ID:HVxvwZsK0 >>392
その「実質的」という単語の定義を教えていただけませんか?
その「実質的」という単語の定義を教えていただけませんか?
408デフォルトの名無しさん (ワッチョイ d701-WeXs)
2019/03/01(金) 19:18:02.41ID:corsBm1i0409デフォルトの名無しさん (ワッチョイ bfe9-IBRN)
2019/03/01(金) 19:18:18.17ID:HVxvwZsK0 >>394
C の予約語に asm が存在したことがあっても、bool なんて金輪際ございません…
C の予約語に asm が存在したことがあっても、bool なんて金輪際ございません…
410デフォルトの名無しさん (ワッチョイ bfe9-IBRN)
2019/03/01(金) 19:19:07.26ID:HVxvwZsK0 >>408
なんだか misra っていろいろうるさいですね…馬鹿が使うものの典型と理解しました
なんだか misra っていろいろうるさいですね…馬鹿が使うものの典型と理解しました
411デフォルトの名無しさん (ワッチョイ 9f18-W5e4)
2019/03/01(金) 19:20:44.13ID:wVb5PmwP0 >>406
俺もそう思う
俺もそう思う
412デフォルトの名無しさん (ワッチョイ d701-WeXs)
2019/03/01(金) 19:21:00.10ID:corsBm1i0413デフォルトの名無しさん (ブーイモ MM1b-NqO3)
2019/03/01(金) 19:24:31.92ID:WfqePbUuM >>392
Rubyガイジ死ねよ
Rubyガイジ死ねよ
414デフォルトの名無しさん (ワッチョイ 9fda-AU+X)
2019/03/01(金) 19:26:29.24ID:omZ6F1i00 実際の開発現場ではMISRA-Cも_Boolも頭の片隅に意識する(人がいる)程度であまり意味はない
そんなことより他に考えることはいくらでもある
そんなことより他に考えることはいくらでもある
>>411
久々に私の意見に賛成する人がおられましたね…
久々に私の意見に賛成する人がおられましたね…
416383 (ワッチョイ ff2c-Im2K)
2019/03/01(金) 19:56:06.23ID:yZJ4Zkhu0 essentially Boolean (実質的なブール型)
C90にはブール型はないが、真又は偽のブール値を表す式はある。
MISRA-C:2004ではこのような式をブール式と呼んで、数値を表す式と区別しており
if (hoge==TRUE)
このhoge が、実質的にはブール値なら、if (hoge) と書いてもOK
C90にはブール型はないが、真又は偽のブール値を表す式はある。
MISRA-C:2004ではこのような式をブール式と呼んで、数値を表す式と区別しており
if (hoge==TRUE)
このhoge が、実質的にはブール値なら、if (hoge) と書いてもOK
417デフォルトの名無しさん (アウアウクー MM0b-tQZn)
2019/03/01(金) 19:56:10.11ID:f15qqb/AM >>404
そういう例はやめた方がいい。二度、評価することをおかしく感じなくなる。
そういう例はやめた方がいい。二度、評価することをおかしく感じなくなる。
418デフォルトの名無しさん (ワッチョイ bfe9-IBRN)
2019/03/01(金) 19:59:51.05ID:HVxvwZsK0 >>417
マクロ関係ではないから、二度評価問題は関係ないのでは?もう少し詳しく教えていただけますか?
マクロ関係ではないから、二度評価問題は関係ないのでは?もう少し詳しく教えていただけますか?
419383 (ワッチョイ ff2c-Im2K)
2019/03/01(金) 20:02:55.75ID:yZJ4Zkhu0 2値しか取らない、真偽値という概念を作り出して、単純な数値と区別している
明瞭になるように、可読性を高めるために、明確に使い方を分けている
明瞭になるように、可読性を高めるために、明確に使い方を分けている
420デフォルトの名無しさん (アウアウウー Sa9b-RuLt)
2019/03/01(金) 20:09:43.22ID:ber2ILYja みそら・・・
421383 (ワッチョイ ff2c-Im2K)
2019/03/01(金) 20:13:59.03ID:yZJ4Zkhu0 essentially Boolean (実質的なブール型)
hoge が単純な数値なら、if (hoge) とは書けないので、
比較演算子などを使って、( )内を真偽値にしなければならないが、
hoge を2値しか取らず、実質的には真偽値として扱っているなら、そう書いてもよい
hoge が単純な数値なら、if (hoge) とは書けないので、
比較演算子などを使って、( )内を真偽値にしなければならないが、
hoge を2値しか取らず、実質的には真偽値として扱っているなら、そう書いてもよい
422デフォルトの名無しさん (ワッチョイ 37b3-tPEd)
2019/03/01(金) 20:17:31.73ID:zSE4SpXO0 >>19
なに時代だよ、trueとfalseだろ
なに時代だよ、trueとfalseだろ
423デフォルトの名無しさん (ワッチョイ 37b3-tPEd)
2019/03/01(金) 20:18:43.90ID:zSE4SpXO0424デフォルトの名無しさん (ワッチョイ 37b3-tPEd)
2019/03/01(金) 20:20:05.53ID:zSE4SpXO0 >>382
というよりtrueとfalseを使えよ
というよりtrueとfalseを使えよ
425デフォルトの名無しさん (ワッチョイ 37b3-tPEd)
2019/03/01(金) 20:21:09.40ID:zSE4SpXO0 >>385
bool だよ
bool だよ
426デフォルトの名無しさん (スプッッ Sdbf-x13U)
2019/03/01(金) 20:59:57.85ID:YTopxKYTd >>424
?
?
427デフォルトの名無しさん (ワッチョイ d701-nvQ/)
2019/03/01(金) 21:08:03.60ID:xM2kasch0 C++か他の言語か勘違いしてないかな?
C言語の枠内では(以下略
C言語の枠内では(以下略
428さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ d701-tIeT)
2019/03/01(金) 21:13:58.29ID:V2sWjbOV0 #include <stdbool.h>すれば、C言語でもbool, false, trueが使える。C99から。
429デフォルトの名無しさん (ワッチョイ d701-nvQ/)
2019/03/01(金) 21:27:08.50ID:xM2kasch0 マクロなのか 乱暴な解決法と見るか予約語にしなかった・できなかった理由があったのだろうか
430デフォルトの名無しさん (ワッチョイ bfe9-IBRN)
2019/03/01(金) 22:01:55.94ID:HVxvwZsK0 >>428
bool 型は C99 では _Bool 型となり「bool」そのままではありません
bool 型は C99 では _Bool 型となり「bool」そのままではありません
431デフォルトの名無しさん (ワッチョイ 9f18-W5e4)
2019/03/01(金) 22:19:15.38ID:wVb5PmwP0432デフォルトの名無しさん (アウアウウー Sa9b-n14O)
2019/03/01(金) 22:36:40.53ID:4P/9ohSca >>413
口調が似てると思ったら、やっぱりあいつだったのね
口調が似てると思ったら、やっぱりあいつだったのね
433デフォルトの名無しさん (ワッチョイ 9ff9-IBRN)
2019/03/02(土) 00:57:50.68ID:SIJCHEbM0 >>418
if ((n / 10 != 0) != 0) とは書かないのですか?
if (((n / 10 != 0) != 0) != 0) とは書かないのですか?
if (n / 10) で充分だろ
if ((n / 10 != 0) != 0) とは書かないのですか?
if (((n / 10 != 0) != 0) != 0) とは書かないのですか?
if (n / 10) で充分だろ
434デフォルトの名無しさん (ワッチョイ b75f-tQZn)
2019/03/02(土) 01:28:32.24ID:ixsZHls30 if文の仕様がまずかったんだよな。演算子がコマンドで数値を返すところがいまとなってはわかりにくい。
435はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-3oSp)
2019/03/02(土) 02:00:30.74ID:tMatklv80 C の _Bool は完全に後付けだし、
true, false の型は int (整数リテラルの 1 や 0 に展開されるマクロ) ってのも
C らしい歴史的経緯ってやつだよねぇ……。
true, false の型は int (整数リテラルの 1 や 0 に展開されるマクロ) ってのも
C らしい歴史的経緯ってやつだよねぇ……。
436デフォルトの名無しさん (ワッチョイ 9f7c-WzxR)
2019/03/02(土) 02:41:15.96ID:LTb7iLna0 なんでもいいがboolは使った方がいいよ
キャストするとちゃんと0と1になるよ
キャストするとちゃんと0と1になるよ
437デフォルトの名無しさん (ワッチョイ b75f-tQZn)
2019/03/02(土) 03:06:19.06ID:ixsZHls30 キャストしないといけないのか
438デフォルトの名無しさん (ワッチョイ 9701-W5e4)
2019/03/02(土) 04:52:10.38ID:x2TrvqAV0 #define TRUE (1==1)
#define FALSE (!TRUE)
昔はこう書いて使ってたっけなあ
#define FALSE (!TRUE)
昔はこう書いて使ってたっけなあ
439デフォルトの名無しさん (ワッチョイ 9fda-W5e4)
2019/03/02(土) 06:31:18.66ID:uyGBCzAL0 _Bool型(stdbool.hインクルード時はboolも可)の値は0か1しか取り得ないのでわざわざキャストする必要は無い
しかしながら自分はC言語では普段は_Boolもboolもどちらも使わない
単純にintなどの数値型を0か非0かだけで判断して使ってる
尤もC++ではbool型は普通に使っているけど
https://i.imgur.com/47mIrVh.png
しかしながら自分はC言語では普段は_Boolもboolもどちらも使わない
単純にintなどの数値型を0か非0かだけで判断して使ってる
尤もC++ではbool型は普通に使っているけど
https://i.imgur.com/47mIrVh.png
440デフォルトの名無しさん (ワッチョイ d77b-vPGa)
2019/03/02(土) 06:54:46.28ID:uz1yhwTy0 >>376 を見て、久し振りに『プログラミング言語C』を開いてみたところ、
確かに p.105 に printd() って関数が載ってる(第2版)。
ここのテーマは再帰なので printd() は「1文字出力 putchar() を使って、
整数値を10進数で表示する再帰関数」の例。
話題の if (n / 10) では「n が 10 以上か」を判定してる。
直前で符号の処理をしてるので n が負ではないことは保証される。
(さらに「だだし n == INT_MIN の場合は…」に相当する注記あり)
で if (n / 10) が if ((n / 10) != 0) の意味だってことは、
p.68 第3章 制御の流れ 3.2 If-Else でさらりと説明されてるし、
その前 p.63 の条件式(三項演算子)の部分なんかにも載ってる。
たぶん他にも、あちこちで出てるんだろう。
「真と偽」みたいな独立した項目を立てた方が良かったんじゃないかな。
そうすりゃ索引からも探せるようになるし。
ついでに言えば、この場面では if (n / 10) より if (n >= 10) の方が
やってることが明解だし、処理も軽い気がするなぁ。
確かに p.105 に printd() って関数が載ってる(第2版)。
ここのテーマは再帰なので printd() は「1文字出力 putchar() を使って、
整数値を10進数で表示する再帰関数」の例。
話題の if (n / 10) では「n が 10 以上か」を判定してる。
直前で符号の処理をしてるので n が負ではないことは保証される。
(さらに「だだし n == INT_MIN の場合は…」に相当する注記あり)
で if (n / 10) が if ((n / 10) != 0) の意味だってことは、
p.68 第3章 制御の流れ 3.2 If-Else でさらりと説明されてるし、
その前 p.63 の条件式(三項演算子)の部分なんかにも載ってる。
たぶん他にも、あちこちで出てるんだろう。
「真と偽」みたいな独立した項目を立てた方が良かったんじゃないかな。
そうすりゃ索引からも探せるようになるし。
ついでに言えば、この場面では if (n / 10) より if (n >= 10) の方が
やってることが明解だし、処理も軽い気がするなぁ。
441デフォルトの名無しさん (ワッチョイ 9fda-W5e4)
2019/03/02(土) 07:05:29.88ID:uyGBCzAL0 単純に開発当時のC言語としては処理をシンプルにしてパフォーマンスを稼ぎたかったのだと思うよ
普通のCPUは0か0でないかの判断は得意だけど0か1の判断は手間が掛かる
少しでもパフォーマンスを稼ぎたい場合(現在では組込み用途など)では余計な処理は極力除くように工夫する
普通のCPUは0か0でないかの判断は得意だけど0か1の判断は手間が掛かる
少しでもパフォーマンスを稼ぎたい場合(現在では組込み用途など)では余計な処理は極力除くように工夫する
442デフォルトの名無しさん (ワッチョイ 9f18-W5e4)
2019/03/02(土) 07:30:56.47ID:0NQezXSh0443デフォルトの名無しさん (ワッチョイ ffd2-IBRN)
2019/03/02(土) 07:57:45.28ID:THGEifYn0 CPU/ハード毎に違い出るだろ。
444デフォルトの名無しさん (ワッチョイ d77b-vPGa)
2019/03/02(土) 08:01:55.04ID:uz1yhwTy0 いや、さすがに単純な整数値の大小比較と、割り算とで
どちらが速いか実測しなくちゃ分からないってのは
「実測しろ」って原則を無批判に(条件反射的に)
振りかざしてるんじゃないの?
予測は一切禁止ってルールじゃないでしょ。
どちらが速いか実測しなくちゃ分からないってのは
「実測しろ」って原則を無批判に(条件反射的に)
振りかざしてるんじゃないの?
予測は一切禁止ってルールじゃないでしょ。
445デフォルトの名無しさん (ドコグロ MMdb-dMaL)
2019/03/02(土) 09:30:10.68ID:+HGsrEwZM446デフォルトの名無しさん (ワッチョイ 9f01-dMaL)
2019/03/02(土) 09:37:08.49ID:Co1I1oSR0447デフォルトの名無しさん (アウアウウー Sa9b-mjQG)
2019/03/02(土) 10:48:59.21ID:op59Vyc6a でもcのコンパイラって割り算の時は最初に比較があって、n < 10なら比較直後に0返すんじゃなかったかな。
昔アセンブラの実習でやった気がする。
帰ったらみてみよ。
昔アセンブラの実習でやった気がする。
帰ったらみてみよ。
448デフォルトの名無しさん (ワッチョイ 9701-W5e4)
2019/03/02(土) 10:57:46.09ID:x2TrvqAV0 n / 10 と (n / 10) != 0 とで違うコード吐くとか?
オプティマイザなめんなよ
オプティマイザなめんなよ
449デフォルトの名無しさん (ワッチョイ 9fa5-JAd8)
2019/03/02(土) 11:32:55.24ID:TCm6U75d0450デフォルトの名無しさん (ワッチョイ d7f2-W5e4)
2019/03/02(土) 11:41:06.22ID:x3fQB5qB0 唯一ってw
451デフォルトの名無しさん (ワッチョイ f777-6Vjj)
2019/03/02(土) 13:58:43.76ID:S/SxCgBS0 MSゴシック以外のとこはアンチエイリアスかかってるだろ
452デフォルトの名無しさん (ワッチョイ b75f-tQZn)
2019/03/02(土) 16:14:23.72ID:ixsZHls30 >>447
割り算はコンピュータにとって簡単なことではない。人間だってそうだろ。
割り算はコンピュータにとって簡単なことではない。人間だってそうだろ。
453デフォルトの名無しさん (ワッチョイ 175f-5O6o)
2019/03/02(土) 16:42:33.79ID:/q2pZC1F0454デフォルトの名無しさん (ワッチョイ 175f-5O6o)
2019/03/02(土) 16:43:44.00ID:/q2pZC1F0 >>453
自己レス、型はintって書いてあったわ
自己レス、型はintって書いてあったわ
455はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-3oSp)
2019/03/02(土) 17:04:52.74ID:tMatklv80 C では比較演算子が返すのも、 if の判定にも真偽値型は現れない。
真偽値型は後付けで、言語の中核の意味論には関与しない。
真偽値型は整数型の一種だから何か演算しようとすると整数拡張で int になってから計算するしな。
_Bool で表現してもほとんどの場合にコメントと同程度にしか意味ない。
コメントと同程度に「意図」を表せるならそれはそれで有用ではあるけど、
型システムが間違いを防止する役に立つ場面はあんまりない。
(余談だが C++ では (組込みの) 比較演算子は真偽値型を返すし、
if の条件節は真偽値型にキャストして判定するので C とは解釈が違う)
真偽値型は後付けで、言語の中核の意味論には関与しない。
真偽値型は整数型の一種だから何か演算しようとすると整数拡張で int になってから計算するしな。
_Bool で表現してもほとんどの場合にコメントと同程度にしか意味ない。
コメントと同程度に「意図」を表せるならそれはそれで有用ではあるけど、
型システムが間違いを防止する役に立つ場面はあんまりない。
(余談だが C++ では (組込みの) 比較演算子は真偽値型を返すし、
if の条件節は真偽値型にキャストして判定するので C とは解釈が違う)
456デフォルトの名無しさん (ドコグロ MMdb-dMaL)
2019/03/02(土) 17:20:40.95ID:vTA45/dSM457デフォルトの名無しさん (ワッチョイ ff63-3oSp)
2019/03/02(土) 17:23:51.58ID:U++dipsO0 若さを売りにするしか無くなったかw
458デフォルトの名無しさん (ワッチョイ 9fab-IBRN)
2019/03/02(土) 17:29:25.11ID:Dgo9YwRe0 >>456
「昭和」言いたかっただけだろがw
「昭和」言いたかっただけだろがw
459デフォルトの名無しさん (ワッチョイ 175f-5O6o)
2019/03/02(土) 17:38:17.44ID:/q2pZC1F0 >>456
「型は同じ」って言っただけで区別不要とはどこにも書いてない訳だが
「型は同じ」って言っただけで区別不要とはどこにも書いてない訳だが
460デフォルトの名無しさん (ドコグロ MMdb-dMaL)
2019/03/02(土) 17:53:06.93ID:vTA45/dSM いや、マジで型安全とか知らなさそうで可哀想ですらあるんだが…
461デフォルトの名無しさん (ドコグロ MMdb-dMaL)
2019/03/02(土) 17:55:42.96ID:vTA45/dSM462デフォルトの名無しさん (ワッチョイ 175f-5O6o)
2019/03/02(土) 18:05:39.73ID:/q2pZC1F0463デフォルトの名無しさん (ワッチョイ ff63-3oSp)
2019/03/02(土) 18:07:30.88ID:U++dipsO0 「ばあさん、いただきものは型を意識した応答だろう」
「いいえ、お爺さん型を意識した応答でしたよ」
「そうかい、わしゃまた型を意識した応答だと思ったよ」
「いいえ、お爺さん型を意識した応答でしたよ」
「そうかい、わしゃまた型を意識した応答だと思ったよ」
464デフォルトの名無しさん (アウアウウー Sa9b-WzxR)
2019/03/02(土) 18:18:58.15ID:5yoALKCSa boolの1と1足したら1になるよね?
465デフォルトの名無しさん (ブーイモ MMbf-NqO3)
2019/03/02(土) 18:45:34.07ID:NrjYyiWtM >>464
ならんよ
ならんよ
466はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-3oSp)
2019/03/02(土) 18:46:41.44ID:tMatklv80 >>464
双方が int に拡張されて足し算されて 2 になったのが
再び bool にキャストすると 1 になる。
演算子の両方の型が int より小さい場合には
両方が int に拡張されてから計算されるというのが
C の基本的なルール。
(全ての演算子がそうというわけではない。)
双方が int に拡張されて足し算されて 2 になったのが
再び bool にキャストすると 1 になる。
演算子の両方の型が int より小さい場合には
両方が int に拡張されてから計算されるというのが
C の基本的なルール。
(全ての演算子がそうというわけではない。)
467383 (ワッチョイ ff2c-Im2K)
2019/03/02(土) 19:01:27.14ID:Gk4CLPf80 >>455
MISRA-C は、C89/90に、bool という概念をバックポートした。
それを「実質的なブール型」と呼んで、単純な整数型と区別している
ブールを表現する場合は、整数型を使っていても、
それはブール型ですよってアピールする事で、
技術者間での意思疎通を図り、安全性を高める
MISRA-C は、C89/90に、bool という概念をバックポートした。
それを「実質的なブール型」と呼んで、単純な整数型と区別している
ブールを表現する場合は、整数型を使っていても、
それはブール型ですよってアピールする事で、
技術者間での意思疎通を図り、安全性を高める
468さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdbf-tIeT)
2019/03/02(土) 19:16:00.81ID:eb7NT9g3d469デフォルトの名無しさん (アウアウウー Sa9b-WzxR)
2019/03/02(土) 19:16:54.91ID:5yoALKCSa あれ、ぶーる同士足し算できないの?
ちょっと信じがたい気はするけど
ちょっと信じがたい気はするけど
470デフォルトの名無しさん (ワッチョイ ffaa-Pjzk)
2019/03/02(土) 19:29:15.37ID:sCjKfj9s0 1bit計算のインストラクションなんぞ
わざわざ作らないだろ
そもそもbool型ってなんだよ
気持ち悪いな
わざわざ作らないだろ
そもそもbool型ってなんだよ
気持ち悪いな
471デフォルトの名無しさん (スププ Sdbf-5O6o)
2019/03/02(土) 19:31:09.19ID:DKrIFalvd 要は
bool a = 1;
bool b = 1;
として、
bool c = a + b;
ができたとしても、内部的には
bool c = (_Bool)(((int)a) + ((int)b));
になるってことじゃないの
bool a = 1;
bool b = 1;
として、
bool c = a + b;
ができたとしても、内部的には
bool c = (_Bool)(((int)a) + ((int)b));
になるってことじゃないの
472383 (ワッチョイ ff2c-Im2K)
2019/03/02(土) 19:43:06.08ID:Gk4CLPf80 整数型には加算はあるけど、
ブール型として扱うなら、加算は存在しない
AND, OR, NOT だけしかない
だから技術者間での、こういう共通意識が大切なわけ。
これは「実質的なブール型」として扱っているから、整数型の演算はできません!
ブール型が無かった時代の、
技術者間での意思疎通を図り、安全性を高める、苦肉の策
ブール型として扱うなら、加算は存在しない
AND, OR, NOT だけしかない
だから技術者間での、こういう共通意識が大切なわけ。
これは「実質的なブール型」として扱っているから、整数型の演算はできません!
ブール型が無かった時代の、
技術者間での意思疎通を図り、安全性を高める、苦肉の策
473さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdbf-tIeT)
2019/03/02(土) 19:48:16.19ID:vmi2lFb5d bool a = true, b = true;
int c = a + b;
これは2
int c = a + b;
これは2
>>467
>それはブール型ですよってアピールする事で、技術者間での意思疎通を図り
そういうのは、わりきってハンガリアンを使う方がいいのでは?
bool を使うことで文法的縛りが導入されないことには意味がない気がします
>それはブール型ですよってアピールする事で、技術者間での意思疎通を図り
そういうのは、わりきってハンガリアンを使う方がいいのでは?
bool を使うことで文法的縛りが導入されないことには意味がない気がします
475デフォルトの名無しさん (ワッチョイ 175f-5O6o)
2019/03/02(土) 20:00:32.34ID:/q2pZC1F0 仕様の話とコーティング規約とか作法の話が混ざってるからややこしくなってるのでは
476デフォルトの名無しさん (ワッチョイ 9fda-W5e4)
2019/03/02(土) 20:02:44.72ID:uyGBCzAL0 MSVCではbool変数同士の論理和でも加算でも再評価されて0か1のいずれかが再設定されてる
内部処理は全く同じ
gccの内部処理は分からんけど
https://i.imgur.com/3EzADoO.png
内部処理は全く同じ
gccの内部処理は分からんけど
https://i.imgur.com/3EzADoO.png
477はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-3oSp)
2019/03/02(土) 20:47:30.41ID:tMatklv80478デフォルトの名無しさん (ブーイモ MMcf-NqO3)
2019/03/02(土) 21:01:54.09ID:0outH6mLM479デフォルトの名無しさん (アウアウウー Sa9b-WzxR)
2019/03/02(土) 22:47:35.40ID:WsmBPiyqa 最後に評価されるタイミングで一致してりゃなんでもいいんだけどね
+って相当するのはxorだかorだかわからんという問題もあるね
+って相当するのはxorだかorだかわからんという問題もあるね
480デフォルトの名無しさん (ワッチョイ 9f01-dMaL)
2019/03/03(日) 06:55:31.52ID:EUJr/Yte0 >>479
> 最後に評価されるタイミングで一致してりゃなんでもいいんだけどね
とか言うなら内部処理ガーとか言うなよ
って話だろ
> +って相当するのはxorだかorだかわからんという問題もあるね
orはわかるがxorになることなんてあるのか?
> 最後に評価されるタイミングで一致してりゃなんでもいいんだけどね
とか言うなら内部処理ガーとか言うなよ
って話だろ
> +って相当するのはxorだかorだかわからんという問題もあるね
orはわかるがxorになることなんてあるのか?
481デフォルトの名無しさん (ワッチョイ 9fda-W5e4)
2019/03/03(日) 07:58:48.98ID:ojZ/TgF60 ついでにいくつか検証
xorは排他なので当然true同士はfalseに反転する
2項演算や0/1以外の値の代入(boolの範囲外の値であっても)は内部処理は共通
単項演算のインクリメントやデクリメントはコンパイル時に1か0を割り当てるため別の処理らしい
https://i.imgur.com/STxUA6o.png
xorは排他なので当然true同士はfalseに反転する
2項演算や0/1以外の値の代入(boolの範囲外の値であっても)は内部処理は共通
単項演算のインクリメントやデクリメントはコンパイル時に1か0を割り当てるため別の処理らしい
https://i.imgur.com/STxUA6o.png
482デフォルトの名無しさん (ワッチョイ d77b-vPGa)
2019/03/03(日) 08:25:42.12ID:HIAqsaOR0 ブール値は 0/1 しかとらないから1ビットの整数値、と解釈して
true + true == 1 + 1 == (2進数で)10 → 下位1ビットを採用して結果は 0
よってブール値での加算はビットでの排他的論理和と同等、
という考え方もあるんだわ。
「無符号整数のオーバーフローの方式を1ビット幅まで狭める方向に推し進める」
とでも言おうか。
true + true == 1 + 1 == (2進数で)10 → 下位1ビットを採用して結果は 0
よってブール値での加算はビットでの排他的論理和と同等、
という考え方もあるんだわ。
「無符号整数のオーバーフローの方式を1ビット幅まで狭める方向に推し進める」
とでも言おうか。
483デフォルトの名無しさん (ワッチョイ 9fda-W5e4)
2019/03/03(日) 08:41:37.16ID:ojZ/TgF60 基本的なハーフアダー演算器の考え方だね
キャリーを出力してビットを反転させる
多ビット加算の基本構成
いくら高級アセンブラとしてのC言語であってもキャリーを抽象化した演算を実装するのは結構面倒だけど
多バイト加算はそれなりに手間が掛かる
キャリーを出力してビットを反転させる
多ビット加算の基本構成
いくら高級アセンブラとしてのC言語であってもキャリーを抽象化した演算を実装するのは結構面倒だけど
多バイト加算はそれなりに手間が掛かる
484デフォルトの名無しさん (ワッチョイ d7f2-W5e4)
2019/03/03(日) 08:57:40.87ID:oO/57lY20 仕様を小さくするため論理演算をビット演算で代用する言語はあったと思うが、
わざわざ下1bitだけで真偽を表すってのは見たことないなぁ。
わざわざ下1bitだけで真偽を表すってのは見たことないなぁ。
485デフォルトの名無しさん (ワッチョイ 9f01-dMaL)
2019/03/03(日) 10:00:14.37ID:EUJr/Yte0 >>482
> よってブール値での加算はビットでの排他的論理和と同等、
> という考え方もあるんだわ。
そんなの聞いたことないw
お前のオレオレ理論じゃないと言うならその考え方を示してる例を出してくれ
> よってブール値での加算はビットでの排他的論理和と同等、
> という考え方もあるんだわ。
そんなの聞いたことないw
お前のオレオレ理論じゃないと言うならその考え方を示してる例を出してくれ
486482 (ワッチョイ d77b-vPGa)
2019/03/03(日) 10:41:34.05ID:HIAqsaOR0487デフォルトの名無しさん (スププ Sdbf-5O6o)
2019/03/03(日) 10:46:47.10ID:3MaRmCtMd 少なくともC言語である限りは規格に反するんじゃ?
_Bool型は0に等しければ0、その他は1って明記されてる(C11の6.3.1.2)から2進数で10は0に等しくないように思うが
_Bool型は0に等しければ0、その他は1って明記されてる(C11の6.3.1.2)から2進数で10は0に等しくないように思うが
488デフォルトの名無しさん (ワッチョイ 9f01-dMaL)
2019/03/03(日) 11:22:47.67ID:EUJr/Yte0 >>486
ハーフアダーはキャリーとセットで話すべきものだからハーフアダー云々は頓珍漢過ぎる
ハーフアダーはキャリーとセットで話すべきものだからハーフアダー云々は頓珍漢過ぎる
489デフォルトの名無しさん (ワッチョイ d77b-vPGa)
2019/03/03(日) 11:25:33.68ID:HIAqsaOR0 Cの、ビット幅の狭い整数値は int に変換してから計算するってルールにより
true + true → (int)1 + (int)1 == (int)2 → true
という流れで true + true == true であることは納得してるんだ。
型が _Bool でも適用されるよね。勘違いなら訂正求む。
(今回の話とは直接関係ないけど、まるっきり無関係でもない余談)
ただ、これが例えば unsigned int の値を真偽値として扱う場合だと、
unsigned int a = UINT_MAX; // 真偽値としては真
unsigned int b = 1; // 真偽値としては真
a + b == UINT_MAX + 1 == (オーバーフローして)0 → 真偽値では偽!
という事態も起こりうるのでご注意。
true + true → (int)1 + (int)1 == (int)2 → true
という流れで true + true == true であることは納得してるんだ。
型が _Bool でも適用されるよね。勘違いなら訂正求む。
(今回の話とは直接関係ないけど、まるっきり無関係でもない余談)
ただ、これが例えば unsigned int の値を真偽値として扱う場合だと、
unsigned int a = UINT_MAX; // 真偽値としては真
unsigned int b = 1; // 真偽値としては真
a + b == UINT_MAX + 1 == (オーバーフローして)0 → 真偽値では偽!
という事態も起こりうるのでご注意。
490デフォルトの名無しさん (アウアウカー Sa6b-WzxR)
2019/03/03(日) 11:31:58.04ID:f6/fijs9a 加算てのは常に状態を変える操作なので、論理演算としてはXORの方が似てるんですよ。
もちろん単に似てるという話で、加算は禁止するくらいが正しいといえば正しい。trueとfalseを1と0に割り当てたせいで足し算できそうな気になってしまったのがよくない。
1ビット整数だと考えてもいいが、元々そんなもんないからsizeofも1以上にするしかないという。
構造体に入れたらビットフィールドと同じメモリのレイアウトになるんだろうか。実装としては。
もちろん単に似てるという話で、加算は禁止するくらいが正しいといえば正しい。trueとfalseを1と0に割り当てたせいで足し算できそうな気になってしまったのがよくない。
1ビット整数だと考えてもいいが、元々そんなもんないからsizeofも1以上にするしかないという。
構造体に入れたらビットフィールドと同じメモリのレイアウトになるんだろうか。実装としては。
491デフォルトの名無しさん (ワッチョイ 9fda-W5e4)
2019/03/03(日) 11:46:05.73ID:ojZ/TgF60 C言語の_Bool型(boolはただの別名)のtrueを1以外に割り当てるとC++との互換に問題が生じる
C++のbool型のtrueの内部表現は1
bool(論理型)をcharやintなど(整数型)にcastすると1が返される
C++では論理型同士での四則演算は不可能なので問題は生じないが論理型の存在しないC言語ではどうしようもない
trueを1に割り当てて妥協するしか無いと思う
C++のbool型のtrueの内部表現は1
bool(論理型)をcharやintなど(整数型)にcastすると1が返される
C++では論理型同士での四則演算は不可能なので問題は生じないが論理型の存在しないC言語ではどうしようもない
trueを1に割り当てて妥協するしか無いと思う
492デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/03(日) 20:59:55.81ID:7VSfwDmM0 >>444
おまえ除算器作ったことあるの?
おまえ除算器作ったことあるの?
>>444
>「実測しろ」って原則を無批判に(条件反射的に)振りかざしてるんじゃないの?
いいところを突きますね、そうそうその調子、いい感じですよ
百人一首の上の句と下の句をつなげる、みたいな思考力を使わない、言葉のオートマタを批判するのはすばらしい着目です、感心しました
>「実測しろ」って原則を無批判に(条件反射的に)振りかざしてるんじゃないの?
いいところを突きますね、そうそうその調子、いい感じですよ
百人一首の上の句と下の句をつなげる、みたいな思考力を使わない、言葉のオートマタを批判するのはすばらしい着目です、感心しました
>>492
作ったことはあります、最初 C でちょろちょろっと書いたのが、いつのまにか成長してまとまったものになりました、まだまだ改善は必要ですが
https://mevius.5ch.net/test/read.cgi/tech/1434079972/51
作ったことはあります、最初 C でちょろちょろっと書いたのが、いつのまにか成長してまとまったものになりました、まだまだ改善は必要ですが
https://mevius.5ch.net/test/read.cgi/tech/1434079972/51
495デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/04(月) 06:25:09.82ID:kNFhD2SD0496デフォルトの名無しさん (ワッチョイ 9fda-W5e4)
2019/03/04(月) 07:32:41.06ID:yZdj1rJq0 昔8bitマイコンの組込みシステム開発で、被除数が24bit長、除数が固定値(値は3)の除算処理が必要となったとき、
C言語の除算処理では実行時間が要求仕様を満足しなかったのでインラインアセンブラで書き下ろしたことがある
処理系そのものは16bit長までしか対応してなかったので、32bit長の汎用演算ライブラリ関数が付属してたのはいいけど
そのライブラリが遅くて使い物にならなかった
C言語の除算処理では実行時間が要求仕様を満足しなかったのでインラインアセンブラで書き下ろしたことがある
処理系そのものは16bit長までしか対応してなかったので、32bit長の汎用演算ライブラリ関数が付属してたのはいいけど
そのライブラリが遅くて使い物にならなかった
497デフォルトの名無しさん (アウアウウー Sa9b-mjQG)
2019/03/04(月) 09:27:34.36ID:uCsPZ+haa 昔bool型ってのを初めてみたときは、誰が使うんだよ気持ちわりーって思ったな。charで8個もフラグ取れるし、
flg & 04とかで好きな位置のビット取れるし、なんでわざわざtrue,falseと思ったもんだ。
flg & 04とかで好きな位置のビット取れるし、なんでわざわざtrue,falseと思ったもんだ。
498デフォルトの名無しさん (ワッチョイ 9fa5-JAd8)
2019/03/04(月) 09:33:39.42ID:7yhUbPfx0 貧民の発想だな
499デフォルトの名無しさん (ドコグロ MMcb-dMaL)
2019/03/04(月) 12:25:39.90ID:LMssFTDPM 貧民てか脳がアセンブラに侵されてる
Pascalから入った俺はintでBooleanの代用とかサボりすぎだろって思ったわ
Pascalから入った俺はintでBooleanの代用とかサボりすぎだろって思ったわ
500デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/04(月) 15:44:36.25ID:kNFhD2SD0 当初から予想された抵抗だ
Pascal教に対する宗教改革じゃけえの
Pascal教に対する宗教改革じゃけえの
501デフォルトの名無しさん (ワッチョイ bf02-wVf3)
2019/03/04(月) 16:53:38.87ID:TpCWsYE80 >>497
思い切り最適化されて最終的なコードがそうなれば誰も文句言わないんだろうけどな。
思い切り最適化されて最終的なコードがそうなれば誰も文句言わないんだろうけどな。
502はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-3oSp)
2019/03/04(月) 17:08:34.72ID:Cw9L4ZBc0 bool は真偽値を格納するのに充分であればいいんだから普通は 1 バイトだろっていうのも昔の話で、
今の主要な処理系はだいたい int と同じ幅だったりしてあんまりリソースの節約にもならんかったりするし。
今の主要な処理系はだいたい int と同じ幅だったりしてあんまりリソースの節約にもならんかったりするし。
503デフォルトの名無しさん (ワッチョイ d77b-vPGa)
2019/03/04(月) 17:13:39.42ID:7Cz1/mIW0 ブール値の変数を1ビットで表現して1バイトに8個押し込めば
容量の節約にはなるだろうけど、速度的には損な気がするな。
(これも「実測しなけりゃ何も分からない人」向けの釣り餌かも)
ブール値をバイトなりワードで記憶すれば、CPUによっては
レジスタにロードした時点でゼロフラグに反映されて
ゼロとの比較やマスク演算が不要という利点を得られる場合もある。
容量の節約にはなるだろうけど、速度的には損な気がするな。
(これも「実測しなけりゃ何も分からない人」向けの釣り餌かも)
ブール値をバイトなりワードで記憶すれば、CPUによっては
レジスタにロードした時点でゼロフラグに反映されて
ゼロとの比較やマスク演算が不要という利点を得られる場合もある。
504デフォルトの名無しさん (ワッチョイ bf02-wVf3)
2019/03/04(月) 17:16:40.19ID:TpCWsYE80 >>503
CPUしだいだろうね。レジスタに入れないで0かどうかだけ調べる命令があったらそれの方が速いかも知れんし。
CPUしだいだろうね。レジスタに入れないで0かどうかだけ調べる命令があったらそれの方が速いかも知れんし。
505デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/04(月) 17:18:44.97ID:kNFhD2SD0 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|CPUしだいだろうね。レジスタに入れないで0かどうかだけ調べる命令があったらそれの方が速いかも知れんし
\___________ _______
V
/ ̄ ̄ ̄ ̄ ̄ ミ / ̄ ̄ ̄ \
/ ,――――-ミ / |
/ / / \ | ∨∨∨∨∨\ |
| / ,(・) (・) | |▲ ▲ ||
(6 つ | |(・) (・) 6)
| ___ | | | ||
| /__/ / | ¨ /
/| /\ \/\ /\
/ ̄ ̄ ̄ \
∧
/ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| なわけねーだろ!!
\__________________
|CPUしだいだろうね。レジスタに入れないで0かどうかだけ調べる命令があったらそれの方が速いかも知れんし
\___________ _______
V
/ ̄ ̄ ̄ ̄ ̄ ミ / ̄ ̄ ̄ \
/ ,――――-ミ / |
/ / / \ | ∨∨∨∨∨\ |
| / ,(・) (・) | |▲ ▲ ||
(6 つ | |(・) (・) 6)
| ___ | | | ||
| /__/ / | ¨ /
/| /\ \/\ /\
/ ̄ ̄ ̄ \
∧
/ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| なわけねーだろ!!
\__________________
506はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-3oSp)
2019/03/04(月) 17:21:36.33ID:Cw9L4ZBc0 真偽値の超巨大な配列が必要な場合ならともかく、
今の時代なら 1MB が 8MB になったくらいならたいした差ではないしな。
ただ、キャッシュにのるかどうかで劇的な差になったりもするから、
そこらへんは状況によるというか、それこそ実測しなきゃわからん。
今の時代なら 1MB が 8MB になったくらいならたいした差ではないしな。
ただ、キャッシュにのるかどうかで劇的な差になったりもするから、
そこらへんは状況によるというか、それこそ実測しなきゃわからん。
507デフォルトの名無しさん (ワッチョイ 17de-Pjzk)
2019/03/04(月) 17:42:05.47ID:VsmIFGpH0 >503
ロードストアに比べて
ALUの制約は少ない
だから詰めたほうがいいとなる
スペックシート読めずに
実測して速い遅い語ってる人は
遅くなると断言しよう
ロードストアに比べて
ALUの制約は少ない
だから詰めたほうがいいとなる
スペックシート読めずに
実測して速い遅い語ってる人は
遅くなると断言しよう
508デフォルトの名無しさん (アウアウカー Sa6b-WzxR)
2019/03/04(月) 18:01:28.91ID:jkGA6AVca プリミティブな静的変数のビットフィールドにアクセスするときってロック意味あると思う?
509デフォルトの名無しさん (ワッチョイ f7d2-mfNA)
2019/03/04(月) 18:13:29.18ID:9wLIIjqc0510デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/04(月) 18:18:11.00ID:kNFhD2SD0 10進で2桁程度の「整数値」にもintを使えという主張に似ているな
511デフォルトの名無しさん (ワッチョイ bf02-wVf3)
2019/03/04(月) 18:38:48.94ID:TpCWsYE80 >>505
あれ?そう?そう断言できる根拠あるの?
あれ?そう?そう断言できる根拠あるの?
512デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/04(月) 18:51:09.16ID:kNFhD2SD0 >>511
レジスタに入れないでって無理
メモリREADサイクルでどのみちラッチするんだから
名前のある公開レジスタか、名前のない非公開レジスタかという違いにしかならない
どうしても疑うんならHDLでCPU書いてみろ
レジスタに入れないでって無理
メモリREADサイクルでどのみちラッチするんだから
名前のある公開レジスタか、名前のない非公開レジスタかという違いにしかならない
どうしても疑うんならHDLでCPU書いてみろ
513KAC (ブーイモ MMcf-KKw9)
2019/03/04(月) 18:58:51.95ID:HyYNE7F2M IA32のTEST命令も思い出してあげて下さい
514503 (ワッチョイ d77b-vPGa)
2019/03/04(月) 19:06:20.72ID:7Cz1/mIW0 自分にツッコミ。
「ブール値の変数を1ビット幅にしてメモリ1バイトに8個押し込む」方式は
Cの規格とは相性悪いね。
&でポインタ取ったときにバイト番地で表現できないとか、
sizeofで1より小さな小数を返すのか、とか。
「ある変数が1バイトより小さな領域しか占めない」って性質が原因だ。
>>509
その点は気がつかなかった。1回の判定しか考えてなかったわ。
1バイトを1回だけ読んでマスク値をシフトしながら判定と、
1バイトずつ8回読むのとで比較しないといけないね。
一度にもっと多く、4バイト単位とかで処理できるかも知れないし。
「ブール値の変数を1ビット幅にしてメモリ1バイトに8個押し込む」方式は
Cの規格とは相性悪いね。
&でポインタ取ったときにバイト番地で表現できないとか、
sizeofで1より小さな小数を返すのか、とか。
「ある変数が1バイトより小さな領域しか占めない」って性質が原因だ。
>>509
その点は気がつかなかった。1回の判定しか考えてなかったわ。
1バイトを1回だけ読んでマスク値をシフトしながら判定と、
1バイトずつ8回読むのとで比較しないといけないね。
一度にもっと多く、4バイト単位とかで処理できるかも知れないし。
515デフォルトの名無しさん (ワッチョイ d701-WeXs)
2019/03/04(月) 19:30:00.46ID:FaqzbzR10 ソフトから見て1命令でも、メモリに対して1バスサイクルでビット操作は不可能だからねぇ。
メモリビット操作命令は裏でマイクロコードが暗躍して結局ロードストアアーキと同じ動きしてる。
lockが必要ない利点はあるけども。
メモリビット操作命令は裏でマイクロコードが暗躍して結局ロードストアアーキと同じ動きしてる。
lockが必要ない利点はあるけども。
516デフォルトの名無しさん (ワッチョイ d7f2-W5e4)
2019/03/04(月) 22:21:47.12ID:tJNb7RRD0 >>514
ここはCスレだけど、それまさにstd::vector<bool>でやらかしたやつだね。
ここはCスレだけど、それまさにstd::vector<bool>でやらかしたやつだね。
517デフォルトの名無しさん (ワッチョイ bf02-wVf3)
2019/03/05(火) 00:00:07.09ID:VLRAu/TX0 >>512
知らんよ。そういうCPUがあればそうだねってだけの話だし、お前もその自分の体験や知識から言ってるだけで全世界の全CPU調べた上で言ってるわけじゃないだろ?予想外の変なCPUはあるかも知れんから断定はできんだろう。
知らんよ。そういうCPUがあればそうだねってだけの話だし、お前もその自分の体験や知識から言ってるだけで全世界の全CPU調べた上で言ってるわけじゃないだろ?予想外の変なCPUはあるかも知れんから断定はできんだろう。
518デフォルトの名無しさん (ワッチョイ bf02-wVf3)
2019/03/05(火) 00:07:19.93ID:VLRAu/TX0 >>514
一応C言語では構造体にビットフィールドがあってビット単位で扱う事が出来るようになっているな。まああれは数値変数として扱うだけでboolではないわけだけど。効率が良いかどうかはどう最適化されるかに掛ってるかな。
一応C言語では構造体にビットフィールドがあってビット単位で扱う事が出来るようになっているな。まああれは数値変数として扱うだけでboolではないわけだけど。効率が良いかどうかはどう最適化されるかに掛ってるかな。
519デフォルトの名無しさん (ワッチョイ ff63-3oSp)
2019/03/05(火) 00:12:21.39ID:/9vlYliD0 要素が3ビットの多次元配列が簡単に作れて扱える様になると便利ですね
520KAC (ブーイモ MM3b-KKw9)
2019/03/05(火) 00:55:28.63ID:zhV7s4kGM >>515
メモリバスがネックになるようなシステムなら、
バス幅のビット分情報が詰まってるほうが、
メモリのアクセス回数減らせるから利点もあるだろう。
なんにしろ、一長一短は有るんだから
正しく理解して正しく使うことが重要かと。
メモリバスがネックになるようなシステムなら、
バス幅のビット分情報が詰まってるほうが、
メモリのアクセス回数減らせるから利点もあるだろう。
なんにしろ、一長一短は有るんだから
正しく理解して正しく使うことが重要かと。
521デフォルトの名無しさん (ワッチョイ d77b-vPGa)
2019/03/05(火) 05:52:07.47ID:Q+OO1XNi0 >>518 1ビット幅のブール変数をビットフィールドと同じ扱い、
つまり「アドレスを求めることもsizeofを適用することもできない」
というルールにする手はあるか。
と言っても、アドレスを取れないとなると、ポインタ経由での操作、
配列に入れてインデクスで順番に走査することもできないわけで
非常に使い勝手の悪いものになってしまうね。
つまり「アドレスを求めることもsizeofを適用することもできない」
というルールにする手はあるか。
と言っても、アドレスを取れないとなると、ポインタ経由での操作、
配列に入れてインデクスで順番に走査することもできないわけで
非常に使い勝手の悪いものになってしまうね。
522デフォルトの名無しさん (ワッチョイ 9fda-W5e4)
2019/03/05(火) 06:03:05.43ID:C3u1nlxm0 ビットフィールド構造体はあくまで構造体であるのでアドレスを返すことは出来る
というか自分ならビットフィールドだけでは使い勝手が悪いので構造体をcharなどと一緒に共用体に纏める
構造体を配列で操作するときなどは同一アドレスのchar変数でビットフィールドを纏めたパッケージとして取り扱う方が使い勝手がいい
というか自分ならビットフィールドだけでは使い勝手が悪いので構造体をcharなどと一緒に共用体に纏める
構造体を配列で操作するときなどは同一アドレスのchar変数でビットフィールドを纏めたパッケージとして取り扱う方が使い勝手がいい
523デフォルトの名無しさん (ワッチョイ bf8c-Q9lp)
2019/03/05(火) 06:15:17.45ID:BSZ7CWqR0 maxima
(%i1) load("bitwise")$
(%i2) bit_not(i);
(%o2) bit_not(i)
(%i3) bit_not(bit_not(i));
(%o3) i
(%i4) bit_not(3);
(%o4) - 4
(%i5) bit_not(100);
(%o5) - 101
(%i6) bit_not(-101);
(%o6) 100
(%i1) load("bitwise")$
(%i2) bit_not(i);
(%o2) bit_not(i)
(%i3) bit_not(bit_not(i));
(%o3) i
(%i4) bit_not(3);
(%o4) - 4
(%i5) bit_not(100);
(%o5) - 101
(%i6) bit_not(-101);
(%o6) 100
524デフォルトの名無しさん (ワッチョイ 9fda-W5e4)
2019/03/05(火) 06:34:30.57ID:C3u1nlxm0 typedef struct {
unsigned8 b7 :1; /* bit7 */
unsigned8 b6 :1; /* bit6 */
unsigned8 b5 :1; /* bit5 */
unsigned8 b4 :1; /* bit4 */
unsigned8 b3 :1; /* bit3 */
unsigned8 b2 :1; /* bit2 */
unsigned8 b1 :1; /* bit1 */
unsigned8 b0 :1; /* bit0 */
} BYTE_FIELD;
unsigned8 b7 :1; /* bit7 */
unsigned8 b6 :1; /* bit6 */
unsigned8 b5 :1; /* bit5 */
unsigned8 b4 :1; /* bit4 */
unsigned8 b3 :1; /* bit3 */
unsigned8 b2 :1; /* bit2 */
unsigned8 b1 :1; /* bit1 */
unsigned8 b0 :1; /* bit0 */
} BYTE_FIELD;
525デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/05(火) 06:48:30.63ID:SFzBJqTc0526デフォルトの名無しさん (アウアウウー Sa9b-mjQG)
2019/03/05(火) 09:35:09.67ID:XZEd/J30a >>521
謎だな。
ブールの配列ならint bool やら char boolやらした時点で確保されるメモリをそのまま使って、and or xorあたりでビット操作してshiftで走査したらいいじゃん、ってのが爺の言い分。
どのビットを何に使ってるかってのはコメントに書いておいたり仕様書に書いといたりカンペ回したり。
メモリ確保もロードも最小単位があるんだから、単独1ビットのブール変数ってのは無理だろ。
あ、組込み用のマイコンは知らないけど。
謎だな。
ブールの配列ならint bool やら char boolやらした時点で確保されるメモリをそのまま使って、and or xorあたりでビット操作してshiftで走査したらいいじゃん、ってのが爺の言い分。
どのビットを何に使ってるかってのはコメントに書いておいたり仕様書に書いといたりカンペ回したり。
メモリ確保もロードも最小単位があるんだから、単独1ビットのブール変数ってのは無理だろ。
あ、組込み用のマイコンは知らないけど。
527デフォルトの名無しさん (アウアウウー Sa9b-RuLt)
2019/03/05(火) 12:23:27.77ID:TQUHbSsoa528デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/05(火) 12:35:19.43ID:SFzBJqTc0529デフォルトの名無しさん (アウアウウー Sa9b-RuLt)
2019/03/05(火) 12:58:00.63ID:TQUHbSsoa >>528
マウントご苦労様です。
マウントご苦労様です。
530デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/05(火) 13:03:24.22ID:SFzBJqTc0 まだいたの? アンダードッグ君
531デフォルトの名無しさん (アウアウウー Sa9b-RuLt)
2019/03/05(火) 14:27:58.97ID:TQUHbSsoa >>530
いつもマウントありがとうございます。
いつもマウントありがとうございます。
532デフォルトの名無しさん (ワッチョイ 9fad-kdfS)
2019/03/05(火) 14:29:27.16ID:TEkYesPv0 使用中なので取り外しが出来ませんでした
533デフォルトの名無しさん (スプッッ Sd3f-x13U)
2019/03/05(火) 18:49:30.99ID:t42KPL8Wd >>505
結局レジスタに入れずにってのは有りうるの?喧嘩せずに冷静に結論を出してくれると嬉しい。気になる。
結局レジスタに入れずにってのは有りうるの?喧嘩せずに冷静に結論を出してくれると嬉しい。気になる。
534デフォルトの名無しさん (ワッチョイ b702-IBRN)
2019/03/05(火) 18:58:34.77ID:6hPuHs1J0 intが64ビットの環境で32ビットの変数を扱いたいので、
とりあえず(私の環境で) typedef long INT32;とか定義してるんですが、
longを使うのが普通でしょうか?
環境によって違うらしいとは知っているのですが、
typedefに出来るだけ無難な型を使っときたいという意図です。
とりあえず(私の環境で) typedef long INT32;とか定義してるんですが、
longを使うのが普通でしょうか?
環境によって違うらしいとは知っているのですが、
typedefに出来るだけ無難な型を使っときたいという意図です。
535デフォルトの名無しさん (ワッチョイ d7b3-dc4V)
2019/03/05(火) 19:06:56.91ID:04oqNpdo0 >>534
stdint.hかinttypes.hをインクルードしてint32_tを使うのはダメなの?
stdint.hかinttypes.hをインクルードしてint32_tを使うのはダメなの?
536デフォルトの名無しさん (アークセー Sx0b-WeXs)
2019/03/05(火) 19:08:28.28ID:JrR+GNVhx レジスタに入れずに直接メモリ上のビット操作はないよ。
そりゃやろうと思えばメモリセルの制御単位を1ビットにしてデータバスを1ビット、アドレスバスのアドレス単位も1ビットにでもすれば1バスサイクルでのビットアクセスができるだろうけど、あまりにも非効率なのでやらないだろう。
そんな汎用CPUはどこにもないと断言しても良いレベル。
そりゃやろうと思えばメモリセルの制御単位を1ビットにしてデータバスを1ビット、アドレスバスのアドレス単位も1ビットにでもすれば1バスサイクルでのビットアクセスができるだろうけど、あまりにも非効率なのでやらないだろう。
そんな汎用CPUはどこにもないと断言しても良いレベル。
537デフォルトの名無しさん (アークセー Sx0b-WeXs)
2019/03/05(火) 19:09:18.75ID:JrR+GNVhx538デフォルトの名無しさん (ワッチョイ b702-IBRN)
2019/03/05(火) 19:13:46.41ID:6hPuHs1J0539デフォルトの名無しさん (ワッチョイ ffaa-Pjzk)
2019/03/05(火) 19:21:59.58ID:pv4h1d4+0 こんなデタラメまじりの掲示板で
聞いた所で所詮オカルト
はっきりさせたきゃ
sdramの転送どうなってるか
自分で読めばいい
聞いた所で所詮オカルト
はっきりさせたきゃ
sdramの転送どうなってるか
自分で読めばいい
540デフォルトの名無しさん (ワッチョイ ff63-3oSp)
2019/03/05(火) 19:22:03.60ID:/9vlYliD0 それなら提供されている範囲で使える物を使うしかない
32ビットもあえて使わなくても良いように思うけど
何かこだわりがあるのかな?
32ビットもあえて使わなくても良いように思うけど
何かこだわりがあるのかな?
541デフォルトの名無しさん (ワッチョイ d77b-vPGa)
2019/03/05(火) 19:25:55.02ID:Q+OO1XNi0 >>538 コンパイラ付属のヘッダファイルも存在しないのかな。
その場合は、コンパイラの取説でも見て、32bitになる整数を選んで
typedef すれば良いかと。
どのみち移植する際には、その辺も含めて丸ごと再検討ってことになるだろうし。
その場合は、コンパイラの取説でも見て、32bitになる整数を選んで
typedef すれば良いかと。
どのみち移植する際には、その辺も含めて丸ごと再検討ってことになるだろうし。
542デフォルトの名無しさん (ラクペッ MMab-AU+X)
2019/03/05(火) 19:45:54.06ID:nFLweowNM543デフォルトの名無しさん (ワッチョイ d7da-mjQG)
2019/03/05(火) 20:04:57.01ID:/w4kwDux0 >>542
クロスだろ。ターゲットのlongが32なんでしょ。
クロスだろ。ターゲットのlongが32なんでしょ。
544デフォルトの名無しさん (ラクペッ MMab-AU+X)
2019/03/05(火) 20:14:28.31ID:z9gnaYkTM クロス開発でホストのintに何の意味がある?
545デフォルトの名無しさん (アウアウクー MM0b-tQZn)
2019/03/05(火) 20:17:27.37ID:EdVc4MwEM int型が64ビットの環境で、longという型が32ビットなのは引っかけだな。
あとで見た他人に恨まれるぞ。
あとで見た他人に恨まれるぞ。
546デフォルトの名無しさん (アウアウウー Sa9b-RuLt)
2019/03/05(火) 20:37:31.74ID:TQUHbSsoa >>537
話の流れとしてそこはビット単位の話ではなくなっている。
話の流れとしてそこはビット単位の話ではなくなっている。
547デフォルトの名無しさん (ワッチョイ d7da-mjQG)
2019/03/05(火) 20:38:33.36ID:/w4kwDux0 職場でクロス開発やってるけど、家では開発環境無くてVSかなんかで勉強してると妄想してた。
548デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/05(火) 20:43:04.13ID:SFzBJqTc0 >>531
マゾ野郎
マゾ野郎
549デフォルトの名無しさん (アウアウウー Sa9b-RuLt)
2019/03/05(火) 20:50:49.79ID:TQUHbSsoa >>548
昼夜を問わず沢山のマウントありがとうございます。
昼夜を問わず沢山のマウントありがとうございます。
550デフォルトの名無しさん (ワッチョイ d7dc-W5e4)
2019/03/05(火) 21:09:43.62ID:LEdL4Q1r0 ゆうたんなw
551デフォルトの名無しさん (ワッチョイ 9f01-dMaL)
2019/03/05(火) 22:33:03.94ID:QKmISP/B0 >>536
すげー昔の話だがメモリー側で論理演算できるようにして1アクセスでビット単位操作を可能にした特許があったな
元々はグラフィック用で図形の重なりの演算をメモリー側でやるようにしたものだったけど
特開昭61-264453
すげー昔の話だがメモリー側で論理演算できるようにして1アクセスでビット単位操作を可能にした特許があったな
元々はグラフィック用で図形の重なりの演算をメモリー側でやるようにしたものだったけど
特開昭61-264453
552デフォルトの名無しさん (ワッチョイ 9fab-IBRN)
2019/03/05(火) 22:51:02.28ID:U66Q7+Ir0 >>551
前世紀の話だが液晶モニタ側にメモリ機能を有して
PCの電源落としても液晶モニタ側に必要な情報が画像として記録されてるから
再起動後すぐにデータを使えるようになる、なんてニュースが真面目に流れてたっけ
前世紀の話だが液晶モニタ側にメモリ機能を有して
PCの電源落としても液晶モニタ側に必要な情報が画像として記録されてるから
再起動後すぐにデータを使えるようになる、なんてニュースが真面目に流れてたっけ
553デフォルトの名無しさん (アウアウウー Sa9b-WzxR)
2019/03/05(火) 23:10:02.68ID:tIL7S9l7a たとえばFPGAだとビット操作向けのコンピュータ作れたりするんですか?
554デフォルトの名無しさん (アークセー Sx0b-WeXs)
2019/03/06(水) 06:42:53.51ID:CUnnY/wEx >>553
外付けのSRAMやSDRAMではI/Fが決まってるので困難だけど、FPGA内で閉じて作るなら可能なんじゃないかしら。
外付けのSRAMやSDRAMではI/Fが決まってるので困難だけど、FPGA内で閉じて作るなら可能なんじゃないかしら。
555デフォルトの名無しさん (ワッチョイ 1f2d-vuRV)
2019/03/06(水) 08:02:21.67ID:y/rbGqHP0 大昔のDRAMには必要なビットだけ書き換えできるライト・パー・ビットって機能を実装したものもあったな
556デフォルトの名無しさん (アークセー Sx0b-WeXs)
2019/03/06(水) 08:08:34.10ID:CUnnY/wEx そういえばGRAM用にそういうRAMが何種類かあったね。
OpenGLとかで全画面書き換えが当たり前の今では役に立ちそうにないけど。
C言語とは関係ない話題ですまんかった。
OpenGLとかで全画面書き換えが当たり前の今では役に立ちそうにないけど。
C言語とは関係ない話題ですまんかった。
557デフォルトの名無しさん (ワッチョイ d7f2-W5e4)
2019/03/06(水) 08:31:46.74ID:LMHeKY6C0 MB-S1はそういう回路を搭載してグラフィックの処理がやたら速かった。
558デフォルトの名無しさん (ワッチョイ ffd2-IBRN)
2019/03/06(水) 12:18:27.87ID:Aj1thrX90 X68000のVRAMは変わった仕様だったみたいだね。
559デフォルトの名無しさん (ワッチョイ 5768-IBRN)
2019/03/06(水) 17:11:17.09ID:5bfpZyLy0 Cはコンパイラにより
型の変数の容量どころかポインターすら変わる
きれいに書くことなどできん!
Cの恐ろしいことは、標準っぽい関数が
リソース開放の事を考えてなかったりする所w
型の変数の容量どころかポインターすら変わる
きれいに書くことなどできん!
Cの恐ろしいことは、標準っぽい関数が
リソース開放の事を考えてなかったりする所w
560デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/06(水) 17:40:35.05ID:BXQzb/g70 表面的だな
どっかで吹き込まれたことの受け売りはすぐにバレる
どっかで吹き込まれたことの受け売りはすぐにバレる
561デフォルトの名無しさん (アウアウウー Sa9b-n14O)
2019/03/06(水) 18:06:49.31ID:t4z0A86na >>559
あちこちで暴れてるrubyボットか?
あちこちで暴れてるrubyボットか?
562デフォルトの名無しさん (ワッチョイ b75f-tQZn)
2019/03/06(水) 18:17:51.07ID:t0mzyE2R0 >>559
標準っぽい関数とはなんですか?
標準っぽい関数とはなんですか?
564KAC (ブーイモ MM3b-KKw9)
2019/03/06(水) 18:35:15.08ID:YYpMHTIdM565デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/06(水) 18:36:02.84ID:BXQzb/g70 その昔、printfはメモリリークするとかぬかしてたアホがいた
566デフォルトの名無しさん (ワッチョイ f7d2-mfNA)
2019/03/06(水) 18:41:35.18ID:OdnfdSEH0 小学生のプログラミングの授業が始まったせいで5chにも大量に小学生が湧いてるな
学校でプログラミングを教えるのは勘弁してほしいは
学校でプログラミングを教えるのは勘弁してほしいは
567デフォルトの名無しさん (ワッチョイ ff63-3oSp)
2019/03/06(水) 18:44:20.55ID:DQfudujD0 小学校は5ちゃんねる使って授業やってるのかw
569デフォルトの名無しさん (ワッチョイ ff63-3oSp)
2019/03/06(水) 18:53:01.46ID:DQfudujD0 「ぼくのかんがえたさいきょうの」
が一番近い
が一番近い
570デフォルトの名無しさん (ブーイモ MMcf-NqO3)
2019/03/06(水) 21:25:19.62ID:nJiuC9TpM ぼくのかんがえたさいきょうの標準っぽい関数
atod
stringをdouble型に変換する。
標準っぽいが標準でない。
リソース開放を試みるものの、constに阻まれる。
atod
stringをdouble型に変換する。
標準っぽいが標準でない。
リソース開放を試みるものの、constに阻まれる。
571デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/06(水) 21:35:13.47ID:BXQzb/g70 Cスレでstringかよw
572デフォルトの名無しさん (ワッチョイ ff8f-x13U)
2019/03/06(水) 22:53:39.41ID:s+f1BYLZ0 標準的な関数で痛い目にあったといえばlocaltime()
コイツがスレッドセーフじゃないせいでひどい目にあったよ……
まあ返り値がポインタな時点で疑うべきだったが。
コイツがスレッドセーフじゃないせいでひどい目にあったよ……
まあ返り値がポインタな時点で疑うべきだったが。
>>570
atod() にてリソース解放の必要はあるのでしょうか?
atod() にてリソース解放の必要はあるのでしょうか?
574デフォルトの名無しさん (ワッチョイ 92da-uGU8)
2019/03/07(木) 03:09:54.57ID:icwsNkaN0 stringは無視するとして、const char*をdoubleに変換する標準ライブラリ関数はatofまたはstrtod
575デフォルトの名無しさん (アウアウウー Sac3-8zRT)
2019/03/07(木) 18:27:15.02ID:LVW4xgZwa 超*2 初心者です。
#include<studio.h>
int main(void){
int a,b;
b=3*a+4;
a=2*b+3;
printf("a=%d\n",a);
printf("b=%d",b);
return 0;
}
とプログラムして、
a=-2
b=-2
という出力を期待したんですが、
a=3
b=0
と出力されてしまいました。
何が間違っているのでしょうか??
長文スマソ
#include<studio.h>
int main(void){
int a,b;
b=3*a+4;
a=2*b+3;
printf("a=%d\n",a);
printf("b=%d",b);
return 0;
}
とプログラムして、
a=-2
b=-2
という出力を期待したんですが、
a=3
b=0
と出力されてしまいました。
何が間違っているのでしょうか??
長文スマソ
576デフォルトの名無しさん (アウアウウー Sac3-8zRT)
2019/03/07(木) 18:28:41.26ID:LVW4xgZwa すみません
a=2*b+2
です
a=2*b+2
です
577デフォルトの名無しさん (ワッチョイ 1663-/kwh)
2019/03/07(木) 18:35:13.92ID:byd0ZGo00 a、bにまず初期値を入れないと
578デフォルトの名無しさん (ワッチョイ ff01-Ly0m)
2019/03/07(木) 18:40:02.18ID:s2VxUnjk0 int a,b;
b=3*a+4;
b = 3 * <未初期化の a は不定の値> + 4;
= <不定の値>
なにになるかはわっからんちん
b=3*a+4;
b = 3 * <未初期化の a は不定の値> + 4;
= <不定の値>
なにになるかはわっからんちん
579はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1e3e-/kwh)
2019/03/07(木) 18:40:34.01ID:fFrTWbSf0 >>575-576
まずプログラムとして完全に間違っているのは、
b=3*a+4; の評価時点で a は初期化されていない。
初期化されていない自動変数の中身は未規定で、
何が入っているかわからない。
そして第二の間違いとして、
C は二次方程式を解いたりしない。
b=3*a+4; は a の中身に 3 を書けて 4 を足すという処理をしたものを b に入れ
その次に a=2*b+3; の処理、すなわち b に 2 を書けて 3 を足したものを a に入れる。
そんだけ。
これはもう、質問以前の話で、完全に C のごくごく初歩をわかってないので、
普通に入門書を最初から読んで。
まずプログラムとして完全に間違っているのは、
b=3*a+4; の評価時点で a は初期化されていない。
初期化されていない自動変数の中身は未規定で、
何が入っているかわからない。
そして第二の間違いとして、
C は二次方程式を解いたりしない。
b=3*a+4; は a の中身に 3 を書けて 4 を足すという処理をしたものを b に入れ
その次に a=2*b+3; の処理、すなわち b に 2 を書けて 3 を足したものを a に入れる。
そんだけ。
これはもう、質問以前の話で、完全に C のごくごく初歩をわかってないので、
普通に入門書を最初から読んで。
580デフォルトの名無しさん (アウアウウー Sac3-8zRT)
2019/03/07(木) 18:41:46.43ID:LVW4xgZwa "1文字=1数字"の式をもたない連立方程式は解けないということですか?
581デフォルトの名無しさん (アウアウウー Sac3-8zRT)
2019/03/07(木) 18:43:15.30ID:LVW4xgZwa >>579
なるほど…出直して来ます。
なるほど…出直して来ます。
582デフォルトの名無しさん (ワッチョイ 1663-/kwh)
2019/03/07(木) 18:44:20.04ID:byd0ZGo00 その解法手順をプログラムで組まないと
583デフォルトの名無しさん (ワッチョイ ff01-Ly0m)
2019/03/07(木) 18:47:10.49ID:s2VxUnjk0 あああ 数学的に式を記述したら解を求めてくれる mathematica 的なものを考えてたのか
残念C言語はそこまで親切じゃない
残念C言語はそこまで親切じゃない
584デフォルトの名無しさん (スプッッ Sd52-P8NU)
2019/03/07(木) 18:48:25.12ID:mVKClUMzd むしろmathematicaだと解いてくれるの?すげぇ。
585デフォルトの名無しさん (ワッチョイ 1663-/kwh)
2019/03/07(木) 19:08:28.06ID:byd0ZGo00 連立方程式は無理じゃないか?
586はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1e3e-/kwh)
2019/03/07(木) 19:22:54.85ID:fFrTWbSf0587デフォルトの名無しさん (ワッチョイ ff01-Ly0m)
2019/03/07(木) 20:08:41.25ID:s2VxUnjk0588デフォルトの名無しさん (アウアウカー Sa6f-sJVA)
2019/03/07(木) 21:29:00.33ID:Pol75wena 方程式解くのは計算というより言語処理感あるよなー
589デフォルトの名無しさん (ワッチョイ 92da-Y0dl)
2019/03/08(金) 03:32:43.35ID:zYZkTFiw0 連立方程式を解くならLU分解(ガウス消去法)が一般的な方法
https://ja.m.wikipedia.org/wiki/%E3%82%AC%E3%82%A6%E3%82%B9%E3%81%AE%E6%B6%88%E5%8E%BB%E6%B3%95
https://ja.m.wikipedia.org/wiki/%E3%82%AC%E3%82%A6%E3%82%B9%E3%81%AE%E6%B6%88%E5%8E%BB%E6%B3%95
590デフォルトの名無しさん (ワッチョイ de8c-lear)
2019/03/08(金) 06:04:01.43ID:jQY3XD9A0 代入を=にしてしまったのが不味いよな
やっぱ代入は矢印にするべきだわ
やっぱ代入は矢印にするべきだわ
591デフォルトの名無しさん (ワッチョイ 92da-Y0dl)
2019/03/08(金) 07:32:03.47ID:zYZkTFiw0 ASCII文字コードに矢印はない
592デフォルトの名無しさん (スップ Sd52-lear)
2019/03/08(金) 07:44:58.78ID:p7qg4IcOd >>591
<- これを使うって意味な
<- これを使うって意味な
593デフォルトの名無しさん (アウアウカー Sa6f-F7Qp)
2019/03/08(金) 07:51:36.24ID:0HdenOKEa 単項マイナスと競合しそう
594デフォルトの名無しさん (スップ Sd52-lear)
2019/03/08(金) 07:54:52.91ID:p7qg4IcOd それは <-- こうしよう
まぁすごく今更だけどなw
まぁすごく今更だけどなw
595デフォルトの名無しさん (ワッチョイ 92da-uGU8)
2019/03/08(金) 08:03:45.11ID:zYZkTFiw0 <- 比較演算子と単項マイナス
<-- 比較演算子と前置デクリメント
<-- 比較演算子と前置デクリメント
596デフォルトの名無しさん (ワッチョイ dff2-uGU8)
2019/03/08(金) 08:54:22.03ID:NeLzfZqe0 == 代入と代入
597デフォルトの名無しさん (ワッチョイ 92da-uGU8)
2019/03/08(金) 09:19:21.38ID:zYZkTFiw0 式 + 二項演算子 + 単項前置演算子 + 式; OK
式 + 二項演算子 + 式 + 二項演算子 + 式; OK
式 + 二項演算子 + 二項演算子 + 式; NG
式 + 二項演算子 + 式 + 二項演算子 + 式; OK
式 + 二項演算子 + 二項演算子 + 式; NG
598デフォルトの名無しさん (アウアウウー Sac3-hLQV)
2019/03/08(金) 09:39:25.02ID:pv8HlopZa 代入を =: にしている言語あるな。
599デフォルトの名無しさん (ワッチョイ 335f-LDqw)
2019/03/08(金) 09:50:55.62ID:dZ4sYt+j0 >>598
:=
:=
600デフォルトの名無しさん (ワッチョイ 335f-LDqw)
2019/03/08(金) 09:51:39.55ID:dZ4sYt+j0 数学用語を使うやつは馬鹿っぽい
601デフォルトの名無しさん (アウアウウー Sac3-hLQV)
2019/03/08(金) 10:43:26.56ID:pv8HlopZa >>599
あ、そうだったか。すまん。
あ、そうだったか。すまん。
602デフォルトの名無しさん (ワッチョイ 72fc-uGU8)
2019/03/08(金) 10:46:07.61ID:YyekWoUN0 もう昔のAPLみたいに変態文字集合にすれば?w
603デフォルトの名無しさん (ブーイモ MM0e-E2e4)
2019/03/08(金) 14:47:21.50ID:DIWS8ePoM \数学用語を使うやつは馬鹿っぽい/
604デフォルトの名無しさん (ワッチョイ 16d2-ouaW)
2019/03/08(金) 14:56:39.67ID:zM+hSklW0 そろそろGUIでフロチャート化や命令/関数アイコンの並び替えで作れる言語を!!
・・・そんなに利便性はあがらんか。
・・・そんなに利便性はあがらんか。
605デフォルトの名無しさん (ワッチョイ c67c-/kwh)
2019/03/08(金) 15:54:05.18ID:ojZ2oJ0M0 >>604
政府が作ってるやろ
政府が作ってるやろ
606デフォルトの名無しさん (アークセー Sxc7-BB1s)
2019/03/08(金) 16:00:54.92ID:iK4gPhWEx はるかの昔からそういったGUIプログラミングツールやCASEツールがあったけど、どれも決定版にはなってないよね。
唯一、車業界でMatlab+Simulinkと自動コードが標準的に使われてるけど、あれはモデル化して徹底的にシミュレーションする目的がメインなのでちょっと汎用的には使いにくい。
実際吐き出されたコードはロジックに問題はなくてもソフト技術者から見ると目も当てられないぐらい悲惨なコードだし。
唯一、車業界でMatlab+Simulinkと自動コードが標準的に使われてるけど、あれはモデル化して徹底的にシミュレーションする目的がメインなのでちょっと汎用的には使いにくい。
実際吐き出されたコードはロジックに問題はなくてもソフト技術者から見ると目も当てられないぐらい悲惨なコードだし。
607デフォルトの名無しさん (ワッチョイ 1663-/kwh)
2019/03/08(金) 16:28:54.41ID:oUzck+rK0 多分要件定義を渡すとプログラムを作成してくれるAIを作る方が早いだろう
誰が作るかは知らないが
誰が作るかは知らないが
608デフォルトの名無しさん (ブーイモ MMdb-E2e4)
2019/03/08(金) 17:06:47.81ID:iA9EY6NmM609デフォルトの名無しさん (ワッチョイ a701-QuMD)
2019/03/08(金) 20:20:35.60ID:q/o0JPH80 そりゃAIが作るんだろうよ
610デフォルトの名無しさん (ワッチョイ 1201-DUKr)
2019/03/08(金) 21:36:26.45ID:+4tnAN1A0 そのAIを作るAIを作るAIを作るAIを…
612デフォルトの名無しさん (ワッチョイ ef52-uGU8)
2019/03/08(金) 22:15:29.34ID:2Mvu5LOb0 なんでこんなゲシュタルト崩壊みたいなスレになってるの?
みんな疲れてるの?
みんな疲れてるの?
613デフォルトの名無しさん (ワッチョイ 1663-/kwh)
2019/03/08(金) 22:30:35.92ID:oUzck+rK0 君以外はAIの書き込みだよ
614デフォルトの名無しさん (ワッチョイ 92a5-tU8h)
2019/03/08(金) 22:33:04.42ID:kP9nO1yc0 再帰とラムダ計算のやり過ぎで頭が沸騰してるんだよ
615デフォルトの名無しさん (スプッッ Sd52-P8NU)
2019/03/08(金) 22:40:30.22ID:FVpVmqiRd Cでなくていいならnode-redなんかはいい感じにグラフィカルだと思うわ。
616デフォルトの名無しさん (ワッチョイ b72c-W+VP)
2019/03/08(金) 22:55:58.20ID:+MPT5vgD0 AI 「めんどくせー、報酬出して人間に考えさせたろ」
617デフォルトの名無しさん (アウアウウー Sac3-h293)
2019/03/09(土) 06:17:25.50ID:sGXnYTxga マイクロソフトのビジ男ってフローチャートからコード吐いてくれる機能あったよね、まだ生きてるのかしら
618デフォルトの名無しさん (ワッチョイ 92da-uGU8)
2019/03/09(土) 06:39:25.40ID:eo7E8WXr0 フローチャートではなくてUMLのクラス図からC++のコードを自動生成する機能だったと思う
その類の機能は廃止されたよ
その類の機能は廃止されたよ
619デフォルトの名無しさん (アウアウウー Sac3-h293)
2019/03/09(土) 06:50:13.86ID:sGXnYTxga >>618
そうか、亡くなってたのか。一回触って無言で閉じた事しか覚えてないけど、根は優しい奴だった。
そうか、亡くなってたのか。一回触って無言で閉じた事しか覚えてないけど、根は優しい奴だった。
620デフォルトの名無しさん (ワッチョイ dff2-uGU8)
2019/03/09(土) 08:31:39.80ID:4ewQpv+T0 Executable UMLは見事に死んだな。あれはさすがに無茶だろうと思った。
621デフォルトの名無しさん (ワッチョイ 9278-PSks)
2019/03/09(土) 08:32:04.32ID:zqjN2Zcb0622デフォルトの名無しさん (ワッチョイ 16d2-ouaW)
2019/03/09(土) 09:40:32.42ID:woQHdZ/f0 >608
ゲーム作れるようになりたいって言ってコンシューマ版PRGツクール買わされた気分。
ゲーム作れるようになりたいって言ってコンシューマ版PRGツクール買わされた気分。
623デフォルトの名無しさん (ワッチョイ 1f02-O5uf)
2019/03/09(土) 10:05:30.78ID:UpidnITW0 返り値がポインタの関数って
int *func() {...}
↑みたいに関数名にアスタリスクが付いてるのが違和感あるんだけど何か理由あるの?
意味を考えればint* func()もしくはint * func()にするべきなんじゃないのかな
int *func() {...}
↑みたいに関数名にアスタリスクが付いてるのが違和感あるんだけど何か理由あるの?
意味を考えればint* func()もしくはint * func()にするべきなんじゃないのかな
624デフォルトの名無しさん (ワッチョイ 168f-P8NU)
2019/03/09(土) 10:44:22.53ID:1jBEzlrN0 複数のポインタ変数を宣言するとき
int *a, *b →OK
int* a, b →NG
ということがあるので前者の記述にする。
関数についてもそれに揃えてるだけ。
だと思ってるんだが違うかもしれん。
int *a, *b →OK
int* a, b →NG
ということがあるので前者の記述にする。
関数についてもそれに揃えてるだけ。
だと思ってるんだが違うかもしれん。
625デフォルトの名無しさん (ワッチョイ 168f-P8NU)
2019/03/09(土) 10:48:12.35ID:1jBEzlrN0 そんな書き方する人はいないだろうけど(というかできたっけ?)、極端な話、
int* func1(), func2();
という宣言だとダメだしね。
int* func1(), func2();
という宣言だとダメだしね。
626デフォルトの名無しさん (ワッチョイ df01-BB1s)
2019/03/09(土) 10:57:28.35ID:MFivwnzo0 昔、*をどこに付けるべきか議論あったね。
「int *」も型なのでスペース空けるのはおかしい、「int*」と書くべきだと主張してる人も結構いて、今もまれによく見かける。
統一してれば良いんじゃね?
「int *」も型なのでスペース空けるのはおかしい、「int*」と書くべきだと主張してる人も結構いて、今もまれによく見かける。
統一してれば良いんじゃね?
627デフォルトの名無しさん (ワッチョイ de8c-OG2p)
2019/03/09(土) 11:42:25.92ID:TwFYMaY40 >>624
int *a, *b は *aと書くと整数。
int *a, *b は *aと書くと整数。
628デフォルトの名無しさん (ワッチョイ 5259-sJVA)
2019/03/09(土) 11:54:24.82ID:DgSeYL2x0 int*ならtypedefやらtypeofやらつかえと思うわ
629デフォルトの名無しさん (アウアウクー MM07-LDqw)
2019/03/09(土) 12:13:21.98ID:MaTZH59sM >>623
それC言語の初期はそっちの方が普通だったんたよ。
それC言語の初期はそっちの方が普通だったんたよ。
630デフォルトの名無しさん (スッップ Sd32-P8NU)
2019/03/09(土) 12:25:03.89ID:OCj0KbiTd >>627
ん?そりゃそうだろ……
ん?そりゃそうだろ……
631デフォルトの名無しさん (スッップ Sd32-P8NU)
2019/03/09(土) 12:26:42.27ID:OCj0KbiTd ああ、わかった。*aで正数になるから宣言するときに int *aって宣言すると自然だよってことか。なるほど。
632デフォルトの名無しさん (スッップ Sd32-P8NU)
2019/03/09(土) 12:30:40.70ID:OCj0KbiTd でもそれなら
int *a; で*aがintになるから自然だけど
int* a; でaがint*になるから自然さはこっちでも同じだな。なんか俺勘違いしてる?
連投スンマソン
int *a; で*aがintになるから自然だけど
int* a; でaがint*になるから自然さはこっちでも同じだな。なんか俺勘違いしてる?
連投スンマソン
633デフォルトの名無しさん (ワッチョイ 5259-sJVA)
2019/03/09(土) 12:33:07.29ID:DgSeYL2x0 >>632
int* a, b
int* a, b
634デフォルトの名無しさん (ワッチョイ 12f9-ouaW)
2019/03/09(土) 12:55:35.26ID:U1CZFrYl0 そう書いてbがint*にならないのが悪い
cの最初の設計が悪い
cの最初の設計が悪い
635デフォルトの名無しさん (ワッチョイ 92a5-tU8h)
2019/03/09(土) 13:12:23.27ID:capoU8RA0 50年前のクルマに「性能が悪い」と怒っても意味が無い
636デフォルトの名無しさん (ワッチョイ 5259-sJVA)
2019/03/09(土) 13:22:50.25ID:DgSeYL2x0 だから、それしたいならtypedef使えって。
typedef int *(*f)(int *, void ** );
f a, b;
Cの型の表現方法はそこそこ合理的だと思うよ。
typedef int *(*f)(int *, void ** );
f a, b;
Cの型の表現方法はそこそこ合理的だと思うよ。
637デフォルトの名無しさん (ワッチョイ ffda-h293)
2019/03/09(土) 13:30:38.68ID:0bE0zR0l0 int* なんて型はCにはないけど。
ついでに、int*もトークン分割時点で int * ってスペース入るんだけどな。
int *pも int * pってなる。
ついでに、int*もトークン分割時点で int * ってスペース入るんだけどな。
int *pも int * pってなる。
638デフォルトの名無しさん (アウアウカー Sa6f-sJVA)
2019/03/09(土) 14:00:08.50ID:KYpgksP4a 規格的には別にスペース入れろなんて書いてない様な気はするが…
int*xは良いんだっけ?
int*xは良いんだっけ?
639デフォルトの名無しさん (アウアウウー Sac3-1CkI)
2019/03/09(土) 14:03:23.83ID:LaC4lObOa640デフォルトの名無しさん (ワッチョイ ffda-h293)
2019/03/09(土) 14:24:11.60ID:0bE0zR0l0641デフォルトの名無しさん (ワッチョイ dff2-uGU8)
2019/03/09(土) 14:26:56.54ID:4ewQpv+T0 一見似てるけど演算子とは別。
642デフォルトの名無しさん (ワッチョイ ffda-h293)
2019/03/09(土) 14:33:59.98ID:0bE0zR0l0 >>641
単項演算子って言えばいいの?
単項演算子って言えばいいの?
変数宣言のときと式の評価のときとでは、働きが間逆になる、ときいていますが、私も馬鹿になったので、そういわれていることをそう理解できなくなりました…
644デフォルトの名無しさん (ワッチョイ 975f-YS+u)
2019/03/09(土) 14:39:16.30ID:Q2jRdDZx0 宣言は演算子とは別じゃなかったっけ?
typedefもできるし規格はpointer typeって書いてるからポインタ型って認識も間違いじゃないと思ってたけど違うんかな
確かに一行での複数宣言だと確かにおかしなことにはなるけども
typedefもできるし規格はpointer typeって書いてるからポインタ型って認識も間違いじゃないと思ってたけど違うんかな
確かに一行での複数宣言だと確かにおかしなことにはなるけども
645デフォルトの名無しさん (ワッチョイ dff2-uGU8)
2019/03/09(土) 14:42:21.52ID:4ewQpv+T0 ポインタ宣言子というやつでデリファレンス演算子とは別。
646デフォルトの名無しさん (アウアウウー Sac3-sJVA)
2019/03/09(土) 15:09:30.52ID:YyCiAm6Za 演算子でしょ?評価順があるじゃん。
関数の()とか配列の[]も同じで、もちろんCだと宣言にも使うことになるけど。
関数の()とか配列の[]も同じで、もちろんCだと宣言にも使うことになるけど。
647はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1e3e-/kwh)
2019/03/09(土) 15:12:58.76ID:2TgeLAXH0 >>640
意味的には int* は型。
でも文法的には * は変数名と優先的に結合するので、
変なことになってんだよ……。
C++ だと設計者 (stroustrup) が * を型名に寄せる書き方をしてるので、
近頃はそれが C にも流入してる感じ。
意味的には int* は型。
でも文法的には * は変数名と優先的に結合するので、
変なことになってんだよ……。
C++ だと設計者 (stroustrup) が * を型名に寄せる書き方をしてるので、
近頃はそれが C にも流入してる感じ。
648デフォルトの名無しさん (ワッチョイ 975f-YS+u)
2019/03/09(土) 15:14:01.24ID:Q2jRdDZx0 C11の6.7.6.1にpointer declaratorって書いてあるから、宣言時の*はポインタ宣言子で間違いなさそう
649デフォルトの名無しさん (アウアウウー Sac3-sJVA)
2019/03/09(土) 15:20:45.65ID:YyCiAm6Za650デフォルトの名無しさん (ワッチョイ ffda-h293)
2019/03/09(土) 15:34:37.72ID:0bE0zR0l0 *から始まってる宣言子をポインタ宣言子って言うんじゃなかった?
宣言での*自体の名前もポインタ宣言子って言うのかな。修飾子?
宣言での*自体の名前もポインタ宣言子って言うのかな。修飾子?
651デフォルトの名無しさん (ワッチョイ dff2-uGU8)
2019/03/09(土) 15:47:50.55ID:4ewQpv+T0 あれ、そうかも。シンボルまで含んで宣言子かな、すまん。
652はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1e3e-/kwh)
2019/03/09(土) 15:49:52.10ID:2TgeLAXH0 >>649
カンマより優先度を高くする必要はないだろう。
カンマより優先度を高くする必要はないだろう。
653デフォルトの名無しさん (ワッチョイ b252-1CkI)
2019/03/09(土) 17:11:57.46ID:ems+thyE0654デフォルトの名無しさん (ワッチョイ ffda-h293)
2019/03/09(土) 18:24:28.10ID:0bE0zR0l0 int* 型はない。型と見なしたら混乱する、俺は。
int *p;は、記号表現としての*pという表現がintという意味。*pで1つのint変数。
だから当然sizeof(int)のメモリも確保される。
int*が型ならアドレス変数のサイズだけ確保され、intオブジェクト分のメモリは確保されないはず。
int a b c *d;などと、まとめて書けるように作ってある
ここで、
*のない変数はアドレスを参照するために&が必要
*がある変数は*を外すだけでいい
&がメモリ上のオブジェクト(変数とか関数)のアドレスを参照するのに対して、アドレスからオブジェクトにアクセスするから*は逆参照演算子と呼ばれる。単項演算子。
int *p;は、記号表現としての*pという表現がintという意味。*pで1つのint変数。
だから当然sizeof(int)のメモリも確保される。
int*が型ならアドレス変数のサイズだけ確保され、intオブジェクト分のメモリは確保されないはず。
int a b c *d;などと、まとめて書けるように作ってある
ここで、
*のない変数はアドレスを参照するために&が必要
*がある変数は*を外すだけでいい
&がメモリ上のオブジェクト(変数とか関数)のアドレスを参照するのに対して、アドレスからオブジェクトにアクセスするから*は逆参照演算子と呼ばれる。単項演算子。
655デフォルトの名無しさん (ワッチョイ df01-BB1s)
2019/03/09(土) 18:41:30.67ID:MFivwnzo0 >>654
いやいや、何を勘違いしてるのか知らないけどint *p;はポインタサイズのみ確保されるんだけど。
結果intとアドレスサイズが一致するとしてもsizeof(int)と同一視すべきではないんでは?
いやいや、何を勘違いしてるのか知らないけどint *p;はポインタサイズのみ確保されるんだけど。
結果intとアドレスサイズが一致するとしてもsizeof(int)と同一視すべきではないんでは?
656デフォルトの名無しさん (ワッチョイ 975f-YS+u)
2019/03/09(土) 18:44:54.99ID:Q2jRdDZx0 >>654
int *p;の宣言じゃsizeof(int)は確保されないでしょ
環境によってはint *p;したあと*p = 0;したらセグフォか何かなると思うが
今一応clangで確認したらTrapしたし
int *p;の宣言じゃsizeof(int)は確保されないでしょ
環境によってはint *p;したあと*p = 0;したらセグフォか何かなると思うが
今一応clangで確認したらTrapしたし
657デフォルトの名無しさん (ワッチョイ 1663-/kwh)
2019/03/09(土) 18:47:05.30ID:9vZTtl180 教えるスレでデタラメ言ってはいかんな
釣りのつもりか?
釣りのつもりか?
658デフォルトの名無しさん (ワッチョイ b252-1CkI)
2019/03/09(土) 19:01:45.35ID:ems+thyE0 >>654
お前が混乱しようがint*は型だ。
キャストもtypedefもsizeofもできる。
お前のオレオレ定義はどうでもいいから、標準的な用語で会話できないならいちいち書き込まないでくれ。初心者の理解を妨げる害悪でしかない。
お前が混乱しようがint*は型だ。
キャストもtypedefもsizeofもできる。
お前のオレオレ定義はどうでもいいから、標準的な用語で会話できないならいちいち書き込まないでくれ。初心者の理解を妨げる害悪でしかない。
659デフォルトの名無しさん (ワッチョイ ff01-Ly0m)
2019/03/09(土) 19:06:49.21ID:kA4EgVm+0 2重にひどいなコレ
660デフォルトの名無しさん (アウアウウー Sac3-sJVA)
2019/03/09(土) 19:36:12.32ID:YyCiAm6Za 結合順って左右どっちからかという話だろ?
うまいこと、左に型で右に変数という形では宣言できないという点には関わってくるね。
Cではtypedefでそれがカバーできるので使えばいい。
単にstructの省略のためとかだと微妙だけど。
うまいこと、左に型で右に変数という形では宣言できないという点には関わってくるね。
Cではtypedefでそれがカバーできるので使えばいい。
単にstructの省略のためとかだと微妙だけど。
661デフォルトの名無しさん (ブーイモ MM63-W+VP)
2019/03/09(土) 21:20:20.21ID:VKKMhaL/M 自分以下のように「*」をくっつけて書いてた。
int* p;
「int変数のアドレスを格納する型」
と理解してたので。
int* p;
「int変数のアドレスを格納する型」
と理解してたので。
662デフォルトの名無しさん (ワッチョイ a701-uGU8)
2019/03/10(日) 00:15:36.14ID:NjJBb6dx0 intのポインタだから int* と書くのが直感的だよね
int* a, b, c; と書いた時に全部ポインタで宣言できれば良かった
俺は宣言でカンマは使わないことにしてる
int* a, b, c; と書いた時に全部ポインタで宣言できれば良かった
俺は宣言でカンマは使わないことにしてる
663デフォルトの名無しさん (ワッチョイ 975f-YS+u)
2019/03/10(日) 00:16:25.33ID:Yjkm2NzZ0 規約とかで決まってなきゃ思想の問題だし良いんじゃない?
Cでは意味論的には(ポインタ型って書いてあるし)int* pが近くて統語論的には(複数宣言で違和感がないから)int *pが近いっていうイメージ
規格内の例はint *p記法で統一されてるからこっちがCではスタンダードっぽいけど
Cでは意味論的には(ポインタ型って書いてあるし)int* pが近くて統語論的には(複数宣言で違和感がないから)int *pが近いっていうイメージ
規格内の例はint *p記法で統一されてるからこっちがCではスタンダードっぽいけど
664デフォルトの名無しさん (ワッチョイ 335f-LDqw)
2019/03/10(日) 00:24:31.01ID:nrbpjhIZ0 >>662
ポインタでポインタが指している先頭アドレスから始まる領域をint型として扱うだから、*intにすべきだった。
ポインタでポインタが指している先頭アドレスから始まる領域をint型として扱うだから、*intにすべきだった。
665はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1e3e-/kwh)
2019/03/10(日) 00:53:02.56ID:PkJpScAa0 C++ なら std::add_pointer を使うなどという方法もとれるんだが、
C でどうにかする上手いトリックってないもんかね?
C でどうにかする上手いトリックってないもんかね?
666デフォルトの名無しさん (ワッチョイ 6301-V4pZ)
2019/03/10(日) 01:38:42.67ID:/HGKNCBK0 副業解禁で激変する若者世代とマネージャー世代のキャリア観
http://www.businessinsider.jp/post-107782
フリーランスの職種20個の仕事内容と平均年収をわかりやすく解説
http://www.proof0309.com/entry/shokushu
時給1万円のバイトも。会社員向きのプチ副業を、“バイト芸人”が教える
http://headlines.yahoo.co.jp/article?a=20190226-00127948-bizspa-bus_all
副業が「会社にバレる人」と「バレない人」の大差
http://headlines.yahoo.co.jp/article?a=20190303-00268007-toyo-bus_all
正社員の10%以上が副業 中には過重労働で体調崩す人も
http://headlines.yahoo.co.jp/hl?a=20190227-00010000-wordleaf-bus_all
「副業で年2000万円稼ぐ男」に学ぶキャリア戦略
http://headlines.yahoo.co.jp/article?a=20190221-00266856-toyo-bus_all
加速する「副業社会」正社員の4割が「副業したい」 気になる収入はどれくらい?
http://headlines.yahoo.co.jp/hl?a=20190218-00010001-danro-life
おすすめ副業22選を現役フリーランスが解説【在宅も可能】
http://www.proof0309.com/entry/zaitaku-hukugyou
会社を辞めてフリーランスで働きたいあなたが知っておくべき10のこと
http://www.businessinsider.jp/post-165731
フリーランスと会社員、働き方の根本的な差 広がる「雇用されない働き方」の課題とは何か
http://toyokeizai.net/articles/-/263055
フリーランス人口は増える!今後は仕事もプロジェクト単位になる!?
http://freelance.mts-career.com/population/
どのくらい稼げるの?フリーランスエンジニアの単価・報酬・年収の話
http://findy-code.io/engineer-lab/engineer-unitprice-income
http://www.businessinsider.jp/post-107782
フリーランスの職種20個の仕事内容と平均年収をわかりやすく解説
http://www.proof0309.com/entry/shokushu
時給1万円のバイトも。会社員向きのプチ副業を、“バイト芸人”が教える
http://headlines.yahoo.co.jp/article?a=20190226-00127948-bizspa-bus_all
副業が「会社にバレる人」と「バレない人」の大差
http://headlines.yahoo.co.jp/article?a=20190303-00268007-toyo-bus_all
正社員の10%以上が副業 中には過重労働で体調崩す人も
http://headlines.yahoo.co.jp/hl?a=20190227-00010000-wordleaf-bus_all
「副業で年2000万円稼ぐ男」に学ぶキャリア戦略
http://headlines.yahoo.co.jp/article?a=20190221-00266856-toyo-bus_all
加速する「副業社会」正社員の4割が「副業したい」 気になる収入はどれくらい?
http://headlines.yahoo.co.jp/hl?a=20190218-00010001-danro-life
おすすめ副業22選を現役フリーランスが解説【在宅も可能】
http://www.proof0309.com/entry/zaitaku-hukugyou
会社を辞めてフリーランスで働きたいあなたが知っておくべき10のこと
http://www.businessinsider.jp/post-165731
フリーランスと会社員、働き方の根本的な差 広がる「雇用されない働き方」の課題とは何か
http://toyokeizai.net/articles/-/263055
フリーランス人口は増える!今後は仕事もプロジェクト単位になる!?
http://freelance.mts-career.com/population/
どのくらい稼げるの?フリーランスエンジニアの単価・報酬・年収の話
http://findy-code.io/engineer-lab/engineer-unitprice-income
667デフォルトの名無しさん (アウアウウー Sac3-sJVA)
2019/03/10(日) 01:47:39.67ID:yFrseuKKa668デフォルトの名無しさん (ワッチョイ a701-uGU8)
2019/03/10(日) 02:58:07.82ID:NjJBb6dx0 typedef 使う
669デフォルトの名無しさん (ワッチョイ 92da-uGU8)
2019/03/10(日) 04:16:30.73ID:8P6Oam7S0 int* p[10]; // intのポインタの配列
int (*p)[10]; // intの配列のポインタ
int (*p)[10]; // intの配列のポインタ
670デフォルトの名無しさん (スプッッ Sd52-P8NU)
2019/03/10(日) 09:16:48.35ID:WROi3Fy5d >>640
自らの名誉のために書いておくがint*を型だと思ってるわけではないぞ。ただint*で意味をなしてはいるだろ。
自らの名誉のために書いておくがint*を型だと思ってるわけではないぞ。ただint*で意味をなしてはいるだろ。
671デフォルトの名無しさん (ワッチョイ 9274-uGU8)
2019/03/10(日) 10:30:04.20ID:uE8BPcgQ0 int*は型だぞ
printf("%d", sizeof(int*)); //pass
printf("%d", sizeof(int*)); //pass
672はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1e3e-/kwh)
2019/03/10(日) 10:40:10.44ID:PkJpScAa0 int* は型名。 C99 なら 6.7.6 で定義がある。
変数の宣言の文脈ではそれが型指定子と宣言子に分断されるのが、
なんか変な感じがするよなぁという話。
変数の宣言の文脈ではそれが型指定子と宣言子に分断されるのが、
なんか変な感じがするよなぁという話。
673デフォルトの名無しさん (ワッチョイ de02-dgqw)
2019/03/10(日) 10:42:33.14ID:IMQ2P2X20 >>662
そういうのは typedef で型名作ってしまうしかないな。
そういうのは typedef で型名作ってしまうしかないな。
674デフォルトの名無しさん (スプッッ Sd52-P8NU)
2019/03/10(日) 11:08:02.97ID:kCIB6uhNd675デフォルトの名無しさん (ワッチョイ b252-1CkI)
2019/03/10(日) 12:02:32.88ID:42uiz7Ja0 >>674
お前の名誉のために言っておくが、お前の名誉なぞ誰も気にしてないから安心していいぞ
お前の名誉のために言っておくが、お前の名誉なぞ誰も気にしてないから安心していいぞ
676デフォルトの名無しさん (スプッッ Sd52-P8NU)
2019/03/10(日) 12:45:51.83ID:kCIB6uhNd すまねぇ…
677デフォルトの名無しさん (アウアウウー Sac3-h293)
2019/03/10(日) 15:42:39.03ID:cKTKsaa/a int* が型って言うのはどこに書いてありますか?
K&C2版とc99の仕様書見てきたけど、どうしても見つけられないのです。
どこで調べるとint*型や例えばchar*型等の記述を見る事が出来るのでしょうか。
K&C2版とc99の仕様書見てきたけど、どうしても見つけられないのです。
どこで調べるとint*型や例えばchar*型等の記述を見る事が出来るのでしょうか。
679デフォルトの名無しさん (ワッチョイ 1663-/kwh)
2019/03/10(日) 15:45:33.27ID:vxGXLnY80 ポインタ型ってだけかも知れない
680デフォルトの名無しさん (スフッ Sd32-YS+u)
2019/03/10(日) 16:05:52.27ID:+JKmV4RCd 特定の型のポインタは書いてないけど
pointer typeって形で載ってるはず
C11の6.2.5.20とか
pointer typeって形で載ってるはず
C11の6.2.5.20とか
681デフォルトの名無しさん (ワッチョイ 92a5-tU8h)
2019/03/10(日) 16:10:47.95ID:YmhkZ0UL0 全ての型に付けることが出来て
あたかもメソッド++があるかのように振る舞うオブジェクトの様なものだから混乱する
&や*もやはり何かのメソッドの演算子での表現と見做すと理解が捗る
つまりポインタまわりだけ大勢の予想に反してオブジェクト指向になってるから混乱する
あたかもメソッド++があるかのように振る舞うオブジェクトの様なものだから混乱する
&や*もやはり何かのメソッドの演算子での表現と見做すと理解が捗る
つまりポインタまわりだけ大勢の予想に反してオブジェクト指向になってるから混乱する
682はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1e3e-/kwh)
2019/03/10(日) 16:20:50.08ID:PkJpScAa0683デフォルトの名無しさん (ワッチョイ ffda-h293)
2019/03/10(日) 16:36:29.29ID:TrIHnbmn0 >>678
c99 6.7.2
void char short int long float double signed unsigned _Bool _Complex _Imaginary
構造体共用体指定子 列挙型指定子 型定義名
>>679 >>680の言うように、ポインタ型はあります。仕様書を見ても、int* でもfloat*でもいいんですけど、それぞれint型へのポインタ型とかfloatへのポインタ型といった説明しか読み取れませんでした。読解力不足でしょうか。
私はint型を指すポインタ、floatを指すポインタなどと言うように、例えば
int* pであれば、ポインタ型pがあり、それはint型を指す
、と言うように独立した物だと理解していました。
どうしてもint*型と言うのがわかりません。
c99 6.7.2
void char short int long float double signed unsigned _Bool _Complex _Imaginary
構造体共用体指定子 列挙型指定子 型定義名
>>679 >>680の言うように、ポインタ型はあります。仕様書を見ても、int* でもfloat*でもいいんですけど、それぞれint型へのポインタ型とかfloatへのポインタ型といった説明しか読み取れませんでした。読解力不足でしょうか。
私はint型を指すポインタ、floatを指すポインタなどと言うように、例えば
int* pであれば、ポインタ型pがあり、それはint型を指す
、と言うように独立した物だと理解していました。
どうしてもint*型と言うのがわかりません。
684KAC (ブーイモ MM63-NE3V)
2019/03/10(日) 16:44:33.03ID:gHkTxZDuM685デフォルトの名無しさん (ワッチョイ af14-uGU8)
2019/03/10(日) 16:49:42.81ID:8+bEWcYF0 >>677
ここだ
ISO/IEC 9899:2011
6.7.7 Type names
3 EXAMPLE The constructions
(a) int
(b) int *
(c) int *[3]
(d) int (*)[3]
(e) int (*)[*]
(f) int *()
(g) int (*)(void)
(h) int (*const [])(unsigned int, ...)
ここだ
ISO/IEC 9899:2011
6.7.7 Type names
3 EXAMPLE The constructions
(a) int
(b) int *
(c) int *[3]
(d) int (*)[3]
(e) int (*)[*]
(f) int *()
(g) int (*)(void)
(h) int (*const [])(unsigned int, ...)
686デフォルトの名無しさん (アウアウクー MM07-LDqw)
2019/03/10(日) 16:55:14.74ID:FM+9nmuqM C言語を作ったときにあとから型指定のポインタ変数を付け加えたんだろうな。
687デフォルトの名無しさん (ワッチョイ af14-uGU8)
2019/03/10(日) 17:07:06.47ID:8+bEWcYF0688デフォルトの名無しさん (アウアウウー Sac3-sJVA)
2019/03/10(日) 17:12:13.59ID:eT96hTY3a voidはなかったんだよな。
どうでもいいけどcdeclはちょっとした型の勉強にはいいよ。
どうでもいいけどcdeclはちょっとした型の勉強にはいいよ。
689デフォルトの名無しさん (アウアウウー Sac3-sJVA)
2019/03/10(日) 17:14:55.50ID:eT96hTY3a 685を見ると、「型名を左に書くのが自然」みたいな主張がまったく間違ってることがわかるね。
690デフォルトの名無しさん (スフッ Sd32-YS+u)
2019/03/10(日) 18:16:33.04ID:+JKmV4RCd ポインタ型は派生型(deprived types)の一種で、派生型は他に配列型とか構造体型とかがある(6.2.5.20)
例えば、struct MyStructure {int num;};とかやったとして、struct MyStructureは規格に書いてないから型じゃないって言ってる状況に近いように見えるんだけども
例えば、struct MyStructure {int num;};とかやったとして、struct MyStructureは規格に書いてないから型じゃないって言ってる状況に近いように見えるんだけども
691デフォルトの名無しさん (アウアウカー Sa6f-sJVA)
2019/03/10(日) 18:29:23.41ID:49pn/i3ra *は演算子じゃないという意見は間違っとるよ
692KAC (ブーイモ MM63-NE3V)
2019/03/10(日) 18:38:03.60ID:gHkTxZDuM693デフォルトの名無しさん (アウアウウー Sac3-sJVA)
2019/03/10(日) 18:54:33.90ID:nutarBhha 演算子ですよ。いや、文字列の中はどうなんだとか言われると困るけど。
xor的な思考しかできないタイプ?
xor的な思考しかできないタイプ?
694さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd32-xAHY)
2019/03/10(日) 18:58:19.43ID:LvYeDuRnd 宣言の中の*は、演算子ではないかも知れない。
695デフォルトの名無しさん (ワッチョイ ff01-Ly0m)
2019/03/10(日) 19:00:09.92ID:cQhx3jWr0 685 の文中に出てくる * を演算子とみなすのは嫌な感じ
696デフォルトの名無しさん (ワッチョイ af14-uGU8)
2019/03/10(日) 19:26:26.65ID:8+bEWcYF0 宣言の中の*は演算子ではない
宣言子の構成要素の中のポインタに含まれる記号だ
演算子の*はポインタを実体にする作用を持つが
宣言の中の*は客体をポインタにする作用を持つ
おおむね逆の作用となっている
宣言子の構成要素の中のポインタに含まれる記号だ
演算子の*はポインタを実体にする作用を持つが
宣言の中の*は客体をポインタにする作用を持つ
おおむね逆の作用となっている
697デフォルトの名無しさん (ワッチョイ 335f-LDqw)
2019/03/10(日) 19:31:42.70ID:nrbpjhIZ0 >>687
ポインタが指しているところの型を明示しようとしたのは明らかにあとだよね。
ポインタが指しているところの型を明示しようとしたのは明らかにあとだよね。
698デフォルトの名無しさん (スフッ Sd32-YS+u)
2019/03/10(日) 19:31:58.93ID:+JKmV4RCd そういえば*のオペランドがオブジェクト指してなかったら未定義動作なんだよな
宣言の*が演算子だったらint *p;だけで未定義動作踏んでそう
宣言の*が演算子だったらint *p;だけで未定義動作踏んでそう
699KAC (ブーイモ MM63-NE3V)
2019/03/10(日) 19:58:10.73ID:gHkTxZDuM700sage (ワッチョイ d602-2aZh)
2019/03/10(日) 21:54:15.58ID:KIApJaj50 C++か
701デフォルトの名無しさん (ワッチョイ 335f-LDqw)
2019/03/10(日) 23:04:24.35ID:nrbpjhIZ0702KAC (ブーイモ MMdb-NE3V)
2019/03/10(日) 23:11:14.57ID:PFEN9MJxM703デフォルトの名無しさん (ワッチョイ 168f-P8NU)
2019/03/10(日) 23:41:34.29ID:EfIdjxKz0 「俺はこう思う」と「規格にこう書いてある」はきっちり分けて欲しいね。
704デフォルトの名無しさん (ワッチョイ 335f-LDqw)
2019/03/11(月) 00:23:08.11ID:QsQqulf80 英語はsubstituteで意味が広いのに、日本語だとすべて「代入」に翻訳してしまったのか。
705デフォルトの名無しさん (アウアウウー Sac3-h293)
2019/03/11(月) 07:09:33.28ID:7fkCOxJ/a706デフォルトの名無しさん (ワッチョイ af14-uGU8)
2019/03/11(月) 07:19:12.62ID:rOT48PNA0 >>705
X 3010:2003 (ISO/IEC 9899:1999)
6.2.5 型
型char,符号付き整数型,符号無し整数型及び浮動小数点型を総称して基本型(basic type)と呼ぶ。
派生型(derived type)は,オブジェクト型,関数型及び不完全型から幾つでも構成することができる。
派生型の種類は,次のとおりとする。
− 配列型
− 構造体型
− 共用体型
− 関数型
− ポインタ型
派生型を構成するこれらの方法は,再帰的に適用できる。
X 3010:2003 (ISO/IEC 9899:1999)
6.2.5 型
型char,符号付き整数型,符号無し整数型及び浮動小数点型を総称して基本型(basic type)と呼ぶ。
派生型(derived type)は,オブジェクト型,関数型及び不完全型から幾つでも構成することができる。
派生型の種類は,次のとおりとする。
− 配列型
− 構造体型
− 共用体型
− 関数型
− ポインタ型
派生型を構成するこれらの方法は,再帰的に適用できる。
707デフォルトの名無しさん (アウアウウー Sac3-h293)
2019/03/11(月) 07:32:55.06ID:7fkCOxJ/a >>706
派生型を構成できる、と言うことは、int*はコード書く人が自分でint*と言う派生型を構成したんですよね?
構成できることを以ってC言語にint*型がある、定義されていると言うのは変だと思いませんか?
派生型を構成できる、と言うことは、int*はコード書く人が自分でint*と言う派生型を構成したんですよね?
構成できることを以ってC言語にint*型がある、定義されていると言うのは変だと思いませんか?
708デフォルトの名無しさん (ワッチョイ 1f7b-1R1m)
2019/03/11(月) 07:43:53.40ID:+tgFX8Zg0709デフォルトの名無しさん (アークセー Sxc7-BB1s)
2019/03/11(月) 07:54:01.38ID:QaoEDFOQx 変かどうかの主観的な問題ではなく「派生型を定義できる」と決まってるなら、客観的に派生型もやっぱり型だろ。
それを変だと思うならここではなく然るべきワーキンググループに意見すべき。
それを変だと思うならここではなく然るべきワーキンググループに意見すべき。
710デフォルトの名無しさん (スフッ Sd32-YS+u)
2019/03/11(月) 07:54:59.22ID:yg4bOGVFd711デフォルトの名無しさん (スフッ Sd32-YS+u)
2019/03/11(月) 07:55:55.31ID:yg4bOGVFd712デフォルトの名無しさん (アウアウウー Sac3-h293)
2019/03/11(月) 08:13:44.57ID:7fkCOxJ/a >>708
>個人的には>>699 の「int a = 3; の = は代入演算子か違うものか」
宣言での=は、初期化宣言子内の区切り子
>「int* は型か、型ではない(int型に*を作用させた何か)か」
>「ポインタ変数を宣言する際の * は演算子か演算子ではない何かか」
>「変数宣言の * が演算子でないなら何と呼ぶのか」
宣言での*は演算子ではなく、ポインタ宣言子の区切り子
6.7.5.1
ポインタ宣言子
意味規則
宣言
T D1
において,D1 が形式
* 型修飾子並びopt D
をもつ場合,次のとおりとする。
宣言
T D の ident
に対して指定される型が Tの派生宣言子型並び
であれば, T D1の ident に対して指定される型は
Tへの型修飾子並びをもつポインタの派生宣言子型並びとする。
>個人的には>>699 の「int a = 3; の = は代入演算子か違うものか」
宣言での=は、初期化宣言子内の区切り子
>「int* は型か、型ではない(int型に*を作用させた何か)か」
>「ポインタ変数を宣言する際の * は演算子か演算子ではない何かか」
>「変数宣言の * が演算子でないなら何と呼ぶのか」
宣言での*は演算子ではなく、ポインタ宣言子の区切り子
6.7.5.1
ポインタ宣言子
意味規則
宣言
T D1
において,D1 が形式
* 型修飾子並びopt D
をもつ場合,次のとおりとする。
宣言
T D の ident
に対して指定される型が Tの派生宣言子型並び
であれば, T D1の ident に対して指定される型は
Tへの型修飾子並びをもつポインタの派生宣言子型並びとする。
713デフォルトの名無しさん (ワッチョイ b252-1CkI)
2019/03/11(月) 08:13:54.01ID:U6Vr66LT0714デフォルトの名無しさん (アウアウウー Sac3-h293)
2019/03/11(月) 08:29:24.73ID:7fkCOxJ/a715デフォルトの名無しさん (スプッッ Sd52-P8NU)
2019/03/11(月) 08:34:48.95ID:m5MHROJsd 逆に「int* 」が型じゃないって考えの人は
int* a
のaの型は何って聞かれたときにどう答えるのか知りたい。
int* a
のaの型は何って聞かれたときにどう答えるのか知りたい。
716708 (ワッチョイ 1f7b-1R1m)
2019/03/11(月) 08:59:57.45ID:+tgFX8Zg0 >>712
「初期化宣言子内の区切り子」っていう言葉がヒントになった。ありがとう。
n1570.pdf (>>1 のリンク参照) 6.7.9 に載ってるね。
英語だから、すらすら読めるわけじゃないけど。
スカラの算術型に関しては「{} で囲んだ初期値を入れられる」
(構造体の初期化と同じ書き方ができる)ってのが代入演算子と違うところかな。
int a = {3}; // 「定義と同時の初期化」では許される
int b;
b = {4}; // エラー: 通常の代入演算子では値を {} で囲めない
だからどうした、って話かも知れないけど、
動作の違いが確かに存在するってのは気分的にすっきりするわ。
「初期化宣言子内の区切り子」っていう言葉がヒントになった。ありがとう。
n1570.pdf (>>1 のリンク参照) 6.7.9 に載ってるね。
英語だから、すらすら読めるわけじゃないけど。
スカラの算術型に関しては「{} で囲んだ初期値を入れられる」
(構造体の初期化と同じ書き方ができる)ってのが代入演算子と違うところかな。
int a = {3}; // 「定義と同時の初期化」では許される
int b;
b = {4}; // エラー: 通常の代入演算子では値を {} で囲めない
だからどうした、って話かも知れないけど、
動作の違いが確かに存在するってのは気分的にすっきりするわ。
717デフォルトの名無しさん (アウアウウー Sac3-h293)
2019/03/11(月) 09:18:31.95ID:7fkCOxJ/a >>715
ごめんなさい、int*は型指定子かどうかと言うべきでした。
int*a;
aはなにか、と聞かれるとintへのポインタと答えます。
aの型はなにか、と聞かれるとint*型と答えます。
宣言でのint*の文字の並びは型か、と聞かれると宣言でのint*と言う文字の並びは型指定子intと、ポインタ宣言子の並びであって、結果int*型となるがint*型の指定子ではない、と答えます。
ごめんなさい、int*は型指定子かどうかと言うべきでした。
int*a;
aはなにか、と聞かれるとintへのポインタと答えます。
aの型はなにか、と聞かれるとint*型と答えます。
宣言でのint*の文字の並びは型か、と聞かれると宣言でのint*と言う文字の並びは型指定子intと、ポインタ宣言子の並びであって、結果int*型となるがint*型の指定子ではない、と答えます。
718デフォルトの名無しさん (アウアウウー Sac3-h293)
2019/03/11(月) 09:28:25.09ID:7fkCOxJ/a みなさんごめんなさい、私が型指定子とはっきり言わなかったせいで混乱を招いてしまいました。
あ、その前に、
int*p;
のint*は型指定子じゃありませんよね?私の理解合っていますか?
あ、その前に、
int*p;
のint*は型指定子じゃありませんよね?私の理解合っていますか?
719デフォルトの名無しさん (アウアウウー Sac3-sJVA)
2019/03/11(月) 10:41:18.26ID:jULKzJ5ia オブジェクトにもちろん型はあるけど、Cで「型指定子」なんてもんを明確化することに大した意味があるとは思えんね
720デフォルトの名無しさん (アウアウウー Sac3-sJVA)
2019/03/11(月) 10:49:48.10ID:jULKzJ5ia typeof使うと左と右にはっきり分けて書けるので、好きな人は好きだろう。
typeof(int (*)(void *, char []) hogeobj;
typeof(int (*)(void *, char []) hogeobj;
721デフォルトの名無しさん (ワッチョイ af14-uGU8)
2019/03/11(月) 10:50:24.51ID:rOT48PNA0 >>707
713も言っているように、おまえさん用語の意味を誤解してるんだよ
型は基本型の他に派生型も含まれる用語だ
それから定義の意味もおまえさんおかしいぞ
定義は宣言のうち重複できないものをいう
キーワードは定義できない
713も言っているように、おまえさん用語の意味を誤解してるんだよ
型は基本型の他に派生型も含まれる用語だ
それから定義の意味もおまえさんおかしいぞ
定義は宣言のうち重複できないものをいう
キーワードは定義できない
722デフォルトの名無しさん (アウアウウー Sac3-h293)
2019/03/11(月) 13:08:41.49ID:7fkCOxJ/a >>721
はい、気をつけます。
>>719
>>1のc99 6.7の構文規則でいうと
宣言:
宣言指定子列 初期化宣言子並び opt;
宣言指定子列:
記憶域クラス指定子 宣言指定子列 opt
型指定子 宣言指定子列 opt
型修飾子 宣言指定子列 opt
関数指定子 宣言指定子列 opt
初期化宣言子並び:
初期化宣言子
初期化宣言子並び , 初期化宣言子
初期化宣言子:
宣言子
宣言子 = 初期化子
ですから、
int *a,b,c,*d;
という書き方は
宣言指定子列と初期化宣言子並びなのですけど
int*が型指定子だとすると、
宣言指定子列の型指定子がint*、
以降の a,b,c,*d;は初期化宣言子ですから、a,b,c,*dのどれもがint*型になると思うのです。
int*は型指定子ではないから
aはint*,bはint,cはint,dはint*になりますよね。
型指定子かどうかは重要じゃありませんか?
はい、気をつけます。
>>719
>>1のc99 6.7の構文規則でいうと
宣言:
宣言指定子列 初期化宣言子並び opt;
宣言指定子列:
記憶域クラス指定子 宣言指定子列 opt
型指定子 宣言指定子列 opt
型修飾子 宣言指定子列 opt
関数指定子 宣言指定子列 opt
初期化宣言子並び:
初期化宣言子
初期化宣言子並び , 初期化宣言子
初期化宣言子:
宣言子
宣言子 = 初期化子
ですから、
int *a,b,c,*d;
という書き方は
宣言指定子列と初期化宣言子並びなのですけど
int*が型指定子だとすると、
宣言指定子列の型指定子がint*、
以降の a,b,c,*d;は初期化宣言子ですから、a,b,c,*dのどれもがint*型になると思うのです。
int*は型指定子ではないから
aはint*,bはint,cはint,dはint*になりますよね。
型指定子かどうかは重要じゃありませんか?
723デフォルトの名無しさん (スプッッ Sd52-P8NU)
2019/03/11(月) 18:41:02.08ID:m5MHROJsd >>717
ありがとう。話のレベルが高くて自分にはもはや質問しかできないが…
ありがとう。話のレベルが高くて自分にはもはや質問しかできないが…
724デフォルトの名無しさん (ワッチョイ 7705-OS7W)
2019/03/12(火) 14:43:07.78ID:3xf7Y18W0 for文とif文を使って整数nを入力して、2つの1以上10以下の整数x,y(x>=y)の自乗の和がn(n=x^2+y^2)になるx,yとなる組み合わせを求める(n=45のときx=6,y=3みたいな )C言語のプログラムを作りたいんですが、関数って使いますか?
726デフォルトの名無しさん (アウアウウー Sac3-hLQV)
2019/03/12(火) 15:08:06.95ID:M/w6PjEFa 宿題は宿題スレがあるのでそちらへ
727デフォルトの名無しさん (ワッチョイ 7705-OS7W)
2019/03/12(火) 15:29:14.81ID:3xf7Y18W0728はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1e3e-/kwh)
2019/03/12(火) 15:30:39.97ID:tBEUjULM0 >>727
「宿題」で検索するくらいのことはしろよ……
「宿題」で検索するくらいのことはしろよ……
729デフォルトの名無しさん (ワッチョイ 7705-OS7W)
2019/03/12(火) 15:50:57.05ID:3xf7Y18W0 >>728
検索した上で分からなかったので聞いています
検索した上で分からなかったので聞いています
730デフォルトの名無しさん (ワッチョイ 1663-/kwh)
2019/03/12(火) 15:54:56.93ID:aH0w6D4n0 宿題スレって、回答の丸投げだろう
質問に応えるスレではない
質問に応えるスレではない
731デフォルトの名無しさん (ワッチョイ 16d2-ouaW)
2019/03/12(火) 16:35:11.23ID:ZZbwvg6D0 宿題スレ見てきたけど過疎って誰も居なさそうだったけど・・・
732デフォルトの名無しさん (ワッチョイ 1663-/kwh)
2019/03/12(火) 16:37:57.47ID:aH0w6D4n0 依頼があればやってくれるだろう
それ以外に話題がないスレだし
それ以外に話題がないスレだし
733デフォルトの名無しさん (ワッチョイ 1f7b-1R1m)
2019/03/12(火) 17:32:47.14ID:1t7NN+JI0 「宿題」はこの辺かのう。
設立も古いし、何ヶ月も投稿ないから沈んでるのかな。
通常のインターフェースで一覧を見ないんで正確には分からんが。
C/C++の宿題片付けます 170代目
http://mevius.2ch.net/test/read.cgi/tech/1456911928/
C/C++の宿題片付けます 170代目
http://mevius.2ch.net/test/read.cgi/tech/1456647534/
こんなの↓も見つけたけど、これは「宿題」では見つからないタイトルだね。
【C】至急課題のプログラム教えて【アマギフ】
http://mevius.2ch.net/test/read.cgi/tech/1551308087/
設立も古いし、何ヶ月も投稿ないから沈んでるのかな。
通常のインターフェースで一覧を見ないんで正確には分からんが。
C/C++の宿題片付けます 170代目
http://mevius.2ch.net/test/read.cgi/tech/1456911928/
C/C++の宿題片付けます 170代目
http://mevius.2ch.net/test/read.cgi/tech/1456647534/
こんなの↓も見つけたけど、これは「宿題」では見つからないタイトルだね。
【C】至急課題のプログラム教えて【アマギフ】
http://mevius.2ch.net/test/read.cgi/tech/1551308087/
734デフォルトの名無しさん (ワッチョイ eb9d-uGU8)
2019/03/12(火) 17:44:27.56ID:f4lS/kh70 >>724
その目的を直接的に達成する標準関数はない
自乗を求める標準関数ならpowというのがあるが
整数を前提とするその問題には適さない
処理の一部を、おまえさんが関数にする可能性ならある
おまえさん、プログラムを作ってくれなんて言ってないよな
変な妄想してるバカは無視していいぞ
その目的を直接的に達成する標準関数はない
自乗を求める標準関数ならpowというのがあるが
整数を前提とするその問題には適さない
処理の一部を、おまえさんが関数にする可能性ならある
おまえさん、プログラムを作ってくれなんて言ってないよな
変な妄想してるバカは無視していいぞ
735デフォルトの名無しさん (オッペケ Src7-Ly0m)
2019/03/12(火) 17:52:53.77ID:u0RxZCyHr 入力と表示に標準関数は使うんじゃねって程度かな?
736デフォルトの名無しさん (アウアウウー Sac3-hLQV)
2019/03/12(火) 18:17:50.08ID:M/w6PjEFa >>729
何でわからないんだよ。どういう環境で使ってるんだ?
何でわからないんだよ。どういう環境で使ってるんだ?
737デフォルトの名無しさん (ワッチョイ 7705-OS7W)
2019/03/12(火) 18:18:02.86ID:3xf7Y18W0 明日テストでその過去問にこのような問題が出て、関数が必要なら諦めようかなと思って質問しました。
スレチだったならすみません。答えてくださってありがとうございました。
スレチだったならすみません。答えてくださってありがとうございました。
738デフォルトの名無しさん (ワッチョイ 7705-OS7W)
2019/03/12(火) 18:21:35.85ID:3xf7Y18W0 >>736
スマホで専ブラ使ってます。予測はつきましたが、過疎っていたのでそのスレで合っているのか疑心暗鬼でした。今はどのスレのことか分かっています。
スマホで専ブラ使ってます。予測はつきましたが、過疎っていたのでそのスレで合っているのか疑心暗鬼でした。今はどのスレのことか分かっています。
739デフォルトの名無しさん (ワッチョイ 1663-/kwh)
2019/03/12(火) 18:26:45.91ID:aH0w6D4n0 ここで聞いて良いよ
740デフォルトの名無しさん (スッップ Sd32-P8NU)
2019/03/12(火) 18:34:45.08ID:UkyVoLmHd >>724
これはifとforの練習問題以外の何者でもなさそうだ。便利な関数使って解いたりしたら先生が泣いちゃいそうw
これはifとforの練習問題以外の何者でもなさそうだ。便利な関数使って解いたりしたら先生が泣いちゃいそうw
741デフォルトの名無しさん (ワッチョイ 7705-OS7W)
2019/03/12(火) 18:41:24.28ID:3xf7Y18W0 >>739
ありがとうございます!このような問題です。
for文とif文を使って整数nを入力して、2つの1以上10以下の整数x,y(x>=y)の自乗の和がn(n=x^2+y^2)になるx,yとなる組み合わせを求める(実行例:n=45のときx=6,y=3)C言語のプログラムを作成せよ。そのような組み合わせがない時は、nothingと表示せよ。
ありがとうございます!このような問題です。
for文とif文を使って整数nを入力して、2つの1以上10以下の整数x,y(x>=y)の自乗の和がn(n=x^2+y^2)になるx,yとなる組み合わせを求める(実行例:n=45のときx=6,y=3)C言語のプログラムを作成せよ。そのような組み合わせがない時は、nothingと表示せよ。
742デフォルトの名無しさん (オッペケ Src7-Ly0m)
2019/03/12(火) 18:44:54.25ID:u0RxZCyHr 答えのプログラムが欲しいの?
743デフォルトの名無しさん (ワッチョイ 92da-Y0dl)
2019/03/12(火) 18:50:45.53ID:1jGqQ8ze0 候補絞り込みの最短手順を求めるような問題でも無さそうだし力技の総当たり探索で良いんじゃないの?
744デフォルトの名無しさん (ワッチョイ 7705-OS7W)
2019/03/12(火) 18:53:51.90ID:3xf7Y18W0 >>742
答えのプログラムが欲しいです。
答えのプログラムが欲しいです。
>>744
宿題スレに書いてここに書いた場所を報告すれば、問題を解くプログラムを私が書きましょう
宿題スレに書いてここに書いた場所を報告すれば、問題を解くプログラムを私が書きましょう
746デフォルトの名無しさん (ワッチョイ b252-1CkI)
2019/03/12(火) 19:25:13.04ID:i1gu3hXZ0 >>744
この程度のプラグラムを自力で解こうとする気が無いなら素直に落第しておけ
この程度のプラグラムを自力で解こうとする気が無いなら素直に落第しておけ
747デフォルトの名無しさん (ワッチョイ 7705-k7ao)
2019/03/12(火) 19:36:11.90ID:3xf7Y18W0 >>745
C/C++の宿題片付けます 170代目
https://mevius.5ch.net/test/read.cgi/tech/1456911928/
このスレに問題書き込みました。29番目のコメントです。
C/C++の宿題片付けます 170代目
https://mevius.5ch.net/test/read.cgi/tech/1456911928/
このスレに問題書き込みました。29番目のコメントです。
748デフォルトの名無しさん (ワッチョイ 168f-P8NU)
2019/03/12(火) 20:13:37.41ID:fue8lGKw0 なんかヤバイ奴で草
749デフォルトの名無しさん (ワッチョイ a701-QuMD)
2019/03/12(火) 20:37:17.45ID:OWFMR/J/0 ただの全探索じゃん…
750デフォルトの名無しさん (アウアウウー Sac3-hLQV)
2019/03/12(火) 20:55:37.42ID:M/w6PjEFa いいんじゃないの?恐らく数学的になんとかしようとするとコンピュータ使わずに解が出て終わってしまうだろうし。
751デフォルトの名無しさん (ワッチョイ 168f-P8NU)
2019/03/12(火) 21:33:45.13ID:fue8lGKw0 >>750
??
??
752デフォルトの名無しさん (ササクッテロ Spc7-OS7W)
2019/03/12(火) 21:37:28.98ID:foIxPF9Op もう取り繕う理由ないからタメ語で話すけど
簡単な問題に関してめっちゃレスしてしまってすまんな
明日のテスト頑張ってくるわ
説明してくれた人皆ありがとノシ
簡単な問題に関してめっちゃレスしてしまってすまんな
明日のテスト頑張ってくるわ
説明してくれた人皆ありがとノシ
753デフォルトの名無しさん (ワッチョイ c67c-/kwh)
2019/03/13(水) 10:38:00.71ID:qAReO6hg0754デフォルトの名無しさん (ササクッテロラ Spc7-OS7W)
2019/03/13(水) 15:02:14.09ID:NOmoz09Zp755デフォルトの名無しさん (スッップ Sd32-P8NU)
2019/03/13(水) 18:27:05.40ID:Gm1xMrEed >>754
テストに落ちたらどうなってしまうんや……
テストに落ちたらどうなってしまうんや……
756デフォルトの名無しさん (ワッチョイ a701-GQ8d)
2019/03/13(水) 21:09:52.65ID:STGkCaiX0 課題を出されましたが、全くわかりません
このプログラムを作っていただけませんか?
スレ違いなら誘導をお願い致します
@キーボードから任意の文字を入力します。
A先頭が数値の場合
・入力を数値に変換して、メモリーに格納します。
・格納されている全ての数値を降順(大きい方が先頭)に並び替えます。
B先頭が数値でなければ、現在入力されている数値を並び順の逆順で全て表示する。
尚、数値は100個以上格納できるものとします。
このプログラムを作っていただけませんか?
スレ違いなら誘導をお願い致します
@キーボードから任意の文字を入力します。
A先頭が数値の場合
・入力を数値に変換して、メモリーに格納します。
・格納されている全ての数値を降順(大きい方が先頭)に並び替えます。
B先頭が数値でなければ、現在入力されている数値を並び順の逆順で全て表示する。
尚、数値は100個以上格納できるものとします。
757デフォルトの名無しさん (アウアウウー Sac3-1CkI)
2019/03/13(水) 21:26:02.50ID:P84Y9tDKa >>756
少し遡れば宿題スレのリンクがある
少し遡れば宿題スレのリンクがある
758デフォルトの名無しさん (ワッチョイ a37b-47Me)
2019/03/14(木) 06:00:16.00ID:SGfhnH0M0760デフォルトの名無しさん (ワッチョイ 738f-kbMb)
2019/03/16(土) 19:25:45.05ID:QzqNYN9X0 >>758
ソースを何らかの方法で PNG なり JPEG なり GIF なり
ソースを何らかの方法で PNG なり JPEG なり GIF なり
761デフォルトの名無しさん (アウアウエー Sadf-kdx8)
2019/03/17(日) 00:34:59.62ID:dzL2D1Cha Cはじめましたよろしくです。これみてやってください
FILE *fp;
char *p;
char fname[100];
char str[500];
gets(fname);
fp = fopen(fname, "r");
p = fgets(str, 500, fp);
while(p != NULL){
printf("%s", str);
p = fgets(str, 500, fp);
}
とやって難なくファイル表示してくれましたが、これpはしょれんじゃね?と思ってこうしてみましたの
gets(fname);
fp = fopen(fname, "r");
p = fgets(str, 500, fp); とりあえず放置
while(str != NULL){ p→strに書き換え
printf("%s", str);
//p = fgets(str, 500, fp); コメ停止
fgets(str, 500, fp); こうしてみた
}
すると
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・っと無限に続いて
FILE *fp;
char *p;
char fname[100];
char str[500];
gets(fname);
fp = fopen(fname, "r");
p = fgets(str, 500, fp);
while(p != NULL){
printf("%s", str);
p = fgets(str, 500, fp);
}
とやって難なくファイル表示してくれましたが、これpはしょれんじゃね?と思ってこうしてみましたの
gets(fname);
fp = fopen(fname, "r");
p = fgets(str, 500, fp); とりあえず放置
while(str != NULL){ p→strに書き換え
printf("%s", str);
//p = fgets(str, 500, fp); コメ停止
fgets(str, 500, fp); こうしてみた
}
すると
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・っと無限に続いて
762デフォルトの名無しさん (アウアウエー Sadf-kdx8)
2019/03/17(日) 00:35:16.47ID:dzL2D1Cha なんで止まらないんでしょ?
763はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-kdx8)
2019/03/17(日) 00:37:54.05ID:aA4z/LNt0764デフォルトの名無しさん (アウアウエー Sadf-kdx8)
2019/03/17(日) 00:43:34.56ID:dzL2D1Cha >>763
もすこしだけおしえてください
fgetがfpに指定したというか登録したファイルから指定数読み込んで、それをpに渡して…
このときに文字終端ならpにNULLも渡ってそれでwhileの条件に合致して止まると思いまして ←ここまであってますか?
なら、pに渡さんでもfgetsが読みに行ったときにもう読む行ないならNULLも引っさげて帰ってくるからstrにNULLがはいってて
じゃーああいうふうに掛けばpいらねんじゃね?と思ったんですがなぜこれだとNULLはいってないんでしょ
もすこしだけおしえてください
fgetがfpに指定したというか登録したファイルから指定数読み込んで、それをpに渡して…
このときに文字終端ならpにNULLも渡ってそれでwhileの条件に合致して止まると思いまして ←ここまであってますか?
なら、pに渡さんでもfgetsが読みに行ったときにもう読む行ないならNULLも引っさげて帰ってくるからstrにNULLがはいってて
じゃーああいうふうに掛けばpいらねんじゃね?と思ったんですがなぜこれだとNULLはいってないんでしょ
765デフォルトの名無しさん (ワッチョイ cf63-kdx8)
2019/03/17(日) 00:48:28.87ID:hO+9vtK70 printf("%s", str);
memset(str, 0, sizeof(str));←これ入れてみ
fgets(str, 500, fp);
どうしてかは、自分で考える
memset(str, 0, sizeof(str));←これ入れてみ
fgets(str, 500, fp);
どうしてかは、自分で考える
766はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-kdx8)
2019/03/17(日) 00:50:56.68ID:aA4z/LNt0767デフォルトの名無しさん (ワッチョイ ffda-OCYI)
2019/03/17(日) 00:56:16.34ID:/bg4Vz3i0 配列名strは先頭要素のアドレス&str[0]と同じ
strの評価結果は常に同じアドレスを返す
配列が正常に確保されている限りNULLになることは無い
strの評価結果は常に同じアドレスを返す
配列が正常に確保されている限りNULLになることは無い
768デフォルトの名無しさん (アウアウエー Sadf-kdx8)
2019/03/17(日) 00:56:29.02ID:dzL2D1Cha769デフォルトの名無しさん (アウアウエー Sadf-kdx8)
2019/03/17(日) 00:57:37.07ID:dzL2D1Cha >>767
NULLがなにかよくわかってないことがよくわかりましたw いってきます
NULLがなにかよくわかってないことがよくわかりましたw いってきます
770デフォルトの名無しさん (ワッチョイ 035f-QpYv)
2019/03/17(日) 01:47:18.69ID:rgOA/kAB0 >>764
fgets()は成功したら配列の場所を返す(つまりp == str)けど
失敗した場合はNULLを返す(つまりp == NULL)
ここで問題なのは他の人が言ってる通り「引数にとった配列の場所は変わってない」こと
char str[500];
っていうのは(今回はファイルから文字を読み込むために)char型のデータ領域を500個確保するってことで、
わざわざ取った場所を変更したり勝手に消したりはしない
対してNULLはまぁ何もない場所のアドレスって考えでとりあえずはいいと思う
だから、strの領域の(内容は変わってるかもしれないけど)場所はfgets()の結果がNULLでも確保してあるだけだから変わらない
最初の(動いた方の)プログラムで、fgets()した後に
printf("p=%p, str=%p\n", p, str);
とかやってアドレス表示させて途中と最後比べてみたら感覚的に分かるかも
fgets()は成功したら配列の場所を返す(つまりp == str)けど
失敗した場合はNULLを返す(つまりp == NULL)
ここで問題なのは他の人が言ってる通り「引数にとった配列の場所は変わってない」こと
char str[500];
っていうのは(今回はファイルから文字を読み込むために)char型のデータ領域を500個確保するってことで、
わざわざ取った場所を変更したり勝手に消したりはしない
対してNULLはまぁ何もない場所のアドレスって考えでとりあえずはいいと思う
だから、strの領域の(内容は変わってるかもしれないけど)場所はfgets()の結果がNULLでも確保してあるだけだから変わらない
最初の(動いた方の)プログラムで、fgets()した後に
printf("p=%p, str=%p\n", p, str);
とかやってアドレス表示させて途中と最後比べてみたら感覚的に分かるかも
771デフォルトの名無しさん (ワッチョイ 2301-QTaE)
2019/03/17(日) 04:30:49.94ID:SA4RHMx10 fgets の戻りは ポインタである必要は無く、int (bool) でいいと思うんだ
printf("%p\n", fgets()) のように直接重ねても、ファイルエンドでぬるぽ踏むわけだし
printf("%p\n", fgets()) のように直接重ねても、ファイルエンドでぬるぽ踏むわけだし
772デフォルトの名無しさん (アウアウウー Sae7-WmpR)
2019/03/17(日) 05:46:27.76ID:57obmdS/a int返したらprintfに食わせられないじゃん
773デフォルトの名無しさん (ワッチョイ ff34-B/CD)
2019/03/17(日) 06:11:49.28ID:lbYyU/s40 そんなことしねえから大丈夫
774はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-kdx8)
2019/03/17(日) 15:32:50.89ID:aA4z/LNt0 暗黙の型変換で配列がポインタになるってのが諸悪の根源なんだよな。
まあそれでだいぶん書くのが楽という面もあるんだけど、
この手の思い違いが連発するのはやっぱりどこか良くない設計だったのかもなと
思わないでもない。
まあそれでだいぶん書くのが楽という面もあるんだけど、
この手の思い違いが連発するのはやっぱりどこか良くない設計だったのかもなと
思わないでもない。
775デフォルトの名無しさん (ワッチョイ ffda-B/CD)
2019/03/17(日) 16:10:49.52ID:/bg4Vz3i0 配列名や関数名はアドレスを指しているというだけであって暗黙の型変換とは無関係
776はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-kdx8)
2019/03/17(日) 16:16:25.40ID:aA4z/LNt0777デフォルトの名無しさん (ワッチョイ ffda-B/CD)
2019/03/17(日) 16:36:25.05ID:/bg4Vz3i0778はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-kdx8)
2019/03/17(日) 16:51:58.33ID:aA4z/LNt0 >>777
int[10] が int* 型に型変換されたり、 void(void) が void(*)(void) になったりするという暗黙の型変換の結果だね。
int[10] が int* 型に型変換されたり、 void(void) が void(*)(void) になったりするという暗黙の型変換の結果だね。
779デフォルトの名無しさん (ワッチョイ ffda-B/CD)
2019/03/17(日) 17:12:17.93ID:/bg4Vz3i0 >>778
配列Array[]の型はint[]型であるけど、配列名Arrayの型はint*型(値は&Array[0])
関数Func()の型はvoid(*)(void)ではあるけど、関数名Funcの型はvoid*型
暗黙の型変換など関係なくポインタに代入出来る
配列Array[]の型はint[]型であるけど、配列名Arrayの型はint*型(値は&Array[0])
関数Func()の型はvoid(*)(void)ではあるけど、関数名Funcの型はvoid*型
暗黙の型変換など関係なくポインタに代入出来る
780デフォルトの名無しさん (ワッチョイ a3f2-B/CD)
2019/03/17(日) 17:24:35.69ID:VrxWLsvb0 配列と配列名を別物としているようだけど、それなら配列と配列名を暗黙変換しているわけだろう。
781デフォルトの名無しさん (ワッチョイ ffda-B/CD)
2019/03/17(日) 17:32:23.78ID:/bg4Vz3i0 配列Array[]と配列名Arrayは別のオブジェクト
配列名Arrayは配列の先頭要素のアドレス&Array[0]と同一オブジェクトの糖衣構文
配列名Arrayは配列の先頭要素のアドレス&Array[0]と同一オブジェクトの糖衣構文
782はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-kdx8)
2019/03/17(日) 17:47:18.78ID:aA4z/LNt0783デフォルトの名無しさん (ワッチョイ 83ad-NLsJ)
2019/03/17(日) 18:28:05.39ID:mpr7j0a20 結局何が正解なんだ
784デフォルトの名無しさん (ワッチョイ 2301-QTaE)
2019/03/17(日) 18:33:42.80ID:SA4RHMx10 sizeof の時に区別していない/区別できないのなら 糖衣構文でも納得できるんだがね
785デフォルトの名無しさん (スププ Sd1f-QpYv)
2019/03/17(日) 20:04:24.76ID:lW9CTxpwd T型の配列は一部の例外を除き「配列の先頭の要素を指すT型へのポインタへと型変換される」(C11 6.3.2.1.3)
だから暗黙の型変換で間違いない
だから暗黙の型変換で間違いない
786デフォルトの名無しさん (ワッチョイ ff34-B/CD)
2019/03/17(日) 20:47:21.33ID:lbYyU/s40787はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-kdx8)
2019/03/18(月) 01:00:19.91ID:YfgH0B4l0 >>786
繰返しになるけど、暗黙の型変換で書くのが楽になってるのは承知してるんだってば。
ただ、初心者が (時にはベテランでも) 変な理解をしがちな理由はこれだろうな
っていう意味での根源は暗黙の型変換にあるっしょ。
繰返しになるけど、暗黙の型変換で書くのが楽になってるのは承知してるんだってば。
ただ、初心者が (時にはベテランでも) 変な理解をしがちな理由はこれだろうな
っていう意味での根源は暗黙の型変換にあるっしょ。
788デフォルトの名無しさん (アウアウエー Sadf-kdx8)
2019/03/18(月) 04:00:43.39ID:P9Yklj5Ga おじゃまします
printf("[%s][%d][%p]\n", str, str, &str);
こう表示させたとき%sと%pに出る値は意味わかるのですが(文字列とアドレス)
はわかるのですが%dに出る数字の羅列はなにになるんですか
printf("[%s][%d][%p]\n", str, str, &str);
こう表示させたとき%sと%pに出る値は意味わかるのですが(文字列とアドレス)
はわかるのですが%dに出る数字の羅列はなにになるんですか
789はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-kdx8)
2019/03/18(月) 04:05:51.06ID:YfgH0B4l0 >>788
str は char の配列ということでいい?
だとするとアドレス。
str が配列であれば str と &str はアドレス値として見れば同じになるはず。
型は違うけど。
(整数への変換で何が起こるかは言語仕様でははっきりした規定は無い
ので、表現が変わってしまうことな無いとは言えない。)
str は char の配列ということでいい?
だとするとアドレス。
str が配列であれば str と &str はアドレス値として見れば同じになるはず。
型は違うけど。
(整数への変換で何が起こるかは言語仕様でははっきりした規定は無い
ので、表現が変わってしまうことな無いとは言えない。)
790デフォルトの名無しさん (アウアウエー Sadf-kdx8)
2019/03/18(月) 04:51:21.12ID:P9Yklj5Ga791はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-kdx8)
2019/03/18(月) 06:31:42.89ID:YfgH0B4l0 >>790
表示が違うのは %p は16進表示になってるとかじゃない?
表示が違うのは %p は16進表示になってるとかじゃない?
792デフォルトの名無しさん (アウアウカー Sa47-cpdB)
2019/03/18(月) 06:49:00.10ID:lirXey68a 単に%dだからアドレスの10進表記になると思ってだけど、はっきり決まってはなかったんだ。
793デフォルトの名無しさん (ワッチョイ ff34-B/CD)
2019/03/18(月) 07:14:51.68ID:/H01vbo60794デフォルトの名無しさん (アウアウカー Sa47-cpdB)
2019/03/18(月) 07:38:07.69ID:lirXey68a まぁ、双方明示的に(個人の感想です)strとキャストすべきなんだろうな。
795デフォルトの名無しさん (アウアウウー Sae7-6Ib2)
2019/03/18(月) 14:12:42.17ID:1gtRswz3a ポインタに対してprintf()で%d指定した時ってアドレスがちゃんと出るって保証されてたっけ?
796デフォルトの名無しさん (ワッチョイ ffc5-1O1G)
2019/03/18(月) 14:15:34.40ID:BO4wFGSe0 voidのポインタの便利さに気づきました
こんな私に何かアドバイスはありますか?
こんな私に何かアドバイスはありますか?
797デフォルトの名無しさん (ワッチョイ ffa5-WhpE)
2019/03/18(月) 14:23:43.30ID:27d4/ixp0 次は汎用ポインタの不便さ面倒臭さに気付きましょう
798デフォルトの名無しさん (ワッチョイ 738f-kbMb)
2019/03/18(月) 14:23:54.47ID:mCQ8i9jz0 横質問で申し訳ない
NULL の実際の値
'\0' の実際の値
は実装依存ということで間違いない???
NULL の実際の値
'\0' の実際の値
は実装依存ということで間違いない???
799デフォルトの名無しさん (ワッチョイ 8f7c-kdx8)
2019/03/18(月) 14:29:25.93ID:xzOI+WOH0 >>798
はい、間違いはございません
はい、間違いはございません
800デフォルトの名無しさん (アウアウウー Sae7-WmpR)
2019/03/18(月) 14:46:34.54ID:O3z3BOLxa 'a' の実際の値は決まってるとでもいうのか
801はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-kdx8)
2019/03/18(月) 14:57:23.82ID:YfgH0B4l0 >>795
保証されていない。
というより、値がアドレスには違いないのだけど
その表現がどうなっているか未定義なので、
意味のある値なのかどうかはわからない。
(常識的にはデタラメな値ということもないだろうけど……)
整数とポインタの関係について確実に保証されているのは、
ポインタをポインタのサイズより大きい整数型に入れたなら、
元の型にキャストしなおすと変換前と等しいってことくらい。
保証されていない。
というより、値がアドレスには違いないのだけど
その表現がどうなっているか未定義なので、
意味のある値なのかどうかはわからない。
(常識的にはデタラメな値ということもないだろうけど……)
整数とポインタの関係について確実に保証されているのは、
ポインタをポインタのサイズより大きい整数型に入れたなら、
元の型にキャストしなおすと変換前と等しいってことくらい。
802デフォルトの名無しさん (ワッチョイ 738f-kbMb)
2019/03/18(月) 14:59:53.22ID:mCQ8i9jz0 >>799
即レス感謝です
即レス感謝です
803デフォルトの名無しさん (ワッチョイ 738f-kbMb)
2019/03/18(月) 15:01:51.19ID:mCQ8i9jz0 >>800
実装として、ASCIIとEBICDIC以外で「これは認識してないとダメ」なものがあれば御教示くださいませんか?
実装として、ASCIIとEBICDIC以外で「これは認識してないとダメ」なものがあれば御教示くださいませんか?
804デフォルトの名無しさん (アウアウウー Sae7-lDjF)
2019/03/18(月) 15:50:43.53ID:h9s8r5rIa 一部の文字が示す値の連続性の保証があったような
805はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-kdx8)
2019/03/18(月) 15:56:04.05ID:YfgH0B4l0 >>804
数字 ('0'〜'9') に対応する文字コードが連続する保証は有る。
数字 ('0'〜'9') に対応する文字コードが連続する保証は有る。
806デフォルトの名無しさん (ワッチョイ 8369-QTaE)
2019/03/18(月) 16:33:31.22ID:CWr9PpIQ0 '0' 〜 '9' で挟んで '0' で引き算するのは保障されてるので成立するけど
'a' 〜 'f' , 'A' 〜 'F' で挟んで - 'a' + 10 や - 'A' + 10 は保障外のコードになる と。
'a' 〜 'f' , 'A' 〜 'F' で挟んで - 'a' + 10 や - 'A' + 10 は保障外のコードになる と。
807デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/18(月) 17:09:05.92ID:yKiI4G/I0 >>801
未定義じゃねえ処理系定義だ
未定義に該当するためには何らかの禁止を破らねばならない
禁止を破っていないのに決まっていない事項は未規定
未規定のうち文書化されるのが処理系定義だ
先輩方が変な言葉遣いをするから
若いのが勘違いするんだよ
気をつけな
未定義じゃねえ処理系定義だ
未定義に該当するためには何らかの禁止を破らねばならない
禁止を破っていないのに決まっていない事項は未規定
未規定のうち文書化されるのが処理系定義だ
先輩方が変な言葉遣いをするから
若いのが勘違いするんだよ
気をつけな
808デフォルトの名無しさん (ワッチョイ 738f-kbMb)
2019/03/18(月) 17:42:10.10ID:mCQ8i9jz0809デフォルトの名無しさん (アウアウカー Sa47-WmpR)
2019/03/18(月) 17:56:16.31ID:1YRHAy75a810デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/18(月) 21:11:30.38ID:yKiI4G/I0 >>808
> 「処理系が必ず定義しなければならない」
それが処理系定義
たとえば sizeof(int) が返す値だ
> 「純粋に処理系依存なので、規格としては何も触れない」
これは未規定
たとえば printf("%d %d", getchar(), getchar()); の場合の左右の getchar の実行順序だ
わかってないんなら、ちゃんと規格票で確認しとけ
> 「処理系が必ず定義しなければならない」
それが処理系定義
たとえば sizeof(int) が返す値だ
> 「純粋に処理系依存なので、規格としては何も触れない」
これは未規定
たとえば printf("%d %d", getchar(), getchar()); の場合の左右の getchar の実行順序だ
わかってないんなら、ちゃんと規格票で確認しとけ
811デフォルトの名無しさん (ワッチョイ ff33-h1+v)
2019/03/18(月) 23:08:12.32ID:wuyTgyGr0 >>795,801 ポインタの表現形式とは関係なく、未定義の動作になります。
https://www.jpcert.or.jp/sc-rules/c-fio47-c.html
実際の処理系での挙動を説明しようとするとポインタの表現形式で説明が付く
ことが多いだろうとは思います。
https://www.jpcert.or.jp/sc-rules/c-fio47-c.html
実際の処理系での挙動を説明しようとするとポインタの表現形式で説明が付く
ことが多いだろうとは思います。
812デフォルトの名無しさん (ワッチョイ 035f-7k5p)
2019/03/18(月) 23:15:18.00ID:5t+N6Jn90 C11 7.21.6.1.9で「変換指定子が不正である場合の動作は未定義」ってあるね
処理系定義は%pの時のポインタの値の表現形式と間違えてないか
処理系定義は%pの時のポインタの値の表現形式と間違えてないか
813デフォルトの名無しさん (ワッチョイ ff33-h1+v)
2019/03/18(月) 23:23:41.88ID:wuyTgyGr0 >>810
規格で「何も」触れられていないのは未定義 (undefined) なのでは?
禁止を破るほか、規格に定めのないところの動作も含まれます。
規格で示される選択肢のうちのどれを処理系が選ぶかが定められておらず
処理系任せ(文書化も不要)なのが未規定 (unspecified) かと。
規格で「何も」触れられていないのは未定義 (undefined) なのでは?
禁止を破るほか、規格に定めのないところの動作も含まれます。
規格で示される選択肢のうちのどれを処理系が選ぶかが定められておらず
処理系任せ(文書化も不要)なのが未規定 (unspecified) かと。
814デフォルトの名無しさん (ブーイモ MMff-ouNb)
2019/03/19(火) 08:12:11.66ID:qtB10olYM 自分はc言語とc#(pcツール開発用途)使うけど、
c言語は仕様がコンパクトで、このスレのような議論があって面白いな。
c#はライブラリが充実してて凄く便利
c言語は仕様がコンパクトで、このスレのような議論があって面白いな。
c#はライブラリが充実してて凄く便利
815デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/19(火) 09:23:10.29ID:LKFNCpsT0816デフォルトの名無しさん (ワッチョイ ff33-h1+v)
2019/03/19(火) 10:26:28.12ID:gyYe55lf0 >>815
http://kikakurui.com/x3/X3010-2003-01.html#9
> この規格の制約以外の箇所で現れる…(し)なければならない又は…(し)てはならないという要求をプログラムが守っていない場合,その動作は未定義とする。
> この規格では,このほかに,用語 未定義の動作を使うことによるか又は動作の明示的な定義を与えないことによって未定義の動作を示すこともある。
> これらの三つの書き方は強調度において何ら変わりはなく,それらはすべて未定義の動作を規定する。
http://kikakurui.com/x3/X3010-2003-01.html#9
> この規格の制約以外の箇所で現れる…(し)なければならない又は…(し)てはならないという要求をプログラムが守っていない場合,その動作は未定義とする。
> この規格では,このほかに,用語 未定義の動作を使うことによるか又は動作の明示的な定義を与えないことによって未定義の動作を示すこともある。
> これらの三つの書き方は強調度において何ら変わりはなく,それらはすべて未定義の動作を規定する。
817デフォルトの名無しさん (ワッチョイ 93d2-mVPS)
2019/03/19(火) 11:35:26.58ID:71/TIYaC0 未定義な動作っていうのはプログラムが未定義な動作をするわけじゃなくて
コンパイラー製作者が決める動作が未定義だから好きなように動作を決めれるってことだぞ
コンパイラー製作者が決める動作が未定義だから好きなように動作を決めれるってことだぞ
818デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/19(火) 11:43:35.24ID:LKFNCpsT0 >>816
こちらの指摘を認めたんだな?
こちらの指摘を認めたんだな?
819デフォルトの名無しさん (ドコグロ MM47-jA9u)
2019/03/19(火) 12:40:50.73ID:/V+FXtnWM ID:LKFNCpsT0は言語仕様の前に日本語を勉強すべき
> 動作の明示的な定義を与えないことによって未定義の動作を示すこともある。
> 動作の明示的な定義を与えないことによって未定義の動作を示すこともある。
820デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/19(火) 13:28:08.89ID:LKFNCpsT0821デフォルトの名無しさん (ワッチョイ 738f-kbMb)
2019/03/19(火) 17:11:50.12ID:qa7ql0+P0 >>816
> 未定義の動作を示すこともある
https://www.jpcert.or.jp/sc-rules/c-msc15-c.html
http://www.c-lang.org/detail/undefined_behavior.html
「この辺読んでおけ」ってかんじですか
> 未定義の動作を示すこともある
https://www.jpcert.or.jp/sc-rules/c-msc15-c.html
http://www.c-lang.org/detail/undefined_behavior.html
「この辺読んでおけ」ってかんじですか
822デフォルトの名無しさん (スフッ Sd1f-QpYv)
2019/03/19(火) 17:56:13.66ID:CsLrwzwwd >>815
JIS X 3010:2003 3.4.3
未規定の動作(unspecified behavior) この規格が,二つ以上の可能性を提供し,個々の場合にどの可能性を選択するかに関して何ら要求を課さない動作。
C11 3.4.4
未規定動作
不特定の値の使用、あるいは当国際標準が提示する2つかそれ以上の可能性があり、いずれを選ぶかに関してそれ以上の要求を課さないその他の動作。
一応選択肢は与えてるように見えるな
JIS X 3010:2003 3.4.3
未規定の動作(unspecified behavior) この規格が,二つ以上の可能性を提供し,個々の場合にどの可能性を選択するかに関して何ら要求を課さない動作。
C11 3.4.4
未規定動作
不特定の値の使用、あるいは当国際標準が提示する2つかそれ以上の可能性があり、いずれを選ぶかに関してそれ以上の要求を課さないその他の動作。
一応選択肢は与えてるように見えるな
823デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/19(火) 18:02:59.01ID:LKFNCpsT0 「異常なプログラム」、「正しくないプログラム」、「正しくないデータ」
↑
このへんのキーワードが、なぜ「未定義の動作」という用語をわざわざ作っているのかの存在意義だ
他の「処理系定義の動作」や「未規定の動作」と見比べてみな
「未定義」だけ異質な点はただ1つ
↑
このへんのキーワードが、なぜ「未定義の動作」という用語をわざわざ作っているのかの存在意義だ
他の「処理系定義の動作」や「未規定の動作」と見比べてみな
「未定義」だけ異質な点はただ1つ
824デフォルトの名無しさん (ドコグロ MM47-jA9u)
2019/03/19(火) 19:53:17.00ID:/V+FXtnWM >>820
あほか、そこに「正しくないプログラム構成要素」って書いてあるだろ
規格には正しいプログラムの定義は書いてある
書いてないことは全て正しくないプログラムだよ
そもそも全ての未定義を定義できるわけないことぐらいはアホでもわかるだろw
あほか、そこに「正しくないプログラム構成要素」って書いてあるだろ
規格には正しいプログラムの定義は書いてある
書いてないことは全て正しくないプログラムだよ
そもそも全ての未定義を定義できるわけないことぐらいはアホでもわかるだろw
825デフォルトの名無しさん (ワッチョイ b302-h1+v)
2019/03/19(火) 20:49:49.43ID:M/rPqWkP0 CとC++のことで少しはまったことがあったので質問です。
はまった部分を単純化して例を挙げます。
1.単純化した例
FuncC.c
#include <stdio.h>
void Func(void) { puts("FuncC"); }
FuncCpp.cpp
#include <stdio.h>
void Func(void) { puts("FuncCpp"); }
main.c
void Func(void);
int main(void) { Func(); return 0; }
上記3つのファイルを gcc *.c *.cpp でコンパイルリンクするとFuncC.cのFuncが呼ばれます。
main.cをmain.cppに名前を変更して同じことをするとFuncCpp.cppのFuncが呼ばれます。
clでも試しましたが同じ結果です。
2.はまったこと
拡張子によって呼ばれる関数が違うことに気づかず延々と的外れなことをやっていた。
3.知りたいこと
1の結果がなぜそうなるのかちゃんとは分かっていません。
なぜそうなるのか分かるサイト等あれば教えてもらえませんか?
はまった部分を単純化して例を挙げます。
1.単純化した例
FuncC.c
#include <stdio.h>
void Func(void) { puts("FuncC"); }
FuncCpp.cpp
#include <stdio.h>
void Func(void) { puts("FuncCpp"); }
main.c
void Func(void);
int main(void) { Func(); return 0; }
上記3つのファイルを gcc *.c *.cpp でコンパイルリンクするとFuncC.cのFuncが呼ばれます。
main.cをmain.cppに名前を変更して同じことをするとFuncCpp.cppのFuncが呼ばれます。
clでも試しましたが同じ結果です。
2.はまったこと
拡張子によって呼ばれる関数が違うことに気づかず延々と的外れなことをやっていた。
3.知りたいこと
1の結果がなぜそうなるのかちゃんとは分かっていません。
なぜそうなるのか分かるサイト等あれば教えてもらえませんか?
826デフォルトの名無しさん (アウアウウー Sae7-6Ib2)
2019/03/19(火) 20:58:40.16ID:BI7+7Q7/a >>825
C++ は extern "C" {} のブロック内にC言語書かないと駄目なんじゃなかったっけ?
で、C++って同じ関数名で引数の違う関数作れるよね。だからCと見た目そっくりでも作られるコードが少し違うんじゃないの?
C++ は extern "C" {} のブロック内にC言語書かないと駄目なんじゃなかったっけ?
で、C++って同じ関数名で引数の違う関数作れるよね。だからCと見た目そっくりでも作られるコードが少し違うんじゃないの?
827デフォルトの名無しさん (ワッチョイ 2301-QTaE)
2019/03/19(火) 21:04:51.38ID:Dro8a+Ew0 Cは関数名がそのままシンボル名になるけど
C++のほうは関数名に引数の型情報が付加されたmanglingされたシンボル名となるので
リンカーでリンケージする際に区別してる
C++ から C 関数を呼ぶには 明示的に extern "C" と宣言されてないとその機構を突破できない
んじゃなかったかな
C++のほうは関数名に引数の型情報が付加されたmanglingされたシンボル名となるので
リンカーでリンケージする際に区別してる
C++ から C 関数を呼ぶには 明示的に extern "C" と宣言されてないとその機構を突破できない
んじゃなかったかな
>>825
c++ から c の関数を呼ぶのなら extern "C"
c++ から c の関数を呼ぶのなら extern "C"
829デフォルトの名無しさん (アウアウウー Sae7-6Ib2)
2019/03/19(火) 21:14:21.98ID:BI7+7Q7/a おお。多分そうだ。
あとはもっと詳しい人に任せた。
あとはもっと詳しい人に任せた。
途中で投げてしまった
私がはまったのは、win32api で、 ::RegisterClass() にて登録する WindowProc を extern "C" しなかったために、凄く困った記憶があります
私がはまったのは、win32api で、 ::RegisterClass() にて登録する WindowProc を extern "C" しなかったために、凄く困った記憶があります
831デフォルトの名無しさん (ワッチョイ ff7c-NxE7)
2019/03/19(火) 21:45:25.26ID:zmaQJWrD0 >>825
main()からcallされるasm用関数名が違うのでは
FuncC.c func() ---> funcC()
FuncCpp.cpp func() --> _Z4Funcv()
main.c call func() ---> call func()
main.cpp : call func() --> call _Z4Funcv()
main()からcallされるasm用関数名が違うのでは
FuncC.c func() ---> funcC()
FuncCpp.cpp func() --> _Z4Funcv()
main.c call func() ---> call func()
main.cpp : call func() --> call _Z4Funcv()
832デフォルトの名無しさん (アウアウウー Sae7-WmpR)
2019/03/19(火) 22:56:54.72ID:ieOLeRQla まんぐり
833デフォルトの名無しさん (ワッチョイ 6f02-B/CD)
2019/03/19(火) 23:56:04.61ID:ni3gZ2OF0834デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/20(水) 05:59:53.51ID:Jx7dUCON0 >>824
規格では正しくないプログラムをill-formedという
つまり正しくないプログラムも記載されているということだ
別に規格に限ったことではない
あるものが何であって何でないという境界を明確化するのは
ごく当たり前のものの書き方だ
規格では正しくないプログラムをill-formedという
つまり正しくないプログラムも記載されているということだ
別に規格に限ったことではない
あるものが何であって何でないという境界を明確化するのは
ごく当たり前のものの書き方だ
835デフォルトの名無しさん (ドコグロ MMdf-jA9u)
2019/03/20(水) 06:44:57.57ID:nNN3jHgVM >>834
> あるものが何であって何でないという境界を明確化するのは
すでに明確だろ?
「正しいプログラムでないプログラム」は「正しくないプログラム」
正しいプログラムの定義は書いてあるから境界はすでに明確だよ
ill-formedとかの名前がどうのこうのは関係ない
> あるものが何であって何でないという境界を明確化するのは
すでに明確だろ?
「正しいプログラムでないプログラム」は「正しくないプログラム」
正しいプログラムの定義は書いてあるから境界はすでに明確だよ
ill-formedとかの名前がどうのこうのは関係ない
836デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/20(水) 06:54:48.64ID:Jx7dUCON0 >>835
もうやめろ見苦しいから
もうやめろ見苦しいから
837デフォルトの名無しさん (ドコグロ MMdf-jA9u)
2019/03/20(水) 07:09:56.04ID:nNN3jHgVM838デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/20(水) 07:25:49.13ID:Jx7dUCON0 どっちが見苦しいか他の連中に聞いてみな
839デフォルトの名無しさん (ワッチョイ a37b-47Me)
2019/03/20(水) 08:12:13.89ID:SCVZEQpp0 「未定義」と「不定」については Phinloda さんの↓も分かりやすいね。
少々古いのが難だけど、内容は今でも正しいと思う。
初級C言語Q&A(7)
ttp://www.st.rim.or.jp/~phinloda/cqa/cqa7.html
ところで、「不定の動作」であるが「未定義ではない」、
しかも「不定であることの影響をユーザが見ることができる」
コードの例って何かあるだろうか。
ちょいと考えてみたけど、不定の影響を見るために何かすると
そのせいで未定義の領域に突入しちゃうんだよ。
少々古いのが難だけど、内容は今でも正しいと思う。
初級C言語Q&A(7)
ttp://www.st.rim.or.jp/~phinloda/cqa/cqa7.html
ところで、「不定の動作」であるが「未定義ではない」、
しかも「不定であることの影響をユーザが見ることができる」
コードの例って何かあるだろうか。
ちょいと考えてみたけど、不定の影響を見るために何かすると
そのせいで未定義の領域に突入しちゃうんだよ。
840デフォルトの名無しさん (ドコグロ MMdf-jA9u)
2019/03/20(水) 08:12:56.46ID:nNN3jHgVM842デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/20(水) 09:38:01.32ID:Jx7dUCON0843デフォルトの名無しさん (ドコグロ MMdf-jA9u)
2019/03/20(水) 10:13:53.38ID:nNN3jHgVM844デフォルトの名無しさん (ドコグロ MMdf-jA9u)
2019/03/20(水) 10:14:13.87ID:nNN3jHgVM >>842
はいはい、一人で吠えてろよw
はいはい、一人で吠えてろよw
845デフォルトの名無しさん (ワッチョイ 93d2-mVPS)
2019/03/20(水) 10:40:40.56ID:3Av4Lhjq0846デフォルトの名無しさん (ワッチョイ 8f7c-kdx8)
2019/03/20(水) 10:45:39.91ID:L8bJW9Z40 未定義たぁ不定野郎だ
847デフォルトの名無しさん (ドコグロ MMdf-jA9u)
2019/03/20(水) 12:24:13.19ID:nNN3jHgVM >>845
そういう話をしたいならまずは君の言う「間違い」とやらをきちんと定義してくれ
そういう話をしたいならまずは君の言う「間違い」とやらをきちんと定義してくれ
848デフォルトの名無しさん (ワッチョイ 93d2-mVPS)
2019/03/20(水) 12:34:48.75ID:3Av4Lhjq0 そもそも間違いを定義したくないから未定義にしたんだから定義できるわけないよな
849デフォルトの名無しさん (アウアウウー Sae7-6Ib2)
2019/03/20(水) 12:48:55.48ID:OxEz5Koua [翻訳]あなたがプログラミングに向いていない10のサイン - Qiita
https://qiita.com/hareku/items/4bfc48e23e83e0d300f3
1 好奇心の欠如
2 自律性と機知の欠如
3 問題に直面しても粘り強さが無い
4 問題解決に成功した気持ちはない
5 学習と理解に焦る
6 思考に飽きたり疲れたりする
7 自分のことを考えられない
8 堅く、狭く、そして無秩序な考え
9 複数の答えの間の「良い」と「悪い」の連続性に気付かず、「正しい」答えを望んでいる
10 細部に注意を払っていない
https://qiita.com/hareku/items/4bfc48e23e83e0d300f3
1 好奇心の欠如
2 自律性と機知の欠如
3 問題に直面しても粘り強さが無い
4 問題解決に成功した気持ちはない
5 学習と理解に焦る
6 思考に飽きたり疲れたりする
7 自分のことを考えられない
8 堅く、狭く、そして無秩序な考え
9 複数の答えの間の「良い」と「悪い」の連続性に気付かず、「正しい」答えを望んでいる
10 細部に注意を払っていない
850デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/20(水) 15:33:42.99ID:Jx7dUCON0851デフォルトの名無しさん (ワッチョイ 93d2-mVPS)
2019/03/20(水) 15:42:05.78ID:3Av4Lhjq0852デフォルトの名無しさん (ワッチョイ 23dc-B/CD)
2019/03/20(水) 15:53:53.83ID:knvp6QUa0 ワロタw
853デフォルトの名無しさん (アークセー Sx07-kI3O)
2019/03/20(水) 15:57:42.67ID:+9jdpzuGx854デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/20(水) 16:28:25.34ID:Jx7dUCON0 ブーメランぶっ刺さってやんのwww
855デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/20(水) 16:36:56.04ID:Jx7dUCON0 日本語を勉強すべきだの、あほかだのと、無礼な態度は若気の至りと
こちらは目を瞑って色々と箇条番号やらキーワードやら出してやってたが
そろそろ見限る頃だな
こちらは目を瞑って色々と箇条番号やらキーワードやら出してやってたが
そろそろ見限る頃だな
856デフォルトの名無しさん (ワッチョイ cf63-kdx8)
2019/03/20(水) 16:44:53.17ID:fwuhbGCo0 暇でないなら、直ちに見限るべき
857デフォルトの名無しさん (ワッチョイ a37b-47Me)
2019/03/20(水) 17:24:29.94ID:SCVZEQpp0 >>841 >>843 (少々長くなった、読みにくくてすまぬ)
2つの関数があって、それらを「同時に」使う式で評価順が不定、
しかも未定義ではない、というのは分かるんだ。
int foo(void) {return 1;}
int bar(void) {return 2;}
func(foo(), bar()); // 関数引数の foo(), bar() どちらが先に呼ばれる?
int a = foo() + bar(); // 式中の foo(), bar() どちらが先に呼ばれる?
・どちらが先に呼ばれても同じ結果が得られる(後者では a の値は 3 になる)
・どちらが先に呼ばれたかをユーザが知ることは不可能
ところが、呼ばれた瞬間を捕まえてやろうと、関数に仕掛けを施すと…
int foo(void) {printf("foo()\n"); return 1;}
int bar(void) {printf("bar()\n"); return 2;}
「二つの副作用完了点の間に、オブジェクトの値を2回以上変更」という、
未定義の動作になっちゃうんだよ(俺はここで勘違いをしてるのだろうか?)。
printf() の内部状態もオブジェクトだろうからね。出力バッファとか。
・どちらが先に呼ばれるか表示される、おそらく結果は同じ(a == 3)だろう
・しかし、このプログラムには未定義の動作が含まれている
実際問題としては printf() を差し込んでも動作が変わらないように
うまくライブラリが作られてると思うけどね。
この投稿の趣旨は、「不定の動作であっても、結果を使うだけなら
プログラムとして正しい。しかし、不定の動作の内実を探ろうとすると、
その活動によって未定義動作を含んだプログラムになってしまう」っていう
不確定性原理みたいな何かが規格に仕込まれてるんじゃないか、という疑い。
(別に陰謀論をブチ上げようって意図はないので安心してくれ)
2つの関数があって、それらを「同時に」使う式で評価順が不定、
しかも未定義ではない、というのは分かるんだ。
int foo(void) {return 1;}
int bar(void) {return 2;}
func(foo(), bar()); // 関数引数の foo(), bar() どちらが先に呼ばれる?
int a = foo() + bar(); // 式中の foo(), bar() どちらが先に呼ばれる?
・どちらが先に呼ばれても同じ結果が得られる(後者では a の値は 3 になる)
・どちらが先に呼ばれたかをユーザが知ることは不可能
ところが、呼ばれた瞬間を捕まえてやろうと、関数に仕掛けを施すと…
int foo(void) {printf("foo()\n"); return 1;}
int bar(void) {printf("bar()\n"); return 2;}
「二つの副作用完了点の間に、オブジェクトの値を2回以上変更」という、
未定義の動作になっちゃうんだよ(俺はここで勘違いをしてるのだろうか?)。
printf() の内部状態もオブジェクトだろうからね。出力バッファとか。
・どちらが先に呼ばれるか表示される、おそらく結果は同じ(a == 3)だろう
・しかし、このプログラムには未定義の動作が含まれている
実際問題としては printf() を差し込んでも動作が変わらないように
うまくライブラリが作られてると思うけどね。
この投稿の趣旨は、「不定の動作であっても、結果を使うだけなら
プログラムとして正しい。しかし、不定の動作の内実を探ろうとすると、
その活動によって未定義動作を含んだプログラムになってしまう」っていう
不確定性原理みたいな何かが規格に仕込まれてるんじゃないか、という疑い。
(別に陰謀論をブチ上げようって意図はないので安心してくれ)
858デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/20(水) 17:44:50.88ID:Jx7dUCON0 >>857
そのコードが未定義かどうかは達成しようとしている目的による
たとえば、こういう場合
int x = 0;
int foo(void) { return ++x; }
int bar(void) { return ++x; }
int main(void)
{
int y = foo() - bar();
assert(y == -1);
}
fooとbarの実行順序に依存すると
実行順序は未規定だが、未規定に依存することは禁止で、
その禁止を破ったせいでmainの動作が未定義となる
これに対して、
int foo(void) {return 1;}
int bar(void) {return 2;}
int main(void)
{
int y = foo() - bar();
assert(y == -1);
}
この例では未規定の動作を含むが
その未規定がどう転んでも影響がない、
つまり依存していないので未定義の動作とはならない
そのコードが未定義かどうかは達成しようとしている目的による
たとえば、こういう場合
int x = 0;
int foo(void) { return ++x; }
int bar(void) { return ++x; }
int main(void)
{
int y = foo() - bar();
assert(y == -1);
}
fooとbarの実行順序に依存すると
実行順序は未規定だが、未規定に依存することは禁止で、
その禁止を破ったせいでmainの動作が未定義となる
これに対して、
int foo(void) {return 1;}
int bar(void) {return 2;}
int main(void)
{
int y = foo() - bar();
assert(y == -1);
}
この例では未規定の動作を含むが
その未規定がどう転んでも影響がない、
つまり依存していないので未定義の動作とはならない
859デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/20(水) 17:46:07.38ID:Jx7dUCON0 というわけで、printfで実行順序を見てやろうという目的なら
どちらが先でも、その目的が達成できるので未定義の動作ではない
どちらが先でも、その目的が達成できるので未定義の動作ではない
860デフォルトの名無しさん (ワッチョイ 8369-QTaE)
2019/03/20(水) 17:52:06.04ID:11QE5ZAQ0 >>857
printf(..., printf(), printf()); こういうのとは違って
仕込んだ printf() の完了点はあくまで文末の; であって
printf() の内部状態変遷による未定義は踏まずに済むような気がする
printf(..., printf(), printf()); こういうのとは違って
仕込んだ printf() の完了点はあくまで文末の; であって
printf() の内部状態変遷による未定義は踏まずに済むような気がする
861はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-kdx8)
2019/03/20(水) 18:12:44.03ID:K9L8gFp50862デフォルトの名無しさん (スフッ Sd1f-QpYv)
2019/03/20(水) 18:13:55.67ID:xQ4G2GlCd863デフォルトの名無しさん (スッップ Sd1f-wbaK)
2019/03/20(水) 18:18:36.19ID:fE2Kl8w7d 冷静な議論ならともかく、レスバ状態になると各々有利な立場になろうとしてだんだんと話が逸れてくんだよな。
864デフォルトの名無しさん (ワッチョイ 738f-kbMb)
2019/03/20(水) 18:27:17.55ID:Or7antuS0 「レスバ状態」というのは「レスバトル状態」の意味ということでよろしいか
20世紀の「レスって何」を思い出すが…
20世紀の「レスって何」を思い出すが…
865デフォルトの名無しさん (スッップ Sd1f-wbaK)
2019/03/20(水) 18:30:12.38ID:fE2Kl8w7d >>864
yes
yes
866デフォルトの名無しさん (ドコグロ MMdf-jA9u)
2019/03/20(水) 18:35:51.85ID:nNN3jHgVM >>857
2回以上変更しなきゃいいんなら
int i=0;
int a[2]={0,0};
int foo(void){i=1; return 0;}
int bar(void){a[i]=1; return 0;}
でいいんじゃね?
a[0]=0; a[1]=1; ならfoo() ⇒ bar()
a[0]=1; a[1]=0; ならbar() ⇒ foo()
の順
2回以上変更しなきゃいいんなら
int i=0;
int a[2]={0,0};
int foo(void){i=1; return 0;}
int bar(void){a[i]=1; return 0;}
でいいんじゃね?
a[0]=0; a[1]=1; ならfoo() ⇒ bar()
a[0]=1; a[1]=0; ならbar() ⇒ foo()
の順
867デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/20(水) 19:15:28.64ID:Jx7dUCON0868857 == 839 (ワッチョイ a37b-47Me)
2019/03/20(水) 19:18:49.33ID:SCVZEQpp0869デフォルトの名無しさん (ブーイモ MMe7-ouNb)
2019/03/20(水) 19:22:36.34ID:TUtYbyGsM >>867
端末になにか表示されている、ファイルに文字が追記されている、というのが「状態」だよ。
端末になにか表示されている、ファイルに文字が追記されている、というのが「状態」だよ。
870デフォルトの名無しさん (ドコグロ MMdf-jA9u)
2019/03/20(水) 19:25:59.48ID:nNN3jHgVM871デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/20(水) 19:39:28.59ID:Jx7dUCON0 >>869
つまりstdioさらにはデバドラがRENTかREUSかって問題ということで
じゃあ別プロセスでprintfを使われたら未定義動作ならHello worldすらill-formedって話だな
つまりstdioさらにはデバドラがRENTかREUSかって問題ということで
じゃあ別プロセスでprintfを使われたら未定義動作ならHello worldすらill-formedって話だな
872857 == 839 (ワッチョイ a37b-47Me)
2019/03/20(水) 21:01:55.22ID:SCVZEQpp0 >>866 の案も未定義な感じ。
EXP30-C. 副作用が発生する式の評価順序に依存しない
ttps://www.jpcert.or.jp/sc-rules/c-exp30-c.html
本文冒頭の引用部 (ISO/IEC 9899:2011 セクション 6.5 らしい) より再引用
> スカラオブジェクトへの副作用が、このオブジェクトへの別の副作用、
> または、このオブジェクトの値を使った演算、のいずれかに対して
> 順序が規定されていない場合、未定義の動作となる。
foo() の i=1; が「スカラオブジェクト i への副作用(代入)」
bar() の a[i]=1; が「このオブジェクト i の値を使った演算(配列の添字)」
に該当するかと。
ちなみに前述の Phinloda さんのページだと【未定義の例】にある
二つの副作用完了点の間に、オブジェクトの値を2回以上変更している場合、
又は変更した後で新しい値を得ること以外の目的でそのオブジェクトを
アクセスしている場合。
の部分と思われるが、ちょいと分かりにくいね。
…いや、自分で紹介しといて、その言い草はないだろ、と我ながら思うけど。
EXP30-C. 副作用が発生する式の評価順序に依存しない
ttps://www.jpcert.or.jp/sc-rules/c-exp30-c.html
本文冒頭の引用部 (ISO/IEC 9899:2011 セクション 6.5 らしい) より再引用
> スカラオブジェクトへの副作用が、このオブジェクトへの別の副作用、
> または、このオブジェクトの値を使った演算、のいずれかに対して
> 順序が規定されていない場合、未定義の動作となる。
foo() の i=1; が「スカラオブジェクト i への副作用(代入)」
bar() の a[i]=1; が「このオブジェクト i の値を使った演算(配列の添字)」
に該当するかと。
ちなみに前述の Phinloda さんのページだと【未定義の例】にある
二つの副作用完了点の間に、オブジェクトの値を2回以上変更している場合、
又は変更した後で新しい値を得ること以外の目的でそのオブジェクトを
アクセスしている場合。
の部分と思われるが、ちょいと分かりにくいね。
…いや、自分で紹介しといて、その言い草はないだろ、と我ながら思うけど。
873857 == 839 (ワッチョイ a37b-47Me)
2019/03/20(水) 21:33:10.02ID:SCVZEQpp0 >>867 返答が前後して失礼。
printf() が持つ(かもしれない)状態ってのは、例えば
出力バッファ(fflush() で強制的に吐き出させるアレ)の
使用量を管理するカウンタかポインタか、そのあたりを考えてた。
もちろん stdout のバッファリングを禁止すれば、この場合に
printf() を安全に使えると考えてるわけでもないのだけど。
むしろ「不定の評価順序を調べるのに printf() を使えるなら、もっと簡単で
末端プログラマに読めるソースコードで実現できるんじゃないか」って感じ。
ライブラリ関数だと、中で実際に何をやってるか見えないからね。
>>849 の 3, 6 あたりに該当してきたので、本日はここまで。
…というか「バーナム効果」って奴じゃないの?
printf() が持つ(かもしれない)状態ってのは、例えば
出力バッファ(fflush() で強制的に吐き出させるアレ)の
使用量を管理するカウンタかポインタか、そのあたりを考えてた。
もちろん stdout のバッファリングを禁止すれば、この場合に
printf() を安全に使えると考えてるわけでもないのだけど。
むしろ「不定の評価順序を調べるのに printf() を使えるなら、もっと簡単で
末端プログラマに読めるソースコードで実現できるんじゃないか」って感じ。
ライブラリ関数だと、中で実際に何をやってるか見えないからね。
>>849 の 3, 6 あたりに該当してきたので、本日はここまで。
…というか「バーナム効果」って奴じゃないの?
874デフォルトの名無しさん (ワッチョイ ff01-jA9u)
2019/03/20(水) 22:01:51.83ID:XMH8sO2j0 >>872
> bar() の a[i]=1; が「このオブジェクト i の値を使った演算(配列の添字)」
> に該当するかと。
なるほど
よくよく考えたらそのリンク先の未規定の例を参考にして
int i=0;
int foo(void){i=1; return 0;}
int bar(void){i=2; return 0;}
でいいと思う
> bar() の a[i]=1; が「このオブジェクト i の値を使った演算(配列の添字)」
> に該当するかと。
なるほど
よくよく考えたらそのリンク先の未規定の例を参考にして
int i=0;
int foo(void){i=1; return 0;}
int bar(void){i=2; return 0;}
でいいと思う
875KAC (ワッチョイ 6f68-YrE5)
2019/03/20(水) 22:13:24.28ID:47yan6gC0 なにやら話がややこしい方向に行ってるけど、
そもそも関数の呼び出しは副作用完了点だぞ?
そもそも関数の呼び出しは副作用完了点だぞ?
876デフォルトの名無しさん (アウアウエー Sac2-v7M6)
2019/03/21(木) 10:46:08.11ID:Jl2vA9O/a C言語初心者です。
やっとポインタの学習にさしかかったところです。
C言語におけるポインタという概念と、
メモリの間接アドレス指定とは似ていると思ったのですが、
この感覚は間違っていますか?
やっとポインタの学習にさしかかったところです。
C言語におけるポインタという概念と、
メモリの間接アドレス指定とは似ていると思ったのですが、
この感覚は間違っていますか?
877デフォルトの名無しさん (ワッチョイ 4aa5-1NWo)
2019/03/21(木) 10:57:18.81ID:BSODtxQx0 間違ってないです
>>876
いいセンスです
いいセンスです
879デフォルトの名無しさん (ワッチョイ de63-0zLl)
2019/03/21(木) 12:35:12.10ID:QKEEZEuZ0 ポインタの理解の前にメモリ間接アドレス指定をご存じな人ってすごいw
880デフォルトの名無しさん (ワッチョイ 4e7c-0zLl)
2019/03/21(木) 12:42:31.97ID:A52ypKFV0881デフォルトの名無しさん (スフッ Sdea-aUKp)
2019/03/21(木) 12:56:03.12ID:0TbsGGEWd 今どきその順番で始める初学者がどれだけいるのかね
882876 (アウアウエー Sac2-v7M6)
2019/03/21(木) 13:15:33.98ID:y6QadYkWa883デフォルトの名無しさん (アウアウカー Sacb-/mZx)
2019/03/21(木) 14:04:09.43ID:u3ljjJr7a まだCASLとかあんの?
884デフォルトの名無しさん (ワッチョイ 5f8f-VfNx)
2019/03/21(木) 16:01:46.89ID:hWT+U/v40885デフォルトの名無しさん (アウアウエー Sac2-0zLl)
2019/03/23(土) 02:49:51.66ID:OxlPANCja セミコロン2つ並ぶのってどういう意味でしょ?最初は誤植かとおもいましたが
for(i = n;;){ ←ここ
if(strcmp(hogehogehogehogehoge
for(i = n;;){ ←ここ
if(strcmp(hogehogehogehogehoge
886デフォルトの名無しさん (アウアウウー Sa2f-/mZx)
2019/03/23(土) 03:00:16.33ID:lRnozO4Da for のかっこの中は二個あるじゃん、いつも
887デフォルトの名無しさん (ワッチョイ de8f-VfNx)
2019/03/23(土) 03:14:04.86ID:0Wp5e8jo0 >>885 で for ループを使う必然性って何だろう
while でも良いように見える
while でも良いように見える
889デフォルトの名無しさん (ワッチョイ 0b7b-v3gc)
2019/03/23(土) 06:17:45.22ID:jegHMgvE0 確かに for (i = n;;) /* 初期化あり, 継続条件なし, 更新なし */ よりは
i = n; // 初期化
for (;;) // 無限ループ, 終了判定はループ内
の方が for の使い方では見慣れた書き方だよな。
というか for (i = n;;) を見せられたら、いったん立ち止まって
頭の中で2行分けに翻訳して理解すると思うわ。
i = n; // 初期化
for (;;) // 無限ループ, 終了判定はループ内
の方が for の使い方では見慣れた書き方だよな。
というか for (i = n;;) を見せられたら、いったん立ち止まって
頭の中で2行分けに翻訳して理解すると思うわ。
890デフォルトの名無しさん (ワッチョイ 07f5-rXtv)
2019/03/23(土) 06:25:51.88ID:2BzPzaMr0 while(1) に難癖つけてくるコンパイラって具体的に何だ?
891デフォルトの名無しさん (ワッチョイ dbab-aIip)
2019/03/23(土) 06:42:04.57ID:WDi4jE890 HPUXだった気がす
892デフォルトの名無しさん (ワッチョイ de8f-VfNx)
2019/03/23(土) 07:22:12.89ID:0Wp5e8jo0 https://www.sejuku.net/blog/25197#continue
で
if(i + 1 < 3) {
と書かれていて i < 2 でないのは何故でしょうか
先進的なコンパイラだと自動的に最適化されるものなのでしょうか
で
if(i + 1 < 3) {
と書かれていて i < 2 でないのは何故でしょうか
先進的なコンパイラだと自動的に最適化されるものなのでしょうか
893デフォルトの名無しさん (ワッチョイ b301-rXtv)
2019/03/23(土) 07:38:42.49ID:lQ0YIRmF0 while (1 == 1)
894デフォルトの名無しさん (ワッチョイ 0b7b-v3gc)
2019/03/23(土) 08:03:50.35ID:jegHMgvE0 >>892
実行結果を見ると、最初に表示されるのは「3回目の処理です」だね。
この 3 はループ変数 i から算出される値。
最初に表示したい値である 3 を if の条件式の中にも書いておく方が
プログラムが何をやってるか(3を表示する状態になるまで continue する)を
読み取りやすいという考え方かと。
if (i < 2) を見て「i < 2 の間は continue される。i == 2 になったら
continue されずに下の処理に進む。すると最初に表示される数字は i + 1 で 3」
と理解するより簡単だろう(とプログラムを書いた人が考えたのだろう)。
実験したところ、ちゃんと最適化されるみたいね。
if (i + 1 < 3) でも、アセンブリの方では 2 との比較になってた。
実行結果を見ると、最初に表示されるのは「3回目の処理です」だね。
この 3 はループ変数 i から算出される値。
最初に表示したい値である 3 を if の条件式の中にも書いておく方が
プログラムが何をやってるか(3を表示する状態になるまで continue する)を
読み取りやすいという考え方かと。
if (i < 2) を見て「i < 2 の間は continue される。i == 2 になったら
continue されずに下の処理に進む。すると最初に表示される数字は i + 1 で 3」
と理解するより簡単だろう(とプログラムを書いた人が考えたのだろう)。
実験したところ、ちゃんと最適化されるみたいね。
if (i + 1 < 3) でも、アセンブリの方では 2 との比較になってた。
895デフォルトの名無しさん (ワッチョイ 07f5-rXtv)
2019/03/23(土) 08:08:46.89ID:2BzPzaMr0896デフォルトの名無しさん (ワッチョイ 07f5-rXtv)
2019/03/23(土) 08:09:19.77ID:2BzPzaMr0 >>893
それを言うなら while(!0) だろ
それを言うなら while(!0) だろ
897デフォルトの名無しさん (スフッ Sdea-aUKp)
2019/03/23(土) 08:16:45.51ID:hkiXoQ0jd everlasting的な英単語を1でdefineしてwhileに突っ込んで無限ループ作ってるコードなら見たことある
却って分かりにくかった
却って分かりにくかった
898デフォルトの名無しさん (ワッチョイ 0777-9FTr)
2019/03/23(土) 08:20:29.61ID:3KsHUf0Y0 >>897
悪いなのび太、それ単体試験用のマクロなんだ
悪いなのび太、それ単体試験用のマクロなんだ
899デフォルトの名無しさん (ワッチョイ 07f5-rXtv)
2019/03/23(土) 08:30:38.60ID:2BzPzaMr0 #define forever while(1)
これでええやん
これでええやん
900デフォルトの名無しさん (アウアウエー Sac2-0zLl)
2019/03/23(土) 14:07:37.70ID:OxlPANCja 知りたいことが答えてもらえないが文脈からさっすると
for(i = n;;)は ;; こいつが無限ループさせる whileのときの (1)みたいなもんなんかな
そうなると i = n って表記は i が nといっしょやったらずっと無限ループしとけってことになるんかな
んーそうう考えると for(;;)だったら無条件でループやっとけって感じでつかえそうだけど i = nならとかなんか条件はいるなら ;; こんなん
つかわんでももっと他になかったんじゃろかと思うな。 しかしこのテキスト何の説明もなくいきなりあんな技使いやがってやぶりすてたろか
for(i = n;;)は ;; こいつが無限ループさせる whileのときの (1)みたいなもんなんかな
そうなると i = n って表記は i が nといっしょやったらずっと無限ループしとけってことになるんかな
んーそうう考えると for(;;)だったら無条件でループやっとけって感じでつかえそうだけど i = nならとかなんか条件はいるなら ;; こんなん
つかわんでももっと他になかったんじゃろかと思うな。 しかしこのテキスト何の説明もなくいきなりあんな技使いやがってやぶりすてたろか
901デフォルトの名無しさん (ワッチョイ c602-rXtv)
2019/03/23(土) 14:23:08.16ID:Bvojjkpo0 >>900
for 分のカッコ内は必ずセミコロンが2つ必要で、最初の項目は変数の初期化、2番目の項目は終了条件、
3番目の項目はブロックの最後に実行させる(主に変数をインクリメントしたりデクリメントしたりする)処理だ。
この項目が抜けていた場合はその処理に関して何もしない。例えば2番目の項目が抜けていたら終了条件なし
(つまり無限ループ)になる。
まあ入門書見ればわかると思うが、これの置き換えだ。
i = 1;
while (i < 3) {
/* 何かの処理 */
i++;
}
↓
for (i = 1; i < 3; i++) {
/* 何かの処理 */
}
特別なのは終了条件が空の場合は終了させなくなる事だけ。
for 分のカッコ内は必ずセミコロンが2つ必要で、最初の項目は変数の初期化、2番目の項目は終了条件、
3番目の項目はブロックの最後に実行させる(主に変数をインクリメントしたりデクリメントしたりする)処理だ。
この項目が抜けていた場合はその処理に関して何もしない。例えば2番目の項目が抜けていたら終了条件なし
(つまり無限ループ)になる。
まあ入門書見ればわかると思うが、これの置き換えだ。
i = 1;
while (i < 3) {
/* 何かの処理 */
i++;
}
↓
for (i = 1; i < 3; i++) {
/* 何かの処理 */
}
特別なのは終了条件が空の場合は終了させなくなる事だけ。
902デフォルトの名無しさん (ワッチョイ c602-rXtv)
2019/03/23(土) 14:23:33.00ID:Bvojjkpo0 for 分じゃない for 文だ。
903デフォルトの名無しさん (ワッチョイ 0b7b-v3gc)
2019/03/23(土) 15:44:48.19ID:jegHMgvE0 >>900
すまんね。>>885 の質問を見て、普通の for の使い方、つまり
for (初期化; 継続条件; 再初期化) は理解してると感じたのだ。
その辺の説明は >>901 を見てもらうとして、ちょっと気になった点。
for (i = n;;) の i = n は「i が n に等しければ…」ではなく、
「i に n の値を代入する」だよ。等しいかの判定には == (イコール2個)を使う。
for の普通の使い方では「ループ制御変数 i の値を n に初期化」ということ。
代入の = (イコール1個)と、等値判定の == (イコール2個)は、
携帯端末で見分けにくかったりするのかな。
自分では新式の装置を使わないので、そういう部分に思い至らなくてな。
すまんね。>>885 の質問を見て、普通の for の使い方、つまり
for (初期化; 継続条件; 再初期化) は理解してると感じたのだ。
その辺の説明は >>901 を見てもらうとして、ちょっと気になった点。
for (i = n;;) の i = n は「i が n に等しければ…」ではなく、
「i に n の値を代入する」だよ。等しいかの判定には == (イコール2個)を使う。
for の普通の使い方では「ループ制御変数 i の値を n に初期化」ということ。
代入の = (イコール1個)と、等値判定の == (イコール2個)は、
携帯端末で見分けにくかったりするのかな。
自分では新式の装置を使わないので、そういう部分に思い至らなくてな。
904デフォルトの名無しさん (ワッチョイ 6f02-DTGA)
2019/03/23(土) 16:17:36.63ID:dHpVxeMm0 お願いします。OSはcentos7です
メルセンヌツイスタを使って、ひとつだけ乱数を出したいのですが
乱数を出す間隔が非常に狭く、以下の関数でtime(NULL)を用いると
同じ乱数ばっかり出てきてしまいます。
※関数はコレを使ってます
http://www.sat.t.u-tokyo.ac.jp/~omi/random_variables_generation.html
たとえば、1回関数を実行して、ひとつ乱数を生成。
それを、秒間20や、30繰り返したとしても異なる乱数が出てくる方法ってありませんでしょうか
勝手なお願いですが、できる限り簡単な方法でお願いします。
VBAでパチンコシミュレーターを作ったのですが、
実行速度が非常に遅く、もっと高速化するためにCの勉強を始めたばっかりです
メルセンヌツイスタを使って、ひとつだけ乱数を出したいのですが
乱数を出す間隔が非常に狭く、以下の関数でtime(NULL)を用いると
同じ乱数ばっかり出てきてしまいます。
※関数はコレを使ってます
http://www.sat.t.u-tokyo.ac.jp/~omi/random_variables_generation.html
たとえば、1回関数を実行して、ひとつ乱数を生成。
それを、秒間20や、30繰り返したとしても異なる乱数が出てくる方法ってありませんでしょうか
勝手なお願いですが、できる限り簡単な方法でお願いします。
VBAでパチンコシミュレーターを作ったのですが、
実行速度が非常に遅く、もっと高速化するためにCの勉強を始めたばっかりです
905デフォルトの名無しさん (ワッチョイ cbf2-rXtv)
2019/03/23(土) 16:34:57.54ID:UrlZPLWE0 まさか毎回シード関数呼んでるとか?
906デフォルトの名無しさん (ワッチョイ 07f5-rXtv)
2019/03/23(土) 16:52:06.42ID:2BzPzaMr0 >>904
time(NULL) は1秒以上の実行間隔がないとアウト
それ以外の何らかエントロピー源を使わにゃならんということだ
たとえばスペシャルファイルの/dev/randomだとか、
Core-i7ならrdrand命令を使うとか
time(NULL) は1秒以上の実行間隔がないとアウト
それ以外の何らかエントロピー源を使わにゃならんということだ
たとえばスペシャルファイルの/dev/randomだとか、
Core-i7ならrdrand命令を使うとか
907デフォルトの名無しさん (アウアウウー Sa2f-/mZx)
2019/03/23(土) 17:11:16.47ID:beYYYDPta まあシステム由来のシードを使えばいいんだけど、分布・周期が問題なんだから同じ数字が出てきてもいいんじゃない?
シミュレータってそういうもんですよ。
シミュレータってそういうもんですよ。
908デフォルトの名無しさん (ワッチョイ 0b7b-v3gc)
2019/03/23(土) 17:26:50.18ID:jegHMgvE0 >>904
乱数値を1個だけ返すコマンドを作成、シード値に time() を使用。
同じ1秒の間に何度もコマンドを呼ぶと同じ値しか返ってこない。
次の1秒も(さっきまでと違う値だが)同じ値が何度も返ってくる。
…という話なら、しごく当然だね。
元の目的のプログラム、パチンコのシミュレータだっけ?
そっちをCで作り始めて、メルセンヌ・ツイスタの関数を組み込んじゃえば
自動的に解消する問題って気がするけど。
シミュレータの方はVBAで続けて、乱数だけCのコマンドを使うって方針なの?
乱数値を1個だけ返すコマンドを作成、シード値に time() を使用。
同じ1秒の間に何度もコマンドを呼ぶと同じ値しか返ってこない。
次の1秒も(さっきまでと違う値だが)同じ値が何度も返ってくる。
…という話なら、しごく当然だね。
元の目的のプログラム、パチンコのシミュレータだっけ?
そっちをCで作り始めて、メルセンヌ・ツイスタの関数を組み込んじゃえば
自動的に解消する問題って気がするけど。
シミュレータの方はVBAで続けて、乱数だけCのコマンドを使うって方針なの?
909デフォルトの名無しさん (ワッチョイ 07f5-rXtv)
2019/03/23(土) 17:31:41.38ID:2BzPzaMr0 それだけのためにCOM作るとかアホくさくね?
910デフォルトの名無しさん (ワッチョイ 0b7b-v3gc)
2019/03/23(土) 17:44:46.83ID:jegHMgvE0 >>909 それはその通りだね。
VBAはWindowsで動かして、CentOSの方では「乱数サーバ」を回す、
というクライアント・サーバ・モデルも何か変な感じだし。
だから、全面的にCentOS上のCでの開発に移行する準備として
乱数ルーチンのテスト用に値1個だけ返すコマンドを作ってみたら、
「立て続けに呼ぶと同じ値しか出ないぞ」と心配になったのかな、と。
VBAはWindowsで動かして、CentOSの方では「乱数サーバ」を回す、
というクライアント・サーバ・モデルも何か変な感じだし。
だから、全面的にCentOS上のCでの開発に移行する準備として
乱数ルーチンのテスト用に値1個だけ返すコマンドを作ってみたら、
「立て続けに呼ぶと同じ値しか出ないぞ」と心配になったのかな、と。
911デフォルトの名無しさん (ササクッテロラ Sp03-JOb1)
2019/03/24(日) 11:20:48.13ID:ac/Kn2Xnp912デフォルトの名無しさん (ササクッテロラ Sp03-JOb1)
2019/03/24(日) 11:21:36.49ID:ac/Kn2Xnp ちなみに不合格だと必須科目だから同じ科目をもう一回受講しなきゃいけなかった
913デフォルトの名無しさん (ワッチョイ cb79-0zLl)
2019/03/24(日) 11:28:18.02ID:5d/S++S30 >>905
たぶんそれ
たぶんそれ
914デフォルトの名無しさん (ワッチョイ cb01-n9qF)
2019/03/24(日) 12:24:06.58ID:fqkT23RA0 >>912
むしろそれなら不合格でちゃんと勉強したほうが良かったような?
むしろそれなら不合格でちゃんと勉強したほうが良かったような?
915デフォルトの名無しさん (スフッ Sdea-aUKp)
2019/03/24(日) 13:17:04.74ID:YLYVMPlgd 情報系じゃないのに共通科目とかで必須指定されてたりしたら単位だけもらっても問題ないんでね?
916デフォルトの名無しさん (ワッチョイ c602-rXtv)
2019/03/24(日) 13:39:30.48ID:ynFGlX0q0 >>911
おめ
おめ
917デフォルトの名無しさん (ワッチョイ 4e7c-0zLl)
2019/03/25(月) 16:27:08.09ID:7UyvjyQO0 dfコマンドの -h オプションみたいな
数値をヒューマンに優しい表現にしてくれるライブラリって
ありますか?
ddみたいに、ヒューマンから数値にしてくれるやつも欲しい
数値をヒューマンに優しい表現にしてくれるライブラリって
ありますか?
ddみたいに、ヒューマンから数値にしてくれるやつも欲しい
918デフォルトの名無しさん (ワッチョイ 6b01-UGqV)
2019/03/25(月) 19:21:21.61ID:Dver3QI+0 log A / log 10 とって 10の累乗数出して 3で割って近場の補助単位を選択
(ヘクトとかデシとか 3の倍数じゃないのは 知らんw)
(ヘクトとかデシとか 3の倍数じゃないのは 知らんw)
919デフォルトの名無しさん (アウアウウー Sa2f-7Ozv)
2019/03/25(月) 20:44:43.02ID:T0osdeZXa ライブラリは知らんなあ。
でも簡単だから作っちゃうなあ。
あ、そうだ。お題スレのお題にするか。簡単すぎて馬鹿馬鹿しいかも知れんが。
でも簡単だから作っちゃうなあ。
あ、そうだ。お題スレのお題にするか。簡単すぎて馬鹿馬鹿しいかも知れんが。
920デフォルトの名無しさん (ワッチョイ 038f-LgaG)
2019/03/25(月) 22:42:17.42ID:kHZO8Xph0 ライブラリは知らんなあ。
でも簡単だから作っちゃうなあ。
あ、そうだ。お題スレのお題にするか。簡単すぎて馬鹿馬鹿しいかも知れんが。
でも簡単だから作っちゃうなあ。
あ、そうだ。お題スレのお題にするか。簡単すぎて馬鹿馬鹿しいかも知れんが。
921デフォルトの名無しさん (ワッチョイ c602-rXtv)
2019/03/25(月) 23:52:18.38ID:ECmJs6xT0 あれ?何故2重に書かれている?ま、いいか。
922デフォルトの名無しさん (ワッチョイ c602-rXtv)
2019/03/26(火) 00:15:09.07ID:xyG5xdoY0923デフォルトの名無しさん (ワッチョイ 4e7c-0zLl)
2019/03/26(火) 08:54:20.26ID:JLA/sJXB0 あれライブラリ化されてるのかと思ってたけど無いのか
意外とあちこちのコマンドで出てくる仕様だし
汎用的なのがあると思ってた
意外とあちこちのコマンドで出てくる仕様だし
汎用的なのがあると思ってた
924デフォルトの名無しさん (スプッッ Sd8a-LgaG)
2019/03/26(火) 13:28:06.72ID:YPF/ckzld そのコマンドのソース入手して見てみると面白そう
925デフォルトの名無しさん (アウアウウー Sa2f-7Ozv)
2019/03/26(火) 13:55:17.17ID:PDyA3k9ga926デフォルトの名無しさん (ワッチョイ 3a2d-0o94)
2019/03/26(火) 15:22:52.77ID:BwnADdEO0 libxo
927デフォルトの名無しさん (ワッチョイ de8f-VfNx)
2019/03/26(火) 16:26:09.83ID:8ujFPLE90 https://wiki.freebsd.org/LibXo
https://www.freebsd.org/cgi/man.cgi?query=libxo&sektion=3&manpath=freebsd-release-ports
https://juniper.github.io/libxo/libxo-manual.html
ふむ…
https://www.freebsd.org/cgi/man.cgi?query=libxo&sektion=3&manpath=freebsd-release-ports
https://juniper.github.io/libxo/libxo-manual.html
ふむ…
928デフォルトの名無しさん (ワッチョイ 0b7b-v3gc)
2019/03/26(火) 17:13:01.28ID:ExDeReqX0 GNUのソースを参考にするのは良いけど、GPLへの感染に気をつけないとな。
929デフォルトの名無しさん (ワッチョイ de8f-VfNx)
2019/03/26(火) 19:37:33.33ID:8ujFPLE90 FreeBSDのuserlandな訳で…
ライセンスは自身で確認されたし
「GPL汚染」という言葉は良く聞くけれど「感染」って何でしょう
ライセンスは自身で確認されたし
「GPL汚染」という言葉は良く聞くけれど「感染」って何でしょう
930デフォルトの名無しさん (ワッチョイ 4a0e-rXtv)
2019/03/26(火) 20:07:56.73ID:rSL1tIwA0931デフォルトの名無しさん (ワッチョイ de8f-VfNx)
2019/03/26(火) 21:19:25.60ID:8ujFPLE90932はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 063e-0zLl)
2019/03/26(火) 21:22:07.28ID:qKdh3SVz0 >>931
感染の方が伝播するニュアンスが強調されている気がする
感染の方が伝播するニュアンスが強調されている気がする
933デフォルトの名無しさん (ワッチョイ 0b7b-v3gc)
2019/03/26(火) 21:26:56.44ID:ExDeReqX0 「GPL汚染」って言葉はGPLへの敵意が感じられるんで避けたのよ。
日頃からGNUさんのおかげで色々便利に使わせてもらってるわけだし。
でも、うっかり1ヶ所でも使うと、プロジェクト全部のソースが
GPLライセンスになって公開を義務付けられたりするのは、
やっぱ「感染」じゃないか、と思う部分もあったり。
よく「車輪の再発明をするのはバカバカしい」とか言うけど、
GPLが「丸い車輪」の利権を押さえてるせいで、
わざわざ自前で「歪んだ車輪」を作って使わざるを得ない
境遇に置かれてる人もいるんじゃないかな、と。
…この場で書くような話でもないんだがネ。
日頃からGNUさんのおかげで色々便利に使わせてもらってるわけだし。
でも、うっかり1ヶ所でも使うと、プロジェクト全部のソースが
GPLライセンスになって公開を義務付けられたりするのは、
やっぱ「感染」じゃないか、と思う部分もあったり。
よく「車輪の再発明をするのはバカバカしい」とか言うけど、
GPLが「丸い車輪」の利権を押さえてるせいで、
わざわざ自前で「歪んだ車輪」を作って使わざるを得ない
境遇に置かれてる人もいるんじゃないかな、と。
…この場で書くような話でもないんだがネ。
934デフォルトの名無しさん (ワッチョイ 4a0e-rXtv)
2019/03/26(火) 21:33:22.86ID:rSL1tIwA0 >>931
> 感染性
> これはあたかも、伝染病(それも不治の病)が広がっているかのように見える。
> このため、ソースを公開しないソフトウェアを作る一般的なソフトウェアメーカーや、
> 他のライセンス支持者からは、「感染性のライセンス」「ウイルス性のライセンス」と呼ばれる。
他人事なやつにゃ、あーそー(asshole)でしかないんだろうな
> 感染性
> これはあたかも、伝染病(それも不治の病)が広がっているかのように見える。
> このため、ソースを公開しないソフトウェアを作る一般的なソフトウェアメーカーや、
> 他のライセンス支持者からは、「感染性のライセンス」「ウイルス性のライセンス」と呼ばれる。
他人事なやつにゃ、あーそー(asshole)でしかないんだろうな
935デフォルトの名無しさん (ワッチョイ c68c-WX4v)
2019/03/26(火) 21:57:53.69ID:X9x/YQnQ0 でも裁判は自分で起こさなければならない。
936デフォルトの名無しさん (ワッチョイ 038f-LgaG)
2019/03/26(火) 22:12:23.05ID:5H/KxRwB0 >>931
マイナーな言い回しをするときは理由を添えないとダメなの?
マイナーな言い回しをするときは理由を添えないとダメなの?
937928 == 933 (ワッチョイ 0b7b-v3gc)
2019/03/27(水) 06:47:37.38ID:jMm/WIPk0 >>933 でうっかり「GPLライセンス」と書いたけど、
GPL が GNU General Public License のことなら
GPLライセンスだと「〜ライセンス・ライセンス」だね。
「〜ソースがGPLライセンスになって」は
「〜ソースにGPLが適用されて」あたりの方が適切だったか。
言葉の選択に敏感に気づいてくれたんで、理由の説明に5行ほど使ったが、
半面、「GPL汚染」を知っる人が、感染だと分からないことは予期しなかった。
(これはカマトトにカマトトで応じてるだけ、のつもり、為念)
「GPL汚染」がポピュラーってのは正式な用語ではないことも認識してるんだろうし、
してみると技術用語に対する完璧主義とも違うんだろうな。
…言葉の使い方について、少し言葉を使ってみた、と言う感じのお話。
GPL が GNU General Public License のことなら
GPLライセンスだと「〜ライセンス・ライセンス」だね。
「〜ソースがGPLライセンスになって」は
「〜ソースにGPLが適用されて」あたりの方が適切だったか。
言葉の選択に敏感に気づいてくれたんで、理由の説明に5行ほど使ったが、
半面、「GPL汚染」を知っる人が、感染だと分からないことは予期しなかった。
(これはカマトトにカマトトで応じてるだけ、のつもり、為念)
「GPL汚染」がポピュラーってのは正式な用語ではないことも認識してるんだろうし、
してみると技術用語に対する完璧主義とも違うんだろうな。
…言葉の使い方について、少し言葉を使ってみた、と言う感じのお話。
938デフォルトの名無しさん (ワッチョイ 4a0e-rXtv)
2019/03/27(水) 07:23:31.84ID:MBTJ/mxD0 ん、待て待てGPL汚染じゃなくGPU汚染と931は言っているな
NVIDIAの話か? それともAMD?
NVIDIAの話か? それともAMD?
939デフォルトの名無しさん (ワッチョイ 0b7b-v3gc)
2019/03/27(水) 07:40:33.52ID:jMm/WIPk0 ありゃりゃ、確かに「GPU汚染」だね。
文脈に基づく先入観で「GPL汚染」としか見えてなかった。
すると、そっちがお誘いだったのかな。節穴で申し訳ない。
ついでにコピーせずに投稿文を手打ちしてることの傍証にもなったね。
文脈に基づく先入観で「GPL汚染」としか見えてなかった。
すると、そっちがお誘いだったのかな。節穴で申し訳ない。
ついでにコピーせずに投稿文を手打ちしてることの傍証にもなったね。
940デフォルトの名無しさん (スプッッ Sd8a-LgaG)
2019/03/27(水) 08:13:14.97ID:ksdLiPzkd どんな有能なプログラマーにもタイプミスはある。許してさしあげろ。
それより5ch用のリントツールが必要だということが浮き彫りになったな。
それより5ch用のリントツールが必要だということが浮き彫りになったな。
941デフォルトの名無しさん (ワッチョイ 67d2-tGIR)
2019/03/27(水) 09:20:30.29ID:anJ1LIGv0 GPL汚染というのは商用アプリケーションを作る会社が
GPLライセンスのライブラリーを使いたいのに
ソースを公開すると売れなくなるから使いたくないから言ってるのと
ソースをみせたくないひとが言っているんだよ
GPLライセンスのライブラリーを使いたいのに
ソースを公開すると売れなくなるから使いたくないから言ってるのと
ソースをみせたくないひとが言っているんだよ
942デフォルトの名無しさん (ワッチョイ c602-I58O)
2019/03/27(水) 23:28:49.86ID:oM4knkxt0 まあ味方にもよるよね。GNUの思想を支持する側から見たらプログラムを自由に使えない事は悪だろうし。
943デフォルトの名無しさん (ワッチョイ c602-I58O)
2019/03/27(水) 23:29:19.56ID:oM4knkxt0 見方だ
944デフォルトの名無しさん (ワッチョイ 9f0e-9gjM)
2019/03/28(木) 11:43:27.92ID:8NAOSscd0 GPLとGNUが脳内で混線してGPUになったのか
945デフォルトの名無しさん (アウアウウー Sa0f-dxKi)
2019/03/28(木) 12:45:58.19ID:0gfjfVxLa GNL
946デフォルトの名無しさん (ワッチョイ fb02-ZTi4)
2019/03/28(木) 19:27:35.93ID:l9a4bgRH0 ちょっと前MMUをMMOと言っちゃって、ちょっと恥ずかしかった。
>>946
NWO=New World Order なら今的陰謀論にマッチしますね
NWO: https://ja.wikipedia.org/wiki/%E6%96%B0%E4%B8%96%E7%95%8C%E7%A7%A9%E5%BA%8F
NWO=New World Order なら今的陰謀論にマッチしますね
NWO: https://ja.wikipedia.org/wiki/%E6%96%B0%E4%B8%96%E7%95%8C%E7%A7%A9%E5%BA%8F
948デフォルトの名無しさん (アウアウウー Sa0f-dxKi)
2019/03/28(木) 21:03:56.02ID:KhTRBxbZa WBA
949デフォルトの名無しさん (ワッチョイ ef02-9gjM)
2019/03/28(木) 22:45:08.37ID:WL/rMpQN0 WEP
950デフォルトの名無しさん (スフッ Sdbf-g8C6)
2019/03/29(金) 19:40:14.87ID:jbLCE6Gyd 初心者です
間違っているところをだれか教えてください
今作ろうとしてるのは入力した文をバラバラにして返すプログラムです
https://i.imgur.com/huSgBsa.jpg
https://i.imgur.com/NW3rZ7M.jpg
https://i.imgur.com/xAQu9le.jpg
間違っているところをだれか教えてください
今作ろうとしてるのは入力した文をバラバラにして返すプログラムです
https://i.imgur.com/huSgBsa.jpg
https://i.imgur.com/NW3rZ7M.jpg
https://i.imgur.com/xAQu9le.jpg
951デフォルトの名無しさん (スフッ Sdbf-g8C6)
2019/03/29(金) 19:45:04.77ID:jbLCE6Gyd https://i.imgur.com/4iAlV1x.jpg
こうなるように作りたいです
こうなるように作りたいです
952デフォルトの名無しさん (ワッチョイ 6b8f-cGEb)
2019/03/29(金) 19:52:38.08ID:49nFrL1E0 25行目からが
if(c!=0){
break;
}
else{
continue;
}
while(c==0);
になってるけどwhileの場所が間違ってる。
if(c!=0){
break;
}
else{
continue;
}
while(c==0);
になってるけどwhileの場所が間違ってる。
953デフォルトの名無しさん (ワッチョイ 6b8f-cGEb)
2019/03/29(金) 19:54:41.57ID:49nFrL1E0 28行目からだわ。つまり}が足りてない。そこだけ直したら上手くいくのかは確認してないけど。
954デフォルトの名無しさん (スフッ Sdbf-g8C6)
2019/03/29(金) 19:55:29.51ID:jbLCE6Gyd >>952
正しくはどうなりますか?すみませんさっぱりわかりません…
正しくはどうなりますか?すみませんさっぱりわかりません…
955デフォルトの名無しさん (スフッ Sdbf-g8C6)
2019/03/29(金) 19:56:17.40ID:jbLCE6Gyd956デフォルトの名無しさん (アウアウエー Sa3f-RDgh)
2019/03/29(金) 20:15:27.43ID:kPfQN3Sza kishutu[] 渡してるところ大丈夫か?
957デフォルトの名無しさん (スフッ Sdbf-g8C6)
2019/03/29(金) 21:09:07.83ID:jbLCE6Gyd958デフォルトの名無しさん (スフッ Sdbf-g8C6)
2019/03/29(金) 21:13:20.24ID:jbLCE6Gyd959デフォルトの名無しさん (ワッチョイ cb01-tWyY)
2019/03/29(金) 22:03:29.44ID:b4NIHWKk0 >>957
27行目[]いらんと思う
27行目[]いらんと思う
960デフォルトの名無しさん (スフッ Sdbf-g8C6)
2019/03/29(金) 22:53:43.19ID:jbLCE6Gyd https://i.imgur.com/nY9LuSR.jpg
https://i.imgur.com/U46WJvs.jpg
https://i.imgur.com/wwRNBB2.jpg
試してるのですが最後の1文字が表示されないままずっと実行中になってしまいます。3枚目はhello world入力で何回か実行した時の画面です。上の3回は強制終了して、一番下のはフリーズしてるやつです
どなたかわかる方いましたら教えてもらえないでしょうか
何度もすみません🙏
https://i.imgur.com/U46WJvs.jpg
https://i.imgur.com/wwRNBB2.jpg
試してるのですが最後の1文字が表示されないままずっと実行中になってしまいます。3枚目はhello world入力で何回か実行した時の画面です。上の3回は強制終了して、一番下のはフリーズしてるやつです
どなたかわかる方いましたら教えてもらえないでしょうか
何度もすみません🙏
961デフォルトの名無しさん (ワッチョイ 9ff9-ZTi4)
2019/03/29(金) 23:02:18.73ID:aBFadZYQ0 随所でprintfしまくって、変数の値が想定通りか確認していくんだ
これをprintfデバッグという
ってか、まともなデバッガがある環境でやった方がいいよ
これをprintfデバッグという
ってか、まともなデバッガがある環境でやった方がいいよ
962デフォルトの名無しさん (アウアウエー Sa3f-RDgh)
2019/03/29(金) 23:10:52.10ID:kPfQN3Sza >>960
配列の添字も一緒にprintfしてみれば。
あと変数名は意味のあるもんにした方がええよ。 a とか b はあかんわ。
あと配列は初期化した方がいいかもよ。自分で中身を把握してれば別にしなくていいんだけど。
配列の添字も一緒にprintfしてみれば。
あと変数名は意味のあるもんにした方がええよ。 a とか b はあかんわ。
あと配列は初期化した方がいいかもよ。自分で中身を把握してれば別にしなくていいんだけど。
963デフォルトの名無しさん (ワッチョイ 6b8f-cGEb)
2019/03/29(金) 23:25:13.83ID:49nFrL1E0 >>960
check(int a, int b, int c[]);
がだめ。
aが既出の時は0を返して、既出じゃないときはaを返す関数になってるけど、
aに0を渡すと既出じゃなくても0が返るから既出扱いになる。
check(int a, int b, int c[]);
がだめ。
aが既出の時は0を返して、既出じゃないときはaを返す関数になってるけど、
aに0を渡すと既出じゃなくても0が返るから既出扱いになる。
964デフォルトの名無しさん (ワッチョイ 6b8f-cGEb)
2019/03/29(金) 23:26:13.92ID:49nFrL1E0 既出の時は-1を返すようにすればなおせる。
965デフォルトの名無しさん (ワッチョイ 6b8f-cGEb)
2019/03/29(金) 23:36:01.88ID:49nFrL1E0 あと"hello world" に対してsent[10]は長さが足りてない。
966デフォルトの名無しさん (スフッ Sdbf-g8C6)
2019/03/30(土) 06:48:18.36ID:+pUtVW5zd967デフォルトの名無しさん (ワッチョイ 9fa5-mpQp)
2019/03/30(土) 11:40:45.41ID:NEaY98E/0 スマホ世代は画像と文字の区別が付かないらしい
これホントだよ
これホントだよ
968デフォルトの名無しさん (ワッチョイ 0f63-r4m/)
2019/03/30(土) 12:43:03.20ID:IAXXlS6v0 区別を付けられる世代には是非、画像認証で出される文字を認識するプログラムを書いてもらいたい
969デフォルトの名無しさん (スッップ Sdbf-cGEb)
2019/03/30(土) 12:53:42.39ID:XVCnFM45d >>967
これからは書き込む時にヘッダーにContent-Typeつけないとダメだな
これからは書き込む時にヘッダーにContent-Typeつけないとダメだな
970デフォルトの名無しさん (ワッチョイ ef02-9gjM)
2019/03/31(日) 18:22:14.86ID:x4Dlbn8C0 >>968
OCRでできるかもね。
OCRでできるかもね。
971デフォルトの名無しさん (ワッチョイ 4b3d-ZTi4)
2019/04/01(月) 12:25:47.95ID:MG1i8foP0 新元号がC言語に聞こえた、末期だ
972デフォルトの名無しさん (ワッチョイ 1f19-9gjM)
2019/04/01(月) 12:28:19.16ID:mARdLrg20 0O
973デフォルトの名無しさん (アークセー Sx4f-tWyY)
2019/04/01(月) 12:37:22.21ID:kX8UNAymx974デフォルトの名無しさん (ワッチョイ 0fd2-ZTi4)
2019/04/01(月) 13:26:16.54ID:Fc0B8SHO0 (0_○)
975デフォルトの名無しさん (ワッチョイ 9f01-PMB8)
2019/04/01(月) 18:18:06.49ID:6TSsT2Q/0 0+
976デフォルトの名無しさん (ブーイモ MMbf-pocE)
2019/04/01(月) 20:16:15.42ID:Ut3weUXPM C言語でOOか
977デフォルトの名無しさん (アウアウエー Sa3f-XwTE)
2019/04/01(月) 21:33:02.04ID:v6mAk26Pa 「要素型がint型で要素数がnの配列を受け取って、
全要素に添字と同じ値を代入する関数set_idx」を作成しました。
http://codepad.org/krsZoljq
配列aの要素数はマクロ定義で#define NUMBER 10とし、
問題なく動作しました。
ところが、この要素数10を60に書き換えてみたところ、
コンパイルされたexeファイルを実行しても動作しません。
コンパイラはMinGW(gcc)です。
思い当たる原因を教えていただけないでしょうか。
全要素に添字と同じ値を代入する関数set_idx」を作成しました。
http://codepad.org/krsZoljq
配列aの要素数はマクロ定義で#define NUMBER 10とし、
問題なく動作しました。
ところが、この要素数10を60に書き換えてみたところ、
コンパイルされたexeファイルを実行しても動作しません。
コンパイラはMinGW(gcc)です。
思い当たる原因を教えていただけないでしょうか。
978さまよえる蟻人間 ◆T6xkBnTXz7B0 (スププ Sdbf-b8Xs)
2019/04/01(月) 21:34:29.79ID:OIWsA4Npd >>977
配列変数aのサイズを宣言せよ。
配列変数aのサイズを宣言せよ。
979デフォルトの名無しさん (ワッチョイ 0f8f-068C)
2019/04/01(月) 21:45:33.75ID:Mx+j7LaB0 int a[NUMBER];
と書いても駄目かね
と書いても駄目かね
980977 (アウアウエー Sa3f-XwTE)
2019/04/01(月) 22:08:10.15ID:v6mAk26Pa981デフォルトの名無しさん (ワッチョイ 0f8f-068C)
2019/04/01(月) 22:14:50.09ID:Mx+j7LaB0982はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ef3e-r4m/)
2019/04/01(月) 22:15:35.84ID:+c9Nhd8T0983977 (アウアウエー Sa3f-qsRO)
2019/04/01(月) 22:29:36.01ID:v6mAk26Pa984デフォルトの名無しさん (ワッチョイ 0f8f-068C)
2019/04/01(月) 22:51:19.76ID:Mx+j7LaB0 私も「ド素人&独学でしかやってない&プライベートでしか使ってない」ってかんじですが
set_idx関数がバッファオーバーラン対策を全くやってないのが気になるかも
int *set_idx(int n) とかいう風な、ポインタを返す関数に書き換え、関数内でmallocというのが考えられるけど
正確にセキュアな方法はワカラン
https://www.ipa.go.jp/security/awareness/vendor/programmingv1/b06_02.html が参考になるかも知れないし
「まだ早い」ということになるかも知れないし、何とも言えない
set_idx関数がバッファオーバーラン対策を全くやってないのが気になるかも
int *set_idx(int n) とかいう風な、ポインタを返す関数に書き換え、関数内でmallocというのが考えられるけど
正確にセキュアな方法はワカラン
https://www.ipa.go.jp/security/awareness/vendor/programmingv1/b06_02.html が参考になるかも知れないし
「まだ早い」ということになるかも知れないし、何とも言えない
985デフォルトの名無しさん (ワッチョイ 6b8f-cGEb)
2019/04/01(月) 22:53:26.21ID:evzlx3m20 可能ならC言語は諦めるのがおすすめかな…
986デフォルトの名無しさん (ワッチョイ 1f19-9gjM)
2019/04/02(火) 07:43:14.10ID:VBVVrqHU0 消すなよ!
987デフォルトの名無しさん (アウアウウー Sa0f-dxKi)
2019/04/02(火) 09:36:27.96ID:exqjvsIla >>977
そのURLのページ昨日から開けなくてなんだかわからない。
そのURLのページ昨日から開けなくてなんだかわからない。
988デフォルトの名無しさん (ワッチョイ 0f8f-068C)
2019/04/02(火) 11:14:48.18ID:SQXqRaAc0 https://imgur.com/a/kHEtyz9
こんなかんじだったよーな
こんなかんじだったよーな
989デフォルトの名無しさん (ワッチョイ 0f8f-068C)
2019/04/02(火) 11:18:36.80ID:SQXqRaAc0 >>985
そうっすね
「c言語 おすすめしない理由」でググると
https://www.sejuku.net/blog/3619
https://takachan.hatenablog.com/entry/2018/06/21/233111
https://kiseki-shoji.com/recommended-programming-language/
とか
ところで、このスレって次スレ立てるタイミングは
どんな慣習なんでしょうか
減速しないと確実にヤバイ域かも
そうっすね
「c言語 おすすめしない理由」でググると
https://www.sejuku.net/blog/3619
https://takachan.hatenablog.com/entry/2018/06/21/233111
https://kiseki-shoji.com/recommended-programming-language/
とか
ところで、このスレって次スレ立てるタイミングは
どんな慣習なんでしょうか
減速しないと確実にヤバイ域かも
990デフォルトの名無しさん (ワッチョイ 0f8f-068C)
2019/04/02(火) 11:28:36.32ID:SQXqRaAc0991デフォルトの名無しさん (ワッチョイ 1f78-+BqS)
2019/04/02(火) 12:17:13.81ID:eD+DhRS60992デフォルトの名無しさん (アウアウウー Sa0f-dxKi)
2019/04/02(火) 12:23:08.20ID:exqjvsIla おつ
993デフォルトの名無しさん (ワッチョイ 0f8f-068C)
2019/04/02(火) 12:54:10.21ID:SQXqRaAc0 >>989 の補足というかスレチというか…
Windows 環境なら hta を javascript で書くというのも良いかもですね
コピペプログラミングベースで良いなら、ウィンドウを表示するプログラムを作ってチョコチョコとカスタマイズする位なら30分掛からない
「javascript 全く知らん&Excel VBAやマクロは少し分かる」なら hta を vbscript で書くのも良いかも
…このスレの人達からしたら忌み嫌われかねない環境かも…?
Windows 環境なら hta を javascript で書くというのも良いかもですね
コピペプログラミングベースで良いなら、ウィンドウを表示するプログラムを作ってチョコチョコとカスタマイズする位なら30分掛からない
「javascript 全く知らん&Excel VBAやマクロは少し分かる」なら hta を vbscript で書くのも良いかも
…このスレの人達からしたら忌み嫌われかねない環境かも…?
994デフォルトの名無しさん (スップ Sdbf-cGEb)
2019/04/02(火) 13:03:14.49ID:utcNUqsJd >>990
オツ
オツ
995はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ef3e-r4m/)
2019/04/02(火) 13:07:35.24ID:vU9CoLi+0 >>993
Windows だけでよければ electron みたいな重量級のフレームワークをあらためて導入する必要もなく
ウェブ系の GUI デザインの延長で使える HTA は楽だとは思う。
「忌み嫌う」というよりは C とはまるで使いどころが違うので、
C を必要だと判断して始めた (その判断が正しいかどうかは別として) 人に対して状況を確認することなく
何か他の言語や環境を勧めるのは意味わからんという感じだと思う。
Windows だけでよければ electron みたいな重量級のフレームワークをあらためて導入する必要もなく
ウェブ系の GUI デザインの延長で使える HTA は楽だとは思う。
「忌み嫌う」というよりは C とはまるで使いどころが違うので、
C を必要だと判断して始めた (その判断が正しいかどうかは別として) 人に対して状況を確認することなく
何か他の言語や環境を勧めるのは意味わからんという感じだと思う。
996デフォルトの名無しさん (ワッチョイ 0b7f-YZQI)
2019/04/03(水) 18:22:44.27ID:mkaKENfB0 省略形にかぎらず関数使用でも理解不十分なまま作成する記述スタイルを変えれればこの先生きのこれるかもしれうめ
997デフォルトの名無しさん (ワッチョイ cb01-tWyY)
2019/04/03(水) 19:45:53.19ID:sLl0OhfW0 先生、きのこれますか?
998デフォルトの名無しさん (アウアウウー Sa0f-dxKi)
2019/04/03(水) 20:52:13.33ID:GUjlsyjta _,,...,_
/_~,,..::: ~"'ヽ
(,,"ヾ ii /^',)
:i i"
| (,,゚Д゚) ・・・
|(ノ |)
| |
ヽ _ノ
U"U
/_~,,..::: ~"'ヽ
(,,"ヾ ii /^',)
:i i"
| (,,゚Д゚) ・・・
|(ノ |)
| |
ヽ _ノ
U"U
999デフォルトの名無しさん (ワッチョイ 0f8f-068C)
2019/04/03(水) 20:59:17.64ID:qKRJca2S0 生きのこ れる
1000デフォルトの名無しさん (ワッチョイ 69e6-k8NZ)
2019/04/04(木) 00:26:22.08ID:dLJNY45/0 (´・_・`)
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 56日 10時間 47分 19秒
新しいスレッドを立ててください。
life time: 56日 10時間 47分 19秒
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を超えています。これ以上書き込みはできません。
ニュース
- 【鹿児島】5キロ2000円台ではコメ作りを続けられない――生産者不在で乱高下する米価。消費者も納得できる適正価格は実現するのか?★3 [シャチ★]
- 次の首相ふさわしい人 高市氏 21%、進次郎氏 15.9%、玉木氏 9.3%、石破首相 7.3% 共同通信世論調査 [お断り★]
- デパ地下でスイーツを買ったら、紙袋代「20円」を請求された! 有料化は「ビニール袋」だけなのに、どうして紙袋まで有料に? [ぐれ★]
- 永野芽郁「どんなことがあろうとファイティングポーズをとりながら向き合っていこうかな」はにかみながら誓った“女優継続スピーチ” [Ailuropoda melanoleuca★]
- 【プロレス】ノアのKENTA、入場時に女性客から口に含んだウーロン茶をぶっかけられ困惑 [シャチ★]
- QRコード決済、なぜ今“やめる店”が出てきた? QRコード決済廃止で店舗が得る利点とは [パンナ・コッタ★]
- 【NJPW】新日本プロレスワールド part.2296
- 他サポ2025-112
- 【NJPW】新日本プロレスワールド part.2295
- 〓たかせん〓 5
- 勝て勝て勝て勝て実況やぞ!ガンバ大阪実況 ★2
- とらせん祝勝会 二次会
- 自民党、訪日外国人の免税廃止を検討。麻生太郎「安売りせず免税辞めれば2000億円も日本に入ってくる訳だから検討に値する」 [271912485]
- ▶ホロライブ
- JA全農「売れ!売れ!売れ!」このタイミングで落札済みの備蓄米を大量放出開始! [819669825]
- ▶オケラというゴミを見下して楽しむスレ
- 【実況】博衣こよりのえちえち鬼武者9🧪
- 中国人留学生「え、待って。日本人は冠婚葬祭やお祭りで和服を着るの?我が国では伝統衣装は廃れたのに」→帰国後漢服製造販売会社を起業 [377482965]