2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

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 ★