トップページ⇒tech
1001コメント304KB

C言語なら俺に聞け(入門編)Part 129 [転載禁止]©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2015/05/27(水) 06:15:55.14ID:gRxCv8ae
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 127
http://peace.2ch.net/test/read.cgi/tech/1424244688/
★過去スレ
ttp://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 168代目
http://peace.2ch.net/test/read.cgi/tech/1408962564/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
ttp://codepad.org/
ttp://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
【重要】
当たり前の事ですが、2chではコピペ荒らしは禁止されています
0002デフォルトの名無しさん2015/05/27(水) 06:45:54.38ID:SouEKxUw
乙だが128では?
0003デフォルトの名無しさん2015/05/27(水) 06:47:14.31ID:BqvzOlIW
>>2
前回が間違えてる
修正して129
0004デフォルトの名無しさん2015/05/27(水) 06:51:28.30ID:SouEKxUw
なるほど了解
改めて乙
0005デフォルトの名無しさん2015/05/27(水) 16:27:21.93ID:lomThlZd
c言語で && とか || は左から評価されることが保証されている?
0006デフォルトの名無しさん2015/05/27(水) 16:42:47.49ID:5zOFtYYl
A==B ? a+b : 0;
今更知ったんだけど、これダメなんだね

A==B ? (a+b) : 0;
こうしないとアカンらしい。括弧が必要なポイントが分からんすぎていつも嵌る
0007デフォルトの名無しさん2015/05/27(水) 16:52:32.64ID:nuGrXhR8
>>5
左側の評価だけで即解決する場合
(or結合での正 / and結合での否)
に右側が評価されないようになってる = ショートサーキット
0008デフォルトの名無しさん2015/05/27(水) 17:24:31.23ID:CXVzjYKy
三項演算子は使わない
0009デフォルトの名無しさん2015/05/27(水) 18:06:06.51ID:lomThlZd
>>7
おkありがとう
0010デフォルトの名無しさん2015/05/27(水) 18:54:58.47ID:CN4no++3
>>6
(A ==B) ? a + b : 0;
と書くようにしているが、それでもハマリ防止にはならないらしい‥
http://peace.2ch.net/test/read.cgi/tech/1313183984/766
0011デフォルトの名無しさん2015/05/27(水) 19:02:43.43ID:g535aIO5
>>6
ダメとかアカンとかじゃなくて、自分はコンパイラと違う解釈してましたってことだろ
まあスタイルとしては、迷いそうなところは括弧付けるのがいい。
(A == B)?(a + b):0
0012デフォルトの名無しさん2015/05/27(水) 19:21:02.83ID:5zOFtYYl
せやな。括弧付けるんは無料だしどんどんつけてくぜ
0013デフォルトの名無しさん2015/05/27(水) 19:29:23.14ID:bmPyy927
>>6
誰がそんなデタラメ教えたんだ?
> A==B ? a+b : 0;
> A==B ? (a+b) : 0;
このふたつの演算結果は完全に同じ

>>10-11
知ったかぶりする前に優先順位表でもみた方が良いぞ。
0014デフォルトの名無しさん2015/05/27(水) 19:32:24.70ID:5zOFtYYl
>>13
教わった訳じゃなくて、思い通りに動かなかったのが括弧付けただけで動いたんだもん・・・
0015デフォルトの名無しさん2015/05/27(水) 20:00:44.25ID:bmPyy927
>>14
じゃ、それは関係無い
マグレで動いてるように見えてるだけ
0016デフォルトの名無しさん2015/05/27(水) 20:09:19.47ID:c6bUiV8v
>>10 の先のは ? の左側の順位の問題

C = D + 「三項演算子の評価値」 のつもりで
C = D + (A == B) ? a : b; とかいたが

C = 「D + (A==B) を判定し a または b を渡す三項演算子」

となった
0017デフォルトの名無しさん2015/05/27(水) 21:56:57.44ID:toEie+PK
>>13
>このふたつの演算結果は完全に同じ

ところがどっこい

http://peace.2ch.net/test/read.cgi/tech/1313183984/766
>× *x_sol = x + (alpha > 0) ? alpha : -alpha;
こう書くと x + (alpha > 0) が優先されるのであった‥

>知ったかぶりする前に優先順位表でもみた方が良いぞ。
そのようだね、お互いに
0018デフォルトの名無しさん2015/05/27(水) 22:53:38.02ID:bmPyy927
>>17
式を変形させて同じじゃ無いとかバカいってんな。死ねアホウ。

> A==B ? a+b : 0;
> A==B ? (a+b) : 0;
このふたつの演算結果は完全に同じ
0019デフォルトの名無しさん2015/05/27(水) 22:56:15.88ID:bmPyy927
本当にQzってダメな奴だな
0020デフォルトの名無しさん2015/05/27(水) 23:02:45.84ID:5zOFtYYl
A==B ? a+b : 0;というのは簡単に書いたんだが、ちゃんと実際のやつ書いたほうがええな・・・


phai = vco_seek(略,略,略,略,略,略,略, vco_tone[s] * ((s == mod_lavel - 1) || (3 == mod_lavel) ? mod_G*modADSR(f, 0) + 1.0 : 1.0));
これを
phai = vco_seek(略,略,略,略,略,略,略, vco_tone[s] * ((s == mod_lavel - 1) || (3 == mod_lavel) ? (mod_G*modADSR(f, 0) + 1.0) : 1.0));
に変えたら上手くいったんだわ。同じ事だと思うが
0021デフォルトの名無しさん2015/05/27(水) 23:04:58.49ID:bhmZkUHl
珍しいコンパイラーだね
0022デフォルトの名無しさん2015/05/27(水) 23:11:06.09ID:bmPyy927
>>20
アセンブリ出力して比べてみろよ
違ってるならコンパイラが壊れている
0023デフォルトの名無しさん2015/05/27(水) 23:31:31.58ID:5zOFtYYl
>>22
アセンブラ比較してみたら37箇所違うところがあるみたい
http://xxxxxxxxxxxx.net/_/135/20150527232953-0.jpg

まぁ訛りのつよいコンパイラって事で諦める事にしとくわw
0024デフォルトの名無しさん2015/05/27(水) 23:33:10.69ID:AoLMgYi8
:より先に+が演算されるから変わらないだろ
お前のコードが間違えてるかコンパイラが変
0025デフォルトの名無しさん2015/05/28(木) 02:48:07.72ID:rkwpKfBz
>>23
その画像の部分はラベル違うだけじゃ?
0026デフォルトの名無しさん2015/05/28(木) 08:25:26.19ID:7RWTzWFs
このように無駄な喧嘩の原因になるので括弧をつける癖をつけよう。
0027デフォルトの名無しさん2015/05/28(木) 08:37:24.47ID:qBUpvu6j
無駄じゃない
1 ID:5zOFtYYlのプログラムが依然としてバクが修正できていない事実が判明した
2 Qzが救いようのないバカである事が再々再度確認できた
0028デフォルトの名無しさん2015/05/28(木) 10:10:34.56ID:TeBgubTT
文字列の終端を表す「\0」は10進数の0と共通のアスキーコードらしいですが、
これでは文字列の途中に数字の0が入っていたらそこで文字列が終わって
しまうんですが?
0029デフォルトの名無しさん2015/05/28(木) 10:21:47.34ID:qBUpvu6j
数字の0のアスキーコードは0x30
なので問題ない
0030デフォルトの名無しさん2015/05/28(木) 10:34:23.87ID:TeBgubTT
ありがとうございます!
0031デフォルトの名無しさん2015/05/28(木) 12:36:56.52ID:uqfTz9n2
ビット演算や16進数など速く使えるようになりません
仕事がハードよりなので恐らく使う事になると思うのですが
良い練習法などあったら教えてください。
0032デフォルトの名無しさん2015/05/28(木) 12:37:58.78ID:BA36VF96
>>18 >>27
おう、またお前か、MASM の勉強は進んでいるかね?
人に言われないと自分が馬鹿であることを時々忘れるから、まあ、有難いことだ

さて、>>6 は三項演算子(条件演算子)の優先順位と括弧のつけ方について話題にしている
まあ >>6 の内容自体には疑問はあるが、三項演算子の優先順位の低さは話題になってもよい
そこで、議論を有用な方向に導くためにも俺のミステイクを公開してみた

しかし、お前は汗とか小さいことにこだわるんだね
視野が狭いとあちこちにぶつかって痛いだろう?大人になり給え
0033デフォルトの名無しさん2015/05/28(木) 12:39:35.13ID:JHgdzIBl
仕事で使うなら仕事で勝手に身につくだろ
実践が早いってこと
0034片山博文MZ ◆T6xkBnTXz7B0 2015/05/28(木) 12:46:46.61ID:BPOchcgZ
二進数四桁が十六進数一桁に相当することを覚えれば進数の換算が早くできるようになる。
十進数で十倍すると右にゼロが1つ増える。
一般にX進数でX倍すると右にゼロが1つ増える。
左シフト演算はX倍の繰り返しだと覚えればいい。
右シフトはその逆。
AND演算はビットごとの論理積だから、二進数に置き換えて考える。
OR演算はビットごとの論理和だ。
最悪の場合でも、ウィンドウズ付属の電卓を使えばなんとかなるかと。
0035片山博文MZ ◆T6xkBnTXz7B0 2015/05/28(木) 13:06:49.57ID:BPOchcgZ
例えば、1001101という二進数があったら、位の低い方から四桁区切りにすると
100 1101
となる。100は十六進数で4であり、1101は十六進数でDだから、
二進数の100 1101は、十六進数の4Dである。
0036片山博文MZ ◆T6xkBnTXz7B0 2015/05/28(木) 13:11:05.27ID:BPOchcgZ
C言語やる前に基本情報くらい取っとけ
0037デフォルトの名無しさん2015/05/28(木) 13:12:30.95ID:qBUpvu6j
>>32
やあ、ひさしぶりだな。チンカス。
まだ底辺で蠢いてるのか? 末尾再帰は理解できたか?
0038デフォルトの名無しさん2015/05/28(木) 13:17:07.50ID:uqfTz9n2
>>33
仕事で勝手に身につける、前段階の不安を和らげる緩衝剤みたいな感じです。
>>34-35
丁寧にありがとうございます!
そっくりそのままノートにとって会社もってきますw
>>35の考え方凄くわかりやすいですね。最終手段「電卓」覚えときます。
0039デフォルトの名無しさん2015/05/28(木) 13:47:31.11ID:7y7wQ+Hc
>>38
10進数の四則演算はどうやって覚えてきたか思い出すといい。

・まずは、16進2進の相互変換を覚える。(考えるのではない)
こうするとパッと見でビットパターンが浮かんで便利。
・16進一桁の加減算くらいは覚える。
こういうことをすると、n進数が身近なものに感じられるようになるんで、
変な苦手意識がなくなるからおすすめ。
0040片山博文MZ ◆T6xkBnTXz7B0 2015/05/28(木) 13:50:16.12ID:BPOchcgZ
そもそもshiftという英単語は、ずらすという意味を含んでいるからな
0041デフォルトの名無しさん2015/05/28(木) 14:19:20.15ID:BPOchcgZ
※未承認広告※
さあ、ユーキ●ンで基本情報を取得しよう。
0042デフォルトの名無しさん2015/05/28(木) 17:32:52.86ID:pwrXSWWR
夕貴たんですか。
0043デフォルトの名無しさん2015/05/28(木) 17:48:55.24ID:+ywrUonY
基本情報どころか、いまやITパスポートレベルの知識。

ITパスポートに基本情報の問題がどんどん入ってきてる。
0044デフォルトの名無しさん2015/05/28(木) 17:52:41.32ID:9BOAlIFb
こういうのは大丈夫なのか

#define LED1 (0x01)
#define LED2 (0x02)

PORTD |= LED1;
PORTD &= ~LED1;
PORTD |= (LED1 | LED2);
PORTD &= ~LED2;
0045デフォルトの名無しさん2015/05/28(木) 18:47:19.12ID:qBUpvu6j
末尾再帰を知らずに墓穴を掘ったチンカスくん(>>32)の爆笑発言
tech/1352812333/の876がチンカスくん

> From: [874] デフォルトの名無しさん <>
> Date: 2013/01/29(火) 12:37:44.50
>
> バカがうるさいので書き直してやるよ。www
> void free_l(struct l * restrict p) {
> struct l *next = p->next;
> free(p);
> if (next)
> free_l(next);
> }
>
> バカのいいがかりなんて所詮この程度の事。 バカには意味わからないだろうけどな。www

> From: [876] デフォルトの名無しさん <sage>
> Date: 2013/01/29(火) 12:58:33.48
>
> ここでwwwさんに問題です
> 天才には簡単な問題ですので必ず逃げないで答えてください
>
> スタックサイズが8MBのとき、このfree_l関数で解放可能な連結リストは
> 最大何個連結可能でしょうか?
>
> アーキテクチャは好きに選んでいいですよ
0046デフォルトの名無しさん2015/05/28(木) 18:49:56.50ID:qBUpvu6j
「アセンブリ」に過剰反応する理由が↓これ

> 884 : デフォルトの名無しさん[sage] 投稿日:2013/01/29(火) 14:41:33.76
> 別にちゃんと>>867を答えてもらってもいいですよ
> 答えられるならばの話ですけど

> 885 : デフォルトの名無しさん[] 投稿日:2013/01/29(火) 14:42:41.02
> >>884
> 制限なし。www
> これでいいのか。 www

> 890 : デフォルトの名無しさん[] 投稿日:2013/01/29(火) 15:24:04.07
> バカには読めないと思うけど、>>874のアセンブリリストね。 wwww
> http://pastebin.com/4pBPEWBG
>
> 読めなくて良かったな。バカ。 wwwww
> 読めてたら憤死するところだぞ。 wwww
0047デフォルトの名無しさん2015/05/28(木) 21:17:36.02ID:uqfTz9n2
C言語勉強中とはいえビット演算のみ質問はかなりスレチに近かった・・・反省。
>>39
加減算覚えるの凄くよさそうですねトレーニングに取り入れたいと思います。
本当に日常で触れてなかったものの苦手意識排除は大変、がんばります!
>>41
絶賛勉強中ですw
0048デフォルトの名無しさん2015/05/28(木) 23:09:51.22ID:+atrdthn
>>45 >>46
よっぽどツボにはまったのねw
0049デフォルトの名無しさん2015/05/28(木) 23:43:18.09ID:qBUpvu6j
>>48
ls -l ./progと肩を並べる赤っ恥
0050デフォルトの名無しさん2015/05/29(金) 07:13:43.33ID:UV9YC1hI
あああああああ参照カウントあああああああ
0051502015/05/29(金) 08:16:00.19ID:6ABPwQuC
参照カウントの実装関連で質問です
実装中のリスト処理用関数popについて
struct list {
void *car;
void *cdr;
};
struct list *pop(void **place)
{
void *p = list_car(*place);
update(place, list_cdr(*place));
/* update(**void, *void) はカウントを調整して第一引数の位置に第二引数を代入する */
return p;
}

この関数でupdate(place, list_cdr(*place));のときにpのオブジェクトが回収されてしまって
もどったときにはごみになってしまします。
うまい方法はないでしょうか?

ps移動しているのでIDかわってしまうかもです
0052デフォルトの名無しさん2015/05/29(金) 12:14:24.83ID:6sq7SX0R
所有権の移譲なのか、単にショートカットとしての変数への代入なのか
区別できていないからうまくいかないんじゃね? 知らんけど
0053デフォルトの名無しさん2015/05/29(金) 12:40:50.62ID:GiRGpazT
どのへんが参照カウントなのかわからんけど、
ゴミになるって言うんだからmallocしてないんじゃね?
0054512015/05/29(金) 13:36:21.56ID:UV9YC1hI
>>52
所有権の移譲ってなんですか?
0055デフォルトの名無しさん2015/05/29(金) 13:53:52.96ID:6sq7SX0R
void *a = malloc();

case 1)
 void *p = a;
 free(a);
 ....
 *p 等を使ったコード

case 2)
 void *p = a; a = NULL;
 free(a);
 ....
 *p 等を使ったコード

の違いみたいな論理思考
後者の case 2 は a のもちものだったものを p へ移してる
0056デフォルトの名無しさん2015/05/29(金) 14:01:20.06ID:8st5hivm
update()のコードも張らずに

エスパー募集中か?
0057デフォルトの名無しさん2015/05/29(金) 14:03:23.10ID:6sq7SX0R
>>56 list_car() list_cdr() も欲しいねw
0058512015/05/29(金) 14:07:43.16ID:UV9YC1hI
もうしわけない

void *list_car(void *obj)
{
enum gc_type type = gc_type(obj);

if (type == GC_TYPE_NULL) {
return NULL;
} else if (type == GC_TYPE_LIST) {
return ((struct list *)list)->car;
} else {
fprintf(stderr, "ERROR: TYPE\n");
abort();
}
}

void *list_cdr(void *obj)
{
enum gc_type type = gc_type(obj);

if (type == GC_TYPE_NULL) {
return NULL;
} else if (type == GC_TYPE_LIST) {
return ((struct list *)list)->cdr;
} else {
fprintf(stderr, "ERROR: TYPE\n");
abort();
}
}
0059512015/05/29(金) 14:08:17.84ID:UV9YC1hI
void *gc_update(void **place, void *obj)
{
if (place == NULL) {
abort();
}
gc_incref(obj);
gc_decref(*place);
return *place = obj;
}
0060512015/05/29(金) 14:16:01.63ID:UV9YC1hI
>>55
意味は分ったかもしれない
0061512015/05/29(金) 15:37:20.35ID:UV9YC1hI
decrefのカウントが0になってもフリーリストに行かない関数があればカウントが0のオブジェクトを返せそう?

return なにか(void *);
0062デフォルトの名無しさん2015/05/29(金) 15:39:53.38ID:cfB2m1BQ
台形則を使って2重積分の計算をするプログラムを作ってるんだが、分かる人教えてクレメンス

関数はexp(x + y)で範囲はxもyも0から1ですね…
0063デフォルトの名無しさん2015/05/29(金) 16:54:11.41ID:8st5hivm
>>61
gc_decref(*place); で car の内容のリファレンスカウンタが減算されるようになっているのか 。

p を pop() のリターン値として返すなら、pにコピーした時点で「移譲」だろうから、
p = list_car() の後で car に NULL を入れてしまうのが良いんじゃないか?

ところで…
pop() の戻りは list なのか。car の内容は object のような気がするが void* じゃないのか。
0064デフォルトの名無しさん2015/05/29(金) 17:48:56.38ID:hTQPDRSd
>>62
https://www.wolframalpha.com/input/?i=integrate+exp%28x%2By%29+dx+dy%2C+x%3D0..1%2C+y%3D0..1

http://ideone.com/tjq3jd

なんか答えが違うんだよなあ?
0065デフォルトの名無しさん2015/05/29(金) 17:54:35.44ID:hTQPDRSd
http://www.wolframalpha.com/input/?i=Integrate%5BIntegrate%5Bexp%28x+%2B+y%29%2C+%7Bx%2C+0%2C+1%7D%5D%2C+%7By%2C+0%2C+1%7D%5D

こう書いても同じか
0066デフォルトの名無しさん2015/05/29(金) 18:07:32.85ID:6sq7SX0R
参照カウンタ式のGCとリスト構造… 循環参照とか大丈夫なのかね
ttp://d.hatena.ne.jp/moriyoshi/20080528/1211955227
0067512015/05/29(金) 18:09:45.20ID:UV9YC1hI
>>63
void *移譲(void **場所)
{
void *オブジェクト = NULL;

if (場所 == NULL){
えらー
}
オブジェクト = *場所;
*場所 = NULL;
if (オブジェクト == NULL){return NULL;}
オブジェクト->カウンタ -= 1; /* 0でも何もしない */
return オブジェクト;
}

これどーですか?
0068512015/05/29(金) 18:11:21.80ID:UV9YC1hI
>>66
プログラマ(自分)が意識的に回避
0069デフォルトの名無しさん2015/05/29(金) 18:11:23.33ID:cfB2m1BQ
>>64
>>65
おおサンキュ

一応手元ではxの積分とyの積分を別々に考える(y方向積分時にx積分の関数を呼び出す)方法で解決はしたが…
まぁでも方向性は同じなはず^^
0070デフォルトの名無しさん2015/05/29(金) 18:16:19.75ID:8st5hivm
>>66
他にGCモジュールがあると考えたいところ。perl のように割り切るとか。
まあ、循環参照はだめよって制限付きで俺もよくつかうがな。
0071512015/05/29(金) 18:30:42.84ID:UV9YC1hI
>>70
スルーしないで下さいよ
0072デフォルトの名無しさん2015/05/29(金) 18:32:16.72ID:8st5hivm
>>66
> オブジェクト->カウンタ -= 1; /* 0でも何もしない */
はいらないような。
カウンタ0の物がふらふらしているのはどうかと思うんだが。
(Multi Threadに対応するときにいろいろいやなことになったりしそう)
0073デフォルトの名無しさん2015/05/29(金) 18:34:53.91ID:8st5hivm
>>71
単にロードしてなかっただけ。
専ブラ使えなくなったんで面倒なんだよ。
0074512015/05/29(金) 18:46:16.27ID:UV9YC1hI
>>72
update(新しい場所,移譲(古い場所));

みたいな感じですぐにupdateの第二引数として利用することを想定しています

これなら問題ないと思ったのですが

>>73
これは失礼しました
0075522015/05/29(金) 18:53:56.18ID:7AW8/kfN
移譲という言葉で混乱させたようで済まない

>>74
move(新しい場所, 古い場所) を用意したら?
用途は 古い場所にあるobj を 新しい場所に移したうえで 「古い場所」そのものも GCで整理
0076512015/05/29(金) 19:33:06.21ID:UV9YC1hI
>>75
もっともなのですがそれだとpopを実装できないのです
0077デフォルトの名無しさん2015/05/29(金) 20:01:20.59ID:+1oUtA3O
1000000以下のスミス数を求めるプログラム…実行時間47秒ってウンチ
0078デフォルトの名無しさん2015/05/29(金) 21:37:50.92ID:O1LEtnxT
>>64>>65
x * yじゃなくてx + yだね
それとy2の計算が間違ってたのでうpしといた
シンプソン法でも同じ結果が出たから間違いないはず

http://ideone.com/EQJ4AP
0079デフォルトの名無しさん2015/05/30(土) 13:57:58.63ID:nOufQzbT
>>77
24秒 セレロン
0080デフォルトの名無しさん2015/05/31(日) 05:14:20.17ID:yKjUvmXa
文字列を使う場合はchar[]型とstring型のどっちを使っていくのが賢いと思いますか
0081デフォルトの名無しさん2015/05/31(日) 08:09:17.66ID:lLGn4l2b
C言語にstring型なんてないだろ
あと、char[]型ってなんだよ
0082デフォルトの名無しさん2015/05/31(日) 15:00:25.43ID:9ldLUKuR
C++11だとinline関数のアドレスは取得出来るけど、C99でアドレスを取得しようとしたら
エラーになりました
これって普通なんですか?gcc4.9.2です
0083デフォルトの名無しさん2015/05/31(日) 16:11:29.11ID:456RRL4M
配列の質問です


const int N =100;
double* K = new double[2 * N];

for (int n = 0; n < N; n++){
K[2 * n] = -2
K[2 * n + 1] = 1
}

Kは2行N列の配列?下のfor文でどのように数値を格納しているのかわかりません、教えてください
0084デフォルトの名無しさん2015/05/31(日) 16:15:59.59ID:J91fllt7
添え字が
偶数 (0,2,4,8, ...) の時に -2
奇数 (1,3,5,7, ...) の時に 1
0085デフォルトの名無しさん2015/05/31(日) 16:25:35.08ID:456RRL4M
>>84
ありがとうございます
Kの中身は具体的にどうなるんですか?最初の法だけでも教えてください…
0086デフォルトの名無しさん2015/05/31(日) 16:26:44.42ID:J91fllt7
K[0] =-2
K[1] = 1
K[2] = -2
K[3] = 1
:
:
0087デフォルトの名無しさん2015/05/31(日) 16:30:32.88ID:456RRL4M
>>86
じゃあKは2*N行1列の配列ってことですね、勘違いしてました
ありがとうございました
0088デフォルトの名無しさん2015/05/31(日) 17:23:52.40ID:JzM7CxZP
行とか列とかない
メモリが確保されて
そこにデータが書き込まれただけ
0089デフォルトの名無しさん2015/06/01(月) 20:55:30.09ID:60WsLIt6
int main(void){
....
}じゃなくて

int (*main)(void){
....
}
といった書式で関数ポインタ定数を定義することが
できますか?
0090デフォルトの名無しさん2015/06/01(月) 21:49:19.63ID:rd0Fn6X3
main 関数でソレをやりたいのか
関数のポインタを受ける変数を用意してそれに関数のポインターを代入して呼び出すことをしたいのか

int (*funcptr)(char*) = atoi;
funcptr("1"); /* atoi("1"); と同じ */
0091デフォルトの名無しさん2015/06/01(月) 22:39:06.44ID:CikCK20O
>>89
そもそも何がしたい?
0092デフォルトの名無しさん2015/06/01(月) 22:39:37.29ID:60WsLIt6
typedef int (*hoge)(void);

int Hoge(void){
.....
}

hoge h=&Hoge;

を一行で

int (*h)(void){
....
}
とするととコンパイルエラー
になるものなのでしょうか?
0093デフォルトの名無しさん2015/06/01(月) 22:40:50.53ID:+exp5V/e
>>90
>といった書式で関数ポインタ定数を定義することが
>できますか?
という問いに対して適切に答えなよ。
0094デフォルトの名無しさん2015/06/01(月) 22:44:07.94ID:CikCK20O
>>92
そんなことはコンパイラ聞け
0095デフォルトの名無しさん2015/06/01(月) 22:44:43.22ID:60WsLIt6
エラーにならないコンパイラはないのでしょうか?
0096デフォルトの名無しさん2015/06/01(月) 22:47:11.26ID:CikCK20O
>>95
無い事を証明する事は不可能
0097デフォルトの名無しさん2015/06/01(月) 22:48:09.70ID:rd0Fn6X3
>>93
質問の意図が見えなかった
が >>92 で見えた

>>95
文法的にそういうもんだからあきらメロン
0098デフォルトの名無しさん2015/06/01(月) 22:48:28.00ID:60WsLIt6
int (*h)(void){
....
}

じゃなくて

int (*h)(void){
....
};

としなければなりませんね 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0099デフォルトの名無しさん2015/06/01(月) 22:55:27.29ID:vGbHt5ax
>>92
仮にそう定義できたとして、使う時は
int n = h();
なので、

int n = hoge();
と変わらんがな。
0100デフォルトの名無しさん2015/06/02(火) 00:10:34.87ID:qU33NizW
h=&fork;
とかできるんじゃ?
0101デフォルトの名無しさん2015/06/02(火) 01:37:37.30ID:33LBbjfE
>>89
int main() { ... }
という定義だけで、すでに main() は関数ポインタの定数になれる
http://codepad.org/dxZDelmk
0102デフォルトの名無しさん2015/06/02(火) 12:52:42.05ID:qU33NizW
int (*h)(void){
....
}=main;

を通さなければならなくなってしまう
0103デフォルトの名無しさん2015/06/02(火) 20:20:09.91ID:QnN/H06v
質問です。
PLACE-XYという座標の位置を表すメッセージを送ることによってサーバーとクライアントの通信を行いたいと思ってます。
そこでPLACE-XYのXYに座標の数字をいれる関数と受け取ったときのPLACE-XYの中から数字を読み取る関数を作りたいのですがどう扱ったら良いのか思い付きません。アドバイスがあればほしいです。
0104デフォルトの名無しさん2015/06/02(火) 20:22:26.55ID:zkt06s+i
とりあえず送受信するデータの仕様を決めようか
0105デフォルトの名無しさん2015/06/02(火) 20:41:29.63ID:QnN/H06v
データの仕様?どう言うことを書けば良いのかわからない素人ですがソケット通信でchar型の文字列をやり取りしたいです
0106デフォルトの名無しさん2015/06/02(火) 21:09:19.60ID:nAzzGm8u
snprintf(buf, sizeof buf, "place-%d%d",x,y);
0107デフォルトの名無しさん2015/06/02(火) 21:25:23.71ID:uyxZ0XqT
俺俺プロトコルなら、書きやすいようにやりとりすれば?
0108デフォルトの名無しさん2015/06/02(火) 21:43:49.77ID:QnN/H06v
>>106
ありがとうございます
そのような関数があるのを勉強不足で知りませんでした
0109デフォルトの名無しさん2015/06/02(火) 22:11:06.68ID:Niuehz0N
>>106
それだと、x=1, y=23 と x=12, y=3 の区別がつかんぞ
0110デフォルトの名無しさん2015/06/02(火) 22:25:31.71ID:3gihuyeN
固定長にすればええ
0111デフォルトの名無しさん2015/06/02(火) 23:36:57.15ID:nAzzGm8u
>>110
知らんがな
PLACE-XYと言ってるんだから一桁なんだろ。
0112デフォルトの名無しさん2015/06/03(水) 00:47:19.72ID:yWNxAD6Q
だからわしが最初に仕様を決めろと言うたんや
0113デフォルトの名無しさん2015/06/03(水) 06:57:11.11ID:NXHMQekm
そのくらいの応用力はあるだろ
0114デフォルトの名無しさん2015/06/03(水) 13:17:17.20ID:0YkGcL3D
初 コメです よろしくお願いします。
2ch初です。
皆さんにお聞きしたいことがあります
0115デフォルトの名無しさん2015/06/03(水) 13:18:33.35ID:beedRIsP
>>114
ラウンジで登録は済まされましたか?
0116デフォルトの名無しさん2015/06/03(水) 13:38:45.31ID:yWNxAD6Q
>>114
10年ROMってろ
0117デフォルトの名無しさん2015/06/04(木) 09:45:31.05ID:xZqg6T5q
関数?引数?について質問です
Aの関数で乱数を表示したいのですが、その乱数の範囲をBから持ってきたいとき、どう書けばいいのでしょうか・・・・・?

一応現在はこんな感じで詰まってます
int A(int x, int y)
{
int a;
srand(time(0));
a= rand() % x,y;
printf("%d\n", a);
}
int B(){
int x = 10;
int y = 50;
}


最近C言語をかじり始めたので右も左も全く分からないので
出来るだけ簡単に教えてもらえたらと思います
後で来たら関数と引数についても教えてもらえたらうれしいです
今使ってる本(Cの絵本)、わかりにくくて・・・・・
0118デフォルトの名無しさん2015/06/04(木) 10:29:04.62ID:5RyB+4Qy
質問失礼します。
+ - * / % == != <= >= < > を解釈できる四則演算プログラムを作ろうと思っています。
(文字列を式として評価する関数を書きたいという意味です。evalのようなものです。)
参考になるサイトや検索語句を教えていただけないでしょうか?
よろしくお願いします。
0119デフォルトの名無しさん2015/06/04(木) 11:07:17.19ID:cR6kwSut
構文解析、再帰下降パーサ
0120デフォルトの名無しさん2015/06/04(木) 11:25:30.54ID:9A+TTI8r
>>117
■関数の書き方
戻り値の型 関数名(仮引数の型 仮引数名)
{
 処理
}

■関数の使い方
変数の型 変数名 = 関数名(実引数の値);
0121デフォルトの名無しさん2015/06/04(木) 11:48:35.24ID:7ARVbyZw
>>117
ポインタ使う
int A(){
int x,y;
B(&x,&y);
return 0;
}
void B(int *x,int *y){
*x=10;
*y=50;
return;
}
01221182015/06/04(木) 14:47:20.52ID:5RyB+4Qy
>>119
ありがとうございます。
0123デフォルトの名無しさん2015/06/05(金) 16:34:11.30ID:d3aFH/Fh
古いPGでWinMainをこんな風に書いてるソースがあるんだけど、
これってどういう書式なんでしょう?

