■ このスレッドは過去ログ倉庫に格納されています
C言語なら俺に聞け 153
- 1 :デフォルトの名無しさん :2019/08/17(土) 23:02:42.00 ID:tN5mSQYg0.net
- 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/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
※前スレ
C言語なら俺に聞け 152
https://mevius.5ch.net/test/read.cgi/tech/1560763630/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 2 :さまよえる蟻人間 :2019/08/18(日) 01:45:05.03 ID:f2ZPM7Xhd.net
- 乙。くるしうない。
- 3 :デフォルトの名無しさん :2019/08/18(日) 03:38:02.60 ID:26pp6bRY0.net
- 仮想アセンブラは、元々、日本の情報処理資格試験用に、CASL2 が作られた。
個別のCPU 命令では、試験にふさわしくないから、抽象化した命令が必要だった
でも、世界的には流行らなかった
それで、学生が作った、LLVM に、Apple が飛びついた
- 4 :デフォルトの名無しさん :2019/08/18(日) 09:39:05.87 ID:S9bN8HAf0.net
- 実像を見てない試験で社会から乖離してるな
バkの集団なんだろうか?
それともz80の問題だしたらライセンス料でも払わないといけないのか?
カネに掛けてはとかくケチな貧乏人が思い付きそうな小手先だ
至るところで独自規格で無意味の羅列、全く学習にならず、受けるだけムダな試験が練り上げられる
- 5 :デフォルトの名無しさん :2019/08/18(日) 09:57:01.01 ID:OvlvScl60.net
- 試験用のアセンブラは、仕様を公開せずに
試験問題の中で初見にすればいい
それで対応力を試すようにすれば
いくらか意味のある試験になる
- 6 :デフォルトの名無しさん :2019/08/18(日) 10:09:11.56 ID:/GvnB8qbM.net
- 以前に実施されていたマイコン応用システム開発技術者試験のアセンブラ問題は8080, Z80, 6800からの選択だった
現在の情報処理試験エンベデッドシステムの前身となった資格試験
- 7 :デフォルトの名無しさん :2019/08/18(日) 10:17:41.38 ID:S9bN8HAf0.net
- 実際に使えないものを教えられてるのは英語と同じだな
CASLやっても機械語の練習にならない
「教育用」にまで形骸化すると使い物にならない、現実と実用から乖離する、ファンタジーになる、
これが「教育用」の弊害だ
PASCAL不人気の原因もここら辺にあるんじゃねえか?
IT界隈は教育用と実用の間で揺れてる
- 8 :デフォルトの名無しさん :2019/08/18(日) 12:10:38.91 ID:RmgmCswc0.net
- >>2 先生 700行の数式パーサーまたHPに載せて下さい!
- 9 :デフォルトの名無しさん :2019/08/18(日) 13:54:54.01 ID:NDt9ShII0.net
- ハゲタマゴどこ行った
- 10 :デフォルトの名無しさん :2019/08/19(月) 00:21:34.86 ID:IzREAmBO0.net
- 生理がこないんですけど
どうしたらいいですか?
- 11 :デフォルトの名無しさん :2019/08/19(月) 01:35:14.42 ID:HWxct0dM0.net
- >>10
D
- 12 :デフォルトの名無しさん :2019/08/19(月) 02:31:19.64 ID:WV8MsfnG0.net
- コンパイルもリンクも正常に動いているようだぞ
生まれたのがバグじゃなくて良かったな ha ha ha
- 13 :入門 :2019/08/19(月) 07:50:31.64 ID:AfRfI86I0.net
- http://program-lecture.info/c_structure5.html
ここのサイトを見ながら学習しているのですがこのshowStatus関数では何故int配列を
int型の仮引数で受け取れてるのでしょうか?配列は配列かポインタでしか受け取れないと思ってたんですが
その認識は間違ってますか
よろしくお願い致します。
- 14 :デフォルトの名無しさん :2019/08/19(月) 08:28:31.64 ID:kSnvMIS70.net
- >>13
showStatus()はint型でもint型配列でもなくcharacter型を受け取ってるようだが?
- 15 :デフォルトの名無しさん :2019/08/19(月) 09:48:04.61 ID:O1nZQbpw0.net
- showStasus() の引数は struct person 型の実体を受けてる
main では
struct person 型の配列を用意 party[]
配列の各要素 party[0], party[1] のぞれぞれについて showStatus() を呼んでいる
本質的には
void foo(int arg);
int main() {
int array[2];
foo(array[0]);
foo(array[1]);
return 0;
}
これと同じ
- 16 :入門 :2019/08/19(月) 17:57:43.49 ID:7obxXURV0.net
- >>15
理解出来ました。ありがとうございます( ;∀;)
- 17 :蟻人間 :2019/08/19(月) 20:10:40.78 ID:GYeBbzEk0.net
- >>8
あのコードは今となっては時代遅れだ。意味がない。
- 18 :デフォルトの名無しさん :2019/08/19(月) 20:19:09.86 ID:PrhOfqin0.net
- 先生書き直さないんですか?w
- 19 :蟻人間 :2019/08/19(月) 20:20:07.30 ID:GYeBbzEk0.net
- >>10
産婦人科へGo!
https://www.mylohas.net/2018/08/173369menstruation.html
- 20 :デフォルトの名無しさん :2019/08/24(土) 22:48:02.26 ID:UVaZe+22a.net
- 下のコードの部分を実行すると、最後の行だけ2回表示されます。
理由はなぜでしょうか?また、最後も1回にするにはどう変更したら良いでしょうか?
よろしくお願いします。
http://codepad.org/WCL1vHLd
- 21 :デフォルトの名無しさん :2019/08/24(土) 23:20:14.88 ID:xKwct0SAM.net
- >>20
if ( !fgets(buf, sizeof(buf), fp) ) break;
- 22 :20 :2019/08/25(日) 00:34:55.25 ID:9+tsViui0.net
- >>21
サンクス!
While 行と fgets 行の間にその行を入れたら1回になりました。
修正はこれで良いのでしょうか?
- 23 :20 :2019/08/25(日) 00:46:09.40 ID:9+tsViui0.net
- >>22 の修正だと最後の行以外にもだいぶ表示されなくなってました。
どうするのが正解なのでしょうか?
- 24 :デフォルトの名無しさん :2019/08/25(日) 00:52:09.44 ID:uvOm2rq20.net
- 良いのか?って聞かれると
色々言いたくなる奴が大勢出てきそう
- 25 :デフォルトの名無しさん :2019/08/25(日) 01:04:15.99 ID:uvOm2rq20.net
- >>23
//while ( !feof(fp) ) {
while (fgets(buf, sizeof(buf), fp)!=NULL){
//fgets(buf, sizeof(buf), fp);
こんなんでどうか
- 26 :20 :2019/08/25(日) 03:58:18.71 ID:9+tsViui0.net
- >>25 うまくいきました! Thanks!
やっぱり俺に訊けスレですね。ここの人達はすごい。
if ( (fp = popen(cmdline,"r")) == NULL ) {
perror ("can not exec commad");
}
while (fgets(buf, sizeof(buf), fp)!=NULL){
printf("%s", buf);
}
pclose(fp);
最終的にこうなりなした。助かりました。
- 27 :デフォルトの名無しさん :2019/08/25(日) 04:09:39.00 ID:SpCWKyo10.net
- Ruby では、Windows の、powershell, clip コマンドも呼べる。
UTF-8, CP932 の文字コード変換もできる
クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
- 28 :デフォルトの名無しさん :2019/09/12(木) 14:34:32.33 ID:PzZxK66KM.net
- defineマクロで以下をやりたいです。
struct my{
int d0 =0;
int d1 =0;
int d2 =0;
int d3 =0;
int d4 =0;
}:
struct my val;
val[0:2] = (1, 1, 1);
と入力した時にvalのdata0〜data2に1が入るようなマクロはどう書けばいいですか?
- 29 :デフォルトの名無しさん :2019/09/12(木) 18:39:59.73 ID:7fKDA9wF0.net
- __VA_ARGS__ つこて2段呼び出しだな
qiita.com/saltheads/items/e1b0ab54d3d6029c9593
- 30 :デフォルトの名無しさん :2019/09/15(日) 10:20:29.94 ID:Y/GLm+KZ0.net
- >>29
ありがとうございます。
リンクを参考に、可変引数にするマクロまでは出来ました。(作った関数が間違えていたらすみません。)
struct my def2(struct my val, int s, int e, int d1, int d2){
int *p = val.d0;
*(p+s) = d1:
*(p+e) = d2;
return val;
}
/*def3省略*/
#define GET_MACRO(_1,_2,_3,NAME,...) NAME
#define DEF(val,s,e,...) GET_MACRO(__VA_ARGS__, def3, def2)(val,s,e,__VA_ARGS__)
ここから、表記を変える方法が分かりません。
下のようなことをしたいのですが、このように書くとコンパイルエラーになりました。
どう書けばいいでしょうか。
#define VAL[A:B]=(...) DEF(VAL,A,B,__VA_ARGS__)
- 31 :デフォルトの名無しさん :2019/09/15(日) 12:30:40.49 ID:58rKn0L90.net
- マクロ使わずにこれで十分だろ。
typedef struct my;
val = (my){1,1,1};
val = (my){1,1,1,1};
以下のようにはできるけど、
マクロの多用は誰もソースを読みたくなくなるから避けたほうがいいよ
#define SET(v,...) v=(struct my){__VA_ARGS__}
SET(val, 1, 1, 1)
- 32 :デフォルトの名無しさん :2019/09/15(日) 13:05:57.26 ID:Y/GLm+KZ0.net
- >>31
すいません、説明不足でした。
どうしてマクロかと言いますと、3つのデータを入れたい場所が0〜2だけではなく5〜7や2〜4の場合もあるからです。
- 33 :デフォルトの名無しさん :2019/09/15(日) 13:41:31.71 ID:58rKn0L90.net
- #define SET(x,s,e,...) memcpy(((int*)&val)+s,&(int[]){__VA_ARGS__},sizeof(int)*(e-s))
SET(val, 1, 3, 1, 1)
SET(val, 1, 4, 1, 1, 1)
部下がこんなコード書いてきたら突っ返すわ
- 34 :デフォルトの名無しさん :2019/09/15(日) 15:47:59.75 ID:v7T7Pyv90.net
- ID:Y/GLm+KZ0 が上司だったらと想定してみよう。
- 35 :デフォルトの名無しさん :2019/09/15(日) 15:59:14.90 ID:58rKn0L90.net
- 自分の考えが浅はかでした。申し訳ありません
- 36 :デフォルトの名無しさん :2019/09/17(火) 11:43:21.23 ID:tz0JLczQ0.net
- >>34
背中を撃たれてしまうのでは・・・?
- 37 :デフォルトの名無しさん :2019/09/17(火) 13:01:08.68 ID:pZqZMIzxM.net
- うーん、どうにかして上のように[]を使って書き換えることは出来ないのですかね。
ちなみに下のようにして全パターン定義しようとしたらエラーでした。何故でしょうか。
#define val[0:2]=(...) DEF(val,0,2,__VA_ARGS__)
- 38 :デフォルトの名無しさん :2019/09/17(火) 14:46:00.52 ID:nfIIVgp70.net
- マクロ諦めてインライン関数にしたら?
- 39 :デフォルトの名無しさん :2019/09/17(火) 19:09:34.89 ID:g1BlUkdva.net
- >>37
なぜって、#defineを使用するための構文を完全に無視してるからだよ。こちらが思ったことを都合良く解釈してくれるわけでなく、構文通りの単純な置換をしてくれるだけだよ。
一度ちゃんと調べておいた方がいい。
- 40 :デフォルトの名無しさん :2019/09/17(火) 19:57:33.48 ID:pZqZMIzxM.net
- >>39
なるほどです。
では、[]や:を利用して独自の構文を定義するのはC言語において不可能、ということですか?
- 41 :デフォルトの名無しさん :2019/09/17(火) 20:37:25.67 ID:g1BlUkdva.net
- >>40
不可能。やるなら自前でプリプロセサでも書けばいいが、そんなことするくらいなら、ソース上に書くのではなく独自のデータファイルとそれを読み込んでデータを初期化するような処理でも作れば?
- 42 :デフォルトの名無しさん :2019/09/17(火) 20:47:01.62 ID:pZqZMIzxM.net
- >>41
ありがとうございます。
最終的な目標は、Cを他言語ライクな記述でコーディングすることなので、プリプロセッサについて調べてみます。
- 43 :デフォルトの名無しさん :2019/09/17(火) 22:44:02.30 ID:WDh8MszDa.net
- 新言語作った方が良さそうな。
初期のC++みたいにC言語へのコンバータとして作っちゃえば楽だと思う。Cと同じで良い部分はほとんど素通しで行けるし。
- 44 :デフォルトの名無しさん :2019/09/18(水) 03:52:29.58 ID:YwguJHoc0.net
- そこまでしてCに拘る意味がわからない
- 45 :デフォルトの名無しさん :2019/09/18(水) 05:50:30.71 ID:A+b/Im8h0.net
- あの変態的にC言語には見えないObjective CでさえほとんどプリプロセッサでCに変換してからコンパイルしてたと聞くので、やろうと思えばできるんだろうね。
- 46 :デフォルトの名無しさん :2019/09/18(水) 07:02:57.91 ID:ik5RQtCe0.net
- yaccとlexを使えばできるだろう。たぶん
- 47 :デフォルトの名無しさん :2019/09/18(水) 08:32:22.55 ID:cLmp+ocZM.net
- 独自言語を開発したときなんかはとりあえずCに変換するというのはわりとある話。
コード生成とか最適化とか考えずに済むから。
昔、独自じゃないけど、とある言語からCへのコンバータ作ったよ。
楽しかった。
- 48 :デフォルトの名無しさん :2019/09/18(水) 08:40:59.31 ID:vdXxwq0s0.net
- コンパイル前にソースを別のソフトで変換、置き換えさせて・・・
- 49 :デフォルトの名無しさん :2019/09/18(水) 09:00:45.02 ID:qgVAc8a30.net
- そしてCにもどるネズミの嫁入り
- 50 :デフォルトの名無しさん :2019/09/18(水) 12:47:21.47 ID:1Vhu13ZT0.net
- BNFとyaccのお勉強から
- 51 :デフォルトの名無しさん :2019/09/19(木) 15:34:03.81 ID:yCvdPLl+M.net
- #define ARR_NAME(n) arr##n
int arr0 [] = {0,0,0};
int arr1 [] = {1,1,1};
int* select_arr(int i){
return ARR_NAME(i);
}
これはどうしてコンパイルエラーになりますか?
ちなみにreturn ARR_NAME(0)だと正しく動きます。
- 52 :デフォルトの名無しさん :2019/09/19(木) 16:38:05.33 ID:1k0/HGmS0.net
- タイミングの問題だ
#defineはコンパイル前に解釈されるが
関数仮引数の値は実行時に渡される
実行時とはコンパイル〜リンクまで全て終わった後の話だ
だから関数仮引数の値を#defineで置き換えることができない
- 53 :さまよえる蟻人間 :2019/09/19(木) 17:34:18.54 ID:fzYUHnaEd.net
- arriという変数はない。プリプロセッサでは変数の中身までは見られない。
- 54 :デフォルトの名無しさん :2019/09/19(木) 18:13:33.75 ID:yCvdPLl+M.net
- 分かりやすかったです。ありがとう。
この機能の代替として良き方法はありますか?配列のdimを増やすしかないですか?
- 55 :さまよえる蟻人間 :2019/09/19(木) 18:22:24.66 ID:fzYUHnaEd.net
- 次元を増やすのがベストだろう。
- 56 :デフォルトの名無しさん :2019/09/19(木) 18:23:38.47 ID:QG4rugRZ0.net
- 配列変数名はコンパイル時には分かっているのだから
その配列のアドレスを格納したポインタ配列を用意してやる
- 57 :デフォルトの名無しさん :2019/09/19(木) 18:24:58.88 ID:Hv2f/JNH0.net
- >>55
これに1票。
- 58 :デフォルトの名無しさん :2019/09/20(金) 15:15:19.52 ID:X5/vL2CD0.net
- __、
iー'゙゙゙゙''''ー-,/^´ ゙';
| ゙ゝ....‐ .}
! |,
i____________......r'".'''゙ヽ . ..,,、
,,. -/ `'ー | .' 、
,..-'" l゙ __.. -''′ ./
. ,/ .`''''〜- ....---''''"゛ ,/
/.,, ,,..r'"
`''ー、,、 _,,,-'" `!、
/'r‐、 ,/´ /゙゙', ヽ
/ レ'゙ ´゙リ´ . `^^゙゙゙゙゙゙厂j .! │ . l
/ | .l. 丿/ / . / !
l ! .,,....--ー'''''''″ / .| (、 . !
_ .ィ‐¨゙゙'广゛ ...... ./ ,ノ.l. `'ィ ..,,_/
..-‐'"゛ 'l_゙'ーノ`' ..........,,_ .,, -" / │ .! ゙''''-.
.i''i ヽ、 / .! !
,)イ : ..,,,,,>u;;;;,、.__ _,,,.. / | "
/ . 、 ! .` |
!, ,!
." ゙
- 59 :デフォルトの名無しさん :2019/09/20(金) 17:51:25.98 ID:/93Uxf6sM.net
- それは増やさなくていいから
- 60 :デフォルトの名無しさん :2019/09/23(月) 14:43:33.00 ID:995jKG080.net
- グローバル変数を宣言する時、ヘッダファイルでextern int hogehoge;ってするよね。
*.cからヘッダファイルをincludeすると、
extern int hogehoge;を毎回書いたのと同じ状態になるの?
- 61 :デフォルトの名無しさん :2019/09/23(月) 14:47:57.02 ID:LA+tlTim0.net
- そうだよ
includeはファイルをそのまま展開するだけ
- 62 ::2019/09/23(月) 15:58:05.13 ID:ZLX7TvLd0.net
- >>60
被参照側(メイン)に int hogehoge と書く
参照側(サブ)には extern int hogehoge と書く
これが基本です、*.h を使うのなら
*.h に extern int hogehoge と書く
被参照側(メイン)に int hogehoge と書き、*.h をインクルード…@
参照側(サブ)は *.h をインクルード
@でヘッダと実体に矛盾がないかチェックします
- 63 :デフォルトの名無しさん :2019/09/23(月) 21:19:08.91 ID:995jKG080.net
- >>61-62
ありがとうございました
- 64 :デフォルトの名無しさん :2019/09/29(日) 22:13:04.83 ID:wBLVWLTJa.net
- お前がC言語を 使う前に
言っておきたい 事がある
かなりきびしい話もするが
俺の本音を 聴いておけ
初期化前の変数を 使ってはいけない
gets()関数も 使ってはいけない
文字列の長さと 配列サイズは別物だ
使い終わったバッファは ゼロクリアしろ
できる範囲じゃなくて 全部やって
https://twitter.com/satoru_takeuchi/status/1176429522687676416?s=03
(deleted an unsolicited ad)
- 65 :デフォルトの名無しさん :2019/09/30(月) 07:29:14.67 ID:II5MOx76M.net
- >>64
> 使い終わったバッファは ゼロクリアしろ
これは要らんやろ
- 66 :デフォルトの名無しさん :2019/09/30(月) 08:11:22.10 ID:gJLA2fQe0.net
- パスワードやらなんやらの機密情報を保存したバッファは解放前にゼロクリアしようねという話です。
任意のバッファという意味ではありません。失礼しました
- 67 :デフォルトの名無しさん :2019/09/30(月) 08:13:21.71 ID:VG7pOpzld.net
- 物凄く初歩的な質問で申し訳ないのですが
1%5のような余剰計算をした場合解は5になるのでしょうか0になるのでしょうか
- 68 :デフォルトの名無しさん :2019/09/30(月) 08:15:49.83 ID:VG7pOpzld.net
- すみません自己解決しました
- 69 :デフォルトの名無しさん :2019/09/30(月) 08:18:14.42 ID:II5MOx76M.net
- それC言語固有の話じゃないし個々にやるべきかプロセス毎にやるべきかとかのポリシーもあるし
- 70 :デフォルトの名無しさん :2019/09/30(月) 09:14:54.65 ID:eZfyppwla.net
- >>66
元のツイートした本人か。
ここ見に来ているとは思わなかった。
- 71 :デフォルトの名無しさん :2019/10/04(金) 06:41:48.31 ID:UVSgb2bf0.net
- ゼロクリアだとそこだけ異様にキレイなので逆に重要な値が入るものと察知される
乱数値でクリアすべき
- 72 :デフォルトの名無しさん :2019/10/04(金) 08:54:32.98 ID:iKrL2UhC0.net
- >>71
すごいコストがかかるよねそれ・・・
- 73 :デフォルトの名無しさん :2019/10/04(金) 09:53:27.82 ID:gjBxAXtl0.net
- 一々乱数計算しなくても数パターン乱数表つくってメモリコピーでもいいんじゃね?
- 74 :デフォルトの名無しさん :2019/10/04(金) 10:40:51.28 ID:0WBkPtDcx.net
- そもそもゼロクリアされてるbss領域なんて重要なもの以外にも大量に存在してるので攻撃者がピンポイントで判断することなどまず不可能。
逆に綺麗すぎる乱数のほうが目立つ。
- 75 :デフォルトの名無しさん :2019/10/04(金) 11:02:52.42 ID:uYF9K7e8M.net
- そこだけにするからバレると言うなら全部ゼロクリアすればいいってことでしょ
> 使い終わったバッファは ゼロクリアしろ
> できる範囲じゃなくて 全部やって
- 76 :デフォルトの名無しさん :2019/10/04(金) 11:23:25.74 ID:rAj4fuhv0.net
- 今の流行りは不変プログラミング
スコープが短い云々ではなく使い捨て
再利用なんてしない
- 77 :デフォルトの名無しさん :2019/10/04(金) 11:28:53.13 ID:MVQV/kgg0.net
- アメリカ国防省のDoD5200.28-Mとかね
- 78 :デフォルトの名無しさん :2019/10/04(金) 11:42:07.63 ID:TDKY2TUM0.net
- HDDだと少数回のゼロクリアじゃデータ復旧される可能性が残るけどメモリだったらその心配はないのかね?
- 79 :デフォルトの名無しさん :2019/10/04(金) 11:48:30.26 ID:0WBkPtDcx.net
- >>78
DRAMはリフレッシュがあるので原理的に不可能な気がする。
SRAMもフリップフロップなら不可能な気がする。
- 80 :デフォルトの名無しさん :2019/10/04(金) 14:20:51.26 ID:hcjI0QEWa.net
- スワップされてディスクに書き込まれたら終わりなのでスワップされないようにする必要がある。
- 81 :デフォルトの名無しさん :2019/10/04(金) 14:34:25.76 ID:TDKY2TUM0.net
- windowsの細かな動きがわからんけどスリープとかでメモリ内容を全部ディスクに保存する動きしない?
するなら言語レベルではどう頑張ってもディスクにデータを書き込まずにスルーする術なんてないんじゃなかろうか?
ということは漏洩防止目的でバッファをゼロクリアする意味は無い?
windows以外は知らん
- 82 :デフォルトの名無しさん :2019/10/04(金) 15:03:33.90 ID:gjBxAXtl0.net
- スリープ処理って関数実行中でも起きるの?
メッセージ待ちとかで起こると思ってた。
- 83 :デフォルトの名無しさん :2019/10/04(金) 15:23:30.09 ID:0WBkPtDcx.net
- 多分priemptされてたら実行状態でも普通にswap outされるだろうな。
- 84 :デフォルトの名無しさん :2019/10/04(金) 15:25:19.34 ID:uYF9K7e8M.net
- スワップに書いてある内容がどのプロセスのものかをどうやって知るつもりなんだろう…
てかそんなのがわかる状況ならそもそもセキュリティうんぬん言ってもしょうがないと思う
- 85 :デフォルトの名無しさん :2019/10/04(金) 15:35:25.79 ID:hcjI0QEWa.net
- Linuxにはmlock()がある。
https://linuxjm.osdn.jp/html/LDP_man-pages/man2/mlock.2.html
多分他のOSにも似たようなのはある筈。
なければ高度なセキュリティが必要なプログラムは作れない。
- 86 :デフォルトの名無しさん :2019/10/04(金) 15:43:12.94 ID:hcjI0QEWa.net
- サスペンドでメモリ内容が全てディスクに書き込まれるような場合は暗号化サスペンドイメージを使うように予め設定しておくしかないようだ。(もはや言語の問題ではない。OSの問題)。
- 87 :デフォルトの名無しさん :2019/10/04(金) 15:53:58.62 ID:TDKY2TUM0.net
- 最終的にはOSやらハードウェアファームやらのレベルの話に行き着くんで上位レイヤーでの完全対応は無理
ならば他アプリが自アプリのバッファにアクセスできないよう下位レイヤーが保証してるならバッファクリアは不要ということになる?
そんなレベルで心配が必要なことは個人的に触ることは無いと思うけど
- 88 :デフォルトの名無しさん :2019/10/04(金) 17:34:20.04 ID:SD7r35lfM.net
- 関数ポインタの書式と宣言方法がわからぬ(´・ω・`)
だれか助けてクレメンス
- 89 :デフォルトの名無しさん :2019/10/04(金) 18:02:32.55 ID:TP3p64JiM.net
- ここで講義始めるわけに行かないんだからもっとspecificに頼むよ
- 90 :デフォルトの名無しさん :2019/10/05(土) 01:05:45.82 ID:JlWvx+CH0.net
- Makefileなどに書かれているCCって「C Compiler」の略でしょうか?
- 91 :デフォルトの名無しさん :2019/10/05(土) 08:03:44.94 ID:9T2eUTn80.net
- UNIXのccコマンドじゃね?
- 92 :デフォルトの名無しさん :2019/10/05(土) 20:19:21.97 ID:JlWvx+CH0.net
- http://www2.scphys.kyoto-u.ac.jp/BIRDnet/manuals/A1_BIRDintro/cc1.html
C コンパイラーっぽいですね
- 93 :デフォルトの名無しさん :2019/10/07(月) 09:08:10.49 ID:wNNRR3l10.net
- ピザ好きな不老不死の女の子かと思った
- 94 :デフォルトの名無しさん :2019/10/07(月) 19:40:47.02 ID:Xs+XlBV4d.net
- 250億分の1のドム?
- 95 :デフォルトの名無しさん :2019/10/08(火) 06:14:41.38 ID:T9JnCGiw0.net
- Card Captor
- 96 :デフォルトの名無しさん :2019/10/08(火) 07:56:55.95 ID:/Tt7z8U00.net
- さくらちゃん!
- 97 :デフォルトの名無しさん :2019/10/08(火) 10:23:23.04 ID:UHIrT7RMa.net
- Chupa Chups
- 98 :デフォルトの名無しさん :2019/10/10(木) 14:01:00.49 ID:at1yx75i0.net
- このスレこんなに過疎ってたっけ
- 99 :デフォルトの名無しさん :2019/10/10(木) 20:53:57.73 ID:f2z6TkRsa.net
- まずは燃料投下する必要があるんじゃないかな。C言語はダメとかクソとか、あるいは引数にvoidなんて見たことないとか、そういったことを書けば火が付いて3スレぐらいあっという間に消費すると思うよ。
- 100 :デフォルトの名無しさん :2019/10/10(木) 21:22:58.67 ID:uAIxYTc70.net
- void君呼ばれてるよ〜
- 101 :デフォルトの名無しさん :2019/10/10(木) 21:27:26.48 ID:uUO69neG0.net
- void君だと日下部を連想しちゃう
- 102 :デフォルトの名無しさん :2019/10/10(木) 23:54:41.04 ID:a+kHg1ZD0.net
- C言語がクソなのは誰の目にも明らかだから燃料にもならない
何を犠牲にしてでも最速を求めなければならないとか
今時キロバイト単位のメモリしか載ってないとかで渋々使わざるを得ないだけ
- 103 ::2019/10/11(金) 00:09:31.72 ID:pVz4+WpI0.net
- >>102
プログラムに関係する問題を人に伝えたく、かつ、言語固有の事情をできるだけ排除したいときにあえて c で表現することはあります、普段書きはすでに c++ ではあるのですが
https://mevius.5ch.net/test/read.cgi/tech/1551247748/442-443
- 104 :デフォルトの名無しさん :2019/10/11(金) 07:30:31.94 ID:nZkXsNOYd.net
- だな
- 105 :デフォルトの名無しさん :2019/10/11(金) 07:53:34.25 ID:3LFsZ0AAx.net
- かと言ってC++にそんなにメリット感じないんだよなぁ。
- 106 :デフォルトの名無しさん :2019/10/11(金) 08:03:12.82 ID:tJJSdY6IM.net
- python最強!python最強!python最強!
- 107 :デフォルトの名無しさん :2019/10/15(火) 23:35:16.76 ID:j31F4ljf0.net
- pythonスレ、寂れているぞ
- 108 :デフォルトの名無しさん :2019/10/15(火) 23:36:55.58 ID:41wob9vL0.net
- Cスレより寂れてから出直してこい
- 109 ::2019/10/18(Fri) 13:14:43 ID:fz6Ul+V20.net
- あんなに活気のあったスレがこんなに寂れるとは
5chから人が減っているという噂は本当だったか・・・
- 110 ::2019/10/18(Fri) 13:17:46 ID:TRDqZrvk0.net
- 2chに戻れば盛況になると思うよ
- 111 :デフォルトの名無しさん (アウアウウー Sa43-n65Q):2019/10/18(Fri) 13:50:16 ID:Re5f6/3aa.net
- 誰かYouTuberになって布教活動すれば良いんじゃないか?
この際VTuberで美少女だけど実はおっさんがやってるってのでも良い。
- 112 ::2019/10/18(Fri) 14:13:00 ID:fz6Ul+V20.net
- 名前はCちゃんだな
バストもCちゃん
- 113 ::2019/10/18(金) 20:01:00.56 ID:6mXxrgrB0.net
- >>109
C 宿題スレも激しく活況だったのに、ね、…
- 114 :デフォルトの名無しさん :2019/10/18(金) 22:18:29.15 ID:Re5f6/3aa.net
- そう言えば中国にもYouTubeみたいなのがあってYouTuberのようなのをやってる人も居るのだが、顔を若く変換するアプリ使って40代だか50代のおばちゃんが20代ぐらいに見せかけてやっていたってのがあったなあ。
そういうの使えばお前らのハゲもフサフサになるに違いない。
- 115 :デフォルトの名無しさん :2019/10/21(月) 17:55:25.84 ID:SxBFh1HX0.net
- 顔を変換するアプリと言えばアダルトサイトに芸能人の顔を合成したAVが上がってたな
見た感じ本物と区別付かないぐらい精巧だった
個人的にここ最近の技術革新では一番衝撃的だったな
- 116 :デフォルトの名無しさん (ワッチョイ 9f95-S3Tg):2019/10/21(月) 20:28:50 ID:niRnsl0k0.net
- 画角やライティングに異常なし?
- 117 :デフォルトの名無しさん (ワッチョイ 926f-iSkz):2019/10/21(月) 21:24:45 ID:Pn9LVi/O0.net
- >>111
>>114
のらきゃっと + 顔バレあたりで現代に触れよう
- 118 :デフォルトの名無しさん :2019/10/22(火) 11:58:42.07 ID:w6Pn7J3f0.net
- printf("%*d", width, num);
と
printf("%2$*1$d", width, num);
がなぜ等価でですか?だいたい等価?正確に等価?
- 119 :デフォルトの名無しさん :2019/10/22(火) 12:33:17.32 ID:Cu6k19+70.net
- >>116
異常なし
すごい自然な合成
- 120 :デフォルトの名無しさん :2019/10/24(木) 00:19:19.09 ID:Wak+wQ5e0.net
- ずばり日本人って利己的な奴ばっかだから会話から何まで発展しようがないんだな。
後はもう負の連鎖。
- 121 :デフォルトの名無しさん :2019/10/24(木) 04:25:22.54 ID:nZ5fKqYm0.net
- おまえ利己的だな
- 122 :デフォルトの名無しさん :2019/10/24(木) 13:03:27.14 ID:4BUO8cnl0.net
- ワッチョイ取ったほうがいいんじゃないの?
なんでワッチョイ付けてるの?
- 123 :デフォルトの名無しさん :2019/10/24(木) 13:13:49.39 ID:rzYbrWLoM.net
- 人を寄せ付けないため
- 124 :デフォルトの名無しさん :2019/10/24(木) 16:43:51.20 ID:gElHX+jGa.net
- 荒らされることで活気を保つというのもまたナンだなあ
- 125 :デフォルトの名無しさん :2019/10/25(金) 06:37:52.18 ID:2lz/0LgC0.net
- 本音だけど、何処の板もそうだけど、噛みついてくるのはすぐさま来るけど親身になって
答えてもそのまま逃げる奴ばっかだし、そりゃ人減るよ。
答える奴には聖人を求める癖に自分がカスすぎるじゃん。
- 126 :デフォルトの名無しさん :2019/10/25(金) 07:36:46.68 ID:1flCt2Jcd.net
- 他人に対する期待が多すぎるやつは
いつも文句ばっかりぬかしてて
思い通りにならないと発狂する
- 127 :デフォルトの名無しさん :2019/10/25(金) 12:45:36.00 ID:f89Z34lqa.net
- 期待が大きいというか、依存だよね。
- 128 :デフォルトの名無しさん :2019/10/25(金) 18:54:11.10 ID:1g0JfiSRM.net
- 依存じゃなくて利用だな
他人なんて自分がラクするための道具でしかないという
- 129 :デフォルトの名無しさん :2019/10/25(金) 20:51:37.05 ID:f89Z34lqa.net
- 道具に依存している
- 130 :デフォルトの名無しさん :2019/10/26(土) 12:46:18.79 ID:EiwJrseOM.net
- なくても困らない代わりはいくらでもあるものに対して依存しているとは言わない
- 131 :デフォルトの名無しさん :2019/10/26(土) 12:49:03.78 ID:bOvK5kTL0.net
- 5ちゃんねる依存症
- 132 :デフォルトの名無しさん :2019/10/26(土) 21:16:39.88 ID:2eoY+VbT0.net
- 依存できなくなると怒るんだよ
- 133 :デフォルトの名無しさん :2019/11/05(火) 20:25:04.26 ID:AZeD0bR10.net
- $ ctags -R /usr/include/alsa
をしても、int snd_pcm_open(...); 等が tags に記載されない。
どうして? どうしたら?
- 134 :デフォルトの名無しさん :2019/11/07(木) 06:31:27.14 ID:+Fv/+mh50.net
- >>133
ctags --c-kinds=+p -R /usr/include/alsa
でどうだろ。
見当つくだろうけど「Cのプロトタイプ宣言部分も出力に加える」の意。
どうして、の答えは「デフォルトではプロトタイプ宣言部は対象外だから」だね。
- 135 :デフォルトの名無しさん :2019/11/11(月) 23:11:25.01 ID:W9timUKI0.net
- 構造体のメンバ変数に、関数のポインタ変数を入れて、クラスのメソッドのような感じで使ったりできると思うけど、そういう使い方って現実性あるかな?
- 136 :デフォルトの名無しさん :2019/11/11(月) 23:22:53.41 ID:zH1aWpOc0.net
- そういうふうにCでOOPするのが昔流行った。
- 137 :デフォルトの名無しさん :2019/11/12(火) 00:07:22.48 ID:FaYMVIJ40.net
- >>135
Linuxとかで今でも使われまくり
https://elixir.bootlin.com/linux/latest/source/include/linux/fs.h#L1789
- 138 :デフォルトの名無しさん :2019/11/12(火) 09:07:31.78 ID:lfRZP5P70.net
- >>135
デバイスドライバのたぐいは大体それのオンパレードだよね
- 139 :デフォルトの名無しさん :2019/11/12(火) 09:36:57.66 ID:uG6HIbdYF.net
- >>135
普通
>>137
便利だよね
- 140 :デフォルトの名無しさん :2019/11/12(火) 11:31:00.10 ID:H6DlknKxa.net
- >>135
C++がCへのコンバータだった頃はクラスをそんな風に変換してたんじゃないかな。
今はコンパイラが内部的にやってるんだろうけど。
- 141 :デフォルトの名無しさん :2019/11/12(火) 19:07:08.23 ID:4xumfLcka.net
- 組み込みプログラマになりたいんだけど入門書やった後は何したらいいの?
- 142 :デフォルトの名無しさん :2019/11/12(火) 19:10:21.84 ID:I0vQskxnF.net
- 中学生なら高校逝け
高校生なら大学逝け
- 143 :デフォルトの名無しさん :2019/11/12(火) 19:20:12.48 ID:4xumfLcka.net
- 社会人なら?
- 144 :デフォルトの名無しさん :2019/11/12(火) 19:24:17.50 ID:I0vQskxnF.net
- そんな質問の仕方で生きていけると思ってるのか?
自分で考えろ
- 145 :デフォルトの名無しさん :2019/11/12(火) 19:26:00.59 ID:D/uXBQyj0.net
- LチカへGo
- 146 :デフォルトの名無しさん :2019/11/12(火) 19:29:46.05 ID:4xumfLcka.net
- >>144
サンキューポークピッツ
- 147 :デフォルトの名無しさん :2019/11/12(火) 20:32:17.44 ID:mKGma2960.net
- >>141
横井与次郎さんの本が愛読書だったな、俺っち
手垢で真っ黒ボロボロ
- 148 :デフォルトの名無しさん :2019/11/12(火) 20:34:21.51 ID:mKGma2960.net
- サルのようにアセンブラ書きまくってた
- 149 :デフォルトの名無しさん :2019/11/12(火) 20:52:53.27 ID:krWpkqwCa.net
- 組み込み用の何かを買ってきて何か作れば良いのでは?
まあしかしこの頃は小さい組み込み用のやつでもLinux動くのあるし、良い時代になったもんだな。
- 150 :デフォルトの名無しさん :2019/11/12(火) 20:59:56.71 ID:hX4IVAaB0.net
- >>141
PICとかハードを直接イジれるやつを隅から隅までイジれ。
逆にラズパイとかはお勧めできない。
- 151 :デフォルトの名無しさん :2019/11/13(水) 10:23:05.12 ID:OceCV+VLF.net
- スレチ
こちらへどうぞ
https://rio2016.5ch.net/test/read.cgi/denki/1475932454/
- 152 :デフォルトの名無しさん :2019/11/13(水) 10:24:21.92 ID:OceCV+VLF.net
- こっちか
https://rio2016.5ch.net/test/read.cgi/denki/1556619799/
- 153 :デフォルトの名無しさん :2019/11/13(水) 17:39:08.11 ID:G8O1eV9/a.net
- 30日でできる!OS自作入門ってやつは組み込みの知識としては全く必要ない?
なんか楽しそうだからC言語の入門書終わったらやろうと思ってるんだけど
- 154 :デフォルトの名無しさん :2019/11/13(水) 18:01:06.50 ID:IhNMqz4FM.net
- >>153
あの本はCPUの知識ないと何をしてるか分からないまま終わると思う
だから知識が増えた実感も感動も少ない(経験談)
揃えるツールも多いし著者が用意した奴だし
個人的にオススメの勉強法は自分で考えたオリジナル言語をCのソースに変換することかな
文字列処理の知識で実現できてなおかつC言語に詳しくなれるし、他言語の構文を学ぶきっかけにもなる
- 155 :デフォルトの名無しさん :2019/11/13(水) 18:01:38.54 ID:3gCJP2hx0.net
- 楽しそうだと思うものをやるのが一番学習には向いてる
組み込みも幅は広くてOSがあったりなかったり様々
やって全く不要だったとはならんと思うよ
- 156 :デフォルトの名無しさん :2019/11/13(水) 18:17:24.08 ID:G8O1eV9/a.net
- Arduinoはダメ?
- 157 :デフォルトの名無しさん :2019/11/13(水) 18:56:19.16 ID:cq8qXzOO0.net
- 何を持ってダメ?なのかがわからんから答えようがない
何使ったって楽しく勉強できるなら関係なくない?
勉強すれば次が見えることもある
- 158 :デフォルトの名無しさん :2019/11/13(水) 18:59:21.12 ID:kE3A4AyF0.net
- オームの法則からやった方がいいんじゃねえの
- 159 :デフォルトの名無しさん :2019/11/13(水) 19:10:14.39 ID:G8O1eV9/a.net
- >>157
ラズパイはダメってレスがあるからさ。Arduinoもダメなのかな?と思ってさ。
とりあえずやってみるわサンキュー
>>158
なんで?
- 160 :デフォルトの名無しさん :2019/11/13(水) 19:19:54.35 ID:puH+izSFM.net
- 組み込みは扱うものの範囲がベラボーに広いからターゲットが決まってないないなら
予備知識なんてそれこそ有りとあらゆる事を学ばなきゃならなくて時間の無駄
いきなりやりたいことに手を付けるとか目的の会社に就職する算段するとかの方が現実的
- 161 :デフォルトの名無しさん :2019/11/13(水) 19:24:06.56 ID:Fqkv69gYd.net
- 興味あるところを片っ端からやればいいよ
最近の新人はまともにコーディングしたことがない人が多くて驚く
- 162 ::2019/11/13(水) 20:14:16.53 ID:ESFhNQze0.net
- >>161
>興味あるところを片っ端からやればいいよ
至言ですね…
つまるところアドバイスできるとすれば、この言葉にまとまってしまいますね
- 163 :デフォルトの名無しさん :2019/11/13(水) 21:24:12.52 ID:h+5DYY+D0.net
- ラズパイでもArduinoでもPICでもブレッドボード用意してまずはLチカから
トランジスタや7セグをやって、スイッチからの入力などとれるようになったら
またそこで考える
- 164 :デフォルトの名無しさん (アウアウウー Sa45-coos):2019/11/14(Thu) 03:35:32 ID:YiNpU217a.net
- >>154
この本アセンブリとC言語の勉強になったりしない?
- 165 :デフォルトの名無しさん :2019/11/14(木) 09:19:52.63 ID:J2fP3wLz0.net
- >>154
式をコンパイルするところでだいたい挫折する
- 166 :デフォルトの名無しさん :2019/11/14(木) 11:24:43.32 ID:Owl20mAsF.net
- >>164
ならない
はじめて読む486の方が486倍マシ
- 167 :デフォルトの名無しさん :2019/11/14(木) 12:42:01.31 ID:bgqE36PV0.net
- じゃあやーめた
- 168 :デフォルトの名無しさん :2019/11/14(木) 13:11:45.63 ID:hMO8QTtJd.net
- まずはLチカでオームの法則を押さえよう
次はhFEだ フォトトラとダーリントン
フォトカプラとHブリッジあたりまでできるようになれば
あとはどうにでも
- 169 :デフォルトの名無しさん :2019/11/14(木) 13:13:53.45 ID:HGG0mhgt0.net
- リレーかちゃかちゃも捨てがたい。
- 170 :デフォルトの名無しさん :2019/11/14(木) 13:20:17.46 ID:/NpdgKVAd.net
- 組み込みだろうが回路は回路の専門家が考える
ソフトの新人が回路に意見しても聞いてくれないよ
- 171 :デフォルトの名無しさん :2019/11/14(木) 13:23:50.41 ID:pX7h0rWU0.net
- 制御系の場合は、LTIシステム、Z変換など制御理論の基礎知識がないとそもそもプログラミングが出来ない
どの様にプログラムすれば良いのか迷い途方に暮れることになる
- 172 :デフォルトの名無しさん :2019/11/14(木) 13:26:39.57 ID:/NpdgKVAd.net
- そういうのは実際に使う場面になってから勉強すればいいよ
ソフトは範囲が広すぎてどうせ全て学ぶのは無理だから
- 173 :デフォルトの名無しさん :2019/11/14(木) 13:47:33.26 ID:YSMwOav4a.net
- そういえば抵抗のカラーコードって色弱の人とかには辛いんじゃないか?
と、今ごろ気づく。
- 174 :デフォルトの名無しさん :2019/11/14(木) 14:24:10.71 ID:tET/gf2zx.net
- おじさんが若い頃は新人はPIOドライバを書くことから始めてたけど今じゃそれさえも最初からドライバやSDKで用意されてるものが多いしな。
組み込みソフト技術者を自称してる人でも最近じゃリセットエントリからSDRAM設定やスタック設定やセクション初期化とかmainがコールされるまでの部分を書ける人は少なくなってるね。
- 175 :デフォルトの名無しさん :2019/11/14(木) 16:16:57.62 ID:hMO8QTtJd.net
- 組み込み分野で、私はソフト屋でハードはわかりません、なんてぬかすやつはビルから投げ捨てろ
- 176 :デフォルトの名無しさん :2019/11/14(木) 17:44:17.32 ID:KJEtP35mp.net
- >>173
色弱で前までは気合で読んでたけど最近はスマホアプリとかで読んだりもする
- 177 :デフォルトの名無しさん :2019/11/14(木) 18:45:54.05 ID:YSMwOav4a.net
- なるほど。やはりそうか。
スマホアプリあってよかったな。
- 178 :デフォルトの名無しさん :2019/11/14(木) 18:51:25.20 ID:wXs4N2j20.net
- 今時カラーコード?
- 179 :デフォルトの名無しさん :2019/11/14(木) 19:41:22.93 ID:YiNpU217a.net
- ものづくりC言語塾とかいうプログラミングの勉強サイト見つけたんだけどわかりやすいのここ
- 180 :デフォルトの名無しさん :2019/11/14(木) 19:56:34.37 ID:KjmBL3+S0.net
- 無駄なイメージ画像が矢鱈と多いね
チャッチャと本題に入ればいいのに
肝心のコードのフォントサイズ一回り小さくしてね?
逆だろ逆
- 181 :デフォルトの名無しさん :2019/11/14(木) 21:05:18.98 ID:mZpo/vPM0.net
- 分野的には制御&組み込みだが論理回路とかは初歩の初歩くらいしか分からんわ
別に組み込み屋を自称する気もないけど
- 182 :デフォルトの名無しさん :2019/11/15(金) 00:45:20.33 ID:r8gV+bPL0.net
- 建築土方で分ける方が良いかも。知らんけど
- 183 :デフォルトの名無しさん :2019/11/15(金) 00:59:59.43 ID:YJCQuSug0.net
- ポインタを返す関数の中身を他の変数にコピーしたいとき
int a;
a = *func();
みたいな事をしても良いんでしょうか?
コンパイルしたら動きましたが…
普通こういうことはしませんか?
- 184 :デフォルトの名無しさん :2019/11/15(金) 01:54:01.65 ID:GhKndF/D0.net
- funcが返す値を開放する責任がないなら問題ない
- 185 :デフォルトの名無しさん :2019/11/15(金) 02:21:33.91 ID:Re5Vtpoc0.net
- >>183
これなにか使い道あるの?
- 186 :デフォルトの名無しさん (ワッチョイ c2c5-iGNt):2019/11/15(金) 05:47:36 ID:Re5Vtpoc0.net
- ああ空目してたわスマソ
- 187 :デフォルトの名無しさん :2019/11/15(金) 09:12:52.77 ID:uuXKcbIGd.net
- >>181
慢心せず謙虚でいるのはいいことだが
やる気のなさの言い訳にするやつに
同調はしないってことさ
- 188 :デフォルトの名無しさん :2019/11/15(金) 09:35:58.90 ID:rGVJWIdvM.net
- 制御屋なら論理回路よりも伝達関数
- 189 :デフォルトの名無しさん :2019/11/15(金) 10:29:58.55 ID:kGxI2dsUM.net
- >>183
func() の作り方次第
int x = 123;
return &x;
とかやってたらダメ
- 190 :デフォルトの名無しさん :2019/11/15(金) 11:04:39.89 ID:uuXKcbIGd.net
- >>188
なぜ、よりもと択一選択するんだ?
- 191 :デフォルトの名無しさん :2019/11/15(金) 11:25:31.01 ID:rGVJWIdvM.net
- 極論すれば対象をモデル化して状態方程式をプログラムで逐次演算するアルゴリズムを実装するのが本来の制御系の組み込みソフト
論理回路のソフト処理への代替はコストダウンの一環で取り込むことはあってもあくまでオマケ
- 192 :デフォルトの名無しさん :2019/11/15(金) 11:37:39.91 ID:qkK0C17la.net
- >>178
抵抗って昔からカラーコードで抵抗値表してるのでは?今は変わったの?
- 193 :デフォルトの名無しさん :2019/11/15(金) 11:43:07.73 ID:bb6Q721I0.net
- >>192
部品を小さくすると高速化できるので
チップ部品が増えたが、そこにはカラーコードは使われていないからでは。
- 194 :デフォルトの名無しさん :2019/11/15(金) 11:46:04.74 ID:qkK0C17la.net
- >>183
良いんだけどNULL返されたらおしまいなのでそのためにワンクッション入れるのが普通なのではないな。
実際 localtime() なんかはエラーの時にNULL返す事になってるしな。自分の所の変数にコピーする場合はまずポインタで受けてNULLでなければポインタの指してる先がコピーされるように書くよ。
- 195 :デフォルトの名無しさん :2019/11/15(金) 14:01:09.16 ID:d61354ir0.net
- >>192
チップ抵抗器って見たことない?
- 196 :デフォルトの名無しさん :2019/11/15(金) 14:54:35.89 ID:76R0IrhIF.net
- >>180
典型的なアフィwebサイトと同じ造りなんだよな
一目でそっとじ
- 197 :デフォルトの名無しさん :2019/11/15(金) 15:03:20.79 ID:qkK0C17la.net
- >>193>>195
あの小さい四角いやつか。
電子工作何十年もやってなくて知らなかった。
ググって画像見た。
- 198 :デフォルトの名無しさん :2019/11/15(金) 16:35:54.83 ID:uuXKcbIGd.net
- core-i7のパッケージ天面にも貼ってあるから電子工作してなくても見かけることはありそうだが
- 199 :デフォルトの名無しさん :2019/11/15(金) 17:24:07.85 ID:xeYG9inD0.net
- 見かけていてもアレが何なのか分からない、だろう
- 200 :デフォルトの名無しさん :2019/11/15(金) 17:31:28.56 ID:pd2oXw5yd.net
- 最小は0201かな
3216とかは巨大に見える
- 201 :デフォルトの名無しさん :2019/11/15(金) 17:32:50.90 ID:47DeWFED0.net
- マイコン、ラズパイ、PLC, HDL, Rust
ニコ生では、HDLまで行ってるw
- 202 :デフォルトの名無しさん :2019/11/15(金) 17:44:35.54 ID:DqSPL00u0.net
- https://ideone.com/y2Ogra
で0.3がFalseになるのはわかるのですが、0.2がTrueになるのはなぜですか?
- 203 :デフォルトの名無しさん :2019/11/15(金) 17:49:31.04 ID:pd2oXw5yd.net
- 一応環境依存
内部が2進数の浮動小数点なら
(普通の範囲なら)2倍は正確
0.3がfalseになるのがわかるなら
わかりそうなもんだけど
- 204 :デフォルトの名無しさん :2019/11/15(金) 17:49:38.82 ID:DqSPL00u0.net
- 精度の問題?
- 205 :デフォルトの名無しさん :2019/11/15(金) 17:50:48.82 ID:DqSPL00u0.net
- >>203
ありがとうございました
- 206 :デフォルトの名無しさん :2019/11/15(金) 17:51:24.03 ID:NLCWqdB7F.net
- double
https://ideone.com/9COXkq
0.2 True
0.3 False
--------
float
https://ideone.com/wzvO20
0.2 True
0.3 True
- 207 :デフォルトの名無しさん :2019/11/15(金) 17:51:44.04 ID:pd2oXw5yd.net
- これでわかったのかよ
多分わかってない
- 208 :デフォルトの名無しさん :2019/11/15(金) 17:57:08.67 ID:pd2oXw5yd.net
- 小数は無限個あるが
doubleやfloatで表現出来る値は有限個
だから正確に表す事が出来る小数はごく一部となる
ほとんどの環境では0.1を正確に表す事が出来ない
だから近似になる
0.1の近似を3個足したものの近似と
0.3の近似
これが同じ値になるかどうかは運しだい
- 209 :デフォルトの名無しさん :2019/11/15(金) 18:11:10.06 ID:pd2oXw5yd.net
- 多くの環境では
floatで24bit整数の範囲は正確に表現出来る
doubleで53bit整数の範囲は正確に表現出来る
floatでもdoubleでもlong doubleでも
元の値に対して2^nをかけても2^nで割っても
(それが普通に表現出来る範囲であれば)誤差はない
1/n は、nが2^mの形でない場合は必ず誤差が出る
このくらい覚えて置けばいい
- 210 :デフォルトの名無しさん :2019/11/15(金) 18:18:26.55 ID:NeivSIGq0.net
- https://ideone.com/dkY9yU
- 211 :デフォルトの名無しさん :2019/11/15(金) 18:24:08.60 ID:uUFlvtLt0.net
- 趣味でC言語で遊んでるんだけど入門書読んで、
printf scanf if else switch等使ったプログラム作ったんだけど次に何をしたらいいかわからへんわ。
- 212 :デフォルトの名無しさん :2019/11/15(金) 18:24:52.50 ID:uUFlvtLt0.net
- あんまりしっかりとポインタは勉強できてないんだけど、
ポインタっていつ使うの?って感じ。
組み込みやらんと基本的には使わない?
- 213 :デフォルトの名無しさん :2019/11/15(金) 18:35:40.25 ID:SL2qDcaa0.net
- 組み込みじゃなくてもある程度大きなプログラムになればガンガン使う
むしろ一番使う型になるレベルで使うのがポインタになることもあるくらいには使う
- 214 :デフォルトの名無しさん :2019/11/15(金) 18:37:30.96 ID:SL2qDcaa0.net
- ていうかscanfでポインタ使ってるで
文字列出力したなたprintfでも使ってる
はじめは実感無いかもしれんが
- 215 :デフォルトの名無しさん :2019/11/15(金) 18:43:16.92 ID:uUFlvtLt0.net
- 全く実感ない
printfってどうやってできてんの
- 216 :デフォルトの名無しさん :2019/11/15(金) 19:07:35.33 ID:uUFlvtLt0.net
- とりあえずポインタの勉強はやり直すわ。
次にArduinoでも触ってみるか
- 217 :デフォルトの名無しさん :2019/11/15(金) 19:17:18.51 ID:hD6OtsPU0.net
- オレオレprintf を実装しようとすると、鼻血が出そうで vsptrintf に○投げしてから加工する方向にいってしまう
- 218 :デフォルトの名無しさん :2019/11/15(金) 19:17:48.26 ID:SL2qDcaa0.net
- >>215
関数に値を渡すのはわかるよね?
printfって関数に出力して欲しい数値や文字を渡してる
この渡すときにCPUの動き的には複製されたものが渡される
数値なら複製しても対して問題ないけど文字列の場合なんかだと複製することで消費されるメモリが増えてしまう
だから文字列全部を複製なんかせずに文字列の先頭の場所だけ渡す
受け取ったprintf側ではその場所を元に文字列にアクセスする
この場所を指し示す仕組みがポインタと呼ばれるもの
10文字でも1000文字でも先頭の場所、つまりアドレスは4byteとかで表せるので情報の受け渡し効率が良い
正確には間違ってる部分もあるかもしれんがだいたいこんなイメージ
- 219 :デフォルトの名無しさん :2019/11/15(金) 19:23:26.49 ID:H7D23ViK0.net
- >>217
そもそもvsprintfのある環境ならprintfあるでしょ。
組み込みとかなら低レベルの1文字出力は作らないといけないけど。
- 220 :デフォルトの名無しさん :2019/11/15(金) 19:24:40.31 ID:pd2oXw5yd.net
- 出力先が特殊なprintfじゃね?
- 221 :デフォルトの名無しさん :2019/11/15(金) 19:30:11.03 ID:hD6OtsPU0.net
- >>220
そんな感じですです あと暗に頭にタイムスタンプ付加したりとか
VZエディタのASMソース見たときは、整数onlyでも結構複雑だった
- 222 :デフォルトの名無しさん :2019/11/15(金) 19:32:48.14 ID:uUFlvtLt0.net
- 産休。関数とポインタをもう一度やり直してくる
- 223 ::2019/11/15(金) 20:42:05.38 ID:yJ+o3fPw0.net
- >>211
welcome to https://mevius.5ch.net/test/read.cgi/tech/1564310397/
- 224 :デフォルトの名無しさん :2019/11/16(土) 00:52:24.12 ID:D8F8Ex6/0.net
- ポインタを使わないならCを使わない方がいいという程度にはポインタはCの肝
ポインタを使わないなら素直に安全で高級な言語を使った方がいい
- 225 :デフォルトの名無しさん :2019/11/16(土) 07:48:38.95 ID:fjjXSMO90.net
- エントリ関数を int main(int argc, char *argv[]) と書いた時点で
ポインタを使ってる、とも言えるんだよな。
int main(void) で始めてるかもしれんけど。
- 226 :デフォルトの名無しさん :2019/11/16(土) 08:31:42.30 ID:ptZ6lm890.net
- int main()しか使ってないわ。どういう時に使うんだっけそれ
- 227 :デフォルトの名無しさん :2019/11/16(土) 09:17:50.44 ID:sxDPEgRe0.net
- >>224
C言語を使う用途の多くは
組み込み、OS、ドライバ
だろ
簡単に言語を変えるとかいうなよ
- 228 :デフォルトの名無しさん :2019/11/16(土) 09:48:51.08 ID:+/ZlAd+w0.net
- コマンドラインから情報を受け取って処理したいときに使う
関数の引数と同じ
- 229 :デフォルトの名無しさん :2019/11/16(土) 09:56:15.61 ID:fbhJUidB0.net
- 言語を変えるのではなく
職業を変えるべきだなw
- 230 :デフォルトの名無しさん :2019/11/16(土) 10:15:36.12 ID:sxDPEgRe0.net
- ポインタの使い方を覚えるって言ってるんだから
それでいいじゃん
- 231 :デフォルトの名無しさん :2019/11/16(土) 10:31:31.82 ID:jtqy6mRLa.net
- C言語でOS作ってみたいんだけどなぁ。入門レベルじゃきびしいな
- 232 :デフォルトの名無しさん :2019/11/16(土) 10:50:41.32 ID:sxDPEgRe0.net
- アセンブラの経験が豊富ならなんとかなる
- 233 :デフォルトの名無しさん :2019/11/16(土) 10:59:49.49 ID:10CoeX0f0.net
- >>231
簡単なRTOSでもまともに作るならCだけで書くのは不可能。
- 234 :デフォルトの名無しさん :2019/11/16(土) 11:09:44.67 ID:lV5RucvDd.net
- Cだけで?
そりゃ無理だ
- 235 :デフォルトの名無しさん :2019/11/16(土) 11:34:35.99 ID:xKHzNgdA0.net
- >>234
ほんの少しインチキをするだけで、全てC言語で書ける
- 236 :デフォルトの名無しさん :2019/11/16(土) 12:06:40.29 ID:lV5RucvDd.net
- バイナリコード直接記述?
それはC言語で記述とは言わないような
インラインアセンブラも同じ
- 237 :デフォルトの名無しさん :2019/11/16(土) 22:07:42.30 ID:gv6Xc8ej0.net
- >>234
大半はCで行けそうな感じはするけどな。実際にUNIXやLinuxはそうだし。
厳密に完全に100%Cにするとなると最初からそれを考慮してCPU作らないとできないとは思うが、かといってその必要性はないな。研究目的ならわかるが。
- 238 :デフォルトの名無しさん :2019/11/17(日) 00:21:50.66 ID:CjHjsj5F0.net
- >>237
こういう知ったかして無知晒すバカはどうにかならんのかいな
- 239 :デフォルトの名無しさん (ワッチョイ 0295-iGNt):2019/11/17(日) 05:19:33 ID:oJzZE04E0.net
- 痛いのが好きなんでしょう
鞭も旨い
おそまつさまでした
- 240 :デフォルトの名無しさん (ワッチョイ 65e5-6HYk):2019/11/17(日) 06:34:34 ID:cZKVuoHK0.net
- >>237
100%Cでどうやって特権命令出すの?
Cプログラムが動き出せる最低限の準備は何だか知ってる?
- 241 :デフォルトの名無しさん :2019/11/17(日) 13:31:04.48 ID:Mp5WsRX6d.net
- 大半は
100%
話がかみあってない
- 242 :デフォルトの名無しさん :2019/11/17(日) 13:31:40.86 ID:Mp5WsRX6d.net
- 動き出すだけなら100%C言語って今時珍しくも無い
- 243 :デフォルトの名無しさん :2019/11/17(日) 14:11:44.51 ID:0F7CIe0FM.net
- スタートアップルーチンに頼らずにmain関数が自立起動するのか
- 244 :デフォルトの名無しさん :2019/11/17(日) 14:12:07.45 ID:SNu9npot0.net
- >>241
「すべてC言語で書ける」に突っ込み入れられてるだけだろ
>>242
OSの話だよ?
- 245 :デフォルトの名無しさん :2019/11/17(日) 14:26:46.20 ID:Aepb3ANuM.net
- > startup.s/head.s
明日から仕事来なくていいから。
- 246 :デフォルトの名無しさん :2019/11/17(日) 14:29:44.06 ID:AyzIbzU+0.net
- >>243
スタートアップをC言語で書くって話でしょ
まあ気合いでなんとかなるさ
- 247 :デフォルトの名無しさん :2019/11/17(日) 14:35:54.32 ID:cZKVuoHK0.net
- >>241
大半を100%とは言わないし、
100%CのUNIXやLinuxが大半でもない
話を逸らすな
- 248 :デフォルトの名無しさん :2019/11/17(日) 14:59:34.01 ID:Mp5WsRX6d.net
- スタートアップコードなら100%Cで書けるマイコンは珍しくない
OS 100%は無理
>>240が話題を追加したの
- 249 :デフォルトの名無しさん :2019/11/17(日) 15:17:17.70 ID:cZKVuoHK0.net
- 231 CでOS作ってみたい
233 RTOSでさえ無理
234 Cだけで?そりゃ無理
237 100%Cは最初からそれを考慮したCPUならできる ←キ
238 237はシッタカ
240 特権命令は?Cプログラムが動き出せる準備は?
241 大半は100% ←キ
243 スタートアップ不要のmainとは?
244 OSの話だよ?
247 話を逸らすな
248 スタートアップだOSじゃない ←キ
- 250 :デフォルトの名無しさん :2019/11/17(日) 15:58:49.57 ID:AyzIbzU+0.net
- >>248
>OS 100%は無理
そこも気合いでなんとかなりますぜ!
※気合いとは、次みたいなコードもCとみなしてしまう心意気を指す
int main=195;
- 251 :デフォルトの名無しさん :2019/11/17(日) 16:08:09.90 ID:Mp5WsRX6d.net
- >>240の
一行目は特権命令の話
二行目はスタートアップの話
に見える
- 252 :240 :2019/11/17(日) 16:20:24.24 ID:cZKVuoHK0.net
- >>251
違う
スタートアップの話なんざしてねえよ
おまえベアメタルの経験ゼロだな
- 253 :デフォルトの名無しさん :2019/11/17(日) 16:31:19.54 ID:Mp5WsRX6d.net
- いや、
どっちかっていうと趣味みたいなもんで
いろんなCPUでやってるけど
ただ単に
Cプログラムが動き出せる最低限の条件
と書いてあるんだからOS起動ではないでしょ
- 254 :デフォルトの名無しさん :2019/11/17(日) 16:47:01.78 ID:cZKVuoHK0.net
- 話の発端からずっとOSの話で
シッタカを指摘されて悔しくて悔しくて仕方なくて
スタートアップの話に逸らそうとしているのが約1名いるが
- 255 :デフォルトの名無しさん :2019/11/17(日) 16:58:35.66 ID:Mp5WsRX6d.net
- Cプログラムと書いてあるんだからCプログラムだろ
OSが起動出来る十分条件ではなく、必要条件の1個
特権命令もその一つ
もっとも特権命令が存在しないCPUや使わなくてもOSがつくれるCPUがあるので
必要条件ではないけど
- 256 :デフォルトの名無しさん :2019/11/17(日) 17:01:55.70 ID:Mp5WsRX6d.net
- OS起動ならOS起動と書くだろう
- 257 :デフォルトの名無しさん :2019/11/17(日) 17:02:57.82 ID:0F7CIe0FM.net
- ベアメタルであれば尚更main関数を呼び出す前に割込みベクターやスタックポインタの初期化などいろいろ準備が必要だろ
OSに頼れないので自分で準備しないとC
のプログラムは動き出せない
- 258 :デフォルトの名無しさん :2019/11/17(日) 17:04:33.98 ID:8gWobnsKa.net
- さて、次にどんな燃料を投下すれば炎上するか・・・
- 259 :デフォルトの名無しさん :2019/11/17(日) 17:06:07.28 ID:8gWobnsKa.net
- とりあえずCでOSでスレが活性化することはわかった。機会があったら他の掲示板でもやってみよう。
- 260 :デフォルトの名無しさん :2019/11/17(日) 18:37:16.77 ID:SNu9npot0.net
- >>250
レギュレーション違反ですw
>>236
> バイナリコード直接記述?
> それはC言語で記述とは言わないような
- 261 :デフォルトの名無しさん :2019/11/17(日) 18:42:52.80 ID:SNu9npot0.net
- >>257
最近のプロセッサはスタックポインタの初期値はリセット時に決められた番地から読み出すことが多いと思う
割り込みベクタはメモリーに書けばいいだけじゃね?
- 262 ::2019/11/17(日) 18:50:25.01 ID:kPaO6TXK0.net
- >>261
>スタックポインタの初期値はリセット時に決められた番地から読み出す
プログラムカウンタの方じゃないですか?
- 263 :デフォルトの名無しさん :2019/11/17(日) 18:53:56.89 ID:q2lewe9O0.net
- そのメモリ、いやもっと言えばバスの初期化はいつ誰がやるのかと。
- 264 :デフォルトの名無しさん :2019/11/18(月) 00:18:37.90 ID:FmL1TMPdd.net
- >>257
それってすなわちスタートアップコードですよね?
何度も書くけどスタートアップコードを全てCで書けるマイコンは今時珍しくないんですよ
- 265 :デフォルトの名無しさん :2019/11/18(月) 00:21:29.64 ID:FmL1TMPdd.net
- >>263
>>264
- 266 :デフォルトの名無しさん (ワッチョイ cdda-JEG5):2019/11/18(月) 03:24:34 ID:7xBgQ7dd0.net
- >>264
>>236の内容に加えてpragma疑似命令もC言語で記述とは言わないと思う
C言語の構文だけではスタートアップの記述は無理だろう
- 267 :デフォルトの名無しさん (ワッチョイ 8201-0xny):2019/11/18(月) 05:02:13 ID:lwVIqPwD0.net
- >>262
68KとかARM Cortex M
0x00000000~3 ⇒ SP
0x00000004~7 ⇒ PC
- 268 :デフォルトの名無しさん :2019/11/18(月) 07:58:00.65 ID:skAn5Z6md.net
- Cだけで起動できるCPUって、まさかとは思うがPICじゃねえだろうなwww
- 269 :デフォルトの名無しさん :2019/11/18(月) 08:51:34.79 ID:G/ZMLQZPx.net
- ROM/RAM内蔵のMCUとROM/RAM外付けのMPUのでは前提が違うので議論が噛み合わない。
>>257や>>263は後者の話をしている。
- 270 :デフォルトの名無しさん :2019/11/18(月) 08:57:47.13 ID:skAn5Z6md.net
- メモリの接続方法なんか全然関係ない
おまえアホか
- 271 :デフォルトの名無しさん :2019/11/18(月) 09:02:39.86 ID:skAn5Z6md.net
- PICと言った意味も通じてねえな、こりゃw
まさかの更に下をくぐりやがった
- 272 :デフォルトの名無しさん :2019/11/18(月) 09:05:45.96 ID:tFTaAL8Z0.net
- OSの無い組み込み環境なんて山ほど存在してて、その環境の中で全部Cのもで書いてるとこも存在してる
そもそもOS入れられるような環境とは言えないけど、こういうとこでCで書いてるものにOS的な動作をさせればそれはCのみで作ったOSと言えるのか?
おそらくどこからどこまでがOSの領域か?がずれてるから延々と罵り合いになるのでは?
- 273 :デフォルトの名無しさん :2019/11/18(月) 09:24:05.89 ID:skAn5Z6md.net
- ほらな、やっぱりPICと言った意味が通じてないw
- 274 :デフォルトの名無しさん :2019/11/18(月) 09:59:14.55 ID:FeTeb+YA0.net
- 私のために争わないで!
- 275 :デフォルトの名無しさん :2019/11/18(月) 10:07:53.61 ID:sZ0WVu3/d.net
- 最近PICを覚えたの?
- 276 :デフォルトの名無しさん :2019/11/18(月) 10:13:12.39 ID:sZ0WVu3/d.net
- ARMとかRXとかSHとか...
スタートアップ含めCだけで書ける
(全ての環境でとは言わないけど)
- 277 :デフォルトの名無しさん :2019/11/18(月) 10:27:02.98 ID:7xBgQ7dd0.net
- 組み込み用の処理系についてはメーカ独自拡張の独壇場
コンパイラ本体は
__section
__bank
__interrupt
など独自拡張多し
プリプロセッサも
#pragma
で設定弄らないといけないので注意
- 278 :デフォルトの名無しさん :2019/11/18(月) 10:37:04.01 ID:7xBgQ7dd0.net
- スタートアップファイルはC言語のような殆ど何か別言語に近い感覚
- 279 :デフォルトの名無しさん :2019/11/18(月) 11:31:43.74 ID:skAn5Z6md.net
- >>276
そのスタートアップはどうやって起動するんだよ
- 280 :デフォルトの名無しさん :2019/11/18(月) 12:06:28.17 ID:vV3s+CrDa.net
- ピクピク
- 281 :デフォルトの名無しさん :2019/11/18(月) 12:28:42.25 ID:S9/8fJfLM.net
- >>273
PIC8からPIC32まであるのにPICだけで話が通じると思ってるのはちょっと世間知らずすぎる
- 282 :デフォルトの名無しさん :2019/11/18(月) 12:29:47.29 ID:S9/8fJfLM.net
- >>276
具体的な環境書いてみ
configでスタートアップルーチンを生成してるとかのオチじゃないよね?
- 283 :デフォルトの名無しさん :2019/11/18(月) 12:31:32.89 ID:fft3f69BM.net
- いまなら、C言語だけで書いたOSをUEFI でロードして起動するとかできるだろ?
C言語で書けない操作は UEFI 側で設定したものをそのまま使う
- 284 :デフォルトの名無しさん :2019/11/18(月) 12:39:27.00 ID:1LpBylKv0.net
- PC-88/98のFDブートはFDの最初のセクタから256バイト読み込んで実行するんだっけ?
そのプログラム書くのに適したCコンパイラってあるの?
- 285 :デフォルトの名無しさん :2019/11/18(月) 12:59:12.61 ID:ahZzeXy3F.net
- CP/MにはBDSCが定番だった
- 286 :デフォルトの名無しさん :2019/11/18(月) 13:14:35.59 ID:IDpLc7eed.net
- >>279
人に聞かないで自分で調べて
- 287 :デフォルトの名無しさん :2019/11/18(月) 13:15:54.90 ID:skAn5Z6md.net
- >>282
俺もそんなことだろうと見ているw
- 288 :デフォルトの名無しさん :2019/11/18(月) 13:23:20.40 ID:IDpLc7eed.net
- 本気で知りたいならそれ相応の態度で
- 289 :デフォルトの名無しさん :2019/11/18(月) 14:18:07.35 ID:+ljooU2/0.net
- ビジネスで優秀な人材育成する上司は何を教えているのか?
https://www.youtube.com/watch?v=apxtSqxjw08&t=13s
マクドナルド伝説の店長が教える、最強店長になるために必要なこと
https://www.youtube.com/watch?v=0wMbR7JIeeQ&t=3154s
「最強の働き方」長時間労働やノウハウよりも大切なこと
https://www.youtube.com/watch?v=JnMHbI1-e3E&t=3606s
美容師の楽しさ再発見!やる気スイッチが入る働き方セミナー
https://www.youtube.com/watch?v=DGzXQT799oY
視覚障がいを乗り越えた活法家
https://www.youtube.com/watch?v=6IuY_K3uFdo&t=805s
- 290 :デフォルトの名無しさん :2019/11/18(月) 20:40:54.63 ID:oSLwFt1+0.net
- ヒヨッ子が物を知らねえのは別にいいんだよ、当たり前
シッタカこくのと指摘されてからの逆ギレが攻撃対象になるんだ
- 291 :デフォルトの名無しさん :2019/11/18(月) 20:50:41.53 ID:Zo9NWI12M.net
- >>283
gccの場合は自動的にcrt0-efi-x86_64.Sをリンクするようだが
- 292 :デフォルトの名無しさん :2019/11/18(月) 20:54:33.04 ID:Ufz4tuHsa.net
- ものづくりC言語熟ってサイトいいじゃん!
- 293 :デフォルトの名無しさん :2019/11/18(月) 21:03:14.01 ID:UWPzTs1l0.net
- ものづくりC言語熟おいしい!一番好きなバーガーです!! って言ってほしいのか?
- 294 :デフォルトの名無しさん :2019/11/18(月) 21:06:39.12 ID:Ufz4tuHsa.net
- >>293
もしかしてキ○ガイ?
- 295 :デフォルトの名無しさん :2019/11/18(月) 21:29:13.55 ID:9xSA7Xxe0.net
- ものづくりC言語塾のポインタの説明わけわからん
- 296 :デフォルトの名無しさん :2019/11/18(月) 22:06:08.02 ID:WvhlQmiy0.net
- C言語のポインタはCPU機械語における間接アドレシングの抽象化だろ?
それ以上でも以下でも無い
- 297 :デフォルトの名無しさん :2019/11/18(月) 22:11:27.28 ID:Vzii0sJA0.net
- >>284
ないです。
余りにもバイト数が少なすぎるので手書きです。
手書きでもバイト数に気をつけて書く必要があります。
- 298 :デフォルトの名無しさん :2019/11/19(火) 00:13:05.05 ID:SDEP65Ha0.net
- それ以上もそれ以下もそれを含む
- 299 :デフォルトの名無しさん :2019/11/19(火) 12:48:33.17 ID:8naC8O/UF.net
- >>296
インクリメントは良く出来てるな
あとポインタのポインタと配列へのポインタの文法を混乱して覚えてる人が居て
そいつらのせいで劣化コピーが出回ってるのがさらなる混乱の原因
正しく理解して正しく使えばCのポインタは何も難しくない
- 300 :デフォルトの名無しさん :2019/11/19(火) 13:21:56.35 ID:lt+0x6jod.net
- >>299
劣化コピーの具体例をよろしく
この文章だけだと何が問題なのかさっぱりわからん
- 301 :デフォルトの名無しさん :2019/11/19(火) 13:26:52.18 ID:O502C4IMd.net
- 二次元配列は二重ポインタで扱うという自分の勘違いを正当化したくて
mallocでポインタの配列を作るやり方を唯一正統と強弁するアホが
fjで暴れてたな、そういえば
- 302 :デフォルトの名無しさん :2019/11/19(火) 13:59:41.39 ID:9idMfLVKM.net
- ポインタのポインタ **p
配列へのポインタ (*p)[]
ポインタの配列 *p[]
- 303 :デフォルトの名無しさん :2019/11/19(火) 14:08:13.34 ID:8naC8O/UF.net
- >>300 みたいなのを炙り出せたのであれば
レスに意味があったと言えよう
- 304 :デフォルトの名無しさん :2019/11/19(火) 19:58:13.32 ID:r9zE5eVQM.net
- >>301
めんどいだけでポインタのポインタでも2次元配列かけるでしょ?
勘違いってどういうとこ?
- 305 :デフォルトの名無しさん :2019/11/19(火) 20:13:13.80 ID:O502C4IMd.net
- >>304
本人か?
char a[2][2],**b=a;
これが勘違いでないとまだぬかすか?
頭がバカなのか、それともトンマなのか、どっちだ?
- 306 :デフォルトの名無しさん :2019/11/19(火) 20:14:48.63 ID:r9zE5eVQM.net
- >>305
そんなん知らんわ
予想の斜め上だ
- 307 :デフォルトの名無しさん :2019/11/19(火) 20:16:56.03 ID:c65LTQ+sa.net
- >>299
アセンブラやったことのない人は中々正しく理解できないようで、それでポインタの事だけ書いてある本が沢山出ちゃうんだろうな。
- 308 :デフォルトの名無しさん :2019/11/19(火) 21:33:52.66 ID:pHwegslWx.net
- 何年も書かないと忘れるな〜
ポインタのポインタは、ポインタの値を参照渡しするときくらいしか思いつかん
char *p;
foo(&p);
void foo(char **p) {…}
みたいな、
305のような書き方はピンとこないわ
- 309 :デフォルトの名無しさん :2019/11/19(火) 21:36:01.90 ID:+Tz70BZqM.net
- >>304
書けるかどうかじゃなくて
> 唯一正統と強弁するアホが
いたって話でしょ
- 310 :デフォルトの名無しさん :2019/11/19(火) 21:49:57.72 ID:3qWxJKAv0.net
- int a=0;
int *pa=&a;
int **ppa =&pa;
int ***pppa = &ppa;
- 311 :デフォルトの名無しさん :2019/11/19(火) 22:00:51.47 ID:JHNr41O80.net
- でもこういう関数だとポインタだけでやりたくなる
mul(double** x, double** y, int n, int m){
mul(double x[][20], double y[][20], int n, int m){
- 312 :デフォルトの名無しさん :2019/11/19(火) 22:37:16.16 ID:SDEP65Ha0.net
- const 付けない系?
- 313 :デフォルトの名無しさん :2019/11/19(火) 22:47:26.54 ID:8ta2T3rG0.net
- また関係ないことを・・・
- 314 :デフォルトの名無しさん :2019/11/20(水) 05:59:16.05 ID:6t1gUx2GM.net
- 関数の引数に限って言えば
func(**p)
func(*p[])
func(p[][])
func(p[][10])
どれでも同じ
引数として配列を引き渡す方法はない
どれも先頭要素へのポインタが値渡しされる
関数側で引数がポインタへのポインタ(いわゆる二重ポインタ)なのか、ポインタの配列なのか、配列の配列(いわゆる二次元配列) なのか区別する手段はない
引数に配列として要素数を渡してもエラーにはならないだけで無視される
- 315 :デフォルトの名無しさん :2019/11/20(水) 06:42:28.35 ID:06vL+ArYd.net
- どこから突っ込んでいいやら・・・
出鱈目にも程があるぜ
- 316 :デフォルトの名無しさん :2019/11/20(水) 07:18:49.43 ID:CxWhIUNe0.net
- 関数の宣言文で説明だけなので変数型を省略してるだけだろ
配列の変数名がpならば呼び出しは
func(p)
でもいける
結局は先頭アドレスさえ渡せれば何でもいい
- 317 :デフォルトの名無しさん :2019/11/20(水) 07:45:40.36 ID:uVU8YbeSF.net
- [][]なんて構文あるかヴォケ
- 318 :デフォルトの名無しさん :2019/11/20(水) 09:49:56.67 ID:gQNT2Wxfa.net
- >>314
プロトタイプ宣言しておけばC言語としては違う状態になるよ。
- 319 :デフォルトの名無しさん :2019/11/20(水) 10:34:34.94 ID:CxWhIUNe0.net
- プロトタイプ宣言では状態を区別はしない
プロトタイプ宣言
void func(char *p[]);
関数定義
void func(char **p) {}
https://i.imgur.com/mMQGNga.png
- 320 :デフォルトの名無しさん :2019/11/20(水) 12:01:08.83 ID:grCkJCm3F.net
- >>308
あほか
>>305 は間違いの例だから
ピンと来なくて当然
- 321 :デフォルトの名無しさん :2019/11/20(水) 12:06:59.82 ID:grCkJCm3F.net
- >>311
何を目的に書いてるのか知らんが
A: mul(double** x, double** y, int n, int m){
B: mul(double x[][20], double y[][20], int n, int m){
C: mul(double (*x)[20], double (*y)[20], int n, int m){
AとBは等価じゃないぞ
- 322 :デフォルトの名無しさん :2019/11/20(水) 13:41:25.47 ID:CxWhIUNe0.net
- 変数としてのxは
A:double型のポインタを指すポインタ
B:double型の配列を要素とする配列の先頭要素を指すポインタ
C:double型の配列を指すポインタ
関数の引数としてのxは
A,B,Cすべてdouble型の参照オブジェクト(何でもいい)を指すポインタ
- 323 :デフォルトの名無しさん :2019/11/20(水) 15:18:17.42 ID:7Jz+3SpEa.net
- >>322
>>321のxのことを言ってるのなら、基礎からやり直せ。
- 324 :デフォルトの名無しさん :2019/11/20(水) 15:27:36.91 ID:CxWhIUNe0.net
- まあ実際C:のような例は見たことはないけど、少なくともA:とB:は関数の引数としては同じと解釈される
中身は受け取った関数側でプログラマが処理する事案であってdouble型の何かを指すポインタという以上の意味はない
- 325 :デフォルトの名無しさん :2019/11/20(水) 15:59:50.97 ID:jGIPXiJ00.net
- 分かりきった固定要素数の配列を渡すのはいっかい struct で包んじゃうわ
struct foo {
double array[20];
};
mul(struct foo* x, struct foo* y, ...)
- 326 :デフォルトの名無しさん :2019/11/20(水) 16:26:53.96 ID:ACUpjjQJF.net
- >>311 しね
>>324 お前は黙ってろ
- 327 :デフォルトの名無しさん :2019/11/20(水) 16:40:06.35 ID:6t1gUx2GM.net
- >>323,326
ただの罵倒ではなくてもう少し有益なレスしろよ
- 328 :デフォルトの名無しさん :2019/11/20(水) 16:50:21.31 ID:VaHfdLQca.net
- >>324
A,Bそれぞれのsizeof(x)やx+1について、値や型を比較してみろよ。意味が違うことがわかるから。
- 329 :デフォルトの名無しさん :2019/11/20(水) 16:54:14.17 ID:ACUpjjQJF.net
- >>327
>>314 func(p[][])
似たようなもんだな
- 330 :デフォルトの名無しさん :2019/11/20(水) 17:02:30.65 ID:CxWhIUNe0.net
- >>328
一応言っておくけど>>322の通り変数のxは意味が違う
関数の引数の場合だけ状況が変わる
*p[]と*ppが同義なのは引数の場合だけ
>>319の通りプロトタイプ宣言と関数定義の両方で混在しても問題ない
- 331 :デフォルトの名無しさん :2019/11/20(水) 17:03:37.18 ID:CxWhIUNe0.net
- 訂正
**p ← *pp
- 332 :デフォルトの名無しさん :2019/11/20(水) 17:18:03.94 ID:gQNT2Wxfa.net
- >>324
いや。AとBは違う。
- 333 :デフォルトの名無しさん :2019/11/20(水) 17:19:03.29 ID:ACUpjjQJF.net
- >>330
>>319 の言ってるのは >>322 のとは違うだろ
これは正しい
>プロトタイプ宣言 void func(char *p[]);
>関数定義 void func(char **p) {}
これは間違い
>プロトタイプ宣言 void func(char p[][20]);
>関数定義 void func(char **p) {}
- 334 :デフォルトの名無しさん :2019/11/20(水) 17:36:55.77 ID:gQNT2Wxfa.net
- その通り
- 335 :デフォルトの名無しさん :2019/11/20(水) 17:38:35.24 ID:CxWhIUNe0.net
- 納得
そりゃそーだ
すまんかった
- 336 :デフォルトの名無しさん :2019/11/20(水) 18:37:56.75 ID:lnMf/X4/M.net
- 初めて書き込む初心者ですが
配列存在そのものがポインタと違う
という話と
ポインタとして渡して同じように扱える
という話の食い違いをしてるのですか?
- 337 :デフォルトの名無しさん :2019/11/20(水) 19:19:34.26 ID:ACUpjjQJF.net
- ポインタの配列はポインタのポインタとして扱えるが
配列へのポインタはポインタのポインタとして扱ってはいけないって話
そりゃ無理に使おうとすれば使えない訳じゃないが止めた方が良い
- 338 :デフォルトの名無しさん :2019/11/20(水) 19:45:26.72 ID:/a5mIgHWd.net
- char a[2][2];
これは a[0][0], a[0][1], a[1][0], a[1][1] の順にcharが4個ならんだデータ
char *b[2] = {a[0], a[1]};
という配列をaとは別に作ってはじめて
char **として扱える
- 339 :デフォルトの名無しさん :2019/11/20(水) 19:47:17.62 ID:/a5mIgHWd.net
- aは(中身は)4このデータの先頭アドレスで
bはアドレスの配列の先頭アドレス
データが異なるので無理やりキャストしてもダメ
- 340 :デフォルトの名無しさん :2019/11/20(水) 20:34:14.51 ID:gQNT2Wxfa.net
- そしてまたポインタ解説本が一冊増えるのであった
- 341 :デフォルトの名無しさん :2019/11/20(水) 21:23:45.88 ID:QqNmmDM2x.net
- >>320
何だそうか、親切にありがとう!
- 342 :デフォルトの名無しさん :2019/11/25(月) 13:03:01.01 ID:pSQ/T/wR0.net
- 私はC言語の神だ
何か私に聞きたいことはあるか?
- 343 :デフォルトの名無しさん :2019/11/25(月) 13:13:12.61 ID:pjJuONFZF.net
- 余命何年かな
- 344 :デフォルトの名無しさん :2019/11/25(月) 13:18:38.97 ID:pSQ/T/wR0.net
- 余命は3152578641だ
- 345 :デフォルトの名無しさん :2019/11/25(月) 13:20:19.58 ID:FcoOoav6d.net
- なんで & より == の方が強い?
なんで func と &func 両方とも関数へのポインタ
なんで char の符号有無を規定しなかった?
- 346 :デフォルトの名無しさん :2019/11/25(月) 13:22:22.93 ID:pSQ/T/wR0.net
- プログラマーは万能である
で、あれば、それらは些細なことだ
- 347 :デフォルトの名無しさん :2019/11/25(月) 14:10:49.09 ID:ZBE9lLbs0.net
- >>345
===は比較演算子で、&はビット演算子(扱いは算術演算子と大差ない)だから。
funcと&funcが同じなのは単なるシンタックスシュガー。 配列のそれと変わらん。
charは符号もへったくれも無かったため。 最上位がパリティなことも多かったし。
- 348 :デフォルトの名無しさん :2019/11/25(月) 14:13:37.69 ID:pjJuONFZF.net
- char hoge[10][10];
があったとして
hoge と &hoge[0][0] が一緒なのは判るが
&hoge とか hoge[0][0] は一緒じゃない
- 349 :デフォルトの名無しさん :2019/11/25(月) 14:40:15.02 ID:xlCLCIdV0.net
- 算術演算子と大差無いと言うならなおさら優先順位が逆転するのは不思議
つうか神様への質問なんだからなんでそういう仕様になったかを答えてほしんでしょ
- 350 :デフォルトの名無しさん :2019/11/25(月) 15:00:15.21 ID:Nb9YSlRod.net
- >>347
===って、Bにあったやつか?
等値比較代入
- 351 :デフォルトの名無しさん :2019/11/25(月) 15:08:44.39 ID:PWp9fS7h0.net
- 比較演算子が最下位ならすっきりする
a + 1 == 2 → (a + 1) == 2 の順と同じく
a & 1 == 2 → (a & 1) == 2 や
a % 2 == 1 → (a % 2) == 1 であってほしい
- 352 :デフォルトの名無しさん :2019/11/25(月) 16:42:52.23 ID:Z7hJDN/t0.net
- わたしゃ神様じゃないけど、カーニハンとパイクの『プログラミング作法』には
「カッコを使って演算子の優先順位の曖昧さを避けよう」みたいな項があるね。
もちろん規格では厳格に決まってるけど、使用者の記憶があやふやって話。
あの辺を読むと「ビット演算子より比較演算子を優先したのは誤りだったかも」と
ご当人が思ってたんじゃないかと感じるわ。
- 353 :デフォルトの名無しさん :2019/11/25(月) 16:46:33.35 ID:72Xydbv80.net
- 今更いじれないだろうな
- 354 :デフォルトの名無しさん :2019/11/25(月) 18:07:03.06 ID:FcoOoav6d.net
- 神様の回答が1個も無い
- 355 ::2019/11/25(月) 19:12:09.16 ID:2aQAGKkK0.net
- >>342
K&R1 から K&2 への相違で強烈に疑問を持っているのが
引数に配列をとったときは、配列の先頭のポインタが渡るのに、引数に構造体をおいたときは、構造体の実体がコピーされて渡されるのはなぜ?
馬鹿が
struct A {
int a[1234567890];
};
とかやったときには、これが関数の引数に乗ったときには、正気でコピーする気なのですか?
- 356 :デフォルトの名無しさん :2019/11/25(月) 19:22:13.99 ID:Nb9YSlRod.net
- ん? 構造体が左辺値変形されるなんてことあったか?
- 357 :352 :2019/11/25(月) 19:27:41.70 ID:Z7hJDN/t0.net
- 2点ほど訂正させてくれ。
カーニハン先生はC言語に大きな貢献をしてるけど、C言語の設計は
リッチーさんの仕事でカーニハンさんは手を出してないんだね。
だからこの場合「ご当人」と呼ぶのは正しくなかった。
「ビット演算子より比較演算子を優先するとは、デニスの野郎め
下手コキやがって」と思ってるんじゃないかと感じるわ。
…という具合に訂正。
もうひとつ。カーニハン先生は今の時点で健在らしい。
実は先の投稿の時点で亡くなってると勘違いしていた。
これもリッチーさんと混同したのが原因。
- 358 ::2019/11/25(月) 19:39:14.82 ID:2aQAGKkK0.net
- >>342
extern はいらない子!じゃないのですか?extern の必要性はなんですか?
- 359 ::2019/11/25(月) 19:42:04.68 ID:2aQAGKkK0.net
- >>342
可変長引数のプロモーション(格上げ)が理解できない
なぜ float は double に、char, short, は int に格上げされるのか?
- 360 :デフォルトの名無しさん :2019/11/25(月) 20:03:51.13 ID:EmSI22f6H.net
- >>355
構造体のポインタを渡すとして、仮引数はどう宣言するよ
- 361 :デフォルトの名無しさん :2019/11/25(月) 20:05:24.40 ID:Nb9YSlRod.net
- >>358
いらない子はtentativeなんだが
tentativeはtentativeの存在すら認識できない
知恵遅れのための必要悪だ
おまえのためだったとして
本当のいらない子は誰だろうね
- 362 ::2019/11/25(月) 20:19:59.47 ID:2aQAGKkK0.net
- >>360
関数の引数には、構造体のポインタではなくて、構造体そのものを渡します、構造体そのものを渡せるようになったのは K&R2 から可能になりました
C の神 >>342 に、この改変―個人的には改悪について、一度お聞きしたいと思っていたんです
- 363 :デフォルトの名無しさん :2019/11/25(月) 20:24:34.17 ID:2eomwteL0.net
- なぜ神への質問を神でないものが回答するのか
神にでもなったつもりか!
- 364 :デフォルトの名無しさん :2019/11/25(月) 20:35:27.76 ID:NzDv81TY0.net
- ヘッダファイルには何を書きますか?
こめおしだるまとかですか
- 365 :デフォルトの名無しさん :2019/11/25(月) 21:22:14.50 ID:HEHU1BiX0.net
- charは文字だから符号は重要じゃないってのはいいが、ならbyte型用意しておいてくれよと思う。
- 366 :デフォルトの名無しさん :2019/11/25(月) 21:34:03.78 ID:Qwn/HBF30.net
- signed charもunsigned charもあるだろ
- 367 :デフォルトの名無しさん :2019/11/25(月) 21:47:48.61 ID:FcoOoav6d.net
- signed charもunsigned charもcharもあるのが糞
- 368 :デフォルトの名無しさん :2019/11/25(月) 21:50:36.94 ID:wftjKJqc0.net
- char = unsigned char に固定してくれりゃ万事楽だったのに
- 369 :デフォルトの名無しさん :2019/11/25(月) 21:53:07.11 ID:u+UfcqYe0.net
- 「8ビットめいっぱい使う奴(国)が面倒おこしてめんどくせぇ」
- 370 :デフォルトの名無しさん :2019/11/25(月) 21:56:46.03 ID:72Xydbv80.net
- 文字割り当てで最初から8bit全桁使ってしまっていれば良かった
- 371 :デフォルトの名無しさん :2019/11/25(月) 22:06:54.47 ID:HEHU1BiX0.net
- 8bit整数はsigned/unsigned charでいいやと思っていたらC++で裏切られた。
- 372 :デフォルトの名無しさん :2019/11/25(月) 22:07:47.81 ID:y1DwbhRd0.net
- テキハ ホンノウジニ アリ
- 373 :デフォルトの名無しさん :2019/11/25(月) 22:11:35.20 ID:u+UfcqYe0.net
- 2バイト(16ビット)もあれば、各国のが収まるだろ? →ダメでした
- 374 :デフォルトの名無しさん :2019/11/26(火) 00:36:17.99 ID:TKGz3ntv0.net
- なんでstaticにこんなにたくさんの意味をもたせた?
引数のconstが絶望的にわかりにくいんだが何でこんな文法にした?
- 375 :デフォルトの名無しさん (ワッチョイ 13ad-c8oy):2019/11/26(火) 04:17:51 ID:q8waUqPK0.net
- これからの時代のcharは64bitで
- 376 :デフォルトの名無しさん :2019/11/26(火) 07:18:47.84 ID:auNO4ARld.net
- >>374
const? 何がそんなに?
- 377 :デフォルトの名無しさん :2019/11/26(火) 12:44:02.82 ID:HcEoAWHl0.net
- >>376
もっとくやしく
- 378 :デフォルトの名無しさん :2019/11/26(火) 13:07:39.43 ID:njyF587zd.net
- const char * *
char * const *
char * * const
たしかに分かりにくい
volatileも
- 379 :デフォルトの名無しさん :2019/11/26(火) 13:08:45.16 ID:GOgRvMiLM.net
- >>377
くそ、何がだよ。constの何がそんなにわかりにくいんだよっ!ちくしょうっ!!
- 380 :デフォルトの名無しさん (スッップ Sd33-xphW):2019/11/26(火) 15:05:20 ID:auNO4ARld.net
- なんだ、バカよけってことかよ
つまんね
- 381 :デフォルトの名無しさん :2019/11/26(火) 18:23:04.66 ID:UD9MC/mBa.net
- >>377
キーッ
- 382 :デフォルトの名無しさん :2019/11/26(火) 19:05:11.84 ID:auNO4ARld.net
- サル?
- 383 :デフォルトの名無しさん :2019/11/26(火) 20:29:20.89 ID:UD9MC/mBa.net
- もっとはんなりと言ってください
- 384 :デフォルトの名無しさん :2019/11/26(火) 21:26:44.95 ID:IcZXgcFp0.net
- モンキーですこと
- 385 :デフォルトの名無しさん :2019/11/26(火) 22:25:58.87 ID:FP/g45Qv0.net
- これからはRISC-V
- 386 :デフォルトの名無しさん (ワッチョイ 13ad-c8oy):2019/11/27(水) 00:28:00 ID:0YyUhowx0.net
- constどすえ
- 387 :デフォルトの名無しさん :2019/11/28(木) 01:13:55.51 ID:omfIxgsG0.net
- void君いる?
- 388 :デフォルトの名無しさん (ワッチョイ b163-1Sqp):2019/11/28(Thu) 01:37:02 ID:XlAtYd3v0.net
- voidならsp使わないという利点があるんだからいるのでは?
- 389 :デフォルトの名無しさん (ワッチョイ 0973-4gZL):2019/11/28(Thu) 01:38:47 ID:PoPpbfsh0.net
- spとは?
- 390 :デフォルトの名無しさん :2019/11/28(木) 03:19:24.36 ID:saOZYqHd0.net
- ヘ_ヘ
ミ・・ ミ
( )〜
- 391 :デフォルトの名無しさん :2019/11/28(木) 09:18:13.24 ID:omfIxgsG0.net
- void君見てんだろ?
またあの名言聞きたいよ
てかspて何だ?
- 392 :デフォルトの名無しさん :2019/11/28(木) 09:58:09.40 ID:drahqBh90.net
- おじいちゃん、おはよう
- 393 :デフォルトの名無しさん :2019/11/28(木) 11:52:01.48 ID:dwMkkEn2M.net
- 何の話しをしているのですか?
- 394 :デフォルトの名無しさん :2019/11/28(木) 12:29:57.76 ID:4okpNGfUM.net
- 話しとは?
ヘ_ヘ
ミ・・ ミ
( )〜
- 395 :デフォルトの名無しさん :2019/11/28(木) 12:49:27.76 ID:pgFu+V4ea.net
- はなしししししし
- 396 :デフォルトの名無しさん :2019/11/28(木) 13:08:00.18 ID:HUd7Y1FLd.net
- void君て何?
- 397 :デフォルトの名無しさん :2019/11/28(木) 14:14:09.56 ID:cHXg4S3V0.net
- fj.comp.lang.c japan.yoso 何年前…
- 398 :デフォルトの名無しさん :2019/11/28(木) 17:13:55.23 ID:pgFu+V4ea.net
- (´-`).。oO(今の人は newsgroup なんて知らないんだろうなあ・・・)
- 399 :デフォルトの名無しさん :2019/11/28(木) 17:34:29.53 ID:drahqBh90.net
- 公園で紙芝居をやってた頃の話だから
- 400 :蟻人間 :2019/11/28(木) 17:56:05.01 ID:7otTe0SQ0.net
- スタックポインタ
- 401 :デフォルトの名無しさん :2019/11/28(木) 18:13:00.42 ID:PoPpbfsh0.net
- voidならスタックポインタを使わない?
意味不明
- 402 :蟻人間 :2019/11/28(木) 18:17:12.36 ID:tnSWQjUnd.net
- 俺もわからん。
- 403 :デフォルトの名無しさん :2019/11/28(木) 18:46:29.37 ID:+WcD/xQQ0.net
- C++やるで
- 404 :デフォルトの名無しさん :2019/11/28(木) 18:47:49.35 ID:EjjwcG+D0.net
- いってらっしゃいませ
- 405 :デフォルトの名無しさん :2019/11/28(木) 19:29:09.73 ID:+WcD/xQQ0.net
- C++あかんの?
- 406 :デフォルトの名無しさん :2019/11/28(木) 19:42:31.72 ID:YpOyjZW5d.net
- 何十年経ってもマウント取られたままなやつは
成長する意欲すら根こそぎ取られたただの産廃
唾棄するにも値しない
- 407 :蟻人間 :2019/11/28(木) 20:01:16.22 ID:7otTe0SQ0.net
- マウント富士、待ったか、産め。
- 408 :デフォルトの名無しさん :2019/11/29(金) 10:41:44.97 ID:N/f9f1S7F.net
- つかき君いるのかな
- 409 :デフォルトの名無しさん :2019/11/29(金) 12:49:35.50 ID:gmGtMFq3d.net
- ◯◯君が多過ぎて
だれかまとめろ
- 410 :デフォルトの名無しさん :2019/11/29(金) 17:04:48.86 ID:F/drosec0.net
- >>407
某ゲームで、ボスバトルまでの待ち時間が結構ありまして、そのちょっと前のタイミングを知るのに
ストップウォッチ兼タイマー ver 0.1 を愛用しております。 自分で作ってもよかったのですが
蟻さんので必要十分だったのでありがたく使わせてもらっています。
ありがとうございました!
- 411 :蟻人間 :2019/11/29(金) 17:51:10.95 ID:qKvWOrt2d.net
- >>410
どういたしまして
- 412 :蟻人間 :2019/11/29(金) 19:33:21.96 ID:qKvWOrt2d.net
- ソースコード見たい?
- 413 :蟻人間 :2019/11/29(金) 19:39:20.32 ID:l2dO7tMx0.net
- https://github.com/katahiromz/mztimer
はいどうぞ。
- 414 :蟻人間 :2019/11/29(金) 19:41:30.08 ID:l2dO7tMx0.net
- 昔の汚いソースだね。グローバル変数使いまくり。
- 415 :デフォルトの名無しさん :2019/11/29(金) 19:44:15.31 ID:w9Gg68xu0.net
- パンツの中見せるの?
- 416 :デフォルトの名無しさん :2019/11/29(金) 19:58:16.23 ID:4DEcYZGM0.net
- inline
が泣けるwww
- 417 :デフォルトの名無しさん :2019/11/29(金) 20:52:16.59 ID:Lw6oDHHK0.net
- >>413
TDM-GCCだとコンパイルできなかった
- 418 :蟻人間 :2019/11/29(金) 20:54:12.58 ID:qKvWOrt2d.net
- >>417
リソースがsjisだからUTF-8にして、コードページにちょっとしたトリックをするとビルドできるよ。
- 419 :蟻人間 :2019/11/29(金) 21:40:56.87 ID:l2dO7tMx0.net
- 改良しました。
- 420 :デフォルトの名無しさん :2019/11/29(金) 21:48:18.65 ID:Lw6oDHHK0.net
- CMakeになっとるやんけ
- 421 :デフォルトの名無しさん :2019/11/29(金) 23:02:39.40 ID:Lw6oDHHK0.net
- >>419
蟻人間さんプルリク送っておいたからマージしてね
- 422 :デフォルトの名無しさん :2019/11/29(金) 23:06:54.55 ID:Lw6oDHHK0.net
- プルリク拒否られた・・・
- 423 :デフォルトの名無しさん :2019/12/01(日) 19:27:28.70 ID:QQlcLgdJp.net
- 大学の課題でフーリエ変換を利用した画像保存プログラムを作成せよっていう
課題が出ました…
もうお手上げです。助けてください
- 424 ::2019/12/01(日) 19:32:56.92 ID:mRJ420VP0.net
- >>423
宿題の文章を一文字も間違えずに正確に転載できる技術を持っているのなら
https://mevius.5ch.net/test/read.cgi/tech/1434079972/
で話の続きを聞く準備はあります、その出題自体はどこか変だとは思っていますが
- 425 :デフォルトの名無しさん :2019/12/01(日) 19:35:57.20 ID:p3Z7Nr0hd.net
- >>423
画像の圧縮?
- 426 :デフォルトの名無しさん :2019/12/01(日) 19:37:50.36 ID:QQlcLgdJp.net
- >>424
>>425
そうです。
実際に本気で組んだら何行くらいになるんでしょうか?
それだけでも目安を教えてほしいです。
例えば
木の絵をピクチャーボックスに描きました。
フーリエ保存してファイルを作成します。
ファイルを再現できました。
同じ絵です。
成功です。
こんな感じです。
- 427 :デフォルトの名無しさん :2019/12/01(日) 19:38:04.98 ID:ManO1ilk0.net
- 大学名を教えてくれたらヒントくらいは出す
- 428 :デフォルトの名無しさん :2019/12/01(日) 19:53:08.67 ID:W5IIwakz0.net
- 元の画像に戻ったら成功って事はフーリエ変換と逆変換かな?
フーリエ変換は外部ライブラリ使ってok?
okならOpenCV使えば良いんじゃね?
- 429 :デフォルトの名無しさん :2019/12/01(日) 22:21:33.72 ID:9XVhluJD0.net
- 画像圧縮でフーリエ変換は罠だな、最初からDCT使って提出しようず
- 430 :デフォルトの名無しさん :2019/12/01(日) 22:52:36.44 ID:UCpH0Yie0.net
- 単機能だから、AWS Lambda で出来ないのか?
ライブラリを探すだけだろ
C/C++, PHP は、Lambdaには採用されていないけどw
- 431 :デフォルトの名無しさん :2019/12/02(月) 00:41:46.52 ID:RIgVO6ZZd.net
- >>426
何でも良いなら
1x8に区切って1次元でフーリエ変換して
適当にビット数を減らして保存
読み出してビット数を元にもどして逆フーリエ変換
フーリエ変換は
abcdefghhgfedcba
のようにすると
同じ結果が2個ずつ出るので
半分だけ保存する
- 432 :デフォルトの名無しさん :2019/12/02(月) 00:42:32.51 ID:RIgVO6ZZd.net
- さすがに1次元じゃ減点かなあ
- 433 :デフォルトの名無しさん :2019/12/02(月) 00:46:10.70 ID:RIgVO6ZZd.net
- 8x8でやるなら
横でフーリエ変換した結果に対して縦でやればいい
16個のデータにするのは横とおなじ
- 434 :デフォルトの名無しさん :2019/12/02(月) 00:48:32.83 ID:RIgVO6ZZd.net
- フーリエ変換をDCTに変えて
ジグザグスキャンしてハフマン符号化すると
jpgになる
- 435 :デフォルトの名無しさん :2019/12/02(月) 02:45:05.18 ID:uImhRr2lM.net
- 大学の課題と言うくらいだから画像云々はただの手段で目的はフーリエ変換というかFFTのアルゴリズムを実装できるか
というのが評価基準だと思う
間違って外部ライブラリを使ったり変に出題者の意図を捻じ曲げて解釈したりすれば減点される可能性高いから注意しろよ
- 436 :デフォルトの名無しさん (ワッチョイ f514-3RYV):2019/12/02(月) 09:05:35 ID:cSs5r0tn0.net
- >>435
みんな大学の課題という前提を忘れて実務的実用的な話になってるよね
フーリエ変換と逆変換をプログラムで実装できているかが採点基準であって
画像はバイナリデータがちゃんと元に戻っているか確認する手段にすぎないと思う
- 437 :デフォルトの名無しさん (スプッッ Sd12-4gZL):2019/12/02(月) 13:14:43 ID:xJykAg3Zd.net
- 圧縮って書いてあるんだからバイナリ一致しなくてもいいのでは?
同じ絵っていうのはパッと見同じってことじゃなくて?
- 438 :デフォルトの名無しさん (ワッチョイ 6969-o7DB):2019/12/02(月) 13:29:01 ID:XPQaDzxS0.net
- 可逆圧縮か不可逆圧縮か
- 439 :デフォルトの名無しさん (スプッッ Sd12-4gZL):2019/12/02(月) 13:30:39 ID:xJykAg3Zd.net
- 不可逆でフーリエ変換?
- 440 :デフォルトの名無しさん (スプッッ Sd12-4gZL):2019/12/02(月) 13:30:57 ID:xJykAg3Zd.net
- 逆だ
可逆でフーリエ変換?
- 441 :デフォルトの名無しさん (ワッチョイ 6969-o7DB):2019/12/02(月) 13:33:14 ID:XPQaDzxS0.net
- 隣接ピクセル間隔より狭い高調波は不要だから有限の離散フーリエ変換でも
実質可逆とみていいんだよね? (符号化による情報落ちを考慮しない話)
- 442 :デフォルトの名無しさん :2019/12/02(月) 14:34:46.17 ID:1jC9vBnEx.net
- フーリエは本来可逆だ。
- 443 :デフォルトの名無しさん :2019/12/02(月) 14:52:09.59 ID:xJykAg3Zd.net
- 圧縮が目的でフーリエ変換するのに
何も情報を減らさずにそのまま戻してどうする?
- 444 :デフォルトの名無しさん :2019/12/02(月) 14:53:09.69 ID:xJykAg3Zd.net
- >>441
心配しなくても
ナイキスト周波数を越える成分はフーリエ変換の結果には含まれない
- 445 :デフォルトの名無しさん :2019/12/02(月) 14:56:19.28 ID:9YVAThVAF.net
- >>423
>>426
離散コサイン変換じゃいかんのか
- 446 :デフォルトの名無しさん :2019/12/02(月) 14:59:03.83 ID:9YVAThVAF.net
- >>432
どうせ課題なんだしそこまで求めてないというか
もしすごいのが出来たら教授が自分の成果にして発表するんやろ
- 447 :デフォルトの名無しさん :2019/12/02(月) 15:03:30.60 ID:HSnksJTzF.net
- >>442
ほんそれ
ただし無限な
- 448 :デフォルトの名無しさん :2019/12/02(月) 15:04:01.88 ID:ImcNE8i40.net
- スゴイの出来たら、先に特許申請だな
- 449 :デフォルトの名無しさん :2019/12/02(月) 15:06:19.88 ID:R6hiSLip0.net
- 講義での学習課題としては非圧縮でないと判定が面倒だな
単にデータを間引いただけなのか演算を間違っているのか確認に手間が掛かる
むしろ完全可逆で実装した方が採点する側としては分かりやすいだろう
出題者の意図はどこにあるか質問者は理解しているのだろうか?
- 450 :デフォルトの名無しさん :2019/12/02(月) 15:16:11.81 ID:az4xQt0G0.net
- なんで理解しなきゃいけねーの
そういう旨なら文章にハッキリ書いてくれねーと困るワケ
お気持ちを察せよ なんてのが罷り通る案件なの?
- 451 :デフォルトの名無しさん :2019/12/02(月) 15:18:11.07 ID:az4xQt0G0.net
- 「オメーの気持ちなんてしったこっちゃねー
オレに分かるように話せ」
が今の潮流
分からないように反為さないヤツは無視していいし排除していい
なんつったってオレが理解出来ないヤツは何言ってるか分からないコミュニケーション不可能な敵に近いからな
気持ち悪いから排除してもいいし、何よりオレに理解されようと思ってない
だから排除していいでしょ
……という思考で動くのが現代の日本社会
- 452 :デフォルトの名無しさん :2019/12/02(月) 15:21:55.25 ID:R6hiSLip0.net
- いやクライアントの意向を無視して好き勝手やっていたら仕事干されるだろ
- 453 :デフォルトの名無しさん :2019/12/02(月) 16:43:27.43 ID:cSs5r0tn0.net
- 保存とは書かれているが圧縮とはどこにも書かれてない件
- 454 :デフォルトの名無しさん :2019/12/02(月) 16:47:13.54 ID:wj2s3ic80.net
- てか皆さん「フーリエ変換くらい当然知ってる」って雰囲気なのが凄いわ。
- 455 :デフォルトの名無しさん :2019/12/02(月) 17:56:06.03 ID:kmSxls5X0.net
- >>453
>>425,426
- 456 :デフォルトの名無しさん :2019/12/02(月) 18:01:01.74 ID:kmSxls5X0.net
- 圧縮しないなら
保存でフーリエ変換使う意味がわからんがな
- 457 :デフォルトの名無しさん :2019/12/02(月) 18:04:51.11 ID:R6hiSLip0.net
- フーリエ変換そのものは理系の大学卒であれば誰でも知ってる
具体的な数値計算のアルゴリズムを知っているかはその人の専門分野による
- 458 :デフォルトの名無しさん :2019/12/02(月) 18:35:35.76 ID:PAbfC2b00.net
- 理系でも生物系なら触りもせん
- 459 :デフォルトの名無しさん :2019/12/02(月) 18:53:16.42 ID:R6hiSLip0.net
- 専門課程ではなくても一般教養の数学系の講義で学んでると思うけど
- 460 :デフォルトの名無しさん :2019/12/02(月) 19:00:10.22 ID:PAbfC2b00.net
- 微積と線形代数ぐらいで触らんかったぞ
大学なんか講師次第だからなあ
- 461 :デフォルトの名無しさん :2019/12/02(月) 19:09:01.78 ID:ImcNE8i40.net
- 文系だと無いと思うな
統計学や代数幾何、微積分
この辺まで
- 462 :デフォルトの名無しさん :2019/12/02(月) 19:11:47.56 ID:CL9/qeyha.net
- はるか前なので忘れたが、大学ではフーリエ級数って名前だった希ガス
- 463 :デフォルトの名無しさん :2019/12/02(月) 19:12:24.77 ID:kmSxls5X0.net
- 理系の大学卒だが
フーリエ変換を大学で習った記憶はないなあ
覚えてないだけかな?
- 464 :デフォルトの名無しさん :2019/12/02(月) 19:40:44.78 ID:R6hiSLip0.net
- フーリエ変換はフーリエ級数展開の一般化
フーリエ級数展開の基本周期を無限大まで拡大すると周波数成分は離散から連続となる
要するに周波数成分を連続スペクトルとして扱うのがフーリエ変換
- 465 :デフォルトの名無しさん :2019/12/03(火) 19:46:15.44 ID:90Sp73uqM.net
- 画像のフーリエ変換なんてどうやってやるんだ?って思ってググったら結構面白いな
ちょっと実装してみよう
https://algorithm.joho.info/image-processing/fourier-transform/
- 466 :デフォルトの名無しさん :2019/12/03(火) 22:43:48.90 ID:nrVtlETj0.net
- 数学科院卒だがフーリエ変換には掠りもしてない
工学部の一部しか触ってないだろう
- 467 :デフォルトの名無しさん (ラクッペ MM69-iMJF):2019/12/04(水) 02:04:25 ID:k3euaH00M.net
- 数学的には解析学の領域
どちらかといえば数学と物理の境界
電気工学や情報工学では必須
https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%BC%E3%83%AA%E3%82%A8%E5%A4%89%E6%8F%9B
- 468 :デフォルトの名無しさん :2019/12/04(水) 02:24:25.40 ID:k3euaH00M.net
- 工学部では厳密な理論よりも応用が重要なので表面的な触りだけで深入りはしない
厳密な議論はやはり数学者の分野だと思う
- 469 :デフォルトの名無しさん :2019/12/04(水) 09:27:46.76 ID:bVbh++oq0.net
- 画像処理はOpenCVとかで済ましちゃうから細かい数式は気にしない
- 470 :デフォルトの名無しさん (ラクッペ MM69-iMJF):2019/12/04(水) 09:38:25 ID:ayTFyO7RM.net
- それには同意
フーリエ変換の利用にはFFTの概要だけ理解していれば十分
ただ数学の専門家が掠りもしてないというのは如何なものかとは思う
- 471 :デフォルトの名無しさん (ワッチョイ b5da-mphH):2019/12/04(水) 10:58:24 ID:9VaeVeX00.net
- Wikipedia繋がりでFFTのリンク開いてみるとVisualBasicでの実装例が掲載されてるね
https://ja.wikipedia.org/wiki/%E9%AB%98%E9%80%9F%E3%83%95%E3%83%BC%E3%83%AA%E3%82%A8%E5%A4%89%E6%8F%9B
- 472 :デフォルトの名無しさん (スップ Sdb2-4gZL):2019/12/04(水) 13:12:26 ID:6uL3pMIBd.net
- >>468
数学的にはとっくの昔に解決してるから
あとは工学系の仕事
- 473 :デフォルトの名無しさん (スップ Sdb2-4gZL):2019/12/04(水) 13:15:06 ID:6uL3pMIBd.net
- >>470
応用数学とかそういう分野ならまだしも
純粋な数学者はそんなことには興味がない
- 474 :デフォルトの名無しさん (スップ Sdb2-4gZL):2019/12/04(水) 13:17:30 ID:6uL3pMIBd.net
- FFTはアルゴリズムの名前
- 475 :デフォルトの名無しさん :2019/12/04(水) 13:33:37.43 ID:ayTFyO7RM.net
- ラプラス変換やz変換あたりだと完全に工学分野だけどフーリエ変換くらい汎用なものは数学分野でも活用されてると思うけどね
フーリエ級数はローラン級数などと同じ複素解析の基本的な考え方でしょ
べきに展開するか指数に展開するかの違いくらいのもの
- 476 :デフォルトの名無しさん :2019/12/04(水) 13:59:41.66 ID:6uL3pMIBd.net
- >>475
>>472
- 477 :デフォルトの名無しさん :2019/12/04(水) 14:02:42.65 ID:kZk+LcEC0.net
- 無理を言ってはいけない
数学者には楽器は作れても名曲を作る事はできない
- 478 :デフォルトの名無しさん (スプッッ Sd12-4gZL):2019/12/04(水) 15:03:29 ID:49y1id9ud.net
- 名曲を作るのは数学者でも物理学者でも工学博士でもない
発明家や企業だ
- 479 :デフォルトの名無しさん :2019/12/04(水) 21:02:14.66 ID:wHBVaWfta.net
- 沖縄音階は適当にランダムに音出しても曲に聞こえちゃうけどな
- 480 :デフォルトの名無しさん :2019/12/04(水) 22:00:13.57 ID:Ibv81ciOa.net
- >>479
それは沖縄音階に馴染みがないから、沖縄音階が使われているだけで沖縄っぽいと感じてるだけなんじゃないかな?
沖縄の人からしたら、そんなデタラメでは曲として成り立ってないと思わないのかな。
- 481 :デフォルトの名無しさん :2019/12/05(木) 00:53:08.83 ID:MEu1VAiTM.net
- そういった抽象的な感覚を数値化して扱うための手段がフーリエ解析やスペクトル解析と呼ばれる分野
音楽の音階(周波数)やリズム(時系列)を分解して客観的に評価するのが科学的なアプローチ
- 482 :デフォルトの名無しさん (ワッチョイ 4dda-vpIn):2019/12/05(Thu) 03:51:45 ID:6S4oFaeF0.net
- >>481
どちらかといえばウェーブレット解析の方が適しているような気がする
フーリエ変換では周波数特性を求める際に時間領域の情報は失われる
https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%BC%E3%83%96%E3%83%AC%E3%83%83%E3%83%88%E5%A4%89%E6%8F%9B
プログラムで扱うなら離散ウェーブレット変換
https://ja.wikipedia.org/wiki/%E9%9B%A2%E6%95%A3%E3%82%A6%E3%82%A7%E3%83%BC%E3%83%96%E3%83%AC%E3%83%83%E3%83%88%E5%A4%89%E6%8F%9B
- 483 :デフォルトの名無しさん (ラクッペ MMa1-sSJf):2019/12/05(Thu) 07:07:45 ID:MEu1VAiTM.net
- 確かにフーリエ解析では周波数成分の変化の時系列データを扱うのは難しい
少し浅はかだったなすまん
それにしても数学者が理論を確立して証明しそれをベースに開発が進むという典型例だな
- 484 :デフォルトの名無しさん :2019/12/05(木) 11:04:28.35 ID:IbmhSLeWF.net
- 200年くらいかかってるな
ベイズで100年ちょっとか
- 485 :デフォルトの名無しさん (アウアウウー Saa9-uArc):2019/12/05(Thu) 12:56:44 ID:esMh+bxMa.net
- >>480
さあ?まあ、実際にやってみな。自分でピアノやオルガンのキーを沖縄音階で適当に押すだけでわかる。
- 486 :デフォルトの名無しさん (スプッッ Sd03-FAUo):2019/12/05(Thu) 13:09:00 ID:2uRKrxFid.net
- 自分で弾いたら曲になるように弾いちゃうからランダムじゃない
本当にランダムで弾いたら曲にならない
- 487 :デフォルトの名無しさん :2019/12/05(木) 13:51:21.95 ID:IbmhSLeWF.net
- ム板ならそれらしくランダムに演奏するソフトうp汁
https://www.youtube.com/watch?v=5dsFqZf8owg
- 488 :デフォルトの名無しさん (スプッッ Sd03-FAUo):2019/12/05(Thu) 15:14:54 ID:2uRKrxFid.net
- 糞曲に興味はない
- 489 :デフォルトの名無しさん :2019/12/05(木) 23:45:36.26 ID:5h4sz8350.net
- 質問失礼いたします。
以下のpopcountは引数xを2進数で表したときの1の数を返す関数なのですが、
動作原理がよく理解できないため考え方のヒントなどをいただけないでしょうか。
int popcount(unsigned long long x)
{
x = (x & 0x5555555555555555) + (x >> 1 & 0x5555555555555555);
x = (x & 0x3333333333333333) + (x >> 2 & 0x3333333333333333);
return (int)(((x & 0x0f0f0f0f0f0f0f0f) + (x >> 4 & 0x0f0f0f0f0f0f0f0f)) % 0xff);
}
以下のpopcount2は自分で作ったもので、これならうまくいくことは分かるのですが、
上のpopcountも本質的には同じことをやっていると考えていいものなのでしょうか。
int popcount2(unsigned long long x)
{
int n = 0;
for (int i = 0; i < 64; i++)
{
if ((x & 1ull << i) != 0ull)
{
n++;
}
}
return n;
}
どうぞよろしくお願いいたします。
- 490 :デフォルトの名無しさん :2019/12/05(木) 23:51:53.81 ID:rB1NeBwS0.net
- https://ideone.com/8LfIh0
こんにちは。
ちょっと思いついたので、こういうコードを書いたのですが、
普段からreallocを使わないのでこのコードがあっているか解らないのです。
これで大丈夫ですか?
- 491 :デフォルトの名無しさん :2019/12/06(金) 00:02:45.40 ID:lGRN9wM80.net
- >>490
reallocが成功した場合古いポインタに対してfreeは呼ばなくていいと思いますよ。
reallocの戻り値は古いポインタと異なるものになる保証はないはずなので、
freeを呼んでしまうとせっかくreallocした領域まで解放されてしまうかも。
- 492 :デフォルトの名無しさん :2019/12/06(金) 00:04:45.19 ID:j6TI2G0x0.net
- >>491
了解です。ありがとうございました。
- 493 :デフォルトの名無しさん :2019/12/06(金) 00:12:50.26 ID:lGRN9wM80.net
- >>492
ちゃんとコードを読んだら↓の部分はケアされてましたね。失礼しました。
> reallocの戻り値は古いポインタと異なるものになる保証はないはずなので、
ただ、reallocが成功したらfreeは呼ばなくていいのは間違いないと思います。
- 494 :デフォルトの名無しさん (ワッチョイ 25e8-AIHr):2019/12/06(金) 00:50:56 ID:j6TI2G0x0.net
- >>490 のreallocのコード返り値のポインタが不定を指しているので、使わないでください。
こっちを使ってください。
https://qiita.com/yakitori32/items/98256db666029fb5ebca
- 495 :デフォルトの名無しさん (ワッチョイ 25e8-AIHr):2019/12/06(金) 00:55:18 ID:j6TI2G0x0.net
- >>493
了解です。ありがとうございます。
- 496 :デフォルトの名無しさん (ワッチョイ 1563-FbR7):2019/12/06(金) 01:07:01 ID:Rsc9FZ2h0.net
- >>489
超高速ビットカウント
でググって出てくるページでちゃんと解説してくれてる
この手のよく見るやつはちょっとググれば解説見つかる
何を本質と置くかによるけど両者はそもそもアルゴリズムが違うのでその観点からなら違う
どちらのコードも結果は同じでも前者のほうが圧倒的に処理速度が早い
ビット数などが必要になる処理では速度が重要になるケースも多々あるので結果が同じでも後者は使い物にならない場合もある
- 497 :デフォルトの名無しさん (ワッチョイ 23b9-QX1D):2019/12/06(金) 01:36:02 ID:lGRN9wM80.net
- >>496
レスありがとうございます。紹介していただいた記事を読ませていただき、大変勉強になりました。
ただ、>>489 の場合だと「ビットカウントするデータ列がある程度長い場合」には
当てはまらないため記事の前半の内容がアルゴリズムの基本になるとか思うのですが、
私が理解した範囲で記事の内容を参考にして関数を作成しても以下のようにしかできませんでした。
int popcount(unsigned long long x)
{
x = (x & 0x5555555555555555) + (x >> 1 & 0x5555555555555555);
x = (x & 0x3333333333333333) + (x >> 2 & 0x3333333333333333);
x = (x & 0x0f0f0f0f0f0f0f0f) + (x >> 4 & 0x0f0f0f0f0f0f0f0f);
x = (x & 0x00ff00ff00ff00ff) + (x >> 8 & 0x00ff00ff00ff00ff);
x = (x & 0x0000ffff0000ffff) + (x >> 16 & 0x0000ffff0000ffff);
return (int)((x & 0x00000000ffffffff) + (x >> 32 & 0x00000000ffffffff));
}
しかし >>489 の関数はこれを途中で打ち切って % 0xff をくっつけたような形になっており、
やはり完全な理解には至っていない状況です。
もし可能であれば、この部分についてもヒントをいただけると大変嬉しく思います。
たびたび申し訳ありませんが、どうぞよろしくお願いいたします。
- 498 :デフォルトの名無しさん (ラクッペ MMa1-sSJf):2019/12/06(金) 04:41:11 ID:hd4ipDIZM.net
- >>497
64ビット長のビットカウントの最大値はたかだか64なので8ビット(最大255)で表現できる
一方、64ビットデータの分割統治による畳み込み計算は1回目で2ビット×32組、2回目で4ビット×16組、3回目で8ビット×8組の結果が得られる
ビット数を求めるだけなら3回目の結果が得られた時点で8ビットの最大数(255)で3回目の畳み込み結果の剰余を求めてやればそれぞれの組の重み(ビット数)が計算できる
(64を超えることはないことが明らかなので)
- 499 :デフォルトの名無しさん (ラクッペ MMa1-sSJf):2019/12/06(金) 04:45:05 ID:hd4ipDIZM.net
- 訂正
それぞれの組の重みの総計(ビット数)
- 500 :デフォルトの名無しさん :2019/12/06(金) 05:11:25.02 ID:lGRN9wM80.net
- >>498
わかりやすいご説明どうもありがとうございます!ほぼ理解できたと思います。
たとえば十進数の123を十進数文字の最大値9で割った余りは
1+2+3と等しくなりますが、これと同じ原理ということですよね?
ただよくよく考えてみると、そもそも十進数の各桁の合計を9で割った余りが
元の数を9で割った余りと等しくなることについても
お恥ずかしながら豆知識として知っているだけで原理を理解できていませんでした。
ただこれに関してはもはやC言語ではなく算数の問題なので、
その方面の解説サイトをググって勉強しようと思います。
なにはともあれ、回答してくださった皆様方、どうもありがとうございました。
>>495
読みやすい記事を提供してくださっているので、もう少しだけコメントさせてください。
現状だと、MemoryReAllocateを呼び出す側は関数の成否を確認するために
Mem->Memoryを覚えておく必要がありますので、MemoryReAllocateの引数に
参照渡しを使われるならMemoryReAllocateの戻り値はMomeryではなくて
成否を表すboolなどにされてはいかがでしょうか。
また、reallocは第一引数としてNULLを許容しているので
MemoryReAllocateは入力のMem->MemoryがNULLであっても
Mem->ElementSizeが正しい値であれば正常に動作しますが、
その一方でMemoryAllocateは失敗するとElementSizeがゼロの構造体を
返すので少しアンバランスかなと思いました。
あと、MemoryFreeがboolを返すのであれば、freeの前にNULLチェックを入れて
その結果をMemoryFreeの戻り値としてもいいかなと思いました。
(free関数自体はNULLを渡しても何もしないだけで問題は起こりませんが)
以上お目汚し失礼しました
- 501 :デフォルトの名無しさん :2019/12/06(金) 05:15:04.10 ID:PFBD6caPd.net
- 1回進むごとに
2bitずつに区切って、1の数を各2bitに入れる
4bitずつに区切って、1の数を各4bitに入れる
8bitずつに区切って、1の数を各8bitに入れる
...
となるので
>>489だと各バイトの1の合計が、各バイトに入る
各バイトなので256バイトのテーブルを使う方法もある
チープなCPUだとこちらの方が速い
逆にリッチなCPUだと数える命令が最初から備わってたりするしベクタ化も可能
Icelake以降だとAVX512VBMIの命令を使って
超高速に64バイト分カウント出来る
- 502 :デフォルトの名無しさん (スプッッ Sd03-FAUo):2019/12/06(金) 05:24:05 ID:PFBD6caPd.net
- >>500前半
なんか違う
10進数の各桁に関しては
1000a+100b+10c+d
=999a+99b+9c+a+b+c+d
=9(111a+11b+c)+(a+b+c+d)
これを2進数でやると
9のところが1になるからあまり意味がない
- 503 :デフォルトの名無しさん (スプッッ Sd03-FAUo):2019/12/06(金) 05:33:31 ID:PFBD6caPd.net
- 分割統治っていうより
レジスタ内の桁数を使ってSIMD演算してるって感じ
01020304 + 02040608
2桁ずつの4個の足し算になってるでしょ?
- 504 :デフォルトの名無しさん :2019/12/06(金) 05:47:57.81 ID:PFBD6caPd.net
- vpsrld
vpermb
vpermb
vpaddb
AVX512VBMIを使うと
レジスタに値がある状態で
4命令で64バイト分
- 505 :デフォルトの名無しさん (ワッチョイ 23b9-QX1D):2019/12/06(金) 05:56:22 ID:lGRN9wM80.net
- >>501 >>504
レスありがとうございます。
> 各バイトなので256バイトのテーブルを使う方法もある
確かにある程度のビット幅ごとにテーブルを使って計算する方法は
シンプルですが効果が高そうですね。
> 逆にリッチなCPUだと数える命令が最初から備わってたりするしベクタ化も可能
> 4命令で64バイト分
勉強になります。本当に速さが必要ならCPU自体の理解から始めるべきなんですね。
このあたりのハードウェアの違いは標準ライブラリ関数が吸収してくれると最高なのですがw
>>502
10進数の話の数式どうもありがとうございます!大変勉強になりました。
そうすると、>>489 の popcount の最後にやっているのは
2進数というか0x100進数で、
0x1000000*a+0x10000f*b+0x100*c+d
=0xffffff*a+0xffff*b+0xff*c+a+b+c+d
=0xff*(0x01010x*a+0x0101*b+c)+(a+b+c+d)
ということになると思うのですがいかがでしょうか。
- 506 :デフォルトの名無しさん (ワッチョイ 23b9-QX1D):2019/12/06(金) 05:58:37 ID:lGRN9wM80.net
- >>505 の数式が変でした。正しくは以下のとおりです。失礼しました。
0x1000000*a+0x10000*b+0x100*c+d
=0xffffff*a+0xffff*b+0xff*c+a+b+c+d
=0xff*(0x010101x*a+0x0101*b+c)+(a+b+c+d)
- 507 :デフォルトの名無しさん (スプッッ Sd03-FAUo):2019/12/06(金) 06:20:08 ID:PFBD6caPd.net
- 最後の % 0xff を見てなかった
なので各バイトの1の個数と勘違いしてました
>>506はその通り
%は、除算命令を使うと遅いので
コンパイラは
0x0101010101010101
との乗算とシフトに置き換えそうです
PCの64bit環境だとPOPCNT命令がそのまま1命令
Icelake以降だとVPOPCNTQで8個を1命令
で出来ます
- 508 :デフォルトの名無しさん (スプッッ Sd03-FAUo):2019/12/06(金) 06:24:24 ID:PFBD6caPd.net
- x % 0xff
よりは
x * 0x0101010101010101 >> 56 & 0xff
の方が直接的でコンパイラを頼らない記述でしょう
- 509 :デフォルトの名無しさん :2019/12/06(金) 06:34:20.70 ID:hd4ipDIZM.net
- それだと
剰余 x % 0xff
ではなくて
商 x / 0xff
- 510 :デフォルトの名無しさん :2019/12/06(金) 06:36:33.62 ID:PFBD6caPd.net
- >>508 で大丈夫
乗算の筆算を考えてみよう
- 511 :デフォルトの名無しさん :2019/12/06(金) 06:37:31.16 ID:lGRN9wM80.net
- >>507-508
レスありがとうございます。
> x % 0xff
> よりは
> x * 0x0101010101010101 >> 56 & 0xff
> の方が直接的でコンパイラを頼らない記述でしょう
コンパイラの最適化によって一行目が三行目に
置き換えられる可能性があるということですか!?
難しそうですがちょっと考えてみたいと思います。
> PCの64bit環境だとPOPCNT命令がそのまま1命令
> Icelake以降だとVPOPCNTQで8個を1命令
本当に速度を求めるならCPUの命令を直接使えということですね。
覚えておきます。
- 512 :デフォルトの名無しさん :2019/12/06(金) 06:42:08.81 ID:PFBD6caPd.net
- >>511
コンパイラは普通、定数の除算は乗算に置き換えます
乗算、シフトは1クロック、除算は数十クロックかかるのが普通なので
ただ、
>>508 にまでは最適化されないかも
なので>>508の方が良いです
- 513 :デフォルトの名無しさん :2019/12/06(金) 06:54:43.75 ID:lGRN9wM80.net
- >>512
ありがとうございます。そのようにしたいと思います。
ご親切に甘えてしまい申し訳ないのですが、
もう一つ質問させてください。今、
@ = x % 0xff
と
A = x * 0x0101010101010101 >> 56 & 0xff
について考えていたのですが、
x = 0xff のとき、
@ = 0x00, A = 0xffのように、別の値になりませんか?
これは、どこか書き間違いがあるとういことでしょうか。
それとも、この違いは今回の用途では問題にならないということでしょうか。
- 514 :デフォルトの名無しさん :2019/12/06(金) 06:57:32.55 ID:lGRN9wM80.net
- >>512
立て続けにすみません。。。たった今理解しました。
「この違いは今回の用途では問題にならない」が正解ですね。
- 515 :デフォルトの名無しさん :2019/12/06(金) 06:57:55.91 ID:PFBD6caPd.net
- 除算命令、
Skylakeで最大90クロックだそうで...
簡単な命令だと1クロックで3〜4個実行出来る事を考えると劇遅ですね
Icelakeだと18クロックなので
改善されてるみたい
- 516 :デフォルトの名無しさん :2019/12/06(金) 07:06:52.23 ID:lGRN9wM80.net
- >>515
> 除算命令、
> Skylakeで最大90クロックだそうで...
なんと!しかも、「最大」という表現が付くんですね。
つまり、ただの数値計算なのに
クロックの数がデータに依存する可能があるということ…?
- 517 :デフォルトの名無しさん (スプッッ Sd03-FAUo):2019/12/06(金) 07:12:58 ID:PFBD6caPd.net
- >>516
除算命令の実行時間はデータに依存します
内部的にループしてるようなものなので
SIMDの除算は多分一定
Icelakeももしかしたら一定かもしれません
SIMD乗算も非常に小さな値だと遅い事があったような
- 518 :デフォルトの名無しさん (ワッチョイ 23b9-QX1D):2019/12/06(金) 07:35:33 ID:lGRN9wM80.net
- >>517
小さい値だと遅い!?
すみません、ハードウェアの知識がなさすぎて
タイプミスをされたのか本当にそうなのかの判断すらつかないです。。。
- 519 :デフォルトの名無しさん (ワッチョイ e573-FAUo):2019/12/06(金) 07:55:08 ID:DDupnuWl0.net
- https://ja.m.wikipedia.org/wiki/%E9%9D%9E%E6%AD%A3%E8%A6%8F%E5%8C%96%E6%95%B0
ここの「性能問題」参照
浮動小数点演算の話ですので今回は関係ないです
- 520 :デフォルトの名無しさん :2019/12/06(金) 07:59:35.87 ID:/1U5BHO/0.net
- そりゃ並列処理できるような相互依存性の低い大量のデータでもあるならともかく
小さなデータ塊対象だとパック化やアンパック化する手間が掛かる分だけ
総合的にはSIMD使った方が遅くなるだろ
馬鹿となんとかは使いようと言うだろ
- 521 :デフォルトの名無しさん (ワッチョイ e573-FAUo):2019/12/06(金) 08:10:43 ID:DDupnuWl0.net
- どこの誤爆か気になる
- 522 :デフォルトの名無しさん (スッップ Sd43-FAUo):2019/12/06(金) 12:19:42 ID:PPEOwhLkd.net
- >>520
馬鹿がSIMD使うと遅くなる
それはそうかも
- 523 :デフォルトの名無しさん (ワッチョイ 23b9-QX1D):2019/12/06(金) 15:17:31 ID:lGRN9wM80.net
- >>519
勉強になります。
非正規化数という言葉はちらっと聞いたことはありますが、こういうデメリットもあるんですね。
そして、それでも非正規化数を使うのは
「浮動小数点数の加減算は決して『アンダーフローによるゼロ』にならない」
という理由があるのだということも初めて知り、とても興味深く感じました。
ところで、ビット演算に関してもう一つ相談させていただいてもよろしいでしょうか。
動的メモリ再確保のコストを減らすために確保するメモリのサイズを必ず 2ⁿ-1 の形にしたくて、
与えられた数を下回らない最小の 2ⁿ-1 の値の値を返すような関数を作って使っています。
つまり引数xを2進数で表したときの一番上位の1以下をすべて1に置き換えるような関数で、
具体的には以下のように記述しています。
int fill_lower_bits(int x)
{
x |= x >> 1;
x |= x >> 2;
x |= x >> 4;
x |= x >> 8;
x |= x >> 16;
return x;
}
この関数は割と使用頻度が高いので、PCの64bit環境にPOPCNT命令があるように、
もしfill_lower_bitsと似た振る舞いをする命令があれば名前を教えていただけないでしょうか。
(続く)
- 524 :デフォルトの名無しさん (ワッチョイ 23b9-QX1D):2019/12/06(金) 15:18:25 ID:lGRN9wM80.net
- (続き)
また、こちらはあまり使い道は思いつきませんが、
int fill_higher_bits(int x)
{
x |= x << 1;
x |= x << 2;
x |= x << 4;
x |= x << 8;
x |= x << 16;
return x;
}
という関数を考えることもできて、これなら
int fill_higher_bits(int x)
{
return -(x & -x);
}
のように簡単な書き方に変更できます。
fill_lower_bitsについてもこういうテクニックがあればいいなと思っているのですが、
もし何かご存知であれば教えていただけると嬉しいです。
- 525 :デフォルトの名無しさん :2019/12/06(金) 19:09:08.62 ID:PPEOwhLkd.net
- >>523
BSR命令といくつかの命令を組み合わせて出来ます
Cからだと _BitScanReverse64
>>524
x | -x
の方が良いと思います
- 526 :デフォルトの名無しさん :2019/12/06(金) 19:33:49.52 ID:lGRN9wM80.net
- >>525
何度も本当にどうもありがとうございます。大変勉強になります。
> _BitScanReverse64
こんな命令があったとは!
この名前で検索したら、今まで知らなかった興味深いページがたくさんヒットしました。
ReverseじゃなくてForwardというのもあるみたいですが、
Forwardの方はマイナスを使う方法でも十分高速になりそうなので、
どちらが速いか検証してみようと思います。
> x | -x
確かに…。
ド・モルガンの法則で ~(x & ~x) が ~x & x に書き換えられるのはすぐに分かるのですが、
もしかしてそれと同じことがマイナスでもできるのでしょうか。
-x が ~x + 1 と同じになることは理解しているので、ちょっと考えてみたいと思います。
- 527 :デフォルトの名無しさん :2019/12/06(金) 19:53:04.32 ID:lGRN9wM80.net
- >>526
> ド・モルガンの法則
-(a & b) = -a | -b が成り立つかなと期待したのですが、
a = 0, b = 1 のときにつまずいてしまいました。
でも、>>525 に書いていただいた -(x & -x) = -x | x は間違いなさそうです。
こういう式の変形って、どこかテキストに載っていたりするのでしょうか。
- 528 :デフォルトの名無しさん :2019/12/06(金) 20:51:24.53 ID:DDupnuWl0.net
- 自分で頑張って探すんです
~x
x-1
-x
&
|
^
これらを組み合わせれば
一番右のビット関連がいろいろと出来ます
???10000
に対して
11110000
11100000
00010000
00011111
00001111
これらを得る最小回数の演算を考えてみてください
- 529 :デフォルトの名無しさん :2019/12/06(金) 21:03:52.43 ID:vzfmAUcv0.net
- ド・モルガンと似た問題で、
「君たち2人は注意されないならば、君たち2人は私語を止めない」
の対偶、
「君たち2人が私語を止めるならば、君たち2人は注意される」
って矛盾にちょっと考えてしまったわ。
- 530 :デフォルトの名無しさん :2019/12/06(金) 21:07:30.59 ID:BprTHIND0.net
- x 注意される
o 注意された
- 531 :デフォルトの名無しさん :2019/12/06(金) 21:15:00.21 ID:vzfmAUcv0.net
- >>530
さすが、その通り。
- 532 :デフォルトの名無しさん :2019/12/06(金) 23:44:25.67 ID:DDupnuWl0.net
- >>523
メモリ確保やアクセスの時間に比べれば
サイズ計算の時間は無視出来る
ビット演算の趣味として楽しむ分には良いけど
普通にループでもパフォーマンスは変わらない
パフォーマンスが重要じゃないところ
(つまりほとんどの部分)は
移植性、見やすさ、工数、...
などが優先される
ということは知っておいた方が良いですね
- 533 :デフォルトの名無しさん :2019/12/06(金) 23:51:44.77 ID:Rsc9FZ2h0.net
- 分野によってはループや比較による分岐は遅すぎて使えないなんてことままあるよ
- 534 :デフォルトの名無しさん :2019/12/07(土) 00:10:26.85 ID:n8phrA6e0.net
- >>523の話
- 535 :デフォルトの名無しさん :2019/12/07(土) 00:10:27.55 ID:4NjUP+TJM.net
- それは経験談?
それとも誰かからの受け売り?
- 536 :デフォルトの名無しさん :2019/12/07(土) 00:15:02.34 ID:n8phrA6e0.net
- 動的メモリ再確保
のサイズ計算の話
オーダーnに対して係数の小さなオーダーlog nは無視して良い
って話
- 537 :デフォルトの名無しさん (ワッチョイ 4dda-vpIn):2019/12/07(土) 01:14:15 ID:kGPNKNyL0.net
- ちょっと前にスレで騒がれていたフーリエ変換に関する話題
50年来の信号処理に関する謎が解かれる、逆高速フーリエ変換がついに一般化
https://fabcross.jp/news/2019/20191206_fast-fourier-transform.html
- 538 :デフォルトの名無しさん :2019/12/07(土) 19:02:43.91 ID:Tn5G8ZSlF.net
- 解明って言うんか?これ
- 539 :デフォルトの名無しさん :2019/12/14(土) 01:27:42.96 ID:TU6i1yGkx.net
- C言語というか、WindowsのCですが、
たとえば strcpyの lstrcpyと _tcscpyの違いは何なのでしょうか
前者は WindowsAPI、後者は VC++CRTという説明を見たのですがよくわからないのです
両者とも UNICODE(後者は_UNICODE) の有無で charとwchar_tを切り替えるようですが、どちらをどんな時に使用するのかが分かりません。
- 540 :デフォルトの名無しさん :2019/12/14(土) 10:20:34.10 ID:00Pm6Tju0.net
- crtへの依存を減らせる分、常にlstrcpyを使えばいいと思うよ。lstrcpyは不正アクセスしたときに例外投げてくれるみたいだし。
自分なら依存減らす&安全性のためにstrncpyとwcsncpyを選ぶけど
- 541 :デフォルトの名無しさん :2019/12/14(土) 23:23:03.56 ID:ECY2395Ex.net
- >>540
ありがとうございます。
539です。
今後は気をつけようと思いますが、過去に書いたコードは何ともいたし難く…orz
なぜ先に lstrcpyを見つけなかった 2014年のオレ…
でも、内容が古いのかもしれませんが、ある記事によると CRTの依存を断ち切るのも容易ではないようで。。。
- 542 :デフォルトの名無しさん :2019/12/15(日) 00:22:25.61 ID:ay8KMh7A0.net
- むしろlstrcpyなんて16bit時代から引きずってる過去の遺物なんじゃ?
今はlstrcpyも非推奨、代替のStringCchCopyはWindowsAPIの体だけどkernel32.dll等を呼び出すのではなくstrsafe.h内にコードが書いてある変わり種なのでtchar.h系の_tcscpy_sでよくね?っていう
- 543 :デフォルトの名無しさん :2019/12/15(日) 00:32:33.51 ID:YgrLaWOD0.net
- MSのCは独自色が過ぎる
- 544 :デフォルトの名無しさん :2019/12/15(日) 09:51:20.97 ID:Q+saMC6e0.net
- そうか? 古くからMSCは「高いが安心」というポジションだったが
- 545 :デフォルトの名無しさん :2019/12/15(日) 13:16:36.84 ID:o9m7qUoDF.net
- 放送大学2020新講座
C言語基礎演習
https://www.wakaba.ouj.ac.jp/kyoumu/syllabus/PU02060200221/initialize.do
- 546 :デフォルトの名無しさん :2019/12/15(日) 14:57:55.02 ID:AP8z1X7d0.net
- 何の変哲の無いコードを書いてコンパイラのバグが顕在化するMicrosoftのCが安心とは、茶がヘソを沸かす。
- 547 :デフォルトの名無しさん :2019/12/15(日) 15:53:29.93 ID:Rd0yTkco0.net
- 唯一のECMA-372対応コンパイラ
壮大なマッチポンプだが…
- 548 :デフォルトの名無しさん :2019/12/15(日) 23:21:27.87 ID:z0zgGhJDM.net
- そもそもCはUNIXの為に作られた言語だから
UNIX系以外のOSで使うと齟齬が出るよね
- 549 :デフォルトの名無しさん :2019/12/16(月) 09:15:32.91 ID:poPvuM4I0.net
- 何言ってんだこのバカ
- 550 :デフォルトの名無しさん :2019/12/16(月) 09:20:02.47 ID:wmZohWX5d.net
- せいぜいnとCR LFの齟齬くらいだね
- 551 :デフォルトの名無しさん :2019/12/16(月) 09:40:49.35 ID:0Jl4Gkqp0.net
- それはテキストファイルのコードの違いというだけであって言語の仕様そのものとは直接関係ない
- 552 :デフォルトの名無しさん :2019/12/16(月) 10:23:00.62 ID:1+8Fi0A+0.net
- OSを記述しやすく意図されて言語という認識だが
UNIXに絞って特化された部分って何だろう?
- 553 :デフォルトの名無しさん :2019/12/16(月) 10:34:38.41 ID:WErHXUGxM.net
- テキストファイルといえば
歴史上どっかの段階で文字列操作や汎用IO関数を捨て専用のもちっと使いやすい内蔵スクリプト言語に任せ
どうしても処理速度を求めるマは自作、非標準ライブラリで配列イジクール形にしたらよかったのにね
システムコールの頻度とか毎度読み解く指定子とかで標準ライブラリも爆速ってほどじゃないしー
printfのうじゃうじゃ増える非互換指定子とか似た使い分け迷う関数の増殖とかを防げたろうに
- 554 :デフォルトの名無しさん :2019/12/16(月) 11:27:10.48 ID:LjjtFzBx0.net
- せっかくライブラリとして言語の外に出てるのに、
なんでスクリプト言語なんか内蔵しなきゃいかんの。
- 555 :デフォルトの名無しさん :2019/12/16(月) 12:29:48.70 ID:3ha1TSe5M.net
- >>552
creat()のモード指定が8進数で書ける
- 556 :デフォルトの名無しさん :2019/12/16(月) 13:05:02.49 ID:ErLMiOjL0.net
- file の lock とかか >>552
- 557 :デフォルトの名無しさん :2019/12/16(月) 13:12:27.77 ID:3bH+pT+k0.net
- >>555-556
それはライブラリの問題ではないか。言語仕様とはちょいと違う気がする
まあ「標準ライブラリは言語仕様(キリッ」と言いきっちゃってもいい気もする
- 558 :デフォルトの名無しさん :2019/12/16(月) 13:19:15.38 ID:LjjtFzBx0.net
- たしかにunix系以外で8進数って使わないような気もする。
- 559 :デフォルトの名無しさん :2019/12/16(月) 13:21:15.05 ID:k2txnuEDM.net
- Cは文字列をヌル終端するのが「ほぼ」前提になってるよね。
もしそれ以外の文字列表現を使うつもりだったら、
文字列専用の型を用意していたし、ポインタより配列を重視していたはず。
- 560 :デフォルトの名無しさん :2019/12/16(月) 13:22:41.90 ID:ErLMiOjL0.net
- >>557
おまいがOSに特化したとか言い出したんじゃないのか
- 561 :デフォルトの名無しさん :2019/12/16(月) 13:23:58.45 ID:3ha1TSe5M.net
- >>557
違う、8進数で書けると言う「言語仕様」の話
- 562 :デフォルトの名無しさん :2019/12/16(月) 13:30:01.62 ID:3bH+pT+k0.net
- >>561
8進数でも書けちゃう
というだけで、建前としては「ちゃんと定数使え」じゃない?
言語仕様でUnix文化に特化してるところって
mainとreturnの仕様くらいじゃない?
- 563 :デフォルトの名無しさん :2019/12/16(月) 13:32:32.25 ID:LjjtFzBx0.net
- >>562
8進数で書くのがchmod互換で直感的なんだべ
- 564 :デフォルトの名無しさん :2019/12/16(月) 14:13:38.79 ID:3ha1TSe5M.net
- >>562
> 建前としては「ちゃんと定数使え」じゃない?
建前はともかく0777とか0755とかバンバン書かれてるし…
とまで書いてなんだけど、ちょっとググったらどうも8進数はC言語発祥じゃなくてB言語でも使えたみたいw
PDPシリーズは触ったことないからよくわからんけどHPのミニコンは命令コードが3bit単位に区切られて表記されてた
ブートローダーは手入力してて16個並んでるスイッチでアドレスや命令コードをセットするんだけど見ての通り3bit単位に区切ってある
もう記憶があやふやだけどアセンブラとかも8進表記ができたような気がする
http://www.hpmuseum.net/images/2108A-37.jpg
多分PDPも似たような感じだったんじゃないかと思う
なので8進数云々はあまり関係なかったわ、すまん
- 565 :デフォルトの名無しさん :2019/12/16(月) 19:57:33.47 ID:xr9KOlE00.net
- お前らも8進数よく使うだろ
0とか
- 566 :デフォルトの名無しさん :2019/12/16(月) 20:00:10.61 ID:RwgS0BCD0.net
- ソースの見栄えを気にして桁そろえに スペース使わずに 0 を補うんですね
- 567 :デフォルトの名無しさん :2019/12/16(月) 20:01:38.57 ID:xr9KOlE00.net
- やったことあるヤツいるよな?
いやそうじゃなくて
ただの0
- 568 :蟻人間 :2019/12/16(月) 20:18:50.99 ID:8JsSimFSd.net
- 017は頭に0があるから、C/C++では8進数として扱う。ただのゼロもリテラルの分類としては8進数。
- 569 :デフォルトの名無しさん :2019/12/16(月) 20:23:36.65 ID:KhG8vsdXM.net
- 0リテラルは8進だったのか…
- 570 :デフォルトの名無しさん :2019/12/16(月) 20:31:05.71 ID:KhG8vsdXM.net
- (6.4.4.1) octal-constant:
0
octal-constant octal-digit
まじか
でも8進だからなんだっていう
- 571 :デフォルトの名無しさん :2019/12/16(月) 21:43:34.71 ID:G86pu5OQ0.net
- 16歳の僕でも酒が飲めるぞ。
飲める飲める飲めるぞ酒が飲めるぞ。
- 572 :デフォルトの名無しさん :2019/12/16(月) 21:43:53.10 ID:myVu/Iud0.net
- え?割と有名な話では?
- 573 :デフォルトの名無しさん :2019/12/16(月) 22:13:01.15 ID:AI1GDY0I0.net
- 012 月はハロウィンで酒が飲めるぞ
飲める飲める飲めるぞ酒が飲めるぞ
- 574 :デフォルトの名無しさん :2019/12/16(月) 22:28:43.33 ID:SRFHZZ1hx.net
- >>571
それは10進数でしょ
- 575 :デフォルトの名無しさん :2019/12/16(月) 22:44:38.36 ID:xr9KOlE00.net
- いや
14進数とか16進数だろ
- 576 :デフォルトの名無しさん :2019/12/17(火) 05:16:47.62 ID:YPw71Sxa0.net
- 8進数いらない
- 577 :デフォルトの名無しさん :2019/12/17(火) 07:03:39.66 ID:KzMqUd+td.net
- Cにも0bと桁区切り欲しい
- 578 :デフォルトの名無しさん :2019/12/17(火) 11:16:49.78 ID:C7XZiRB60.net
- 512色カラーで使った。
- 579 :デフォルトの名無しさん :2019/12/17(火) 12:28:51.79 ID:rApV4krMF.net
- int main()
{
return 0;
}
8進数ですほんとうにありがとうございました
- 580 :デフォルトの名無しさん :2019/12/17(火) 18:33:08.01 ID:x9hYOthl0.net
- MinGWとUbuntuはどっちがいいですか?
- 581 :デフォルトの名無しさん :2019/12/17(火) 19:26:43.19 ID:PKHU1E440.net
- 何が?
- 582 :デフォルトの名無しさん :2019/12/17(火) 23:43:40.20 ID:FF2dVpsc0.net
- Ubuntu
- 583 :デフォルトの名無しさん :2019/12/17(火) 23:50:56.66 ID:6pfYPcmc0.net
- 2進数表記が欲しい
- 584 :デフォルトの名無しさん :2019/12/18(水) 00:13:36.84 ID:i+6d3gEf0.net
- 16進小数リテラルが欲しい
- 585 :デフォルトの名無しさん :2019/12/18(水) 00:16:26.43 ID:AxZUQGgH0.net
- >>584
加減乗除考えただけで頭痛くなりそうだ
- 586 :デフォルトの名無しさん :2019/12/18(水) 00:19:17.60 ID:P8XWWN6i0.net
- すんごく欲しいならプリプロセッサでも作ればいいんじゃね?
- 587 :デフォルトの名無しさん :2019/12/18(水) 00:19:24.08 ID:i+6d3gEf0.net
- 人間が計算する必要は無いんだよ
- 588 :デフォルトの名無しさん :2019/12/18(水) 00:24:30.38 ID:i+6d3gEf0.net
- >>586
プリプロセッサで10進数にするの?
それじゃ何の為の16進リテラルかわからない
いずれ対応するから待つのみ
- 589 :デフォルトの名無しさん :2019/12/18(水) 00:34:01.93 ID:P8XWWN6i0.net
- プリプロセッサ作って言語を拡張とか、昔はけっこうあったけどな。
- 590 :デフォルトの名無しさん :2019/12/18(水) 00:36:26.05 ID:AxZUQGgH0.net
- 昔は結構あったはずのものが、今は残ってないのだろう
- 591 :デフォルトの名無しさん :2019/12/18(水) 00:39:48.29 ID:P8XWWN6i0.net
- まあそれほど必要がないなら別にいいんじゃね。
IDEしか使わないならそういうことはやりづらいだろうし。
- 592 :デフォルトの名無しさん :2019/12/18(水) 00:52:36.68 ID:i+6d3gEf0.net
- 誤差を無くす為の16進小数リテラルなのに
プリプロセッサで10進数に直すの?
- 593 :デフォルトの名無しさん (ワッチョイ 0e16-kGA4):2019/12/18(水) 02:20:08 ID:YAJfAYS50.net
- ビットパターンを直接作って変数のアドレスに放り込むようにできないのかな。
それじゃリテラルじゃなくなっちゃうか。
- 594 :デフォルトの名無しさん :2019/12/18(水) 05:31:30.34 ID:GlvGxt8T0.net
- >>584
C++17に既にあるから、いずれ使えるようになりそう
>>585
普通に10進で書いた浮動小数点数とまったく同じ扱いなので心配無用
>>592
10進でDBL_DECIMAL_DIG桁あれば、元の値を再現できるはず(doubleの場合)
- 595 :デフォルトの名無しさん :2019/12/18(水) 07:36:57.59 ID:PEFQbiIGd.net
- >>583
C++14で0b使えるようになって
もう5年も経っているんだが
- 596 :デフォルトの名無しさん :2019/12/18(水) 08:17:07.53 ID:4w0y1KxwM.net
- >>595
スレタイみような
- 597 :デフォルトの名無しさん :2019/12/18(水) 11:30:30.49 ID:RQBBPl9vF.net
- >>593
floatやdoubleとcharのunionにするやつか
- 598 :デフォルトの名無しさん :2019/12/18(水) 11:37:41.82 ID:nuxI9nkU0.net
- float や double のビットパターンが IEEE754 前提でごりごりっと…
- 599 :デフォルトの名無しさん :2019/12/18(水) 18:15:23.76 ID:G112g1QU0.net
- C言語に欲しい機能は、関数オーバーライドとユニファイドコールシンタックス。
3つあったけど一個忘れた。
参照もいいな。
そんなアマチュアC++書きです。
- 600 :デフォルトの名無しさん :2019/12/18(水) 18:16:48.77 ID:G112g1QU0.net
- あ、constexprもほしいねぇ。
- 601 :デフォルトの名無しさん :2019/12/18(水) 20:26:19.16 ID:CdPazUY7M.net
- C++をBetter Cで使えばいいだけじゃね?
- 602 :デフォルトの名無しさん :2019/12/18(水) 22:11:10.32 ID:xgw20G5ix.net
- 僕は inlineをサンタさんにお願いしよう…
- 603 ::2019/12/18(水) 23:09:07.24 ID:tbeJyQYA0.net
- >>602
inline と指定すればなにがあろうと inline に固執する執念深いコンパイラはありませんか?
- 604 :蟻人間 :2019/12/18(水) 23:13:25.96 ID:Zo1XP6560.net
- __inlineは非標準だが、つかえ(以下略)
- 605 :デフォルトの名無しさん :2019/12/18(水) 23:24:19.48 ID:i+6d3gEf0.net
- inlineを忠実に守ってたら
指数関数的にコードサイズが増える
- 606 ::2019/12/18(水) 23:59:36.80 ID:tbeJyQYA0.net
- >>605
それはコンパイラが判断することではなく、人間様が判断することなのでは?気分次第で inline にならない inline 指定なんて何の役にもたたないと思います
- 607 :デフォルトの名無しさん :2019/12/19(木) 00:13:43.37 ID:S/u3JoW1M.net
- ループ展開して中のinline関数をぶちまけたら・・・
命令の並べ替えで案外コンパクトに成るかもしれんし
指数は言い過ぎだと思うがね
- 608 :蟻人間 :2019/12/19(木) 00:38:42.38 ID:6IXT8mCld.net
- それまた非標準の__forceinlineというキーワード使えばインライン化を強制できる。
- 609 :デフォルトの名無しさん :2019/12/19(木) 06:50:23.98 ID:rFEDNRgX0.net
- >>599 名前空間オヌヌメ。
って言うか、なぜ急に自己紹介なんだろ?
- 610 :デフォルトの名無しさん :2019/12/19(木) 19:43:05.94 ID:0uPukb6za.net
- ついうっかり再帰する関数を inline にしてし(ry
- 611 :デフォルトの名無しさん :2019/12/19(木) 20:00:28.38 ID:L7o4TfDh0.net
- >>607
2箇所でコールする関数がn段ネストで2^n
- 612 :デフォルトの名無しさん :2019/12/19(木) 22:27:18.11 ID:gVlfKsHk0.net
- 無限ループをインラインで展開
- 613 :デフォルトの名無しさん :2019/12/20(金) 01:47:19.47 ID:28sCejNS0.net
- 無限ループってこわくね?
- 614 :デフォルトの名無しさん (ワイーワ2 FFdf-hPjh):2019/12/20(金) 12:03:42 ID:Syf6RG7EF.net
- >>613
https://www.youtube.com/watch?v=VjJaKA016NQ
- 615 :デフォルトの名無しさん (ワッチョイ ff02-65x4):2019/12/20(金) 12:40:59 ID:QFt1HgPu0.net
- だって同じことがずーっと続くんだぜ
- 616 :デフォルトの名無しさん :2019/12/20(金) 21:46:42.87 ID:BqL6wPJ0a.net
- 真の無限ループは作れない。
コンピュータは何れ壊れるし停電になったら終わりだからな。
- 617 :デフォルトの名無しさん :2019/12/20(金) 21:52:00.56 ID:qHTdS2+z0.net
- 真の無限ループを現実的に実行することができない≒無限を観測することはできない
概念としては作れる
- 618 :デフォルトの名無しさん :2019/12/20(金) 22:56:52.61 ID:zqOycIcFM.net
- 物理屋対数学屋
- 619 :デフォルトの名無しさん :2019/12/20(金) 22:59:48.75 ID:ZH5ZbPnE0.net
- 「真の」
っていう表現がマズい
- 620 :デフォルトの名無しさん :2019/12/20(金) 23:54:20.86 ID:Rn/41Zwx0.net
- 10 Print ”A"
20 Goto 10
- 621 :デフォルトの名無しさん :2019/12/21(土) 07:09:12.38 ID:JN5BZbCP0.net
- b .
- 622 :デフォルトの名無しさん :2019/12/21(土) 13:38:12.07 ID:MR+KFog00.net
- っ ノンボラタイルメモリ。
- 623 :デフォルトの名無しさん :2019/12/22(日) 02:30:50.40 ID:LaRPFE2v0.net
- goto文は危険なんですか?
- 624 :デフォルトの名無しさん :2019/12/22(日) 02:40:48.07 ID:gUOFz5Ze0.net
- あぁ、実に危険な話題だ。
- 625 :デフォルトの名無しさん :2019/12/22(日) 02:44:33.39 ID:lBW/6Z3k0.net
- >>617
そう。つまり、心の中にあるのさ。
- 626 :デフォルトの名無しさん :2019/12/22(日) 02:51:43.79 ID:lBW/6Z3k0.net
- goto は技を極めた者だけが使うことが許される。半端な者が手を出せばおかしなことにしかならない。
- 627 :デフォルトの名無しさん :2019/12/22(日) 02:56:36.50 ID:gKJY07Bh0.net
- >>623
用法用量を守って正しくお使いください。
- 628 :デフォルトの名無しさん :2019/12/22(日) 07:27:17.21 ID:DuLbamX70.net
- gotoのなにがいけないのかを知らない者は
スペルがジーオーティーオーでないgotoを平気で使いながら
頓珍漢な教条主義を得意げにぬかす
- 629 :デフォルトの名無しさん :2019/12/22(日) 08:27:39.32 ID:OI05XeSt0.net
- >>628
> スペルがジーオーティーオーでないgoto
wakaran
- 630 :デフォルトの名無しさん :2019/12/22(日) 08:31:28.88 ID:4GpMlcpo0.net
- > goto文は危険なんですか?
ああ、とてつもなく危険だよ
こんなことを聞くような>>623にとってはな
- 631 :デフォルトの名無しさん :2019/12/22(日) 08:35:46.34 ID:DuLbamX70.net
- >>629
ISO/IEC 9899:2018 6.8.6 Jump statements
- 632 :デフォルトの名無しさん :2019/12/22(日) 10:21:23.25 ID:OI05XeSt0.net
- >>631
goto文以外のジャンプ・ステートメントとハナから書きなされ。
というか、goto文を乱用せずcontinue、break等で代用しなさいという教条だべ。
ジーオーティーオーでないgotoを平気で使うのは教条に反しないので、「ながら」と矛盾を指摘する言い方はおかしい。
- 633 :デフォルトの名無しさん :2019/12/22(日) 10:24:59.48 ID:sxycti0t0.net
- 悪魔を召喚する呪文
- 634 :デフォルトの名無しさん :2019/12/22(日) 12:02:27.27 ID:assBvK1w0.net
- 人生:
if (!就職()) goto 人生;
- 635 :623 :2019/12/22(日) 14:03:45.29 ID:LaRPFE2v0.net
- でも俺スパゲッティは嫌いじゃありません
- 636 :デフォルトの名無しさん :2019/12/22(日) 16:32:40.91 ID:BbprGibXd.net
- >>632
そんなにダイクストラらの主張の論点が何かが分かってないのを誇張して何がしたい?
- 637 :デフォルトの名無しさん :2019/12/22(日) 16:45:52.25 ID:qJChSMJU0.net
- いやー、上方へのジャンプを抑制するだけで結構切れますよ?
- 638 :デフォルトの名無しさん :2019/12/22(日) 16:47:16.93 ID:qJChSMJU0.net
- L:
hogehoge();
if(huga)gotoL2;
if(hage)goto L;
L2:
- 639 :デフォルトの名無しさん :2019/12/22(日) 16:48:43.49 ID:qJChSMJU0.net
- キーコンビネーション間違えて投稿してしまった。
>>638 のようなコードは完全にスパゲッティなのでやめましょう。
- 640 :デフォルトの名無しさん :2019/12/22(日) 16:51:13.34 ID:qJChSMJU0.net
- do{
continue;
}while();
while型goto教の教義のコード。
- 641 :デフォルトの名無しさん :2019/12/22(日) 16:57:49.51 ID:BbprGibXd.net
- 制御構造のパターンとして何型のものが望ましくないのか、お前ら本当に聞いたこともないの?
- 642 :デフォルトの名無しさん :2019/12/22(日) 16:59:01.86 ID:qJChSMJU0.net
- 安易な無限ループで悲惨なオチに出会う人減ってるかいな?
- 643 :デフォルトの名無しさん :2019/12/22(日) 20:25:06.85 ID:o2lyx4Qb0.net
- 局所でGOTOは有りだろう。
- 644 :デフォルトの名無しさん :2019/12/22(日) 21:00:22.05 ID:o2lyx4Qb0.net
- 全部論理式で書けば制御構造なぞ要らない。
- 645 :デフォルトの名無しさん :2019/12/22(日) 21:06:07.06 ID:Gm1dEDWR0.net
- アホばっかりと諦めるのはまだ早いと思う
短気を起こさずにもうしばらく待ってみる
- 646 :デフォルトの名無しさん :2019/12/22(日) 23:20:31.02 ID:lZWETk/y0.net
- >>643
あり
むしろ使わないと階層が深くなったり、フラグを多用したりで余計おかしなことに
- 647 :デフォルトの名無しさん :2019/12/23(月) 00:35:00.92 ID:5fq76TYI0.net
- bool型の変数をprintf関数内でプレースホルダ%dを使って表示すると、
1や0になってしまうのですが、trueやfalseの形式で表示できないでしょうか?
- 648 :蟻人間 :2019/12/23(月) 00:38:21.07 ID:EBKfcFlm0.net
- printf("%s", (b ? "true" : "false"));
- 649 :デフォルトの名無しさん :2019/12/23(月) 00:38:26.58 ID:+NV+2UGP0.net
- %sでboolVar ? "true": "false"とでもすればいい
Cにboolはないよ
- 650 :デフォルトの名無しさん :2019/12/23(月) 00:45:41.74 ID:Losi+wwQ0.net
- >>649
どアホ
ISO/IEC9899:2011 7.18
2 The macro
bool
expands to _Bool.
- 651 :デフォルトの名無しさん :2019/12/23(月) 00:52:11.44 ID:hXczb3NL0.net
- C99を (標準の)C と呼んでも差し支えないのだろうか
- 652 :デフォルトの名無しさん :2019/12/23(月) 00:56:54.61 ID:+xS4b3+d0.net
- 最新の規格が標準だぞ
C99が定められたのは既に20年前
太古の企画と言っても差し支えないレベル
- 653 :デフォルトの名無しさん :2019/12/23(月) 01:06:18.68 ID:z7fGiGkq0.net
- >>652
お前が勝手に決めるな
- 654 :647 :2019/12/23(月) 02:34:41.48 ID:5fq76TYI0.net
- 答えてくれた方ありがとうございました
面倒なんですね
- 655 :デフォルトの名無しさん :2019/12/23(月) 07:25:48.16 ID:Losi+wwQ0.net
- >>653
決めているのはISOで
652が勝手に決めているわけではない
現行規格すなわち標準はISO/IEC9899:2018、通称C17だ
https://www.iso.org/standard/74528.html
- 656 :デフォルトの名無しさん :2019/12/23(月) 07:26:35.49 ID:Losi+wwQ0.net
- 旧規格は現行規格の発効をもって廃止となる
- 657 :デフォルトの名無しさん :2019/12/23(月) 07:48:32.88 ID:z7fGiGkq0.net
- https://ja.m.wikipedia.org/wiki/ANSI_C
ANSI C、ISO C、または標準Cとは、米国規格協会(ANSI) および国際標準化機構(ISO) が発行したC言語の標準の総称である。歴史的にこれらの名前は特に、オリジナルであり、最もサポートされているバージョンであるC89およびC90のことを指す。
- 658 ::2019/12/23(月) 07:50:11.10 ID:GiJKkL8M0.net
- C99 later の C++ 非互換部分は、どうでもいいとおもいますね
C++ にあわせて欲しかったのですが、独自色を強めてしまったのは疑問手です
- 659 :デフォルトの名無しさん :2019/12/23(月) 08:11:06.15 ID:Losi+wwQ0.net
- 現実問題でもC89オンリーのコンパイラはかなり減ってきてるだろうが
Cライクな非標準全開のコンパイラなら今でもあるが
- 660 :デフォルトの名無しさん :2019/12/23(月) 08:18:44.36 ID:z7fGiGkq0.net
- 普及率を根拠にするなら
>>652を取り消してからにしてもらおうか
- 661 :デフォルトの名無しさん :2019/12/23(月) 08:29:28.17 ID:hJXMwG4B0.net
- >>647 の質問への直接の答えじゃないけど、
bool(実体は_Bool)型って汎整数拡張の対象だっけ?
拡張されるならprintfの中では引数がbool値だったか整数値だったか、
もう区別がつかないんじゃないか。
区別できなきゃ 0/1 で表示すべきか false/true で表示すべきかも
決められないと思うんだけど。
- 662 :デフォルトの名無しさん :2019/12/23(月) 08:32:48.54 ID:Losi+wwQ0.net
- >>660
たとえ652をボコボコにやっつけたところで
現実は何一つ覆りはせんぞ
無駄な抵抗はやめろ
- 663 :661 :2019/12/23(月) 08:40:36.25 ID:hJXMwG4B0.net
- 可変個引数の整数値が char でも short でも int になるのは
「汎整数拡張」とは違う動作、別の用語だったかも知れん。
言語に詳しい人の指摘をお願いしたい。
- 664 :デフォルトの名無しさん :2019/12/23(月) 08:50:19.46 ID:Losi+wwQ0.net
- promotion(拡張)
- 665 :デフォルトの名無しさん :2019/12/23(月) 13:42:09.95 ID:hXczb3NL0.net
- https://ja.wikipedia.org/wiki/C99
>GCC、Clang、Intel C++ Compiler 等はC99の新機能の大半をサポートしている。
>ただし、GCCは、ほとんど準拠しているが、規格への100%完全準拠は果たしてい
>ない。GCC 4.x までのデフォルトは C89 に GNU 拡張を加えた -std=gnu89、
>Clang のデフォルトは C99 に GNU 拡張を加えた -std=gnu99 である。GCC 5.0
>から C11 に GNU 拡張を加えた -std=gnu11 がデフォルトになる。
>Microsoft Visual C++ は 2013 から C99 の大半を実装した。ただし、tgmath.h
>や snprintf() などが未実装。
>Open Watcom C compiler は標準のうち最もよく使われている部分を実装している。
>かつては、ドキュメント化されていないコマンドラインスイッチを指定しないと
>有効化されなかった。2010年現在の最新版である 1.9 では -za99 オプションを
>付けることで有効化される旨、明記されている。
>Sun Studioは、サン・マイクロシステムズによればC99を完全にサポートしている。
主なコンパイラは大体対応している様だが、まだ完全ではないみたいだ。
GCCだと独自拡張もあるのでややこしそう。すでにC11に向かっているし。
- 666 :デフォルトの名無しさん :2019/12/23(月) 14:59:43.87 ID:rvIcRY54d.net
- 今時Cを使うのって
そういうメジャー所じゃなくて
小規模マイコン用の独自コンパイラがメインでは?
そうでもない?
- 667 :デフォルトの名無しさん :2019/12/23(月) 15:35:31.75 ID:Losi+wwQ0.net
- メジャーなところで旗色が悪くなったからって
マイナーなところへ逃げ込む気か
相手すんの馬鹿らしくなるぜ
- 668 :デフォルトの名無しさん :2019/12/23(月) 15:43:24.53 ID:c0dHMUCB0.net
- 規格を捏ねくりまわして喜んでいるのは言語マニアだけだしな
実際の現場は殆どが独自コンパイラ
- 669 :デフォルトの名無しさん :2019/12/23(月) 15:50:57.95 ID:Losi+wwQ0.net
- 捏ねくりまわすって、工業製品を使って工業製品を産み出すのに
規格票を確認するのは工業人の当たり前の日常だろうがよ
- 670 :デフォルトの名無しさん :2019/12/23(月) 15:54:46.80 ID:c0dHMUCB0.net
- 頭でっかちの老害
- 671 :デフォルトの名無しさん :2019/12/23(月) 16:01:57.23 ID:Losi+wwQ0.net
- 筋の通らんガキの駄々こねそのものだな
- 672 :デフォルトの名無しさん :2019/12/23(月) 16:12:34.32 ID:c0dHMUCB0.net
- 必要なのは規格よりもコンパイラ製造元のマニュアルだ
規格は実際の動作を保証してはくれない
- 673 :デフォルトの名無しさん :2019/12/23(月) 16:29:00.49 ID:Losi+wwQ0.net
- コンパイラのマニュアルも必要だが
規格「よりも」という変なバイアスは無用
「と」だろうが
- 674 :デフォルトの名無しさん :2019/12/23(月) 18:06:56.36 ID:rvIcRY54d.net
- テンプレに入れた方がいいな
特に断りがない限りはC89/C90が前提だって
- 675 :デフォルトの名無しさん :2019/12/23(月) 18:19:44.32 ID:Losi+wwQ0.net
- 却下
それこそ老害以外の何ものでもない
- 676 :デフォルトの名無しさん :2019/12/23(月) 18:23:01.96 ID:z7fGiGkq0.net
- 100歩譲ってC99
C17やC20限定の話題は他にスレを立ててそっちでやって
- 677 :デフォルトの名無しさん :2019/12/23(月) 18:23:59.39 ID:hXczb3NL0.net
- 老害でない人たちは、C99スレでも立ててそこに移動で
- 678 :デフォルトの名無しさん :2019/12/23(月) 18:37:06.44 ID:CGp0hW9r0.net
- bool 型があったとしても、
printf の引数(... で受ける) に渡すタイミングで暗黙に数値化しちゃうんじゃないかな?
C++での引数型により別のものが呼ばれる機構は期待できない部分
- 679 ::2019/12/23(月) 19:24:17.92 ID:GiJKkL8M0.net
- >>674
それは名案ですね、正直言って C89=K&R2 で必要かつ十分ですし、C99 になって追加されたことといえば C++ と均整のとれない糞仕様が多くて役に立つものは一つか二つか…
- 680 ::2019/12/23(月) 19:49:25.53 ID:GiJKkL8M0.net
- >>663
たしかに規格ISO/IEC9899:1999 のどこにあるか?というと、ちょっとみつからないですね
default argument promotion とはいうみたいですが
これは char, short -> int
float -> double
だったかと
- 681 ::2019/12/23(月) 20:06:06.16 ID:GiJKkL8M0.net
- >>675
ジジイ、ジジイか…
それじゃお前はなんだ、この餓鬼が
おれはお前さんがこの世に落っこって来る前からバグつくってんだ
- 682 :デフォルトの名無しさん :2019/12/23(月) 21:14:46.40 ID:X1aPCWn8M.net
- シニア専用C言語スレでも作れば
- 683 ::2019/12/23(月) 21:31:36.89 ID:GiJKkL8M0.net
- >>682
ジュニア専用お子ちゃまC言語は他所でおねがいします
- 684 :デフォルトの名無しさん :2019/12/23(月) 21:33:00.29 ID:Losi+wwQ0.net
- gotoの何がいけないか説明できるやつ、ここまでゼロ
- 685 :デフォルトの名無しさん :2019/12/23(月) 21:52:10.47 ID:YCEz+SRJ0.net
- 年取ると新しいことが覚えられないのは理解するよ。
だからって30年前の規格で縛るとかどんだけおつむ弱いんだよ
- 686 :デフォルトの名無しさん :2019/12/23(月) 21:54:45.06 ID:8K/Z1PN30.net
- まだgoto文とか言ってるのか
認知症かよw
- 687 :デフォルトの名無しさん :2019/12/23(月) 23:05:23.85 ID:hXczb3NL0.net
- 30年経ってもまだ対応完了しないコンパイラがある件
- 688 :デフォルトの名無しさん :2019/12/23(月) 23:28:22.45 ID:YCEz+SRJ0.net
- そらあるだろうさ。だからスレも底辺コンパイラに合わせろとか頭腐ってるんじゃねーの?
- 689 :デフォルトの名無しさん :2019/12/23(月) 23:42:25.45 ID:hXczb3NL0.net
- 上級国民用のC言語スレを建てて,そちらに移った方が良いのでは?w
- 690 :デフォルトの名無しさん :2019/12/24(火) 01:55:10.60 ID:DYebt3JD0.net
- >>681
(若さは)重要な要素だ
- 691 ::2019/12/24(火) 05:45:35.87 ID:Kb/HLSFP0.net
- >>685
C++ でコンパイルできない C なんて何の役に立つのか疑問だ、といっているのですよ
- 692 ::2019/12/24(火) 05:52:12.01 ID:Kb/HLSFP0.net
- >>690
若さ若さとひけらかすな!
- 693 :デフォルトの名無しさん (ワッチョイ b7b2-r9Jq):2019/12/24(火) 07:01:44 ID:Uve8u0PJ0.net
- >>691
じゃあC++使えばいい
C++コンパイラでC非互換の機能を使わない縛りこそ
何の役にも立ちゃしねえ
それをやるやつも役立たず
- 694 :デフォルトの名無しさん (ワッチョイ b7b2-r9Jq):2019/12/24(火) 07:03:32 ID:Uve8u0PJ0.net
- 積集合なんかいいとこ取りの逆だ
- 695 :デフォルトの名無しさん :2019/12/24(火) 07:04:40.49 ID:cUFUrp770.net
- ほんそれ
C++を覚えてさっさとこのスレからいなくなってくれ
ガキんちょは
- 696 :デフォルトの名無しさん :2019/12/24(火) 08:24:53.44 ID:DYV/RLXmM.net
- >>691
公開ヘッダだけ互換で書いとけばいいだろマヌケ
- 697 :デフォルトの名無しさん :2019/12/24(火) 13:32:50.89 ID:nbxHNYps0.net
- C言語環境には色々と障害が多いが
その最たるものの一つが老害の多さだとこのスレを見てもよく分かる
- 698 :デフォルトの名無しさん :2019/12/24(火) 13:37:43.29 ID:Uve8u0PJ0.net
- そもそもC89とC17の違いがそんなに問題になるか?
C89さえ分かっていればC17を差分で憶えるのは大した話じゃない
不勉強なやつが自己弁護のために騒いでるだけだろうが
- 699 :デフォルトの名無しさん :2019/12/24(火) 14:54:32.55 ID:4UlhXCkA0.net
- 勉強家はC++に移られたらどうか
貴重な人生を無駄にしないで済む
- 700 :デフォルトの名無しさん :2019/12/24(火) 16:09:31.88 ID:Uve8u0PJ0.net
- もちC++も使ってるよ
C使いが他の言語をやってないという仮定がそもそもおかしいぜ
- 701 :デフォルトの名無しさん :2019/12/24(火) 16:17:11.27 ID:4UlhXCkA0.net
- 勉強家はこのスレに入らないから,さっさと移動したらどうか?
粗大ゴミしかいないスレなんだから,こんな所に居続ける必要ないだろ
お前自身が粗大ゴミだと自覚しているなら仕方がないが
- 702 :デフォルトの名無しさん :2019/12/24(火) 16:30:12.41 ID:Uve8u0PJ0.net
- うるせえな
どこのスレに来ようが貴様に口だしされる筋合いはない
- 703 :デフォルトの名無しさん :2019/12/24(火) 16:44:50.65 ID:4UlhXCkA0.net
- 荒らしたいって事?
- 704 :デフォルトの名無しさん :2019/12/24(火) 16:45:57.75 ID:Uve8u0PJ0.net
- 脈絡ねえこと言ってんなよ
- 705 :デフォルトの名無しさん :2019/12/24(火) 17:10:39.49 ID:4UlhXCkA0.net
- 特定の話題で話したいなら,そういうスレを見つけるか、無ければ作れば良いんだよ
C言語全般を話題にする既存のスレを荒らす必要がこれっぽっちもない
- 706 :デフォルトの名無しさん :2019/12/24(火) 17:25:45.59 ID:obM24HmuM.net
- そもそも
> 粗大ゴミしかいないスレなんだから
なんて言ってる>>701が荒しだろ
元々は質問スレだぞ
- 707 :デフォルトの名無しさん :2019/12/24(火) 17:30:04.53 ID:4c603ABM0.net
- >>705
C言語全般を話題にするスレと言ってる奴がC99は別スレに行けとか言ってたのだから、支離滅裂ダナー
- 708 :デフォルトの名無しさん :2019/12/24(火) 17:52:25.07 ID:vOfEkls8d.net
- C言語は
非常にチープな環境でも動く
低レベルな記述が可能
非常に多くの環境で動作する
コンパイラの作成が容易
ということで未だに多くの場所で使われている
これらのメリットを減らす拡張は不要
これらのメリットが不要な環境ではC言語は不要
C++や、よりリッチな言語を使うべき
- 709 :デフォルトの名無しさん :2019/12/24(火) 18:11:41.28 ID:Uve8u0PJ0.net
- もうゴテゴテつけんなよ、という意見には賛成だ
- 710 ::2019/12/24(火) 18:19:52.82 ID:Kb/HLSFP0.net
- >>693
>C++コンパイラでC非互換の機能を使わない縛りこそ何の役にも立ちゃしねえ
K&R2 の範囲で書くことができるというのは必須の技能だと思いますよ、それができない、そもそもなにが K&R2 の範囲でなにがそうではないかを知らないようでは馬鹿と謗られてもしかたがない
- 711 ::2019/12/24(火) 18:20:21.71 ID:Kb/HLSFP0.net
- >>696
kwsk
- 712 ::2019/12/24(火) 18:26:03.59 ID:Kb/HLSFP0.net
- >>698
>C89さえ分かっていればC17を差分で憶えるのは大した話じゃない
そのとおり
できる奴にとっては、C99 だろうが C11 だろうが C17 だろうが、どれも大差がなく自由に行き来できるしどうでもいい
しかし、ここで敢えて「C89=K&R2 こそ正義」と煽ってみると、案外「老害死ね」という反応が続出する
そういう点から推察するところでは、このスレに出入りする人間の 50% は K&R2 すらわかっていないレベルではないだろうか、と考えさせられるのですよ
- 713 ::2019/12/24(火) 18:29:06.28 ID:Kb/HLSFP0.net
- >>708
ライブラリとして、他の言語から直に呼んで貰うことを目指すため、C で書き直してしまうという話もよく聞きます、この手の用途を他の言語で聞いたことがない
- 714 ::2019/12/24(火) 18:34:23.41 ID:Kb/HLSFP0.net
- >>692
我々がしているのはヌルポインタの話だ
ただ 0 と書けば済む話のものに誰がタイプ数をつぎ込む?
まして #define NULL (void *)0 と構えて運用するようなものじゃない
マクロ NULL が存在すること自体なにかの間違いなのだ
- 715 :デフォルトの名無しさん :2019/12/24(火) 18:47:31.01 ID:Uve8u0PJ0.net
- >>710
K&R2の範囲で書くという具体的な案件を1つでも知っているか?
俺も含め、その案件に携わることになったとして困る者は極めて少数だと思うぜ
50%もいるようには全く思わない
K&R1の案件でさえ、今の若いのでもすぐ慣れるだろうさ
- 716 ::2019/12/24(火) 18:51:57.03 ID:Kb/HLSFP0.net
- >>715
そうですか
そのわりには、「老害死ね」という反応がかまびすしいですね
- 717 :蟻人間 :2019/12/24(火) 18:52:26.57 ID:4kM/Vj6H0.net
- >>714
整数とポインタのサイズが違うとき、NULLがないと大変なことになる。
- 718 ::2019/12/24(火) 18:55:16.45 ID:Kb/HLSFP0.net
- >>717
可変長引数関数に (void *)0 を渡すときだけは (void *)0 は必要ですが、それ以外は 0 と書いてそれがポインタか整数かは文脈で判定できると思っています
- 719 :デフォルトの名無しさん :2019/12/24(火) 19:09:32.87 ID:wOhZrnY70.net
- >>717
ん?可変長引数とか、整数とポインタが曖昧なところでは NULL にもキャスト要るし、
NULL がサイズ違いとか動作上の問題を解決することなんてないのでは?
http://www.kouno.jp/home/c_faq/c5.html#4
- 720 :デフォルトの名無しさん :2019/12/25(水) 05:49:06.65 ID:7G8eDwRY0.net
- > ただ 0 と書けば済む話のものに誰がタイプ数をつぎ込む?
というわけで if(x != 0) じゃなくて if(x) だな
- 721 :デフォルトの名無しさん :2019/12/25(水) 07:47:40.10 ID:z2z2eZOK0.net
- プロジェクトリーダー「数字直接記入禁止!全部#define で置き換えろ!」
大昔そんな事があったと聞いた。
- 722 :デフォルトの名無しさん :2019/12/25(水) 08:01:19.10 ID:LrSoTBV60.net
- あった
フラグを一個も立って無いことを示す0もdefine
デバイスの特性を多項式近似した関数も
各係数を全てdefine
縦と横のそれぞれの座標計算、ループで処理にした方が記述が簡単なので2でループしたら
その2もdefine
他にも意味不明のコーディング規約が多数
- 723 :デフォルトの名無しさん :2019/12/25(水) 08:32:20.25 ID:oGSLd7g6a.net
- それもこれもマジックナンバーにコメント書かなかったおまいらが悪いんやで
- 724 :デフォルトの名無しさん :2019/12/25(水) 08:34:25.12 ID:mNtkopg10.net
- マジックナンバーの何がいけない、どういう場合にどんな問題があるかを理解しないまま、杓子定規にルールだけ覚えるとそんな奴が出来上がるな。
- 725 :デフォルトの名無しさん :2019/12/25(水) 08:51:06.27 ID:gNbuW8hwM.net
- >>721
> プロジェクトリーダー「数字直接記入禁止!全部#define で置き換えろ!」
良いと思うよ!!
- 726 :デフォルトの名無しさん :2019/12/25(水) 09:53:45.40 ID:WMMCG2Dq0.net
- 値まで書いたアホっぽい定数 はわりと使うかな・・・
#define EGGCOUNT30 30
みたいに書いちゃうやつ
コード中に即値書きたいけど書くとリファクタリングで死ぬから
リファクタリングのためだけに定数書いてる感じ
- 727 :デフォルトの名無しさん :2019/12/25(水) 10:17:23.56 ID:2ymVLaRcF.net
- 当たり前だがリファクタリング以前に定数調整だけで死ぬぞ
#define EGGCOUNT 30
なら
#define EGGCOUNT 40
で済むのに
#define EGGCOUNT30 30
だと
#define EGGCOUNT40 40
で全置換する気か
- 728 :デフォルトの名無しさん :2019/12/25(水) 10:24:47.96 ID:gNbuW8hwM.net
- s/30/40/g
は基地外沙汰だが
s/EGGCOUNT30/EGGCOUNT40/g
ならイケそうかも!!
- 729 :デフォルトの名無しさん :2019/12/25(水) 13:00:30.03 ID:KFffpDzg0.net
- フォーマット文字列中のも駄目なんかな
少数以下 3桁に整えるのに "%.3f" → "%.*f" にして引数で渡す
- 730 :デフォルトの名無しさん :2019/12/25(水) 13:08:29.51 ID:KFffpDzg0.net
- ああ フォーマット文字列を define しろということか
#define FORMAT "%.3f"
:
sprintf(buf, FROMAT, double_value);
みたいな
- 731 :デフォルトの名無しさん :2019/12/25(水) 13:12:39.59 ID:wMqEADXhd.net
- >>727
数値一通りdefineして
NUM_56
みたいに数値のかわりに使う
糞コーディング規約の典型
そういう環境だと
大抵defineの数値を変えるだけじゃまともに動かない
- 732 :デフォルトの名無しさん :2019/12/25(水) 13:18:43.41 ID:wMqEADXhd.net
- >>730
文字列リテラルをコード中に記述禁止
その為itoaみたいなのを組み合わせたコードが出来る
- 733 :デフォルトの名無しさん :2019/12/25(水) 13:45:41.90 ID:WMMCG2Dq0.net
- >>727
そのとおり、全置換をする前提なんよ
置換するのはIDEのお仕事だから漏れは無いと信頼してるし、なにより
ソース改変による影響範囲の割り出しとテストしなおしの強制を兼ねてる
- 734 :デフォルトの名無しさん :2019/12/25(水) 13:50:36.68 ID:V0IDAf7x0.net
- エディタの正規表現は使わないのか?
複数パターンでも一回で出来ると思うが
- 735 :デフォルトの名無しさん :2019/12/25(水) 14:28:39.98 ID:ZI663GBY0.net
- >>720
MISRA-C の違反!
if(条件式) には、実質的なbool 値のみを書く!
ただし、if( x ) で、x がbool変数なら、OK
- 736 :デフォルトの名無しさん :2019/12/25(水) 14:58:33.15 ID:HhfzRslS0.net
- x != 0 も bool ではないんだが
- 737 :735 :2019/12/25(水) 15:17:44.07 ID:ZI663GBY0.net
- x != 0
は、yes/no の2値しかないでしょ?
実質的には、bool 値として使っている
- 738 :デフォルトの名無しさん :2019/12/25(水) 15:25:44.58 ID:HhfzRslS0.net
- それはおまえの思い込み
ISO/IEC 9899:2011
6.5.9 Equality operators
3
Each of the operators yields 1 if the specified relation is true and 0 if it is false.
The result has type int.
これが事実だ
- 739 :デフォルトの名無しさん :2019/12/25(水) 16:13:24.55 ID:xjd+p9Q20.net
- 直接コードを書くことを禁止する。スクリプトを使って書け。
- 740 :デフォルトの名無しさん :2019/12/25(水) 16:42:27.57 ID:wMqEADXhd.net
- BOOL
YESNO
OKCANCEL
ONEBIT
実質的にboolなら中身はdoubleでもenumでもint64_tでもifに入れて良い
っていうコーディング規約
- 741 :735 :2019/12/25(水) 16:42:38.50 ID:ZI663GBY0.net
- 文法は関係ない。
あくまでも、コードの品質・可読性を上げるための、MISRA-C のルール!
if, while などの条件式には、実質的なbool 値しか書けない
条件式に、単なる整数などを書けない。
整数の0 を偽とみなした、条件判断を書けない
MISRA-Cを守っていないと、低品質で、審査に通りませんよと言うことw
- 742 :デフォルトの名無しさん :2019/12/25(水) 17:03:05.94 ID:TfD43SqCa.net
- >>741
よそのスレでRuby基地外っぷりを発揮してさんざん迷惑を掛けているお前がルール遵守を説くなんて、羞恥心はないのか?
- 743 :デフォルトの名無しさん :2019/12/25(水) 17:09:20.32 ID:KFffpDzg0.net
- if (x) → if (!!x) かにゃ?
- 744 :デフォルトの名無しさん :2019/12/25(水) 18:22:33.85 ID:2ymVLaRcF.net
- >>735
if(!!x)
- 745 :デフォルトの名無しさん :2019/12/25(水) 19:13:54.17 ID:LrSoTBV60.net
- まともなルールと仮定した場合
>>735 がダメなら
>>743 >>744 もダメだろうな
- 746 ::2019/12/25(水) 19:56:23.47 ID:Fvp/Fpps0.net
- >>741
また MISRA ですか…
MISRA 適合かどうかを診断してくれるプログラムでも配布してくれているんだと思っていましたが、そうではなく、ただ人を縛る規則を決めるのが好きな人間の集団なんですね…
- 747 :デフォルトの名無しさん :2019/12/25(水) 21:01:12.18 ID:HhfzRslS0.net
- > MISRA-Cを守っていないと、低品質で、審査に通りませんよと言うことw
MISRA-Cを守っていれば、高品質で、審査に通ると言いたいのか?
もう罵倒語が喉まで出かかっているんだが
- 748 :デフォルトの名無しさん :2019/12/25(水) 22:01:38.68 ID:R5R0tFog0.net
- 違うナァ
MISRA語ルールを守っているとMISRA語のコンパイラが書けないんだよw
大いなる自己矛盾に陥ってMISRAは沈没する
- 749 :デフォルトの名無しさん :2019/12/25(水) 22:15:36.92 ID:rtgRmFxx0.net
- >>726みたいなのはいくつか特定の値しかとれない引数のために使われることはあるね。
まぁenumでもいいんだけど。
- 750 :デフォルトの名無しさん :2019/12/25(水) 22:31:21.33 ID:W4j7C6dU0.net
- >>747
>> MISRA-Cを守っていないと、低品質で、審査に通りませんよと言うことw
これを読んで
> MISRA-Cを守っていれば、高品質で、審査に通ると言いたいのか?
と解釈する奴はもれなくバカ
- 751 :デフォルトの名無しさん :2019/12/25(水) 22:35:19.52 ID:HhfzRslS0.net
- >>750
違うんなら弁明しろよ
それができないだろうという予想で、罵倒語が喉まで出かかっている
- 752 :デフォルトの名無しさん :2019/12/25(水) 22:55:02.25 ID:W4j7C6dU0.net
- >>751
マジでバカなのか?w
AならBである
から
AでないならBでない
(当たり前だが真ではない)
って書けばお前のアホさが理解できるかな?
これでわからないなら中学の数学からやり直せ
- 753 :デフォルトの名無しさん :2019/12/25(水) 23:19:28.12 ID:7G8eDwRY0.net
- 0(ゼロ)はマジックナンバーじゃないような気が
- 754 :デフォルトの名無しさん :2019/12/25(水) 23:20:28.23 ID:LrSoTBV60.net
- 8進数は使用禁止なので0は使えません
- 755 :デフォルトの名無しさん :2019/12/26(木) 00:09:17.82 ID:AoPKrYsL0.net
- 0x0と書けばいい
- 756 :デフォルトの名無しさん :2019/12/26(木) 01:10:46.52 ID:SdIj1xpo0.net
- main関数の{ }についてお聞きしたいんですが、
int main(void) {
____/* コード */
}
という表記ではいけないですか?
スッキリCや各種サイトを見ると、
int main(void)
{
____/* コード */
}
となっていることがほとんどなのですが
- 757 :デフォルトの名無しさん :2019/12/26(木) 01:13:45.64 ID:1Soz4RTf0.net
- 間を取って
int main(void) { /* コード */ }
でも動くぞ
- 758 :デフォルトの名無しさん :2019/12/26(木) 01:16:16.88 ID:wuBFmrIL0.net
- >>756
コンパイラは改行を無視するんやで
- 759 :756 :2019/12/26(木) 01:20:09.70 ID:SdIj1xpo0.net
- ありがとうございます。
後者にしないといけないという決まりとかあるんですか?
- 760 :デフォルトの名無しさん :2019/12/26(木) 01:22:32.15 ID:B3/URd3+M.net
- 文法じゃなくてコーディングスタイルのこと聞いてるんでしょ。
チーム内で決まったスタイルがあるならそれに従えばいいし、
そうでなければ自分の好みで決めればいい。
俺の好みは1行減るし統一感のある前者。
- 761 :デフォルトの名無しさん :2019/12/26(木) 01:23:11.55 ID:rIhsLdYp0.net
- 私も前者
- 762 :デフォルトの名無しさん :2019/12/26(木) 01:28:27.58 ID:ekrCE4yL0.net
- K&R2は後者
- 763 :756 :2019/12/26(木) 01:40:40.30 ID:SdIj1xpo0.net
- もう少し考えてみようと思います
深夜にありがとうございました
- 764 :デフォルトの名無しさん :2019/12/26(木) 07:31:20.36 ID:RfJEL4eB0.net
- >>752
では、741は何を主張したかったんだ?
> MISRA-Cを守っていないと、低品質で、審査に通りませんよと言うことw
わざわざ、こんな戯れ言をぬかした意図を説明しろ
- 765 :デフォルトの名無しさん :2019/12/26(木) 07:33:50.37 ID:Fsuom43iM.net
- >>764
それは741に聞けや
俺はお前のバカさを指摘しただけ
- 766 :デフォルトの名無しさん :2019/12/26(木) 07:36:01.30 ID:RfJEL4eB0.net
- >>756
if (...) {
while (...) {
do {
なのに、
main()
{
という矛盾はよく見かけるが
そうなっている案件で秩序を乱すことはしない
- 767 :デフォルトの名無しさん :2019/12/26(木) 07:49:13.97 ID:RfJEL4eB0.net
- >>765
741本人のくせに自分の言葉から逃げてんなよ
まあ、あれじゃ逃げたくなるのはわかるがw
- 768 :デフォルトの名無しさん :2019/12/26(木) 08:06:43.81 ID:GqOej4nw0.net
- >>756
int func(int arg)
{
...
}
という具合に「関数本体を開始する波括弧を次の行に書く」方式だと
ヘッダファイルにプロトタイプ宣言として書き写す際に
1行コピーして行末に ; 追加で完了、楽チンという利点があるわね。
main() の場合は当てはまらないのがやや弱いけど。
- 769 :デフォルトの名無しさん :2019/12/26(木) 08:18:02.10 ID:Fsuom43iM.net
- >>767
自分のバカさを認められずに自演認定でごまかすのに必死かよw
哀れな奴
- 770 :デフォルトの名無しさん :2019/12/26(木) 08:31:13.53 ID:RfJEL4eB0.net
- >>769
MISRAの話しなくなってやんのw
技術板で技術的な話ができないやつはゴミ以下だぜ
- 771 :デフォルトの名無しさん :2019/12/26(木) 08:47:26.74 ID:Fsuom43iM.net
- >>770
> 技術板で技術的な話ができないやつはゴミ以下だぜ
中学校の数学すら理解してない奴が何言ってるんだかw
- 772 :デフォルトの名無しさん :2019/12/26(木) 10:44:30.71 ID:RfJEL4eB0.net
- >>771
いや理解してるよ
そうでなきゃ年収8桁はできねえ
- 773 :デフォルトの名無しさん :2019/12/26(木) 11:06:55.96 ID:F8ujXl8x0.net
- こんなところで年収自慢なんかしても虚しいだけじゃないか?
対偶を勘違いしてるなんてみんな気付いてるのに無理につっかかんなって
- 774 :デフォルトの名無しさん :2019/12/26(木) 11:13:36.42 ID:ekrCE4yL0.net
- >>766
power(x, n)
int x, n;
{
....
}
- 775 :デフォルトの名無しさん :2019/12/26(木) 11:15:24.50 ID:ekrCE4yL0.net
- MISRAで if(x)がまずい理由を教えてくだされ
- 776 :デフォルトの名無しさん :2019/12/26(木) 11:17:42.33 ID:qmNoWNu8F.net
- >>731
一般的に特定の非正規形は特定の分析用途には使いやすくても
違う観点で分析しようとすると正規形からデータ変形するよりも多くの手間がかかる
参照オンリーの場合でもデータの利用方法が定型化していない場合は正規形から考えるメリットは大きい
特にRDBで分析用途のDBを用意する場合は参照オンリーでも正規形から考えとかないと手間が異常に増える
- 777 :デフォルトの名無しさん :2019/12/26(木) 11:21:50.00 ID:qmNoWNu8F.net
- >>752
高品質で、審査に通っていれば、MISRA-Cを守っている
やっぱり違うなω
元の命題からして可笑しいωωω
- 778 :デフォルトの名無しさん :2019/12/26(木) 11:31:06.38 ID:F8ujXl8x0.net
- 元の命題の真偽ではなく元の命題を真と仮定した場合、対偶は真か?という話
本来、対偶は真であるが747は対偶ではない命題を挙げてそれが真であるかのようにレスしているので突っ込まれた
対偶の挙げ方の間違いを指摘したのになぜか元の命題の真偽についてギャーギャー言うから話が噛み合わない
- 779 :デフォルトの名無しさん :2019/12/26(木) 11:36:01.57 ID:RfJEL4eB0.net
- >>773
みんな気付いているのは、わざと言っていることだよ
鬼の首でも取ったように得意がってるのがおまえだけ
中学の数学がやっとわかるのか、すごいなあw
- 780 :デフォルトの名無しさん :2019/12/26(木) 12:24:56.24 ID:Fsuom43iM.net
- いきなり年収自慢とか笑える
まあ低能にありがちな行動だけどなw
- 781 :デフォルトの名無しさん :2019/12/26(木) 12:27:00.84 ID:RfJEL4eB0.net
- 中卒でも中には総理大臣になった人もいるけどね
そういうことにしといてやろうか?
- 782 :デフォルトの名無しさん :2019/12/26(木) 12:48:48.88 ID:nqqh6plV0.net
- そもそも集合関係と因果関係を混同しているのが間違いの原因
「事象Aが真ならば事象Bは真」の対偶「事象Bが真でないならば事象Aは真ではない」は常に正しい
一方「原因Aが真ならば結果Bは真」に対して「結果Bが真でないならば原因Aは真ではない」は正しいとは限らない
- 783 :デフォルトの名無しさん :2019/12/26(木) 13:05:49.36 ID:mq/d+l+IH.net
- >>774
K&R1の時代には改行後に { を書くしかないが、
いまどき持ち出して混乱させるのはやめろ
- 784 :デフォルトの名無しさん :2019/12/26(木) 13:06:48.52 ID:RfJEL4eB0.net
- >>782
おまえ747の時点で俺がそう言っているのが読めてないもんな
そうやって教科書を朗読するのもいいことだから頑張んなw
お勉強はまず憶えることが初手だが
現実問題に応用できるようになって始めて完成するんだよ
- 785 :デフォルトの名無しさん :2019/12/26(木) 13:08:29.47 ID:RfJEL4eB0.net
- >>783
774は制御文と関数は違うということが766の言う「矛盾」のルーツだと言いたいんだと思うぜ
- 786 :デフォルトの名無しさん :2019/12/26(木) 16:43:01.33 ID:nqqh6plV0.net
- >>747は「事象Aが真でないならば事象Bは真ではない」
集合論で言えば「対偶」ではなくて「裏」の関係
- 787 :デフォルトの名無しさん :2019/12/26(木) 16:53:45.31 ID:nqqh6plV0.net
- 「裏」の「逆」または「逆」の「裏」が「対偶」
ある命題とその待遇が等しいのはそれぞれの事象に因果関係が存在しない場合に限る
- 788 :デフォルトの名無しさん :2019/12/26(木) 16:55:11.16 ID:nqqh6plV0.net
- 訂正
対偶 ← 待遇
- 789 :デフォルトの名無しさん :2019/12/26(木) 16:58:23.55 ID:sEyHy/3c0.net
- ダッサ。
- 790 :デフォルトの名無しさん :2019/12/26(木) 17:06:16.94 ID:RfJEL4eB0.net
- やっぱり、憶えたてなんだな
- 791 :デフォルトの名無しさん :2019/12/26(木) 17:08:28.53 ID:nqqh6plV0.net
- 間違った応用が>>747
- 792 :デフォルトの名無しさん :2019/12/26(木) 17:49:48.63 ID:WYIkcR78d.net
- MISRAの肩を持とうとしてしくじったトンマなやつに
どんな気持ちか聞いてみたのさ
- 793 :デフォルトの名無しさん :2019/12/26(木) 17:53:02.71 ID:WYIkcR78d.net
- 741本人以外がこんなに激怒するわけねえしな
なあトンマ、今どんな気持ち?
- 794 :デフォルトの名無しさん :2019/12/26(木) 19:16:56.42 ID:Fsuom43iM.net
- 対偶と裏の区別もつかずに年収8桁とか学歴とか低能にありがちなレス連発やんw
こんなわかりやすい奴久々に見たわ
- 795 :デフォルトの名無しさん :2019/12/26(木) 19:33:59.80 ID:AoPKrYsL0.net
- この場合は対偶ではなく必要条件だろう
- 796 ::2019/12/26(木) 20:35:37.78 ID:oR6l+tOb0.net
- >>794
あなたのほうが滑っていますよ…
そもそも MISRA 推しな時点でこのスレの住人から疑問の声が挙がっているのに、まだそれに気づかないの?
末期ですね
- 797 :デフォルトの名無しさん :2019/12/26(木) 22:41:57.32 ID:VSQSaAA/0.net
- いくらMISRA推しガーとか言っても>>747がバカなのは変わらないんだがw
- 798 :デフォルトの名無しさん :2019/12/26(木) 22:55:46.00 ID:T0QuicHn0.net
- トヨタの車が暴走した問題で、米国議会でも言ってただろ
トヨタは、MISRA-C で、10点ぐらいしか取れてないってw
100ルール中、90に違反してる
守ってない企業があるから、人命を預かる、ロケット・医療系組み込みなどでは、
特に厳しい資格が必要だと議論になってる
組み込みでは、バグで簡単に、人が死ぬから
だから、何十年も研究してる、Elixir みたいな関数型を使う
- 799 :デフォルトの名無しさん :2019/12/26(木) 23:26:05.24 ID:46flAZOsM.net
- プログラムを書くのに●●は駄目だとか使いにくくなるほど制限かけてもさぁ
書きたい事に必要な関数とか書き方とか知らないようなのに投げてるだけなので脆弱性になるようなバグは出てくるし意味がない
むしろ知ってるような人にとっては制限になって害でしかない
- 800 :798 :2019/12/26(木) 23:35:54.81 ID:T0QuicHn0.net
- JavaScript で言えば、TypeScript, ESLint とか
違反を警告してくれる、lint ツール
- 801 :デフォルトの名無しさん :2019/12/27(金) 04:25:18.37 ID:z/PqntEl0.net
- >>740
> 実質的にboolなら中身はdoubleでもenumでもint64_tでもifに入れて良い
っていうコーディング規約
-0.0は ?
- 802 :デフォルトの名無しさん :2019/12/27(金) 08:36:35.25 ID:DgDeU8pJ0.net
- >>799
御意
無能のために無能に合わせろと無能がわめく
自己虫以外の何ものでもない
- 803 :デフォルトの名無しさん :2019/12/27(金) 10:25:45.84 ID:LEFEPZUo0.net
- MISRAってむしろ>>799, >>802みたいな自称上級者がやらかすのを防止するためのものなんだけどなw
- 804 :デフォルトの名無しさん :2019/12/27(金) 11:19:30.64 ID:atLAFlUCa.net
- もうめんどくさいからMISRA押しのRuby君が害悪ということでいいのではなかろうか?
- 805 :デフォルトの名無しさん :2019/12/27(金) 11:33:33.48 ID:4UHOi1400.net
- >>798
トヨタなんて下請け丸投げでソース読めなくてレビューもしてくれなくてテスト仕様書も丸投げで無駄なエビデンスばかり要求してる
10点ぐらいしか取れてないのは下請けなんだけどそれを指摘もできない
- 806 :デフォルトの名無しさん :2019/12/27(金) 12:23:31.65 ID:DgDeU8pJ0.net
- >>803
上級者なんて称号は俺はもちろん客先の誰も使ってねえぜ
仕事がもらえる、それだけだ
わかるかい? 無職君w
- 807 :デフォルトの名無しさん :2019/12/27(金) 12:25:05.61 ID:DgDeU8pJ0.net
- ちょっと年収の話したらあんなに発狂すると思わなかった
よっぽどコンプレックスらしいな、おーこわ
- 808 :デフォルトの名無しさん :2019/12/27(金) 13:04:42.76 ID:8p+LGuzl0.net
- 作業は指示するが仕事は教えないクソ野郎が増えたから
この先の見通しが暗い。
- 809 :デフォルトの名無しさん :2019/12/27(金) 13:14:05.49 ID:LEFEPZUo0.net
- 「自称」上級者の意味すら理解できない>>806
だめなのは数学だけかと思ったら国語も壊滅的だなw
- 810 :デフォルトの名無しさん :2019/12/27(金) 14:16:27.64 ID:DgDeU8pJ0.net
- 見てやってよ、このファビョり方w
- 811 ::2019/12/27(金) 18:59:31.88 ID:9iE1xeZJ0.net
- >>800
そういうものを MISRA 対応として lint ツールとして無償公開するのが筋というものでしょうね
- 812 :デフォルトの名無しさん :2019/12/27(金) 19:05:46.68 ID:9mTyz2ro0.net
- 例外項目を設けてスコアで評価するにしても、事前に自動評価できるツールがあるといいですわね
- 813 :デフォルトの名無しさん :2019/12/27(金) 19:07:00.34 ID:EEOcwadQ0.net
- すぐに愚痴こぼしスレになってしまう
- 814 :デフォルトの名無しさん :2019/12/27(金) 19:30:32.05 ID:DgDeU8pJ0.net
- スコアとか意味ねえ
違反箇所は違反箇所で数の問題じゃねえ
違反プログラムは遠さねえとぬかすなら絶対に通すな
その結果に責任を持て
- 815 :デフォルトの名無しさん :2019/12/27(金) 20:14:59.62 ID:LEFEPZUo0.net
- 対偶すら理解できてない奴が責任を持てとかw
- 816 :デフォルトの名無しさん :2019/12/27(金) 20:32:09.24 ID:BhrMVyLj0.net
- MISRA対応テストツール高そう
- 817 :デフォルトの名無しさん :2019/12/27(金) 20:33:12.08 ID:BhrMVyLj0.net
- >>803が仕事を出している側である可能性を考慮できない>>806
- 818 ::2019/12/27(金) 20:59:59.10 ID:9iE1xeZJ0.net
- >>815
そこにしか突っ込むことが出来ないのですか?みじめですね…
- 819 :798 :2019/12/27(金) 21:01:30.94 ID:G2Hqp8Jj0.net
- 組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、MISRA‐C研究会、2006
この研究会は、トヨタなど大企業から、数十人のベテが集まって、
欧州人に聞きながら、作った本。
未だに、コーディングルールのバイブルだろ
元々は、Andrew Koenig の本
C Traps and Pitfalls, 1988, c1989
Cプログラミングの落とし穴
この本から、Lint が始まったのじゃないか?
- 820 :デフォルトの名無しさん :2019/12/27(金) 21:11:55.30 ID:LEFEPZUo0.net
- >>818
別に他のところに興味ないし
まあこんな初歩的なところに突っ込まれるとそりゃ困るわなw
だからROMってりゃいいと思うんだけどな
- 821 :デフォルトの名無しさん :2019/12/27(金) 21:13:58.37 ID:LEFEPZUo0.net
- >>819
> この本から、Lint が始まったのじゃないか?
流石にもう少し時代を見てからレスした方がいいぞ…
- 822 :デフォルトの名無しさん :2019/12/27(金) 21:29:02.92 ID:BhrMVyLj0.net
- そっかー組み込み屋さんはUNIXの歴史とか知らなかったりするのか
- 823 ::2019/12/27(金) 21:33:22.44 ID:9iE1xeZJ0.net
- >>819
>この本から、Lint が始まったのじゃないか?
違います
初期の lint はベル研の V7 と同時、1979 にはリリースされています
K&R1 は特に引数まわりはスキのある仕様でしたので細かくチェックをいれる lint は必要であったのも理解できます、これは K&R2 になってかなり改善されました
それに最近のコンパイラは lint に似た warning も出せるようになったし
- 824 :798 :2019/12/27(金) 22:09:21.87 ID:G2Hqp8Jj0.net
- はじめてのOSコードリーディング UNIX V6で学ぶカーネルのしくみ、青柳 隆宏、2013
そう言えば昔、こういう本も読んだ
- 825 :デフォルトの名無しさん :2019/12/28(土) 01:02:34.32 ID:Td7wq8Cw0.net
- ジャンケンのコードを書いてみました
よろしければ、ご指摘等をお願いします
https://pastebin.com/HCLJ5m7p
- 826 :デフォルトの名無しさん :2019/12/28(土) 02:00:59.65 ID:xvOJ+UySM.net
- >>825
少しは取り繕えよ
何かのコピペだろ
- 827 :デフォルトの名無しさん :2019/12/28(土) 06:31:05.78 ID:r5X0es4d0.net
- >>823
> それに最近のコンパイラは lint に似た warning も出せるようになったし
初期のlint使ったことないだろw
- 828 :デフォルトの名無しさん :2019/12/28(土) 07:57:54.17 ID:b9pc6wBR0.net
- >>817
そんな可能性は絶対の絶対にゼロだ
- 829 :デフォルトの名無しさん :2019/12/28(土) 08:04:30.24 ID:b9pc6wBR0.net
- >>815
俺に言わせれば、おまえ文系くせえんだよ
俺はハード設計もやるから負論理だのド・モルガンだのは息をするくらい当たり前なことで
待遇だの裏だのという用語で得意がるやつは専門分野は何だろうと思ってしまうのさ
それから突っ込まれてるのはおまえだぞ、741本人よ
- 830 :デフォルトの名無しさん :2019/12/28(土) 08:18:01.34 ID:5fvEktMvd.net
- 待遇で得意がるvsドモルガンで得意がる
小学生同士かよ
- 831 :デフォルトの名無しさん :2019/12/28(土) 08:39:28.74 ID:r5X0es4d0.net
- >>829
対偶の話に負論理とかド・モルガン?
恥の上塗りか?
あと741に突っ込んでるのは頓珍漢なお前だけだぞw
- 832 :デフォルトの名無しさん :2019/12/28(土) 09:32:59.76 ID:b9pc6wBR0.net
- やっぱり通じねえなw
- 833 :デフォルトの名無しさん :2019/12/28(土) 09:45:41.04 ID:5fvEktMvd.net
- C言語の話しようぜ
- 834 :デフォルトの名無しさん :2019/12/28(土) 10:06:23.41 ID:VDzFwrot0.net
- printf("やっぱり通じねえなw\n");
- 835 :798 :2019/12/28(土) 11:10:17.46 ID:vnZXJluZ0.net
- 電子回路・HDL などの組み込みでは、
AND, OR, NOT, NAND,NOR などの回路、
負論理、ド・モルガン、カルノー図とか、初歩だぞw
まず、情報処理の組み込みの教科書を読め!
- 836 :デフォルトの名無しさん :2019/12/28(土) 11:11:43.15 ID:CljHkVQA0.net
- >>831
負論理とかドモルガン知ってる人が対偶の意味知らないと思ってるの?
- 837 :デフォルトの名無しさん :2019/12/28(土) 11:18:29.36 ID:BVlwLEoZ0.net
- 双対は知らないだろう?
- 838 :デフォルトの名無しさん :2019/12/28(土) 11:34:08.50 ID:KhDEPBLca.net
- このスレっていつも下らない喧嘩を延々と続けてる奴らがいるけど、何なんだろう。どっちが正しいとか以前に言ってる中身(議論の仕方)が下らなくて他人からはどっちもバカにしか見えないから消えてくれないか。
- 839 ::2019/12/28(土) 11:34:44.58 ID:9Pig40yt0.net
- >>827
Sun OS 4.1 のはやったことがありますが、初期の頃とは変わっていたのかも
- 840 :デフォルトの名無しさん :2019/12/28(土) 11:54:34.25 ID:xvOJ+UySM.net
- >>836
彼は分かってない
2回も指摘されてるのに論理が破綻していることに気付いてない
>>747,750,751,752
>>782,784,786
- 841 :デフォルトの名無しさん :2019/12/28(土) 12:53:03.04 ID:1RUtvmltM.net
- >>836
さあどうだろうね、「ド・モルガンの定理知ってる」なら「待遇を理解してる」という命題が証明されたとか聞いたことないし
そもそもド・モルガン知ってるとか言うのも>>829が言ってるだけだし、>>747が対偶でない事を知ってるのかすら怪しいしなw
- 842 :デフォルトの名無しさん :2019/12/28(土) 13:01:09.99 ID:CljHkVQA0.net
- 読んでないから知らんけどこんな雑談に対偶ガーとか論理ガーとか証明ガーってのは馬鹿馬鹿しいね。
- 843 :デフォルトの名無しさん :2019/12/28(土) 13:08:05.93 ID:xvOJ+UySM.net
- 似て非なるもの
ド・モルガン
A ∩ B = ¬(¬A ∪ ¬B)
A ∪ B = ¬(¬A ∩ ¬B)
対偶
A ⇒ B = ¬(¬B ⇒ ¬A)
- 844 :デフォルトの名無しさん :2019/12/28(土) 13:09:43.37 ID:1WIkADffM.net
- 正直、アスペ馬鹿が下らないことを追求したがってるだけにしか見えない
- 845 :デフォルトの名無しさん :2019/12/28(土) 13:14:14.77 ID:xvOJ+UySM.net
- コピペ改変してから何か変だと思い直してみれば正解はこうだったすまん
対偶
A ⇒ B = ¬B ⇒ ¬A
- 846 :825 :2019/12/28(土) 13:19:13.30 ID:Td7wq8Cw0.net
- >>826
いえ、typedefの文はスッキリCを参考にしましたが、
あとのアルゴリズムはオリジナルです
こんなところで意見を求めるのは図々しいと分かってはいますが、
何とかお願いします
- 847 :デフォルトの名無しさん :2019/12/28(土) 14:01:27.13 ID:L2lyDMSgM.net
- 後出しで負けを実装するとよりじゃんけんぽくなるぞ
- 848 :デフォルトの名無しさん :2019/12/28(土) 15:05:05.31 ID:VCBq52Cm0.net
- C言語のBNFって何種類あるの?
知ってるだけ全部教えて
- 849 :デフォルトの名無しさん :2019/12/28(土) 15:51:37.71 ID:r5X0es4d0.net
- >>842
うん、俺もそう思うよ
>>747が裏も正しいと思い込んでるバカってだけの話だしw
>>844
何を追求してると思うの?
追求すべき事柄なんて特にないと思うけど
- 850 :デフォルトの名無しさん :2019/12/28(土) 15:54:09.64 ID:r5X0es4d0.net
- >>848
https://cs.wmich.edu/~gupta/teaching/cs4850/sumII06/The%20syntax%20of%20C%20in%20Backus-Naur%20form.htm
- 851 :デフォルトの名無しさん :2019/12/28(土) 15:54:25.66 ID:Srq0kgZJa.net
- >>848
ググれ
- 852 :デフォルトの名無しさん :2019/12/28(土) 17:33:03.88 ID:y9rwRM9T0.net
- OKグーグル、CのBNFを教えて
- 853 :デフォルトの名無しさん :2019/12/28(土) 17:41:03.87 ID:c/4LCSnv0.net
- K&Rの付録ページになかったかなかな?
- 854 :デフォルトの名無しさん :2019/12/28(土) 17:45:59.25 ID:y9rwRM9T0.net
- BNFで思い出したが
enum { a } func(void) { return a; }
この文法使い道ないよな
- 855 :デフォルトの名無しさん :2019/12/29(日) 03:22:40.86 ID:GZSHSaBs0.net
- >>714
エイリアスの否定とはいただけない
直値だけの糞コードはゴメンだわ
意味によって0とNULLは書き分けるよ
- 856 ::2019/12/29(日) 10:41:38.70 ID:yqbBnK7b0.net
- >>855
その書き分けに意味はあるのでしょうか?
- 857 :デフォルトの名無しさん :2019/12/29(日) 10:49:06.87 ID:OzwmxFfFa.net
- >>856
お前にとっては意味がない。
俺や俺以外の書き分けたい人には意味がある。
それだけだから気にしなくていいぞ。
- 858 :デフォルトの名無しさん :2019/12/29(日) 11:39:04.46 ID:k3T+0Ot70.net
- やたら長いコードの中で
it = &a;
*a = 0;
it = 0;
a = 0;
とか書かれたら混乱するだろ。
あ、でも屑はハンガリー人なんだっけ?
- 859 ::2019/12/29(日) 11:58:28.30 ID:yqbBnK7b0.net
- >>858
ハンガリアンはやらないです
- 860 :デフォルトの名無しさん :2019/12/29(日) 22:32:49.20 ID:Y3W4ZjXNd.net
- >>858
混乱するから数値のゼロもdefineしなさい
- 861 :デフォルトの名無しさん :2019/12/29(日) 23:06:45.98 ID:jE46OAyh0.net
- ハンガリー人は宇宙人だから仕方ないね
- 862 :デフォルトの名無しさん :2019/12/30(月) 06:33:44.11 ID:ypuMXf6z0.net
- >>825,846
自分ならこんな感じで書く、程度のものですが思うけど良かったらどうぞ
https://pastebin.com/idm94WiU
別の機能を追加する必要とか出てきたとき、
ジャンケン自体を関数化してあげたほうがmain()関数内がゴチャゴチャしなくて良いかなと思って書きました。
- 863 :デフォルトの名無しさん :2019/12/30(月) 08:17:18.73 ID:JZjS6BbQ0.net
- ゴチャゴチャがjankenに移るだけ
- 864 :デフォルトの名無しさん :2019/12/30(月) 09:11:36.36 ID:W9rqQHA30.net
- typedef char String[1024];
とtypedefしてるのはたしかどこかの教科書の流儀だったはずだ
最近その話題を見かけた
- 865 :デフォルトの名無しさん :2019/12/30(月) 12:24:04.93 ID:M1MgDNrq0.net
- あいこでの再戦と、もう一回じゃんけんするのは、
目的が違うんだから別ロジックにすべき。
- 866 :デフォルトの名無しさん :2019/12/30(月) 12:31:51.34 ID:/N6WhDZId.net
- 同じ処理を共通化する
今後異なる可能性のある処理をあらかじめ分けておく
いろんな設計思想がある
- 867 :デフォルトの名無しさん :2019/12/30(月) 17:54:24.59 ID:DLFwINBS0.net
- #define O 0
- 868 :デフォルトの名無しさん :2019/12/30(月) 23:34:38.97 ID:QMDb+rs/0.net
- >>864
配列のtypedefって代入で問題にならんのかな
今のCの仕様追ってないけど昔は構文エラーになるから構造体に入れる必要があった
- 869 :デフォルトの名無しさん :2019/12/31(火) 00:15:56.34 ID:Qb6UeAHn0.net
- >>825
これは危険なので普通はやらない。
scanf("%s", nextStr);
- 870 :デフォルトの名無しさん :2019/12/31(火) 00:24:22.42 ID:jyfGwMQG0.net
- 1文字入力ならgetc使うかな。
- 871 :デフォルトの名無しさん :2019/12/31(火) 07:44:51.11 ID:8dhupYNq0.net
- >>868
jmp_bufは配列のtypedefだよ
- 872 :デフォルトの名無しさん :2020/01/01(水) 00:17:51.96 ID:DMjscTxe0.net
- >>871
そういやそうだね
ローカルに作って環境保存にmemcpyした覚えないから代入できるのか
色々忘れてるわ
- 873 :デフォルトの名無しさん :2020/01/02(木) 09:27:06.04 ID:9VSdJ8Nx0.net
- ポインタを受け取る関数先頭では必ずnullチェックを行うコーティングルールが有るのですが
malloc失敗したポインタをそのまま渡した時ぐらいしか使い道が思い付きません…
- 874 :デフォルトの名無しさん :2020/01/02(木) 09:28:21.50 ID:mLLKwKl50.net
- freeしたときに0入れるルールもあるんじゃないのそれ
- 875 :デフォルトの名無しさん :2020/01/02(木) 09:37:24.05 ID:+UNtt4nj0.net
- >>873
杓子定規に適用したら形だけの無駄なチェック処理の典型だね。
上位レイヤとの境界のような意味のあるところだけなら現実的だけども。
- 876 :デフォルトの名無しさん :2020/01/02(木) 09:53:01.45 ID:qr+4fHWP0.net
- 仕様としてnullを許可する関数ではチェック不要としているのかあるいは一律に
null渡し禁止としているのかで評価は変わりそうだが。
- 877 :デフォルトの名無しさん :2020/01/02(木) 10:24:26.88 ID:Lvb+z/bpM.net
- get_state()みたいな関数があって失敗時はnullを返す。それを知らずに別の関数に戻り値を直接渡してしまったとか、nullが誤って渡されるケースなんていくらでもあると思うが。
873が超天才でそんなミスは絶対ありえないとしても、他人のコードやドキュメントが間違ってる可能性もある
- 878 :デフォルトの名無しさん :2020/01/02(木) 10:39:04.82 ID:Dgcghn810.net
- Player*とEnemy*を取るRPGのバトル関数で
どちらかが死んでたらplayer->attack()関数は盛大に失敗する
この時の当該playerは消滅したわけでは無いが
enemyはメモリ上から消えている
ついでにこのattack関数が実は関数ポインタに付けられたプレイヤーのスキルだった場合、
attackがカラッポだと、徒手空拳になるか防御するか何もしないか、何故か敵味方全員が即死していきなりエンディングが始まるかのどれかになる
- 879 :デフォルトの名無しさん :2020/01/02(木) 11:31:53.70 ID:FHRar1Ix0.net
- 安全性を取るならいついかなる時もNULLチェックは行うべき
だがそもそもパフォーマンス至上主義だから
Cという太古の言語を危険を冒してまで使っているということを考えると微妙
パフォーマンスが重要でないならCを使っていることからして論外
- 880 :デフォルトの名無しさん :2020/01/02(木) 11:38:58.14 ID:ZKet2vMyM.net
- 成否を含んだtupleを渡し実行時に判別、式全体を読み飛ばす粒度の小さい隠れた分岐構文みたいなの有ればいいのにねー
成否要素だけの反転は !!tulpevalue みたいな感じで
c言語の仕事じゃないだろうしそもそもtupleなんて持ってないし
うんこマが技巧駆使してわけわからんコード書くツールになるだけかもしれんし弊害いろいろ思いつくけど
- 881 :デフォルトの名無しさん :2020/01/02(木) 11:39:55.37 ID:+UNtt4nj0.net
- >>878
召喚された悪魔が鼻から出てきて世界滅亡エンドも追加しといて。
- 882 :デフォルトの名無しさん :2020/01/02(木) 12:33:18.19 ID:LqVuN/CI0.net
- >>879
Assertマクロとかでいいだろ
テストとかで引っ掛けるという実利に加えて「nullなんて渡すんじゃねーよボケ」と言うのを表明する意味もあるし
- 883 :デフォルトの名無しさん :2020/01/02(木) 12:38:16.19 ID:wpzQe/fn0.net
- nullに意味を持たせないプログラムなら、
null checkしないと落ちる環境ならする意味ないんじゃね
- 884 :デフォルトの名無しさん :2020/01/02(木) 14:45:20.78 ID:fRqsjLPxF.net
- Release build だと assert 消えるって知らない人意外と多いんですね
- 885 :デフォルトの名無しさん :2020/01/02(木) 15:06:10.66 ID:+UNtt4nj0.net
- >>884
消えるって知ってるからassertにしろっていう意見なんだろう
- 886 :デフォルトの名無しさん :2020/01/02(木) 15:47:44.05 ID:NYIo0K4bF.net
- その意見を完全にスルーしてコメントしてる人がいるよね
- 887 :デフォルトの名無しさん :2020/01/02(木) 16:46:49.09 ID:YqaismelM.net
- >>886
誰のことを言ってるの?
- 888 :デフォルトの名無しさん :2020/01/02(木) 19:01:18.56 ID:/MiE1Mk20.net
- ぬるぽ
- 889 :デフォルトの名無しさん :2020/01/02(木) 19:06:06.49 ID:LbxbUX1g0.net
- がっ!
- 890 :デフォルトの名無しさん :2020/01/02(木) 19:09:50.49 ID:ZQF68/R30.net
- 酷い自演を見た
- 891 :デフォルトの名無しさん :2020/01/02(木) 19:13:07.31 ID:LbxbUX1g0.net
- ジ・エンド!
- 892 :デフォルトの名無しさん :2020/01/02(木) 19:21:03.30 ID:koJayFbu0.net
- assertを本番環境に持ち込むべきと
主張する痛いやつが昔いたが
奴は今どうしてるかな
- 893 ::2020/01/02(木) 19:35:59.09 ID:VmmTWzwp0.net
- C++11 の static_assert は便利なんですけれどもね…これ、C に入らないかな…
assert も static_assert と同じ用途・考え方で使うべきものかと思いますね
- 894 :デフォルトの名無しさん :2020/01/02(木) 20:05:40.84 ID:koJayFbu0.net
- Cにもstatic_assertか
考えたこともなかったが
確かにあったらよさそうだな
もういじるなってのが
俺の基本だが
追加に賛成できる珍しい例だ
- 895 :デフォルトの名無しさん :2020/01/02(木) 20:45:56.41 ID:LqVuN/CI0.net
- >>892
> assertを本番環境に持ち込むべきと
> 主張する痛いやつが昔いたが
> 奴は今どうしてるかな
本番用はいちいちassert外してるのか?w
- 896 :デフォルトの名無しさん :2020/01/02(木) 20:51:06.32 ID:hML6I4krM.net
- おいおいおい
- 897 :デフォルトの名無しさん :2020/01/02(木) 20:59:07.77 ID:tgRnMcUUM.net
- >>895
assert は Debug ビルドのときだけチェックを行う実装になってるのが普通
- 898 :デフォルトの名無しさん :2020/01/02(木) 21:59:00.14 ID:LqVuN/CI0.net
- >>897
だから>>892が意味不明なんだけどw
- 899 :デフォルトの名無しさん :2020/01/02(木) 22:07:28.72 ID:tgRnMcUUM.net
- >>898
リリースビルドで有効な assert を用意するだけだろ
何が不思議なの?
- 900 :デフォルトの名無しさん :2020/01/02(木) 22:08:11.77 ID:SH5dgl7q0.net
- 本番環境に持ち込むべき
影響出ないんだから
こういうことでは
- 901 :デフォルトの名無しさん :2020/01/02(木) 22:22:27.18 ID:oLW+m36dM.net
- 深いところで拾ったエラーを浅層に戻して対応する必要がなく「ダメよ」と述べ落ち許されるプログラムならば
assert残すのも有りよね
実際#ifdef DEBUGで包んでるだけだし
imagemagickなんかも引数チェックを通った後の個々パラメータ内で不整合出たらassertでメッセージ流して落ちるし
- 902 ::2020/01/02(木) 22:27:00.54 ID:VmmTWzwp0.net
- >>900
assert が発動してアプリが止まるのは終わり方として最悪だとおもいますよ
もし assert が発動する可能性があるんだったら assert ではなくて、きちんとしたエラー処理を記述するべきなのでは?
assert って辞書をみると「断言」「主張」「出しゃばり」くらいの強い意味ですね
私は assert はコメントの一種一様態として使います=>>893
- 903 :デフォルトの名無しさん :2020/01/02(木) 22:29:39.05 ID:LqVuN/CI0.net
- >>899
えっ?
>>892が正しいという主張?
まあ>>901みたいな考え方もあるだろうけどさ
- 904 :デフォルトの名無しさん :2020/01/02(木) 22:30:49.81 ID:+UNtt4nj0.net
- >>901
assertに引っ掛かったときの挙動は置いとくとしても、assertの処理内容や頻度によっては実行時コストが問題になる可能性も無くはないから、単純にやってよしとはならないと思うぞ。
- 905 :デフォルトの名無しさん :2020/01/02(木) 23:00:40.06 ID:oLW+m36dM.net
- 効率厨はログ出力を見れるGNUemacsのeshell辺りででもwindowsプログラム立ち上げてみ?
プロプラ、オープンソースに関係なく大半のリリースビルドが膨大な出力を出しっパになってる現状に絶望するだろうから
- 906 :デフォルトの名無しさん :2020/01/02(木) 23:03:44.94 ID:SH5dgl7q0.net
- >>905
その環境で動かすと、プリプロセッサ段階で消去されているはずのデバッグ文実行結果が見れる様になるんですか?
- 907 :デフォルトの名無しさん :2020/01/03(金) 01:04:07.68 ID:kXvb5Zcs0.net
- >>905
処理内容や頻度によって実行時コストが問題になる可能性があると言っただけで効率厨扱いとはw
既存プログラムでログを大量に出しているからと反論しているが、だからそれがどうしたというのだ? ログを出しても性能的に問題ない範囲、頻度、量で出しているだけだろう。
- 908 ::2020/01/03(金) 03:24:18.79 ID:RUwUdhzc0.net
- >>907
assertion は「コメントの一種」という私の立場では、重い assertion の罪は軽い、許容できると感じています
- 909 :デフォルトの名無しさん :2020/01/03(金) 08:42:01.33 ID:3k7MKqlh0.net
- 組み込みだとタイミング込みで評価するから
ビルドを切り替えられないんだよね
assertはログだけ出すようにしてるが
ウォッチドッグを効かすってのもありかな
起こり得ないところで使うってのはその通り
- 910 :デフォルトの名無しさん :2020/01/03(金) 14:46:00.81 ID:SORF6jE90.net
- ロケット打ち上げ2秒後でassert出ても意味が無いな
そのまま大爆発だ
衝突する0.5秒前でassert出ても意味が無い
時速90kmでそのまま衝突だ
- 911 ::2020/01/04(土) 21:11:48.66 ID:rVQt0/h/0.net
- uint64_t を配列の添え字に使えるかどうかって何か規格はありますか?
手元の環境は unsigned int のようなんですが、gcc/ming32-x64
- 912 :デフォルトの名無しさん :2020/01/04(土) 22:03:02.52 ID:hAlxX0tq0.net
- uint64_tどころかポインタも使えるぞ
- 913 :デフォルトの名無しさん :2020/01/04(土) 22:09:03.08 ID:49Uce+wI0.net
- >>911 何を見て「unsigned int のよう」と言っているの?
- 914 :デフォルトの名無しさん :2020/01/04(土) 22:28:50.08 ID:HbavYk5j0.net
- >>911
ISO/IEC 9899:2011 (E)
6.5.2.1 Array subscripting
1 One of the expressions shall have type "pointer to complete object type", the other
expression shall have integer type, and the result has type "type".
7.19 Common definitions <stddef.h>
size_t
which is the unsigned integer type of the result of the sizeof operator;
どこにもunsigned intに限定するとは書いてねえぞ
unsigned integerと書いてあるのが
おまえはunsigned intに見えるのか?
- 915 ::2020/01/04(土) 23:21:44.72 ID:rVQt0/h/0.net
- >>912-914
コメントありがとうございます
uint64_t と int をいいかげんにチャンポンに使っていたための祟りに襲われてしまっているところでして…
a[i] = *(a + i)
を考えれば、i が int = int32_t, であろうと uint64_t であろうと、うまくやってくれると予想できますね
- 916 :デフォルトの名無しさん :2020/01/05(日) 12:03:03.18 ID:buL7vvPT0.net
- そこは
[a]i = *(a+i)
だろ
- 917 :デフォルトの名無しさん :2020/01/05(日) 12:18:38.35 ID:JLxpDEWT0.net
- >>916
それを言うならi[a]だ
ドヤるなら動作確認くらいしてからにしろ
そもそも後置演算子の[]が[a]iなわけねえだろ
- 918 :デフォルトの名無しさん :2020/01/05(日) 12:50:09.43 ID:+e7zv/8B0.net
- STLの配列の添え字は、std::size_tと同じ範囲が使えるように思う。
このstd::size_tには長さの制約は多分ない。
常識的に考えて、32ビットのプログラムで64ビットの配列を使うことはあまり現実的ではない。
なので、std::size_tの長さはNビットプログラムにフィットするようにコンパイル時にスイッチされる。はず。
- 919 :デフォルトの名無しさん :2020/01/05(日) 12:58:44.11 ID:JLxpDEWT0.net
- 思うんじゃなく確認しろ、多分とか寝言ぬかしてねえで
N4713
26.2.1 General container requirements
Table 83 ? Container requirements
X::size_type
size_type can represent any non-negative value of difference_type
26.3.8.1 Class template deque overview
// element access
reference operator[](size_type n);
const_reference operator[](size_type n) const;
- 920 :デフォルトの名無しさん :2020/01/05(日) 13:25:51.85 ID:qO+R3XJXM.net
- 教官湧いててワロタ
- 921 :デフォルトの名無しさん :2020/01/05(日) 13:55:25.64 ID:+b/hvkzN0.net
- 教官使い倒そうぜ。
タダだし。
- 922 :デフォルトの名無しさん :2020/01/05(日) 15:43:26.81 ID:Apdi0tl00.net
- 具体的な規格の文面を引用して示してくれるのは有難いことでしょ。
手元にPDFとかで持ってても場所を見つけるのが苦労で諦めることが多いし。
size_type can represent any non-negative value of difference_type
の部分を見ると size_t の大きさは difference_type の大きさに依存する、
少なくとも difference_type の正の範囲より広い、で合ってるかな。
ならば difference_type の範囲はどうなってるの? って具合に
疑問の先が移動するね。答えに近づいたけれど到達はしてない感じ。
- 923 :デフォルトの名無しさん :2020/01/05(日) 20:35:48.07 ID:eK7nc1Ssa.net
- 添え字は size_t が良き
- 924 :デフォルトの名無しさん :2020/01/06(月) 01:11:40.15 ID:eLfBkWc60.net
- 俺は符号付のほうが好きだな
符号なしって扱いがめんどくさい
- 925 :デフォルトの名無しさん :2020/01/06(月) 02:32:02.65 ID:4dvQB2Dx0.net
- メモリアドレスに符号はない
- 926 :デフォルトの名無しさん :2020/01/06(月) 02:58:19.15 ID:5D5lgCny0.net
- だがptrdiff_tは符号付きだ
絶対アドレスに符号はなくても
オフセットには符号がある
配列の添え字はオフセットなわけだが
それでもsize_tであるべきか?
- 927 :デフォルトの名無しさん :2020/01/06(月) 03:02:12.43 ID:YD66nlsEx.net
- BSTRのように、ときどき境界より前を参照したいことはあるかな
- 928 :デフォルトの名無しさん (ワッチョイ 42da-hqVv):2020/01/06(月) 03:05:00 ID:5D5lgCny0.net
- free()とかマイナスオフセットなしでどうやって実装するんだよ、とかね
- 929 :デフォルトの名無しさん :2020/01/06(月) 10:54:17.16 ID:zGikmXAV0.net
- マジ?
- 930 :デフォルトの名無しさん :2020/01/06(月) 13:04:19.40 ID:UJayP8xu0.net
- いつになるか激的アーキテクチャの進化でも迎えない限り
64bitでmsbまで使い切る正数アドレスなんて無いから
相対はヌルチェック+自動整数変換に頼っときゃいいんじゃね
fseek/off_tはなんかもやもや放置気味?誰が完全な解決をもたらすのか
- 931 :デフォルトの名無しさん :2020/01/06(月) 19:21:49.21 ID:OSGVopulF.net
- 変なセグメント跨がないだけまだマシ
- 932 :デフォルトの名無しさん :2020/01/06(月) 20:57:41.21 ID:eLfBkWc60.net
- 俺はCからプログラミング言語は学んだが、Cから入って正解だったな
あの苦難の道を思えばどれも大したことはない
C++とRustを除けば
- 933 :デフォルトの名無しさん :2020/01/07(火) 00:34:22.49 ID:MpiZXKP+0.net
- >>925
しかし俺の心の中にあるのだ。
- 934 :デフォルトの名無しさん :2020/01/07(火) 10:47:03.55 ID:YpzCpCxL0.net
- 君はディラックの海に飲み込まれている
- 935 :デフォルトの名無しさん :2020/01/07(火) 16:39:38.02 ID:Hzpz4xj50.net
- なんだっけそれ
どっかで聞いたことあるんだが思い出せない
- 936 :デフォルトの名無しさん :2020/01/07(火) 16:45:14.58 ID:3/Noa7Ai0.net
- >>935
熱素やエーテルみたいな架空の物質モデル論のひとつ
- 937 :デフォルトの名無しさん :2020/01/08(水) 23:52:10.09 ID:2EljHN2O0.net
- >>936
アニメで引用されてた気がする
エヴァだっけ?ディラックの海ってリツコが言ってたような
- 938 :デフォルトの名無しさん :2020/01/10(金) 20:53:06.96 ID:z03T2m7q0.net
- 2019年に成長したプログラミング言語ランキング、第1位は? 2020/01/10 09:18 後藤大地
https://news.mynavi.jp/article/20200110-952052/
TIOBE Softwareがこのほど、2019年に最もインデックス値を伸ばしたC言語が2019年のプログラミング
言語・オブ・ザ・イヤーに輝いたと伝えた。第2位はC#で、これにPythonとSwiftが続いている。
C言語のインデックス値が伸びた理由として、IoTおよび小型のインテリジェントデバイスにおいて需要が
高いためだという。C言語は短時間で習得が可能な上、すべてのプロセッサにおいてCコンパイラを利用
できる。TIOBE Softwareは、こうした状況がC言語のインデックス値上昇を招いたのではないかと分析
している。
発表された2019年におけるインデックス増加率と順位は次のとおり。[順位]プログラミング言語(増加率)
[1]C(+2.4%)、[2]C#(+2.1%)、[3]Python(+1.4%)、[4]Swift(+0.6%)、
2019年のプログラミング言語・オブ・ザ・イヤーは、2018年に引き続きPythonが受賞するだろうと考え
られていた。これは、Pythonが2018年に入ってから長期にわたって増加傾向を維持しているためだ。
しかし、2019年はC言語の増加率がPythonを超えて1位となった。C言語は2016年に一気にインデッ
クス値を下落させており、2017年後半から逆に増加に転じている。ずでに減少以前の水準まで戻って
きており、今後も同様のペースで増加を続けるかどうかはわからない。
仮に、今後も同様のペースでC言語の増加傾向が続いた場合、JavaとC言語のポジションが逆転して
C言語が首位になる月が出てくる可能性もある。しかし、過去の動向として、JavaとC言語は推移が同調
する傾向が強く、Javaが第1位でCが第2位という順位のまま推移する可能性もある。(中略)
TIOBE Programming Community Index (PCI)は、複数の検索エンジンの検索結果から、対象となる
プログラミング言語がどれだけ話題になっているかをインデックス化したもの。2020年1月におけるイン
デックスは次のとおり。
1月TIOBE Programming Community Index / 円グラフ
https://news.mynavi.jp/article/20200110-952052/images/002.jpg
- 939 :デフォルトの名無しさん :2020/01/10(金) 23:49:08.97 ID:dnkcugEB0.net
- >C言語は短時間で習得が可能
お、おう
- 940 :デフォルトの名無しさん :2020/01/10(金) 23:54:40.89 ID:g1glT3r10.net
- Cの文法や標準ライブラリがコンパクトだし覚えるべき概念も少ないのは間違いない
- 941 :デフォルトの名無しさん :2020/01/11(土) 00:21:52.03 ID:tkcR1Lp+0.net
- 覚えることは少ない(簡単ではないけど)
- 942 :デフォルトの名無しさん :2020/01/11(土) 00:57:34.91 ID:NtF2wljx0.net
- オブジェクト指向とポインタならポインタの方がラク
それにメモリに沿ってるので分かり易い
- 943 :デフォルトの名無しさん (ワッチョイ df52-G18V):2020/01/11(土) 03:00:34 ID:3RtWHygz0.net
- ポインタとオブジェクト指向は別物だからな
そもそも比べるのがおかしい
- 944 :デフォルトの名無しさん :2020/01/11(土) 07:57:38.18 ID:qIT1Gaoe0.net
- 考えようによっては、ポインタとメモリの関係を理解してしまえば、
Cほど単純な言語とその標準ライブラリも他にないからなぁ
- 945 :デフォルトの名無しさん :2020/01/11(土) 09:58:53.91 ID:AmOO0hUd0.net
- まあ組込みだとCでいいと思うけどテンプレとかも使いたいからオラはベターCだな
- 946 :デフォルトの名無しさん :2020/01/11(土) 10:17:43.71 ID:MvVD+3kL0.net
- APIでいろいろある。
- 947 :デフォルトの名無しさん :2020/01/11(土) 11:30:24.41 ID:Rj+B3SHF0.net
- ま、抽象度が低いと覚えることは少ないんだよ。
論理回路は覚えることが超少ない。
- 948 :デフォルトの名無しさん :2020/01/11(土) 16:02:03.38 ID:j7/IvFvR0.net
- Kotlin もよろしく
- 949 :デフォルトの名無しさん :2020/01/11(土) 16:06:43.26 ID:tdQ2h9sk0.net
- 覚えることが少ないというか物理的で直感的だからわかりやすい
クラスとか言われても初心者には「?」だし
- 950 :デフォルトの名無しさん :2020/01/11(土) 16:32:40.71 ID:Mi8oZktw0.net
- C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために
さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが
簡単に生産されるようになってる。正直いって、C を選ぶ理由が C++ プログラマーを
追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
C++ はトンでもなく悪い設計の元になりうる。どうせこの言語ではいつも STL やら
Boost やら、その他ゲロゲロベロベロの「素敵な」ライブラリの機能を使って、
それがあんたのプログラムに「役立つ」んだろうが、以下のことが起きる:
- うまく動かないときにもたらされる際限のない苦痛 (あと STL とか、特に Boost が
安定してるとか移植性があるとかいう奴は、どいつもこいつも大ウソつきで、
もはや笑えるレベルを超えている)
- 非効率な抽象プログラミングモデルで、2年たった後にこれらが実はそんなに
効率的じゃなかったことに気づくケース。でもそのときにはすでに全部の
コードがその素晴らしいオブジェクトモデルに依存していて、直すためには
アプリ全体を書き直さなきゃなんない。
言いかえれば、唯一まともで、効率がよくて、システムレベルで使えて、移植性がある
C++ ってのは、基本的に C で使える機能だけに限ったときなんだ。そして C だけに
限定するってことは、他の人がそれをめちゃくちゃにしないってことで、
ついでに沢山のプログラマが実際に低水準の問題を理解することができて、アホらしい
「オブジェクト・モデル」のたわごとを持ちこまないってことだ。
- 951 :デフォルトの名無しさん :2020/01/11(土) 17:09:55.20 ID:l/QLWHKHF.net
- const 禁止のことを言ってるなら同意
- 952 :デフォルトの名無しさん :2020/01/11(土) 17:46:53.86 ID:AmOO0hUd0.net
- >>950
とりあえずお前はCに留まってろ
話はそれだけだ
- 953 :デフォルトの名無しさん :2020/01/11(土) 17:53:57.75 ID:DoM09T/H0.net
- 有名なリーナスのコピペだろ
- 954 :デフォルトの名無しさん :2020/01/11(土) 22:53:33.52 ID:AUXeR2Nj0.net
- 初心者がC++を使うのはクラスが便利とかではなくて便利そうなライブラリを引っ張てこれるからだろう。
- 955 :デフォルトの名無しさん :2020/01/11(土) 22:55:44.33 ID:maKKMM+r0.net
- 便利そうなライブラリを引っ張ってこれる時点でプログラミング初心者ではないし
そもそもC++から始めるプログラミング初心者とか存在すんのか?
- 956 :デフォルトの名無しさん :2020/01/11(土) 23:26:05.56 ID:PA1VQQuv0.net
- >>947
NANDだけだな
- 957 :デフォルトの名無しさん :2020/01/11(土) 23:31:10.93 ID:r5wulSj/0.net
- 単純に便利だからじゃないの。
- 958 :デフォルトの名無しさん :2020/01/12(日) 01:47:15.90 ID:yxPPqVVq0.net
- >>956
そうなんだ
- 959 :デフォルトの名無しさん :2020/01/12(日) 01:51:46.75 ID:HwD03+Q90.net
- 笑って良いか?w
- 960 :蟻人間 :2020/01/12(日) 02:18:33.81 ID:1G/fBof90.net
- いいとも!
- 961 :デフォルトの名無しさん :2020/01/12(日) 03:10:59.78 ID:Svv4a/Ag0.net
- gccコンパイルしたんだが今どきのgccってC++で書かれてるんだな
恥ずかしながらつい最近まで知らんかった
- 962 :デフォルトの名無しさん :2020/01/12(日) 07:25:04.57 ID:t6zFaymS0.net
- >>947
でも日本は失敗したんだよね。
- 963 :デフォルトの名無しさん :2020/01/13(月) 14:02:27.58 ID:JUx858UH0.net
- 質問です。32bitで確保できるメモリの上限近く(windowsなので1.5GBとか)を
色々なデータで確保した後、いっきに半分以上解放し、またいっきに色々なデータで
上限近く確保しようとするとmalloc()が失敗します(NULLを返す)。
プロセスのメモリを見ても500MBくらいまで落ちてから再確保しているようですがダメです。
これは内部で何が起こっているのでしょうか?断片化とかでしょうか??
- 964 :963 :2020/01/13(月) 14:50:30.36 ID:JUx858UH0.net
- 追加ですが殆どのデータを解放して使用量50MBくらいにしてから
しばらく待ってから再確保すると上手く行くようです。ただ500〜1000MBくらい残してから
また上限近くまで確保しようとすると失敗します。何故でしょうか?
- 965 :蟻人間 :2020/01/13(月) 15:39:54.87 ID:xgMgrp400.net
- よくわからんけど、ヒープメモリの仕組みを調べるといいかも。
- 966 :デフォルトの名無しさん :2020/01/13(月) 15:42:12.61 ID:WUoSHY6Y0.net
- アリ人間は何故なまえを変えたのか。
- 967 :デフォルトの名無しさん :2020/01/13(月) 15:47:05.97 ID:5GjUS2iX0.net
- フラグメント
断片化
アドレス空間2GBの壁
諦めなさい
- 968 :デフォルトの名無しさん :2020/01/13(月) 15:54:23.75 ID:5GjUS2iX0.net
- 極端な例
256MBのメモリを8個確保 (2GB分) したあと
1, 3, 5, 7個目を解放
この状態だと
1GB空きがあるのに
連続で空いてるのは256MB
だから512MBの確保に失敗する
- 969 :デフォルトの名無しさん :2020/01/13(月) 16:31:54.68 ID:axFuJyFlF.net
- 断片化だろ
しばらく待つことに何の意味も無い
- 970 :963 :2020/01/13(月) 16:37:34.93 ID:JUx858UH0.net
- >>967-969
やっぱり断片化ですか… 一旦使用量50MBまで減らしたら
断片化がかなり無くなったので確保が上手く行ったという事になりますかね。
更にうまくメモリ管理するか64bit化も考えようと思います。ありがとうございました。
- 971 :デフォルトの名無しさん :2020/01/13(月) 17:38:12.46 ID:axFuJyFlF.net
- 細切れにならないように自分ででかく確保して
その中をさらに自分で管理すると良い
- 972 :デフォルトの名無しさん :2020/01/13(月) 19:01:20.39 ID:JUx858UH0.net
- >>971
もっと効率よくやるならその方法がやっぱいいですね。ありがとうございます。
- 973 :デフォルトの名無しさん :2020/01/13(月) 22:56:26.88 ID:ke+wtNqb0.net
- そこまで大きいデータならオンメモリで処理する手段は捨てるなあ
間違えて数GBのISOファイル読み込んじゃってPC固まったとかそういう挙動は許されざるよ
- 974 :デフォルトの名無しさん :2020/01/13(月) 23:07:18.29 ID:Yl8Am7cI0.net
- 無理に32ビットでやらなくても良いのではないか?
- 975 :デフォルトの名無しさん :2020/01/14(火) 11:56:44.05 ID:AM8t1N0H0.net
- 要するにブロックを詰めるパズルゲームだろ
- 976 :デフォルトの名無しさん :2020/01/14(火) 16:16:37.73 ID:MAaOflfD0.net
- メモリをポインタではなくハンドルで管理すれば
メモリコンパクションができる
ただし、そんなことをしなくても実容量を超えるメモリが提供できるようにするために仮想記憶があるんだが
- 977 :デフォルトの名無しさん :2020/01/14(火) 16:30:41.75 ID:RxBpnTJ90.net
- 実容量を超えるメモリーを使いたいだけならオーバーレイとかセグメント方式のメモリー管理機構とか色々あるが
- 978 :デフォルトの名無しさん :2020/01/14(火) 17:25:51.38 ID:Ae/uveiQ0.net
- >>976-977
32bitプログラムだとメモリ空間が最大でも4GBしか扱えないので
それ以上は無理ではないでしょうか?扱える方法何かあるでしょうか?
- 979 :デフォルトの名無しさん :2020/01/14(火) 17:28:42.27 ID:Cb2SImdL0.net
- あるけど
- 980 :蟻人間 :2020/01/14(火) 17:37:38.20 ID:JKuyIKmvd.net
- メインメモリとは別の記憶媒体に退避しておけば、実質使える?かな?
- 981 :デフォルトの名無しさん :2020/01/14(火) 17:46:20.96 ID:SgRnb4BR0.net
- >>978
その理屈だと、4GBを超えるファイルは扱えなくことになる
- 982 :デフォルトの名無しさん :2020/01/14(火) 18:01:20.77 ID:vjAz2zAO0.net
- 32bit Windows の普通のプロセスのアドレス空間は2GB
OSやAPIを改造してFARポインタを扱えるようにするか
ロックアンロック方式のメモリ管理を自力で実装するか
そんなことをするよりは
素直にアプリのメモリ確保の方法を変えるのが早い
もちろん64bit化出来るならそれが一番
- 983 :デフォルトの名無しさん :2020/01/14(火) 18:05:55.14 ID:RxBpnTJ90.net
- >>978
オーバーレイは同じメモリー空間のデータ/プログラムを入れ替えて実行する機能
メモリー空間の話であればバンク切替とかもあるし
- 984 :デフォルトの名無しさん :2020/01/14(火) 18:13:13.94 ID:Ae/uveiQ0.net
- >>982
どうしても使ってる一部のライブラリが32bitで64bit化するのが無理でした。
>>983
そちらを調べてみようと思います。
- 985 :デフォルトの名無しさん :2020/01/14(火) 18:15:32.64 ID:Ae/uveiQ0.net
- >>980-981
そうやっても必要な時にメインメモリに読み込んで使う必要がないですかね?
しかも上手くやりくりして読み込んでもそこで断片化の問題もありますし。
その場合プールを自分で管理するしかなさそうな気がします。途中でその話をしてましたが。
- 986 :デフォルトの名無しさん :2020/01/14(火) 18:31:15.17 ID:jSZPoIDP0.net
- 32bitOSで4GB以上のオブジェクトをメモリに読み込んでどうにかしろ、と言われたら。
最初に検討するのはファイルマッピングだろうなあ。それ以外だとやる気がおきない。
APIを叩く必要があるので、WindowsならCreateFileMappingとかMapViewOfFileとか。
- 987 :デフォルトの名無しさん :2020/01/14(火) 18:32:25.86 ID:Ae/uveiQ0.net
- >>986
ありがとうございます。調べてみますね。
- 988 :デフォルトの名無しさん :2020/01/14(火) 18:32:29.78 ID:RxBpnTJ90.net
- >>984
> そちらを調べてみようと思います。
いやいや、オーバーレイとかバンク切替とかは半分ネタだから今更そんなもん調べなくていいよw
>>985
> しかも上手くやりくりして読み込んでもそこで断片化の問題もありますし。
アホほどでかいサイズでなきゃそれほど問題にならないよ
> その場合プールを自分で管理するしかなさそうな気がします。途中でその話をしてましたが。
どうしてもでかい領域を確保/解放する必要あるならそれしかないように思う
- 989 :蟻人間 :2020/01/14(火) 18:39:12.20 ID:JKuyIKmvd.net
- どうしてそんなデカいデータが必要なんだろう。遺伝子情報でも操作してんのかな?
- 990 :デフォルトの名無しさん :2020/01/14(火) 18:41:07.63 ID:Ae/uveiQ0.net
- >>988
>いやいや、オーバーレイとかバンク切替とかは半分ネタだから〜
ネタでしたかw 了解しました。
>アホほどでかいサイズでなきゃそれほど問題にならないよ
細かいのと途中で500MBくらいを二つとかがあるので時々断片化のせいでmallocが失敗するんですよねえ…
>どうしてもでかい領域を確保/解放する必要あるならそれしかないように思う
とりあえず作業領域様に500MBの領域を確保して再利用すると他の部分でmalloc失敗はなかったですね。
仰るように小さい領域はかなり確保しても問題にならないですね。大きな領域用にメモリスペースを予め確保しておく方法がよいかもしれないと思いました。
- 991 :デフォルトの名無しさん :2020/01/14(火) 18:45:58.67 ID:SgRnb4BR0.net
- >>990
メモリーマップドは、かなり癖があるから注意して使った方がいいよ
ロジックなどの作りは簡単になるけど、
下手をすると処理が一日で終わらないなんて平気で起きる
- 992 :デフォルトの名無しさん :2020/01/14(火) 18:48:32.63 ID:iQtyfXTR0.net
- もう64bitが当たり前になってかなり経つ昨今、そんな案件ごろごろある
映像をリアルタイムでごにょごにょとか言われたら簡単にギガ単位のメモリ使う
稀有な例では無いけど32bit環境でやれって言われたらヤダナとは思う
- 993 :デフォルトの名無しさん :2020/01/14(火) 18:55:05.49 ID:Ae/uveiQ0.net
- >>991
そうなんですね。了解しました。
>>989 >>992
詳細はあまり言えないのですがメモリ中に
動画データを一部展開しなければいけなくて
メモリ不足や断片化の問題で困ってました。
しかも周辺で使ってるライブラリが32bitで64bit化が難しくて。
- 994 :蟻人間 :2020/01/14(火) 19:02:49.75 ID:JKuyIKmvd.net
- そろそろ次スレ
- 995 :デフォルトの名無しさん :2020/01/14(火) 19:20:01.41 ID:2s3ZuCDc0.net
- 8k240Hz動画だと1秒キャッシュするだけでメモリ消費24GBか
まあ今時わざわざCを使うなんて極限環境だけだからそういうこともあるよね
- 996 :デフォルトの名無しさん :2020/01/14(火) 19:23:27.41 ID:SgRnb4BR0.net
- >>992
無理かどうか分からないけれど、その32ビットの処理だけ抜き出して
外部プログラムにし、処理結果を受けとるみたいには出来ないのかな?
- 997 :デフォルトの名無しさん :2020/01/14(火) 19:27:10.09 ID:Ae/uveiQ0.net
- >>996
せめてDLLが別のプロセスモードとかで動いてくれればいいんですが…
よい案がないか引き続き考えてみますー
- 998 :デフォルトの名無しさん :2020/01/14(火) 19:33:22.57 ID:SgRnb4BR0.net
- 次すれ、立てました
https://mevius.5ch.net/test/read.cgi/tech/1578997950/
- 999 :デフォルトの名無しさん :2020/01/14(火) 19:45:37.22 ID:MAaOflfD0.net
- >>978
ちょっと待てや
おまえ単一仮想記憶を前提に話してるか?
今や多重仮想記憶が当たり前で単一仮想記憶はかなり特殊な存在だぞ
- 1000 :デフォルトの名無しさん :2020/01/14(火) 19:50:12.26 ID:gkNCY9ap0.net
- for (int i = 0; i < 1000; i++) {
puts("1000");
}
- 1001 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
総レス数 1001
240 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★