int PASCAL WinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow)
HINSTANCE hInstance;
HINSTANCE hPrevInstance;
LPSTR lpCmdLine;
int nCmdShow;
{
(以下略)
0124デフォルトの名無しさん2015/06/05(金) 17:07:36.35ID:rSavfMTp
K&R風
(非ANSI)
(旧式)
(古い書き方)
0125デフォルトの名無しさん2015/06/05(金) 17:36:03.01ID:2LDBwz+W
> 古いPG
古いプログラムのことか…
一瞬古いプログラマのことかと思った。
0126デフォルトの名無しさん2015/06/05(金) 17:42:02.11ID:2LDBwz+W
あらためて確認してみたら、
gcc -ansi -pedantic -Wall t.c でも、
VS2013 で拡張子 .c だといずれも普通に通るんだな。
だからなんだってきもするが再認識したよ。
0127デフォルトの名無しさん2015/06/05(金) 17:42:41.75ID:azLqt+Ly
製造工程をPGといったりするな
0128デフォルトの名無しさん2015/06/05(金) 18:22:06.17ID:5S7ZX/zN
C言語で金儲けできる?

需要あるなら今度の夏休みにでも学んでみようと思うんだが
0129デフォルトの名無しさん2015/06/05(金) 18:22:44.81ID:5S7ZX/zN
C言語で金儲けできる?

需要あるなら今度の夏休みにでも学んでみようと思うんだが
0130デフォルトの名無しさん2015/06/05(金) 18:23:14.79ID:5S7ZX/zN
C言語で金儲けできる?

需要あるなら今度の夏休みにでも学んでみようと思うんだが
0131デフォルトの名無しさん2015/06/05(金) 18:24:56.87ID:5S7ZX/zN
↑すまん書きすぎた

使い方がいまいちでな
0132デフォルトの名無しさん2015/06/05(金) 18:25:12.20ID:5S7ZX/zN
↑すまん書きすぎた

使い方がいまいちでな
0133デフォルトの名無しさん2015/06/05(金) 18:57:54.51ID:d3aFH/Fh
>>124さん、>>126さんありがとう
元々VS6.0で使われてたっぽいんですが、そのまま2010に上げたら通りませんでした
.c単体なら通ったのかな
0134デフォルトの名無しさん2015/06/05(金) 19:04:47.60ID:S5X6xzp7
>>126
-ansi -pedantic -Wall -Wextra -Werror は?
0135デフォルトの名無しさん2015/06/05(金) 19:05:08.95ID:eCq9CBBu
C言語で金儲けできる?

需要あるなら今度の夏休みにでも学んでみようと思うんだが
0136デフォルトの名無しさん2015/06/05(金) 19:05:17.48ID:BQj/liI5
C言語で金儲けできる?

需要あるなら今度の夏休みにでも学んでみようと思うんだが
0137デフォルトの名無しさん2015/06/05(金) 19:13:37.40ID:sjgHnZg8
ない
0138デフォルトの名無しさん2015/06/05(金) 22:54:41.28ID:94pg9g/v
需要を生んでるアンドロイドのカーネルはC言語なのに
皮肉な話
0139デフォルトの名無しさん2015/06/05(金) 23:04:24.61ID:zIdlcfi4
>>135
>C言語で金儲けできる?
>
>需要あるなら今度の夏休みにでも学んでみようと思うんだが

根本的な疑問なんだが、既に論理レベルで無理があるよ。
・「今度の夏休みにでも学んでみよう」で間に合うくらい、のんびりした情勢
・実情が判らない程、知名度が低い
・金儲けできる
これが同時に成り立つとでも?
0140デフォルトの名無しさん2015/06/05(金) 23:37:00.11ID:VYlCQBeJ
>>135
夏休みじゃ間に合わないなら、それからもコツコツ学生の本分をない程度にがんばればいいだけの話だから問題ないんだか
0141デフォルトの名無しさん2015/06/05(金) 23:37:07.73ID:5Ys1lSP5
>>135
夏休みじゃ間に合わないなら、それからもコツコツ学生の本分をない程度にがんばればいいだけの話だから問題ないんだか
0142デフォルトの名無しさん2015/06/06(土) 00:36:04.07ID:aeT9N6Fg
てか、今さらひとつの環境で開発できることがなんになると。
何でも出来て初めて使い物になるんじゃねーの。

そう言う視点では C を十分に使えればかなり応用は利くとは思うが。
0143デフォルトの名無しさん2015/06/06(土) 00:55:24.80ID:M49TyJvh
夏休みもオナニーしかしてなくて中退したQZのセリフがこれよ
0144デフォルトの名無しさん2015/06/06(土) 01:12:07.52ID:DXSt7rl7
((void(*)(void*))NULL)(NULL);
って合法?
0145デフォルトの名無しさん2015/06/06(土) 01:24:35.00ID:M49TyJvh
QZのオナニーは違法
0146デフォルトの名無しさん2015/06/08(月) 10:08:02.98ID:PtEDnCef
>>134
-Werror はどーでもいいが。
何か問題あったのか?
0147デフォルトの名無しさん2015/06/08(月) 11:41:45.06ID:BYDNcOl5
QZ今更の亀自演は滑稽
0148512015/06/08(月) 12:51:54.90ID:GgbWgDDx
>>146
extraはさらに厳しいよ
0149デフォルトの名無しさん2015/06/08(月) 12:52:26.03ID:BYDNcOl5
QZ脳の処理能力は低いよ
0150デフォルトの名無しさん2015/06/08(月) 15:10:33.41ID:PtEDnCef
>>148
-Wextra のことはわかってるさ。
-Werror は warning を error 扱いにするってだけ。
だから、実際に自分でやってみろよと。(それであえて過去形で書いた)
で、なんか問題あったのかと。

もし問題があったら、エラーメッセージを張ってくれ。
0151デフォルトの名無しさん2015/06/12(金) 12:01:19.29ID:2Km67azR
最近勉強を始めて、今は苦Cを終わった位なのですが、

複数部署から来る共通フォームのエクセルファイルを自動的に合成し、合成後のエクセルファイルには
特定のセルに当日の日付が自動入力されたうえで当日の日付を付加した件名で
特定のメールアドレスへ自動添付・送信する

といった事ができるアプリはどれくらいのレベルになれば作ることができますか?
0152デフォルトの名無しさん2015/06/12(金) 12:12:23.95ID:c263dHgV
ちなみに、合成というのは
例えば総務課からきたエクセルファイルはセルA1が3、資材課からのものはA1が5だとしたら
合成後のA1は8になるといったような、そういう意味です。
0153デフォルトの名無しさん2015/06/12(金) 14:19:17.92ID:L1K91O/r
C言語だけじゃなくてメールサーバーも必要になってくる
合成自体は簡単にできる
0154デフォルトの名無しさん2015/06/12(金) 15:03:56.83ID:ld51Zz1O
>151
何が必要か思い浮かべられ、必要な情報を探す手段に見当がつくレベル。
0155デフォルトの名無しさん2015/06/12(金) 15:04:32.67ID:ld51Zz1O
メール送信は外部コマンドでやった方が楽。
0156デフォルトの名無しさん2015/06/12(金) 23:55:31.46ID:kv4tRjkv
>>153
会社みたいだからメールサーバーはすでにあるんじゃね?

>>155
俺なら普通に CDO.Message かな
0157デフォルトの名無しさん2015/06/13(土) 00:24:04.91ID:FdcJfrL9
言語なんてしょせんシステム設計・構築の一部分にすぎない
0158デフォルトの名無しさん2015/06/13(土) 00:51:09.93ID:qA+DQ73k
C言語の基本制御構造って

�@繰り返し
�A順次実行
�B条件分岐

の3つですが、それ以外に一つ加えるとしたら何ですか?
スキップ(gotoなど)は無しとします。

学校の課題です。
こういう哲学的な課題多いんですよねうちの大学…
いやになる…創造力高めるにはいいかもしれませんが…

何か面白いアイディアありますか?
0159デフォルトの名無しさん2015/06/13(土) 00:58:37.90ID:9xUE/oHF
関数の呼び出しは?
0160デフォルトの名無しさん2015/06/13(土) 01:04:02.46ID:54ObALVU
構造化言語と習ったんじゃないの?
なら、自動的にその3構造と関数でしょ。
0161デフォルトの名無しさん2015/06/13(土) 09:49:59.74ID:C2f6Oj6w
「come from 制御構文」でググれ
0162デフォルトの名無しさん2015/06/13(土) 10:00:08.21ID:eNaPfsID
構造化プログラミングかな?????
0163デフォルトの名無しさん2015/06/13(土) 11:31:02.92ID:FdcJfrL9
>何か面白いアイディアありますか?
0164デフォルトの名無しさん2015/06/13(土) 12:04:35.06ID:oK+WKOcZ
>158
複数言語勉強して、実装されてない機能を何とか再現してみる。
0165デフォルトの名無しさん2015/06/13(土) 12:37:16.36ID:FQeTzdta
>>158
コルーチン かな
0166デフォルトの名無しさん2015/06/13(土) 13:48:16.23ID:sRRTm1aY
>>158
アイデアじゃないんだけど、俺、昔習った時から、その3つの要素に疑問があるんだよねー。

反復って、分岐と順次の組み合わせじゃね?
「ダイクストラさん?(たぷたぷ)」的な。
0167デフォルトの名無しさん2015/06/13(土) 14:42:15.59ID:C2f6Oj6w
分岐が反復と順次の組み合わせ、だろ?
構造化プログラミングの場合、分岐で後ろには戻れん。
0168デフォルトの名無しさん2015/06/13(土) 15:22:18.42ID:FxAuvF7G
>>166
分岐って要するに if 文だよ
if 文だけでループ組める?
0169デフォルトの名無しさん2015/06/13(土) 15:31:24.01ID:fEOfnJ82
if 〜 goto 〜
0170デフォルトの名無しさん2015/06/13(土) 15:42:42.44ID:FK3HwmC5
同じ処理を並べればええ
0171デフォルトの名無しさん2015/06/14(日) 10:18:10.05ID:ocyd5wvL
>>158
再帰呼び出し
0172デフォルトの名無しさん2015/06/14(日) 15:02:01.64ID:HbVleRJY
>>169
if 文だけ (= goto 文は使っちゃダメ) って理解できてないのか?
0173デフォルトの名無しさん2015/06/14(日) 15:58:32.79ID:ks9BlnmQ
>>158
例外処理
0174デフォルトの名無しさん2015/06/14(日) 16:20:28.33ID:HETOIAim
Cならポインタから逃げられない。
0175デフォルトの名無しさん2015/06/14(日) 20:53:31.76ID:Gyw+v9nI
すみません質問させてください。下のコードは入門書に書いてあるものなのですが、
「total」の存在意義がわかりません。totalって言いたいだけなのでしょうか?

#include <stdio.h>

int main(void)
{
int i, total = 0

printf(“これはfor文のテストです。\n”);

for(i = 0; i < 10; i++) {
total += i;
printf(“現在のiは%dでtotalは%dです。\n”, i, total);
}
printf(“totalは%dです。\n”, total);
return 0;
}
0176片山博文MZ ◆T6xkBnTXz7B0 2015/06/14(日) 20:56:47.08ID:9/1vIhJD
>>175
totalは0から9までの和になる。それだけ。
0177デフォルトの名無しさん2015/06/14(日) 21:04:02.65ID:Gyw+v9nI
>>176
鈍器で殴られたような衝撃!
ご回答ありがとうございました。
01781752015/06/14(日) 21:22:03.17ID:Gyw+v9nI
すみませんもうひとつ質問を忘れておりました。>>175のコードにある

int i, total = 0

これは、変数「i」変数「total」の宣言と変数「total」の初期化をしたものと考えていいでしょうか?
別の入門書で、変数の宣言は一行にひとつが普通である、と読んだ気がしたので気になっております。
0179デフォルトの名無しさん2015/06/14(日) 21:34:39.65ID:HbVleRJY
>>178
> 別の入門書で、変数の宣言は一行にひとつが普通である

そう、にちゃんのように行数制限があるとかでない限り
int i;
int total = 0;
って書いた方がいい
01801752015/06/14(日) 21:39:12.73ID:Gyw+v9nI
ご回答ありがとうございます。
モヤモヤしていた気持ちがすっきりしました。
0181デフォルトの名無しさん2015/06/14(日) 21:39:35.24ID:M+qlsClk
>>178
そういう宣言は書籍でしかしない。
01821752015/06/14(日) 21:52:59.77ID:Gyw+v9nI
なるほど。>>179さんが言われている紙面の都合なのでしょうかね。
0183デフォルトの名無しさん2015/06/15(月) 00:39:41.77ID:syb1bV3z
モヤモヤさまぁーず面白い
0184デフォルトの名無しさん2015/06/16(火) 19:23:30.15ID:HVniWzEy
疑問に思うんですが、何でバグを徹夜するまで見つけるのは大変なんでしょうか?
だってコンパイルエラーの場合、ちゃんと間違ってる箇所が表示されますよね。
C言語の場合組み込みで単純だからなおさらデバッグは簡単だと思います。
プログラマになったことないんでわかりませんが、何故大変なのか教えて下さい。

作ることが難しいのは分かります、でも何故デバッグが大変なのか?
0185デフォルトの名無しさん2015/06/16(火) 19:32:04.86ID:da/P1e7k
>>181
for(int i = 0;....)
という書き方を許している現場ならともかく、
一時的な変数と何かの重要な結果を保持するための
変数は改行して宣言するだろう
0186デフォルトの名無しさん2015/06/16(火) 20:05:44.08ID:tF6rLPWO
>>184
難しいバグは大抵、
1. タイミング系のバグ
2. 組み合わせ系のバグ
のどちらか

タイミング系としてよく引き合いに出される例としては、同一の口座から A/B 二人が同時に預金を引き出したらどうなるかって奴
http://www.ncad.co.jp/~arai/pro3seminar/java/first_java/3term/unit13/4period.html
まあ、こんなのは初歩の初歩で、実際はこれに加えて機器の故障とか、ネットワークエラーとかが絡んだりして想定外の事態になったりする
タイミング系はなかなか再現しなかったりするのでホントに地獄を見る

組み合わせ系って言うのは、色々なパターンのうち特定の場合だけおかしくなるって奴
こっちは条件さえわかれば再現も容易だし対策も大抵楽
ただ、ガチな奴はパターンの数が半端ないのでテストはひたすら体力勝負だったりする
有名どころではこんな奴とか
http://www.publickey1.jp/blog/12/_1040_1.html

どっちにしろお仕事にするには結構地味でキツいからよほど好きでないと勧められない
0187デフォルトの名無しさん2015/06/16(火) 20:22:27.90ID:HVniWzEy
>>186
それは排他的ロック機能を実装してればいいだけでは?
0188デフォルトの名無しさん2015/06/16(火) 20:31:39.75ID:beEOQH6x
仕事だと数万行〜数十万行は普通にあるからな
0189デフォルトの名無しさん2015/06/16(火) 20:41:39.35ID:HVniWzEy
javaみたいにsynchronizedでロックすればタイミング問題はでてきようが無いのでは?
0190デフォルトの名無しさん2015/06/16(火) 21:04:59.86ID:tF6rLPWO
>>187
もちろんそうだけど、複数の要因が絡んでくると排他とかタイマーとかを適切に掛けていくのは結構大変
前のレスにもちらっと書いたけどエラー処理とかが鬼門で、排他を解除し忘れたり、逆にリトライするから解除しちゃダメなのに解除しちゃったりとかね

普通の会社のソフト開発って別に難しいことはやってないのよ
規模が小さきゃホントに楽勝
でも、でかくなると地獄ですよ
マジで人間の管理できる範囲を越えてると思うことがよくある
0191デフォルトの名無しさん2015/06/16(火) 22:13:38.88ID:HVniWzEy
>>190
分かりません。

Aが使ってるときはB,C,D.......n
Bが使ってるときはA,C,D.......n

という風に全部の排他条件かけばいいだけじゃないですか?

つまりn^2通りの条件をかけば解除し忘れなんて起きないと思います。
0192デフォルトの名無しさん2015/06/16(火) 22:24:42.38ID:O49G9Oy4
まあ、人間が作るからねー
他人が作った何万行もあるソースのデバッグとか想像できないかな
0193デフォルトの名無しさん2015/06/16(火) 22:29:41.58ID:HVniWzEy
ビルトインで排他制御するような関数ってないんですか?
処理を書かなくてもいいみたいな。ダメなんですか?
0194デフォルトの名無しさん2015/06/16(火) 22:35:38.75ID:HVniWzEy
>>186
色々なパターンの内特定…

例えばポケモンで特定の操作したらセレクトBセレクトBだっけ?
マスターボールが増えるみたいな裏ワザありましたけど

特定の操作でバグが出るって全部調べたら無限なんじゃないですか?
どうしてるんでしょうか?
例えばAボタン2回押して、Cボタン3回押したらそのゲームのプログラムが
全て消えるみたいなバグもあり得るわけじゃないですか?
デバッガはそういった組み合わせも調べるんでしょうか?
無限にあると思いますが…
0195デフォルトの名無しさん2015/06/16(火) 22:58:01.13ID:O49G9Oy4
>>194
試験は想定されるものはするよ
例外はそれなりの処理に落とす
ここに人的要因が入ったりするね
0196デフォルトの名無しさん2015/06/16(火) 23:25:46.06ID:GRyCax2n
>>191
> Aが使ってるときはB,C,D.......n
> Bが使ってるときはA,C,D.......n
複数の資源の排他は同時には掛けられない(掛けられる環境もあるけど)ので、うまく掛けないとデッドロックするよ

>>194
>>186 の下側のリンク読んでないでしょ?
パターンが爆発してる場合のサボり方が書いてある
0197デフォルトの名無しさん2015/06/17(水) 01:42:30.79ID:AEj3cofu
プロセス管理や排他的制御、割り込みがどうとかは
Linuxによる並行プログラミング入門
http://www.kyoritsu-pub.co.jp/bookdetail/9784320123809
などで体験できる。

そもそもOSレスでそれらをどう実装するのかというのはこの本で体験できる
12ステップで作る 組込みOS自作入門
http://kozos.jp/books/makeos/

やってみないと何が大変かもいまいちピンとこないしね
0198デフォルトの名無しさん2015/06/17(水) 04:31:36.29ID:tIKZNiHl
>>189
結局メソッド synchronized は意味がないとか‥
ダミーメンバに synchronized をかけてお茶をにごしたりとか‥
0199デフォルトの名無しさん2015/06/17(水) 09:26:59.12ID:pine8kAl
>ID:HVniWzEy
バグを100%無くすことは無理ってのが一般的な認識。

ゲームのデバックは開発者視点で想定されるプレーを確認するほか
専門の会社にお願いして色々試してもらうこともある。
同じソフトを1年以上デバックし続ける人も居たとか。
0200デフォルトの名無しさん2015/06/17(水) 12:59:48.95ID:LYmWlU65
つーか、スレ違いだがね。
0201デフォルトの名無しさん2015/06/17(水) 20:10:32.47ID:YyzkFynf
デバッ「ク」言うなw
0202デフォルトの名無しさん2015/06/17(水) 21:30:45.54ID:LUerVH9f
モニターと手元をビデオ撮影しながら
ひたすらゲームを進行するデバッガー
0203デフォルトの名無しさん2015/06/17(水) 21:58:38.16ID:CyVJ8sZt
じゃ、ディバッグ
0204デフォルトの名無しさん2015/06/18(木) 00:16:10.01ID:/BnSA0cx
>>203
正しくはデバグ。
0205デフォルトの名無しさん2015/06/18(木) 07:44:44.01ID:VfvGCcW6
虫取り
0206マ○コデラックス2015/06/18(木) 08:14:41.43ID:/h/hM0No
正しくはテスター
0207デフォルトの名無しさん2015/06/18(木) 20:26:49.17ID:dz4KgSgw
猿楽庁みたいなもんか
サーガで評判落としたあとは順調なんかね
0208デフォルトの名無しさん2015/06/19(金) 21:34:17.32ID:utDPh+CX
C言語って機械語に親和性があって一番高速な言語なのに何故時代遅れなんですか?
例えばjavaだとJVMを挟むため遅くなるんですよね?
何故Webプログラミングはjavaじゃないの?javaのapiが豊富って言うんであれば
cもjavaと同じapi作ればいいだけでは?

長年の疑問です。
0209デフォルトの名無しさん2015/06/19(金) 21:35:49.01ID:utDPh+CX
何故WebプログラミングはCじゃないの?
って書こうとしました。
0210デフォルトの名無しさん2015/06/19(金) 21:36:16.60ID:utDPh+CX
ライブラリが無いなら作ればいいだけ
インクルードすればいいだけですよね?
何故それでもjavaの方が強いんですか?
0211デフォルトの名無しさん2015/06/19(金) 21:45:05.62ID:tQGft1o9
別にcで拵えても構いませんが。
今更エスペランで論文書く奴がいないのと同じことでしょうね。
0212デフォルトの名無しさん2015/06/19(金) 21:45:57.46ID:utDPh+CX
>>211
でも何でCがこんなに影になってるんですか?
Cの方が早いからネットだってCですればやはいやずです。
0213デフォルトの名無しさん2015/06/19(金) 22:01:08.44ID:6P1dVElz
>>212
費用対効果
0214デフォルトの名無しさん2015/06/19(金) 22:28:09.85ID:utDPh+CX
>>213
どういうこと?
0215デフォルトの名無しさん2015/06/19(金) 22:47:25.39ID:XV9e/l6B
>>214
最底辺のWebプログラマは単価が安い。
従ってCでプログラム作れる能力が無い連中がやっている。
0216デフォルトの名無しさん2015/06/19(金) 22:54:45.96ID:gg5jKUmS
Cにライブラリや文法を追加したのがJava
JavaもCみたいなもん
0217デフォルトの名無しさん2015/06/19(金) 23:06:56.12ID:6P1dVElz
>>214
すべてに最速が必要ではないでしょ
必要十分であればよい
であれば開発速度やコストいい方選ぶ、と
0218デフォルトの名無しさん2015/06/19(金) 23:20:28.41ID:IwG5+EZ4
なんか定期的にこういう人来るよね
ひょっとして同一人物の発作かなにかなのか?
0219デフォルトの名無しさん2015/06/19(金) 23:31:42.53ID:utDPh+CX
>>215
Webプログラマ、この時点で優秀な印象ですが。
>>218
すいません
C言語信者なものでして…


もう一つ質問していいですか?
何故ではC言語とjavaは組み合わせられないんでしょうか?

だってC言語はDirectX関数と組み合わせられますよね?
これってC言語コンパイラがDirectX関数をコンパイルできるからですよね?
何故javaはCと一緒にコンパイルできないんですか?

#include<stdio.h>
#include<java.io〜〜〜>ないしは
import java.io〜〜〜

こうすれば呼び出す事可能じゃないんでしょうか?
0220デフォルトの名無しさん2015/06/19(金) 23:33:22.33ID:utDPh+CX
すいませんコンパイルの意味がイマイチわかっておりません。

コンパイルってようは機械語に変換ですよね?

インタプリタ=一行ずつ実行させる、機械語に変更しなくてもいい
       C言語に変換→結局コンパイルすることになる。
コンパイル=機械語に変換

っていう理解でOKですか?
0221デフォルトの名無しさん2015/06/19(金) 23:43:30.21ID:6P1dVElz
>>219
directXが何なのか調べてきなさいよ
Cに限った話でもないのでどっかいってください
0222デフォルトの名無しさん2015/06/19(金) 23:53:55.21ID:utDPh+CX
>>221
directx関数が入ったコードをコンパイルできるのは何故ですか?
Cコンパイラがdirectx関数を機械語に変換してるからじゃないんですか?
0223デフォルトの名無しさん2015/06/20(土) 00:00:19.23ID:FniMMr/q
directxは3Dグラフィック処理をするライブラリという認識でOKですか?
0224デフォルトの名無しさん2015/06/20(土) 08:05:08.92ID:MeGCLoar
アスペ?
0225デフォルトの名無しさん2015/06/20(土) 08:17:41.58ID:MB4MRZfb
>>218
な。
0226デフォルトの名無しさん2015/06/20(土) 08:28:29.63ID:FniMMr/q
何故cコンパイラはdirectx関数を処理できるんでしょうか?
0227デフォルトの名無しさん2015/06/20(土) 09:32:40.60ID:DBid4MbY
コンパイラっていうかリンカじゃね
直接directxのソースコードコンパイルしてるわけじゃないでしょ
0228デフォルトの名無しさん2015/06/20(土) 09:35:16.93ID:buUHCe5z
COMとか関数のポインタとか 色々ラップしてるが、OS経由ドライバ任せ
0229デフォルトの名無しさん2015/06/20(土) 09:45:13.60ID:zZYO0iBz
動的にリンクしてるだけだろが
0230デフォルトの名無しさん2015/06/20(土) 09:55:33.78ID:DBid4MbY
まあでもdirectxを作った人はたぶんC言語+アセンブラで書いてるんだろうからCコンパイラで処理できるんだろうけど
0231デフォルトの名無しさん2015/06/20(土) 13:47:35.11ID:KMXAV3mj
JavaでもJavascriptでもネイティブ生成できるだろ。
0232デフォルトの名無しさん2015/06/20(土) 17:26:26.75ID:sYEsQufD
何言ってんだこの馬鹿
0233デフォルトの名無しさん2015/06/20(土) 17:53:33.40ID:5vFhCPnH
C言語の標準関数でカレントフォルダのファイル一覧を取得する関数ってある?
0234片山博文MZ ◆T6xkBnTXz7B0 2015/06/20(土) 18:01:27.86ID:RdU0NHX6
>>233
ないね。opendir
FindFirstFile
0235デフォルトの名無しさん2015/06/20(土) 19:14:16.27ID:5vFhCPnH
>234
やっぱり無いのか。
どうもありがとう。
0236デフォルトの名無しさん2015/06/20(土) 20:09:18.79ID:cnYcb5r+
>>215
WebはCで作れる必要ないんじゃないですか?
単科が安いのは分かりますが、何故Cで作れないと否定的な見方なんでしょうか?
実はWebもCで作った方が高品質で、優良企業はCでWebプログラミング作ってるんでしょうか?
0237デフォルトの名無しさん2015/06/20(土) 20:31:03.35ID:gzoCELj1
union Val
{
int ival;
float fval;
};

int foo(Val* v);
のようなライブラリがあるのですが、これの実装者は
渡されたものがint floatのどちらで格納されたかわからないのに
どうするつもりなんですかね?
0238デフォルトの名無しさん2015/06/20(土) 20:49:49.27ID:denOUvbB
>>236
誰にでも出来ることは価格競争になって、性能や品質は二の次になってしまう。
そうするとハイスペックな人から離れていく。

C/C++でサーバーサイドやってるでかいところもあるけど、全体から比べればほんの一部。
0239デフォルトの名無しさん2015/06/20(土) 21:03:36.49ID:CvmegYmq
コストだけはひたすらかかるけど
Cならではのメリットがはたらかないんじゃないか
0240デフォルトの名無しさん2015/06/20(土) 22:00:14.69ID:St40Zxbh
これってどういうことですか?
プログラム的には間違ってないはずなのですがなぜか実行できません
開発環境は「Microsoft visual studio 2010」を使ってます。
http://imgur.com/AQ5ZIQA.jpg
--------------------------------------------------------------------------
# include <stdio.h>

int main(void)
{
int suuti;
scanf("%d",suuti);
if (suuti - 10) printf("入力値は 10 ではありません。\n");
return 0;
}
0241デフォルトの名無しさん2015/06/20(土) 22:06:28.53ID:YQlfkZgo
プログラム的に間違っています
0242デフォルトの名無しさん2015/06/20(土) 22:10:29.20ID:IMO/g3og
>>240
亨くん、scanfの引数を確認するんだ
0243デフォルトの名無しさん2015/06/20(土) 22:13:30.41ID:zZYO0iBz
なんで値渡ししてるの
0244デフォルトの名無しさん2015/06/20(土) 22:28:28.37ID:cnYcb5r+
>>238
あーなるほど
でもWebプログラマなんて誰でもできるとは思えないですけどね
0245デフォルトの名無しさん2015/06/20(土) 22:50:23.57ID:cnYcb5r+
仕事のC言語より個人の趣味でやるCのほうがレベル高いなんてケースってあるんですか?
C言語=組み込みだからどうしてもプライベートでは学べないCの奥深さっていうのを仕事で
学べると思うんですが、実際組み込みプログラミングやってる人が俺のやってる事に比べたら
はるかにレベル低いなって思ったりするんでしょうか?
0246デフォルトの名無しさん2015/06/20(土) 23:00:03.94ID:YQlfkZgo
普通に有る
むしろ趣味で好きでやっている人の方がレベル高い傾向じゃないかな。

仕事で見るソースは、、もう一度入門書読んでみようか、なコードだらけで、
それを、単体テスト、結合テスト、評価による試験でバグを出しまくって
それを修正しまくって、ソースはぐちゃぐちゃだけど何故かw仕様通りに動くものを
作ってリリースするからなww
0247デフォルトの名無しさん2015/06/20(土) 23:18:32.47ID:DBid4MbY
組み込みはほとんどコードを書かない
仕様書作成と会議と試験が業務の9割
しかも検査が糞やりにくい
VisualStudioで作るGUIアプリみたいにビルドボタン一発で動作確認とかできない
画面が出ないものすらある
オシロスコープで電圧が使用通りに出てるかを確認したりしないといけない
もはやソフトウェアエンジニアと言える職業ではない
メーカーの仕事は設計と実装を完全に別物と捕らえていて
完璧な設計書が作られていることを前提に実装はただの作業員として扱う
コーディング時のクリエイティビティなんか完全にスポイルして開発を進めていく
そのくせ設計書は不備だらけで面倒臭い部分は後工程に丸投げの無責任だから
完全にモチベーションをゼロにされる
それが組み込みのC言語のプログラミングの仕事だ
0248デフォルトの名無しさん2015/06/20(土) 23:20:00.38ID:CvmegYmq
あえて難しいことを避けて避けて避けるというのも技術の内
0249デフォルトの名無しさん2015/06/21(日) 01:05:13.50ID:3VZnQzoZ
メカトロなんか、機械(力学)・電気電子回路・コーディングの3部門が、
お互いを馬鹿にして、バグのなすりつけ合い

だから、力学・電験3種・コーディングの、
3つとも出来る人は、すごい

プルアップ・プルダウン抵抗とか、
機械系と情報系では、別電源を使うとか、
リレー(PLC)、一点アースなど、
基本がわかっているソフト屋は強い


基礎入門 ブレッドボードではじめるマイコンプログラミング
2010、青木直史

PICマイコンでC言語だが、この本を読んでみて
0250デフォルトの名無しさん2015/06/21(日) 09:29:12.19ID:ZcGcKAux
電験2種とAP、ES持ちのブラック底辺のぼくが来ました
月給23万円です。
0251デフォルトの名無しさん2015/06/21(日) 09:44:57.14ID:V01ss4k7
>>244
ところが、誰でも出来るんだよ。
自社のバグの存在に発見出来ず、サーバーの停止は、善良な市民の不法行為だと客に説明し、
客に刑事告訴させ、善良な市民を逮捕させた三菱のSIer。最低だと思うだろ。

こういうSIerの使いっ走りが、大部分のWebプログラマのポジション。
0252デフォルトの名無しさん2015/06/21(日) 10:12:09.58ID:uT2pVaOW
メーカーに関わってる仕事は全部ゴミ
0253デフォルトの名無しさん2015/06/21(日) 10:39:43.69ID:bOKloAAb
と、社会のゴミが言っております。
0254デフォルトの名無しさん2015/06/21(日) 12:56:17.95ID:uT2pVaOW
本当に日本のメーカーはゴミだからな
家電は馬鹿チョンカメラと馬鹿にしていた韓国メーカーに完全敗北したし
Sonyはiphoneを作れなかった
自動車の自動運転技術でもGoogleが先行していて今後ソフトウェアの重要性が増すにつれ
日本の自動車メーカーも優位性を保てなくなるだろう
ソフトウェアの重要性を軽視して若者使い捨て技術蓄積放棄してきた結果
本当に日本のメーカーは世界競争に負けた責任を取って若者主導のベンチャーに投資ぐらいして当然だ
0255デフォルトの名無しさん2015/06/21(日) 13:33:57.21ID:ZcGcKAux
でもお前無職じゃん???
0256デフォルトの名無しさん2015/06/21(日) 13:55:45.83ID:BPdaawwb
>>254
特許を完全に無視してるよな朝鮮人って
0257デフォルトの名無しさん2015/06/21(日) 14:24:54.63ID:k0Gw61eH
韓国も朝鮮人ですか?
0258デフォルトの名無しさん2015/06/21(日) 17:41:37.15ID:mh4IeNEV
>>246
ソースはぐちゃぐちゃだけど何故か動くって、不良品に繋がる可能性高くないんですか?
電化製品の不良品って命に関わるレベルだと思うんですが…
0259デフォルトの名無しさん2015/06/21(日) 17:44:59.68ID:mh4IeNEV
でも組み込みのオシロスコープ検査ってのはプログラマーはやらないんじゃないですか?
だってプログラマはあくまでシミュレーターで実験するだけだと思うんですが…
0260デフォルトの名無しさん2015/06/21(日) 17:46:39.51ID:BziqIqe8
自分は世の中の全てを知っていると言う思い込みが強そうだw
0261デフォルトの名無しさん2015/06/21(日) 17:47:35.63ID:mh4IeNEV
不備だらけの設計でも最終的には商品になるってことは、結局誰かが縁の下の
力持ちになって相当な頭脳を発揮してるってイメージなんですが、それは誰なんでしょう?
設計を修正する設計者なのか、プログラムで設計の不備を補うプログラマなのか…
0262デフォルトの名無しさん2015/06/21(日) 18:44:29.73ID:GgfmtYLJ
設計を修正し、プログラムを修正し、抜けてる試験を回す私です。ホントニ
0263デフォルトの名無しさん2015/06/21(日) 18:51:30.89ID:XaWI7cF/
基本、人海戦術だなw
設計からプログラマから評価から、そして製品が出てからのサポート担当
0264デフォルトの名無しさん2015/06/21(日) 19:14:51.10ID:mh4IeNEV
製品が出てからサポートって
不良品の場合サポートで対応できる限界超えてるのでは?
0265デフォルトの名無しさん2015/06/21(日) 19:26:25.44ID:XaWI7cF/
いや。対応しなくちゃならない。
何十万台のリコールとか聞いたことが無いか?
それだけの台数を全てサポートし、修理するということだ。
0266デフォルトの名無しさん2015/06/21(日) 19:36:21.03ID:7nlclQFw
スレ違いなので
0267デフォルトの名無しさん2015/06/21(日) 20:28:35.04ID:5j8C2sGK
相手すると余計に暴れだすぞ
0268デフォルトの名無しさん2015/06/21(日) 20:43:20.42ID:yr9/lfvl
全ての要素が1である10×10行列の要素をある条件に従って0にし、すべての要素を足し合わせた結果を表示するc言語のプログラムがうまく動きません

入力が1,1,3,2,6のときは95
2,1,3,2,6,1,3,4,7なら94
4,1,3,2,6,2,6,3,8,1,8,2,6,2,2,3,6なら82を表示すれば正しいのですが、違った値が表示されます。
プログラムのどこが間違っているのか教えてくれませんか?

コードは下のやつです
http://codepad.org/PuM1hFdA
0269デフォルトの名無しさん2015/06/21(日) 22:01:06.92ID:mh4IeNEV
純粋に思った疑問なんですが、
明らかに実行されるはずなのに、実行されないケースってあるのかなと思いました。

printf("入口");
printf("hello world");・・・�@
printf("出口");

この�@が実行されないケースって実際のプログラミングであるんでしょうか?
こういう場合って本当どうするんでしょうか…
つまりコードとして書いてあるのに実行されないケースです。
0270デフォルトの名無しさん2015/06/21(日) 22:09:44.53ID:mh4IeNEV
例えばprintfっていう例がわるかったですね。

printf("入口");
draw("hello world");・・・�@
printf("出口");

このように実装関数の場合、明らかにdrawは実装ミスがないという根拠が
あった場合、draw自体の関数の設計は見直さない、他に原因があるんだって
いう流れになるんでしょうか?
0271デフォルトの名無しさん2015/06/21(日) 22:35:48.06ID:DaSOQbmK
>>270
drawをスタブにしてみろよ。
0272デフォルトの名無しさん2015/06/22(月) 11:20:59.81ID:U5ZZW/Pf
>270
OS、コンパイラ、ライブラリのバグ、ハードの故障。
動きをトレースして原因を絞って各担当に連絡して直してもらう。
時間がなければ回避手段が無いか検討。
それでもダメなら土下座。

イレギュラーな懸案はその都度考える。
0273デフォルトの名無しさん2015/06/22(月) 11:44:22.29ID:Jxy34/JH
まずはパラメータとdrawの仕様確認するだろ
0274デフォルトの名無しさん2015/06/22(月) 12:08:17.55ID:MaxvP/1L
>>270
ユーザーの違法行為が原因だと客に説明する。
0275デフォルトの名無しさん2015/06/22(月) 13:22:07.63ID:aymjWIxI
可能であればその draw 関数にログ出力でも追加したバージョンで実行して貰って、
・確実にその関数を呼び出していることを確認する
・呼び出されてるとして、パラメータが適切であるか確認する
・同様に内部で想定外の動作をしてないか(=バグ)を確認する

くらいのことはするかも知れない。
269 にあるように、ユーザがボケてて実は呼び出してない or 変なパラメータを入れてるってことはザラにあるし。
0276デフォルトの名無しさん2015/06/22(月) 19:03:41.37ID:SYQS3vBP
通常自分でプログラミングしてるとコンパイルエラーがだいたい100回は出るのですが
これって多いほうですか?1000行くらいのプログラムコードです。

;の付け忘れやら、アクセスできないインデックスで配列にアクセスしたりと
色々あります。
0277デフォルトの名無しさん2015/06/22(月) 19:14:08.90ID:44quCRbj
>アクセスできないインデックスで配列にアクセスした
これコンパイラでつかまるの?
0278デフォルトの名無しさん2015/06/22(月) 19:56:16.28ID:ILh0wq8G
>>276
その100回エラーはいつ出るんだよ?
1000行のプログラムを書く場合、100行くらいの関数を一個作ったら取り敢えずビルドしてテストすると思うがその時に100個のエラー出るのか?
それとも1000行書き上げるまで一度もビルドせずに1000書いてから初めてビルドしたら100個のエラーなのか?よく分かるように書いてくれよ
0279デフォルトの名無しさん2015/06/22(月) 20:01:04.01ID:YsLRwNcZ
C言語で仕事していてモチベーションがあがるときってどんな時ですか?
何かプログラミングは詳しいけど仕事に対しては文句が多い気がします。
Cで組んでいて仕事で充実したこと、自分のスキルが活かされたなって思う瞬間が
あれば教えて下さい。当方プログラマになりたいと思っております。
向いてないかもしれませんが、みなさんがどういった心理状態、将来への展望を抱いて
プログラマやってるのか不思議でなりません。
02802792015/06/22(月) 20:25:05.35ID:YsLRwNcZ
https://www.youtube.com/watch?v=oOwjKaqZFXs
皆さんは
仕事が割り込んでもそれを片付けるとかこのレベルまで行ってるの?
0281デフォルトの名無しさん2015/06/22(月) 21:12:32.23ID:cwbWWa9D
>>276
それ知ってどうすんの
傾向わかってんだったら今後注意すりゃいいだけでしょ
0282デフォルトの名無しさん2015/06/22(月) 21:25:05.55ID:aymjWIxI
>>279
自分の作ったプログラムが出した指令に基づいて目の前で鉄の塊(電車)が動いた時は本当に感動した。
0283デフォルトの名無しさん2015/06/22(月) 21:27:50.49ID:Jxy34/JH
>>279
マ板行ったらいいよ
0284デフォルトの名無しさん2015/06/22(月) 22:06:39.89ID:YsLRwNcZ
>>282
それってコーディングによっては動かない可能性もあったんですか?
0285デフォルトの名無しさん2015/06/22(月) 22:22:45.94ID:5yWB/8R4
>>279
自分の作ったプログラムがバグると地上待機してる自分に敵のミサイルが当たる時
0286デフォルトの名無しさん2015/06/22(月) 22:52:06.68ID:n9SZmu2P
でもプログラミングで一番疑問に思うのは

数学の問題なんて何時間かけても解けないなら仕方ないよって言われるのに
何故プログラミングの場合は、すぐにバグとってリリースできる状態にしろって
厳しい条件を突きつけられるんでしょうか?

問題解決が必要な分野でプログラミングだけやたらと厳しい気がしませんか?
どんな職業もゆとりってあるじゃないですか。研究で成果でなくても怒られませんよね。
企画が頓挫しても次頑張れって言われますよね。

でもプログラミングは何故殺伐とした圧力が常にあるんでしょうか?
納期とかいいますけど、それだけ大変なら納期は延びても仕方ないよって言う
人のほうが多くないんですか?
0287デフォルトの名無しさん2015/06/22(月) 22:58:37.01ID:n9SZmu2P
バグを見つけるって原因を見つける事ですよね?
それってラインみたいな単純作業じゃないじゃないですか。
常に数学の解法を思いつくような思考がずっとできないとダメってことですよね?
それなのに見つけられて当然、やっと見つかったけど今度はこれ見つけてねとか
あんまりじゃないですか?

世間からプログラマーってちょっと賢い程度に思われてるじゃないですか?
俺からしたら滅茶苦茶頭きれないと無理だと思うんですよ。

人間誰しも論理的に物事考えるけど、プログラマーってそれ+頭の回転
しかも超凄いレベルの回転力が必要ですよね?
0288デフォルトの名無しさん2015/06/22(月) 23:09:28.06ID:3Y+uTrvX
プログラマー板にいけ。いい加減スレ違いだ。

こういう使い分けが出来るのがプログラマーであり、一般的に多くの人が出来ることだ。
0289デフォルトの名無しさん2015/06/22(月) 23:50:40.28ID:HfhmwtVw
多重請負構造で中抜き業者がピンはねしまくりで実作業をするプログラマーには適切な待遇が与えられないようになってる
そのせいで納期は短めに設定されるし残業代も100%出ない会社も多い
0290デフォルトの名無しさん2015/06/23(火) 08:07:21.08ID:PmYcJsrz
そもそも大抵の職業プログラマは解法が見つからんような難しい問題はやってないし
大量にある要件をチマチマ実装/テストするお仕事です
0291デフォルトの名無しさん2015/06/23(火) 09:58:29.46ID:9r3RXp4j
プログラマーの話は板違い
0292デフォルトの名無しさん2015/06/23(火) 15:14:18.02ID:k5+MSvOe
ダイナミックリンクとダイナミックロードの違いがわかりません。
具体的には、dlopenを使う処理とそうでない場合の違いです。
環境はlinux、gccです。プログラムのリンクの状況などが
分かるコマンドがありましたら併せて教えてください。
ご回答の程よろしくお願い致します。
0293デフォルトの名無しさん2015/06/23(火) 16:36:25.05ID:I0ATeeuQ
ldでリンクされたshared objectはmainの実行前にランタイムローダーがロードする。
lddでランタイムローダーがロードするものの一覧がとれる。
0294デフォルトの名無しさん2015/06/23(火) 16:50:51.89ID:JUNHFyrA
ダイナミックリンクは対象が存在しない場合
自前のコード(main() )に飛び込む前にローダーがエラーを返して終了しちゃう

ダイナミックロードは ロードとマップと呼び出しを自前のコードで行うので
リンク対象が存在しない場合に動作を分岐させたりすることが可能
0295デフォルトの名無しさん2015/06/23(火) 16:59:26.40ID:WxAOywus
>>292
ダイナミックリンクはソースコード上のシンボルと、ライブラリのシンボルが結びつけられて、
実行時に自動的にライブラリがロードされる。

dlopen() を使う方は、実行時にライブラリ名、使用するシンボルを決定できる。
なんで、プラグインの実装はこれを使えば簡単にできたりする。

あるプログラムがあって、複数の別プログラムと通信するときなんかは、
通信部分をこんな実装にしたりする。
0296デフォルトの名無しさん2015/06/23(火) 19:59:53.57ID:p7ULLFoK
凄い初歩的な質問するかもしれませんが、プログラムは全てポートがあるってのを
勉強して習いました。ということはhelloworldが実行されている最中もポートって
いうのは開いているんでしょうか?そのポートを調べる事は可能ですか?
0297デフォルトの名無しさん2015/06/23(火) 20:54:10.62ID:Yra6/pdr
>>296
> プログラムは全てポートがあるってのを
> 勉強して習いました。
どこで習ったんだよ...
0298デフォルトの名無しさん2015/06/23(火) 21:24:28.48ID:p7ULLFoK
>>297
アプリがそれぞれポートというシンボルを持ってるって聞きましたが違うんですか?
メールが開いてます→ある数値のポートが開いてる
ペイントが開いてます→ある数値のポートが開いてる
じゃぁhelloworld.exeというhelloworldを出力するアプリケーションにも
ポートがあるのではないかと思うのですが間違いでしょうか?
0299デフォルトの名無しさん2015/06/23(火) 21:26:32.71ID:i2r6Oae2
違います
0300デフォルトの名無しさん2015/06/23(火) 21:37:02.86ID:tg0Hi2QC
誰かが自作した非公開のOSでそういう仕様のものがあるかもね。
0301デフォルトの名無しさん2015/06/23(火) 21:52:35.05ID:x6cWTlKo
ポートって意味が広いから何を指してるのかね。
後"プログラムが持っている"って表現に違和感あるし。
halt
ってだけのプログラムにポートと呼べるものは含まれているのかね。
0302デフォルトの名無しさん2015/06/23(火) 21:56:16.88ID:p7ULLFoK
>>301
ポートはアプリ間通信のために必要って本に書いてます。
別のパソコンとの通信に必要なもの=IPアドレス
アプリ間通信のためにそれぞれのアプリが持ってるもの=ポート番号

つまりhelloworld.exeはアプリだからポート番号を持ってると考えました。
違いますか?
0303デフォルトの名無しさん2015/06/23(火) 21:58:15.94ID:i2r6Oae2
hello worldはアプリ間通信してねーし
0304デフォルトの名無しさん2015/06/23(火) 22:04:04.49ID:p7ULLFoK
>>303
どういうときにポートが貸与されるんでしょうか?
よくわからないんです。ちなみに基本情報の本で勉強しました。
0305デフォルトの名無しさん2015/06/23(火) 22:07:22.01ID:Y47RauLa
構うと暴れるからな
0306デフォルトの名無しさん2015/06/23(火) 22:31:45.97ID:HChqJ3xP
2次元配列の関数受け渡しについての質問です。

動的確保により作成した2次元配列をユーザ定義関数へ受け渡す際、
関数の仮引数はどのように宣言すればよいのでしょうか?

ukewatasi(double **x)

のようにしてみたのですが、プログラムが停止してしまいました。

よろしくお願いします。
0307デフォルトの名無しさん2015/06/23(火) 22:39:28.45ID:fUDxTJnN
>ID:p7ULLFoK
プロセス間通信のサンプルソース読んでフロチャートぐらい描いてから質問しろ。
0308デフォルトの名無しさん2015/06/23(火) 22:41:39.07ID:i2r6Oae2
>>306
動的確保したデータの型は?
0309デフォルトの名無しさん2015/06/23(火) 22:48:15.37ID:HChqJ3xP
>>308
double型で**xを作成して、xを関数に受け渡しました。

ukewatasi(double **x)

int main(){
double **x;

ukewatasi(x);
}

のような感じです。
0310デフォルトの名無しさん2015/06/23(火) 22:50:50.38ID:x6cWTlKo
>>309
> 動的確保により作成した2次元配列
とは、こんな感じで確保したの?
(double(*)[123])malloc(n*123*sizeof(double))
であれば
double(*a)[123]
みたいに渡せばいい。
0311デフォルトの名無しさん2015/06/23(火) 22:51:11.69ID:HChqJ3xP
何度もレス申し訳ないです。
関数の内容は渡された2次元ポインタ?に対する動的確保です。
動的確保をユーザ定義関数内で行おうとしています。
0312デフォルトの名無しさん2015/06/23(火) 22:51:27.89ID:qkxeTacg
>>309
受け渡しはそれで問題無いんじゃないか。
その後の配列の使い方に問題有るんじゃないか?
0313デフォルトの名無しさん2015/06/23(火) 22:55:23.42ID:HChqJ3xP
>>312
プログラム内の主な部分をとりあえず消してみたので、その後の処理は

for(i=0;i<n;i++)free(x[i]);
free(x);

を使って開放しているだけにしてあります。
0314デフォルトの名無しさん2015/06/23(火) 23:10:53.90ID:DrRN54sL
>>311
引数の書き換えによる呼び出し元への渡しじゃなく
戻り値じゃだめなの?

int を引数書き換えで戻す func(int *a) { *a = こっちで設定した値 }

型type を 引数書き換えで戻すのは func(type *a) になる
2次元配列(ポインタ配列) double** を type とみなすのなら
func(double*** a) になるんじゃないか?
0315デフォルトの名無しさん2015/06/23(火) 23:21:43.47ID:DrRN54sL
おっと呼び出し元のほう書き忘れてた

>>314 の 型type を 引数書き換えで戻すのは func(type *a) になる
呼び出し元は 型type の変数 a を用意して func(&a) と呼び出す
⇒ double **x を用意し、func(&x) で書き換えてもらう
0316デフォルトの名無しさん2015/06/23(火) 23:23:43.71ID:x6cWTlKo
>>309
>>313
それでいいよ。としか答えられないんだが。
自分の問題点を単純化して、
省略せずmain関数込みで晒すしかないんじゃね?
0317デフォルトの名無しさん2015/06/23(火) 23:28:11.11ID:DrRN54sL
元質問よく読むと >>314,315 は関係なさそうだわ とりさげ
0318デフォルトの名無しさん2015/06/23(火) 23:33:51.75ID:HChqJ3xP
すみません、mainとその関数はこんな感じです。

void getm(int n,double **x)
{
int i;
x = (double**)malloc(sizeof(double*) * n);
if(x == NULL){
puts("メモリを確保できませんでした");
exit(0);
}
for(i=0;i<n;i++){
x[i] = (double*)malloc(sizeof(double) * n);
if(x[i] == NULL){
puts("メモリを確保できませんでした");
exit(0);
}
}
}
int main()
{
int i,j,col,ln,n;

double **a,**b;

getm(n,a);

for(i=0;i<n;i++)free(a[i]);
free(a);
return 0;
}
0319デフォルトの名無しさん2015/06/23(火) 23:38:22.26ID:Hn8bvGAp
そりゃ停止するわ
0320デフォルトの名無しさん2015/06/23(火) 23:47:19.57ID:x6cWTlKo
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
void getm(int n, double ***y) {
inti;
double**x;
x = (double**)malloc(sizeof(double*) * n);
if(x == NULL){
puts("メモリを確保できませんでした");
exit(0);
}
for(i=0;i<n;i++){
x[i] = (double*)malloc(sizeof(double) * n);
if(x[i] == NULL){
puts("メモリを確保できませんでした");
exit(0);
}
}
*y = x;
}
int main(void) {
int n,i;
double **a = NULL;
n = 5;
getm(n,&a);
for(i=0;i<n;i++) free(a[i]);
free(a);
return 0;
}
0321デフォルトの名無しさん2015/06/24(水) 00:05:36.88ID:e9gtZvXy
(>'A`)> うわぁ
0322デフォルトの名無しさん2015/06/24(水) 00:39:48.68ID:edfJthnp
>>320
getm() の戻り値をアドレス値(のコピー)にした方がいいんじゃない。

double **getm(int n) {
double **x;
:

return x;
}

int main(void) {
:
double **a;
:
a = getm(n);
:
}
0323デフォルトの名無しさん2015/06/24(水) 00:49:44.96ID:TqWBqUYf
問題の本質が動的確保とか2次元うんたらじゃないね。こんな感じのまちがいか?
void func(int x) { x=5; }
0324デフォルトの名無しさん2015/06/24(水) 01:41:06.19ID:x8P9P79s
これと同じような問題は他の関数でFILE構造体へのポインタを持って行って
openしたのに「あれっ?」というのに似てるな

void func(FILE *fp)
{
...fpをopenする処理
}

func()から戻ってもfpに代入されたFILE構造体がopenされてない
(正確にはfunc()内でopenして代入した値がどこかで遊んでいる)

正しくは

void func(FILE **fp)
{
*fp=fopen(////
}

とやるかC++なら
void func(FILE *&Fp)

まあこんなアホな書き方は普通しないけど
0325デフォルトの名無しさん2015/06/24(水) 04:19:45.17ID:psgmC6/v
これはひどい
0326デフォルトの名無しさん2015/06/24(水) 08:11:51.66ID:aN9Ts3NW
void getm(int n, double ***y) {

*y = (double **)malloc(sizeof(double *) * n);

if (*y == NULL) {
puts("メモリを確保できませんでした");
exit(0);
}

for (int i=0; i<n; i++) {

(*y)[i] = (double *)malloc(sizeof(double) * n);

if ((*y)[i] == NULL) {
puts("メモリを確保できませんでした");
exit(0);
}
}
}
0327デフォルトの名無しさん2015/06/24(水) 17:58:36.34ID:u4ZdF9De
�@if (strcmp(argv[1], "ch") == 0)

�Aif(*argv[1] == "ch")

この書き方何が違うんですか?
0328デフォルトの名無しさん2015/06/24(水) 18:02:18.92ID:5nU4RVUe
C言語じゃ文字列の比較は”==”ではできないよ
0329デフォルトの名無しさん2015/06/24(水) 18:38:26.93ID:3Hv0NUBx
*argv[1] 多分char型 1バイトの数値
"ch" "ch"という文字列が格納されているアドレス 環境依存だが16/32/64bit数値
0330デフォルトの名無しさん2015/06/24(水) 18:46:20.02ID:FOAJx/zB
C言語の定義ってあるんでしょうか?
出来上がったものをC言語として纏めたからそれをC言語と呼んでいるのか
こういう機械語への変換を約束するように設計されたのがC言語がなのかどっちなのでしょうか?
ようはコロンブスの卵みたいな問題ですが
0331デフォルトの名無しさん2015/06/24(水) 18:49:40.49ID:hCh+/iKv
>>330
その答えが分かったとして
何か役に立つのか?
0332デフォルトの名無しさん2015/06/24(水) 18:56:12.91ID:e9gtZvXy
(国際)規格おっかけたら?
ISO/IEC 9899:2011
0333デフォルトの名無しさん2015/06/24(水) 19:28:44.29ID:FOAJx/zB
>>331
コンパイラの勉強してます^^

例えば
graph.hってありますよね?
C言語にはGUIが無いからライブラリとしてインポートして
使えるだけでgraph.h自体はC言語じゃないけど、何故かC言語扱いされてますよね
みんなどこまでをC言語って呼ぶか定まってないのではないかと思います。
設計者自身もそう思ってるんじゃないでしょうか?
0334デフォルトの名無しさん2015/06/24(水) 19:32:09.49ID:hCh+/iKv
>>333
そのファイルの中にc言語のソースコードがはいっていれば.hでも何でも全部c言語だろ。
0335デフォルトの名無しさん2015/06/24(水) 19:40:36.46ID:wt32uzVz
別言語だが、PHPのなかでHTMLのソースコードが入っていたらそれはPHPじゃなくなるのか
0336デフォルトの名無しさん2015/06/24(水) 19:46:26.31ID:FOAJx/zB
>>335
いや関数とかはC扱いになるのかなと
drawcircleとかいう関数はCのGUI関数なのか
ライブラリから呼ぶCのものではないGUI関数なのか
0337デフォルトの名無しさん2015/06/24(水) 19:54:20.47ID:cFIj+m2b
また思い込みの人か
0338デフォルトの名無しさん2015/06/24(水) 20:08:54.30ID:FOAJx/zB
そこらへんそんなに気にしなくていい感じですか?
0339デフォルトの名無しさん2015/06/24(水) 20:09:42.03ID:3Hv0NUBx
日本語に英単語が混じったら日本語ではなくなるのか。
0340デフォルトの名無しさん2015/06/24(水) 20:18:53.14ID:e9gtZvXy
Cコンパイラの作り方の勉強? Cコンパイラの使い方の勉強?
0341デフォルトの名無しさん2015/06/24(水) 20:25:42.13ID:FOAJx/zB
>>339
正式にC言語の関数といえるのか知りたいです。
例えばfork()はシステムコールであってC言語ではないけどCのコードによく
出てくるじゃないですか?
そういう事です。
0342デフォルトの名無しさん2015/06/24(水) 20:26:12.07ID:FOAJx/zB
例えば識者(Cに携わった人達)がそれも標準Cに入れようってなったら
正式にC言語の関数となるんですか?
0343デフォルトの名無しさん2015/06/24(水) 20:31:32.11ID:e9gtZvXy
ここでクダ巻かず標準化委員会にでもいっといで
0344デフォルトの名無しさん2015/06/24(水) 20:34:00.48ID:5/GXLIV8
キミは「C言語 規格」で検索してみようという知恵は働かないのか?
0345デフォルトの名無しさん2015/06/24(水) 21:32:22.70ID:3Hv0NUBx
規格通りに作られたC言語コンパイラでコンパイル出来て想定通りに動くならC言語だよ。
0346デフォルトの名無しさん2015/06/24(水) 21:40:22.84ID:3Hv0NUBx
>正式にC言語の関数となるんですか?
正式な「C言語の関数」の定義は?
0347デフォルトの名無しさん2015/06/24(水) 22:05:22.37ID:zNYvxzaB
頭でっかちバカ
0348デフォルトの名無しさん2015/06/24(水) 22:24:01.80ID:mSDBMbUW
>>337
>>218
0349デフォルトの名無しさん2015/06/24(水) 22:37:35.23ID:BVqVeXIZ
>>346
自分の中のC言語の定義は

・計算処理が高速(ダイレクトに機械語へ変換するから)
・グラフィック出力が出来ない(C開発環境における端末の多くは図形描画できないため(cygwinなど))
・文字入力、出力はアスキーコードの範囲内(255文字までしか対応していないコンパイラが殆ど)

つまりCは計算をして出力する、まさに計算専用の言語だという認識です。
0350デフォルトの名無しさん2015/06/24(水) 22:41:14.75ID:5/GXLIV8
>>349
キミのその定義のC言語は、ここで話題にしてるC言語とは違うね。
とっとと出てけ、二度と来るな。
0351デフォルトの名無しさん2015/06/24(水) 22:45:41.35ID:BVqVeXIZ
>>350
このスレは文法的な話が多いしナチュラルなC言語の話がメインじゃないですか?
後 C言語規格で検索かけました。

アメリカはANSI
日本はJISが
規格に関して管理してるってことが分かりました。

どっちの権限が強いとかあるんでしょうか?
Cって日本が開発したものじゃないからアメリカANSI
の承認がないと自由に開発できない、変更できないとかあるんでしょうか?
それとも並行して自由なCのタイプを作っていっていいとか。
0352デフォルトの名無しさん2015/06/24(水) 23:08:27.15ID:YYL+BoO/
根本が間違ってて指摘も矯正も不可能です。
03533512015/06/24(水) 23:11:06.20ID:BVqVeXIZ
本気で気になってるので誰かCの規格や定義に詳しい人教えて下さい
0354デフォルトの名無しさん2015/06/24(水) 23:17:53.88ID:YYL+BoO/
適当に読んどけ。
ttp://www.bohyoh.com/CandCPP/C/index.html
ttp://www.comm.info.eng.osaka-cu.ac.jp/~sugi/C_lang2/C1.html#anchor265686

これ以上は専門書探せ。もう疲れた…。
0355デフォルトの名無しさん2015/06/24(水) 23:26:38.68ID:zNYvxzaB
読んで理解をしないんだろうな
03563512015/06/24(水) 23:27:12.64ID:BVqVeXIZ
>>354
ありがとうございます
CもANSI本筋と傍流があるんですね
0357デフォルトの名無しさん2015/06/24(水) 23:54:49.59ID:5DYqddEm
言語仕様と標準ライブラリの関係を言ってるんでしょ?
違う意味なら知らん
03583512015/06/25(木) 00:03:15.94ID:sP9h+oqg
>>357
言語仕様の中で標準ライブラリが定義されてるんですよね?
てことは言語仕様にないfork()やdrawcircle()はC言語の関数と言っては
ダメじゃないんですか?
0359デフォルトの名無しさん2015/06/25(木) 00:14:54.02ID:0iBjMS7W
printf()やfopen()もアセンブラや別言語で書かれてるぞ。
0360デフォルトの名無しさん2015/06/25(木) 00:16:51.58ID:0iBjMS7W
言語のなんたるかを決めるのはお前じゃないってことだ。
0361デフォルトの名無しさん2015/06/25(木) 04:32:18.38ID:Li5opHJV
だから関わるなと言ったのに
0362デフォルトの名無しさん2015/06/25(木) 07:43:04.30ID:cFsyQBWH
ヲタクプログラマーだからな。
0363デフォルトの名無しさん2015/06/25(木) 09:28:35.57ID:KIT3ByGG
ここの人間は以外とお人よしっつーか面倒見がいいよなw
0364デフォルトの名無しさん2015/06/25(木) 09:46:28.93ID:UIqr32+m
cdecl から調べた方が速そう
0365デフォルトの名無しさん2015/06/25(木) 11:17:24.92ID:U+zmiSvD
>>6
そんな苦労してまで、三項演算子使わなくても良いのに。
0366デフォルトの名無しさん2015/06/25(木) 11:27:48.98ID:U+zmiSvD
>>184
どんな言語でも、
文法としては正しくても、文章としては間違ってる事はいくらでもある。
0367デフォルトの名無しさん2015/06/25(木) 11:55:06.12ID:3kYUeLcc
そんな古い質問拾うなよ。また湧いて出てくるやん。
0368デフォルトの名無しさん2015/06/25(木) 21:25:49.37ID:sP9h+oqg
C言語ってある程度仕事でも詳しくなってもう余裕で分かるレベルになったら
次の楽しみって何になるんですかね?イマイチできる人のモチベーションがどこにあるか
分からないです。Cは一生かけても分からないくらい深いっていいますけど、未解決問題じゃあるまいし
単なる処理規則の集合なわけであって、どこらへんに奥深さがあるんでしょうかね。
0369デフォルトの名無しさん2015/06/25(木) 21:32:37.30ID:wU+kaldG
>>368
言語に奥深さは無い。まったくナンセンスな問題意識。
0370デフォルトの名無しさん2015/06/25(木) 21:34:04.17ID:gUXvHM4p
>>218
0371デフォルトの名無しさん2015/06/25(木) 22:07:39.16ID:XxFekGl2
>>368
設計。

プログラミングが楽しいなんて言ってるうちは初心者。
0372デフォルトの名無しさん2015/06/25(木) 22:15:45.28ID:0iBjMS7W
>368
全ての仕事がそうだよ。所詮誰かがやったことの後追い。
それでもやったことが無いことを体験して、作ったことの無いものを作って、
満足できなかったものが少しだけマシになるのは楽しいよ。
自己満足といえばそう。
自己満足をポジティブに捉える人が楽しめ進められ、
ネガティブに捉える人は進まない。

あなたもあれは違う、コレはダメ、それはつまらないとネガティブで雁字搦めになってないで
とりあえずやってみる、とりあえず進めてみて、経験を自分の糧にしてみなさい。
0373デフォルトの名無しさん2015/06/25(木) 22:19:21.28ID:Li5opHJV
自分に害の及ばないものなら
他人の作ったもののテストも楽しい
0374デフォルトの名無しさん2015/06/25(木) 22:21:02.82ID:wU+kaldG
この人の場合、実践が伴ってないからへんてこなロジックに陥るんだろうな。
0375デフォルトの名無しさん2015/06/25(木) 23:40:03.58ID:/iOjq/uQ
スレがやたら伸びてるなーと思うと、いつもの人が暴れてると言う
0376デフォルトの名無しさん2015/06/25(木) 23:45:44.08ID:DMKfpdxo
>>368
高いお金をもらうのがモチベーション
プログラミングはその手段の一つ
一つの言語を深くやるでも、多くの言語やるでもいいし、マネージメント、テストエンジニアリング、ドキュメンテーションでもいいし、自分の価値が上がる手段を増やせばいい
何も考えずに業務をこなすだけならやめた方がいい
0377デフォルトの名無しさん2015/06/26(金) 00:27:42.12ID:7ZHtA1tf
複数の値を任意の数だけ入力させて結果を返すプログラムで、入力の終わりにctrl+zを押さなくても結果を表示できますか?
0378デフォルトの名無しさん2015/06/26(金) 07:51:30.19ID:58TwEZZ0
ctrl+zがいらない仕様にすれば出来るだろう。
0379デフォルトの名無しさん2015/06/26(金) 08:56:47.59ID:P2ouCsE5
言葉ってある程度詳しくなってもう辞書引かなくても分かるレベルになったら
次の楽しみって何になるんですかね?小説とか書く人のモチベーションがどこにあるか
分からないです。言葉は一生かけても分からないくらい深いっていいますけど、未解決問題じゃあるまいし
単なる文字記号の集合なわけであって、どこらへんに奥深さがあるんでしょうかね。
0380デフォルトの名無しさん2015/06/26(金) 09:25:10.82ID:gBS6mhz7
>>377
空行を検出したら終了するように作るとか、任意の入力は必ずファイルから与えることにするとか、手は色々ある。
0381デフォルトの名無しさん2015/06/26(金) 11:34:55.72ID:P2ouCsE5
>>377
ありえない値(-1とか9999とか)を終端マークとして使うのが古典的な方法
最初の入力一件をデータ数とみなすとより無難
0382デフォルトの名無しさん2015/06/26(金) 13:01:22.36ID:HCrYWUwt
ポインタ使わず、配列の文字(ひらがな)操作出来ませんか?例 "あいう"→う だけ取り出す
0383デフォルトの名無しさん2015/06/26(金) 13:18:07.33ID:r1qkCt6W
>>377
(平均値のように)
入力値を一度きりしか使わず、即捨て出来る式で結果を表現できるなら
入力毎に結果を書く
0384デフォルトの名無しさん2015/06/26(金) 13:46:28.74ID:58TwEZZ0
>382
char mojiretu[]="あいう";
char kititori[4]={0};

kiritori[0]=mojiretu[4];
kiritori[1]=mojiretu[5];
printf("&s\n",kiritori);
0385デフォルトの名無しさん2015/06/26(金) 14:48:37.18ID:HCrYWUwt
>>384
文字コードが2バイトを使ったってことですね。気づきませんでした。まだやっていませんが多分出来そうです。ありがとう
0386デフォルトの名無しさん2015/06/26(金) 16:25:25.05ID:58TwEZZ0
>printf("&s\n",kiritori);
× &s
○ %s

何やってるんだorz
0387デフォルトの名無しさん2015/06/26(金) 19:54:12.94ID:oshtnfFs
C言語の文法やアルゴリズム自体は得意なのに
ライブラリなどのコードがいっぱいあると途端に読めなくなるのって
どういった能力が欠如してるからですかね?僕の事です。
0388デフォルトの名無しさん2015/06/26(金) 20:02:28.58ID:YZgXVwpx
知識、経験。英語が得意なアメリカ人でもそれまで知らない英単語、ことわざはわからない。
0389デフォルトの名無しさん2015/06/26(金) 20:11:34.53ID:58TwEZZ0
知らない関数、知らないマクロ、知らない構造体。
0390デフォルトの名無しさん2015/06/26(金) 20:12:11.42ID:oshtnfFs
>>389
調べても書いてないんですよ
そういう場合どうしたらいいですか?
0391デフォルトの名無しさん2015/06/26(金) 20:38:50.73ID:/lXarR0v
知能が足りないんだと思うよ。
0392デフォルトの名無しさん2015/06/26(金) 20:44:52.95ID:oshtnfFs
>>391
向いてないんですかね…
プログラマやめましょうか…

後仕事のプログラムって再帰ばっかりなんですよ
上司に聞いたら、再帰で複雑にしておいたほうが機密性が高くなるとのことです。
そんなことあるんでしょうか…
殆ど意味分からないんですよプログラムの内容が
0393デフォルトの名無しさん2015/06/26(金) 20:56:10.89ID:WXmHQpYf
おいらは再帰好きだよ
0394デフォルトの名無しさん2015/06/26(金) 20:56:28.21ID:oshtnfFs
しかも相互再帰…
相互再帰にしてほぼ解読不可能っていう…
趣味を仕事に持ち込むのは本当にやめてほしいです
0395デフォルトの名無しさん2015/06/26(金) 20:57:03.78ID:oshtnfFs
>>393
相互再帰もですか?
読みにくくなるだけで何のメリットがあるのかわかりません
0396片山博文MZ ◆T6xkBnTXz7B0 2015/06/26(金) 20:59:57.34ID:xjgOsjgG
多分、リバースエンジニアリング対策だろ
0397デフォルトの名無しさん2015/06/26(金) 21:00:41.26ID:oshtnfFs
難読以外のメリットは、プログラムの書く量が減るから
プログラムの容量が小さくなることだそうです
0398デフォルトの名無しさん2015/06/26(金) 21:03:03.00ID:WXmHQpYf
相互再帰は結構一般的ちゃうの?

個人的な意見だけど、再帰のが簡単にキレイにかける(ときもある)

まあ、おいらはCもやるけどC専門じゃないからなぁ
Cじゃ再帰は使わないお約束、みたいな感じだったらごめんね
0399デフォルトの名無しさん2015/06/26(金) 21:04:00.77ID:oshtnfFs
>>396
再帰は解読しにくいってことですね
0400デフォルトの名無しさん2015/06/26(金) 21:11:35.75ID:58TwEZZ0
>390
ヘルプを見る。解説を見る。
作ったやつ、使ったことのあるやつに聞く。
でなければサンプルソースを解析。

それでもわからなら後回しにするか、解らないまま変に弄らずに使う。俗に言う「おまじない」。
0401デフォルトの名無しさん2015/06/26(金) 22:07:05.75ID:gBS6mhz7
結局のところ、末尾再帰でもなければ効率悪いコードしか吐かないから再帰で書くのはパフォーマンス要らんところだなぁ。
うちの場合は、パフォーマンスを上げるのが主目的であることが多いから難読性なんて肥やしにもならん。
0402デフォルトの名無しさん2015/06/26(金) 22:07:51.27ID:gBS6mhz7
>>381
げげ。
0403デフォルトの名無しさん2015/06/26(金) 23:13:37.04ID:3MIHB1Go
一昨日Cを勉強し始めたにわかなのですが
ttp://9cguide.appspot.com/13-q.html#S2
このサイトの 2-1 のプログラムについてわからないところがあります。
int i,sum = 0,avg; とありますがこれだとsumに0を代入して初期化することができてないのではないでしょうか?
あらかじめavgに入っていた謎の値がそのままsumに代入されてしまうということではないのですか?
もしそうならifの中で配列の合計を正しく求められないと思うのですが...
どうかよろしくお願いします。
0404デフォルトの名無しさん2015/06/26(金) 23:13:49.20ID:oshtnfFs
クイックソートの再帰は末尾再帰じゃないですよね?
クイックソートの再帰は末尾再帰じゃないから分かりやすいんですが、
ハノイの塔の再帰はすごい分かりにくい
0405片山博文MZ ◆T6xkBnTXz7B0 2015/06/26(金) 23:21:05.76ID:xjgOsjgG
>>403
C言語の文法は各演算子の結合の強さを決めており、文法上のあいまいさをなくしている。
int i,sum = 0,avg;
のi,sum = 0,avgは、iとsum = 0とavgの3つに分解されて解釈される。
0406片山博文MZ ◆T6xkBnTXz7B0 2015/06/26(金) 23:31:03.25ID:xjgOsjgG
>>404
再帰はスタックをFILOのように使って処理をしている。
関数呼び出しのときに戻り先と実引数をスタックに格納し、関数から戻る頃にスタックから解放される。
FILOのデータ構造を使えば再帰は非再帰に書き換えられる。
0407デフォルトの名無しさん2015/06/26(金) 23:53:28.51ID:3MIHB1Go
>>405
なるほど、納得がいきました。ありがとうございました!
0408デフォルトの名無しさん2015/06/27(土) 05:59:25.89ID:svdtev72
>>405
ちげーよ。
そこで現れている,はカンマ演算子じゃない。
なので演算子の優先順位は適用されない。
0409デフォルトの名無しさん2015/06/27(土) 06:25:17.74ID:+UMgIw/2
カンマって微妙な存在だよね
0410デフォルトの名無しさん2015/06/27(土) 07:41:18.81ID:nRUZ97+m
>408
否定だけでなくちゃんと解説しろよ。
0411デフォルトの名無しさん2015/06/27(土) 08:59:18.05ID:culNkOYR
うっせー 俺はテスターだから間違いを見つけたらそれで終わりなんだよ
0412デフォルトの名無しさん2015/06/27(土) 09:16:18.76ID:KUf9kyhl
なんで「俺はコンパイラより頭が(・∀・)イイ!!」とか思うような奴ばっかりが
得意顔で自演するようなスレに成り果てちゃったの?(´・ω・`)
0413デフォルトの名無しさん2015/06/27(土) 12:27:05.83ID:svdtev72
>>410
元質問者の疑問は、,がカンマ演算子でない事で解決する。
バカにはわからなかったかな?
0414デフォルトの名無しさん2015/06/27(土) 12:48:36.17ID:XN+wGsW9
「相手はxxxがyyyだと勘違いしてる」と思い込んでいる。
0415デフォルトの名無しさん2015/06/27(土) 17:48:41.80ID:svdtev72
それ以外に説明がつかないと言う事がバカにはわからないらしい。
0416デフォルトの名無しさん2015/06/27(土) 18:16:17.50ID:8NBUCr+K
意味不明なところに拘って質問してくるやつ。
質問投げっぱなしで回答への反応がないやつ。
態度のでかいヤツ。

消えて欲しいよ。
0417デフォルトの名無しさん2015/06/27(土) 18:42:50.69ID:wwmvwXJ3
思ったんだけど複雑な思考してるときは脳ってそう活発になってないんですね
簡単なコミュニケーションや、簡単な計算してるとき活発になるらしい。
でもC言語のプログラム読んでて、難しいなって思って粘り強くコード見ていく事って
上達にかかせないですよね?じゃぁ頭を活発にしてC言語読むにはどうしたらいいんでしょう?
常に何かをひらめきながら読み進めるとか色々工夫あると思うんですがみなさんが心がけてることなんですか?
0418片山博文MZ ◆T6xkBnTXz7B0 2015/06/27(土) 19:19:00.59ID:JmAIGVSo
明日、俺が考えた究極の画像処理ライブラリーを発表する予定。まあ見ててな
0419デフォルトの名無しさん2015/06/27(土) 20:59:39.13ID:K06hVkJE
>>418
物凄いんですか?期待でワクワクします。
0420片山博文MZ ◆T6xkBnTXz7B0 2015/06/28(日) 12:49:26.79ID:7OyeVowG
画像処理ライブラリー「imaio」
http://katahiromz.web.fc2.com/imaio/

コンパイラーは、VC++ 2013、MinGW、BCC55に対応。
画像形式は、BMP, JPEG, GIF, PNG, TIFF, アニメーションGIFに対応。

よろしくね。
0421デフォルトの名無しさん2015/06/28(日) 13:50:10.46ID:TJWf2eSN
http://codepad.org/XjhyZ0Oa


1
2
7
4
5
-5579872
-144112812
-144135884
-142922460

Exited: ExitFailure 11

マージソートのプログラムだけど、これどこがおかしいですか?
0422デフォルトの名無しさん2015/06/28(日) 13:51:28.84ID:TJWf2eSN
全く書き換えるんじゃなくて
このコードの部分で指摘していただければ嬉しいです。

�@inの取り方も正しい
�A2回再帰を読んでる
�B作業用配列x,yも正しいはず

何故こんなおかしな結果になるんでしょう?
0423デフォルトの名無しさん2015/06/28(日) 14:37:03.55ID:4PA/u/+9
間違いではないが
int a[9];
で
for(i=0; i<=8; i++)
と書く奴のプログラムなんて見る気もしないな・・・
0424デフォルトの名無しさん2015/06/28(日) 14:39:21.94ID:OeLQkQMR
>>423
君は素人だな。
本物のプログラマーはこう書くんだよ。
知らないのか?
0425デフォルトの名無しさん2015/06/28(日) 14:45:18.81ID:4PA/u/+9
本物のプログラマーってドカタの人のことですよね
0426デフォルトの名無しさん2015/06/28(日) 15:06:36.31ID:T2p7HOxZ
よくわからんけどプロの人は

for(i=0; i<sizeof(a)/sizeof(int); i++)

って書くんじゃないの?
0427デフォルトの名無しさん2015/06/28(日) 15:26:15.96ID:O8XywhU9
とりあえず

-5579872  ←
-144112812 ←
-144135884 ←
-142922460 ←

何故こういうエラーが出るんでしょう?

aからx,y(左配列、右配列)に退避させてそこから
x,yからbに敷き詰めていく

例えばx =1 3 4,y=2,5, 7なら 1,2,3,4,5,7とbに格納してるはず

それなのに何故こういうエラーが出るのでしょうか?
0428デフォルトの名無しさん2015/06/28(日) 16:18:39.59ID:x/T4p/ZN
この手のデバッグは面倒なんでC#に直した

http://ideone.com/coXz7X

ソートされてないし、配列の前半にしかデータが入ってない
後半のおかしな値はゴミだな
0429デフォルトの名無しさん2015/06/28(日) 19:13:28.63ID:O8XywhU9
ideoneってc言語使えないの?
helloworldCでかいてrunかけてもエラー出るんだが…
うっとうしいな、codepad落ちてるし…
氏ねって…
0430デフォルトの名無しさん2015/06/28(日) 19:19:09.66ID:jQw88VwY
>>429
runしない状態で、まず貼ってみて
0431デフォルトの名無しさん2015/06/28(日) 19:22:07.72ID:O8XywhU9
>>430
>>421です。でも落ちてるんですよ、本当腹立つ…時間無いって言うのに…
何で落ちるんだよこういうときにかぎって…氏ね
0432デフォルトの名無しさん2015/06/28(日) 19:48:13.59ID:jQw88VwY
>>431
http://ideone.com/
一番上の帯の new code をクリック
コードを入力するテキストエリアの下の左、「Java ▲」をクリックし、 Cを選択

これでできませんか?
0433デフォルトの名無しさん2015/06/28(日) 20:05:11.93ID:FN6ToZob
ttp://i.imgur.com/HE7najM.png
コンパイルはできたのですが実行すると性別を聞いてもらえません...
どこがいけないのでしょうか?
読みづらいかと思われますがどうかよろしくお願いします。
0434デフォルトの名無しさん2015/06/28(日) 20:20:43.27ID:a/YHn9n/
http://ideone.com/DV39vg

ideoneの場合

そもそもStandard input is emptyが出るんですが
これ何ですか?

inputなんてしないっつの…
うっとうしいな
0435デフォルトの名無しさん2015/06/28(日) 20:33:37.27ID:jQw88VwY
いい加減な直し方ですまない。なるべくそのままで直した。

  scanf("%s%c", data[i].name);
  scanf("%d%c", &data[i].old);
  scanf("%c%c", &data[i].sex);
0436デフォルトの名無しさん2015/06/28(日) 20:33:48.76ID:6vwCSsHC
>>428
ああ、こういうコードだったのね。元のコードは 503 が返ってくるからもやもやしてた。
これってこんな問題?

・41, 42 行で再帰呼び出しでソートしてるのに 49, 52 行でコピーしてるのはソート前の配列の値
・57 行で比較してる配列のインデクスが、58, 60 行でインクリメントした結果、有効なデータより後の要素を示すようになる
 ※最初の呼び出しの m 関数の場合、x と y にはそれぞれ a 配列の 0-4, 5-8 番目の要素が入っているけど、
  仮に 0-4 番目にすべて 5-8 番目の要素の値よりも小さな値が入っていれば 6 回目の比較で
  C では初期化されていない、C# の場合は 0 が入っている要素と比較してしまうため正しい結果が出ない

自分は関係ないけどちょっとすっきりした。
0437デフォルトの名無しさん2015/06/28(日) 21:02:15.98ID:tYSRI250
>>424
本物のプログラマがループカウンターに使うのはIだ。iなんて使うのはキッシュイーター。
0438デフォルトの名無しさん2015/06/28(日) 21:34:14.33ID:bg6lBFSS
>>435
%s, %d に %c を後付けするとおかしくなるのでは?
0439デフォルトの名無しさん2015/06/28(日) 21:43:10.93ID:bg6lBFSS
>>436
なるほど,こんな感じになおせばいいのか
https://ideone.com/fiD3Wp

>>431
もとのコードは
最初から r=0, l = 2 のタイミングで再帰コールをしたあとマージ作業ではじめて問題が出る
x[] の有効なデータを使い切ったのに,また x[] から値を取り出してしまう
0440デフォルトの名無しさん2015/06/28(日) 22:22:40.69ID:a/YHn9n/
>>439
なるほど、ってことは
x[i]のインデックスを最終地点まで覚えておいてそれ以降はx[i]の値が
-23432432とかになってるから代入しないとダメってことですね?
だからif(x[xi]<0)even if(x[xi]<y[i])b[i]=y[xi];
ってことですか?
0441デフォルトの名無しさん2015/06/28(日) 22:47:50.95ID:D2RtZ38K
配列版のマージソート見た事はあるけど自分で作ったのはリスト版とあと外部ランのソートだけ
ぐぐればいろいろ出てくるね
0442デフォルトの名無しさん2015/06/28(日) 22:55:02.80ID:DfNXErlF
値にタイマーを付けてタイムアウトした順に並べる
0443デフォルトの名無しさん2015/06/28(日) 22:57:58.71ID:6vwCSsHC
てゆーか、x と y の有効なデータ数を覚えておいてそれ以降は比較なしにもう片方のをコピーすればいいやん。

そしてそれ以前にデータをグローバルな変数に入れて使い回すなよ。
再帰はそれでなくても追うのが面倒なのにこんなバグの度に余計に疲れるやろ。
0444デフォルトの名無しさん2015/06/28(日) 23:10:33.93ID:r22I8doO
>c言語のプログラムで、「xの95乗を323で割った余りを16進数に直す」というものを作りたいです
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11121105256d
でベストアンサーになっているけど、もっとどうにかならないかな
0445NAS6 ◆I4OWyGBdcY 2015/06/28(日) 23:55:57.87ID:QnH82WnG
ttp://nas6.main.jp/secret/Mathematician.zip
筆記法による数値表現
答えは12A(16)でしょ
この電卓でできるよ
ソースも全部あるからね
0446NAS6 ◆I4OWyGBdcY 2015/06/28(日) 23:57:33.04ID:QnH82WnG
X=2の答えは12A(16)でしょ
0447デフォルトの名無しさん2015/06/29(月) 00:04:36.27ID:R4Z+rP4P
>>444
https://ideone.com/QEpJ2a

>>445
それは x = 2 のときなのでは?
0448NAS6 ◆I4OWyGBdcY 2015/06/29(月) 00:05:02.97ID:6ujtYEpl
X=1234(10)の答えは11C(16)
0449NAS6 ◆I4OWyGBdcY 2015/06/29(月) 00:30:20.77ID:6ujtYEpl
>>445
のbinフォルダとreadme入れて再UPした
0450NAS6 ◆I4OWyGBdcY 2015/06/29(月) 01:02:48.54ID:6ujtYEpl
この電卓で計算
2(10)^157(10)=182687704666362864775460604089535377456991567872(10)
0451デフォルトの名無しさん2015/06/29(月) 01:47:30.45ID:1CmvgFN6
>>444
323=17*19 なので、法を分解して

フェルマーの小定理より
x^95 ≡(x^16)^5 * x^15 (mod 17)
   ≡x^15        (mod 17)

x^95 ≡(x^18)^5 * x^5 (mod 19)
   ≡x^5         (mod 19)

あと中国の剰余定理をつかって、再結合というのを考えたが
結局、x^15 (mod 17)、 x^5 (mod 19) も計算しなきゃいけないし、
そのとき、ベキ剰余演算をするので、この方法をプログラムに組み込んでも
あまり便利じゃないか。

普通の電卓片手に手計算ではうまくいったけど。
0452NAS6 ◆I4OWyGBdcY 2015/06/29(月) 02:25:57.85ID:6ujtYEpl
3(10)^33(10)=5559060566555523(10)
0453NAS6 ◆n3AmnVhjwc 2015/06/29(月) 02:30:05.17ID:6ujtYEpl
5(10)^55(10)=277555756156289135105907917022705078125(10)
0454NAS6 ◆n3AmnVhjwc 2015/06/29(月) 02:40:40.71ID:6ujtYEpl
簡単な確認
>>452
5+5+5+9+0+6+0+5+6+6+5+5+5+5+2+3=72(3の倍数)
>>453
5の倍数
0455NAS6 ◆n3AmnVhjwc 2015/06/29(月) 03:41:32.54ID:6ujtYEpl
どういうメモリモデルになっているかは
データを数値文字列として持って
10進数値文字列に変換して
筆記法で10進数値文字列の四則演算をして
答えのn進数数値文字列に戻しているだけ
メインメモリと計算時間があれば桁制限なしだと思う
0456NAS6 ◆n3AmnVhjwc 2015/06/29(月) 03:48:30.63ID:6ujtYEpl
つまり、コンピュータに手計算を強要してるの
0457NAS6 ◆n3AmnVhjwc 2015/06/29(月) 03:58:13.67ID:Ck1XM2XL
巨大な数になればなるほど
手計算の方が効率が良いし
0458NAS6 ◆n3AmnVhjwc 2015/06/29(月) 04:09:40.90ID:Ck1XM2XL
だから、暗号解読にこのDLL使ったら、ヤバそう
手計算は重いっちゃ重いけど
暗号の砦は、桁数だった気がする
0459NAS6 ◆n3AmnVhjwc 2015/06/29(月) 04:12:10.40ID:Ck1XM2XL
確か巨大素数が分かれば解けちゃうんじゃなかったっけ
0460デフォルトの名無しさん2015/06/29(月) 04:32:30.56ID:j6EGBqV6
素因数分解でしょ
0461NAS6 ◆n3AmnVhjwc 2015/06/29(月) 05:32:14.23ID:6ujtYEpl
>>460
その分からなさの砦が巨大素数じゃなかった?
0462NAS6 ◆n3AmnVhjwc 2015/06/29(月) 05:45:37.17ID:6ujtYEpl
ttp://www.maitou.gr.jp/rsa/rsa14.php
参考HP

俺電卓で計算
349052951084765094914784961990389
8133417764638493387843990820577(10)
*
327691329932667095499619881908344
61413177642967992942539798288533(10)
=
114381625757888867669235779976146
612010218296721242362562561842935
706935245733897830597123563958705
058989075147599290026879543541(10)
0463NAS6 ◆n3AmnVhjwc 2015/06/29(月) 06:01:42.90ID:6ujtYEpl
ってか、2つの素数の積って言うんなら、力技で
素数列挙してテーブルを作って
掛けた値の予測で近そうなのを
総当たりすれば良いだけじゃないの?
0464デフォルトの名無しさん2015/06/29(月) 06:08:45.81ID:p1K+5j1b
> xの95乗を323で割った余り


a * x mod 323をa<323の範囲で計算しておけばいいだけだろ?
(323*k + x) ^ n  =  x ^ n mod 323だから、
最初はx*x mod 323の値を上のaとし順に*xしていったらいいだけ。
掛け算と剰余は計算済みとしてint型配列の走査だけでできる。
0465NAS6 ◆n3AmnVhjwc 2015/06/29(月) 07:18:13.78ID:6ujtYEpl
>>463
をやろうとしたら
キューのバッファ管理がint型だから
INT_MAX個の素数列挙までは結構簡単だけど
それ以上は大変なことに気が付いた
0466NAS6 ◆n3AmnVhjwc 2015/06/29(月) 07:22:28.98ID:6ujtYEpl
キューに頼らずファイルアクセスのみにすると重すぎるしなぁ・・・
素数列挙って大変だね
0467NAS6 ◆n3AmnVhjwc 2015/06/29(月) 07:26:04.15ID:6ujtYEpl
あー、MAX_FILE_SIZEの壁でINTより小さいや
尋常な方法では出来ないなぁ
0468デフォルトの名無しさん2015/06/29(月) 07:32:19.32ID:CevnLgip
ウザいから出来たら書き込んで
0469NAS6 ◆n3AmnVhjwc 2015/06/29(月) 07:48:51.08ID:6ujtYEpl
>>464
VB.NETコンソールアプリ
###################
Console.Write("x = ")
Dim x As Integer = Integer.Parse(Console.ReadLine())
Dim i As Integer
Dim a As Integer = (x * x) Mod 323
For i = 3 To 95
 a = (a * x) Mod 323
Next
Console.WriteLine(String.Format("Mod = {0}", a))
Console.ReadLine()
###################
x=2,Mod=298
x=1234,Mod=284

for文、iの初期値はデバッグで適当
3乗になってるのか・・・
0470デフォルトの名無しさん2015/06/29(月) 09:09:21.08ID:dlw1e8se
素数列挙に総当り、巨大素数の積の合成数が
こんなもので現実的な時間で素因数分解されるなら
世界中でRSA暗号は破られまくり
0471デフォルトの名無しさん2015/06/29(月) 13:47:55.43ID:cTVGuqBX
>>447がシンプルに答えてるのに延々とクソレスして、挙句にはC言語のスレでVB披露するクソコテなんなの?
0472デフォルトの名無しさん2015/06/29(月) 14:33:14.02ID:MBINl1TZ
シフト演算で
buff[2] = (BYTE)( (0x4a40020 & 0x00ff0000) >> 16);
こういう場合にbuff[2]に入ってくる値はなにでしょうか
0473デフォルトの名無しさん2015/06/29(月) 16:08:21.05ID:fgyEl+jQ
>472
不明。状況、環境次第で変わる。
04744722015/06/29(月) 16:20:03.90ID:fgyEl+jQ
>473
失敬。勘違いしてた。
0x4a40020 & 0x00ff0000 = 0x00a40000
0x00a40000 >> 16 = 0x000000a4
(BYTE) 0x000000a4 = 0xa4
つまり 0xa4
04754732015/06/29(月) 16:21:06.16ID:fgyEl+jQ
名前ーーー!!
× 472
○ 473
0476デフォルトの名無しさん2015/06/29(月) 16:35:21.62ID:ns0CsOQ5
typedef unsiged short BYTE;
だったらどーすんだよ。
0477デフォルトの名無しさん2015/06/29(月) 16:39:16.90ID:k48kibIU
うむ、自明なものをわざわざ聞いてるってことは期待通りの結果にならなかったんじゃないかと
邪推してしまうしな
0478デフォルトの名無しさん2015/06/29(月) 17:15:49.50ID:MBINl1TZ
つまりこの処理は0xa4を抜くためのものということですね
0479デフォルトの名無しさん2015/06/29(月) 17:18:23.17ID:MBINl1TZ
すいません同じところで0x4って表現がわからないのですがどういう意味でしょうか
0480デフォルトの名無しさん2015/06/29(月) 17:29:07.35ID:k48kibIU
いきなりそこだけ聞かれてもわからんけど、
& でチェックしてるとかなら、
0x4 は2進数で 0000 0100 だから下から3ビット目を調べてるんじゃないの?
0481デフォルトの名無しさん2015/06/29(月) 17:42:41.37ID:fgyEl+jQ
16進数って理解してる?>ID:MBINl1TZ
0482デフォルトの名無しさん2015/06/29(月) 18:14:20.98ID:ns0CsOQ5
違うな。想定外の動作をさせるなら
int buff[3];
typedef char BYTE;
か。
0483デフォルトの名無しさん2015/06/29(月) 20:36:06.22ID:w6B9cFRx
http://codepad.org/

a[0] = 2;
a[1] = 8;
a[2] = 3;
a[3] = 9;
a[4] = 6;
a[5] = 1;
a[6] = 7;
a[7] = 4;
a[8] = 5;

1
2
3
4
5
5
4
5
5

何でですか…

なんでだぶってるんでしょうか?

http://www1.cts.ne.jp/~clab/hsample/Sort/Sort6.html
これは一つのtemp配列を使ってるだけで

自分はx[]とy[]にわけただけです。

何故同じ数がだぶってるんでしょうか?
04844832015/06/29(月) 20:37:37.98ID:w6B9cFRx
http://codepad.org/cyf6OZnh

お願いします。このコードを少し書き換えるだけで修正してください。
今まで間違えると全て書き直ししてたのが悪かったです。
全てリセットして書き直すとほんの少しの差異を見逃して感性が荒くなると思うので…
04854832015/06/29(月) 20:42:00.01ID:w6B9cFRx
抑えてる点

�@ちゃんとl>=rのときreturnしている
�Ax[]とy[]を比較して、小さいものからa[]につめている。
 念のため、x[]とy[]が−じゃないときも考慮してる。
 でも例えばxが0〜3、yが0〜2までのとき、ちゃんと
 lは5までの範囲になるので、xのindexが4,yのindexが3になることは
 ありえない

http://www1.cts.ne.jp/~clab/hsample/Sort/Sort6.html
とほとんど同じプログラムを書いたつもり

それなのに何故間違ってる…
まじで頭がおかしくなりそうです…
04864832015/06/29(月) 20:44:26.91ID:w6B9cFRx
lからcまでがa[]の左半分
c+1からrまでがa[]の右半分に
入ってるから

それをx[] y[]に退避させて

a[]に入れなおしてるだけ

それなのに何故おかしな結果になるんでしょう?

x[],y[]のindexも増減も間違いない、お互い0から始まって
どちらかがa[]に詰められたら詰めた方のx(y)のindexを増やす

a[]のindexはlからrまで


何故?
何故?

ここまで抑えてるのにエラーが出る理由が分からなくて死にたいです
0487デフォルトの名無しさん2015/06/29(月) 20:56:10.12ID:yBgp8aKq
取り敢えずだ、xとyを初期化してみようか。
0488デフォルトの名無しさん2015/06/29(月) 21:07:14.47ID:vSUkOanW
>>487
え???
http://www1.cts.ne.jp/~clab/hsample/Sort/Sort6.html
だってtemp(作業用)は初期化してないですよ?


僕はtempの代わりにx,yの二つの配列を用意したんです。
関数が呼び出されるたびに

int x[]
int y[]

としてるんだし、これは初期化と同じでは?
0489デフォルトの名無しさん2015/06/29(月) 21:09:29.39ID:yBgp8aKq
いいからやってみろ。いいもんだ。
0490デフォルトの名無しさん2015/06/29(月) 21:10:53.70ID:yBgp8aKq
ついでに言うと、配列は定義しただけでは不定値だぞ。
0491デフォルトの名無しさん2015/06/29(月) 21:48:25.09ID:byKOSkwI
>てゆーか、x と y の有効なデータ数を覚えておいてそれ以降は比較なしにもう片方のをコピーすればいいやん。
0492 ◆QZaw55cn4c 2015/06/29(月) 22:14:14.85ID:R4Z+rP4P
>>486
http://codepad.org/ygFP51EW

>>484 は
「x[] が使い尽くされて y[] にまだ残っているとき,y[] から a[] にコピーする.」
「y[] が使い尽くされて x[] にまだ残っているとき,x[] から a[] にコピーする.」
というロジックがない
それではちゃんと動かない.

printf() を要所要所に入れて値の変化を追いかければわかる.
マージソートの大局的な感じは掴んでいるようだが,それだけではプログラムは書けない
要素が1個とか2個になったときにも,想定の動きをしているか確認したか?
0493デフォルトの名無しさん2015/06/29(月) 22:28:37.75ID:vSUkOanW
>>492
神様ありがとう
0494デフォルトの名無しさん2015/06/29(月) 22:29:05.81ID:vSUkOanW
でもこっちは何故か
http://www1.cts.ne.jp/~clab/hsample/Sort/Sort6.html
ifを多用してない…

何故だ
0495デフォルトの名無しさん2015/06/29(月) 22:41:21.94ID:vSUkOanW
えええええええええええええ

1 2 3 4 (mid)6 3 2 1

まじかww

そういうことだったのか
tempが特殊な格納方法だったからか…


考えた人天才すぎる…
こんなカラクリよく思いついたな
0496デフォルトの名無しさん2015/06/29(月) 22:46:39.12ID:vSUkOanW
やっぱりプログラミング自分向いてない…
理屈っぽすぎる…
0497デフォルトの名無しさん2015/06/29(月) 22:49:12.40ID:MsD9xqBP
連投うざいわ
0498デフォルトの名無しさん2015/06/30(火) 02:59:22.65ID:cdRwV9j9
年齢に-1を打ち込むとコアダンプと表示されます。
どこがいけないのでしょうか?よろしくお願いします。
ttp://i.imgur.com/zhbWIkV.png
0499デフォルトの名無しさん2015/06/30(火) 03:59:21.23ID:W3oST2wA
>>498
そりゃそうでしょ

>>324と同じ間違いをしている

int data_input(man** data);

あとは

scanf("%s", data[i].name);
を
scanf("%s", data[i]->name);

以下同様

元のプログラムのdata_inputはあくまでポインタのコピーを受け取るだけで、mainのdataは変化してないからね
0500デフォルトの名無しさん2015/06/30(火) 04:06:34.36ID:W3oST2wA
あ、それと分かると思うけど一応

data = (man*)malloc(sizeof(man));
↓
*data = (man*)malloc(sizeof(man));

data = (man*)realloc(data, sizeof(man) * (i + 1));
↓
*data = (man*)realloc(*data, sizeof(man) * (i + 1));

ポインタのポインタは本来こういう使い方のためのものじゃないんだけど、するとしたらこれしかないし
構造体の中に入れて持って行った方が楽だよ
使う時は勘違いしやすいんで注意
0501デフォルトの名無しさん2015/06/30(火) 04:59:46.09ID:cdRwV9j9
>>499
なるほど!と思っていくつか直したのですがだめでした...
どこか余計なところまでいじってしまったのでしょうか...
ttp://codepad.org/8Jen5KgD
0502デフォルトの名無しさん2015/06/30(火) 10:15:21.59ID:z66kzZiU
>>501
main()でman **dataと書くからだよ
それだとポインタの領域とポインタのポインタの両方の領域を確保しないと正しく動かない
ポインタのポインタにするのはdata_input()だけでいい

都合上C++になっちゃったけどソース上げておくんで読んでほしい
ただしnewとかiostreamとかvector使ってないんで読めるはず

http://codepad.org/bMtuP5cY

これコア吐いてるのは一つも入力がないからだね
そういう所も本当は直さないとね
0503デフォルトの名無しさん2015/06/30(火) 10:45:55.96ID:5MEAi0u6
>>481
0x4a40020と0x00a40020は同じでしょうか?
それとも0x04a40020でしょうか?
0504デフォルトの名無しさん2015/06/30(火) 10:57:36.68ID:TyU2TXj2
>>503
そういう疑問に至った経緯を書いたほうが解決早いと思うよ
大体想像つくけど、違うか違わないかだけ答えても解決しないでしょ?
0505デフォルトの名無しさん2015/06/30(火) 10:58:06.08ID:n/kvsNLi
>>501
・Cは値渡ししかできない。ポインタ渡しとはアドレス値渡しの事。
・実引数と仮引数の違いを復習。
・ポインタ変数man *のアドレス値を関数data_input()に渡すので、引数の型はman **になる。
0506デフォルトの名無しさん2015/06/30(火) 11:04:02.41ID:5MEAi0u6
>>504
ウィキ上のとある仕様書に0x(4)a40020って書かれていて、
実際の処理で0x4a40020と書かれていて
意味がわからなくなりました。
0507デフォルトの名無しさん2015/06/30(火) 11:14:11.03ID:TyU2TXj2
それは文の前後から判断するしか無いけど、4がある場合とない場合とあるんじゃないの
もちろん数としては違う、前ゼロとかは10進と変わらん
Cで010 とか書いたら8進数だけどね。
0508デフォルトの名無しさん2015/06/30(火) 11:20:16.98ID:XY9Cx3p4
>>501
とりあえず、動くようにしたよ。
http://codepad.org/CJfhT28g

data_input()の中でも、ポインタの使い方があやふやだから復習すること。

37行目で何が違うか気づくはず。
40,43,45行目では配列方式の参照を、
47〜49は同じアドレスをポインタ演算で参照しておいたから参考にしてください。
0509デフォルトの名無しさん2015/06/30(火) 11:21:29.33ID:9bukWkLk
cで十進数の0はどうやって書いたらいいのですか?
0510デフォルトの名無しさん2015/06/30(火) 11:33:25.63ID:zX+VOIct
8進数の0で代用でw
(1-1)とか
0511デフォルトの名無しさん2015/06/30(火) 11:34:34.41ID:gmyFPynn
仕様書などで 00123 と表記された十進の値と比較するCのコードを書くのなら
頭の 0 は落として 123 と書く
0512デフォルトの名無しさん2015/06/30(火) 11:38:55.79ID:gmyFPynn
コード上 0x7b (16進) や 0173 (8進) は同じ値だけども、
仕様書との突合せで誤解を招くだろうから、そう書かない
0513デフォルトの名無しさん2015/06/30(火) 11:54:57.93ID:5MEAi0u6
0x(4)謎ですが、とりあえず動いたから間違ってないってことにしておきます。
ありがとうございました。
0514デフォルトの名無しさん2015/06/30(火) 11:58:54.84ID:gmyFPynn
仕様上 なんかの値は 16進で
0x4a40020 と 0xa40020 の両方がありえる ってことを
簡潔に書こうとしてるんでしょうよ

「仕様書はC言語でこのように書けという指令書ではない」ので
意図をくみとったうえでC言語でどうかくかを考えないとね (一般論)
0515デフォルトの名無しさん2015/06/30(火) 12:31:12.87ID:+uB1KRi8
>>509
もうそれ秋田
0516デフォルトの名無しさん2015/06/30(火) 14:13:58.86ID:cdRwV9j9
>>502
>>505
>>508
ありがとうございます、ついに動かすことができました。
まだ理解が追いついてない気がするのでもう一度じっくり自分で考えて見ます。
0517デフォルトの名無しさん2015/06/30(火) 18:34:56.46ID:M6BHk1xU
math.hを使わない絶対値の求め方を教えて下さい
0518デフォルトの名無しさん2015/06/30(火) 18:45:53.19ID:divopN93
fabsのプロトタイプ宣言を自分で書けばmath.hは要らない
0519デフォルトの名無しさん2015/06/30(火) 19:39:01.81ID:9bukWkLk
>>517
double absolute(double v)
{return v < 0 ? -v : v;}
0520デフォルトの名無しさん2015/06/30(火) 20:28:37.11ID:NJOHGXYM
思ったんですがプログラミング趣味な人ほどゲームプログラミング嫌いますよね?
特にCみたいな機械語に近い言語使いの人は。

これってやっぱりゲームみたいな分かりやすいのより、インフラシステムみたいに
厳格な社会の基盤のシステム構築のためのプログラミングのほうが敷居が高いと思う
からですか?

そしてゲームプログラミングとシステムプログラミングではやっぱり
後者のほうがレベルが高いんでしょうか?

プログラマーの方いれば教えて欲しいんですが
0521デフォルトの名無しさん2015/06/30(火) 20:45:18.85ID:pel5ZbCo
ゲームプログラミングの方がプログラミングスキルは高い
0522デフォルトの名無しさん2015/06/30(火) 20:50:53.00ID:uqQrfQWf
          {/: :/: :/:::::::::::::::::/: : : : : / : : : : : : : : : : : : : . \:::::::::::::::/
         /: : : : : : /:::::::::::::::::::{ : : : : /: : : : : : : : : : : : : : : :\ \:::::::::!
       /: : /: : : ∧:::::::::::::::::/: : : : /:/: : : : :/ : : : /: : :i: : : :i: ヽ  \::}
     イ : : : /: : : /:::::\:::::::::/: : :|: : :/:_: : //: : :/∧ : |: : : |: : :} 、  >  ___
   ∠: :/: : :/: { : : /::::::::::| \:/: :|: :|: :イj´: :.//: : ://  }: :| ⌒iヽ : : . 丶  /     \
      /: : :/ : |: : /::::::::::::|: |: : : : !: :!// j:/  {: : //   !: :| : : !: : : : : : ! ヽ/ そ そ お 
.    /: : :/: : :|: :/::::::::::::::|y: : : : :|: :|/ ィチ云ヽ|ノ     jハノ__V : : : :}: : |\| う  う .前
    /:| : /: : : :|:/:::::::::::::::::|r |: :i : |: :l/ /iilllliii}       イill| ヾハ: :/: : :ト、  な 思 が
    {人∧: : : :|:\r-、::::::::|:(|: :| : |: :| {illlliiiill!       {ill|}  ∧/: : :|ヽ ん う
       | : : /: : : :Γ ̄`、.|: :| : |: :|  ゙==''"         弋ノ /: |::\: :.}'つ だ ん
       V |: : : :リ: : :∧: |ハ| :|:.l ヘヘヘヘヘ      ’ヘヘヘ/: /|_ イヽト:ゝ ろ な   /
            i: : :/ V  V  ヽ |: :.ト     、-―-,    / :/: : : :|    ゝ う  ら /
           |/      /^メ、: |   ー  `~ "_ , イ |: :/|∧: :/  /       く
                /:::::::::::ヽ!´"'':ー-....._ ̄ {/  V |V   V  i  で  お   |
                /:::::::r/⌒\:::::::::::::::〉                 |  は 前  |
                  {:::::/      \≧"ヽ              |  な .ん  |
                  /          \  ト、              \   中 /
0523デフォルトの名無しさん2015/06/30(火) 20:52:39.00ID:N7k11D6f
別にゲームプログラミングをさげすんでいるとかじゃなくて、
むしろプログラミングをやっていると、ゲームプログラミングは半端じゃないスキルが必要
というのが分かってくるからね。
0524デフォルトの名無しさん2015/06/30(火) 21:13:21.64ID:i+Kc1vVh
マ板いけっての
適切なスレ選択すらできないのかねチミ
0525デフォルトの名無しさん2015/06/30(火) 21:37:40.44ID:ZcckwHFK
>>520
逆だろw

ゲームプログラムほど難しいものはないくらいだぞ。
0526デフォルトの名無しさん2015/06/30(火) 21:39:36.79ID:ah3rI407
>>525
例えば?
0527デフォルトの名無しさん2015/06/30(火) 21:47:47.28ID:pel5ZbCo
ゲームプログラマー上がりがシステムプログラムの仕事には移れるが
システムプログラム上がりがゲームプログラマーの仕事には移れない
つまりはそういうことです
0528デフォルトの名無しさん2015/06/30(火) 21:49:35.29ID:hhp9Lxaa
業務プログラム 多少庶路に時間が掛かっても、答えが間違っていなければいい。間違っていては駄目。
ゲームプログラム 多少答えが違っていてもいい。ひたすら早く処理できればおk。

オレ流解釈 異論は認める。
0529デフォルトの名無しさん2015/06/30(火) 21:49:45.67ID:kYz06WW/
ゲームを作るためにプログラム勉強したけどな。まずはベーマガから。
0530デフォルトの名無しさん2015/06/30(火) 22:03:05.06ID:HnzAl5vA
ゲームプログラミングはかなりハードル高いな
ゲームで遊ぶだけなら池沼でもできるが
0531デフォルトの名無しさん2015/06/30(火) 22:03:17.83ID:5IIg4rdj
>>528
賛同1
0532デフォルトの名無しさん2015/06/30(火) 22:03:40.18ID:5IIg4rdj
てか、また暴れだすから程々にな
0533デフォルトの名無しさん2015/06/30(火) 22:06:03.11ID:n/kvsNLi
>>528
速度を追求しつつ正確な演算を要求されるのが一番難しいって事になるな。
0534デフォルトの名無しさん2015/06/30(火) 22:29:18.42ID:3+NHF9fi
>>526
業務プログラムでグラボ必須で萌えキャラが動いてたらやり過ぎだってなる
05354922015/06/30(火) 22:36:53.62ID:CMabFk2P
>>495
まとまった作業領域を特に割り当てなくても実はマージソートを実装できるような予感がする
>>483 に触発された,参考書をみずに書けたらいいな
0536デフォルトの名無しさん2015/07/01(水) 00:10:15.14ID:8CsMilrf
>>530
業務プログラムは正解がある。
ゲームプログラムは正解が無い。
0537デフォルトの名無しさん2015/07/01(水) 00:24:48.66ID:43NAfoSR
無職QZが投稿した糞オナニー質問

357 名前:オナネタ(そんなに難しくはない)[sage] 投稿日:2015/06/30(火) 15:56:31.85 ID:xNq01ZTL [1/5]
[1]省略
[2]
3^n (n=0,1,2,....1000)
を出力するプログラム
main関数しか作ってはならない。
stdio.h string.h
のライブラリ関数しか使ってはならない。
マクロ関数もNG
行数20行以内
変数は整数配列一つのみ
書式
3^0=1
3^1=3
3^2=9
....
3^82=1330279464729113309844748891857449678409
.....
[3]
[4]
[5]省略
0538デフォルトの名無しさん2015/07/01(水) 00:27:32.83ID:4eZhXtdL
#include "sub.c"
ってやってもいいの?
0539デフォルトの名無しさん2015/07/01(水) 00:52:06.71ID:Zw/7ZO9t
やってもいい
0540デフォルトの名無しさん2015/07/01(水) 00:53:36.01ID:rcJELInO
20行以内という制約条件がバカまるだしだな。
0541デフォルトの名無しさん2015/07/01(水) 01:15:26.84ID:tpHgdX4X
>>538
そのソース名がsub.cだったりして
0542デフォルトの名無しさん2015/07/01(水) 01:22:44.82ID:f6kTfm9E
>>538
可能だが、作法的に間違っているのでたいてい
怒られるのでやめた方がいい
0543デフォルトの名無しさん2015/07/01(水) 03:28:37.87ID:coV3YcmE
typedef struct {
int* ex;
} kouzou;

というような宣言の後で
kouzou.*ex
というような使い方がしたいのですがエラーになります。
どうやって書けばいいのでしょうか?
0544デフォルトの名無しさん2015/07/01(水) 04:00:39.36ID:rcJELInO
*kouzou.ex
0545デフォルトの名無しさん2015/07/01(水) 04:04:42.34ID:98X3PxoR
構造体のメンバの型 って使い方したいの?
 関数の引数で、型を示すのに int * と記述するところを kouzou.ex で代用したい
とか もちっと具体的な記述がないと
0546デフォルトの名無しさん2015/07/01(水) 04:56:30.33ID:s8gT99zA
ポインタは めでたくもあり めでたくも無し
0547デフォルトの名無しさん2015/07/01(水) 11:15:31.52ID:/eEOVGmi
まあ>>544のとおりじゃね
聞きたいことが違ったらなんか言ってくるっしょ
0548デフォルトの名無しさん2015/07/02(木) 02:49:48.25ID:IjiULNYp
ttp://codepad.org/1pc6cIh1
本当は順位の計算もmainの外でしたかったのですが難しくてできませんでした...
どなたか例を書いてはくださらないでしょうか、よろしくお願いします。
0549デフォルトの名無しさん2015/07/02(木) 07:15:33.49ID:Y0nozqak
>>548
こういう事か?
元の順位の計算の仕方がよく分からなかったので書き換えた
それと成績と順位で構造体にした

http://ideone.com/XDrz0b
0550デフォルトの名無しさん2015/07/02(木) 10:46:13.94ID:Nk1ADPQF
>>548
できるだけオリジナル()のテイストを残してみた。

http://codepad.org/nkkaRkNp
0551デフォルトの名無しさん2015/07/02(木) 10:49:25.68ID:Nk1ADPQF
まちがえた。こっちw

http://codepad.org/Sdjndzhb
0552デフォルトの名無しさん2015/07/02(木) 20:26:42.86ID:4tz2xAQ6
ゲームプログラマーってどう難しいんだろ?
テンプレートはもうあって、グラフィックを用意するかしないかの違いじゃないの?
これは業務プログラムとも変わらない気がするけど
0553デフォルトの名無しさん2015/07/02(木) 20:31:27.90ID:4tz2xAQ6
どっちも経験したって人いるかな
居たら教えて欲しいな
0554デフォルトの名無しさん2015/07/02(木) 21:01:41.25ID:fR4mHX0O
>>552
キミのいうテンプレートがそう簡単に理解できるかな。
0555デフォルトの名無しさん2015/07/02(木) 21:03:42.93ID:GLjdUG+w
業務プログラムは会社がテンプレートを保存するけど
ゲームプログラマーは毎回一から作る羽目になる。
まぁ最近はエンジンを買ってやってるらしいけど。
0556デフォルトの名無しさん2015/07/02(木) 21:16:37.09ID:4tz2xAQ6
>>>555
いちから作る理由が分からない
横スクロールだと本当に簡単に作れるんじゃないの?
0557デフォルトの名無しさん2015/07/02(木) 21:17:40.21ID:4tz2xAQ6
だって例えばジャンプのプログラムなんて
int v 速度
int g 重力
if(buttonA)
{
int x; //位置
int y; //位置
x=x+1
}

jump(int g)
{
y=g*t*t-x
}


こんな感じじゃないの?
0558デフォルトの名無しさん2015/07/02(木) 21:23:23.08ID:t5xfvhty
天才プログラマー現る
0559デフォルトの名無しさん2015/07/02(木) 21:24:37.08ID:4tz2xAQ6
ジャンプは放物線を描くようなコードを書けばいいだけで
一から作る必要あるのかなと
0560デフォルトの名無しさん2015/07/02(木) 21:34:57.98ID:3P8p1QiE
ここでああだこうだ言っても伝わらないでしょ
自分でゲーム作ってみたらよろし
0561デフォルトの名無しさん2015/07/02(木) 21:35:52.83ID:3rjvAgUt
単純に書いたら壁をすり抜ける
0562デフォルトの名無しさん2015/07/02(木) 21:39:36.44ID:2QBvSmMa
昔は一度ジャンプすると着地するまで操作できないゲームが大半だった。
今は空中で方向転換可能なゲームがほとんど。
その操作可能な部分も空飛んでるかって言うぐらいのものからちょっと減速する程度のもの、何かのコマンド入れないと無理なもの。
多種多様な仕様にあわせたテンプレート作るぐらいなら毎回作った方が楽。
つか会社じゃなく、個人の頭の中に少々手を加えて使うテンプレートが入ってるのが普通。それを技術と言う。
0563デフォルトの名無しさん2015/07/02(木) 21:58:50.63ID:f0mLUFIo
>557
>だって例えばジャンプのプログラムなんて
空気抵抗は?横風や吹上、吹き降ろし、竜巻がある仕様では?
ジャンプ中に攻撃受けたときの軌道は?その攻撃は砲弾?レーザー?近くでの爆破?
そもそもジャンプしてるのは人?虫?鶏?ガーウォーク?
0564デフォルトの名無しさん2015/07/02(木) 22:09:06.69ID:QzIg/aEW
プ「Cでテンプレート(ライブラリ)つくったぞ!!」
リーダー「スマホ用ソフト作るからJavaで開発な。」
...
プ「Java用ライブラリも用意したぞ!!」
リーダー「あー、今回はゲームエンジン買ったからそれようのスクリプト言語で開発な。」
0565デフォルトの名無しさん2015/07/02(木) 22:51:25.59ID:a9U+9AyR
ttp://blog.livedoor.jp/nicovip2ch/archives/1913609.html
こういういい加減な世界だからと思っておけ。
0566デフォルトの名無しさん2015/07/03(金) 07:35:08.03ID:mrG1M549
>>555
テンプレートと言うより、要件定義だな。
どんな業務でも、要件定義が最も困難。
0567デフォルトの名無しさん2015/07/03(金) 08:00:16.45ID:cYS66H6n
業務用は大抵WindowsやUnix系でその環境が長期に続くのが予想できるので
自社ライブラリ活用の重要性が高い。
ゲーム環境は16bit以前はアセンブラが主流でCPUも多種あったのでライブラリ化が難しい。
コンシューマはハードメーカーがある程度ライブラリを用意していてくれるが、
そのハードの寿命が5年程度だから自社ライブラリが揃う頃には市場の寿命が来ている。

まぁ今はツクール的ソフトが出回ってるので変わったことしたいメーカー以外はそういうヤツの
付属ライブラリで作ってるんじゃないのかな?
あとはメーカーの社長の方針次第。
0568デフォルトの名無しさん2015/07/03(金) 11:19:48.00ID:UFh7Oq4r
>>6
3項演算式は、分かってる人が限定的に使うのがよろし
0569デフォルトの名無しさん2015/07/03(金) 14:06:26.84ID:FGYvKOaI
オーバーヘッドは悪
抽象化は罪
保守性はこの世の果てに置いてきた

ゲームプログラマーよ、己が牙と爪を研ぎ澄ませろ
0570デフォルトの名無しさん2015/07/03(金) 15:00:47.57ID:cAK/4qt5
ゲームだ業務だなんてのはC言語に限った話じゃないし完全にスレ違いじゃね?
0571デフォルトの名無しさん2015/07/03(金) 15:10:36.43ID:tM/c9bw4
区別つけれない子が定期的に湧く
0572デフォルトの名無しさん2015/07/03(金) 20:52:16.55ID:mLifhUye
#define NEXTBYTE (n--,*p++)
#define GRABBITS(j) {while(k<(j)){b|=((uLong)NEXTBYTE)<<k;k+=8;}}

このマクロってどういう動きになりますか?
zlibで実際に動いてるマクロなのですが・・・
括弧でくくった部分を左シフトするってどうなるのかわからなくて・・・。
0573デフォルトの名無しさん2015/07/03(金) 21:04:50.48ID:Ujl9kI+Z
*pをシフトする。そのあとpがインクリメントされる。
0574デフォルトの名無しさん2015/07/03(金) 21:58:42.25ID:/GnoFs63
>572
解からなかったらまず試す。
そのマクロを使ったサンプルソース作って見る。
0575デフォルトの名無しさん2015/07/03(金) 23:33:21.10ID:UFh7Oq4r
>>572
DOS時代にC使ってたんだが、今時はこんな定義て普通なのか?
0576片山博文MZ ◆T6xkBnTXz7B0 2015/07/03(金) 23:51:47.82ID:pBvJl+Tq
>>572
NEXTBYTEはカンマ演算子の解釈に従って*pを返すが、
副作用としてnをデクレメントし、pをインクリメントする。
#define NEXTBYTE (n--,*p++)
恐らくpが読み込み位置を表すポインターでnが残りの長さであろう。

次にGRABBITSだが、kは8ずつ増えている。これは1バイトの
ビット数である。|=は、OR演算と代入である。k∈[0,j)に対してkビット
だけ左シフトしてORをとるを繰り返すのだから、これはバイトを
次々取得して低いバイトからbを埋めているのである。
#define GRABBITS(j) {while(k<(j)){b|=((uLong)NEXTBYTE)<<k;k+=8;}}
0577NAS6 ◆n3AmnVhjwc 2015/07/04(土) 00:16:33.50ID:+0FMM883
マクロって・・・
inlineにしろよ
0578デフォルトの名無しさん2015/07/04(土) 00:21:29.98ID:VV3jJEnC
>>572
展開結果みればいいだけじゃん
0579デフォルトの名無しさん2015/07/04(土) 04:03:44.48ID:Fgik/57+
>>577
どたらも、良し悪しある。
関数にすると、型が限定されてしまう。
マクロだと意図しない動作する可能性ある。
0580デフォルトの名無しさん2015/07/04(土) 04:10:40.35ID:pRWF/8JR
どたらもな
0581NAS6 ◆n3AmnVhjwc 2015/07/04(土) 07:12:51.83ID:+0FMM883
>>579
(C++ならば)それなら inline template
0582デフォルトの名無しさん2015/07/04(土) 08:18:41.39ID:negZyq4J
Cスレ
0583デフォルトの名無しさん2015/07/04(土) 08:42:52.40ID:MQHT1P6q
幾度となく死線を潜り抜けてプログラムを極めた俺様に何でもきかんかい!
0584デフォルトの名無しさん2015/07/04(土) 08:49:33.00ID:negZyq4J
はい
0585デフォルトの名無しさん2015/07/04(土) 09:00:08.69ID:5JPjTv/9
>>581
ここはcスレ。
0586デフォルトの名無しさん2015/07/04(土) 13:38:46.30ID:Tzt2/bWL
これは秀逸だなって思うC言語のコードってあります?
前にマージソートの質問したもんですが、左配列用、右配列用と
一時保存用の配列を二つ用意せず一つ用意して、左右の端から走査して、
本来右を走査する配列が、左を走査しても問題ない、また逆も然りっていう
仕組みは凄いなって思いました。

他にあったら教えて下さい。まぁあってもそういうのって自分だけの秘密にしたいと
思うんですかね、中々言いたくないと思いますが。
0587デフォルトの名無しさん2015/07/04(土) 13:52:01.01ID:zkccIDTn
1~100を表示させてそのなかの任意の数字の倍数の総和を求めるプログラムの書き方を教えて下さい
a%b==0は使うことは分かるんですけど、総和をどう記述すればいいか悩んでます
aを足しあげるからaを最後に出力させるように書くと1<=a<=100の制限で100以下にしかなりません


#include <stdio.h>
main()
{
int a;
for(a=1; a<=100; a++)
{
  printf("%d\n",a);
}
int b,;
printf("任意の数字=");
scanf("%d",&amp;b);
for(b=1;b<=100;b++)
0588デフォルトの名無しさん2015/07/04(土) 13:56:18.26ID:7qFGbGe6
int t=0,a,b;
for(a=1; a<=100; a++)
{
  printf("%d\t",a);
}
scanf("%d",&b);
for(a=b;a+=b;a<=100) t+=a;

か?
0589デフォルトの名無しさん2015/07/04(土) 13:57:08.10ID:7qFGbGe6
× for(a=b;a+=b;a<=100) t+=a;
○ for(a=b;a<=100;a+=b) t+=a;
0590デフォルトの名無しさん2015/07/04(土) 14:04:13.84ID:XWq4mp45
int tmp=100/b;
int totatl = (a+a*tmp)*tmp /2;

整数の除算は余り切り捨てだよな?
05915902015/07/04(土) 14:05:25.39ID:XWq4mp45
って変数aじゃねぇ! orz
int totatl = (b+b*tmp)*tmp /2;
0592デフォルトの名無しさん2015/07/04(土) 14:10:27.16ID:zkccIDTn
例えば10が任意の数字だとしたら
10+20+30+40+50+60+70+80+90+100=
が出力されるってわけなんですが
それが表現できなくて歯がゆい
0593デフォルトの名無しさん2015/07/04(土) 14:58:12.11ID:zkccIDTn
助けてください発狂してしまいます
0594デフォルトの名無しさん2015/07/04(土) 15:03:03.01ID:3dpbiA1v
レスもらっといて何言ってんだ
0595デフォルトの名無しさん2015/07/04(土) 15:08:05.74ID:XWq4mp45
>592

>588-589 ←いじれば出来るだろ。
それさえも出来ないなら辞めちまえ。
0596デフォルトの名無しさん2015/07/04(土) 15:16:21.71ID:IoQCkQ/X
いつものかまってちゃんだろ。放置しとけよ。
0597デフォルトの名無しさん2015/07/04(土) 15:16:53.27ID:WvwJxr10
printfの中身を一字一句理解せず呪文と思ってるとそうなる

誰だCなんか勧めたのは
0598デフォルトの名無しさん2015/07/04(土) 17:10:44.98ID:hWeTlHuy
CountChar関数内で渡された文字が文字列中に何回出現するかを求めて返す

というのがわからない

#include <stdio.h>

char CountChar(char ss[], char dt[] );

int main(void);
{
char c[100]:

int n;

scanf("%lf", c);

scanf("%ld", n);

CountChar();

return 0;
}

char CountChar(char ss[], char dt[] )
{
int a;



}
0599デフォルトの名無しさん2015/07/04(土) 18:10:52.85ID:3xe091DX
>598
char 配列に実数データを格納して文字列と言い張る理由がわからない
0600デフォルトの名無しさん2015/07/05(日) 13:35:33.26ID:TrBrpITS
>>586
お付き合いした者です、刺激を沢山ありがとうございます
当初、作業領域なし/インプレイスで出来るんじゃないかと期待してたんですが、
いろいろ場合に当たった結果、やっぱり、当初与えられたデータ数程度の作業領域は必要なようですね
データ配列の「一個分位置ずらし」をコストとしてカウントしなければインプレイスにできるんですけども、
これは認めてもらえないだろうな‥

これはすごいっていうアルゴリズム‥たぶんいろいろあったんだとは思うけれども
感動する前にめんどくさいな、とか思ってしまっていたのでよくわかんない

とりあえず専用ブラウザから投稿させてほしい
0601デフォルトの名無しさん2015/07/06(月) 04:50:17.31ID:r+1ftyuS
ttp://www.nurs.or.jp/~sug/soft/tora/tora5.htm
最後の問題がさっぱりわからないです...
0602デフォルトの名無しさん2015/07/06(月) 07:43:11.38ID:UtQpsrfy
そうですか。
0603デフォルトの名無しさん2015/07/07(火) 04:41:15.27ID:QhcZ6j1E
QZには無理だから諦めろ才能ない無職
0604デフォルトの名無しさん2015/07/07(火) 15:25:58.45ID:uc2UtN37
>>601
こういうことかな?
http://codepad.org/bE5S9dWG

ただし、手元の環境で実行すると、

int:0 float:0.000000 hex:0
int:1318926965 float:1318926976.000000 hex:4e9d3a75

となって、0x4e9d3a74→0x4e9d3a75で、floatがintを追い越すから、
intとfloatで同じビットパターンが同じ値を示すのは、0以外無いんだけど。
問題の解釈を間違えてるのかな?
0605デフォルトの名無しさん2015/07/07(火) 21:16:09.81ID:BL0LeVkm
>>601

こんな感じかな
http://codepad.org/o1J0XqWR

int : 0, float : 0.000000, hex : 0
int : 1318926965, float : 1318926976.000000, hex : 4e9d3a75
0606デフォルトの名無しさん2015/07/07(火) 21:35:40.91ID:BL0LeVkm
問題よく読んだらポインタの項だった。。。
課題1からの流れを汲み取ってあげるとこんな感じかな

float f = (float)i;
if (i == *((unsigned int *)&f)) {
printf("int : %d, float : %f, hex : %x¥n", i, (float)i, i);
}
0607デフォルトの名無しさん2015/07/07(火) 22:32:58.19ID:3oy//rai
ホントに「intとfloatで同じビットパターンが同じ値を示す」数字って0以外にあるの?

ひょっとして、ビッグエンディアンなら0以外にもあるって事かしら?
0608デフォルトの名無しさん2015/07/07(火) 23:15:00.34ID:QhcZ6j1E
口調変えてもバレバレだろQZ
お前は低能なんだから低レベルの議論にするなよ永久無職
0609デフォルトの名無しさん2015/07/07(火) 23:19:00.26ID:BL0LeVkm
エンディアン関係ないから
0610デフォルトの名無しさん2015/07/07(火) 23:32:11.62ID:3oy//rai
そりゃそうだな、関係ないなw
じゃ、やっぱり問題の解釈が違うんかなぁ?
0611デフォルトの名無しさん2015/07/08(水) 00:36:50.13ID:QLXOn1Rg
QZには無理っていってんだろ
0612デフォルトの名無しさん2015/07/08(水) 07:38:44.88ID:IfW/Ay/U
QZが何者か知らんが、お前が虐められて悔しいのは理解した。
いつまでも引きずってないで、前に進んだ方があなたのためですよ。
人生のリハビリだと思って頑張って下さいね。
ではでは。
0613デフォルトの名無しさん2015/07/08(水) 08:44:03.79ID:xRK5vE6u
まじで、ネタで言ってたとしても「QZガ〜」は何の面白みもないからやめて欲しい。
ってか荒しだよね、スレから消えて欲しいいや板から消えて欲しい。
0614デフォルトの名無しさん2015/07/08(水) 10:36:42.18ID:O7aPWqfj
そういえばQZと片山のIDが同一だった発言を見た記憶がある
0615デフォルトの名無しさん2015/07/08(水) 10:47:21.02ID:O7aPWqfj
>509 :テスト ◆QZaw55cn4c :2015/04/29(水) 14:59:08.26 ID:z7uliay9
> テスト
>
>510 :片山博文MZ ◆T6xkBnTXz7B0 :2015/04/29(水) 15:28:32.77 ID:z7uliay9
> >>507 うまく修正できたよ。

これだったな
0616デフォルトの名無しさん2015/07/08(水) 13:36:33.08ID:SQs9ZFsr
そうなの?
0617片山博文MZ ◆T6xkBnTXz7B0 2015/07/08(水) 13:38:13.02ID:73Ug3Wex
Qzのトリップはバレてるからな
0618テスト ◆QZaw55cn4c 2015/07/08(水) 13:39:14.38ID:SQs9ZFsr
テスト
0619デフォルトの名無しさん2015/07/08(水) 14:56:17.56ID:O7aPWqfj
いや、第三者が証明しないと意味ないから
0620デフォルトの名無しさん2015/07/08(水) 14:58:18.09ID:O7aPWqfj
せっかくだからQZのトリップを公開してもらおうか
バレてるのなら今更だろ?

#自爆乙
0621デフォルトの名無しさん2015/07/08(水) 15:06:04.19ID:O7aPWqfj
片山ってもしかしてバカなのか?
0622デフォルトの名無しさん2015/07/08(水) 15:21:02.25ID:O7aPWqfj
IDの自演も無しにしてほしいな
0623 ◆96Z1eVei2s 2015/07/08(水) 16:10:47.83ID:PQcxNWhR
すぐバレる嘘つきやがって全く
0624片山博文MZ ◆T6xkBnTXz7B0 2015/07/08(水) 17:43:38.36ID:73Ug3Wex
2ちゃんねるのトリップ漏洩事件によってQZのトリップは漏れてる。個人情報保護法があるから、詳しくは言えないが
0625デフォルトの名無しさん2015/07/08(水) 18:04:11.30ID:gNgHjUOK
つまり君は漏洩した情報を入手してそれを利用したというわけだね。
その時点で個人情報保護法に抵触しているよ。

漏洩した情報にはクレジットカードの番号も含まれているわけだが。
通報しますか?しませんか?
0626デフォルトの名無しさん2015/07/08(水) 18:28:23.70ID:gNgHjUOK
::::::::::/           ヽ::::::::::::
:::::::::::|  ば  じ  き  i::::::::::::
:::::::::::.ゝ か   つ   み  ノ:::::::::::
:::::::::::/  だ  に  は イ:::::::::::::
:::::  |  な。       ゙i  ::::::
   \_         ,,-'
――--、..,ヽ__  _,,-''
:::::::,-‐、,‐、ヽ. )ノ      _,,...-
:::::_|/ 。|。ヽ|-i、      ∠_:::::::::
/. ` ' ● ' ニ 、     ,-、ヽ|:::::::::
ニ __l___ノ     |・ | |, -、::
/ ̄ _  | i     ゚r ー'  6 |::
|( ̄`'  )/ / ,..    i     '-
`ー---―' / '(__ )   ヽ 、
====( i)==::::/      ,/ニニニ
:/     ヽ:::i       /;;;;;;;;;;;;;;;;
0627(株)今北産業2015/07/08(水) 18:58:50.66ID:e1WcPcpR
自分の犯罪を白状するスレはここですか?
0628デフォルトの名無しさん2015/07/08(水) 19:21:27.57ID:Y4/HOrqp
ワロい過ぎた
0629デフォルトの名無しさん2015/07/08(水) 20:10:15.83ID:PAkk6Hqa
すみません僕は2ch初心者なんですがQZって誰ですか?有名な人なんですか?
0630片山博文MZ ◆T6xkBnTXz7B0 2015/07/08(水) 20:22:50.07ID:73Ug3Wex
>>629
QZは、C/C++の宿題スレに生息している。
0631 ◆QZaw55cn4c 2015/07/08(水) 21:20:35.04ID:dH1o5zRy
>>630
最近はみかけないね‥
0632デフォルトの名無しさん2015/07/08(水) 21:36:28.98ID:43f6DXxl
プログラム板にこの人ありって位、有名で有能なプログラマだよ。
覚えておいて損はない。
0633デフォルトの名無しさん2015/07/08(水) 22:34:01.71ID:P3MgPigD
じっくりコードを読む事ができるが理解が遅いプログラマと
すばやくコードを読むことができるが間違いが多いプログラマなら

どっちが欲しいですか?リーダーとして
0634デフォルトの名無しさん2015/07/08(水) 22:42:36.39ID:m5k9DQUy
有能ではないけど有名だな
プログラムの最後に /* end */ と付けるのが好きみたいだし
必要のない場所にすら二分木使ったり
0635デフォルトの名無しさん2015/07/08(水) 22:43:52.91ID:m5k9DQUy
あ、そうだ、QZに課題出しといてやるよ
二分木探索は再帰を使わない非再帰に書き換える事が出来る
そうする事によって高速化やスタックオーバーフローを防止できる
これやってみ
0636デフォルトの名無しさん2015/07/08(水) 22:57:48.60ID:tSvJTLLc
>>633
マ板池
0637デフォルトの名無しさん2015/07/08(水) 23:28:30.75ID:H34fJNZm
>>633
後者のそれ読めてないじゃないですか
0638デフォルトの名無しさん2015/07/09(木) 00:55:05.63ID:J7b7Mxuc
>>635
http://peace.2ch.net/test/read.cgi/tech/1313183984/793
0639デフォルトの名無しさん2015/07/09(木) 01:44:10.39ID:1/aylVmX
QZ怒りの自スレ紹介
0640デフォルトの名無しさん2015/07/09(木) 01:45:03.59ID:1/aylVmX
ほんと自演魔だなQZ
煽りまで自演かよ
0641デフォルトの名無しさん2015/07/09(木) 18:53:17.69ID:mde2xpnr
思ったんですけどchar文字なんてあるんでしょうか?
intの-127〜127を割り当てればいいだけでは?
わざわざchar型を実装する意味がイマイチ分かりません。
0642デフォルトの名無しさん2015/07/09(木) 18:55:57.53ID:Elm3Zapl
>>641
昔は今みたいに膨大な主記憶装置は無かったからね
0643デフォルトの名無しさん2015/07/09(木) 19:00:26.47ID:mde2xpnr
>>642
??どういうことですか?
0644デフォルトの名無しさん2015/07/09(木) 19:01:52.09ID:mde2xpnr
後疑問ですが
strcpy関数とかって返り値が0じゃないときは0以外の数ってなるじゃないですか?
何でずばり1って断定しないんですかねぇ…全然わかりません。
何で0のときは0(一致しないとき)、一致するときは0以外って曖昧だと思いません?
0645デフォルトの名無しさん2015/07/09(木) 19:03:48.96ID:wx8JTHvZ
1と比較するアフォを排除する為
0646デフォルトの名無しさん2015/07/09(木) 19:09:24.05ID:mde2xpnr
そもそも実装はどうなってるのって話ですよ
単純にreturn 1;って書けばいいのに
曖昧にするってことは

return rand()/%00;
みたいな感じなんですかね?
0647デフォルトの名無しさん2015/07/09(木) 19:11:14.26ID:B2+ONIF1
charって文字コードの型ってよりは、最小単位のバイト数である、が重要だと思ってるんだけど違う?
大量のデータをとりあえずchar型の配列とかポインタで格納し、unsigned charでキャストして、unsigned charひとつ分のバイトデータに分割し、加工してまたくっつけるてlong型返すとか。
0648デフォルトの名無しさん2015/07/09(木) 19:12:04.13ID:80WFJcEW
strcpyは第1引数返すだけだろ?
strcmpの事言ってるなら高速化のために単純に文字コードの引き算の結果返す実装があるから
0649デフォルトの名無しさん2015/07/09(木) 19:12:44.32ID:ntINu6aK
>>644
思わない。0と比較すればいいだけ
0650デフォルトの名無しさん2015/07/09(木) 19:15:24.14ID:ntINu6aK
>>647
charは文字のための型。最小かどうかは重要じゃない
06516472015/07/09(木) 19:19:34.86ID:b3vJbeQ5
>>650
でもこう書いてあるよ?
http://q.hatena.ne.jp/1381762366
0652デフォルトの名無しさん2015/07/09(木) 19:19:52.03ID:OqiP450p
漢字は入らないでしょ
0653デフォルトの名無しさん2015/07/09(木) 20:01:31.51ID:yvZx6GXv
メモリは沢山あるんだからcharなんか使わなくてint使えば良いだろ。俺は滅多にcharは使わない。
0654デフォルトの名無しさん2015/07/09(木) 20:03:16.30ID:mVlTl5rr
>643
・バイトという単位があって、それに合った型がchar型。
・C言語はアセンブラと相性がいい言語。アセンブラで出来ることがC言語でも出来た方が都合がいいと判断した結果。
・C言語が出来た時代は搭載メモリが1Mも無いハードが主流の時代。1バイトでも使用容量を減らすのが当たり前の時代。
・専門家が必要と判断した結果。お前みたいなヒヨッコには経験不足で理解できないだけだ。黙っとけ。
0655デフォルトの名無しさん2015/07/09(木) 20:23:52.40ID:QKowWqJV
アセンブラと相性がいいのはJavaでは?
だってjavaはメモリ操作関数Cより多いじゃん
0656デフォルトの名無しさん2015/07/09(木) 20:27:10.54ID:ditZL0Yg
C言語出来たときにJavaが存在してたと?
C言語の他にアセンブラと相性のいい言語があったら、他に相性がいい言語は存在しちゃいけないの?
0657デフォルトの名無しさん2015/07/09(木) 20:34:37.12ID:Mmd8OX6L
JavaはJava仮想マシン上で動くことが前提の言語。
0658デフォルトの名無しさん2015/07/09(木) 20:55:12.40ID:QKowWqJV
C言語のコンパイラをjavaで作った場合、C言語もJVMで動くってことになるんですか?
そこらへん分かってません。
コンパイラって結局なんですか?
0659デフォルトの名無しさん2015/07/09(木) 20:57:31.74ID:nD2SHEs8
「C言語の仕様はxxxと成ってますがxxxxの方がいいと思います。
なぜそのようになっていないのですか?」

・2chユーザーに聞くな!仕様決めたやつに聞け!
・理由が全く思いつかない?それはお前の経験不足のせいだ。もっと他人のソース読んだり、他の言語も勉強しろ!!ついでに国語を小学校からやりなおせ!
・面倒?そう思うやつはプログラマー向いてないから止めちまえ!!
0660デフォルトの名無しさん2015/07/09(木) 20:58:56.44ID:QKowWqJV
コンパイラの意味が分からないです
だってコンパイラだって何らかの言語で作られてるわけでしょ
Cだからアセンブラと相性がいいっていうのは何故?
0661デフォルトの名無しさん2015/07/09(木) 21:00:57.85ID:deXGtrLg
そもそもアセンブラが何かわかってなさげ
0662デフォルトの名無しさん2015/07/09(木) 21:03:38.82ID:i/qBMKbM
>658
とりあえずコレ読んどけ
ttps://ja.wikipedia.org/wiki/コンパイラ

>C言語のコンパイラをjavaで作った場合、C言語もJVMで動くってことになるんですか?
そのコンパイラがJVMで動くコードを吐くように作られてるならそうなる。
Windows用コードを吐くように作られてるならJVMでは動かない。そういうのをクロスコンパイラという。
0663デフォルトの名無しさん2015/07/09(木) 21:15:06.10ID:QKowWqJV
>>661
アセンブラは
INDEX
MAX
MIN
MOVEF
とかでしょ?分かってますよ


で疑問なのがCのコンパイラ作れ作れみたいな本って
全部CでCのコンパイラ作ってるんですよね?意味なくないですか?w
何でCのコンパイラを作らないとダメなのにCを介しているんだと…
遅くなるじゃないですか…

アセンブラで作るからCは高速なんだからアセンブラでコンパイラ作るべき
だと思うんですが、それは企業秘密なんですかね
0664デフォルトの名無しさん2015/07/09(木) 21:16:48.88ID:QKowWqJV
後思うんですけどjavaって遅い遅いって言われてるじゃないですか?
ならCをjava化すればいいだけでは?

java=遅いけど機能豊富
C=早いけど機能が単細胞アメーバ

なら単にCでjavaの機能実装すればいいだけでは?
単純にそう思います
0665デフォルトの名無しさん2015/07/09(木) 21:21:43.77ID:L3wwq7kt
>>655
>アセンブラと相性がいいのはJavaでは?
下に根拠らしきものが書いてあるが、こういう知識が
どうして訂正もされずに頭の中にあるのか不思議。
0666デフォルトの名無しさん2015/07/09(木) 21:22:38.79ID:JgLS8zBl
>>664
お前が作ってくれ。
知らないが、LLVMアセンブラと、javaのアセンブラ相当の部分の橋渡しを作ったらいいのでは。
0667デフォルトの名無しさん2015/07/09(木) 21:25:00.03ID:OqiP450p
Javaがネイティブに動くcpuを作れば良いのでは
0668デフォルトの名無しさん2015/07/09(木) 21:25:39.32ID:QKowWqJV
もっと思うんだけど
プログラミング言語が一番高速なのはアセンブラでしょ?
ならアセンブラで開発すればいいと思います
アセンブラにもクラスみたいな機能あったはず

なのに何で組み込み系ってC言語なんですか?

組み込みってリアルタイムシステムじゃないですか?
なら

中途半端に早いC言語より超高速のアセンブラで作ればいいのではないかと
単純にそう思うんですがね
0669デフォルトの名無しさん2015/07/09(木) 21:26:13.44ID:deXGtrLg
>>663
それはニーモニック

CコンパイラをC言語で書くのは
拡張性やメンテナンスをしやすくするためで意味がある
0670デフォルトの名無しさん2015/07/09(木) 21:26:33.56ID:JgLS8zBl
Javaバイトコード - Wikipedia
Javaバイトコードは、Java仮想マシンが実行する命令形式である。
命令
各バイトは潜在的な256個の値を持つが、256個の使用可能なオペコードを持つ。これらのうち、0x00から0xca、0xfe、そして0xffは割り当てられた値である。

命令は幅広い数に分類される:
?ロードおよびストア(例 aload_0,istore)
?算術および論理(例 ladd,fcmpl)
?型変換(例 i2b,d2i)
?オブジェクト作成および操作(new,putfield)
?オペランドスタック管理(例 swap,dup2)
?移動管理(例 ifeq,goto)
?メソッド呼び出しおよび復帰(例 invokespecial,areturn)




LLVM - Wikipedia
LLVM は、JavaとJava VMの関係のように、まず仮想機械をターゲットとした中間コード(ビットコード)を生成し、その仮想機械向けコードを特定のマシンの機械語に変換する。
この時言語やプラットフォームとは独立した最適化を行う。この方法によってLLVM は言語からもアーキテクチャからも独立しており、それぞれに特化した、
プログラミング言語固有のモジュールと、マシン向けコード生成部を用意することにより様々な言語アーキテクチャーに対応する。
0671デフォルトの名無しさん2015/07/09(木) 21:32:17.80ID:VxETAF0f
>>668
アセンブラでクラスとかお前は一体何を言ってるんだ?
0672デフォルトの名無しさん2015/07/09(木) 21:40:38.93ID:ZBdPMQSU
>>671
おい釣られるなよ
0673デフォルトの名無しさん2015/07/09(木) 21:50:46.43ID:QKowWqJV
javaの参照もメモリを制御してるのに
何でCは早くて、javaは遅いの?
0674デフォルトの名無しさん2015/07/09(木) 21:54:23.72ID:syH16MxP
それを説明するにはID:QKowWqJVの知識が低すぎるし、
その知識にあわせて説明すると解説本1冊作れるぐらいの情報が必要。

つまりそういう本を帰ってことだ。
とりあえずこれ読んでこい。

https://eb.store.nikkei.com/asp/ShowItemDetailStart.do?itemId=D2-00P83150B0
プログラムはなぜ動くのか
0675デフォルトの名無しさん2015/07/09(木) 21:59:02.87ID:QKowWqJV
>>674
分厚いなぁww
何故動くかくらいは分かりますよ
機械語の組み合わせを一つの文字にまとめる
まとめたのをまとめる、結局それの繰り返しでしょ?
0676デフォルトの名無しさん2015/07/09(木) 22:05:39.24ID:AjjL7yX9
>675
全くダメ!そんなイメージだからみんなの説明が全く理解できないんだよ。
読めと言ったらとにかく読め!それが出来ないなら来るな!
0677デフォルトの名無しさん2015/07/09(木) 22:09:22.41ID:QKowWqJV
>>676
書店で読んでみますわ
0678デフォルトの名無しさん2015/07/09(木) 22:13:00.09ID:JgLS8zBl
CやJavaが言語として速度が遅いという根拠はない。
最適化と動作環境がマトモならアセンブラと並ぶ。
0679デフォルトの名無しさん2015/07/09(木) 22:15:31.80ID:OqiP450p
メモリ使用量くらいかな、違うのは
0680デフォルトの名無しさん2015/07/09(木) 22:15:41.15ID:QRivXUtQ
× 機械語の組み合わせを一つの文字にまとめる
根本的に間違ってる。どこをどう間違ってるか説明不能なぐらい間違ってる。
0681デフォルトの名無しさん2015/07/09(木) 22:16:29.17ID:QRivXUtQ
>677
書店に迷惑だ!買うか図書館行け!
0682デフォルトの名無しさん2015/07/09(木) 22:27:36.35ID:G8eHbxF5
またADHDの人が暴れてるのか。。。
0683デフォルトの名無しさん2015/07/09(木) 22:33:51.62ID:Elm3Zapl
>>680
あながち間違いではないのでは?
視覚的に分かりやすいように機械語の命令
0684デフォルトの名無しさん2015/07/09(木) 22:35:19.65ID:Elm3Zapl
>>680
あながち間違いではないのでは?
視覚的に分かりやすいように機械語の命令セットを割当いるのだし
0685デフォルトの名無しさん2015/07/09(木) 22:37:43.13ID:1/aylVmX
平日昼間から自演とは笑わせる
0686デフォルトの名無しさん2015/07/09(木) 22:52:22.30ID:B2+ONIF1
はぁ、でたよ
あなたこそ、荒らすだけで何にも有益な情報だしませんよね。消えてください
0687デフォルトの名無しさん2015/07/09(木) 22:53:13.19ID:QRivXUtQ
あいつはあいまいな部分を自分に都合のいいように超拡大解釈させるから
例外排除、厳密主義で説明しないとむちゃくちゃなことになる。
0688デフォルトの名無しさん2015/07/10(金) 01:03:59.34ID:6ULcnTjH
あいつは何も創り出さないから、
パクリ屋の片山の方が少しだけマシ

しかし、あいつら重箱の隅をつついたり残飯あさりみたいなことして楽しいのかね?
0689デフォルトの名無しさん2015/07/10(金) 01:27:13.99ID:9OV4RYzP
QZ怒りの煽ってフルボッコにされるの巻き
0690デフォルトの名無しさん2015/07/10(金) 01:46:59.57ID:BbUNOMqp
ID出るようになってから本当にまともな情報出てこなくなったな。
にわかや間違った知識の初心者がただ暴れるだけのスレになってしまった。
まともな情報を提供できる人が減り、まともな情報を得られる人が減り、負のスパイラル。

このスレの存在価値って暇なときにそういう奴らをヲチれるってだけでしょ。
0691デフォルトの名無しさん2015/07/10(金) 02:23:27.56ID:WL3Gd+eK
>>690
ID は関係ない,むしろ有益
どちらかというと専用ブラウザを排除したことの罪が重い
0692デフォルトの名無しさん2015/07/10(金) 02:30:20.46ID:9OV4RYzP
さすが公開オナニーを正当化したいQZのいうことは違う
0693デフォルトの名無しさん2015/07/10(金) 05:31:28.35ID:Jvm9pak2
>>673
これはガベージコレクションが関係してるからじゃないんですか?
C系はRAII等でプログラマがメモリを自由に管理できるし、それも早さに繋がっているのでは?
0694デフォルトの名無しさん2015/07/10(金) 06:35:18.95ID:XAIUcdu4
>>641
大昔は、文字コードは8bitしか無かった。
最近出来の言語ではcharは文字用になって、多バイト文字も扱える物も有る。(新たに byte型が出来てる)
0695デフォルトの名無しさん2015/07/10(金) 07:46:38.37ID:+KcTu61v
C言語が速い(と思われる)のは引数の安全確認を省かれてる関数が多いから。
また、型が違う時のキャストも最小限にしかしないから。
0696デフォルトの名無しさん2015/07/10(金) 07:55:52.36ID:bM2M5Hwn
クラッシュした時にデフォルトで呼び出しダンプが吐かれるのを見て
何でこんな無駄なことやってるんだ!? と呆れるのがCグラマ
0697デフォルトの名無しさん2015/07/10(金) 12:54:35.54ID:xr+IAg9x
ある程度以上複雑な処理を、特定のCPUに特化したオプティマイザを持った
Cコンパイラが吐くようなコードをアセンブリ言語で書くなんて無理ゲーだろ。

もちろん諸般の事情で、どうしてもこの命令を使いたいなんてときには
書くこともあるがな。
0698デフォルトの名無しさん2015/07/10(金) 13:10:49.66ID:yh0xw8Sd
Cより遅くなる要因はランタイムの有無だろ。
0699デフォルトの名無しさん2015/07/10(金) 13:37:30.71ID:bM2M5Hwn
配列や構造体をスタックに置かない
例外やトレース情報など関数呼び出し時の無駄な処理
ライブラリの隅々にまで及ぶ徹底したオーバーヘッド撲滅の不足
みんな大好きガベージコレクション
0700デフォルトの名無しさん2015/07/10(金) 13:41:38.65ID:+KcTu61v
ペンティアム1ぐらいの時代まではアセンブラ=>C言語だった。
0701デフォルトの名無しさん2015/07/10(金) 14:20:51.40ID:uxjenI25
>>700
今でもアセンブラ 〉 C言語
これからもずっとアセンブラ 〉 C言語
0702デフォルトの名無しさん2015/07/10(金) 18:41:42.06ID:M5h7ZwqO
初心者です。どなたか助けて下さい。
マイコンのROMに書き込むプログラムについてです。

ソースファイルをビルドして書き込み形式ファイルに変換したときに、
ROM上の所望のアドレスに所望の値(ビットパターン)が書き込まれるように
ソースコードで制御することはできるのでしょうか?
ポインタ(?)を使えばできるのでしょうか?
0703デフォルトの名無しさん2015/07/10(金) 18:48:03.90ID:ZMvCzyvK
ROMライター側で (通信で)渡ってきたビットパターンを 特定のアドレスに書き込む
んだけど、なんか別の方法もあったようななkったような 忘れた

少なくとも
ROM上のプログラムが ROM上の記憶領域に対して書き込み方向のアクセスしても、書けないぞ
0704デフォルトの名無しさん2015/07/10(金) 19:00:18.44ID:Z2TbeI0I
>>702
答えになっているか分からないが
参考になるかな
http://www.ertl.jp/~takayuki/readings/c/no09.html
0705デフォルトの名無しさん2015/07/10(金) 19:59:07.41ID:9OV4RYzP
初心者ながらQZの自虐無知識自慢とか意味不すぎる
0706デフォルトの名無しさん2015/07/10(金) 20:09:33.91ID:6ULcnTjH
>>704
ていうか、その前の開発ターゲットと開発環境を質問すべきだろ
シッタカが過ぎて墓穴掘ってんじゃねーぞ
0707デフォルトの名無しさん2015/07/10(金) 20:34:42.91ID:86aMQ0Tc
そんなの開発環境とか関係ない。
普通のROMライタならモトローラSフォーマットかインテルHEXフォーマットで書ける。
そんなのうけつけ無い、手作りのROMライタつかってるなら、こんな所に質問にこない。
0708デフォルトの名無しさん2015/07/10(金) 21:14:28.60ID:cETlnxs2
>>680
どう間違ってるんですか?

ビット操作を文字列で置き換えたのがプログラミング言語なだけでは?

ビット操作をアセンブラにまとめて
アセンブラを言語でまとめる

それだけでは?
0709片山博文MZ ◆T6xkBnTXz7B0 2015/07/10(金) 21:17:42.37ID:DCa/3nZ3
>>708
条件分岐などの制御構造を持たないと、プログラム言語とは言えない
0710デフォルトの名無しさん2015/07/10(金) 21:19:49.53ID:9IScuLdJ
アホがソースコードで制御って質問してるだろーが
ちゃんと質問読めよシッタカめ
07117102015/07/10(金) 21:21:39.03ID:9IScuLdJ
>>707
0712デフォルトの名無しさん2015/07/10(金) 21:34:16.91ID:BKxBIosQ
>>708
マイコンキット買ってきて、機械語プログラムを体験してみたら?
0713デフォルトの名無しさん2015/07/10(金) 21:47:49.28ID:bM62bRJM
>>702
環境が分からないから概要だけかいつまむと…

所望のアドレスでsectionを作る。
そのsectionにマッピングするように指定したコンストのグローバル変数を定義して、初期値に所望のビットパターンをセットする。
コンパイルする。
焼く。
以上。
0714デフォルトの名無しさん2015/07/10(金) 21:54:23.17ID:mihfK1KR
>>694
> 大昔は、文字コードは8bitしか無かった。

大昔なら 7bit だろ
通信とかだと大文字限定にして 6bit もなかったっけ?

> 最近出来の言語ではcharは文字用になって、多バイト文字も扱える物も有る。(新たに byte型が出来てる)

Byte 型なんて VB6 の時代からあるし、Pascal で 0..255 範囲型定義すればバイトを扱えたと思う(こっちは処理系によるかも、もう記憶が曖昧)
0715デフォルトの名無しさん2015/07/10(金) 21:55:41.81ID:zONaO8sT
>708 電子回路理論は別の板です。ここではありません。
0716デフォルトの名無しさん2015/07/10(金) 22:09:15.13ID:Q4vtffLq
もしかしてコイツCPUかパソコン内にC言語ソースを解読する回路を持っていると思っているのではないかと本気で危惧。
0717デフォルトの名無しさん2015/07/10(金) 22:35:53.64ID:V5qL2Bce
そういやぁ昔モニタにもPC同様のOSが入っててPCからモニタを制御して映像を出してると思ってたやつがいたな。
同一人物か?
0718デフォルトの名無しさん2015/07/10(金) 23:08:56.72ID:4ayEXXFA
説明省いた所に勘違いの根源がありそうだけど…そこまで矯正してやる理由も利点も無いよなぁ。
0719デフォルトの名無しさん2015/07/10(金) 23:23:33.71ID:p4eBJ6uf
>>702
できるよ
組み込みのファームアップで良くやるし
0720デフォルトの名無しさん2015/07/10(金) 23:39:11.26ID:ykzgorl/
環境によってはこんなのもあったり、リンカスクリプト自分で書くとか
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491bj/BABGJHDC.html
0721デフォルトの名無しさん2015/07/11(土) 00:09:42.18ID:yb9b9uYv
一方私はhexファイルを加工するスクリプトを作った。
0722デフォルトの名無しさん2015/07/11(土) 12:59:55.02ID:2/75tmG3
>>643
昔のPCはメインメモリ16Kとかでメモリ制限多かったのと
当時8bitCPUのレジスタサイズと相性良い

今残ってるのはファーム系や通信系、その他互換性かな
まだまだ使われてるとこが多い
0723デフォルトの名無しさん2015/07/11(土) 14:11:53.54ID:EetLUFfU
8bitハードでC言語はやりたくないなぁ・・・。オールアセンブラが王道。
0724デフォルトの名無しさん2015/07/11(土) 16:27:10.55ID:JsXMIkKG
うちは8bitのpicでもcで書いてるけどね。
0725デフォルトの名無しさん2015/07/11(土) 20:15:30.31ID:N+MxSKL/
グズで役立たず程ネガティブ発言が多い
0726デフォルトの名無しさん2015/07/11(土) 21:44:07.25ID:s2rxtCK9
皆さんは標準ライブラリは覚えておく派?
それとも必要に応じて引用する派?
0727デフォルトの名無しさん2015/07/11(土) 21:55:07.98ID:pd57RWsF
必要に応じて調べている内に覚えちゃう派
0728デフォルトの名無しさん2015/07/12(日) 14:27:14.74ID:o+m4gL9U
ラッパー化して自分専用ライブラリに。
0729デフォルトの名無しさん2015/07/12(日) 15:30:24.74ID:NWI6O2xz
このスレでman見ろ言われてからman見る派
0730デフォルトの名無しさん2015/07/12(日) 15:49:19.24ID:BKAToTl0
manって女性差別だろ。
呼び方変えるベキ
0731テスト ◆QZaw55cn4c 2015/07/12(日) 16:04:50.67ID:MzVYHQ6B
manがだめなら、chinがあるさ
0732デフォルトの名無しさん2015/07/12(日) 16:19:47.96ID:NWI6O2xz
ねーよ
0733デフォルトの名無しさん2015/07/12(日) 19:37:07.12ID:/ikWn7Z2
man
0734デフォルトの名無しさん2015/07/12(日) 19:37:41.14ID:/ikWn7Z2
コマンド
0735 ◆QZaw55cn4c 2015/07/12(日) 20:25:06.10ID:fGWqKhxR
>>731
おもしろいと思ったのか?厨には早いから初心者スレにでも
0736デフォルトの名無しさん2015/07/13(月) 17:33:39.59ID:wlq5ajTC
>>703,704,713,719

レス本当にありがとうございます。

ご教示頂いた情報とリンクから、おそらくリンカスクリプトのSECTIONブロックに
.rodataのLMAを指定するのではないかなと理解しました。
まだ、具体的なところが分からないのですが、例えば、ROMの0xABCDEEと0xABCDEFに、
それぞれ11111111と00000000を書き込みたい場合、.rodataのLMAの指定方法(AT属性?)と、
LMA以降のアドレスにおける定数値とのマッピングはどのように指定すれば良いのでしょうか?

>そのsectionにマッピングするように指定したコンストのグローバル変数を定義して

と、思ったのですが、そもそも.rodataではなくて、個々のグローバル変数のLMAを
SECTIONブロックで定義できるのでしょうか?
0737デフォルトの名無しさん2015/07/13(月) 22:35:42.72ID:2DWcmP+D
QZF欄時代の糞課題
http://i.imgur.com/hbOo1dK.jpg?1
http://i.imgur.com/bCG68SN.jpg?1
http://i.imgur.com/zf9wrJ5.jpg?1
http://i.imgur.com/ZGD61Ml.jpg?1
http://i.imgur.com/Keoih8o.jpg?1
http://i.imgur.com/KDVwkUn.jpg
http://i.imgur.com/GsOscHJ.jpg
http://i.imgur.com/hMCBnbN.jpg
0738デフォルトの名無しさん2015/07/14(火) 21:43:26.21ID:YTQkbKn/
こんな感じじゃダメ?
. = 0x01ABCDEE;
.MySct1 : { BYTE(0xFF);BYTE(0x00); }
0739デフォルトの名無しさん2015/07/14(火) 22:36:42.79ID:rB0J2LcB
QZは出入り禁止
0740デフォルトの名無しさん2015/07/15(水) 02:52:47.11ID:4s2DsMfA
初歩的な質問させてください
同じ構造体の中のメンバーの値を比較して最大値を返すプログラムを作りたく、

max=data[0].a
for(i=1;i<=n;++i){
if(max<data[i].a)
max=data[i].a
}

と書きました
本来ならiが2の時の値が最大値になるのですが、nの値が出てしまいます

プログラムの間違いや構造体の比較の上で何か注意があれば教えてくださいm(_ _)m
0741デフォルトの名無しさん2015/07/15(水) 03:09:21.85ID:rDPbITG6
n個しかないのにn+1個目を呼んでるとか
0742デフォルトの名無しさん2015/07/15(水) 10:37:53.35ID:D5SeDEqJ
>>738
ありがとうございます!ありがとうございます!

まだ思うように動かないのですが、
教えて頂いたコードはリンカスクリプトのどの部分(.rodata?)に書けば良いのでしょうか?
それと>>713さんからsectionにグローバル定数をからめられることを教えて頂いたのですが、
「BYTE(0xFF);BYTE(0x00)」の指定をグローバル定数で指定することはできるのでしょうか?
0743デフォルトの名無しさん2015/07/15(水) 12:13:31.73ID:4Gs4+rfn
>>740
1) 「同じ構造多の中の」を比較するのに構造体自体が配列になっててそれを比較してるのはいいの?
2) data の配列はきちんと初期化してる?
3) max と data:a の型はなに?  signed だったりしない?
4) for ループの n はどっから出てきたの?
0744デフォルトの名無しさん2015/07/15(水) 12:22:13.28ID:nYMDh+es
配列は 宣言が type array[個数] で
array[0] 〜 array[個数-1] までしか使えない
0745デフォルトの名無しさん2015/07/15(水) 12:29:03.53ID:cCeHMBdr
max=0;
for(i=0;i<n;++i){
if(max<data[i].a)
max=data[i].a;
}
普通こう書くな
0746デフォルトの名無しさん2015/07/15(水) 12:44:08.91ID:AuuzzMz2
>>745
新人に書かせると、毎年結構な割合でそう書くんだが、学校で教えてるのかねえ?
0747デフォルトの名無しさん2015/07/15(水) 12:51:04.75ID:2t4VwR8U
>>745
値が全て負の時に結果が 0 になっちゃうからダメ
0748デフォルトの名無しさん2015/07/15(水) 13:27:43.35ID:s74LivYF
アンパサンド使えばいいじゃない!
0749デフォルトの名無しさん2015/07/15(水) 13:46:16.64ID:cCeHMBdr
>>747
負数は条件に入ってないでしょ
そう書いてあったらlimit.hから持ってくるだけだ
0750デフォルトの名無しさん2015/07/15(水) 13:46:50.73ID:cCeHMBdr
問題はそこじゃなくて添字の使い方
0751デフォルトの名無しさん2015/07/15(水) 13:48:35.13ID:j8XNr1jp
初期値を[0]から持ってくるのも、0件の時使えないしな。
0752デフォルトの名無しさん2015/07/15(水) 18:11:26.12ID:m0HrC+H+
>>740
その構造体の型とデータを、ここに貼ってみて欲しい。
本当に、i=2が最大なのか?
0753デフォルトの名無しさん2015/07/15(水) 18:50:46.02ID:fokCzg42
・data[n]の初期化忘れ。
・for(i=1;i<=n;++i){ が for(i=1;i<n;++i){ の間違い。
・dataに予定と違うデータが入っている。

さぁどれだ?
0754デフォルトの名無しさん2015/07/15(水) 19:20:52.98ID:ekVQGYCu
>>749
え、条件に入ってないの?
0755デフォルトの名無しさん2015/07/15(水) 20:44:13.64ID:uItIfLXq
>>742
リンカスクリプトって環境によってかなり違うからどこに書くかといわれても。
SECTIONS { }
の中のどこかとしか。
俺はMinGWでld -verboseでスクリプト吐いて、
SECTIONS { }の一番下に
. = 0x01ABCDEE;
.MySct1 : { BYTE(0xFF);BYTE(0x00); LONG(0xAA55CC33); }
↑こう書いて、gcc -T hoge.x foo.cでコンパイルリンクして、
当然実行できないから
objcopy -F ihex a.exe a.ihex
↑した後にa.ihex見たらそれっぽくできてたんで>>738と書いただけ。
後、↓見たいに一行で書かないとエラーになるリンカが昔あった。
.MySct1 0x01ABCDEE : { BYTE(0xFF);BYTE(0x00); LONG(0xAA55CC33); }

> ローバル定数で指定することはできるのでしょうか?
. = 0x01ABCDEE;
.MySct1 : { *(.MySct1) }
↑こう書いて、ソース中で↓こんな感じ。
char gHoge __attribute__ ((section (".MySct1")));
0756デフォルトの名無しさん2015/07/15(水) 21:13:12.09ID:2t4VwR8U
>>749
> 負数は条件に入ってないでしょ
わざわざ元の奴より改悪してどうするよ w

>>751
n = 0 の時は最小値自体が存在しないからループにはいる前にテストすべき
0757デフォルトの名無しさん2015/07/15(水) 22:49:11.41ID:D5SeDEqJ
>>755
レス本当にありがとうございます!!
ゴールに近づいてきた気がします!

頂いたレスのグローバル定数のところなのですが、
>. = 0x01ABCDEE;
>.MySct1 : { *(.MySct1) }
>↑こう書いて、ソース中で↓こんな感じ。
>char gHoge __attribute__ ((section (".MySct1")));

ソース中でconstで定義したMySct1を上(char〜)のように指定するということで合っていますでしょうか?
おそらくあまりの無知に驚かれていると思いますが何卒お導きをお願いします!
0758デフォルトの名無しさん2015/07/16(木) 01:01:14.23ID:RYdqwZWN
>>757
const char gHoge[2] __attribute__ ((section (".MySct1"))) = {0xFF,0x00};
> ソース中でconstで定義したMySct1を上(char〜)のように指定するということで合っていますでしょうか?
ソース中でconstで定義したgHogeを.MySct1セクションに配置。
0759デフォルトの名無しさん2015/07/16(木) 19:35:19.57ID:/5WSEGYs
>>758
できました!
758さんのおかげです!本当にありがとうございました!
0760デフォルトの名無しさん2015/07/17(金) 22:13:40.88ID:oJCZp1Jy
文字列をパターンと比較してテキスト文字からそのパターンを見つけるっていう
プログラムで

mがパターンの文字列で
T()がテキスト文字の配列
P()がパターン文字の配列

照合するためのループが
台形括弧 j>m or T(i+j-1)≠P(j)
     j=j+1

という事ですが、このループ条件って正しいでしょうか?
だってjがm以上になれば延々とループすることになりますよね

これ11年度のAP試験の問題ですが、解答見ても分かりません。
何で一致しない限りjを進めるんでしょうか?
一致しない時点でjではなくiを増やすのが普通だと思うのですが、どういう
勘違いをしてるのか自分でもわかりません。
0761デフォルトの名無しさん2015/07/17(金) 22:17:38.93ID:oJCZp1Jy
台形=C言語のfor文の()
っていう理解でいいでしょうか?

もう少しプログラムを丁寧に書きます。

i→1
穴埋め→last
0→found

始点移動ループ台形括弧内[found≠0 or i>last]
1→j

照合ループ台形括弧内[j>m or T(i+j-1)≠P(j)]
穴埋め
照合ループ台形括弧閉じる

穴埋め

この穴埋めが>なら1→found
この穴埋め≦ならi+1→i

始点移動ループかっこ閉じる

プログラム終了
0762デフォルトの名無しさん2015/07/17(金) 22:19:41.86ID:oJCZp1Jy
2番目の穴埋めでjをインクリメントしてるのです。
一致しないのにインクリメントって意味があるんでしょうか?
テキスト文字列のindexを進めるのだからiをインクリメントするのは
分かるのですが、一致しないことがわかって何故パターン文字列の
jをインクリメントするのか分かりません。まさか誤植じゃないですよね?
さすがに僕の勘違いだと思いますが、すっきりしないです。

Cのforとフローチャートのループは仕様が違うんですかね…
0763デフォルトの名無しさん2015/07/17(金) 22:20:53.16ID:hZkEqQnf
すまんが C で書いてくれ‥
0764デフォルトの名無しさん2015/07/17(金) 22:22:25.76ID:62hGZ/Zb
>>761
はなはだしくスレ違い。
0765デフォルトの名無しさん2015/07/17(金) 22:41:36.43ID:oJCZp1Jy
>>763
たぶん
i=1
last=?1;
found=0;
for(found!=0 || i>?1)
j=1;
for(j>m || T(i+j-1)!=P(j))
{?2;}
?3;
if(?3)found=1;
else i=i+1;
}

です。
?2がj=j+1
ということですがこれが理解不能です。
0766デフォルトの名無しさん2015/07/17(金) 22:43:35.44ID:oJCZp1Jy
i=1
last=?1;
found=0;
for(found!=0 || i>?1)
{
j=1;
for(j>m || T(i+j-1)!=P(j))
{?2;}
?3;
if(?3)found=1;
else i=i+1;
}

こうですね、forの後の{忘れていましたので…
0767デフォルトの名無しさん2015/07/17(金) 22:45:08.30ID:oJCZp1Jy
jが一旦mを超えたら、永遠にループをしてしまうと思うのです。
自分の目がおかしいのかもしれませんが、何に躓いてるんでしょうか…
1日考えてここまで理解できないプログラムってそうないんですけどね
0768デフォルトの名無しさん2015/07/17(金) 22:52:35.42ID:oJCZp1Jy
?もちゃんと書きます、ごめんなさい。

i=1;
last=n-m+1;
found=0;
for(found!=0 || i>last)
{
j=1;
for(j>m || T(i+j-1)!=P(j))
{j=j+1;}
if(j>m)found=1;
else if(j≦m) i=i+1;
}
0769デフォルトの名無しさん2015/07/18(土) 00:12:13.32ID:4wSKeiNn
問題は省略するな全部正確に書き写せ。
それが出来ないなら問題の写真をうpして質問しろ。
0770デフォルトの名無しさん2015/07/18(土) 00:19:26.90ID:oprjiCWN
>>769
一応全部ですが、フローチャート?ifをひし形みたいにする表記って何っていう
んでしょうか?まぁそれをCに変換したまでです。
0771デフォルトの名無しさん2015/07/18(土) 00:35:08.49ID:4wSKeiNn
問題文を正しく書き写しているというのなら、問題がおかしい。
そもそも、n-m+1ってなに?
mがパターンの文字列なんでしょう?nからパターンの文字列を引いて1足すってどういうことだよ。
0772デフォルトの名無しさん2015/07/18(土) 01:24:25.18ID:VyGMEck6
>>768
まずは日本語から覚えよう
0773デフォルトの名無しさん2015/07/18(土) 01:54:50.50ID:Qj7RPCLj
擬似言語わかってないだけでしょ
0774デフォルトの名無しさん2015/07/18(土) 02:09:23.66ID:zVnebLmb
たぶんこう.
https://ideone.com/xSZoob
0775デフォルトの名無しさん2015/07/18(土) 02:12:30.32ID:zVnebLmb
そして照合失敗時の判定し忘れたわ
0776デフォルトの名無しさん2015/07/18(土) 02:29:45.91ID:zVnebLmb
ごめん,デバッグせずにおかしそうなとこだけ変えてコードはったわ.
ちゃんとデバッグしたやつ
https://ideone.com/cIsFa5
0777デフォルトの名無しさん2015/07/18(土) 08:25:27.89ID:oprjiCWN
>>771
疑似言語だと思います。配列が1始まりなんで
その関係でn-m+1っぽいそうです。

>>776
本当にありがとうございます。
未だに分かりません。何故一致しないのに、j++するんでしょうか…
0778デフォルトの名無しさん2015/07/18(土) 08:29:23.23ID:oprjiCWN
えええええ何で&&なんだ…
参考書の方は疑似言語だけどorになってました。
両方のループもorでした。疑似言語ってor=&&なんですか?
0779デフォルトの名無しさん2015/07/18(土) 08:48:06.38ID:oprjiCWN
http://i.imgur.com/BBHdpQN.jpg

これです。orになっています。
0780デフォルトの名無しさん2015/07/18(土) 08:54:08.55ID:5OYZKZ4e
それループの脱出条件だろ
0781デフォルトの名無しさん2015/07/18(土) 09:01:16.48ID:oprjiCWN
>>780
Cとつまり逆ってことですか
0782デフォルトの名無しさん2015/07/18(土) 09:16:32.55ID:42lL/E8Y
なぜiの方には疑問をいだかないのか
0783デフォルトの名無しさん2015/07/18(土) 09:23:58.90ID:oprjiCWN
これ流れ図ですか、流れ図には制御条件が、成立時条件なのか、不成立時条件なのか
明確な規定はないんですか?
0784デフォルトの名無しさん2015/07/18(土) 09:32:28.07ID:42lL/E8Y
まずはググろうね
そもそもこういうのC言語に変換する必要ないし
スレチね、うん
0785デフォルトの名無しさん2015/07/18(土) 10:36:12.95ID:9KsA62Ua
条件式の中身を読み間違えてるんだね
j > mは 「jよりmが小さい時」じゃなくて「jがmより大きくなるまでの間」って事だね

≠ も同じで「等しくない時」じゃなくて「等しくなくなるまでの間」だね

or は && で間違いないよ うん
0786デフォルトの名無しさん2015/07/18(土) 10:39:46.48ID:9KsA62Ua
本物のcはそんなのじゃないからややこしいよね
0787デフォルトの名無しさん2015/07/18(土) 10:49:36.80ID:9KsA62Ua
違うね orは || 「または」だね
ごめん
0788デフォルトの名無しさん2015/07/18(土) 10:56:48.34ID:oprjiCWN
for(i=0; i<=10; i++)はiは10以下のとき処理

台形括弧内 A or Bは、AまたはBのときループを抜ける、言い換えれば、
AまたはBになったときループを抜けるですか…

書いてくれないとわかりませんよね…後味が凄い悪いです
すっきり感もないですし…
0789デフォルトの名無しさん2015/07/18(土) 11:12:07.27ID:5OYZKZ4e
プログラムのコメントにいちいち言語仕様の解説を書けと?
0790デフォルトの名無しさん2015/07/18(土) 11:41:12.21ID:42lL/E8Y
>>788
お前がCで置き換えて勝手に勘違いしただけでしょ
0791デフォルトの名無しさん2015/07/18(土) 12:10:59.83ID:9KsA62Ua
>>788
コードは776さんが書いてくれた奴で納得してくれないかな…
キミを混乱させたのはor…だよね
これ、条件さえ満たせばどっちでもいいんじないかな?
&&でも||でも…

ごめんね よく分かってないのに口挟んで
0792デフォルトの名無しさん2015/07/18(土) 13:03:00.30ID:ahU+/wSx
>>760は、780が言うようにループ脱出条件をループ条件と勘違いしてただけだね
すぐ上に同じ記号の始点移動ループがあるのに、そっちは無視してたんかね
0793デフォルトの名無しさん2015/07/18(土) 13:05:09.58ID:nQU9MOUl
歴代の困ったちゃんがもし同一人物だとしたらと考えたら…
0794デフォルトの名無しさん2015/07/18(土) 13:16:03.17ID:GGLH3rbf
そいつさえ叩いてしまえばみんな幸せ
0795デフォルトの名無しさん2015/07/18(土) 14:11:23.82ID:1dCgaP/A
他のスレにも>>788みたいなのいたが同じ奴か
0796デフォルトの名無しさん2015/07/18(土) 14:49:18.66ID:oprjiCWN
>>791
混乱させたのはorというより、orがあるために「この条件に至るまでは
脱出しない」ってのが読み取れなかったんですよ。

もし一つの条件だと、Cのforと仕様と違うじゃんって分かったんですけどね…

どちらか満たせばいいって事に関してはCと流れ図で変わらない、だってorは
そういう意味なんだから、ですけど、まぁそれにしてももう少し仕様くらい
描いてほしかったですね…
だって流れ図なんて規格ないじゃないですか…、うーん実際の試験では
書いてあったんですかねー、そこらへん分かりませんが、問題の
愚痴っぽくなってすいません
0797デフォルトの名無しさん2015/07/18(土) 14:50:48.31ID:oprjiCWN
>>789
試験ってそういうもんじゃないですか?
というかもしかしたら表紙に書いてあるかもしれませんね
FE受けたときは最初らへんのページに書いてありましたから
0798デフォルトの名無しさん2015/07/18(土) 14:51:50.75ID:oprjiCWN
>>791
いや脱出するための条件なら&&はダメかと…
0799デフォルトの名無しさん2015/07/18(土) 14:53:45.90ID:nQU9MOUl
やっぱり同一人物だろこいつ。
「俺は理解してないけど間違ってない!!」ってところが毎回同じ。
0800デフォルトの名無しさん2015/07/18(土) 14:56:38.69ID:5OYZKZ4e
情報処理試験受けたことがあるのに流れ図のJIS規格の存在知らんとか
0801デフォルトの名無しさん2015/07/18(土) 19:06:36.82ID:9ORWa3DX
流れ図って大正だろ。昭和の頃には廃れてたぞ。
0802デフォルトの名無しさん2015/07/18(土) 20:11:14.44ID:kyfBrlqO
>>801
お前、幾つだよ w
0803デフォルトの名無しさん2015/07/18(土) 21:00:52.98ID:t59zGKRm
リレーとか真空管でロジック組んでた人かな?
0804デフォルトの名無しさん2015/07/18(土) 21:55:25.96ID:SEYwYF1P
日本の潜水艦はリレーやタイマーがむき出しでついてるよね。

あれは攻撃を受けたときに自力で修理して動き続ける決意の表れだと思います。
実際に乗らない上層部の決意!
0805デフォルトの名無しさん2015/07/18(土) 21:58:23.97ID:SEYwYF1P
日本同様潜水艦運用歴の長いドイツはグラスコクピットだけど、どっちが実戦で強いだろうか。
0806デフォルトの名無しさん2015/07/18(土) 22:00:06.32ID:SEYwYF1P
ちなみに電子化が進んでいるとはいえドイツも配管やバルブは剥き出しです。
0807デフォルトの名無しさん2015/07/18(土) 22:01:53.95ID:5OYZKZ4e
リレーだったらラダー図だろう…
0808デフォルトの名無しさん2015/07/18(土) 22:14:10.73ID:akb2I6pr
windowsでstdoutで文字を表示するプログラムを作って
別のプログラムでコマンドライン引数を表示するプログラムを作ったんですが
パイプでつなぐことができません。
argcの数が1で自身のフルパスしか表示されません。
a1 | a2 ってコマンド打ちました。
a1文字表示プログラム
a2引数受け取って表示するプログラム
stdin,stdoutの考え方が間違ってる?
0809片山博文MZ ◆T6xkBnTXz7B0 2015/07/18(土) 22:17:47.69ID:DL93D/kr
>>808
コマンドライン引数と標準入出力は直接は関係ないよ
0810デフォルトの名無しさん2015/07/18(土) 22:29:39.72ID:akb2I6pr
>>809
windowsのコマンドのオプションはコマンドライン引数で受け取ってるっとおもってました。
関係ないものなんですね。スッキリしました。ありがとうございます。
0811デフォルトの名無しさん2015/07/18(土) 22:46:09.77ID:pJsO7K4C
え?
0812片山博文MZ ◆T6xkBnTXz7B0 2015/07/18(土) 23:09:08.42ID:DL93D/kr
標準入出力は勝手に開かれ、勝手に閉じる。
リダイレクションによって標準入出力のターゲットが切り替わる。
コマンドライン引数のファイルを開くのがfopen,freopen。
0813デフォルトの名無しさん2015/07/18(土) 23:11:38.06ID:zUetklfC
コマンドラインでのパイプってのは
プログラム a1 の標準出力(stdout) を
プログラム a2 の標準入力(stdin) に連結する操作

手入力するんじゃなく、「プログラムa1の出力結果」を入力にしちゃうわけ
0814デフォルトの名無しさん2015/07/18(土) 23:16:07.64ID:zUetklfC
補足
パイプの動作は a1 の出力を a2 起動時の引数に並べるわけじゃないよ
0815デフォルトの名無しさん2015/07/18(土) 23:21:54.07ID:Oy2k4qUz
本当は理解してて痛い質問者を装ってるようにしか見えんわ。
0816デフォルトの名無しさん2015/07/18(土) 23:26:27.90ID:oDsD2wef
com1 | com2

Winは知らないけど、Linuxではパイプラインでつないだ、
コマンド1・2は別のプロセスで、
標準入出力を使って、データを受け渡しているだけ

PowerShellの関数なら、
関数名 param1 param2
のようにすれば引数となり、
シェル変数 $args[0] などで参照できる

$ary = ls -File c:\scripts\*.* -include *.txt,*.log

一方、コマンドではこのように、
特定のディレクトリ内のファイルで、特定の拡張子のもの、
のようにオプション指定をするので、引数は使わない
0817デフォルトの名無しさん2015/07/19(日) 00:12:11.51ID:eFeTA1Y7
id変わってると思いますが>>808です。
みなさん色々説明して下さってありがとうございます。
痛い質問者装ってるわけではありません。
本当に勉強中の者です。
>>814さんの補足のようにa1の出力をa2の引数にできると思ってました。
ここが根本の勘違いのようでした。
お騒がせしてすみません。
0818デフォルトの名無しさん2015/07/19(日) 00:24:43.98ID:5PwANh2+
>>815
なにが楽しくてんなことやってんだろな
死ねばいいのに
0819デフォルトの名無しさん2015/07/19(日) 00:31:48.87ID:5PwANh2+
>>817
痛い質問者ってのは頭も性格も悪い
>>796のこと
0820デフォルトの名無しさん2015/07/19(日) 00:36:32.15ID:eFeTA1Y7
>>819
自分の質問の間に書かれてたので自分の事かと思いました。
わざわざありがとうございます。
0821デフォルトの名無しさん2015/07/19(日) 16:54:58.11ID:+63DwPcF
C言語で配列は0から始まりますが、実際に扱うデータの番号は1からが多いので
そういう場合配列も1から始めたほうが良いんでしょうか?
ずれてしまうのはやはり厄介だと思います。それでも0から始めたほうがいいなら
そのメリットなど教えてください。
0822デフォルトの名無しさん2015/07/19(日) 17:26:04.90ID:egOXVksg
言いたいことが分からん
a[0]を未使用のまま
1個分無駄にしてメモリ使用したいというのならそうすればいい

ただし変なおぼえ方をして「ボクはC言語使えます」とか言ってたら蹴飛ばされる
メリットがわからないなら「そもそもCを使うべきかどうか」から疑った方がいい
0823デフォルトの名無しさん2015/07/19(日) 17:28:54.54ID:egOXVksg
おっと大事なことをいい忘れていた
Cの隠れた前提として

コンピュータに楽をさせるために人間様が苦労を厭わない

というのがある。イヤなら他を探すべき
0824デフォルトの名無しさん2015/07/19(日) 20:19:42.77ID:SgxJVovQ
>>821
どうぞご自由に。
いずれ自分でわかるときがくると思う。
0825デフォルトの名無しさん2015/07/19(日) 20:44:13.20ID:wG1rbxp8
データの番号(というのが何物かわからんが)と配列のインデックスは、同じ整数同士であっても
意味が違うんだということを明確にしていればどっちでもかまわんだろう。
0826デフォルトの名無しさん2015/07/19(日) 21:17:13.15ID:AxVShlkv
CはOS(Unix)を書くために設計された言語なので、
データに(数学の慣例に従い)1で始まる序数を付けるという概念的な美しさよりも
アドレス+オフセットでデータをポイントする(もしくはアドレスそのもの=ポインタで直接ポイントする)
という計算機のアーキテクチャが透けて見えるメリットを優先したということだと思う
0827デフォルトの名無しさん2015/07/19(日) 22:10:06.74ID:gF+ri5Ym
どうしても1から始めたい、無駄なコードやメモリは使いたくないのであれば
他の言語あたったほうがよろしいかと
0828デフォルトの名無しさん2015/07/20(月) 01:47:44.97ID:joK6s3J+
自然数が0から始まらなかったら、集合論がやりにくいだろうが
0829デフォルトの名無しさん2015/07/20(月) 03:22:51.94ID:P/gUAIjL
>>828
ちょっ集合論の公理から1+1=2を証明する人でつか
0830デフォルトの名無しさん2015/07/20(月) 03:26:56.43ID:LmmOYuiW
自然数は1から
0831デフォルトの名無しさん2015/07/20(月) 04:30:37.33ID:ERLwMp/J
自然数を 0 からとする流儀もあるんだよ
0832デフォルトの名無しさん2015/07/20(月) 06:11:54.78ID:/eaXeO3L
どう見ても釣りやろ...
0833デフォルトの名無しさん2015/07/20(月) 08:03:33.48ID:DyR30667
よんよんよよん。
0834デフォルトの名無しさん2015/07/20(月) 10:56:33.69ID:Vtqi9X2t
ヨーロッパでは日本で2階と言ってる階を1階というらしい。
0835デフォルトの名無しさん2015/07/20(月) 20:28:02.59ID:C1R2wVAq
>>834
そんなのイギリス英語の基本だろ。
0836デフォルトの名無しさん2015/07/20(月) 20:41:14.80ID:n95qMHkT
何で二階が一階なんですか?
じゃあ一回は二階なんですか?
0837デフォルトの名無しさん2015/07/20(月) 21:15:51.15ID:UhiBY71r
GF 地面と同じ床      −1階
1F 地面から1個上の床  −2階
2F 地面から2個上の床  −3階
0838デフォルトの名無しさん2015/07/20(月) 21:18:21.00ID:gdO7FQR/
GroundFather
0839デフォルトの名無しさん2015/07/20(月) 21:41:43.70ID:n95qMHkT
なんだイギリス人は頭悪いのか。
0840デフォルトの名無しさん2015/07/20(月) 21:48:49.32ID:4CXi8vOi
ガールフレンド
0841デフォルトの名無しさん2015/07/20(月) 21:57:34.42ID:TvySEdcJ
地面が0階じゃないのはおかしいとつねづね思っていた
0842デフォルトの名無しさん2015/07/20(月) 22:03:37.15ID:qFejjwvs
ヨーロッパのエレベータは、地上階が0とかgroud floorのGのボタン表記になってるな
0843デフォルトの名無しさん2015/07/20(月) 22:28:54.40ID:AGKnnOa8
くおえうえーーーるえうおおお(^q^)
0844デフォルトの名無しさん2015/07/20(月) 22:38:05.03ID:4CXi8vOi
>>842
そこはGスポットだから押しちゃダメ
0845デフォルトの名無しさん2015/07/21(火) 08:45:12.18ID:0FycKRkr
>>841
スレが1からスタートしていることに対しても疑問を思うクチですか?
0846デフォルトの名無しさん2015/07/21(火) 08:56:17.65ID:F8CwWRVR
そういや時刻も 0 始まりだな
0847デフォルトの名無しさん2015/07/21(火) 12:22:44.82ID:MswFwDh+
地上1階と地下1階の間に0階と言えるものは何かありませんか?
0848デフォルトの名無しさん2015/07/21(火) 13:10:51.08ID:LE8EkOwN
それがあるかないかわかったところで、それとcと何の関係があるの?w
0849デフォルトの名無しさん2015/07/21(火) 13:24:18.33ID:rxIs9lXh
夏休みが始まったと思ったららこれか・・・
0850片山博文MZ ◆T6xkBnTXz7B0 2015/07/21(火) 17:56:41.81ID:wZ08wKQK
vec (vector for C language)
https://github.com/katahiromz/vec

アンパンマン、新しい顔ができたよ!!!
0851デフォルトの名無しさん2015/07/21(火) 18:10:44.86ID:rxIs9lXh
まともな作品紹介もできない時点でアウト、小学生の方がまだマシだな。
夏休みに入った新入学生に尊敬してもらいたいのかな? 犯罪者君
0852デフォルトの名無しさん2015/07/21(火) 19:53:00.02ID:Irntfcjb
配列からの流れで。
xy平面的な2次元配列の場合普通はどう?
D[x][y] or D[y][x]
という意味で。
状況によるというのが回答だと思うけど、
俺は今まで全てD[y][x]で書いてきた。
0853デフォルトの名無しさん2015/07/21(火) 20:19:22.98ID:Lp0T2eYV
>>852
状況ってどんな状況だよ
自分ルールは自分で閉じた世界だけにしとけよ
0854デフォルトの名無しさん2015/07/21(火) 22:17:58.94ID:lFhEB+KC
昔、どこかで読んだ本に
「1から始めるのが自然なのに0から始めるのはけしからん」
的なことが書いてあって、可哀想な人だなと思ったことを思い出した。
今なら解る。
多分、「無い」を「0個」と表現するのが許せない人なんだろう。
0855デフォルトの名無しさん2015/07/21(火) 22:40:35.31ID:ZFydeI54
自然界にゼロが存在しないことを証明できたら世界が変わる。

でもゼロが無いことくらい誰でも感覚的にわかってるよね。
0856デフォルトの名無しさん2015/07/21(火) 23:29:45.43ID:tYidWCQl
ゼロという概念は有るじゃん。
0857デフォルトの名無しさん2015/07/21(火) 23:34:00.23ID:ykIrCRFz
>>855
無いっていう言葉使っている時点でゼロの概念を持っているだろ。
0858デフォルトの名無しさん2015/07/21(火) 23:43:07.17ID:LWWHwaoy
>>855
1と足し算で、2=1+1がつくれるが。
1と引き算でつくれる1-1が0だ。
0859デフォルトの名無しさん2015/07/22(水) 00:48:02.54ID:1bYFtsNS
いや、ちょっと待って。「自然界に」って言ってるんだよ。
いったいどういう意味かなあ。
物質とか現象としてということかなあ。
0は存在しなくても1や2は存在するのだろうか。
0860デフォルトの名無しさん2015/07/22(水) 01:03:30.69ID:r7y5Ju2f
基数交換法で再帰呼び出しを除去することがクイックソートほど重要ではないのはなぜか?

お願いします
0861デフォルトの名無しさん2015/07/22(水) 01:11:50.52ID:M/n0+BzS
>>859
0も1も2も人間が作り出した概念。
0862デフォルトの名無しさん2015/07/22(水) 01:19:33.86ID:1bYFtsNS
>>861
そう書いても良かったんだけど当人がどういうつもりだったかを知りたい。
0863デフォルトの名無しさん2015/07/22(水) 03:46:38.65ID:npJxtfpG
0から始まるのは文字コードで0を先に持ってきたせいじゃない?
0864デフォルトの名無しさん2015/07/22(水) 04:30:31.09ID:Lt27C2H/
なんだそりゃ
0865デフォルトの名無しさん2015/07/22(水) 04:36:42.98ID:npJxtfpG
まあ基準から+1、+2、+3だからね。
0866デフォルトの名無しさん2015/07/22(水) 05:03:01.96ID:npJxtfpG
>>864
コンパイラのこと考えたことないの?
0867デフォルトの名無しさん2015/07/22(水) 05:13:57.35ID:GNp+ziID
またお前か
0868デフォルトの名無しさん2015/07/22(水) 11:59:40.81ID:kIeW59ou
文字コードは関係ないだろ
0869デフォルトの名無しさん2015/07/22(水) 17:52:32.56ID:QdTviyYV
宣言以外のa[2]は*(a+2)の別の表現ってだけだから、
配列が0から始まるって言葉自体に違和感がある。
配列の先頭アドレスがaであって、
その先頭アドレスには当然最初の要素が入っていて、
次のアドレスには次の要素が入っているというごく自然な表現という感覚しかない。
0870デフォルトの名無しさん2015/07/22(水) 17:59:13.21ID:yxlux+WS
配列の先頭アドレスをポインタに入れた時、常に要素が1から始まるようにしてあると
ポインタも+1してから使わないとバグる
そういう目に遭いたいらしいわ
0871デフォルトの名無しさん2015/07/22(水) 18:11:45.18ID:8TpaOP4G
まだ0、1論争かよ。
迷ってんならVbaでも使えよ。
-100でも何でも行けるぞ
0872デフォルトの名無しさん2015/07/22(水) 21:09:43.08ID:kfPxwJJV
だからさ、ソースコードと実装は違うから。
0873デフォルトの名無しさん2015/07/23(木) 01:19:55.01ID:65Ur3bjf
QZは毎日が人生の夏休み
0874デフォルトの名無しさん2015/07/23(木) 21:33:06.04ID:+NRG6mWL
ぶっちゃけ慣れの問題
どっちでも構わん
ただperlみたいに選択できるのは勘弁
0875デフォルトの名無しさん2015/07/23(木) 23:34:14.60ID:168Aqn4V
>>855
言葉遊びに過ぎないし、パラドックスの研究の古いテーマじゃん。
その理屈だと、1や2も「存在」はしない。
0876デフォルトの名無しさん2015/07/24(金) 00:30:41.05ID:waPr5lt7
>>874
配列とコレクションの違いが分からないようではダメ。
0877デフォルトの名無しさん2015/07/24(金) 01:52:04.39ID:IyIFnxBR
>>876
何言ってるんだ?
0878デフォルトの名無しさん2015/07/24(金) 06:50:29.62ID:26mYiG3x
配列は、単にメモリ上に連続で確保された変数の集まり。
配列それ自体は、自分自身の要素数の情報を持たず、アドレス(ポインタ or 添え字)を経由しないと任意の要素にアクセスできない。
ましてや、先頭番地の情報など持っているはずもない。配列名は先頭要素の別名に過ぎない。
ここまで言えば、コレクションとの違いもわかるだろ。
0879デフォルトの名無しさん2015/07/24(金) 08:51:49.66ID:U7biJhIK
そんな事はわかってるんだが…

何を言っているのかわからないっていうのは、>>874に対して>>876と言う、的外れとしか思えないレスをしていることに対してなんだけど…

あれ?もしかして触っちゃいけない人なのかな?
0880片山博文MZ ◆T6xkBnTXz7B0 2015/07/25(土) 12:27:26.19ID:Uks06VJa
アンパンマン、新しい顔が二つできたよ!!!

lis (singly linked list for C language)
https://github.com/katahiromz/lis

lst (doubly linked list for C language)
https://github.com/katahiromz/lst
0881デフォルトの名無しさん2015/07/25(土) 15:04:27.61ID:wTwAcdhU
配列名は先頭要素の別名って言い回しはどうかと思う
それだとまるで配列名には最初のデーターが詰まってるみたいじゃないのよさ
配列名にはアドレスしか入ってないのに
0882デフォルトの名無しさん2015/07/25(土) 17:41:25.81ID:GU4GIGEf
片山博文MZって何者? QZと同じにおいがする
0883デフォルトの名無しさん2015/07/25(土) 17:44:56.04ID:bLirGUmg
>>882
片山先生を知らないなんて完全に潜りだろw
0884デフォルトの名無しさん2015/07/25(土) 18:44:06.12ID:6zkZTkly
罵倒合戦があったし,片山センセと QZ を一緒にしちゃセンセが迷惑する
ところで camellia はオリジナルのソースから手を加えたの?
0885デフォルトの名無しさん2015/07/25(土) 21:20:02.61ID:GU4GIGEf
>>883
モグリでごめんね?
>>884
camelliaは仕様書を読んで一から自分で実装しましたよ。
手直しして今はだいぶ速くなったよ。
0886デフォルトの名無しさん2015/07/26(日) 14:28:04.79ID:d9clz1q1
>>874
なんかバージョン5のいくつあたりかから
 local $[=1;
とかやると怒られるようになっとる
言語仕様がある日突然変わるのがスクリプト言語の醍醐味
0887デフォルトの名無しさん2015/07/27(月) 02:11:37.78ID:cbxH7i7j
QZただいま名無し潜伏中
0888片山博文MZ ◆T6xkBnTXz7B0 2015/07/28(火) 16:53:34.62ID:QJSjRtNV
アンパンマン、新しい顔ができたよ。

vec2 (fixed block vector for C language)
https://github.com/katahiromz/vec2
0889デフォルトの名無しさん2015/07/28(火) 21:07:16.02ID:vblF84RR
>>886
怒られるというか、deprecated だね。使えなくなったわけじゃないけど
そういうことをしたければ tie しなさいということだね。
0890デフォルトの名無しさん2015/07/31(金) 23:08:06.27ID:PqGJhZis
プログラミングをするなら、Windowsとmacはどちらがいいですか?
0891デフォルトの名無しさん2015/07/31(金) 23:11:51.42ID:aMEtXk8u
Windows
0892デフォルトの名無しさん2015/07/31(金) 23:56:20.21ID:y5XWVYV7
>>890
どっちでもいいだろ。
好きな方を選べ。
0893デフォルトの名無しさん2015/08/01(土) 21:25:51.86ID:jIqrjnfJ
mallocでメモリ確保する時はサイズの指定をするのに
freeでメモリを解放する時はサイズの指定をしなくてもいいのは何故なんでしょうか?
0894デフォルトの名無しさん2015/08/01(土) 21:41:16.47ID:QePJH2WN
返されたポインタの前にサイズ他の管理情報を置いているメモリーアロケーターが多い。
こんな感じ
struct mem {
size_t size;
...
char data[]; <==== mallocはこのアドレスを返す
};
0895デフォルトの名無しさん2015/08/01(土) 22:13:36.30ID:AlahCyHh
扱いなれてる方。
0896デフォルトの名無しさん2015/08/01(土) 22:20:16.52ID:jIqrjnfJ
>>894
ありがとうございました。
参考書とかには標準関数の使い方の説明はあっても
内部の実装の仕方の説明まではなかなかないので勉強になりました。
0897デフォルトの名無しさん2015/08/01(土) 22:32:59.39ID:mMrs3R6A
void free(const void *,...);

という実装で二番目の引数を見るという
こともありえる鴨。規格外になるかも
しれないし、ソースレベルでの互換性が
失われるかもしれないが。

char *p=malloc(1024);
free(p); //普通の意味での解放
free(p,256);// pの先頭から256バイト目以降1023バイト目
までを解放
0898デフォルトの名無しさん2015/08/01(土) 22:35:23.69ID:mMrs3R6A
そういう場合実際には
void _free(const void*,...);
#define free(x) _free(x,0)
とかしてるんだろね
0899デフォルトの名無しさん2015/08/01(土) 22:36:26.78ID:qeAWL2lY
>>897
規格外どうのこうのの前に、二番目の引数の有無をどうやって判断するんだよ...
0900デフォルトの名無しさん2015/08/01(土) 22:36:50.00ID:mMrs3R6A
free(p,256)
ぢゃなくて_free(p,256)
だた。スマソ
0901デフォルトの名無しさん2015/08/01(土) 23:25:35.49ID:CYsajC4S
例えば、mallocで、サイズを200と指定すると、
アドレス100〜300番地を確保する。
それをプログラムは覚えている

次に、free 100番地と、
先頭アドレスだけを指定しても、

プログラムはサイズも覚えているので、
自動的に、100〜300番地を解放する
0902デフォルトの名無しさん2015/08/01(土) 23:27:05.42ID:oGwoY1R1
覚えてるならgetする方法も提供しろよ常識的に考えて
0903デフォルトの名無しさん2015/08/01(土) 23:41:09.84ID:oGwoY1R1
C/C++はオワコン
ソフトウェアエンジニアリングの仕事ではない
Javaやれ
0904デフォルトの名無しさん2015/08/02(日) 01:01:31.96ID:7iVchM+h
え、今更 Java やるの?
0905デフォルトの名無しさん2015/08/02(日) 02:07:49.29ID:wwgo3D7Q
>>896
実装なんて分からない。

妄想レスもあるので注意。
0906デフォルトの名無しさん2015/08/02(日) 03:28:18.62ID:sfcp/621
>>903
と言ってると、ますます日本のソフトウェア産業が土木工事になります。
0907デフォルトの名無しさん2015/08/02(日) 08:15:52.14ID:8TunHJN8
>>906
実装屋はどこまで行っても実装屋でしかない。
0908デフォルトの名無しさん2015/08/02(日) 09:00:03.54ID:YdYZAVrS
ユーザーの誤った書き込み操作が行われやすい
場所に重要な情報を置くのは汎用mallocでは
あまりやりたくない実装方法
隔離保護された場所にビットマップとかを
置いて(malloc領域を)管理。
0909デフォルトの名無しさん2015/08/02(日) 09:04:25.44ID:SLv/zRdd
>>908
たかだかユーザーのプログラムにリンクされたライブラリの分際で
「確保保護された」領域を入手できるのか?
0910デフォルトの名無しさん2015/08/02(日) 09:39:58.33ID:8sAzrEqX
>>908はそのようなライブラリを自作して使ってるんだろうな。
あの偏屈王DJBでさえ、mallocは自作してなかったのにスゲー。日本の宝。
是非公開して欲しい。

>>909
ページを書込み保護すれば出来る。きっと>>908はそうやっている。
超絶テクニックで、malloc/freeの都度発生する書き込みモードの変更による性能低下は軽く克服してるんだろう。
是非是非公開して欲しい。
0911デフォルトの名無しさん2015/08/02(日) 09:49:40.21ID:SLv/zRdd
>>910
>ページを書込み保護すれば出来る。
たかだかユーザーモードあるいはユーザーに提供された領域を
書き込み保護をかけるとか,バンバン使われる malloc()/free()
ルーチンが重くならないかね?
0912デフォルトの名無しさん2015/08/02(日) 09:51:52.46ID:QpxppfHz
実装はOS依存の場合も。
0913デフォルトの名無しさん2015/08/02(日) 10:08:57.20ID:8sAzrEqX
>>911,912
そこは偏屈王DJBを楽勝で凌駕する>>908の事だから、凡人には思いつかない超絶テクニックで回避してるに決まっている。
0914デフォルトの名無しさん2015/08/02(日) 14:36:02.95ID:4+/pksin
>>896
ちょっそれK&R本に実装例の1つが詳細に書かれていた希ガス…
0915デフォルトの名無しさん2015/08/02(日) 14:48:48.65ID:4+/pksin
ていうかネットに転がってた、
ttp://radlon.github.io/blog/2014/08/25/krmalloc/

K&R malloc!!!!!!!!!!!!!!!11!!!!!!!!1111
0916デフォルトの名無しさん2015/08/02(日) 15:01:15.98ID:q/ikqjRA
しょっぱなからコードのスペルミスかましてたので見るのやめた
0917デフォルトの名無しさん2015/08/02(日) 20:33:28.15ID:q4wUyYJ7
p[-1]なんかはバグでうっかり破壊しがちだが、
64ビットとアドレス空間のどこかにある
ビットマップをうっかり破壊する確率は
比較的低いって話だろ。

ってか >>894 みたいな実装は、古いシステムと組み込み系でしかもう使われていないのでは。
0918デフォルトの名無しさん2015/08/02(日) 20:42:19.52ID:4+/pksin
>>917
VCでは現役
メモリブロックの管理情報(リンクチェーン)が実データ領域と隣接して存在するからこそ
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
とかでリンクチェーンの破壊を検出できすぐる、

ていうか>>894みたいな実装の代表例がK&R本に書いてあるやつなのであって、
マジK&R本は不磨の大典
0919デフォルトの名無しさん2015/08/02(日) 20:44:57.53ID:4+/pksin
メモリ破壊系のバグは破壊が起きたタイミングで即検出しないとデバッグがやっかい極まりない話になるので
データ領域でメモリ破壊が起きても動いてしまうビットマップ方式はちょっと…
09209182015/08/02(日) 20:51:55.93ID:4+/pksin
スマン訂正、ヒープの整合性確認は_CrtCheckMemory()呼び出しでやるんだった;
(もしくは_CrtSetDbgFlag(_CRTDBG_CHECK_ALWAYS_DF)でmalloc()/free()毎に自動チェック)
実データ領域でのメモリ破壊がこれで高い率で検出できる

_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
というのはプログラム実行時のリークチェックのやつ
0921片山博文MZ ◆T6xkBnTXz7B0 2015/08/02(日) 21:45:05.24ID:/jG0U/Tz
C11 gccでインライン関数を分割コンパイルすると、シンボル重複エラーがでるんだが、
どうすればいいか。C++は簡単だった。
0922片山博文MZ ◆T6xkBnTXz7B0 2015/08/02(日) 22:01:40.19ID:/jG0U/Tz
やっぱりCでインライン化はやめた方がよかったか
0923デフォルトの名無しさん2015/08/02(日) 22:33:38.49ID:fK6YlTvs
ヘッダファイルにインライン関数を書いて、各ソースから参照するって話ではなくて?
0924デフォルトの名無しさん2015/08/03(月) 07:14:10.73ID:PHSALL0j
質問です。

printf("Aを入力して下さい >");
scanf("%x",&n);
printf("%d",n);

このように書いたときに、最後に10が表示されるのですが、なぜでしょうか。
Aが入力されると16進数としてnに格納されると思いますが、
最後にはそれを10進数で出力するので65になるのではないでしょうか?
0925デフォルトの名無しさん2015/08/03(月) 07:25:47.50ID:qre9PyEM
%xなんだから、入力した文字列自体を16進とみなす
A=10, B=11, C=12,,,

例えば、1A とか入力出来るが、どう考える?
0926デフォルトの名無しさん2015/08/03(月) 11:03:40.66ID:PHSALL0j
>>925
ありがとうございました。納得しました。
「16進数のA」と書いてあったのですがそういうことだったのですね。
0927デフォルトの名無しさん2015/08/06(木) 21:51:45.27ID:sGt3KLZv
C/C++はオワコン
何も新しいソフトウェア技術を取り入れてない
オブジェクト指向止まりの化石言語
こんなのにしがみついてたら未来ないよ
0928デフォルトの名無しさん2015/08/06(木) 22:26:04.26ID:0GTb8PhE
>>927
未来の有る言語を具体的に挙げてみよ
0929デフォルトの名無しさん2015/08/06(木) 22:55:02.33ID:sGt3KLZv
javascript最強
0930デフォルトの名無しさん2015/08/06(木) 22:56:09.34ID:B7i1Mk8j
うわぁ・・・
0931デフォルトの名無しさん2015/08/06(木) 23:19:33.87ID:8xO+ORV8
visual basic 最強
0932デフォルトの名無しさん2015/08/06(木) 23:31:28.33ID:0GTb8PhE
>>929
もうちょっと面白い展開を期待した。
0933デフォルトの名無しさん2015/08/07(金) 01:51:10.39ID:NqgUCWy0
>>928
アセンブラ、
無限の可能性を秘めている。
0934デフォルトの名無しさん2015/08/07(金) 07:15:20.34ID:RTmVcCCe
お前らDIもAOPもわかんねえだろ
完全に時代遅れなんだよ
0935デフォルトの名無しさん2015/08/07(金) 07:17:21.98ID:Pymojyae
0000: JP 0000
0936デフォルトの名無しさん2015/08/07(金) 07:45:43.98ID:LuqeIwCC
HALT
0937デフォルトの名無しさん2015/08/07(金) 08:18:27.03ID:s6JmbTZM
>>931
俺も俺も>>932
0938デフォルトの名無しさん2015/08/07(金) 13:43:24.15ID:uyJvzdpF
>>934
ああ知ってるよ
確か COBOL/2005 がいきなり名前を変えたやつだろ
0939デフォルトの名無しさん2015/08/07(金) 21:48:55.89ID:RTmVcCCe
大学はWEB系のプログラミングを教えるべき
大学教授が古い人間しかいないから時代遅れの化石言語しか教えられない
WEB業界では新しいソフトウェア技術がどんどん出て来てるのに完全に日本は置いていかれている
C言語なんて糞言語やる前にもっと危機感を持つべき
0940デフォルトの名無しさん2015/08/07(金) 21:54:31.44ID:TJyjY+1J
そんなことやるのは専門学校だけで十分
0941デフォルトの名無しさん2015/08/07(金) 21:56:09.13ID:RTmVcCCe
日本のソフトウェア技術が世界と比べて劣っているのは
既得権益にしがみついている時代遅れの大学関係者のせいなのは間違いないね
0942デフォルトの名無しさん2015/08/08(土) 01:24:04.78ID:LsDzIRl9
こんな会社ばっかだから。
ttp://www.geocities.co.jp/Playtown-Dice/3834/KAGE-OL12.jpg
0943デフォルトの名無しさん2015/08/08(土) 06:48:13.81ID:D0x4pWwH
大学では計算機科学の一般教養としてはSICPをみっちりやればおk
0944デフォルトの名無しさん2015/08/08(土) 06:53:47.83ID:D0x4pWwH
ていうか今ググったらSICPが何かタダで読めるようになっているっぽい
ttp://d.hatena.ne.jp/minghai/20140402/p1

あと副読本として『翻訳系構成論序論』とか、
内容もさることながら翻訳がたいへん味わい深い
0945デフォルトの名無しさん2015/08/08(土) 07:31:28.76ID:Ud96BClW
和田先生訳の方も公開されてるし、原著も公開されてる。
あと、h抜きは素人っぽいからやめろ。
0946デフォルトの名無しさん2015/08/08(土) 08:24:02.24ID:cYx2D4V+
>>945
> あと、h抜きは素人っぽいからやめろ。
自称玄人カッケーっす
0947デフォルトの名無しさん2015/08/08(土) 09:11:04.96ID:D0x4pWwH
(ノーコメント)
0948デフォルトの名無しさん2015/08/08(土) 09:31:28.19ID:D0x4pWwH
ていうか素人丸出しの質問のですが、
strtol()の第1引数はconst char*でconst付きなのに、
第2引数はchar**であってconst無しになるなのは何でですか??
0949デフォルトの名無しさん2015/08/08(土) 11:23:27.11ID:Ud96BClW
>>946
素人の補集合は玄人じゃない。
補集合は高校数学で学ぶから、中学生はROMってろ。
0950デフォルトの名無しさん2015/08/08(土) 12:03:47.08ID:cYx2D4V+
>>949
> あと、h抜きは素人っぽいからやめろ。
上から目線でアホなこと言ってるから自称玄人って言われてるだけ
最近覚えて使いたかったんだろうけど補集合は関係ない
0951デフォルトの名無しさん2015/08/08(土) 12:27:31.84ID:y5hyBra1
保守烏合
0952デフォルトの名無しさん2015/08/08(土) 12:44:06.05ID:Ud96BClW
>>950
hを抜くバカに対して上から目線は当然。
繰り返すが、中学生は補集合習ってから出直しなさい。
0953デフォルトの名無しさん2015/08/08(土) 12:47:15.24ID:Ud96BClW
バカとは、思考能力が欠除してる障害者の総称な。念のため。
0954デフォルトの名無しさん2015/08/08(土) 13:27:04.14ID:HVhVW7oy
>>953
自己紹介乙
0955デフォルトの名無しさん2015/08/08(土) 13:43:02.67ID:Ud96BClW
>>954
こりゃまた、h抜きに負けるとも劣らない古参煽り。

ニワカ乙
って、返すんだっけ? 頭悪そう。
0956デフォルトの名無しさん2015/08/08(土) 13:51:25.58ID:cYx2D4V+
かわいそうな奴...
さすが、にちゃん玄人ですね!
0957デフォルトの名無しさん2015/08/08(土) 14:04:41.69ID:1hj8NI9z
まあなぜhを抜いてるのかを知っている時点でそれなりの年齢のはずなんだけどね
もっと大人にならなきゃいけないよね
0958デフォルトの名無しさん2015/08/08(土) 14:16:31.72ID:Ud96BClW
>>956
補集合習ってから出直せと言ったはずだぞ。中学生。
0959デフォルトの名無しさん2015/08/08(土) 14:43:13.18ID:cYx2D4V+
>>958
で、どれとどれが補集合じゃないって言ってるんだ?
書いてみ w
0960デフォルトの名無しさん2015/08/08(土) 14:48:59.02ID:1hj8NI9z
素人の補集合≠玄人
って書いてあるじゃん
なんか低レベルすぎる争いが楽しそうなので混ぜて
0961デフォルトの名無しさん2015/08/08(土) 14:56:08.54ID:Ud96BClW
>>959
まだ、習ってないことを無理して理解しなくても良い。
0962デフォルトの名無しさん2015/08/08(土) 15:17:48.69ID:cYx2D4V+
>>960
h抜きしない奴は玄人って言ってるわけじゃないぞ
低レベルの話にもついてこれないなら割り込んでくるなよ...

>>961
はい、逃げた w
0963デフォルトの名無しさん2015/08/08(土) 15:34:58.60ID:Ud96BClW
>>962
補集合を知らないことを、そんなに必死でアピールしなくて良いよ。中学生。
0964デフォルトの名無しさん2015/08/08(土) 17:48:46.64ID:cYx2D4V+
>>963
>>959 にレスできないチキン w
0965デフォルトの名無しさん2015/08/08(土) 17:55:19.32ID:Gxm0vaAV
プログラマー目指してる大学生なんですけど、優秀な趣味プログラマーでも
長年仕事でプログラミングしてる平凡なプログラマーに負ける事っていったら
何ですか?

どんだけプログラミングしてても実務で培われるものってあるじゃないですか
そういうのが知りたいです。ちなみに僕は優秀でもなんでもない趣味プログラマですw
0966デフォルトの名無しさん2015/08/08(土) 18:03:00.86ID:1qUf1CZr
このままいつもの人まで出てきてスレを
使いきる気かよ
0967デフォルトの名無しさん2015/08/08(土) 18:08:16.54ID:D0x4pWwH
>>965
ようわからんが仕様と検証と納期に対してどんだけシビアになれるかの違いじゃないの
0968デフォルトの名無しさん2015/08/08(土) 18:13:42.89ID:D0x4pWwH
>>965
併せて工数は予算内に、

ていうか>>948の回答も誰かよろしくなのデス…
パーサを作るときにstrtol()の第1、第2引数のインターフェースを真似た関数をしばしば作るのですが、
第2引数をconst付きにしなくていいのか今も悩み中、

あと>>944の結びは「翻訳もカッケーぃ☆」としとけば完璧だったorz
0969デフォルトの名無しさん2015/08/08(土) 19:04:38.81ID:Ud96BClW
>>964
心配すんな中学生。クラスの平均以上の学力あって、補集合習えばわかるようになるから。

>>968
中学生弄ってて回答した気になってたわ。第2引数がconstじゃないのは、const char **にはchar **も渡せる。
すなわちhoge(const int); 以下の意味しかないが、それでもconstつけたいならつければよい。
0970デフォルトの名無しさん2015/08/08(土) 19:50:59.65ID:D0x4pWwH
>>969
ちょっ>>948のは、現実のstrtol()の第2引数はchar**でconst char**を「渡せない」んだけど何か理由有り?
という質問のですが…

ぶっちゃけ説明不足だったかもしれないので今から説明すると、strtol()の第2引数がchar**である結果、
次のコードの変数endをconst付きにできず、万が一[A]の行が紛れ込んでもコンパイル時にwarningにならないという、
long foo(const char* str) {
 /*const*/ char* end; /* ←左のconstのコメントアウトを外すとエラー*/
 long val = strtol(str, &end, 10);
 *(end - 1) = '*'; /* [A] 上の結果、strを書き換えるコードが合法に… */
 return val;
}
このような事故は、strtol()の第2引数がconst char**でありさえすれば防げるのですが、そうなっていないのは何故…!?という疑問

あと引数の型const char**に対し、char**型変数を渡せるというのは真実としていかがなものかと…(VCだとエラーになる
0971デフォルトの名無しさん2015/08/08(土) 20:17:04.90ID:Ud96BClW
>>970
それをstrtolのプロトタイプで防止しようとするのが間違い。
第2引数がconstであっても、
char *endptr;
strtol("123x", &endptr);
はエラーではない。

> あと引数の型const char**に対し、char**型変数を渡せるというのは真実としていかがなものかと…(VCだとエラーになる
ここはCのスレだよ。C++ならエラーだろうね。
0972デフォルトの名無しさん2015/08/08(土) 20:27:38.50ID:D0x4pWwH
>ここはCのスレだよ。C++ならエラーだろうね。
ほんまや(゜д゜)!Cだとconst char** end;でエラーにならない
はずかC〜(*ノノ
0973デフォルトの名無しさん2015/08/08(土) 20:43:42.60ID:cYx2D4V+
>>969
補集合でどや顔してるけど、補集合関係ないことは理解できないんだな
関係あるならちゃんと説明できるよね? w
0974デフォルトの名無しさん2015/08/08(土) 20:45:16.30ID:Ud96BClW
>>973
高校で習うまで我慢してなさい。中学生。
0975デフォルトの名無しさん2015/08/08(土) 20:58:55.89ID:1hj8NI9z
結局const char**じゃないのはなぜなのかは解答ないのね
0976デフォルトの名無しさん2015/08/08(土) 21:05:28.11ID:Ud96BClW
constにする事に意味が無いからと答えたが。
0977デフォルトの名無しさん2015/08/08(土) 21:15:13.37ID:cYx2D4V+
>>974
もう逃げきりを図ろうとしてるのはみえみえ

>> あと、h抜きしない方が玄人っぽいよ
> 自称玄人カッケーっす

ってなってたらこいつどう言うんだろうな w
0978デフォルトの名無しさん2015/08/08(土) 21:21:07.53ID:1hj8NI9z
const char**にしてもchar**が渡せるから意味がないってのか
じゃあconst char*にしてもchar*が渡せるからそれも意味がないんですね
じゃあ引数につけるconstなんて全て意味がないんですねわかります
0979デフォルトの名無しさん2015/08/08(土) 21:37:14.26ID:D0x4pWwH
>>978
const char*にキャスト無しでchar*を代入することはC言語でも非合法だからその噛み付き方は無いわ〜
09809792015/08/08(土) 21:39:27.65ID:D0x4pWwH
反対だったorz、
char*にconst char*を代入するのはC/C++ともにNG
char**にconst char**を代入するのはCだとOK、C++ではNG
0981デフォルトの名無しさん2015/08/08(土) 21:44:06.68ID:Ud96BClW
>>977
補集合習えばそれもわかるようになるよ。
0982デフォルトの名無しさん2015/08/08(土) 22:04:53.22ID:Ud96BClW
>>978
意味ないだろ。
void hoge(const char **p)
{
static const char s[] = "alb";
*p = s;
}
void hage(void)
{
char *p;
hoge(&p);
*p = 0;
}
0983!rebuild:age2015/08/08(土) 22:13:50.40ID:9YQ92kuf
0984デフォルトの名無しさん2015/08/08(土) 22:21:53.19ID:1hj8NI9z
strtolの第2引数にconstが無いのはあってもなくても意味がないからなんかじゃなく
strtolがconstをつけるかどうかを判断する箇所ではないから制約にしていないだけ

第1引数につくconstはstrtolの内部ではポインタ先の実態を変更しないということを示す
strtolの中の操作を制限するという意味になるのでそう実装していることを使用者に示している

第2引数の先頭にconstをつけるかどうかに対応するのは
第1引数に渡される文字列自身がconstなのかどうか
そしてそれはstrtolの関与する部分ではない

>>970のようにconst文字列を渡す前提ならconstがあっても問題ないが
constじゃない文字列を渡して変換できなかった箇所を起点に文字列を変更することも考えられる
するともし第2引数にconstがついていると(やらなくてもコンパイルできるかどうかは置いておいて)constからconstなしへのキャストをすることになる
0985デフォルトの名無しさん2015/08/09(日) 00:33:45.74ID:ofrSttk1
次スレおね
0986デフォルトの名無しさん2015/08/09(日) 04:54:16.32ID:ofrSttk1
まだーー
0987デフォルトの名無しさん2015/08/09(日) 05:52:26.39ID:h6XvpjyR
>>978
あっても無くても意味が無いなんていう事じゃ無い。
constは呼び出し先での制約であり、呼び出し側を制約する事はできない。
ので、意味が無い。
0988デフォルトの名無しさん2015/08/09(日) 06:48:44.91ID:TarQJqGz
>>981
もうその返ししかできないんだな恥ずかしすぎるわ w
0989デフォルトの名無しさん2015/08/09(日) 07:09:46.99ID:TarQJqGz
次スレ

C言語なら俺に聞け(入門編)Part 130
http://peace.2ch.net/test/read.cgi/tech/1439071526/
0990デフォルトの名無しさん2015/08/09(日) 08:32:59.69ID:i0YjHh3P
const ついてれば、(その関数内で参照先を)書き換えするつもりはないよ とわかるけど
ついてない場合はどっちともとれるから中途半端よねぇ
0991デフォルトの名無しさん2015/08/09(日) 08:44:02.42ID:uP4RKIW6
>>989
乙乙乙
0992デフォルトの名無しさん2015/08/09(日) 09:09:30.47ID:Mf04DnbC
>>988
補集合理解してれば
>> あと、h抜きしない方が玄人っぽいよ
こんな発言はしないから。キミの妄想は実現しない。
頑張って補集合勉強しろよ。
0993デフォルトの名無しさん2015/08/09(日) 10:07:05.43ID:UBu5K04W
高校レベルで学ぶ集合論は集合論のうちに入らぬ、
前提命題
 XはURLをh抜きで書く→Xは素人である ( = ¬((XはURLをh抜きで書く)∧¬(Xは素人) )
から
 XはURLをhを抜かずに書く→Xは玄人である ( = ¬(¬(XはURLをh抜きで書く)∧¬(Xは玄人) )
という命題を導くためには、
 { 素人 } ∩ { 玄人 } = φ (排中立)
が成立せねばならないぬが、{ 素人 } ∩ { 玄人 }が無限集合である以上、
演繹系を無限集合の排中律を認めるやつに固定せねば妥当な演繹にならない
0994デフォルトの名無しさん2015/08/09(日) 10:10:28.22ID:TarQJqGz
>>992
>>988
ループつまんね
0995デフォルトの名無しさん2015/08/09(日) 10:16:29.21ID:QKRToHAT
out引数の型のconstが意味ないとかいう人の設計はすごい言語に依存しまくったものになってそう
0996デフォルトの名無しさん2015/08/09(日) 10:18:03.07ID:UBu5K04W
>>995
C言語でおk
0997デフォルトの名無しさん2015/08/09(日) 10:22:58.14ID:QKRToHAT
そのうちx86では呼び出し規約が○○だから××という前提
とかアーキテクチャにまで依存し出したりするからそういう考え方は根絶やしにしたい
0998デフォルトの名無しさん2015/08/09(日) 11:18:15.91ID:9Ej9Po2R
>>993

>>(排中立)→「排中律」
『広辞苑』には、「排中原理」と書いてある。この方がもっと分かりやすいかも
0999デフォルトの名無しさん2015/08/09(日) 11:31:16.30ID:QKRToHAT
>{ 素人 } ∩ { 玄人 }が無限集合である以上
これは自明なの?
1000デフォルトの名無しさん2015/08/09(日) 11:41:47.48ID:855SMF2a
>>995
> out引数
ようやくそこに言及する人が出てきたか
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。