C言語なら俺に聞け(入門編)Part 126
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2014/05/25(日) 22:55:50.62ID:/Ed46QJw★前スレ
C言語なら俺に聞け(入門編)Part 125
http://peace.2ch.net/test/read.cgi/tech/1392482954/
★過去スレ
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++の宿題片付けます 167代目
http://peace.2ch.net/test/read.cgi/tech/1392388003/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
# サイズが大きい場合はアップローダ等を利用してください。
ttp://codepad.org/
ttp://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
【重要】
当たり前の事ですが、2chではコピペ荒らしは禁止されています。
0002デフォルトの名無しさん
2014/05/25(日) 22:57:16.66ID:/Ed46QJwhogeは禁止です。使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。
また、hogeはNGワードに追加しておくことが強く推奨されています。
0003デフォルトの名無しさん
2014/05/26(月) 18:05:37.73ID:YsUmIhXYahe
0004デフォルトの名無しさん
2014/05/26(月) 21:04:25.48ID:R8HPcv0T0005デフォルトの名無しさん
2014/05/27(火) 07:49:33.26ID:25AWZBJ0ttp://kmaebashi.com/programmer/hoge.html
0006デフォルトの名無しさん
2014/05/27(火) 08:50:16.95ID:YWGAjtPi0007デフォルトの名無しさん
2014/05/30(金) 04:03:06.54ID:p0YChy7B1^m+2^m+3^m+......+n^mを求めたいんですがこれのどの部分に問題がありますか?
ご教授お願いします。
http://codepad.org/ZibSLvWH
0008デフォルトの名無しさん
2014/05/30(金) 04:56:24.72ID:WXm2AdA00009デフォルトの名無しさん
2014/05/30(金) 10:16:54.08ID:UPOkRfwS内側のforでx = 1ってなってるけど、これはいいの?
0010デフォルトの名無しさん
2014/05/30(金) 14:12:54.72ID:+E8tZH7v0011デフォルトの名無しさん
2014/05/31(土) 00:20:25.14ID:HKQbq1rD内側のforの前にmを別変数にとっておいて
forの前にmを入力値に戻してやらんといかんのじゃないか?
1回ループしたらm=0になるだろ
0012デフォルトの名無しさん
2014/06/02(月) 21:42:42.25ID:2NHI//JA前から気になってたが…
0013デフォルトの名無しさん
2014/06/02(月) 21:51:08.26ID:IemvHvtF0014デフォルトの名無しさん
2014/06/02(月) 22:02:23.52ID:bFWGwTOa今の職場ではBが多いな…確かに…
0015デフォルトの名無しさん
2014/06/02(月) 22:09:47.96ID:qsUKgSzK若い女の子でもいたら、飲み会で「なんとさんA型でしょ」とか血液型トークになるのかもしれんけど。
0016デフォルトの名無しさん
2014/06/03(火) 07:14:27.61ID:Ku9rqS7BWebとかサーバー系の開発とか運用系はAB型が多かったな。
0017デフォルトの名無しさん
2014/06/03(火) 19:48:39.10ID:o0OF6Fvt人口の1割しかいないAB型が目に付くほど多かったとは、かなり危険な兆候だな。
大地震が来るね。
0018デフォルトの名無しさん
2014/06/03(火) 20:42:10.61ID:aAH3rc4O0019デフォルトの名無しさん
2014/06/03(火) 20:48:28.31ID:mqosVpdp0020デフォルトの名無しさん
2014/06/04(水) 02:45:25.03ID:YxALpo7BO型の遺伝子持ってる人はO型だけじゃないからな
0021デフォルトの名無しさん
2014/06/04(水) 12:16:45.62ID:QBS2GcPO0022デフォルトの名無しさん
2014/06/04(水) 13:25:05.57ID:n8+wV5AW0023デフォルトの名無しさん
2014/06/04(水) 17:02:43.25ID:Np1uZP8H素子が電子じゃないって事でしょうか?
Cのような精密な命令を処理するプログラムはちゃんと実行されるのでしょうか?
0024デフォルトの名無しさん
2014/06/04(水) 20:50:09.54ID:Np1uZP8H0025デフォルトの名無しさん
2014/06/04(水) 21:14:54.52ID:sDObxoUm計算尺みたことある?
ヘンミの計算尺
0026デフォルトの名無しさん
2014/06/04(水) 21:25:49.90ID:9B7TFMcJオペアンプ
0027デフォルトの名無しさん
2014/06/04(水) 21:28:40.21ID:sDObxoUm基本は、オペアンプの負帰還
できる数学的な操作は、総和、逆元、冪乗、対数、積分 (主に時間軸で)、微分(同様に時間軸で)、乗算と除算
───────
オペアンプ(増幅器。アナログICが販売されている)
オペアンプは、増幅率が非常に高くして設計されており、負帰還(ネガティブフィードバック, NF)をかけて利用する。
正帰還をかけたら発振する。
負帰還をかける部分にポテンショメータ、積分器などを配置する。
ポテンショメータ(端子が3つある可変抵抗器。両端に2つ。可動接触端子が1つ)
積分器(抵抗およびコンデンサ)
アナログ計算機(analog/analogue computer - Wikipedia
0028デフォルトの名無しさん
2014/06/04(水) 21:31:59.84ID:sDObxoUm命令もプログラムもありません
0029デフォルトの名無しさん
2014/06/04(水) 23:54:56.41ID:5cufTYgB単語を読み込んで、文字数と一緒に表示するプログラム
これを応用した課題を作らなければいけないのですが、そもそものこのプログラムがうまく動きません
とりあえず参考書通りに一字違わず書いたと思うのですが
エラーはないけれど、実行しても何も表示されない…
教員は参考書通りでできるというのですがどこが間違っているのか教えてください
0030デフォルトの名無しさん
2014/06/04(水) 23:58:57.94ID:Y7lYZNRm0031デフォルトの名無しさん
2014/06/05(木) 01:24:36.69ID:ziZk185w読み取った文字数len分だけそれぞれのtabにそれぞれのstrを与えているのだと思います…
多分私も大分理解足りないと思うので自信ないですが…
0032デフォルトの名無しさん
2014/06/05(木) 08:44:37.01ID:oXM6DYRn0033デフォルトの名無しさん
2014/06/05(木) 09:02:23.96ID:/748C5a2コンパイルしてみたけど正常に動いた
表示される内容も問題なし
0034デフォルトの名無しさん
2014/06/05(木) 09:05:25.60ID:/748C5a2そのtabはAvailの位置を覚えるだけの一時変数
0035デフォルトの名無しさん
2014/06/05(木) 12:19:30.84ID:CbdkWkFKプロトタイプ宣言はしていないし、意味不明のグローバル変数は多用しているし。
putchar()のループなんて、printf()で"%.*s"を使えば事が足りる話だし。
0036デフォルトの名無しさん
2014/06/05(木) 17:32:46.53ID:m9Ubt7TR.*て何ですか?
0037デフォルトの名無しさん
2014/06/05(木) 18:14:49.28ID:pwRKe8RC何も表示されないのは正しく終了してないからじゃないの
UNIXならCtrl+C、WindowsならCtrl+Zを押して(EOFを入力して)
19行目のwhileループから抜けなきゃいけない
--ここから俺の質問
scanfってなんで改行だけだと反応しないんだろう?
29のプログラムだと改行のみでwhileループ抜けそうだと思ってしまったが抜けなかった
「そういう仕様です」なのかもしれんが、意図や利点があるとか何かあれば誰か詳しい人教えてください
0038デフォルトの名無しさん
2014/06/05(木) 18:16:27.66ID:pwRKe8RC誤:>UNIXならCtrl+C、WindowsならCtrl+Zを押して(EOFを入力して)
正:>UNIXならCtrl+D、WindowsならCtrl+Zを押して(EOFを入力して)
0039デフォルトの名無しさん
2014/06/05(木) 18:25:46.97ID:m9Ubt7TR0040デフォルトの名無しさん
2014/06/05(木) 18:47:41.55ID:CbdkWkFK最大桁数の動的指定。printf("[%.*s]\n", 5, "abcdefghijklmn")とでもしてみる宜し。
>>37
改行文字はscanf()系の「空白文字」に含まれるので、"%d"や"%s"に対しては
先行する空白文字と見做されて入力待ちのままになってしまう。
>39が指摘するように、"%[]"のような文字セット指定なら、入力済みと見做せる。
0041デフォルトの名無しさん
2014/06/05(木) 18:57:07.81ID:pwRKe8RCなるほど、先頭のスペースを無視するのと同じなんですね
そして文字セット指定だと先頭のスペース無視がなくなると
よくわかりました、ありがとうございます
0042デフォルトの名無しさん
2014/06/05(木) 19:17:15.14ID:ziZk185wscanfとscanf_sを間違えていたからのようでした…
ここから、読み込んだ単語を文字数の少ないものから順に並べ直して表示したいのですが
http://codepad.org/xcfujlY0
PrtNamAllの中身のtab=NamTabはどう書き換えればいいのでしょうか
表示する単語の開始位置がバラバラなので、次の単語にうつるたび設定するためにforにいれたのですが
tabに代入するNamTabを、その時のD[i]に対応したSymposから開始させればいいと思うのですが書き方がわかりません…
0043デフォルトの名無しさん
2014/06/05(木) 19:43:36.46ID:Be1rTO1wそこは、tab = Sympos[D[i]]; が正解のはず。
1行上のlenと対応しているはず
但し他のところがおかしいので、これだけでは
期待通りに動かないと思う(未確認だけど)
0044デフォルトの名無しさん
2014/06/05(木) 19:49:40.86ID:TQjTzfj7計算機としてのアナログ計算はそう多くないのだけれど、
微分、積分、乗算の3つは大量に使われてんだよね。
特に電波関連では乗算が大活躍してるとかなんとか。
//初っ端から虚数まみれなので数学苦手だと辛い…
最近の電波関連は乗算で周波数落としてデジタルサンプリングしたら後はDSPで捌いたりするから、
Cに類する言語でアナログ乗算された入力を処理することはままあるんじゃね?(スレチ回避の言い訳)
0045デフォルトの名無しさん
2014/06/05(木) 22:25:25.93ID:RlDRjfNaハイブリッド自動車の制御とか連続量の演算は大量にあるよ
さすがにアナログだとメンテとかが大変なので、デジタルコンピュータを大量に使ってシミュレーションしてる
詳しくは hils とかでググって
0046デフォルトの名無しさん
2014/06/06(金) 00:50:20.84ID:DhW11ZOHそれはアナログ制御とかの話で、「計算機としてのアナログ計算」する話とは違うと思うんだけど…
コンパレータやA/D変換使ってデジタル処理に持ち込んじゃうのが大半でしょ、そいつら。
0047デフォルトの名無しさん
2014/06/06(金) 07:36:39.04ID:1f1OIxtfアナログ制御が必要だからアナログ計算が必要と言う話
実現はデジタルでやってると言うのも書いてるけど?
0048デフォルトの名無しさん
2014/06/06(金) 18:47:03.68ID:DhW11ZOHデジタルに計算してたらアナログ計算じゃねーだろ。
アナログ回路をデジタル計算で制御してるだけだ。
Wikipediaでも読んどけ
http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%8A%E3%83%AD%E3%82%B0%E8%A8%88%E7%AE%97%E6%A9%9F
数値計算的な意味合いのアナログ計算は今でもRFミキサなどで利用されている。
0049デフォルトの名無しさん
2014/06/06(金) 19:32:38.99ID:slyOrLRP> デジタルに計算してたらアナログ計算じゃねーだろ。
アナログ計算?
オレオレ用語で話されてもさっぱりわからんわ (w
0050デフォルトの名無しさん
2014/06/06(金) 22:06:41.57ID:ZJbKt6sN0051デフォルトの名無しさん
2014/06/06(金) 22:45:45.88ID:1f1OIxtf0052デフォルトの名無しさん
2014/06/07(土) 06:36:54.72ID:0xjhQXXqだったんだろうね。
苦し紛れな51のレスも、アナログ計算機って単語も知らず、
何に対するレスなのかも読めてなかった告白になってるし。
勘違いや無知は素直に認めて、沈黙か訂正を選ばないと人生つらいだろうに…
こんな話題で粘っても無意味だし何も得られないって早く気づくよう祈っとこう。
0053デフォルトの名無しさん
2014/06/07(土) 10:13:58.22ID:xkbQeKRh> 苦し紛れな51のレスも、アナログ計算機って単語も知らず、
アナログ計算 ≠ アナログ計算機
ごちゃごちゃ言う前に「アナログ計算」とやらを説明しなよ
0054デフォルトの名無しさん
2014/06/07(土) 10:49:26.32ID:tmNvwrUz○○機ってそういうことでしょ
0055デフォルトの名無しさん
2014/06/07(土) 10:52:19.70ID:D6sqOe5Q0056デフォルトの名無しさん
2014/06/07(土) 12:07:38.86ID:NZ8ShEm/それアナログ計算の説明になってないぞ
>>55
まあ普通はその解釈ぐらいしかできないよな
0057デフォルトの名無しさん
2014/06/07(土) 12:10:08.80ID:tmNvwrUz0058デフォルトの名無しさん
2014/06/07(土) 12:58:30.30ID:xkbQeKRh0059デフォルトの名無しさん
2014/06/07(土) 22:51:47.13ID:Zdd8B3TW基本的にチームのメンバーとネットワークで繋がってるの?
現場経験無いからそこらへん分からない、来月から派遣でプログラマー
の予定です、職場によって違うかもしれないけど要領とか教えて下さい
0060デフォルトの名無しさん
2014/06/07(土) 22:58:40.53ID:D6sqOe5Qプログラム開発に、どのようにネットワークを活用しているかは個々に違う。
それこそ只単にネットワークで繋がってるだけな所から、全てのリソースを共有
管理している所まで多様だよ。
0061デフォルトの名無しさん
2014/06/07(土) 23:02:41.32ID:jBtwYmah挙句にUSBメモリも使用禁止だったりして疎外感MAX状態だったり。
つーか、マ板でやれw
0062デフォルトの名無しさん
2014/06/07(土) 23:06:09.63ID:Zdd8B3TWコード書き終わった後は、USBメモリでプロジェクトマネージャーに渡す
所もあれば、メールに添付して送ったり、仕事の提出方法も様々なんですか?
>>61
派遣用だけネットワーク繋がらないってそれ困るでしょw
ネットで検索できないってことですかw
0063デフォルトの名無しさん
2014/06/07(土) 23:07:20.49ID:Zdd8B3TWまぁ色々事情があるのでしょうが
0064デフォルトの名無しさん
2014/06/07(土) 23:15:27.00ID:jBtwYmah派遣はネットワーク環境を自分で用意するんだよ。
社内のLANなんかに接続させてたまるもんか、って思想。
USBメモリも社内システムのお墨付きがないと接続できない。
なので、テザリングでメールで飛ばしてPMに確認して貰う。
だから、マ板でやれってw
0065デフォルトの名無しさん
2014/06/07(土) 23:17:40.03ID:iNx9GCgC社内LANから隔離されてるのが納得できないとか。
そうゆうプログラマーが派遣されてきたら、即チェンジする。
事故が怖いもん (ノ∀`)
0066デフォルトの名無しさん
2014/06/07(土) 23:22:32.64ID:Zdd8B3TWテザリングとwifiと無線LANの違いが分からないですw
>>65
USBメモリだとデータが消えるからそんな媒体から開いたファイル上で
プログラムをするなって事でしょうか?
0067デフォルトの名無しさん
2014/06/07(土) 23:30:05.35ID:3OK1Y7g1俺の隣の席のひとが、貸し出されたUSBメモリを自分のPCに刺したらその瞬間に、ウイル
スが検出されて、それを報告したら始末書を書くはめに。
どう考えても、その人の前に使った人が感染させて黙って返却したものなのに。
貸し出しは記録されてるから追跡可能なのに、真面目に報告した人の責任になるっていう。
0068デフォルトの名無しさん
2014/06/07(土) 23:34:21.39ID:3R8CEA880069デフォルトの名無しさん
2014/06/07(土) 23:36:32.27ID:Zdd8B3TWバックアップ用って事なんでしょうか…
デスクトップとメディアに同時に保存する方法なんてありましたっけ?
メモ帳使ってるけど出来た試しが無い
0070デフォルトの名無しさん
2014/06/08(日) 00:00:11.62ID:G2ObKARSもし開発者に悪意があれば(※あるいは悪意が無くても何らかの手違いがあれば)
情報漏洩や、ウィルス混入や、社内システムの障害などを起こすことが可能だから。
そうゆう事故を未然に防ぐためのルールや環境つくりってことよ。
例えば派遣先の会社内で、顧客から預かった機密情報の漏洩事件があったとして。
あなたが無断でUSBメモリを持ち込んでいたり、無断で社内LANに接続していたら、
たとえ無実であったとしても犯人扱いされちゃうから、やめとけってことよ (ノ∀`)
0071デフォルトの名無しさん
2014/06/08(日) 01:25:14.54ID:bPXdPQUw0072デフォルトの名無しさん
2014/06/08(日) 02:01:05.21ID:BaSYhye40073デフォルトの名無しさん
2014/06/08(日) 02:33:53.17ID:GJPS8Zp3それ会社で聞くなよ
速攻でクビだぞ
下手するとおまえさんを派遣している会社ごと出入り禁止になる
0074デフォルトの名無しさん
2014/06/08(日) 10:02:51.00ID:b9obj5lE我社もUSBメモリをどげんかせんとあかん。とトップダウンで落ちてきた指示でアホな情シスが作った制度。
始末書に顛末を書いた後に、こんな阿呆なルールを作った給料泥棒が悪いとでも書いておけ。
0075デフォルトの名無しさん
2014/06/08(日) 13:46:10.25ID:OVTpY++G受託の客先の一社は社内システムでロックしたファイルしか読めない。
派遣先の一社は原則使用禁止。
まぁ、>69の勤める会社が早めに気がついて試用期間中に切れることを祈っておくよ。
0076デフォルトの名無しさん
2014/06/08(日) 17:50:40.82ID:Us9YMN5tどうやったら先に進める?
0077デフォルトの名無しさん
2014/06/08(日) 18:21:06.77ID:54SWPmuK【 付きうごき者 】
彼等の室内での心理状態、行動様態、気分の抑揚などは常に隣人の生活様態に左右、依拠され、
それら隣人の生活様態を自らの諸行動,諸動作の契機として、
あるいはまたスケジュール表か時計かのごとくに借用しながらの生活を送る。
付きうごきの感知は 自己の動作のあと1、2秒遅れて床から伝わってくる「ピクッ」とするわずかな振動から確認することができる。
= 付きうごきの3型 =
・通常の場合
・付きうごきに対して注意喚起を促した後に逆恨みからその行為をより一層徹底、強力化してやり返してくるもの 〔付きかえし〕
・注意喚起時に他の部屋の別の引きこもり者が自分のことを指摘されたのだと思い込みやり返してくるケース 〔勘違い型付きかえし〕
(パチンコ屋などで「警察だ!」と叫べば身に覚えのある何人かがギョッとして逃げ出そうとすることと同様に)
http://rfi.a.la9.jp/hn203/k203/k.png
http://rfi.a.la9.jp/hn203/k203/k203_1.png
http://rfi.a.la9.jp/hn203/k203/k203_2.png
・ウィークリーマンションなどに入っている引きこもり者どうしが、あるいは他の普通の客も巻き込みながら付き返しの応酬となっているケース 〔やみくも型付きかえし〕
寝起きする住居であるから被害者はこれを避けることはできず、不愉快と時間、人生の浪費を強いられざるを得ない。
0078デフォルトの名無しさん
2014/06/08(日) 18:49:57.95ID:OVTpY++G先があるっていつから思ってた?
0079デフォルトの名無しさん
2014/06/08(日) 20:22:32.06ID:aiXBLNQq初心者にアドバイスくらいしてくれても
いいだろ、USB何故使うかなんて分からないし…
>>73
一応、それもアドバイスということで受け取っておきますが
これだけはしちゃダメなんてこと唐突に言われても分からないし…
プログラマーって一々説明するのがかっこ悪いみたいな風潮あるよな
プログラマーの派遣が経験者優遇で特殊な派遣ってのもあるけど何か
凄い閉鎖的だなぁ…
0080デフォルトの名無しさん
2014/06/08(日) 20:25:31.24ID:aiXBLNQqあなた全然悪くないよね、何だろう?こう、派遣に対して当たりがきつい
のかなプログラマ業界って…、何か億劫になるよ…
いい人もいるんだろうけど、パソコンばっかりやってて卑屈になる人も多い
のかも、このスレの人は勿論親切ですけどね^^
0081デフォルトの名無しさん
2014/06/08(日) 20:27:32.66ID:jl/Y1Vem恵比寿さんですか?
0082デフォルトの名無しさん
2014/06/08(日) 20:28:38.51ID:yjVDP8Tp0083デフォルトの名無しさん
2014/06/08(日) 23:01:39.01ID:OVTpY++Ggoogle.com
>>79
読解力もない人だったのか。
ネットワークで直接接続されていない環境でファイルのやり取りする手段として、普通真っ先に思いつくのはUSBメモリだろ。
仕方ない、流れを説明しておこうか。
・ファイルのやり取りをしたい。
↓
・普通に考えればネットワーク共有すれば済む。
↓
・外部の人間にLANは使わせない。
↓
・だからと言ってUSBメモリは>75の理由で使えないことが多い。
↓
・外部の人間は自前で用意したインターネット接続手段を使ってメールでやり取りしろ。
って、書いておいてなんだけど、さんざん鼬害だと指摘されているのに居座るような体質だと、
派遣先で思いやられるってのが正直な感想だよ。
0084デフォルトの名無しさん
2014/06/08(日) 23:18:16.37ID:bkCTLeYU一連のやりとりをみていると、なんだかねえ
客の顔画優先で、まっとうな提案が通らない世界なんだね
>>69
無線LANでも提案してみたら?
0085デフォルトの名無しさん
2014/06/09(月) 04:00:22.69ID:+aXF6mrhかっこ悪いからじゃなくて、篩を兼ねた効率化で簡単な説明は省略してるんじゃない?
プログラマに限らず、簡単な事も説明しないとダメな奴は使いようが無いとかよくある。
使われ方を想定しないで書かれたプログラムとか、使えないプログラムと大差ないわ。
特に、リスクに対する想像が欠けてるプログラムだと使えないだけでなく害を振りまく。
ルール策定者が説明を求められて説明できないようなルールは糞だが、
説明するまでもなく分かって欲しいルールを片っ端から聞く奴も大概だ。
0086デフォルトの名無しさん
2014/06/09(月) 07:16:11.54ID:quK33S+U>説明するまでもなく分かって欲しいルール
たぶん、それを聞くと、お偉いさんの能力が顕わになり顔を潰すことになる、とかという類の「ルール」だろう?
ときどきやっちまう‥今でも冷や飯ぐらいだ‥異分野だけれどもね、どこも一緒だねえ
それにしてもそんなルール、本当に「ルール」なのだろうか?
0087デフォルトの名無しさん
2014/06/09(月) 10:56:45.86ID:uTgA5MBXって言ってるじゃん
0088デフォルトの名無しさん
2014/06/09(月) 12:23:24.77ID:Q8TzlagXところで管理職の資質に関する定期的な検査の義務付けはまだなの?
0089デフォルトの名無しさん
2014/06/09(月) 13:51:08.49ID:S7gX0NSaありがとう、ようやくわかった
それにしても派遣はインターネット外部のつかえとか何か
胸糞悪いね、何でそうやって差別されるんだろう…
食堂が派遣と正社員と別なら分かるけど、業務に関する事なのに
自分で無線端末用意しろとか何か当たりがきつい気がする
0090デフォルトの名無しさん
2014/06/09(月) 13:54:49.53ID:S7gX0NSaと「これを説明しないとリスクにかかわるからちゃんと説明する」
って矛盾してないかな、社員は派遣には特に説明する義務があると
思うんだけど、外部委託ってのは会社に責任があるからね
もちろん派遣も言われた事を完璧にやる責任があるけれど
あー怖いわプログラマ業界、優しい人が多いといいんだが
0091デフォルトの名無しさん
2014/06/09(月) 14:14:45.81ID:w3W81CeW「自分は周りからはとてつもない馬鹿に見えている」
という認識を持ったほうがいいと思うよ。
0092デフォルトの名無しさん
2014/06/09(月) 14:25:42.31ID:toxrNxwDitn main (void)
{
char str1[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char str2[30];
char *p1 = str1.*p2 = str2;
while (*p1 != '\0'){
p1++;
}
while (p1 > str1){
*p2 = *p1;
}
*p2 = '\0';
printf("str1 = %s\n", str1);
printf("str2 = %s\n", str2);
return 0;
}
0093デフォルトの名無しさん
2014/06/09(月) 14:39:40.52ID:WYLHhV4p派遣を差別しているんじゃなくて、自社の資源を守っているだけだってば。
派遣受け入れ企業によっては、ISO27001取っている企業からの派遣は社内資源を使える。
そういうお墨付きがなければ、責任の所在がはっきりしなくなることが問題なんだよ。
つーか、あんたの所属している会社はセキュリティ教育やってないんか?
>>92
二番目のwhileループが無条件に回り続けるぞ。
0094デフォルトの名無しさん
2014/06/09(月) 16:00:18.04ID:10ZsRbUmあほう。業務の一環としてファイルをやり取りする職種に関して派遣を
受け入れるんだから、その方法は用意されてるに決まってるだろ。
>>93
業務遂行の為に必要な手段を用意するのは受け入れ側企業の責任だ。
0095デフォルトの名無しさん
2014/06/09(月) 18:05:56.71ID:+aXF6mrh「目と手でコピペできるからネットワークもUSBメモリも要らないよね♪」
IT音痴で非合理上等な馬鹿はこの位は言いかねないって忘れちゃダメだ。
説得するより縁切るほうが幸せなんて話はいっぱい転がってるだろう。
0096デフォルトの名無しさん
2014/06/09(月) 18:06:18.47ID:p1/qsVcjガチ有能な神レベルのプログラマーの絶対数は、今も昔も変わらんと思うけど。
有能と評価されないと、いい仕事が来ないし、取れないし。
有能な先輩はなかなか引退しない一方で、有能な後輩はどんどん入ってくるし。
これからプログラマーの仕事をしていきたいと思う若い人のほとんどは
この業界で生き残れないだろうなあ(ノ∀`)
0097デフォルトの名無しさん
2014/06/09(月) 18:19:36.98ID:elouJnkO都合よく雇って、必要なくなったら切るってプログラマ業界は何か陰湿だなぁ
プログラマは派遣が多いって聞くし皆もそうだろうけど、上司に反抗したりす
ることあるんですか?
0098デフォルトの名無しさん
2014/06/09(月) 18:21:23.38ID:KkJSpVoD0099デフォルトの名無しさん
2014/06/09(月) 18:22:29.42ID:elouJnkOとことん効率化だもんね、というかプログラマ業界っていい人いるのかな
0100デフォルトの名無しさん
2014/06/09(月) 18:24:23.17ID:w3W81CeW0101デフォルトの名無しさん
2014/06/09(月) 18:25:08.81ID:elouJnkOすまん話題変えて下さい
0102デフォルトの名無しさん
2014/06/10(火) 01:22:15.85ID:hw1Ah46f0103デフォルトの名無しさん
2014/06/10(火) 02:36:18.24ID:VWf0ifMQ0104デフォルトの名無しさん
2014/06/10(火) 03:40:20.59ID:Ilc7zK85\\
\\\
\ ∧_∧
( ´・ω・)
G と) ガッ >>102
ヽ⌒)、 \人∧__∧
 ̄ (_) >`д´)')
∨つ /
0105デフォルトの名無しさん
2014/06/10(火) 18:52:49.56ID:DkrpkAeKこき使う光景はあるの?
0106デフォルトの名無しさん
2014/06/10(火) 19:13:43.00ID:nALxwbXP0107デフォルトの名無しさん
2014/06/10(火) 20:30:28.22ID:FNjvwEHU0108デフォルトの名無しさん
2014/06/21(土) 11:32:50.79ID:w6/U3+mb次に進むにはどうすればいい?
0109デフォルトの名無しさん
2014/06/21(土) 11:52:34.13ID:edI8EdJM具体的に何か作る。
0110デフォルトの名無しさん
2014/06/25(水) 10:52:51.25ID:VoOhbGnIif(!(fp = fopen("test", "r")))
どっちも、オープンに失敗した時の処理なんだけど
! がついた場合、わかりづらいんだけど
どう、日本語に変換すればいい?
0111デフォルトの名無しさん
2014/06/25(水) 11:02:49.63ID:HvVAb7Czどっちも間違いです。
空ポインタは0ではないですし、偽でもありません。
0112デフォルトの名無しさん
2014/06/25(水) 12:50:41.65ID:YLjaljGaリテラル 0 はヌルポインタをコード中に表現する唯一の方法だお。
ヌルポインタがアドレス 0 を指しているかどうかは環境依存だけどね。
0113デフォルトの名無しさん
2014/06/25(水) 13:01:42.50ID:KznGqNfnどっちも「fopenに失敗したら」ぐらいかな
!は直後にスペース入れれば、それほど分かりにくくはなくなる
0114デフォルトの名無しさん
2014/06/25(水) 13:17:51.10ID:0tJulZC30115デフォルトの名無しさん
2014/06/25(水) 13:18:41.25ID:GQuGFHte!(fp = fopen("test", "r"))
)
0116デフォルトの名無しさん
2014/06/25(水) 13:22:31.72ID:uXTcysvcそれはC89以降限定の話。
C言語って言われたら普通はK&Rを基準にすべきではないかな?
0117デフォルトの名無しさん
2014/06/25(水) 13:33:28.08ID:KznGqNfn0はNULLだよ
0118デフォルトの名無しさん
2014/06/25(水) 13:53:44.07ID:+tO4zwzZおまえは関数プロトタイプ禁止な
0119デフォルトの名無しさん
2014/06/25(水) 14:07:22.16ID:gOHbwnP9スレ違い
0120デフォルトの名無しさん
2014/06/25(水) 14:08:15.46ID:HvVAb7Czそういやそうだった。NULLは(void *)0であることが規定されてたね。
0121デフォルトの名無しさん
2014/06/25(水) 14:16:10.04ID:9Qs+mHCLで激論になった思い出
0122デフォルトの名無しさん
2014/06/25(水) 14:26:13.00ID:C2C/m4/J0123デフォルトの名無しさん
2014/06/25(水) 16:13:21.65ID:EItPnDF/0124デフォルトの名無しさん
2014/06/25(水) 16:32:50.02ID:0tJulZC3ヘッダファイルの#define NULLを-1に書き換えて環境すべてをビルドしてあって、
#define NULL -1のヘッダが提供されていても?w
0125デフォルトの名無しさん
2014/06/25(水) 16:45:13.60ID:TXFFLWLf0126デフォルトの名無しさん
2014/06/25(水) 16:45:56.55ID:gOHbwnP9スレ違い
0127デフォルトの名無しさん
2014/06/25(水) 16:46:20.52ID:KznGqNfnそれでも0はNULL
0128デフォルトの名無しさん
2014/06/25(水) 16:48:25.71ID:KznGqNfn0129デフォルトの名無しさん
2014/06/25(水) 17:10:49.06ID:GQuGFHte0130デフォルトの名無しさん
2014/06/25(水) 17:41:27.84ID:RjkMX0qC標準ではありえないお。
誰かが書き換えてたら、、、それは既にヌルポインタ表現ではないお。
0131デフォルトの名無しさん
2014/06/25(水) 17:42:05.07ID:GI9gCNNzstruct {
void *hoge;
...
} hoge;
memset(&hoge, 0, sizeof(hoge));
0132デフォルトの名無しさん
2014/06/25(水) 17:43:41.88ID:RjkMX0qCそれはないと思うお。。。
0133デフォルトの名無しさん
2014/06/25(水) 17:44:17.53ID:RjkMX0qCそれは確かに正しくないお。
0134デフォルトの名無しさん
2014/06/25(水) 21:17:03.92ID:DxJgguqg0135デフォルトの名無しさん
2014/06/26(木) 05:15:27.12ID:X/LxLn4nで、実際にヌルポインタが非0の実用されてる環境(コンパイラ)ってどの位あるんだろう?
実体がポインタになってるハンドルやIDで-1を不正値に使う事はままあるけどそれじゃなく、
Cのポインタで非0を使う(if(ptr)が非0で真ではなく定数との不一致で真になる)環境の方。
>>131
ちょっと脱線するかも知れんけど、
環境に依存してるコードは「正しくないコード」になるのだろうか?
Cの規格的に意図した動作をしないだろうコードではあるけど…
0136デフォルトの名無しさん
2014/06/26(木) 06:58:43.56ID:mh/settt実際にreturn (NULL);とか返していて、
ヘッダファイルのどこかに#define NULL 0なんてものがあって、
それがCFLAGSで-D=-1などNULLを返さなかったときに
支障がない値に書き換えられてコンパイルされた可能性があるとして、
比較する相手をNULLではなく0とハードコードしてしまっておくのは
どうなんでしょ?とw
0137デフォルトの名無しさん
2014/06/26(木) 07:36:30.45ID:u2uRfkpu0138デフォルトの名無しさん
2014/06/26(木) 07:48:39.42ID:Cm5OpuPANULLは予約済みの識別子なので、書きかえた場合は未定義動作になる
0139デフォルトの名無しさん
2014/06/26(木) 20:50:53.40ID:e4hDCyafかえってNULLで比較してるほうが動かない可能性高いと思う。
0140デフォルトの名無しさん
2014/06/27(金) 02:24:49.53ID:NxgNCk2RGNUコンパイラ用にNULLを__nullとしてあってもそれを0以外の数字にした
ヘッダに置き換えられていて、それが使う人にも提供されていたとしたら?
0141デフォルトの名無しさん
2014/06/27(金) 02:39:40.91ID:m1tFkoOqそれ単に規格に違反したC風処理系ってだけ
0142デフォルトの名無しさん
2014/06/27(金) 05:29:26.66ID:jrf75mY1ヌルポインタを非0の定数にしてるコンパイラ持って来た方が良い。
NULLマクロ弄り回すのは只のアホコードに過ぎないが、
ヌルポインタを非0の定数で実現するのは規格上合法なんだから。
0143デフォルトの名無しさん
2014/06/27(金) 06:09:49.03ID:NxgNCk2R0144デフォルトの名無しさん
2014/06/27(金) 06:12:03.95ID:NxgNCk2R必ず0だと確信して使っているなんてことは無いよね?w
規格は0だと言ってるけどw
0145デフォルトの名無しさん
2014/06/27(金) 08:22:35.29ID:ey7kK0Y30はNULLだけど。
0146デフォルトの名無しさん
2014/06/27(金) 08:40:30.71ID:xopfSmwpまずc faq読むところから始めようお。
微妙な文章表現の違いが、大きな意味の違いになるお。
ヌルポインタ、NULL、ソースコード上のリテラル0、アドレス0、…etc.
これらを厳密に理解してないと話がかみ合わなくなるお。
0147デフォルトの名無しさん
2014/06/27(金) 13:11:43.03ID:v0p75oAp0148デフォルトの名無しさん
2014/06/27(金) 13:51:48.32ID:i+7bsjKx0149デフォルトの名無しさん
2014/06/27(金) 13:53:06.66ID:cRFDppSi0と(void *)0は違うよ
0150デフォルトの名無しさん
2014/06/27(金) 14:41:59.42ID:z+13KQkR0151デフォルトの名無しさん
2014/06/27(金) 20:54:46.54ID:XxrMJ8w7if(i==(int)NULL)
0152デフォルトの名無しさん
2014/06/28(土) 00:25:04.87ID:pOZgeTQj0153デフォルトの名無しさん
2014/06/28(土) 00:39:56.75ID:9xXyI8Cq0154デフォルトの名無しさん
2014/06/28(土) 02:55:52.88ID:UKD/KYiNどうすりゃええの?
0155デフォルトの名無しさん
2014/06/28(土) 06:21:56.82ID:8spGr7lj1つだけNULLをキャストしても問題ない型が99にある気がするw
0156デフォルトの名無しさん
2014/06/28(土) 06:22:53.35ID:8spGr7lj符号の有り無しでペアw
0157デフォルトの名無しさん
2014/06/30(月) 11:52:03.92ID:nVpZ4SaXint convert(void)
int と voidの違いってなんですか?
0158デフォルトの名無しさん
2014/06/30(月) 12:00:46.27ID:lJxnkRTG0159デフォルトの名無しさん
2014/07/01(火) 08:47:59.26ID:aIWSKYXTgccで動的ライブラリ(libxxx.so)をリンクして実行ファイル作るとき、
コンパイラやリンカは何してるのでしょうか?
実際のリンクは実行時に行われると理解しているのですが、、、
型のチェックとかだけしてるのでしょうか?
0160デフォルトの名無しさん
2014/07/01(火) 09:20:22.53ID:kPzbbcEJ★+ニュース板
・ 2NN (推薦)
・ 2chTimes
★+ニュース板新着
・ 2NN新着
・ Headline BBY
・ unker Headline
★+ニュース板その他
・ Desktop2ch
・ 記者別一覧
★全板
・ 全板縦断勢いランキング (推薦)
・ スレッドランキング総合ランキング
・ ログ速
★全板実況込み
・ 2勢 (推薦)
・ READ2CH
・ i-ikioi
※ 要タイトル名検索
※ 推奨2chブラウザ併用
0161デフォルトの名無しさん
2014/07/01(火) 13:06:22.47ID:xCHeKPxQリンクできるかのチェックをするし、そのライブラリを使うという情報を実行ファイルにいれる。
動的リンクの場合、ライブラリの関数のアドレスが不定だから
未解決のままにしてる(リンカはなにもしない)と思ってるかもしれないけど
普通の環境だと関数コールの宛先は確定してるので、普通に?リンクしてるよ
0162デフォルトの名無しさん
2014/07/01(火) 14:11:38.53ID:WdBXMFPF0163デフォルトの名無しさん
2014/07/01(火) 18:08:52.69ID:ktmXStnCscanfでいいんですか?
0164デフォルトの名無しさん
2014/07/01(火) 18:09:41.81ID:ktmXStnC0165デフォルトの名無しさん
2014/07/01(火) 18:10:25.17ID:ktmXStnCvoid ○○(??)
0166デフォルトの名無しさん
2014/07/01(火) 18:26:34.60ID:/V+CYOkDどう関連するの?
0167デフォルトの名無しさん
2014/07/01(火) 19:59:53.55ID:WdBXMFPF0168デフォルトの名無しさん
2014/07/01(火) 21:00:02.11ID:Jx+aGKzH自分は最近明解c言語入門編でc言語の勉強を始めましたが、
p27のlist2−7をがうまくいきません
下が自分の参考書をみて打ち込んだプログラムですが
#include <stdio.h>
int main(void)
{
double vx,vy;
puts("2つの数を入力してください");
printf("実数vx:"); scanf_s("%1f", &vx);
printf("実数vy:"); scanf_s("%1f", &vy);
printf("vx+vy=%f\n", vx + vy);
printf("vx-vy=%f\n", vx - vy);
printf("vx*vy=%f\n", vx * vy);
printf("vx/vy=%f\n", vx / vy);
return(0);
}
これをデバックなしで開始して
vxに40.5を入力まではできるのですが
vyが入力できず滅茶苦茶な値がかえってきます
開発環境はvisual studio 2013 です
0169168
2014/07/01(火) 21:03:25.82ID:Jx+aGKzH0170デフォルトの名無しさん
2014/07/01(火) 21:18:01.53ID:XzU8UZNA0171デフォルトの名無しさん
2014/07/02(水) 06:23:21.82ID:f2aJiwOs>>162
ありがとうございます
なんとなくイメージできました。
0172デフォルトの名無しさん
2014/07/03(木) 00:52:06.61ID:yifSsDmR0173デフォルトの名無しさん
2014/07/03(木) 00:55:09.38ID:DXaZxPH60174デフォルトの名無しさん
2014/07/03(木) 01:03:49.64ID:yifSsDmR保護するってそういう関数があるの?
int *p =malloc
if(fork()==0){
pにアクセス
}
これってできる?
0175デフォルトの名無しさん
2014/07/03(木) 01:29:24.35ID:ZQktXMZqforkするとメモリ内容がコピーされて別々になる。
アドレスは同じになるようにページングで見せかけてる。
0176デフォルトの名無しさん
2014/07/03(木) 01:39:31.64ID:yifSsDmRページングはよくわからないけど、プロセスごとにメモリ空間?ができるん?
アドレスの値が一緒なのに指してる先が違うってことだよね?
0177デフォルトの名無しさん
2014/07/03(木) 01:48:56.03ID:dV5x+oVaMS-DOS のような原始的な OS でもない限り、各プロセスは独自のメモリ空間を持つ
0178デフォルトの名無しさん
2014/07/03(木) 02:45:28.93ID:yrFJuqwB0179デフォルトの名無しさん
2014/07/03(木) 07:05:57.11ID:hoM7mJ8vそう
>>177
メモリ管理ユニットの無い環境で使われるOSは今でも全プロセスで同一のメモリ空間を使う事がある
0180デフォルトの名無しさん
2014/07/03(木) 07:58:10.25ID:ZQktXMZq興味本位で聞くけど、そういうOSで今でもよく使われてるのあったら名前教えて。
PICとかAVRとかのマイコン用かな。
0181デフォルトの名無しさん
2014/07/03(木) 08:07:02.97ID:ZQktXMZqMS-DOSはセグメントでページングと同等のことしてなかった?
それともロード時にローダーが頑張ったの?
メモリ保護は当然ないと思うけど。
0182デフォルトの名無しさん
2014/07/03(木) 08:47:49.99ID:hoM7mJ8vあんま詳しく知ってるわけじゃないけど、MMU無しのμClinuxとかは今でもメンテされてるっぽい。
H8(開発停止、生産供給のみ)で使うMESってOSも確かMMU無しで、ホビー用途では流行ってた筈。
ホビーで使われてる場合は作例等がネット上で観測できるから多少はシェアが分かるけど、
業務で使われてる場合は実際に何がどの位の数で使われてるかよくわからん。
PICやAVRまでいくと規模が小さすぎる上にプログラム空間がFlashメモリ固定だったりして、
OSというよりブートローダーって呼ばれる類の小さなシステムばかりな気がする。
>>181
セグメントとEMSは別の仕組みだった気がするけど、それら含めたメモリ空間は共用って事になるんでね?
0183デフォルトの名無しさん
2014/07/03(木) 08:58:11.99ID:ZQktXMZqありがとう。OSについて参考になった。
セグメントはリロケートしやすくする機構であって
確かに、空間を分けるってものじゃないね。
セグメントレジスタはいじり放題だし。
0184デフォルトの名無しさん
2014/07/03(木) 13:39:10.99ID:b94sekO1int main(void)
{
int i;
for (i = 0; i < 10; i++)
printf("%d ", series());
return 0;
}
/* これは正しくない */
int series(void)
{
int total;
total = (total + 1423) % 1422;
return total;
グローバル変数とローカル変数なんだけど
なんでエラーなのかわかりません・・・orz
0185デフォルトの名無しさん
2014/07/03(木) 13:49:32.71ID:x6tWgs3ustatic int total;
0186デフォルトの名無しさん
2014/07/03(木) 14:40:21.54ID:M7lcZRBSとりあえず最後に } がいるんじゃないか
0187デフォルトの名無しさん
2014/07/03(木) 15:31:36.05ID:hoM7mJ8v0188デフォルトの名無しさん
2014/07/03(木) 15:59:19.23ID:UCpRmhSf0189デフォルトの名無しさん
2014/07/05(土) 06:40:04.07ID:ZLTRe8Cjtron
VxWorks
0190デフォルトの名無しさん
2014/07/05(土) 09:39:23.10ID:NUdHoME9こいつはたしかトイレにいっていたみたいhttp://blog-imgs-46.fc2.com/s/a/r/saritoma/kikitoilet.jpg
0191デフォルトの名無しさん
2014/07/05(土) 09:53:44.96ID:LmLbrS1U0192デフォルトの名無しさん
2014/07/05(土) 13:56:41.10ID:PrOFO7ghメモリーマップドファイルで共有する領域ならお互い読み書きできる
0193デフォルトの名無しさん
2014/07/08(火) 11:31:06.66ID:Cf/IosMuどうすればいい?
0194デフォルトの名無しさん
2014/07/08(火) 11:42:33.70ID:SUG27oZM#define END ;}
0195デフォルトの名無しさん
2014/07/08(火) 11:45:11.67ID:z6eg5pPoどう分からんのかくやしく。
0196デフォルトの名無しさん
2014/07/08(火) 13:05:29.37ID:w5EkuvqN中括弧を省いていいケースが不透明というならまだ分からなくもない
結論:省くな
0197デフォルトの名無しさん
2014/07/08(火) 16:48:15.10ID:SUG27oZM0198デフォルトの名無しさん
2014/07/08(火) 18:39:45.73ID:/j57w1JY単にスコープのためだけにブロック作るのって、
大抵は別関数にしたほうが読みやすい
0199デフォルトの名無しさん
2014/07/08(火) 23:31:14.68ID:w5EkuvqN{
// ...
}
while (...)
{
// ...
}
0200デフォルトの名無しさん
2014/07/08(火) 23:46:50.82ID:qe5n8Iypあきらかにセミコロン漏れでエラーでしょ
0201デフォルトの名無しさん
2014/07/09(水) 08:52:10.73ID:2y0ZrYim0202デフォルトの名無しさん
2014/07/09(水) 09:23:46.87ID:Lo3XeDUIVBやRubyなどのコードブロックを使わない言語
やってたからだろうな。
0203デフォルトの名無しさん
2014/07/09(水) 09:40:18.51ID:3VBCG+k8密結合にしかできないんならスコープを分けるのもそれほど筋が良くなかったってこと
0204デフォルトの名無しさん
2014/07/09(水) 11:39:38.46ID:2y0ZrYim元関数内の変数と同じ型と順序でメンバが定義された構造体の
ポインタにそのアドレスを代入する鬼仕様
0205デフォルトの名無しさん
2014/07/09(水) 22:31:57.03ID:D5g6nYoodeleteするタイミングを明確にする
0206デフォルトの名無しさん
2014/07/09(水) 23:43:58.20ID:Fnk70cEFCにはクラスもdeleteもないけどな
0207デフォルトの名無しさん
2014/07/10(木) 07:08:11.75ID:0vEa2fxDポリモーフィズムや継承までやってんだぜ
要はC++が裏方でやってる事を全部書かなきゃ行けないという本だった
0208デフォルトの名無しさん
2014/07/10(木) 09:20:05.65ID:7qdPhGap組み込みではそういうのもあり
OOPを勉強したい人にもあり
実用性はグレーかな
0209デフォルトの名無しさん
2014/07/10(木) 09:44:17.33ID:ih9I7QvO0210デフォルトの名無しさん
2014/07/10(木) 12:11:26.25ID:1VHW603R0211デフォルトの名無しさん
2014/07/10(木) 12:33:07.80ID:dtRC2hu/OOPは…まあ、必要に応じて最小限で良い気がする。
何かOOPが目的な奴もいるからoopsって感じ。
0212デフォルトの名無しさん
2014/07/10(木) 13:35:53.89ID:b/HkBDRx最近は組み込みでもC++使えるくらいリッチな環境になってるの?
0213デフォルトの名無しさん
2014/07/10(木) 14:15:32.49ID:E/oPwPCa0214デフォルトの名無しさん
2014/07/10(木) 17:33:49.48ID:nbN7AmchSRAMの無い8ビットマイコンはCもほぼ無理。
8ビットでもSRAM乗ってればCも使えるし実用になるかはともかくC++も使える。
ARMあたりになると組み込み組み込みしてる物からAndroid走るくらいのやつまであってC++は当然動く。
ていうか組み込みPCを持ってくると結構前からWindowsが動くくらいの状態だからC++が動かないわけがない。
0215デフォルトの名無しさん
2014/07/10(木) 17:36:15.58ID:hqBK5Ssdだがしかし、組み込みはアセンブラかC言語が普通だね。
0216デフォルトの名無しさん
2014/07/10(木) 17:47:00.79ID:ih9I7QvO今時のSBCはLinuxが載ってて当たり前だから、普通にC++使えるんだけど。
PICみたいな小容量のマイコンだってCで書くのが当たり前だし。
0217デフォルトの名無しさん
2014/07/10(木) 18:10:11.86ID:ZvvgKyMx0218デフォルトの名無しさん
2014/07/10(木) 18:24:59.00ID:nbN7Amch彼の家の家電製品は時計に電灯に洗濯機から炊飯器まで、
全てLinux搭載またはマイコン非搭載で揃ってたりするのかな。頂点SEさんパネェっス
0219デフォルトの名無しさん
2014/07/10(木) 20:39:54.83ID:E/oPwPCaシビアな要求あるところは、使うプロセッサを分けるとか専用回路とか
0220デフォルトの名無しさん
2014/07/10(木) 20:47:58.23ID:E/oPwPCa妄想君には大半がLinuxで動いていることになっているんだろう
0221デフォルトの名無しさん
2014/07/10(木) 20:55:31.00ID:nbN7AmchRTOSで駄目なくらいシビアな所は専用回路というかプログラマブルロジックというか
# そしてプログラマブルロジック上にソフトプロセッサが乗る、と
0222デフォルトの名無しさん
2014/07/10(木) 21:09:32.99ID:E/oPwPCaLinuxのRTOSがうまく使えなかったんだなぁと思ったな
0223デフォルトの名無しさん
2014/07/11(金) 08:11:37.83ID:uxQKijF3それはさて、この板の住人が語る組み込みなんてそんなもんだろ。
0224デフォルトの名無しさん
2014/07/11(金) 11:40:20.70ID:OHkVxFp9C++で書きたいと思うことがよくある
0225デフォルトの名無しさん
2014/07/11(金) 13:19:50.46ID:V7EkPFDv意地でもCオンリーでコード組むことなら良くある
0226デフォルトの名無しさん
2014/07/12(土) 20:21:28.84ID:2sG0i3qJ0227デフォルトの名無しさん
2014/07/13(日) 07:34:58.24ID:fGnnU/OX?
0228デフォルトの名無しさん
2014/07/13(日) 08:55:54.74ID:OfL9oG5/そのスマフォのOSカーネルには linuxやFreeBSDの血が脈々と流れているというのだが‥
0229デフォルトの名無しさん
2014/07/13(日) 09:11:18.87ID:170EvHlIその組み込みLinuxのエンジニアは負け組
0230デフォルトの名無しさん
2014/07/13(日) 09:39:43.96ID:0Iul1EJeなんで?
0231デフォルトの名無しさん
2014/07/13(日) 17:46:36.86ID:j69AiKJb0232デフォルトの名無しさん
2014/07/13(日) 18:23:56.48ID:iAOcvloyお前程度の知能の奴にはたいして変わらん
0233デフォルトの名無しさん
2014/07/13(日) 18:52:07.95ID:7y/Xcjj/ほとんど一緒だから気にしなくていいよ
0234デフォルトの名無しさん
2014/07/14(月) 01:04:15.33ID:upDk1kffケータイ開発の泥沼引きずってそうだから、とか。
0235デフォルトの名無しさん
2014/07/14(月) 01:12:52.53ID:k3UE1OMQ生きてるだけの屍増やしまくって、あの世に送るより怖いことしたことすらわかったなかったような
0236デフォルトの名無しさん
2014/07/15(火) 21:24:12.02ID:l5KdQcGw速度差がないそうですが本当ですか?
だとすると現在の参考書でポインタを解説したものは速度的には
役にたたない、ということですか?
0237デフォルトの名無しさん
2014/07/15(火) 23:19:53.64ID:c2LLaewHポインタの場合メモリは何処に確保する?
0238デフォルトの名無しさん
2014/07/15(火) 23:22:48.98ID:G8cUQ8aOポインタの配列というパターンはどうするのというのは置いといて、
連結リストのソートのことだとすると、
最初からそのデータ構造を持っていて、
ソートが必要になるシチュエーションなんていくらでもありうる。
いちいち配列に変換したりしないよ。
0239デフォルトの名無しさん
2014/07/16(水) 00:55:22.22ID:m0YcwmXRたとえばC言語で「構造体の配列」と「構造体へのポインタの配列」について
要素の並びを変更に要する時間を比較してみると、
前者は構造体の全メンバの値をコピーしなければならないのに対して
後者はポインタの値だけをコピーすればいいから、後者の方が速い
ただし、最近は「PCの処理能力が飛躍的に向上している」から、
よほど巨大な配列でない限り、両者を性能測定しても僅かな差にしかならない
だから(両者の間には)「速度差がない」と言う人がいるのかもしれないが、
学校の演習やアルゴリズムの初歩的な学習過程のように、「まずは動く事が最重要」
という世界であれば、そういった意見も間違いではない(理由は上に書いた)
ただし>>236が社会に出て一人前のC言語プログラマを目指すのなら、
「コードの簡潔さと可読性を損なわない範囲」で論理的に速い手法、
つまりポインタを迷わず選択できる技術レベルを目指したほうがいいと思う
0240デフォルトの名無しさん
2014/07/16(水) 01:35:42.22ID:Remwvl230241デフォルトの名無しさん
2014/07/16(水) 08:22:39.84ID:BURSNuP/みんなが言うように、理論上一般的にはポインタの方が速いし、いかなる場合でも安定速度で動作すると思う。
でも、ボトルネックの多くはアルゴリズムになるので、同じアルゴリズムを使うなら、「事実上」優位な差は無いって事だと思う。
つまり、「速度を気にするなら、ポインタか実体か等の些細な事を気にするのではなくて、まずアルゴリズムに注力しなさい」ってことでは無いだろうか?
0242デフォルトの名無しさん
2014/07/16(水) 09:22:00.35ID:b0IB8P33軍曹のイメージが強いよね
0243デフォルトの名無しさん
2014/07/16(水) 11:13:12.38ID:Bfvq8rh+0244デフォルトの名無しさん
2014/07/16(水) 12:52:51.21ID:VblCYr0v構造体を見分ける為。昔々、typedefがなかった頃からの仕様。
0245デフォルトの名無しさん
2014/07/16(水) 22:50:56.69ID:i1elQGnl0246デフォルトの名無しさん
2014/07/18(金) 20:01:06.72ID:QuIJUfIo0247デフォルトの名無しさん
2014/07/24(木) 11:58:13.75ID:WXYCrUOOさっぱりわからん・・・orz
0248デフォルトの名無しさん
2014/07/24(木) 12:16:11.82ID:yzB7ELG1文字を入れ替えるだけという前提が間違っているとか。
0249デフォルトの名無しさん
2014/07/24(木) 13:07:02.46ID:3KospQng0250デフォルトの名無しさん
2014/07/24(木) 13:18:09.15ID:xTQLZeLW0251デフォルトの名無しさん
2014/07/25(金) 08:17:52.98ID:Eg4WjsQK文字を入れ換えるのは単語を入れ換えるのと同義なんだよな
0252デフォルトの名無しさん
2014/07/25(金) 09:32:56.18ID:VBJ8WzY72重までだったら、わかるんだが・・・
0253デフォルトの名無しさん
2014/07/25(金) 10:00:37.15ID:otjmOjtQ2重までだったら、わかるんだが・・・
0254デフォルトの名無しさん
2014/07/25(金) 10:38:46.31ID:O+hDRTyl0255デフォルトの名無しさん
2014/07/25(金) 10:54:54.59ID:nHudeAGx2重が分かって3重が分からないってのが不思議だ。
実は、2重ループが分かってないんじゃないのか?
0256デフォルトの名無しさん
2014/07/25(金) 13:04:53.03ID:nF2+mOeo三重になると、x,y,zの3次元で1*1*1に区切った立方体を順番に実行していくイメージ
二重がわかるっていうのはこんな感じなのでは
0257デフォルトの名無しさん
2014/07/25(金) 13:16:27.17ID:0P73N4J40258デフォルトの名無しさん
2014/07/25(金) 13:59:56.91ID:Eg4WjsQKそれはループじゃなくて配列の話だろ
0259デフォルトの名無しさん
2014/07/25(金) 15:38:28.86ID:boPSLA5Xまぁ配列の処理からイメージさせるというのもありでしょ
配列から離れるなら、
・1日の中の時刻を0時0分0秒から23時59分59秒まで全て順に表示しなさい
みたいな。
0260デフォルトの名無しさん
2014/07/25(金) 23:04:55.48ID:XmSzrFo7FOR J=0 TO 59
FOR K=0 TO 59
PRINT USING "##時##分##秒": I, J, K
NEXT K
NEXT J
NEXT I
これだな。
0261デフォルトの名無しさん
2014/07/25(金) 23:49:42.25ID:Eg4WjsQK何で敢えて他言語で
0262デフォルトの名無しさん
2014/07/25(金) 23:51:12.35ID:+FatXGOZ0263デフォルトの名無しさん
2014/07/26(土) 16:58:59.38ID:4PJmQm8H0264デフォルトの名無しさん
2014/07/26(土) 17:00:52.26ID:8nNWA9Q8組み込みでハードに近い人とかネットワーク屋でもプロトコル自体を
触る人とかがよく使う。
0265デフォルトの名無しさん
2014/07/26(土) 17:40:39.89ID:h/TRjXuF貧乏性でフラグはビット命!boolとかもったいない!という人達が使う
0266デフォルトの名無しさん
2014/07/26(土) 17:43:05.14ID:kcCH3L9g0267デフォルトの名無しさん
2014/07/26(土) 17:47:59.18ID:bPRuMmkQそのbit0で、LEDをon:1/off:0させる
uint8_t reg = 0x00;
reg |= 0x01; // on
reg &= 0x00; // off
0268デフォルトの名無しさん
2014/07/26(土) 17:55:33.87ID:+1COesfIbit1 に別のLEDが割り当てられることも考慮すれば、
reg &= 0xFE; // off
とすべきではなかろうか
0269デフォルトの名無しさん
2014/07/26(土) 17:58:25.67ID:rsQTo023デスクトップ屋でも
if( dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
みたいに使うだろ
0270デフォルトの名無しさん
2014/07/26(土) 18:07:26.78ID:j8MnQQBx2枚の画像を重ね合わせたり
0271デフォルトの名無しさん
2014/07/26(土) 18:08:53.52ID:j8MnQQBx0272デフォルトの名無しさん
2014/07/26(土) 18:14:12.39ID:+1COesfIC言語でファイルの種類を判定するには、#include <sys/stat.h> の後
if (S_ISDIR(file_stat.st_mode))
みたいにマクロを使う(=ビット演算子は使わない)のが一般的ではなかろうか
0273デフォルトの名無しさん
2014/07/26(土) 18:52:10.04ID:1dyiAST7俺ならこうかな
reg &= ~0x01; // off
0274デフォルトの名無しさん
2014/07/26(土) 19:01:02.86ID:+1COesfIbit 0, bit 1 の代わりに bit n と考えれば、こうかな
#define BIT_ON(n) (0x01 << n)
#define BIT_OFF(n) (~(0x01 << n))
reg |= BIT_ON(0); // on
reg &= BIT_OFF(0); // off
0275デフォルトの名無しさん
2014/07/26(土) 19:03:49.69ID:3Z2mmB+mwin32apiはビットでフラグもつやつがあるから、昔はビット演算は必須だったな。
0276デフォルトの名無しさん
2014/07/26(土) 19:49:13.99ID:rYm6kUeY今は違うの?
0277デフォルトの名無しさん
2014/07/26(土) 19:54:01.35ID:3Z2mmB+m今でもwin32apiを使ったらビットフラグ使わなきゃならないけど、win32apiを直接使う人は少なくなってるんじゃないの。
0278デフォルトの名無しさん
2014/07/26(土) 20:58:41.09ID:1dyiAST7念のために
#define BIT_ON(n) (0x01 << (n))
としておいた方がいいかと、
reg |= BIT_ON(x ? 0 : 1); // on
と、されてもいいように。
0279デフォルトの名無しさん
2014/07/26(土) 21:33:57.48ID:gV+vyF7Vあれはコンパイラ側の問題と捉えて良いんでしょうか?
つまり対応したコンパイラでコンパイルしなおせばそれでOKみたいな???
(実際には使ってるライブラリその他の事も含めてそんな単純には行かないであろうことは
百も承知の上でですけど^^;)
0280デフォルトの名無しさん
2014/07/26(土) 21:35:03.87ID:kcCH3L9g0281デフォルトの名無しさん
2014/07/26(土) 21:53:00.70ID:6BQvzT2e0282デフォルトの名無しさん
2014/07/26(土) 22:02:05.90ID:ukF5OFL/0283デフォルトの名無しさん
2014/07/26(土) 22:26:57.62ID:rsQTo023ビットフィールドの方が移植性低いぜ
0284デフォルトの名無しさん
2014/07/27(日) 00:29:45.25ID:SZPTpHHgデータを32bitでストレージに保存してたら、そっちも対応しなきゃならないな。
0285デフォルトの名無しさん
2014/07/27(日) 00:37:30.25ID:sZnC98lA} while(0);
の中でcontinueしたら、doに戻るんだっけ?抜けるんだっけ?
0286デフォルトの名無しさん
2014/07/27(日) 04:43:23.67ID:j6qWMrth0287デフォルトの名無しさん
2014/07/27(日) 06:13:24.92ID:wsh1VGaY0288デフォルトの名無しさん
2014/07/27(日) 09:21:06.98ID:QrNeZy3Aありがとうございます。
データの方もひっかかるのか。
プログラマじゃないんで判らないんですが、これってその対策は進んでいるん
ですかね?
2000年問題みたいにまた直前になって…みたいにならなきゃ良いけど
0289デフォルトの名無しさん
2014/07/27(日) 09:27:08.46ID:sZnC98lAありがとう。やっぱ抜けるのが正しいのか。
>>288
2038年までに32bit環境は死滅する予定になっている。
0290デフォルトの名無しさん
2014/07/27(日) 09:38:49.11ID:ltjaKK050291デフォルトの名無しさん
2014/07/27(日) 09:44:06.19ID:v6vapd6icontinueはループボディの最後へのジャンプなんだから当たり前。
0292デフォルトの名無しさん
2014/07/27(日) 11:33:55.65ID:b6NTPR2W20年後のことを語るより夏休みの宿題を終わらせるのが先
0293デフォルトの名無しさん
2014/07/27(日) 11:49:49.95ID:wsh1VGaYそういうこと言って問題を先送りしてるから
最後の最後に絶望的な局面を引き起こす羽目に陥るんだよ
0294デフォルトの名無しさん
2014/07/27(日) 12:41:46.35ID:sZnC98lAいや、コンパイラ新しくしたら変な動きになったんで調べてたら、
どうやら昔ビルドにつかっていたコンパイラは、continueでdoに戻って
いたようで偶然動いていたらしい、って話。
0295デフォルトの名無しさん
2014/07/27(日) 14:37:50.60ID:b6NTPR2W0296デフォルトの名無しさん
2014/07/27(日) 14:59:16.22ID:aYnkFzcQ0297デフォルトの名無しさん
2014/07/27(日) 17:15:42.39ID:v6vapd6i0298デフォルトの名無しさん
2014/08/03(日) 12:24:49.30ID:q8fBalr70299デフォルトの名無しさん
2014/08/03(日) 12:30:21.56ID:ISgwalBi0300デフォルトの名無しさん
2014/08/04(月) 23:51:39.18ID:bDxy1C2r0301デフォルトの名無しさん
2014/08/10(日) 21:27:50.14ID:PuOMdoMvメモリ超過か時間超過のどっちかにしかできない・・・
どんな考え方したらうまくいくのだろうか
unsigned char2次元配列を平面とみなして、入力された長方形の範囲を1にしていき
最後に面積(1の数)と周長(1と0がとなり合う箇所をカウント)を計算
・・・メモリ超過
上記のメモリ確保方法ではchar型でも2値しか使わないので、
1ビットずつに意味を持たせるように変更し、カウント方法をビット操作に変更
・・・時間超過
0302デフォルトの名無しさん
2014/08/10(日) 21:55:42.53ID:yCu0RZw+コードアップ出来るんだっけ?
0303デフォルトの名無しさん
2014/08/10(日) 22:13:54.20ID:PuOMdoMv適当にID pass name入れてアカウント登録したら
問題右上の用紙に上矢印のマークからコードをアップできる
0304デフォルトの名無しさん
2014/08/10(日) 22:18:33.21ID:YfIekyq6最初は0と10000^2 の二値
シートを置く=線を切って行く
0305デフォルトの名無しさん
2014/08/12(火) 00:40:58.19ID:IhypJxyzscanf("%d",&n);
でnに数値入力後、nの値を間違って変更しないようにしたいです。
コンパイル時にワーニングが出るようなコーディングの方法は無いでしょうか?
例:コードのどこかでn++;とか書いてあると、コンパイル時にワーニング。
0306デフォルトの名無しさん
2014/08/12(火) 00:58:36.73ID:l3M/GQwOラッパー噛ませたらどうかな?
int get_n(void)
{
int n;
scanf("%d",&n);
return n;
}
int main(void)
{
const int n = get_n();
n++; /* コンパイルエラー */
…
}
0307デフォルトの名無しさん
2014/08/12(火) 01:20:24.64ID:IhypJxyzなるほど、
const int n = get_val();
const int m = get_val();
のように複数の変数でも使えますね。
ありがとうございます!
0308デフォルトの名無しさん
2014/08/24(日) 14:00:04.23ID:EYMdVqe7片対数グラフで直線だから既に指数関数的増加だった
2014年に、西アフリカでアウトブレイクした潜伏期間延長型エボラの死者は、2014年8月半ばで1000人。←今ココ
2014年12月上旬で1万人。
この時点で世界規模で空路シャットダウン開始、世界経済大混乱
2015年5月で10万人。
2015年9月で100万人。
この時点で、第二次世界大恐慌発生
2015年大晦日で1000万人。
ちなみに
http://ja.wikipedia.org/wiki/2014%E5%B9%B4%E3%81%AE%E8%A5%BF%E3%82%A2%E3%83%95%E3%83%AA%E3%82%AB%E3%82%A8%E3%83%9C%E3%83%A9%E5%A4%A7%E6%B5%81%E8%A1%8C
:カナダ保健省のサイトでは体内に数個のエボラウィルスエアロゾルが侵入しただけでも発症するとしている
:ハマダラカが、吸血したての人の新鮮血を媒介しているという学説が浮上している
エボラ出血熱は蚊やアブに刺されただけで感染する。
:「この地域には内戦、政府による搾取、テロが長い間続いており、それによって生まれた恐怖、貧困、猜疑心などがある。エボラは耐え難い騒音に付け加えられた一つのざわめきに過ぎない」
現地では
や る 気 は 皆 無
0309デフォルトの名無しさん
2014/08/24(日) 15:09:57.13ID:9mMp1Tip0310デフォルトの名無しさん
2014/09/03(水) 01:52:54.71ID:wlvyK0qzhttp://www.u-gakugei.ac.jp/~miyadera/LECTURE/ElecBook2/ptech152.htm
#include <stdio.h> ← 標準入出力関数の使用を宣言
main()
{
int power(int j); ← int型の引数を一つ持ちint型の値を返すpower関数の宣言
この様に関数の使用を宣言している所を宣言部と呼ぶ.
int x, y; ← 使用する変数の宣言&定義
scanf("%d", &x);
y = power(x); ← この時 xを実引数と呼ぶ.
printf("%d! = %d\n", x, y);
}
int power(int a) ← power関数の定義.この時 aを仮引数と呼ぶ.
{ 以下{から}までを定義部と呼ぶ.
int dum;
if (a == 0)
dum = 1;
else
dum = power(a - 1);
return dum;
}
0311デフォルトの名無しさん
2014/09/03(水) 02:31:26.56ID:nJQEVZbi昔は、関数宣言は呼び出し側が勝手に行なう流儀だったのでその名残だね。
0312デフォルトの名無しさん
2014/09/03(水) 02:32:30.41ID:qW20Ksi1C は翻訳系は先読みをしない言語なので、ある関数の中で別の関数を呼び出すときには、その関数の
・引数の数と種類
・返り値
を教えてやらないといけない。ある行で知らない関数が出てくると、その先を探すとか賢いことはしないどころか(特に返り値は)勝手に決めうちする。
きめうちされたくなければ、せめて返り値はあらかじめ教えてやらないといけない。
それの例では、逆に power() の内容を記述してから main() を書く、という順序にすれば、
http://ideone.com/UPYZ16
main() の power() 呼び出し位置の時点で翻訳者は power() のこと(引数・返り値)を知っているので、main() で関数の宣言をする必要はなくなる。
まあ古いタイプの言語だ。
あと、その power() は間違っているね‥
0313デフォルトの名無しさん
2014/09/03(水) 03:57:36.39ID:nJQEVZbiまぁ確かにpower()と言う名前がアレなのは事実だけれど。
0314デフォルトの名無しさん
2014/09/03(水) 07:06:11.37ID:gbep5tPJそのリンク先に書いてあるぞ。
要するに、スコープ制御をしているつもりらしい。
グローバル変数とローカル変数の違いのように、
power関数をmain()の中だけで使えるようにする方法らしいが、
意味有るのか疑問。
0315デフォルトの名無しさん
2014/09/03(水) 07:47:08.48ID:e01vNLZs下の方のコラム2で
「逆に我々が関数や変数を使用する場合,その性質を良く表す名前を用いなければならない.」
とか書いてるぞw
説得力あるねえw
0316デフォルトの名無しさん
2014/09/03(水) 08:25:08.73ID:qW20Ksi1>何を根拠に間違っていると極め付けているんだか。
どんな値を食わせても1を返す関数、というのはね‥
>まぁ確かにpower()と言う名前がアレなのは事実だけれど。
まぁ、そういうことになりますか‥
0317デフォルトの名無しさん
2014/09/03(水) 12:26:42.90ID:bEJrUZ0m> どんな値を食わせても1を返す関数、というのはね‥
-1 を食わせると死ぬかもしれないよ
0318デフォルトの名無しさん
2014/09/03(水) 23:44:24.36ID:pl/pTCkk0319デフォルトの名無しさん
2014/09/05(金) 05:09:23.73ID:F0C2JJROなに一巡りして戻ってくるだけだよ、スタックが十分にあれば
0320デフォルトの名無しさん
2014/09/05(金) 06:08:36.49ID:BiMZcw/Q> なに一巡りして戻ってくるだけだよ
保証されてないだろ
0321デフォルトの名無しさん
2014/09/05(金) 06:24:09.15ID:VwPznMIzIL32LLP64の環境なら可能性はあるか。
でもスタックよりは最適化に期待したいな。
0322デフォルトの名無しさん
2014/09/05(金) 09:19:22.32ID:rrkBh4hYintのoverflowやunderflowが起きた場合、結果は未定義
0323デフォルトの名無しさん
2014/09/05(金) 13:29:12.22ID:yIOI1qrLこの言葉よく間違えられてるよね
0324デフォルトの名無しさん
2014/09/05(金) 13:35:18.38ID:S1ZTJTiF0325デフォルトの名無しさん
2014/09/05(金) 13:37:25.17ID:Yrvc7r6Zttp://www.sophia-it.com/content/overflow
0326デフォルトの名無しさん
2014/09/05(金) 13:48:10.55ID:Yrvc7r6Z言ってる意味がわからないが
スタックに積んだ値を C から捨てたいってことなら
出来ない
その値を積む前のスタック位置をポインタに格納して
後で参照するだけならまあなんとか
0327デフォルトの名無しさん
2014/09/05(金) 22:37:13.24ID:F0C2JJROそろそろそうなんてもいいころだとおもうんだけれども、知らないだけ?
0328デフォルトの名無しさん
2014/09/05(金) 22:56:15.37ID:gNQZUiBs0329デフォルトの名無しさん
2014/09/05(金) 23:18:39.13ID:wyF1Tly3これのイメージがどうしても湧かない。どういう状態なんでしょ?
0330デフォルトの名無しさん
2014/09/05(金) 23:22:56.48ID:OMt31a2h0331デフォルトの名無しさん
2014/09/05(金) 23:39:28.07ID:j+jLavQh0332デフォルトの名無しさん
2014/09/06(土) 00:39:27.06ID:CKGPPObUスタックが伸びた結果両方が壊れるってことかな?
pushしてる側がpopしてる側の領域まで伸びればほぼ同時に壊せるけど、
同一のメモリ空間に複数のスタックが伸びていて、かつ、
スタックオーバフローで死なない環境でないと起きないね。
それこそ>>330のいうようにそういうゲームとして設計しないと。
0333デフォルトの名無しさん
2014/09/06(土) 03:17:35.82ID:iAGDf1Qx0334デフォルトの名無しさん
2014/09/06(土) 05:34:11.03ID:VC7+V5v8> pushしてる側がpopしてる側の領域まで伸びればほぼ同時に壊せるけど、
余計意味わからん
0335デフォルトの名無しさん
2014/09/06(土) 05:45:50.15ID:CKGPPObU一つのメモリ空間の中に2つのスタック領域を伸ばしていって、
重なった時に互いのメモリを破壊するって話じゃないのか?
0336デフォルトの名無しさん
2014/09/06(土) 05:54:07.64ID:VC7+V5v8> 一つのメモリ空間の中に2つのスタック領域を伸ばしていって、
push 側はわかるが、pop 側ってなんの話だよ
伸びる方向は知らんが、pop して領域が伸びるスタックは見たことないんだが
0337デフォルトの名無しさん
2014/09/06(土) 06:00:54.82ID:CKGPPObU伸びないけど、巻き戻ってからまた伸びるときに壊してくれるだろうが。
壊す前に壊されてる訳だが、壊されても死なない領域を先に壊してもらえれば行ける。
てか何の話だよこれ。
無意味な想定する馬鹿と無意味な想定を理解できない馬鹿と無意味な想定を解説する馬鹿の三つ巴かよ
0338デフォルトの名無しさん
2014/09/06(土) 06:34:15.84ID:VC7+V5v8お前自分でなに書いてるか理解できてないだろ w
0339デフォルトの名無しさん
2014/09/06(土) 08:32:54.56ID:Df2ub+7k0340デフォルトの名無しさん
2014/09/06(土) 08:46:06.46ID:aV+yI7S30341デフォルトの名無しさん
2014/09/06(土) 09:37:09.04ID:1vZuEAro0342デフォルトの名無しさん
2014/09/10(水) 11:09:32.18ID:v7+f1Xyst = 1 + (int) (100.0*rand()/(RAND_MAX+1.0));
fprintf(stdout,"%3d ",t);
}
1 + (int) の1+ってどういう意味?
0343デフォルトの名無しさん
2014/09/10(水) 11:14:26.95ID:mb834HPh0344デフォルトの名無しさん
2014/09/10(水) 12:51:27.65ID:rw0uyKlz0345デフォルトの名無しさん
2014/09/10(水) 16:03:34.53ID:u9+/s+Hv(int)はキャスト演算子で、
実数型(float?, double?)をint型にキャストしている
t = 1 + (int) (100.0*rand()/(RAND_MAX+1.0));
t = (int) (100.0*rand()/(RAND_MAX+1.0)) + 1;
これらはどちらも同じ
0346デフォルトの名無しさん
2014/09/10(水) 16:22:56.09ID:vXsuJ4Ob数学と同じでカッコのほうが先
それに1足してる
0347デフォルトの名無しさん
2014/09/10(水) 16:43:17.13ID:Ulwkgj4+どこを見ていってるのか知らない
0348デフォルトの名無しさん
2014/09/11(木) 23:14:36.17ID:NV7aTG5jtypedef struct _str{
unsigned char *a1;
unsigned char *a2;
unsigned char **a3;
}str;
この構造体のa3には要素数不明のデータを収めるための可変配列を扱いたく
関数内でreallocして拡張しようと思っているのですが
どうもうまく行きません。
上記構造体の型を利用してa3を可変配列として扱うにはどのように記述すればよいかサンプル作っていただけませんか?
0349デフォルトの名無しさん
2014/09/11(木) 23:20:16.54ID:IX4BAtoc0350デフォルトの名無しさん
2014/09/12(金) 00:45:25.46ID:QteQedHI0351デフォルトの名無しさん
2014/09/12(金) 12:08:48.90ID:isiSnCeE0352デフォルトの名無しさん
2014/09/12(金) 18:36:35.84ID:hVEI5FJ7要素が 「unsigned char *」 の可変配列 a3 もできるべ
a3 を2次元の可変な配列にしたい ってのとは話が違う
0353デフォルトの名無しさん
2014/09/12(金) 18:42:11.85ID:Vgo2cmDA結果だけ教えてと...
0354デフォルトの名無しさん
2014/09/13(土) 01:33:11.72ID:bfbBE48o0355デフォルトの名無しさん
2014/09/13(土) 08:24:04.07ID:88kPzlOc次のようにヘッダーファイル内で変数を宣言すると、
宣言が重複している、という意味のエラーが表示され、コンパイル出来ません。
/* sum.h */
int sum(int min,int max);
int Public;
と記述がありますが、特にエラーになりません。(gcc 4.8.1)
この説明の意図がわからずもやもやしています。
0356デフォルトの名無しさん
2014/09/13(土) 08:33:22.11ID:Oas3E6zc|#include "sum.h"
|int Public;
こういう時の話じゃね?
プリプロセス処理後 sum.c は
|int sum(inyt min, int max);
|int Public;
|int Public;
こうなるし
0357デフォルトの名無しさん
2014/09/13(土) 08:47:45.55ID:T3cA1QiT複数のソースファイルで #include"sum.h"としたら変数宣言がかぶってしまうので、
次の項目にあるように、sum.hには extern 宣言で書いて、
変数宣言はどこかの *.cに1つだけ書く
ということ。
0358デフォルトの名無しさん
2014/09/13(土) 09:50:14.76ID:jjt1l9X1#ifndef
#endif
でやるんじゃないんですか?
0359デフォルトの名無しさん
2014/09/13(土) 10:02:31.64ID:T3cA1QiT今回は、異なるcソースそれぞれでインクルードするので、
コンパイル段階ではチェックが働かなくて、リンク時に同じグローバル変数が宣言されている
というエラーになってしまうという問題。
とにかく、変数宣言とかのメモリ上の実体を確保するようなものは、cソースファイルに書いて、
各種定義とか、externによる参照だけの宣言とかはヘッダーファイルに書くようにすればいい。
0360デフォルトの名無しさん
2014/09/13(土) 12:10:33.87ID:WU+mcApI0361355
2014/09/13(土) 13:19:54.11ID:Ie+IndNG0362デフォルトの名無しさん
2014/09/14(日) 03:46:42.39ID:3gHCeW/0やりたいことは、プログラムをROM上に置いて、リセットする際に(マイコンが立ち上がるとき?)
RAMの全アドレスに1を書き込み、その後0を書いて初期化します。
その後に、通常の動作開始…というような、RAMのチェックをする処理をしたいです。
いまいち分からないのですが、スタックポインタが、このRAMの末尾にあり、ここもクリアするとプログラムが暴走します。
スタックは関数を使うと使われる?らしいので、RAM初期化の処理を関数を一切使わずに書けば
RAMを一度クリアしても問題ありませんか?
いまいち説明も上手くできず伝わるかどうか…すみません
よろしくお願いします!
0363デフォルトの名無しさん
2014/09/14(日) 04:11:11.83ID:yLAszdsy0364デフォルトの名無しさん
2014/09/14(日) 04:32:37.05ID:C2ULZmXFC言語使って書いてるみたいだけど
どんな実行コードになってるかわからないことには...
0365デフォルトの名無しさん
2014/09/14(日) 08:55:29.35ID:1D8XKbcvスタック(というかRAM)を使わないで書けるならそうすればいい
書けないなら、その領域はあとでスタックの位置変えて別途行うとか
0366デフォルトの名無しさん
2014/09/14(日) 10:07:59.89ID:eKNmfx5Bmain関数以降でやろうとしてるのなら無理なんじゃない
変数を使うだけでスタックが使われる可能性もあるし
0367362
2014/09/14(日) 11:33:50.08ID:JXYHDAAR回答ありがとうございます。
main関数前に行おうとしていますが、スタートアップ処理もC言語で記述してあります。
「スタックを使わないで書く」というのは、具体的にどういう内容のプログラムになっていれば
いいのか分かりません…すみません。
検索すると、似たようなことをやろうとしている東芝のPDFがヒットするのですが
「指定されたRAMエリア(スタックエリアを除く)」と書いてあります。
ttp://www.semicon.toshiba.co.jp/product/micro/pdf/sp-870-102.pdf
この「3.1 RAMメモリテスト」で、RAMの全領域を行いたいのです。
東芝のは、このtml_ramtest_cb(省略)がメイン関数起動以降に呼ばれることを
想定しているから、スタックエリアは除いてるんでしょうか?
0368デフォルトの名無しさん
2014/09/14(日) 11:57:27.31ID:TOwVdV2q最悪ローカル変数を使うだけでスタック使ってしまうから、
Cで書くならコンパイラ固有オプションで制御しないとダメ。
アセンブラで書いてしまうほうが安全だけど、楽な方選べ。
そういう処理を全領域に実行するなら領域を分割すれば良い。
スタック(やランタイム消費領域)以外をまず先にテストして、
スタック他をテスト済み領域に複製して開いたところをテスト、
終わったら複製したデータを元の領域に書き戻したら終了。
それと処理中に割り込みなどが起きないようにしておくこと。
スタックを使わない処理の中で一時的にスタックを壊しても、
スタックを使う処理に戻るまでに復元してれば(多分)大丈夫。
0369デフォルトの名無しさん
2014/09/14(日) 13:45:51.38ID:C2ULZmXF関数コール分とDE退避分を除いた大きさにしてみたら
0370デフォルトの名無しさん
2014/09/14(日) 21:58:28.14ID:yLAszdsyスタック使わずにレジスタだけでできるだろ
Cで書こうとしたらきついけどアセンブラなら楽勝
0371362
2014/09/14(日) 23:01:43.23ID:JXYHDAAR>>369
>>370
アセンブラでやるのが一番みたいですね…
問題なのは…あの言語が全く分からないことですかね
本買ってやってみます
ありがとうございます
0372デフォルトの名無しさん
2014/09/15(月) 01:03:27.76ID:W9h3jF+GアセンブラはC言語みたいに本買って勉強するものじゃない。
特定のCPUの命令セットなのだから。
ターゲットとするCPUのアセンブラ・プログラミングマニュアルみたいの
読む。
0373デフォルトの名無しさん
2014/09/15(月) 01:39:03.10ID:j8xvklWY0374デフォルトの名無しさん
2014/09/15(月) 01:58:54.24ID:J5zOsfVvこれは、情報処理試験に出てくるような、
擬似的なアセンブラで書いてあるのだが、
これの、「8. 命令参照」を見れば、一般的な命令がわかる
ttp://www.h3.dion.ne.jp/~mu-ra/llvm/LangRefJ.html
0375デフォルトの名無しさん
2014/09/15(月) 10:54:59.38ID:8dgxuMjV例として出すんなら適当な8bitマイコンとかを出したほうが親切なんじゃないか?
AVRだと http://avr.jp/user/ds.htm においてある AVRinst.pdf (AVR命令1式)あたりとか。
0376デフォルトの名無しさん
2014/09/15(月) 11:05:57.51ID:SEthO71Jありあとー
0377デフォルトの名無しさん
2014/09/15(月) 11:56:36.98ID:tYu2DuNrが統合開発環境(IDE)を使っているなら、パワーオンリセット後でmain関数
呼び出し前にやる処理はどこにどうやって書けとIDEのマニュアルにあるはず。
0378デフォルトの名無しさん
2014/09/15(月) 13:12:05.01ID:DSRfU5Heshortやintなら%dでlongなら%ld、unsignedなら%uと決まっているけれど
ソースを書くときに%dで全て動かせてしまう
これっていうのはコンパイラが型に応じて自動的に%dを%ldや%uに変換しているという事なのだろうか
もしそうならコンパイラによってはエラーを吐いたりするのだろうか
皆はいちいち%ldや%uを使っていますか?それとも%dだけで使っていますか?
0379デフォルトの名無しさん
2014/09/15(月) 13:21:29.76ID:MGTym664負数になのに、unsignedの出力したら負数ではなくなる。
型など見ていない。charやchar*を%dに入れてもエラーでないだろ?
0380デフォルトの名無しさん
2014/09/15(月) 13:26:15.25ID:DSRfU5Heという事はきちんと%ldや%uを使わなければ目的の動作をしてくれないから直すべきですね
ありがとうございました
0381デフォルトの名無しさん
2014/09/15(月) 13:27:20.40ID:j8xvklWY0382デフォルトの名無しさん
2014/09/15(月) 13:35:15.27ID:8BLtn4nF%ldにする必要があるのはscanf系のほう
そこまで気にするのなら、なぜlを指定する必要があるのかをよく調べて理解したほうがよい
0383デフォルトの名無しさん
2014/09/15(月) 13:39:27.55ID:8BLtn4nFlong intは%ldですね
恥ずかしいので消えます
0384デフォルトの名無しさん
2014/09/15(月) 13:43:17.26ID:SEthO71J使うときに調べればいいことだから
環境で違うこともあるし
0385デフォルトの名無しさん
2014/09/15(月) 15:03:03.55ID:zXaMzUAu0386デフォルトの名無しさん
2014/09/17(水) 13:53:38.12ID:UiDSvK4Telseを使わない条件演算子を使ってみようとしたとき、空だとエラーを起こすため数字を入れてみたのだけれども
Falseの場合、結果的に数字をただ置いているだけのような状態になると思い質問してみました
if文を使えばいいというのは分かるのですがどうしても気になります
0387デフォルトの名無しさん
2014/09/17(水) 14:04:55.53ID:Lm6QDmjcA?X:1
みたいにするのなら
A&&X
でよいのでは?
0388デフォルトの名無しさん
2014/09/17(水) 14:14:11.44ID:UiDSvK4Tいくつも三項演算子が続いている中で少しだけelseを使わない場合が出てきたので三項演算子のまま使いたかったんです
A&&Xは初めて見ますね。試しに使ってみようと思います
0389デフォルトの名無しさん
2014/09/17(水) 14:48:14.65ID:gkW3ZjuNみたいにネストするのは分かるけど、elseを使わないってのは分からんなぁ。
0390デフォルトの名無しさん
2014/09/17(水) 14:53:29.51ID:Vg6vKUeu他環境で同じように動く保証は無いけど。
0391デフォルトの名無しさん
2014/09/17(水) 15:07:45.85ID:f/TEMlG2if(A)funcA();else funcB();→A?funcA():funcB();
if(A)funcA();→A?funcA():0;とかA&&funcA();
って話でしょ。関数呼び出しじゃなくて代入演算式とかかも知れんけど。
0392デフォルトの名無しさん
2014/09/17(水) 15:15:37.31ID:pzZaxrRpん?
どこか規格違反あるっけ?
0393デフォルトの名無しさん
2014/09/17(水) 15:34:54.52ID:f/TEMlG2>>390がどれに対してレスしてるのか分からないけど、
規格に適合したコードでも、規格に違反した環境なら他環境で同じように動く保証は無いな。
0394デフォルトの名無しさん
2014/09/17(水) 15:44:05.05ID:pzZaxrRp> 規格に違反した環境なら
壊れた PC で動かないから、バグだろって騒いでるクレーマーかよ w
0395デフォルトの名無しさん
2014/09/17(水) 16:16:53.86ID:f/TEMlG2古いコンパイラとか、新しいけど規格準拠動作にオプションが必要なコンパイラとか
新しいけど規格に準拠出来てないコンパイラとか、規格に違反した環境は珍しくない
0396デフォルトの名無しさん
2014/09/17(水) 16:21:01.61ID:pzZaxrRp何を言いたいのかさっぱりわからんが、ごまかそうとしてることは伝わったよ
0397デフォルトの名無しさん
2014/09/17(水) 17:38:32.96ID:f/TEMlG2390≠393,395で393はネタって事なんだが、なんか勘違いしてないか?
ごまかす以前に390(と392)がどの質問を前提にしてるかも知らねぇし。
0398デフォルトの名無しさん
2014/09/17(水) 17:57:47.73ID:pzZaxrRp0399デフォルトの名無しさん
2014/09/17(水) 18:30:04.32ID:gkW3ZjuNなるほど、要は値が必要だから条件演算子を使うと言うことでなく、
条件分岐の為に条件演算子を使いたいと言うことか。
だったら確かに&&でいいな。
0400デフォルトの名無しさん
2014/09/17(水) 22:38:48.79ID:D8rFvuftいくらム板が廃れたといってもたたまたま考え方がシンクロするヤツと遭遇することもあるよね
0401デフォルトの名無しさん
2014/09/17(水) 23:39:27.94ID:Lm6QDmjc0402デフォルトの名無しさん
2014/09/18(木) 02:08:44.60ID:0oM4N5+z最近見るようになったから知らなかったわ
0403デフォルトの名無しさん
2014/09/18(木) 03:21:30.10ID:M6S1ZPsMですね。PerlやJavaScriptの&&や||が羨ましくなったら完全にゴルフ脳。
>>402
お題スレのJ回答をゴルフ脳の例としては駄目か?
0404デフォルトの名無しさん
2014/09/18(木) 10:37:17.21ID:0oM4N5+zゴルフ脳の例えるところは
つまりコードの短さ(というかタイプ数)?
でいいの?
0405デフォルトの名無しさん
2014/09/22(月) 16:01:44.89ID:cQyRHW/4Static.lib
MyProg.exe
を作って両者で変数を共有したい場合は、
int i;
extern int i;
みたいにできると思いますが、
Dynamic.dll
MyProg.exe
の二つで変数を共有したい場合は、どうすれば良いのでしょうか?
0406デフォルトの名無しさん
2014/09/22(月) 16:05:14.17ID:AawXWc2ZCにはその為の機構は用意されていないので、環境ごとに規定されている手段を採ってください。
0407デフォルトの名無しさん
2014/09/22(月) 16:15:58.57ID:cQyRHW/4レスありがとうございました。
使っているのはVS2013のC++なのですが、この場合はどういう手法が一般的でしょうか?
0408デフォルトの名無しさん
2014/09/22(月) 16:52:08.75ID:AawXWc2ZWINAPIスレへどうぞ。VisualStudioスレでもいいかもしれません。
それと、CとC++は違います。
0409デフォルトの名無しさん
2014/09/22(月) 17:32:41.50ID:cQyRHW/4では、Win32API質問箱で聞いてみます。
ありがとうございました。
0410デフォルトの名無しさん
2014/09/30(火) 11:41:20.81ID:G1jPjI/pあのメッセージ受信ってどういう仕組み?
C言語とかでいうrcv()みたいな関数で取得できるの?
rcv()関数使わない場合どうやってメッセージ受信してるの?
リクエスト投げた後
while(1){
受信される処理
}
だろうけど
どうやってるかわかる?
教えて
0411デフォルトの名無しさん
2014/09/30(火) 11:47:30.10ID:G1jPjI/pどういう風に受信されてるか教えてくれ
0412デフォルトの名無しさん
2014/09/30(火) 11:54:14.45ID:G1jPjI/p普通のrecv()とかって1度受信したら関数終了されるが
websocketってリアルタイムでプッシュされてくるよな
あれはC言語ではどうやるの?
0413デフォルトの名無しさん
2014/09/30(火) 12:29:49.57ID:LhZYdZfcスレッドつくってblockingのrecvを繰り返してもいいとは思うけど
0414デフォルトの名無しさん
2014/09/30(火) 12:58:48.91ID:SzHlhe5/0415デフォルトの名無しさん
2014/09/30(火) 13:17:37.86ID:G1jPjI/pそれを終了させないほうほうや関数ない?
メッセージを受信したらリアルタイムでコンソールに表示したいんだが
0416デフォルトの名無しさん
2014/09/30(火) 13:29:02.86ID:onIPhOR30417デフォルトの名無しさん
2014/09/30(火) 13:30:35.89ID:G1jPjI/pHTTPとかだと
リクエスト、レスポンスでrecv終了していいけど
websocketやXMPPになるとコネクションつなぎっぱなしにしとかないといちいちハンドシェイク送りなおしたり
ログイン情報を送信したり繰り返すからダメなんだよな
教えてくれ
0418デフォルトの名無しさん
2014/09/30(火) 13:34:04.61ID:onIPhOR3ここじゃなくて
http://peace.2ch.net/test/read.cgi/tech/1351670708/
こちらでしょう
0419デフォルトの名無しさん
2014/09/30(火) 16:25:04.34ID:wyFYrKJZint cnt[10] = {0};
while(1){
ch = getchar();
if(ch == EOF)
break;
if(ch >= '0' && ch <= '9')
cnt[ch - '0']++;
}
puts("数字の出現回数");
for(i = 0; i < 10; i++)
printf("'%d' : %d\n", i, cnt[i]);
return 0;
cnt[ch - '0']++ の'0'ってどういう意味?
0420デフォルトの名無しさん
2014/09/30(火) 16:34:50.63ID:0EgCXX22'0' という文字(ASKIIコード 10進で48) を 整数値 0 に換算してる
0421デフォルトの名無しさん
2014/10/01(水) 09:37:32.86ID:fbO5OI8Ocnt[cn -48]++
ascii文字最初に勉強しないと・・・
0422デフォルトの名無しさん
2014/10/01(水) 13:12:59.82ID:YGQGEKeeEBDICでも使えるコードをASCII限定にすることもなかろう。
0423デフォルトの名無しさん
2014/10/01(水) 14:40:53.06ID:Rzr2pmPR0424デフォルトの名無しさん
2014/10/01(水) 16:09:38.99ID:YGQGEKee0425デフォルトの名無しさん
2014/10/01(水) 20:54:08.73ID:DTMRbqd/0426デフォルトの名無しさん
2014/10/02(木) 02:09:49.96ID:5I2uukosEBCDIC系って複数の文字コード・コードページがあるのか
日本で使うのだけでも10以上のコードが有るとか大変だなぁ…
0427デフォルトの名無しさん
2014/10/02(木) 03:08:28.10ID:8PUQe+cC0428デフォルトの名無しさん
2014/10/02(木) 03:49:08.89ID:tvJ4Y8j/0429デフォルトの名無しさん
2014/10/02(木) 07:03:56.64ID:TOd/mSCB0430デフォルトの名無しさん
2014/10/02(木) 07:23:41.83ID:0T/Eo60x0431デフォルトの名無しさん
2014/10/02(木) 08:18:17.81ID:skJRG6ldやめいw
そう覚えてしまいそうw
0432デフォルトの名無しさん
2014/10/02(木) 10:01:52.00ID:mcw6ATuL0433デフォルトの名無しさん
2014/10/02(木) 11:28:38.35ID:ugif+tqx・ISO規格上どうか
・POSIXではどうか
・実態はどうか
--
char foo[] = "abcdefg";
strcpy(foo, foo + 1);
--
0434デフォルトの名無しさん
2014/10/02(木) 11:32:23.94ID:e2TOyg/XIf copying takes place between objects that overlap, the behavior is undefined.
・実装
数バイトまとめてコピーするから壊れる
0435デフォルトの名無しさん
2014/10/02(木) 11:41:31.69ID:bQiAsM1H0436デフォルトの名無しさん
2014/10/02(木) 11:50:21.54ID:ugif+tqx0437デフォルトの名無しさん
2014/10/02(木) 12:22:04.09ID:VlDhCt/tそういう文言はどこで確認できますか?
0438デフォルトの名無しさん
2014/10/02(木) 12:24:21.23ID:C/EylpyV0439デフォルトの名無しさん
2014/10/02(木) 15:32:19.26ID:VlDhCt/tこの業界の者ではないですけど、ググることにします
0440デフォルトの名無しさん
2014/10/02(木) 22:04:17.07ID:TOd/mSCB0441デフォルトの名無しさん
2014/10/02(木) 22:42:09.82ID:zFpHancaC言語関連のサイトを廻ってフィーリングでソース書いたのが原因なんですが、ファイル書き込みの命令分の仕様を知らず修正すら出来ないです。
手の空いてる方、例文のソースを書いては頂けないでしょうか?
↓今のソースです。
FILE *pFile;
fopen_s(&pFile, "media\\map1.txt", "w");
int y = 0;
while (y != g_stagedata.mapheight){
printf("%s\n", g_mapdata[y]);
fputs(g_mapdata[y], pFile);
y++;
}
fclose(pFile);
g_mapdata[y][x]の中身をx=9、y=5と指定して実データのある部分だけ(0も含む) 9*5のテキストファイルとして保存したい。
1111100000
1111100330
1111100000
2222222220
0000000000
0000000000
111110000
111110033
111110000
222222222
000000000
http://youtu.be/girNFDGgFes
0442デフォルトの名無しさん
2014/10/02(木) 23:21:08.67ID:8PUQe+cCfputsではなくてfwriteを使い適当にfputs("");で改行を挟めばいい
ps. そのフォーマット糞ですね!
0443デフォルトの名無しさん
2014/10/03(金) 00:06:48.27ID:aLVSdoSMありがとうございました。下記のように変えたらやりたかった通りの処理になりました。
fputs(g_mapdata[y], pFile);
↓
fwrite(g_mapdata[y], sizeof(char), g_stagedata.mapwidth, pFile);
fputs("\n", pFile);
0444デフォルトの名無しさん
2014/10/03(金) 01:16:55.66ID:4FWK3St4このデータとはなんなんでしょうか?
socketの場合では
while (1){
$ret = select($rout=$rin, undef, undef, undef);
printf("\$ret=$ret \$rout=%s,\$rin=%s\n", &to_bin($rout), &to_bin($rin));
if ( vec($rout, fileno(CLIENT_WAITING), 1) ){ # 新たにクライアントがやってきた
# ソケット名は毎回違う名前にする
$new_socket = "CLIENT_$client_num";
$sockaddr = accept($new_socket, CLIENT_WAITING);
っとacceptの前にあり
selectの第4引数にundefが設定されてるためブロックされています
http://x68000.q-e-d.net/~68user/net/echo-4.html
このサイトに
”もしソケットにデータがない場合はブロックされてしまいます。
つまり、データが送られてくるまで永久に他の仕事ができなくなるのです。 ”
っとあるのですがデータとはなんなでしょうか?
クライアントでconnectしたらselectが成功してちゃんと下の処理にいきました
connectはデータを送ってると考えてよろしいのでしょうか?
C言語とほぼ同様なので教えてください
perlスレが過疎ってるので
0445デフォルトの名無しさん
2014/10/03(金) 01:20:17.48ID:4FWK3St4print SOCKET "Hello";
のように送信したときデータがあるというイメージなんですが
connectしただけでちゃんとブロックが解除されたので ”データが送られてる”と思うのですが
connectはデータを送ってるんですか?どういうデータなんですか?何をやっているのでしょうか?英語そのままの意味って答えじゃなく詳しく教えてください
0446デフォルトの名無しさん
2014/10/03(金) 01:25:19.79ID:4FWK3St4http://yagyo.sblo.jp/article/53346194.html
「俺の理解ではconnectではSYN送って、connect受け付けて貰えたらSYN+ACKが返ってくる。これをselectで受けるって理解なんですが違うのかなぁ…。」
こういう捕らえ方もありますがどうなんでしょうか?
なんなんでしょうか?わかりません
確かにSYNとか低レベルなことやってるかと思いました
slectはsynがくるのを待っているってことでしょうか?
connectでsynが送られ selectはSOCKETのディスクリプタを見張ってsynが来たら SYN+ACKを返えしてブロックから抜けるのようですかね?
意味不明です
詳しい人教えてください
0447デフォルトの名無しさん
2014/10/03(金) 01:44:01.45ID:9LPIBUBqこちらでやられたらどうですか
0448デフォルトの名無しさん
2014/10/03(金) 04:45:30.02ID:T/kFcWDzここはCのスレで、perlはスレチ。それにperlのソケットは癖が強いので学習には向かないだろう。
>>447の言うとおりそっちのスレでやるべき。ていうか解説サイトの表現で悩むならマニュアル読め。
selectが待つのはready状態だし、acceptで得られる各クライアントとの通信用ソケットと
listenしていて接続があるとacceptでソケットを返す待ち受け用ソケットは違うソケットだ。
0449デフォルトの名無しさん
2014/10/03(金) 08:49:29.68ID:uHxl1H+dfputsって自動で改行が入らなかったっけ?
0450デフォルトの名無しさん
2014/10/03(金) 09:05:25.05ID:Tegb1musそれputs
0451デフォルトの名無しさん
2014/10/03(金) 11:42:24.05ID:4FWK3St4やはりperlだと学習に向かないんですね
足かせをつけた状態でした
CもわかるのでCでやってみようかと思います
0452デフォルトの名無しさん
2014/10/03(金) 11:44:32.88ID:9LPIBUBq0453デフォルトの名無しさん
2014/10/03(金) 12:11:06.39ID:4FWK3St4もっていなかったときと比べて理解力が格段とあがりましたね
低レベルなことがすらすら頭に入ってきます
0454デフォルトの名無しさん
2014/10/03(金) 12:26:54.71ID:9LPIBUBq0455デフォルトの名無しさん
2014/10/03(金) 13:04:36.73ID:ejmQU5MLただのputsのfp指定可能バージョンだとおもってた
0456デフォルトの名無しさん
2014/10/03(金) 14:51:32.52ID:NRy6mg4vつーか、fprintf(pFile, "%s\n", g_mapdata[y]);と書くのが一番自然だろ。JK
0457デフォルトの名無しさん
2014/10/03(金) 23:17:34.98ID:U3Q3zs6yfprintf(pFile, fmt, g_mapdata[y]);
じゃないかな
0458デフォルトの名無しさん
2014/10/03(金) 23:26:11.90ID:Mb9/hYIV0459デフォルトの名無しさん
2014/10/04(土) 00:11:14.71ID:xghbT7VXNULターミネートされてないおそれがあるし、
>>456-458
そもそも1行の文字数はmapwidth(可変)だバカ共。
g_mapdataもchar[N][M]でなくchar**かもしれんし…
質問者の理解力不安だな大丈夫かなとか思ってたが、
質問者(>>443)のほうがよっぽど応用力有るじゃねぇか!
>>449-450
putsとfputsやgetsとfgetsの関係は地味にウザいね。
意識してないと直ぐにその誤解を発症してしまいそうだ…
0460デフォルトの名無しさん
2014/10/04(土) 00:33:52.94ID:Ipv5t4Ny> g_mapdataもchar[N][M]でなくchar**かもしれんし…
!!!
0461デフォルトの名無しさん
2014/10/04(土) 00:53:22.99ID:p3XX6smWうだうだ理屈をこねずにコードを提示して味噌。
尤も、puts()とfputs()の対比にgets()とfgets()を持ち出す辺りその理屈が怪しいんだけどね。
つーことで、
>456はfprintf(pFile, "%.*s\n", g_stagedata.mapwidth, g_mapdata[y]);に訂正。
0462デフォルトの名無しさん
2014/10/04(土) 02:26:56.19ID:xghbT7VX質問者がコード出して解決宣言してるのに後からコード出しても意味ないだろ( ´Д`)=3
あと、改行文字を処理するかどうかが異なるのはgetsとfgetsの間でも同じだぞ?
getsにはそれ以上に致命的な問題が有るってだけで理屈が怪しいも何もない
読み落としの指摘が悔しかったのかも知れんが、見苦しいイチャモンつけてんじゃねえよ
0463デフォルトの名無しさん
2014/10/04(土) 22:11:13.63ID:XaEcm76/ptrdiff_t型の数値をprintf()で出力するときはどの書式指定子を使うのが規格準拠?
あとWindows固有の型で恐れ入りますが、DWORDをprintf()で出力するときはどの書式指定子を使うべき?
0464デフォルトの名無しさん
2014/10/04(土) 22:19:08.19ID:QLJXnnzHsize_t型の数値をprintf()で出力するときは%uと%luのどっちの書式指定子を使うのが規格準拠?
どっちもダメ %zu
ptrdiff_t型の数値をprintf()で出力するときはどの書式指定子を使うのが規格準拠?
%td
0465デフォルトの名無しさん
2014/10/04(土) 22:37:14.00ID:XaEcm76/レス�dクス
>463のレスで問題無いのですが(規格準拠かどうかを問うたので)、
今漏れが使っておりますVS2010はC99準拠ではなかった、orz
下記にしたがい、size_tは%Iuで表示できますた…
http://stackoverflow.com/questions/15610053/correct-printf-format-specifier-for-size-t-zu-or-iu
正しいかどうかは不明
0466デフォルトの名無しさん
2014/10/04(土) 22:38:38.46ID:X8tclADN0467デフォルトの名無しさん
2014/10/04(土) 22:44:18.48ID:X8tclADN処理系によって sizeof(int), sizeof(long) とかは違うし、みるサイズだけあっておれば、警告は気にしない
やっぱりこれは古い考え方ですかね?
0468デフォルトの名無しさん
2014/10/04(土) 22:49:22.26ID:XaEcm76/MSDNではsize_tは%Iuで良い、みたいなことが書いてある…↓
ttp://msdn.microsoft.com/ja-jp/library/tcxf1dw6(v=vs.100).aspx
>(指定する型) size_t (つまり、32 ビット プラットフォーム上では unsigned __int32、64 ビット プラットフォーム上では unsigned __int64)
>(プリフィックス) I
>(型指定子) o、u、x、または X
0469デフォルトの名無しさん
2014/10/04(土) 23:15:15.37ID:wDmms0dV同じ理由で、ptrdiff_tもlongにキャストしちゃえw
0470デフォルトの名無しさん
2014/10/05(日) 00:14:51.83ID:FZuSwsnO早くC99対応になれば stdint.h/inttypes.h が使えていいのにね、あ、これは size_t の話とはちょっと違うか‥C99 も細かいところまで気が利くようになってるな‥
http://seclan.dll.jp/c99d/c99d09.htm#dt19990705
0471デフォルトの名無しさん
2014/10/05(日) 00:41:40.07ID:JxTc8EY10472デフォルトの名無しさん
2014/10/05(日) 00:49:31.53ID:OqPNlfLgちなみに漏れ個人は使ったこと無い
foo()
. ↑ bar()
. ↑ main()
. ↑ baz()
. ↑ test()
みたいにテキストエディタに人力でまとめてしまうので…
0473デフォルトの名無しさん
2014/10/05(日) 02:27:54.20ID:Oz9s2Q4T値がそれぞれ何個ずつあるかを調べなければいけない時、
出来るだけ高速に調べるにはどうすればいい?
配列の要素の値は32bitまでの整数値として。
とりあえずハッシュ表に登録するとかやってたけどどうも遅いみたいなので、
代替案を模索中。
ネットで調べても配列のサイズを調べる方法とかばかり出てくるので手詰まり感ある
0474デフォルトの名無しさん
2014/10/05(日) 02:40:54.35ID:RckF5d3d別のにたとえると、例えば"国語"、"算数"、"理科"、"社会"という単語をカウントする問題と一緒だろ?
ハッシュ値でも実値でも、値が幅広いとアクセスに時間が掛かるかメモリ確保が食うから、上位何ビットをインデックスにすると決めて
(可変長の)2次元配列に格納するなどしたらいいんでは。
2次元目はstlのmapなどでも。vector(普通の配列)のほうがアクセス速いかも?
0475デフォルトの名無しさん
2014/10/05(日) 02:50:21.45ID:IUlRSCDi0476デフォルトの名無しさん
2014/10/05(日) 02:57:11.31ID:Oz9s2Q4Tまぁやっぱりそうなるよね。
ソートした結果を数えればマシかとも思ったけどソートのコストの方がハッシュ表より大きいし
0477デフォルトの名無しさん
2014/10/05(日) 02:58:01.21ID:RckF5d3d例えば英文ドキュメントに登場する語彙の出現頻度を調べるような場合、「apple、banana……」などの具体的な単語をキーとして、それらの単語の登場回数を値に保存することができる。
キーが決まればスロット番号は一意に決まり、しかもその計算量は一定だ。
だから、データ量が膨大でもデータの挿入や参照は一定時間に収まる。これはハッシュテーブルの重要な特徴であり長所だ。
百科事典のような膨大なテキストデータを相手にするとなると話が変わってくる。
大きな百科事典に含まれる単語の種類は少なくとも数万個オーダーで、含まれる単語数は数千万オーダーとなるからだ。
http://www.atmarkit.co.jp/news/analysis/200803/24/semi.html
コラム - クラウド時代のオープンソース実践活用 | 第18回 GlusterFSはMapReduceの夢を見るか
http://www.school.ctc-g.co.jp/columns/nakai/img/column18_fig01.png
http://www.school.ctc-g.co.jp/columns/nakai/nakai18.html
0478デフォルトの名無しさん
2014/10/05(日) 03:11:40.94ID:IUlRSCDisort uniq しちまえ
0479デフォルトの名無しさん
2014/10/05(日) 08:46:25.45ID:c19u8fmj0480デフォルトの名無しさん
2014/10/05(日) 09:20:22.91ID:yZIlQjms上にもあったけど「コストが高い」って具体的にはどういうこと?
0481デフォルトの名無しさん
2014/10/05(日) 09:21:23.78ID:RckF5d3d0482デフォルトの名無しさん
2014/10/05(日) 09:23:59.28ID:RckF5d3dソートするよりカウントのほうが計算量は少ない。
0483デフォルトの名無しさん
2014/10/05(日) 09:34:30.21ID:E1Bc11fmハッシュリストのアルゴリズムに依るんじゃないの?
32bitだとIPアドレス用の実装とかありそうだけど…
あと、ハッシュじゃなくてツリーにするって手もある。
0484デフォルトの名無しさん
2014/10/05(日) 10:28:18.42ID:yZIlQjmsなるほど。そういうのが実感できるレベルではないですがw
0485デフォルトの名無しさん
2014/10/05(日) 11:25:44.59ID:A5oHY/uhコンピュータ業界においては、よく「ある処理を行うために余分に(間接的に)掛かってしまうコスト」として用いられる。
オーバーヘッド - Wikipedia
0486デフォルトの名無しさん
2014/10/05(日) 11:29:06.14ID:ktqu8y2s「本当にCを使うべきか?」
を問い直さなければならない
0487デフォルトの名無しさん
2014/10/05(日) 13:53:06.76ID:gk4xRDtF億のレベルなら DBMS の導入を、兆のレベルなら専門の業者への依頼を
検討した方がいいかも
0488デフォルトの名無しさん
2014/10/05(日) 20:58:01.62ID:m5Hg2RmS要求性能が分からないが、コムソート後にカウントでは不十分か?
http://ideone.com/UYoAfd
0489デフォルトの名無しさん
2014/10/05(日) 21:10:52.92ID:RckF5d3dカウントする問題でソートは効率悪いだろ。
0490デフォルトの名無しさん
2014/10/05(日) 22:16:10.72ID:m5Hg2RmS0491デフォルトの名無しさん
2014/10/05(日) 22:30:07.24ID:in0ZDDsBCでhtmlファイルを読み込んで、一行ごとにコードを配列に格納するプログラムを作りたいです。
そこで、分らないのですがhtmlファイルにおいて、改行を無視してしまえば、全てのコードを改行無しで
保存できるので、文字列検索が容易にできると思います。char s[1000000]の一つの変数でhtmlファイルのコードを格納できますよね?
ただ自分としてはこれはしたくありません。
改行があればそれまでの文をs[0][]に保存したいのです。次の文はs[1][]に保存です。
ただここでも問題が起きます。
例え改行を省いてs[][]に保存しても、s[][]全体から特定の文字列例えば「hello world」を見つけたくても
<heal>he
llo world</head>となっていると見つけられないですよね…
htmlはタグの途中の改行がなければ、URLや文章は改行があってもOkなんでしたっけ、たぶんOkだったと思います
<a=href>http://www.
yahoo.co.jp</a>
となっている場合困ります。
闇雲に改行がきたらそれまでのコードを格納するのでなく、まとまった塊で
格納したい、そういう場合どういうアイディアが必要でしょうか?1週間考えてますが分りません。
真剣に悩んでいます。
0492デフォルトの名無しさん
2014/10/05(日) 22:32:30.41ID:in0ZDDsB容易に調べられると思います。どうやればいいでしょうか?
0493デフォルトの名無しさん
2014/10/05(日) 22:43:34.27ID:in0ZDDsBURLからソースコードを取得する場合は一旦全てソースコードを読み込まないと
だめで、その後読み込んだソースコードから必要なコードだけ読むのか
つまり
配列まで格納される時間=ソースコードを一括読み込みする時間+読み込んだ文章から必要な場所を見つける時間
でしょうか?
0494デフォルトの名無しさん
2014/10/05(日) 22:44:17.82ID:in0ZDDsB一応これで質問は終わりです、C難しいです…
0495デフォルトの名無しさん
2014/10/05(日) 22:44:40.06ID:RckF5d3d「。\n」「.\n」で必ずしも分割するわけではないんだろ?
個人の好みの問題で、先に詳細な一塊の定義を決めろ。
0496デフォルトの名無しさん
2014/10/05(日) 22:52:03.50ID:RckF5d3dHTTP入門
Range (要求)
クライアントからサーバに対して、エンティティの一部のみを要求します。下記の例では、ページの最初の 1000バイト(0バイト目から 999バイト目)のみを要求しています。(→ Accept-Ranges、Content-Range、If-Range)
Range: bytes=0-999
http://www.tohoho-web.com/ex/http.htm
0497デフォルトの名無しさん
2014/10/05(日) 23:02:00.65ID:IUlRSCDi誤解してるようだから言っておくけど
sort uniq ってはコマンドの事よ
面倒くさいからパイプでやっちまえよとね
0498デフォルトの名無しさん
2014/10/05(日) 23:55:16.59ID:in0ZDDsBそもそも改行のコードが何なのか分らないという…
改行って\nなのか\r\nなのかどっちでしょう?
0499デフォルトの名無しさん
2014/10/06(月) 00:04:58.36ID:2Y7/qfA5仮に全部読みこまないといけないとしたら
通信アプリってのは極めて不便だと思うんですけど
技術的に全部のファイルをストリーム?に読み込まないといけない
ってのは主流なんでしょうか?
0500デフォルトの名無しさん
2014/10/06(月) 00:15:26.48ID:mmoI7Dwvストリームが良く分りません…
HDDからファイルを読み込む場合は一旦HDDからキャッシュメモリに読み込んで
そこから必要なものを読むんでしたっけ?
つまり
HDD→キャッシュメモリ→変数に格納でしょうか?
それとも
HDD→変数に格納なんでしょうか?
0501デフォルトの名無しさん
2014/10/06(月) 00:21:58.86ID:2jlCLSza多分、君はそんなことを気にしなくて良いと思う。
裏の仕組みを知らなくとも、そこそこ目的を達することを可能とする仕組みがAPIなのだから。
0502デフォルトの名無しさん
2014/10/06(月) 01:11:42.10ID:uYeRj6wnストリームをフラッシュします
ストリームの出力がバッファリングされていれば、fflushは、streamへの出力をファイルに書き出します
0503デフォルトの名無しさん
2014/10/06(月) 02:45:10.82ID:mmoI7Dwv抽象的でよくわかりません
データの流れはストリームでしょう
0504デフォルトの名無しさん
2014/10/06(月) 02:46:03.14ID:7XI5AesQ小川に流れる水のように捉える、抽象的な概念
IN → アプリ → OUT
INがマウスやキーボード、
OUTがHDDやインターネット回線につながっていても、
それらのデバイスのことを一々考えることなく、
統一したインターフェース(API)で扱える
パイプのように、IN/OUTが別のアプリの場合もある
sort | uniq
sortコマンドの出力を、uniqコマンドへ入力する
バッファリングもライブラリが、自動的にやってくれる
例えば、4KBのデータを取得するのに、
自分で1バイトずつ、OSのシステムコールを、4,096回呼べば遅いが、
ライブラリでは、4KBの領域(バッファ)を確保して、
そこにシステムコール1回で、4KBを読み込むので速い
0505デフォルトの名無しさん
2014/10/06(月) 02:48:04.76ID:mmoI7Dwv0506デフォルトの名無しさん
2014/10/06(月) 02:51:26.04ID:mmoI7Dwv読み込むための関数の使い方を理解すればいいだけですよね
0507デフォルトの名無しさん
2014/10/06(月) 02:55:16.61ID:Ch4PY59FPCの感覚を引きずりすぎて視野狭窄に陥ってる
0508デフォルトの名無しさん
2014/10/06(月) 02:57:16.03ID:mmoI7Dwv↑
これが良くわかりません><
アプリってなんですか?
0509デフォルトの名無しさん
2014/10/06(月) 02:59:27.77ID:mmoI7Dwv出力を入力にするって理解でOKですか?
これが特別変わった事なんでしょうか?
出力を入力にするってのは別に機能じゃない気がします。
パイプを使わないとそれは出来ないんでしょうか?
0510デフォルトの名無しさん
2014/10/06(月) 05:06:08.42ID:p+AuUJTxこれは、まあ、元の質問のストリームとは直接関係ないね
SYSVのSTREAMSと絡めてるのかもしれないけど・・・
>出力を入力にするって理解でOKですか?
あるプロセスの出力を他のプロセスの入力にする、なら正しい
0511デフォルトの名無しさん
2014/10/06(月) 08:48:26.23ID:1gK8HPOD0512デフォルトの名無しさん
2014/10/06(月) 10:08:36.96ID:+UB/EuAd> htmlはタグの途中の改行がなければ、URLや文章は改行があってもOkなんでしたっけ、たぶんOkだったと思います
まずは html の勉強してから、出直せ
0513デフォルトの名無しさん
2014/10/06(月) 10:49:06.77ID:zwyRz3ua0514デフォルトの名無しさん
2014/10/06(月) 10:56:53.95ID:b0YQUTHUint n = 2;
while(++n <= 100){
i = 1;
while(i++ < n)
if(n % i == 0)
break;
if(i == n)
printf("%d\n", n);
}
素数を調べるプログラムですが、while(i++ < n)がどう比較されているか知る
にはどうすればいいですか?
あと、breakって、中括弧を飛び越えるんですか?
それとも、すぐ下のif文に移行するんですか?
0515デフォルトの名無しさん
2014/10/06(月) 13:05:03.88ID:HOCpMMdl初心者は他人のプログラムを理解する事が困難。
これを「他人に読めない難読なプログラムを書けるのが上級者」と勘違いするバカが多い。
C++は難読なプログラムを書くために特化した言語なので、その意味で正しい。
0516デフォルトの名無しさん
2014/10/06(月) 13:06:28.71ID:8s8wGJbg0517デフォルトの名無しさん
2014/10/06(月) 14:12:10.22ID:vHZygjI0++n <= 100
n++ <= 100
0518デフォルトの名無しさん
2014/10/06(月) 20:59:58.53ID:QBK0bbMk確認方法すらわからないなら、
そういう書き方をやめてループ内でn++としたほうが良いのでは
0519デフォルトの名無しさん
2014/10/07(火) 15:34:25.37ID:Sn1Pf3Fdstudent = &num って
student = scanf(&num) これと同じって考えていの?
0520デフォルトの名無しさん
2014/10/07(火) 16:22:46.21ID:V/SYRsK50521デフォルトの名無しさん
2014/10/07(火) 16:36:48.86ID:GkaJ2OdV0522デフォルトの名無しさん
2014/10/07(火) 20:23:47.89ID:YDi/rNhe0523デフォルトの名無しさん
2014/10/07(火) 20:36:59.72ID:fAjgEnMH0524デフォルトの名無しさん
2014/10/07(火) 20:45:21.54ID:yjbYdMfc今さら C で書け、とか何かの罰ゲームか?と思ってしまう
でも、C がわかってないと C++ の理解なんて到底無理なので、まあ、そういう意味でも正しいんじゃない?
0525デフォルトの名無しさん
2014/10/07(火) 21:04:44.41ID:owddrk/g0526デフォルトの名無しさん
2014/10/07(火) 21:28:58.25ID:pP8u07NL0527デフォルトの名無しさん
2014/10/08(水) 07:52:29.64ID:MuuIgSJt0528デフォルトの名無しさん
2014/10/08(水) 23:00:35.62ID:Og2I76Af0529デフォルトの名無しさん
2014/10/09(木) 03:04:48.01ID:VVEBAlYn0530デフォルトの名無しさん
2014/10/09(木) 23:09:08.14ID:2XDgEafl0531デフォルトの名無しさん
2014/10/10(金) 07:35:21.09ID:SHEgCAPR0532デフォルトの名無しさん
2014/10/10(金) 22:53:01.23ID:8D1iqFXWLinuxで2つ以上のプログラムから同時に同じファイルに書込みしてるんだけど(一種のログファイルね)、一定時間ごとにそれをリネームしていきたいんだ。
「何時ごろのログなら○×のファイル見ればいいよね」を簡単にしたいので。
やってることはプログラムAとBとCの3つがあってAとBはfopen()してfprintf()で書いてfflush()してfclose()する。
Cはそれに加えて、シェルに"mv ファイル /mnt/usb/ファイル+日付"てな感じでmvコマンドを実行させてる。
セマフォつかって排他制御の処理してるつもりなんだけど、時々プログラムAとBがセグメンテーションフォルトで死ぬ。
知りたいのは
1)セマフォの排他制御ってプロセス違うと利かないの? もしそうならプロセス間の同期ってどう取るの?
調べた限りではセマフォでプロセス間の同期が取れるらしいんだけど・・・
2)セグメンテーションフォルトでプロセスが死んだ時に「どこで死んだか?」を簡単に確認する方法ないの?
今はprintf()つかって延々とコンソールに出力させてるけど・・・死ななかったプロセスが吐くメッセージで流れちゃうんだ・・・
Linux初めてだし普段はお手軽C#だしでわからんことばかりで泣きそうだよ・・・
0533デフォルトの名無しさん
2014/10/10(金) 23:06:23.51ID:yXhPCI1a0534デフォルトの名無しさん
2014/10/10(金) 23:06:28.23ID:rDsUmEScコア吐いたら
gdb起動して
where
0535デフォルトの名無しさん
2014/10/10(金) 23:30:32.96ID:8D1iqFXWgdb・・・便利そうだね。ありがとう!
>>533
うん、最終的にはARMなマイコンボードなんだけど、Monoなんて便利なものはないのよ・・・
0536デフォルトの名無しさん
2014/10/10(金) 23:45:57.80ID:ss+6Y4Pm0537デフォルトの名無しさん
2014/10/11(土) 00:44:25.61ID:ECYlWM780538デフォルトの名無しさん
2014/10/11(土) 00:54:52.23ID:HUJ0Phfwflockでいいじゃんw
0539デフォルトの名無しさん
2014/10/11(土) 03:35:48.01ID:sPjWQ1kB1)
「セマフォ」ってのは使い方の話で、実装は複数(SystemVセマフォ、POSIXセマフォ等)存在する。
実装によってはプロセス跨げないとされていることも有るし、
プロセス跨げるセマフォでもプロセスごとに違うセマフォを作ったり使い方間違えたら意味ないし。
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man2/semctl.2.html
http://linuxjm.sourceforge.jp/html/glibc-linuxthreads/man3/sem_post.3.html
# glibc-linuxthreadsを見るとPOSIXセマフォはプロセス跨げないとか書いてあるけど、
# 解説によっては名前付きと共有メモリ上の名前なしはプロセス跨げるとしてるものもある。
2)
デバッガ使う、SIGSEGVなどを監視、プロセス間で(プロセス間通信やkillなどで)相互に監視。
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man2/sigaction.2.html
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man2/kill.2.html
0540デフォルトの名無しさん
2014/10/11(土) 07:39:16.61ID:tt02nUiX専用のプロセスを作って、ログを出力するのをお任せするのがいいとおもうよ
0541デフォルトの名無しさん
2014/10/11(土) 07:40:07.21ID:tt02nUiXファイルロックという意味なら、ファイルロックはすりぬけることがある
0542デフォルトの名無しさん
2014/10/11(土) 08:37:27.05ID:EI+5SH8R0543デフォルトの名無しさん
2014/10/11(土) 09:19:38.90ID:Ym4Peb6E1) について
・semget システムコールで生成する System V セマフォであれば、プロセス間の同期/排他制御を実装できる
・(Linux を含む)UNIX で利用できるセマフォには、System V セマフォの他にも
POSIX スレッド間の同期/排他制御を実現する POSIX セマフォがある
今回のケースはプロセス(=プログラム)を対象としているから、System V セマフォを使用する
・ただしセマフォは(オーバヘッドは小さいが)制御の難しい低水準操作であり、一般には(オーバヘッドを嫌う)
System V 共用メモリ への操作に対する同期/排他制御を目的として利用する
今回のケースのようなファイルへの操作に対する同期/排他制御が目的ならば、一般には(使い方の簡単さの順に)
ファイルロック、FIFO(名前付きパイプ)、UNIXドメインソケット、System V メッセージ等から選んで使う
・ただし残念ながら今回のケースではプログラムCから起動するシェルプログラムもファイルを操作しているから、
(flock システムコールを前提とする)ファイルロックは採用できない
あるいはプログラムCで(シェルを介さず)ローテート処理を(C言語で)実装できるのなら、ファイルロックが最も楽
・もし将来的にログ機能を拡張する構想があるのなら、プログラムAとBをクライアント、プログラムCをログサーバと
見立て、その間を FIFO または UNIXドメインソケット で結ぶ設計も検討するのが望ましいだろう
2) については >>534 の方法で解決できたはず
あと、ここら辺はUNIXシステムプログラミング全般に関わる話題だから、以下のスレでの質問が適切だと思われ
・UNIXプログラミング質問すれ Part10
http://peace.2ch.net/test/read.cgi/tech/1303113996/
>>539
上で示したように、System V セマフォと POSIX セマフォは、(セマフォという概念は同じだけど)全く別の操作だ
両者の違いを正しく理解していれば、「実装によっては....」みたいに混乱することはない
>>541
もしプログラム(=プロセス)間のファイルロックが本当にすりぬけているなら、それはOS(Linux)のバグだ
>>539 と同様に、UNIXシステムプログラミングの理解が不十分だと思われ
0544デフォルトの名無しさん
2014/10/11(土) 09:23:42.92ID:zm2pT6ST同じファイルじゃないと駄目なのか?
プロセス毎に出したログを後でマージするツール作った方が簡単だと思うが
0545デフォルトの名無しさん
2014/10/11(土) 09:45:22.02ID:sPjWQ1kB「LinuxThreadsによるPOSIXセマフォの実装はプロセス間共有セマフォをサポートしていない」
って事らしいから、規格の違いだけ参照しても駄目だし実装による違いも参照しないと駄目じゃね?
概念、規格、実装が違うのは当然だが、最終的にモノを言う(言ってしまう)のは実装なわけで…
LinuxThreadsにおけるPOSIXセマフォ。プロセス間共有セマフォはサポート外
http://linuxjm.sourceforge.jp/html/glibc-linuxthreads/man3/sem_init.3.html
NPTLにおけるPOSIXセマフォ。共有メモリ上または名前付きならばプロセス間共有セマフォとして利用可能
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/sem_init.3.html
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/sem_overview.7.html
0546デフォルトの名無しさん
2014/10/11(土) 10:05:41.14ID:Ym4Peb6E基本的に POSIX セマフォはプロセス間で用いるものだよ
中には(NPTL のように)プロセス間で利用できるよう拡張された実装もあるけど、それは例外的な存在でしかない
一部の例外を取り上げて、それをもって POSIX スレッド全体の定義であるかのように扱うのは、
UNIXシステムプログラミングの理解が不十分であると言わざるを得ない
ましてや今回のケースは同期/排他制御の対象がプロセス間(=プログラム間)であると>>532に明記されているのだから、
これを実現するのには単純でAPI仕様/実装仕様、共に安定している System V セマフォで十分に対応できる
これを、わざわざ難しい POSIX セマフォと絡めようとする発想は、単なる知識自慢をしたいだけに見えてしまう
0547デフォルトの名無しさん
2014/10/11(土) 10:07:07.88ID:Ym4Peb6EX: 基本的に POSIX セマフォはプロセス間で用いるものだよ
O: 基本的に POSIX セマフォは POSIX スレッド間で用いるものだよ
0548デフォルトの名無しさん
2014/10/11(土) 14:09:36.89ID:fBQFLqt8A,Bそれぞれは別のファイルに出力しておいて、
Cでマージするのがいいと思う。
ArmのSBCなら、どうせメインはRamDiskでしょ。
コンソールにログが流れて困るなら、それもやはり
ファイルに落とせばいいと思うし、その方が速い。
0549デフォルトの名無しさん
2014/10/11(土) 14:43:19.87ID:sPjWQ1kBじゃあsem_initの第二引数psharedはなんの為にあるっていうんですかー!
ていうか『「実装によっては....」みたいに混乱』してたり『一部の例外を取り上げて』るのは君自身じゃない?
POSIXセマフォはpsharedが有ることから分かるようにプロセス間も想定してるのに、
LinuxThreadsという実装に依存した制限をPOSIXセマフォ全体に適用しちゃってるじゃん。
古いPOSIXでsem_initにpsharedがなかったとかなら謝るけど、現在は存在してるわけで。
539で規格と実装をまとめて実装として区別したのは手抜きだったけど、
実装によっては駄目って話は規格関係ないしなんでそう噛み付くんだよ。
規格は規格で、実装は(規格の一部を含むだけの)実装。
一つの規格には複数の実装がありうるし、実装だけ見て規格覚えた気になったら駄目だよ。
0550デフォルトの名無しさん
2014/10/11(土) 15:19:41.96ID:1rMRyQrhセマフォ(共有メモリ)で排他制御するなら、関係ない話になるけど。
予備知識として、ソケットを使う方法があることは覚えておくといい。
例えば、クライアントの接続を同時に1つしか許さないサーバを用意し、
サーバへの接続に成功したクライアントが実行権を得るという感じ。
この実装は、本来ネットワーク上でクラスタを構成する複数のPC間のプロセスで
排他制御を実現するためのもので、サーバプロセスが別途必要になるなど、
仕組みがやや複雑になるけど。同じPC内のプロセス間の排他制御でも
利用できる汎用的な実装方法ではある。
興味があれば CORBA とかでググッてみてちょうだいな。
0551デフォルトの名無しさん
2014/10/11(土) 15:38:34.99ID:Ym4Peb6Eそこまで>>549がプロセス間の同期/排他制御にも POSIX セマフォを使いたいのなら、
>>549 は POSIX セマフォを何の疑いも無く使い続けていればいいんじゃないかな?
(スレッド間ではなく)プロセス間で POSIX セマフォを使った場合に起こる問題については
以下で解説されているので、もしその気になったなら読めばいいと思うよ
・unix - Differences between System V and Posix semaphores - Stack Overflow
http://stackoverflow.com/questions/368322/differences-between-system-v-and-posix-semaphores
問題に触れているのは、11番の "Two major problems with POSIX shared/named semaphores" で始まるレスだ
というか、>>543の後半で書いたように、今回のファイルの排他制御という質問(>>532)に対して、
セマフォを使うという発想そのものが「UNIX では」不適切である可能性が高い
質問者である >>532 には「セマフォは一時置いといて、代わりにファイルロック/FIFO/ソケットを使う検討に
着手した方が、期待した最終的なゴールへより早く辿り着けるはずだ」と伝えたい
Windows であればファイルオブジェクトの排他制御にセマフォを使うのは常識だし、
それどころかプロセスは重いからありとあらゆる並行処理にスレッドを使う
それに対して UNIX だとプロセスは比較的軽いので、メモリ保護され実装も容易なプロセスが多用される
ここら辺の差異は、Windows プログラマが UNIX プログラミングを始めた時、最初にとまどう箇所になる
(逆に UNIX プログラマはありとあらゆる並行処理にスレッドを使わざるをえない Windows にとまどう....)
>>532 は UNIX の IPC(プロセス間通信)技術について一通り勉強しておいたほうが、今後の役に立つと思う
0552デフォルトの名無しさん
2014/10/11(土) 15:48:54.72ID:eXZJM+rZ0553デフォルトの名無しさん
2014/10/11(土) 16:17:59.56ID:sPjWQ1kB使いたいって言ってるわけじゃなくて君が変なコト言うから反論しただけなんだけど。
まぁ自分のミスを訂正出来ずに話逸らしてく人みたいだからここらでやめとくよ。
あとその11は番号じゃなくて投票数だよ。その質問は現段階で4回答しか付いてない。
>>552
人のこと言いたくなかったけどこれはさすがに鏡見ろだねぇ…
0554デフォルトの名無しさん
2014/10/11(土) 16:45:07.63ID:yyExjOMx初心者は、flock(BSD系システムではlockf?)が割と使いやすいと思うけど、
まあいずれにしてもよく勉強しないと落とし穴に落ちるね
0555デフォルトの名無しさん
2014/10/11(土) 17:42:58.72ID:Ym4Peb6Eどこが「変なコト」なのかな?
「スレッド間の同期/排他制御には POSIX セマフォを、プロセス間であれば System V セマフォを使う 」という
UNIXシステムプログラミングにおける当たり前(>>554 が言うところの「常識」)の話をしているつもりなんだけどな....
で、>>539 が「POSIX セマフォとSystem V セマフォは実装によりけり」みたいな質問者を惑わせる
「変なコト」を言っているから、間違っているよと >>534 で指摘しただけだよ
もしこれを間違っていることにしたいのなら、言い換えると:
「実装されているプラットフォームであれば、
プロセス間の同期/排他制御に POSIX セマフォを使っても何ら問題は無い」、
つまり:
「( >>551 で示した)Stack Overflow のレスで指摘されている話は、つまらない些細な問題だ」
と言いたいのなら、その根拠を説明しなさい
ただし、>>549 にあるような:
「じゃあsem_initの第二引数psharedはなんの為にあるっていうんですかー!」
などという、プログラミングの経験が浅い人にありがちな「変なコト」を根拠にするのは勘弁願いたい
さて「変なコト」を言ってるのは私かな?君かな?
それとも捨て台詞を吐いて逃げ出すのかな?
0556デフォルトの名無しさん
2014/10/11(土) 18:17:21.15ID:Ym4Peb6EX: 「変なコト」を言っているから、間違っているよと >>534 で指摘しただけだよ
O: 「変なコト」を言っているから、間違っているよと >>543 で指摘しただけだよ
0557デフォルトの名無しさん
2014/10/11(土) 21:32:29.18ID:eXZJM+rZ煽りながら常識披露できてめっちゃ楽しそうだな
0558デフォルトの名無しさん
2014/10/12(日) 09:51:55.27ID:Go8QnHIo0559デフォルトの名無しさん
2014/10/12(日) 13:36:12.08ID:MraGD/gc音を出したいの?
複数行に文字列を順次書き出したいの?
0560片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/10/12(日) 14:12:50.56ID:Km5KyqRmDirectSound
0561デフォルトの名無しさん
2014/10/12(日) 16:51:07.20ID:rjvOL7n3質問している立場で、回答(した人)に対して批判するのは、内容の真偽関係なしに人間としてどうかと思うぞ。
2chだからって言えばそれまでだが。
0562ID:8D1iqFXW
2014/10/12(日) 19:10:59.00ID:GvvJyYY5皆さんの書き込み参考にさせていただき、無事にセグメントフォルトの発生位置と原因がつかめましたし、対策もとれました。
ありがとうございます。
あとmvの実行時間が長くなる(遅いUSBメモリに大きいファイルを移動させようとする)と動作がおかしくなることがあったので「プログラムCに共有メモリ経由でAとBからログを受け取ってファイルへ書く」にしました。
mv実行中にすっとセマフォロックしてるのが良くなかったようです。
セグメントフォルトの原因は単純で、「semopしないでファイルに書く」というルートがあったことでした。
gdbつかって死んだところから逆に辿って見つけるまで1分。
対策に1時間、テストに1日・・・そんなものですよね。
0563デフォルトの名無しさん
2014/10/12(日) 21:12:51.88ID:6uS4rjzC解読ができなくて困ってます
ユークリッドの互除法で最大公約数を求めるプログラムについてなんですが
ttp://edu.clipper.co.jp/pg-2-44.html
このサイトに載ってる一番上のプログラム
while( 1 ) {
printf( "2つの自然数を指定してください : " );
if( scanf( "%d, %d", &a, &b ) != 2 ) break;
if( a < b ) { temp = a; a = b; b = temp; }
if( b < 1 ) continue;
この部分がよくわかりません
特にこれです
if( scanf( "%d, %d", &a, &b ) != 2 ) break;
入力した値が2じゃなかったらbreak???
0564デフォルトの名無しさん
2014/10/12(日) 21:29:23.64ID:dA3B6w3o0565デフォルトの名無しさん
2014/10/13(月) 01:38:53.49ID:7Ey1xXE1回答に対してケチつけたのはID:sPjWQ1kBじゃなくてID:Ym4Peb6Eだよ。
しかもケチの内容がスッカスカ(後から探したかのよう)というダメっぷり。
>>555
>>543では「POSIXプロセス間共有セマフォに問題がある」というよりは
「POSIXにはプロセス間共有セマフォが存在しない」と言ってるように見えるけれど、
結局規格としてプロセス間共有セマフォはNPTLの独自拡張ではなくPOSIXに含まれるんだろ?
規格ではなく常識というなら、常識を説明すべき時に常識を前提にしたらそりゃ駄目に決まってるだろう。
ていうか「POSIXセマフォがプロセス間共有出来るかどうかが実装依存である」って何か間違ってるのか?
「POSIXセマフォは問題があるからプロセス間共有出来ても使いものにならない」とは独立した問題だろう。
0566デフォルトの名無しさん
2014/10/13(月) 01:46:26.05ID:nOZ2kIxv間違ってたら申し訳ないんだが、ちょっと前にSVNスレでも持論を強く主張してなかった?
いや、確証がある訳じゃないんだが、その経験の無さそうな正義のかざし方が似てる奴がいた
0567デフォルトの名無しさん
2014/10/15(水) 10:58:05.04ID:xcRZRwdiprintf/scanf は一字一句、隅々まで理解しておかないと血反吐を吐くハメになるべ
0568デフォルトの名無しさん
2014/10/15(水) 12:54:47.70ID:1vGsBe5Nscanf は使わない、sscanf で十分だし
0569デフォルトの名無しさん
2014/10/15(水) 13:05:50.81ID:3rwOGNYw{
va_list arg;
va_start(arg, msg);
vfprintf(stderr, msg, arg);
va_end(arg);
}
みたいな関数があって、debugPrint("100%Success.")
みたいな呼び出しがあったら、泣きたくなるよ。
0570デフォルトの名無しさん
2014/10/15(水) 13:25:14.58ID:Cjeb6OKm0571デフォルトの名無しさん
2014/10/15(水) 13:31:12.44ID:7y/wTrfK0572デフォルトの名無しさん
2014/10/15(水) 13:35:08.84ID:jmswbhAi不正アクセスで止まるか
比較的再現性はありそうな雰囲気なので、問題を起こしている箇所への到達は容易な部類だろう
0573デフォルトの名無しさん
2014/10/15(水) 13:54:55.29ID:3rwOGNYw運よくだか運悪くだか、、不正アクセスも起きてないときたもんだ。
エラー出力だから、余計な文字列には誰も注意していないようだし。
0574デフォルトの名無しさん
2014/10/15(水) 14:14:34.41ID:7y/wTrfK0575デフォルトの名無しさん
2014/10/15(水) 14:56:40.48ID:rAzJU0Y5まいっちゃうね
0576デフォルトの名無しさん
2014/10/15(水) 15:03:11.86ID:7y/wTrfK%%
ね
0577デフォルトの名無しさん
2014/10/15(水) 15:06:21.23ID:7y/wTrfK0578デフォルトの名無しさん
2014/10/15(水) 16:06:17.44ID:udSSsoWi単体テストをサボってるだけだろ
0579デフォルトの名無しさん
2014/10/15(水) 16:23:19.23ID:jmswbhAi0580デフォルトの名無しさん
2014/10/15(水) 22:26:03.06ID:4i0Tnykzツール作って機械的にチェックできるようにしてる
0581デフォルトの名無しさん
2014/10/15(水) 22:29:47.27ID:pKMiCDBS0582デフォルトの名無しさん
2014/10/15(水) 22:34:45.42ID:8kF5M8Gq0583デフォルトの名無しさん
2014/10/16(木) 10:43:00.93ID:cFrAjR7pただ標準入力した10進数の数を2進数で格納したいです。
この場合、一旦10進数のまま格納して、2で割っていく作業をしないとダメでしょうか?
例えば、100桁の数だと、2進数に直すには、2で割るごとに桁が1桁減るとしたら
100*99/2=4500回くらい必要になると思います。もっと楽な方法で2進数に直す方法
はありますか?
0584デフォルトの名無しさん
2014/10/16(木) 10:47:35.87ID:cFrAjR7p数字を1234567890とします。
2で割って61567345→3323424→153421→.....
とするしかないでしょうか?
もっと早い方法があれば教えて頂きたいです。
0585デフォルトの名無しさん
2014/10/16(木) 10:50:18.18ID:3ZkfeltT入力文字を1文字づつ解析しつつ演算すりゃ良いんじゃないの?
(big-int の実装はどこかに転がってると思うが)
0586デフォルトの名無しさん
2014/10/16(木) 10:53:13.81ID:RsSLEFk60587デフォルトの名無しさん
2014/10/16(木) 10:53:29.02ID:cFrAjR7p1文字づつじゃ無理です…
全部読みこんでからじゃないと
2で割った余りと商が必要ですから
0588デフォルトの名無しさん
2014/10/16(木) 11:02:15.72ID:3ZkfeltT2進配列化した大きい桁対応整数に格納するんじゃなく
整数変数で格納されてる値 1234567890 を
2進配列化した大きい桁対応整数へ変換したいの?
0589デフォルトの名無しさん
2014/10/16(木) 11:03:56.37ID:cFrAjR7p後者ですね
int x[10]=1234567890
int y[10]=1010101011101010
としたいです。
計算量を大幅に減らしてこの変換は可能でしょうか?
0590デフォルトの名無しさん
2014/10/16(木) 11:11:24.19ID:3ZkfeltTint a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; ってことだろ?
配列の先頭から1要素づつ抜き出して処理すりゃよいんだし
0591デフォルトの名無しさん
2014/10/16(木) 11:15:16.75ID:cFrAjR7p10進の場合だと余っちゃって次の要素に渡さないとだめじゃないですか…
なので1要素づつ無理だと思うんですけど…
0592デフォルトの名無しさん
2014/10/16(木) 11:40:17.39ID:u68giTndint num[5] = {1.2.3.4.-1}
while(-1 != num[i])
この-1は、0 なのか?NULLなのか?
説明が下手ですいません・・・
0593デフォルトの名無しさん
2014/10/16(木) 12:38:19.17ID:x487PEXW-1は-1だよ。0でもNULLでもない。
0594デフォルトの名無しさん
2014/10/16(木) 12:42:23.97ID:x487PEXWと言うのはさておいて。
>592の-1の役割りについてなら、所謂「番人(sentinel)」だね。
文字列の場合のナル文字も、同じ役割りだと言える。
0595デフォルトの名無しさん
2014/10/16(木) 12:43:24.75ID:imC1u1xV0596デフォルトの名無しさん
2014/10/16(木) 12:44:11.41ID:imC1u1xV情報の始めや終わりを示す記号など
tag ともいう
0597デフォルトの名無しさん
2014/10/16(木) 12:53:13.18ID:6hon/NKmhttps://www.google.co.jp/webhp?ie=UTF-8#safe=off&q=10%E9%80%B2%E6%95%B0+2%E9%80%B2%E6%95%B0+%E5%A4%89%E6%8F%9B+c%E8%A8%80%E8%AA%9E
0598デフォルトの名無しさん
2014/10/16(木) 12:54:10.13ID:nzeF5Tun0599デフォルトの名無しさん
2014/10/16(木) 12:57:35.69ID:x487PEXW昔かなり売れた本を書いた三田某が広めた悪しき習慣です。
0600デフォルトの名無しさん
2014/10/16(木) 13:51:47.64ID:ezJ68yjY0601デフォルトの名無しさん
2014/10/16(木) 17:33:09.07ID:SBUE/h0X0602デフォルトの名無しさん
2014/10/16(木) 19:52:29.17ID:wUxPPoZ30603デフォルトの名無しさん
2014/10/16(木) 20:41:40.85ID:z1p3vqSk0でもNULLでもなく文法エラーです
0604デフォルトの名無しさん
2014/10/17(金) 01:02:29.98ID:9a/zPdtMUNIXの慣習を真似ただけ
0605デフォルトの名無しさん
2014/10/17(金) 07:01:57.72ID:9jo8HR8B0606デフォルトの名無しさん
2014/10/17(金) 14:46:31.04ID:MIx0kIZE変数名だけで十分だと思うんですが・・・
0607デフォルトの名無しさん
2014/10/17(金) 14:52:50.25ID:Q2oMAsWxstruct ore {
struct ore *next;
void *body;
};
0608デフォルトの名無しさん
2014/10/17(金) 14:57:52.00ID:y+sHWWi0互換性でしょ
>>607
前方宣言でtypedefすればいけない?
0609デフォルトの名無しさん
2014/10/17(金) 14:59:29.23ID:Q2oMAsWx前方宣言するにしても
タグ名無し (noname struct) は typedef できないっしょ
0610デフォルトの名無しさん
2014/10/17(金) 15:01:48.11ID:y+sHWWi0なんでその例えが出したの?
0611デフォルトの名無しさん
2014/10/17(金) 15:03:47.46ID:Q2oMAsWxで タグ名無しの構造体で表現できないのがあるよ と。
0612デフォルトの名無しさん
2014/10/17(金) 15:04:32.76ID:y+sHWWi0理解した
スルーしてちょーだい
0613デフォルトの名無しさん
2014/10/17(金) 15:32:02.10ID:bxyVopED構造体タグに回帰せねばならない
ってコンパイラちゃんが枕元でゆってた
0614デフォルトの名無しさん
2014/10/17(金) 16:34:07.18ID:D1HVdoyr#defineではなく、typedefをつかえ
というはなしもある
0615デフォルトの名無しさん
2014/10/17(金) 21:41:37.05ID:j5u0ESS9ある構造体を一度だけ使うだけなら、タグ名は不要
struct { ..... } foo1, foo2;
ただし、同じ構造体を複数使うのなら、構造体をタグ名で命名してから
そのタグ名で変数宣言したほうが、コードの重複が無くなり簡潔になるからバグが減らせる
struct foo { ..... };
struct foo foo1;
struct foo foo2;
たとえばある構造体へのポインタを複数のモジュール間で受け渡したい場合、
ヘッダファイル(*.h)で構造体を定義し、そのヘッダファイルを
コール元/先のモジュール実装ファイル(*.c)でインクルードする場合にタグ名が必要になる
また、タグ名の代わりに typedef でデータ型として定義する書き方もある
typedef struct { ..... } foo_t;
foo_t foo1;
foo_t foo1;
typedef を使う例としてはC標準ライブラリの fopen 等で使われる FILE 型が、
タグ名を使う例としては同じくC標準ライブラリの fstat で使われる stat 構造体がある
これらは、アプリケーション(コール元)とC標準ライブラリ(コール先)との間で、
構造体で表現されたファイル/アクセス権利の情報を受け渡している
0616デフォルトの名無しさん
2014/10/17(金) 21:46:03.30ID:hy5PTzmS0617デフォルトの名無しさん
2014/10/17(金) 21:54:23.45ID:j5u0ESS9では、POSIX標準に訂正
0618デフォルトの名無しさん
2014/10/18(土) 14:25:01.99ID:xyIEV5M1元々Cにはユーザがデータ型を定義するという概念はなくて
名前付きの構造体により代用している
そこから悪しき方向に進んだのがtypedef
後戻りできなくなったのが C++
なぜタグ名が必要ですか? ではなくて
なぜタグ名の前のstructを省略しようとするのですか? と問うべき
0619デフォルトの名無しさん
2014/10/18(土) 17:51:30.53ID:Vnp4xFn+用途はグラフの座標記録です
いまのところハッシュかトライ木かなあと思ってます
0620デフォルトの名無しさん
2014/10/18(土) 18:19:59.25ID:JrrIO6WT>元々Cにはユーザがデータ型を定義するという概念はなくて
その「元々」というのは、何を指しているのかな?
少なくとも K&R C 版の書籍「プログラミング言語 C」では、
struct date { ..... };
struct date d;
という構造体の宣言文を:
「変数 d が型 d の構造体であるという定義になる。」
と解説している
また typedef に関しても K&R C では、
typedef int LENGTH;
といいう型の宣言文を:
「名前 LENGTH を int の同義語にする。」
と解説している
以下にまとめる:
・元々 C には、ユーザが構造体や共用体のデータ型を定義するという概念が存在する
・加えて、任意のデータ型に同義語(シノニム)を定義する概念も存在する
また、ナゼ型名に対する同義語の定義 typedef を「悪しき方向」と考えたのだろうか?
同義語の概念は、ML や Haskell といった厳密な型システムを持つ新しい言語でも存在しているのに....
たとえば Standard ML という言語では、上記の C コードを以下のように書く
datatype date = Date of { ..... } (* データ型 date を定義 *)
val d : date = Date { .... } (* データ型 date の変数 d を宣言 *)
type LENGTH = int (* 組み込みデータ型 int の同義語として LENGTH を定義 *)
全般的に、データ型と型システムに関する理解度が浅いように思えるね
0621デフォルトの名無しさん
2014/10/18(土) 18:47:49.79ID:pBwE5r6C求めているものがよく分からないのだが、座標の配列じゃダメなの?
例えば、
struct {
double x;
double y;
} graph[] = {
{0, 0},
{1, 1},
{2, 4}
};
のような。ここでは無名構造体を作ったけど、座標値だけなら複素数型を使ってもいいね。
例えば、その座標の属性も必要なら
struct {
double x, y;
AnyType_t foo;
}
のようにメンバーを増やせばいい。
# 尤も、そうなると尚のことC++向けになるけれど。
0622デフォルトの名無しさん
2014/10/18(土) 20:15:30.12ID:jMJom5wv0623デフォルトの名無しさん
2014/10/18(土) 20:50:21.37ID:BKUOIhLJすみません、こういった知識はどこで得るのですか?
0624デフォルトの名無しさん
2014/10/18(土) 21:26:08.89ID:2Oqt2ZKa0625デフォルトの名無しさん
2014/10/18(土) 22:39:50.56ID:1p6XRioVこの手の話は「情報論基礎」みたい感じで軽い一冊としてまとまってそう、私も具体的にこれ、と挙げることはできないけど
a を二進数表現としたとき、a の 1 である桁を 0 に換え、a の 0 である桁を 1 に換えてできた数を a の補数と名前をつけることにする。
例:十進数表記の 6 は 二進数表記では 110、よって6 の補数は二進数で 001 、十進数で 1 とする。
例:14 の補数は 17, 221 の補数は 34, 2438 の補数は 1657,
a の補数を ~a とすると上記の補数の決め方により a + ~a = 111111......1111(二進数ですべての桁が1になる数)となる。
なぜならば、a のある桁が1 ならば対応する~a のその桁は 0 になるわけで、両方ともが 1 、あるいは両方ともが0 になることは、補数の決め方を守る限り起こらない。
ここでもう一つの約束ごと、11111...1111 というニ進数で表すとすべての桁が 1 になる数を「-1」を表すこととする。
この二つの約束事を式で表すと
a + ~a = -1
a = -~a - 1
-a = ~a + 1
以上のとおりです。
0626デフォルトの名無しさん
2014/10/19(日) 00:05:59.34ID:y9OwiF5yどんなことをやれば勉強になりますかね?
0627デフォルトの名無しさん
2014/10/19(日) 00:09:14.61ID:rbfpezWX0628デフォルトの名無しさん
2014/10/19(日) 00:42:17.06ID:y9OwiF5yそういえばCで作ったことなかったのでやってみます
0629デフォルトの名無しさん
2014/10/19(日) 01:11:55.54ID:YVMiT/niビット演算とかマイコンで多用する。マイコン・プログラムをやるとか。
あるいは、基本情報処理とかそいういうレベルでもちゃんとまとまってるぞ。
腑に落ちて納得するかどうかは別だが。
>>625
ひどい説明だな
0630デフォルトの名無しさん
2014/10/19(日) 01:34:09.93ID:n12q1poe0631デフォルトの名無しさん
2014/10/19(日) 08:08:30.63ID:I8zMPvcxビット演算って
0 & 0 = 0, 0 & 1 = 0, 1 & 0 = 0, 1 & 1 = 1
0 | 0 = 0, 0 | 1 = 1, 1 | 0 = 1, 1 | 1 = 1
0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0
~0 = 1, ~1 = 0
しかなかったと思うが、何を知りたいんだ?
0632デフォルトの名無しさん
2014/10/19(日) 09:16:50.39ID:y9OwiF5yマイコンいいですね
基礎基本がわからないレベルなので…
>>631
n = (a >> i) & 1;
とかの組み合わせがパッと浮かばない
演算の意味はわかるんですが
0633デフォルトの名無しさん
2014/10/19(日) 09:58:11.00ID:I8zMPvcx> n = (a >> i) & 1;
基本はシフトでビット位置を合わせて、アンドで必要なビットを取り出す
複数の情報を組み合わせる時は、オアで合成する
ハードウェアとか外部のソフトが相手で、ビットの意味が反対だったりしたら、ノットで反転
あとは、それらの組み合わせ
分解して一つづつやれば難しくはないと思うよ
0634デフォルトの名無しさん
2014/10/19(日) 10:07:00.78ID:Gg/Cq6+G右手と左手で排他的論理輪とか。
まぁそんなことやったこと無いけど。
0635デフォルトの名無しさん
2014/10/19(日) 10:33:59.17ID:k1PbD2WC0636デフォルトの名無しさん
2014/10/19(日) 10:58:01.92ID:uD1HchnI0637デフォルトの名無しさん
2014/10/19(日) 11:29:33.45ID:U9zncy/O0638デフォルトの名無しさん
2014/10/19(日) 14:31:31.25ID:sQrPAy6+それとも32進数に考えが及んだか?
0639デフォルトの名無しさん
2014/10/19(日) 14:35:17.51ID:F4nW5RW7自分の手の指は11本あるの?
0640デフォルトの名無しさん
2014/10/19(日) 15:04:15.42ID:z3cv9rpK>>>625 ひどい説明だな
すまんなあ、いろいろ考えたんだけれども今ひとつだね
0641デフォルトの名無しさん
2014/10/19(日) 21:34:56.26ID:y9OwiF5yなるほど
オセロ作りながら試してみます
指使うのは薬指がしんどいですね
ありがとうございました
0643デフォルトの名無しさん
2014/10/19(日) 23:27:09.58ID:Gg/Cq6+G親指はパリティチェック用です。
0644デフォルトの名無しさん
2014/10/20(月) 00:06:29.77ID:kihkTLTv(n進数のn-1の補数)
1110(-1)
0001(1)
0000(+0)
1111(-0)
1110(-1)
1の補数を使うと、+0と-0があって、
0に2つの値を使うため、表現できる数が1つ減るので、
1の補数に、0001を足して、2の補数とする
1111+0001=10000→0000
これで、0の表現が1つになる
0001(1)
0000(0)
1111(-1)
1110(-2)
0001(1)
1110(反転して)+0001=1111(-1)
0001(1)+1111(-1)=10000→0000(0)
同様に、1111(-1)
0000(反転して)+0001=0001(1)
情報処理の資格の本を読め
0645デフォルトの名無しさん
2014/10/20(月) 00:46:53.38ID:jAOGV0n9考えているビット幅でビット反転して1を足して2の補数を作る。
4ビット符号付整数
0101(5)
+)1011(-5:ビット反転して+1)
----------------------------
10000
4ビットから桁あふれした1を「計算機の方で無視」すれば、
a + x = 0 となるので x は -a とみなせる。
たまに話題になる符号拡張も、下で納得
8ビットに拡張すると
0000 0101(5) 正なら0で拡張される
+)1111 1011(-5) 負なら1で拡張される
---------------
10000 0000 5 + (-5) = 0 の関係を満たしている。
上にもあるが、計算機の方で1の補数で負数を表すものもある(った)。
今はおそらく大半の計算機が整数の負数に2の補数を使っている。
0646デフォルトの名無しさん
2014/10/20(月) 00:48:24.52ID:jAOGV0n90647デフォルトの名無しさん
2014/10/20(月) 00:59:22.33ID:d0Wa7W4n0648デフォルトの名無しさん
2014/10/20(月) 01:02:07.99ID:z9HBmvt8ファッ?!
0649デフォルトの名無しさん
2014/10/20(月) 10:14:38.24ID:zw/pANgQもうそんな機会は無いだろうけど。
0650デフォルトの名無しさん
2014/10/20(月) 10:18:49.65ID:PsaKgWV11が立っている数を数える とか
そういう系統もややこしい
0651デフォルトの名無しさん
2014/10/20(月) 16:01:36.12ID:Bme9sFz0n=0;while(d){n++;d=d>>1;};
b=1<<n;
} else b=0;
0652デフォルトの名無しさん
2014/10/20(月) 16:02:47.03ID:Bme9sFz0× b=1<<n;
○ b=1<<(n-1);
0653デフォルトの名無しさん
2014/10/20(月) 16:57:54.73ID:kQY1b3E/0654デフォルトの名無しさん
2014/10/20(月) 17:48:39.64ID:5SF17gPn熟練者の回答パターンよろしく、煽り君。
0655デフォルトの名無しさん
2014/10/20(月) 18:03:29.04ID:iqdyOi6Jnlzのキーワードを知らなくても、ビットカウントの応用でできるだろ。JK
0656デフォルトの名無しさん
2014/10/20(月) 18:03:30.71ID:PsaKgWV1bits = (bits & 0x55555555) + (bits >> 1 & 0x55555555);
bits = (bits & 0x33333333) + (bits >> 2 & 0x33333333);
bits = (bits & 0x0f0f0f0f) + (bits >> 4 & 0x0f0f0f0f);
bits = (bits & 0x00ff00ff) + (bits >> 8 & 0x00ff00ff);
return (bits & 0x0000ffff) + (bits >>16 & 0x0000ffff);
0657デフォルトの名無しさん
2014/10/20(月) 18:42:12.49ID:3S+pMSvD0658デフォルトの名無しさん
2014/10/20(月) 18:47:16.70ID:kQY1b3E/b=-1;
}else{
b=d;
b|=b>>1;
b|=b>>2;
b|=b>>4;
b=b&0x55+(b>>1)&0x55;
b=b&0x33+(b>>1)&0x33;
b=b&0x0F+(b>>1)&0x0F;
b--;
}
0659デフォルトの名無しさん
2014/10/20(月) 18:58:01.90ID:XKh/BlSi常用するなら嫌でも覚えるし
たまーにしか使わないものは
結合法則や演算子の終戦順位と同じで
チートシートでどうとでもなる
0660デフォルトの名無しさん
2014/10/21(火) 00:09:35.80ID:0vfesyL/0661デフォルトの名無しさん
2014/10/21(火) 03:55:53.12ID:8SGSY+iX俺みたいなアマチュアには
0662デフォルトの名無しさん
2014/10/21(火) 04:11:08.20ID:netKw0Ms組み込みでレジスタ操作するってんなら分かるけど
普通にboolのフラグ使った方がいいだろ
0663デフォルトの名無しさん
2014/10/21(火) 04:30:21.12ID:XAI1ewtg変化の検出、変化の方向
0664デフォルトの名無しさん
2014/10/21(火) 23:58:43.05ID:K8BLRHCO2.2GB程度のファイルを開いて、中身のデータをメモリにコピーする
処理を3度繰り返すプログラムを作って、処理時間を計ったのですが、
1回目の実行では40秒以上かかったにも関わらず、2回目以降は10秒程度で
終わってしまいました。
1回目と2回目以降で何が違うのか知りたいのですが・・・。
同じような現象にあった人いませんか?
0665デフォルトの名無しさん
2014/10/22(水) 00:04:10.14ID:TiUjqSTX0666デフォルトの名無しさん
2014/10/22(水) 00:11:05.29ID:TCMhDTw9すんません。ありがとうございます。
キャッシュがキーワードになるところまでは、
なんとか推測できたのですが、その仕組みが分からず
困ってしまって。
教えてもらえないでしょうか。
0667デフォルトの名無しさん
2014/10/22(水) 00:18:01.10ID:TiUjqSTX2回目以降は、そのメモリに読み込まれた内容を返しているから早くなる
0668デフォルトの名無しさん
2014/10/22(水) 15:46:30.26ID:DY3FYU6garrayIntのsizeを求めるにはどうしたらいいのでしょうか?
sizeofでは4しか帰ってきません
0669デフォルトの名無しさん
2014/10/22(水) 16:03:02.75ID:M8+A+VNz0670デフォルトの名無しさん
2014/10/22(水) 16:04:18.49ID:ZJmaYp7jint num_array = 5;
int *array = ( int * ) malloc(sizeof(int) * num_array);
....
num_array と array をペアで取り扱う
0671デフォルトの名無しさん
2014/10/22(水) 17:18:31.87ID:kioGZEwy確保した領域のカウントってできないんですね
ありがとうございます
0672デフォルトの名無しさん
2014/10/24(金) 15:53:47.70ID:nuHRW7MXconst int B_NO = 10;
int a[A_NO];
int b[B_NO];
int b[B_NO] これエラー吐くんですが、どうしてですか?
コンパイラは、Borlandです
0673デフォルトの名無しさん
2014/10/24(金) 16:00:24.44ID:RNJLSzMP0674デフォルトの名無しさん
2014/10/25(土) 13:07:14.86ID:pojaJUJ1sizeof(int) * 2 や sizeof(int) + sizeof(int) のようなコードばかり見かけるもので
0675デフォルトの名無しさん
2014/10/25(土) 13:59:33.08ID:+rxX9Zyj基本的には問題ないが、ポインタ型の場合は誤解を招くかもしれない。
ところで、sizeof(int) + sizeof(int) などと書く人がいるのか…
これがもし、別個に定義された#defineやtypedefで中身が一緒だから、ということであるなら、
全く別の話になる。
0676デフォルトの名無しさん
2014/10/25(土) 14:35:52.56ID:pojaJUJ10677デフォルトの名無しさん
2014/10/26(日) 03:33:54.20ID:Beg6PV2Iaxがshort intのとき、&axのところにff、&axから1バイト先のところに00を書き込みたいです(リトルエンディアン)
mov()の書き方がわからないのですが、教えてください
具体的には、私の環境ではshort intの幅が2バイトなので、ポインタをインクリメントすると2バイト先を指してしまうのですが、これを1バイト先を指すようにし、そこに値を書き込みたいです
0678デフォルトの名無しさん
2014/10/26(日) 05:22:36.67ID:qgcFTrvw((unsigned char *)ax)[0] = 0xff;
((unsigned char *)ax)[1] = 0x00;
0679デフォルトの名無しさん
2014/10/26(日) 08:52:33.66ID:NwSJFL0J0680デフォルトの名無しさん
2014/10/26(日) 10:17:09.05ID:Beg6PV2Iありがとうございます
0681デフォルトの名無しさん
2014/10/28(火) 10:18:35.43ID:/wPiQURT{
if{
continue;
}
}
continueはwhile文に戻どるんですか?
それとも、if文ですか?
0682デフォルトの名無しさん
2014/10/28(火) 10:30:24.78ID:eMLlqf62「戻どる」が何のことかは知りませんが、
continueはwhileの評価部に移動します。
しかしこの場合は評価部が常に真なので、
結果的にifの評価部に移動することになります。
0683デフォルトの名無しさん
2014/10/28(火) 18:24:19.21ID:yV+uoqZUCって何があるんですか?
objectiveCでiphoneでもCで練習したってことになるわけないですよね?
0684デフォルトの名無しさん
2014/10/28(火) 18:34:37.34ID:DF/RlZJqそもそも、Java屋さんでCが書けない人っていないよ
0685デフォルトの名無しさん
2014/10/28(火) 18:36:02.07ID:yV+uoqZUありがとう。初心者レベルでちょっとは使えますが
ポインタやいろいろ使いこなすまで使ってはいません
0686デフォルトの名無しさん
2014/10/28(火) 18:57:13.15ID:TVzBf/gbC言語のライブラリは、環境依存のものが多いかな・・・
あちこちに移植されて標準のように思えるものもあるけれど、
例えば、PCから離れてちょっと組み込みとかの世界に行くと、
あれもこれも使えないとわかって頭を抱えることがあるw
「使える」と「使いこなす」よりも、
「使えない」と「使える」の差の方が大きい。
広く浅く、とりあえず単純になら使えるようになることが先かな。
0687デフォルトの名無しさん
2014/10/28(火) 18:58:25.16ID:yV+uoqZU0688デフォルトの名無しさん
2014/10/28(火) 19:33:34.53ID:eMLlqf62幾らでも居るよ。そもそも、C++プログラマでCを書けない奴もいる。
0689デフォルトの名無しさん
2014/10/28(火) 19:55:38.09ID:vtU5lQj4クラス化して整理できないとか
思考を縛られてうがーってなるのと 文法的な縛りでうがーってなるのと
0690デフォルトの名無しさん
2014/10/28(火) 20:22:27.59ID:RC51HoX/DXライブラリ
SDL
この辺
0691デフォルトの名無しさん
2014/10/28(火) 20:36:02.49ID:DF/RlZJqらっぱー
0692デフォルトの名無しさん
2014/10/28(火) 20:41:47.33ID:DF/RlZJq> C++プログラマでCを書けない奴
理解できない
0693デフォルトの名無しさん
2014/10/28(火) 21:04:19.75ID:uEWDfUejCナメすぎ ていうか Java屋ナメすぎ
0694デフォルトの名無しさん
2014/10/28(火) 21:24:41.81ID:DF/RlZJq意味がわからねっす
0695デフォルトの名無しさん
2014/10/28(火) 21:31:11.91ID:eMLlqf62実際に書かせると、メモリリークしてたりバッファオーバフローしてたり
スパゲッティーになってたりともう、ぼろぼろ。
0696デフォルトの名無しさん
2014/10/28(火) 21:43:54.28ID:DF/RlZJq主観じゃんw
> C++プログラマでCを書けない奴
理解できない
ですよ
0697デフォルトの名無しさん
2014/10/28(火) 22:14:18.15ID:+JGpmvNcこんなの何に対しても当てはまるわけがない
あ、同じ言語名が入るならもちろん成り立つよ?笑
0698デフォルトの名無しさん
2014/10/28(火) 22:15:54.10ID:+JGpmvNc0699デフォルトの名無しさん
2014/10/28(火) 22:17:56.73ID:vtU5lQj4関連の遠い言語なら、そういうもんだって諦めつくけど、近しいんでなおさら
0700デフォルトの名無しさん
2014/10/28(火) 22:22:10.87ID:jVTnh4rLそれが成就すればC++っぽく書けるんじゃ
0701デフォルトの名無しさん
2014/10/28(火) 23:09:07.66ID:uvfLqTRT0702デフォルトの名無しさん
2014/10/28(火) 23:10:49.98ID:ZFLQwBg+C89では出来てたよな。K&R?
0703デフォルトの名無しさん
2014/10/28(火) 23:13:25.39ID:1jnk6RKMへー、マジで。
つかそれObjective-C
0704デフォルトの名無しさん
2014/10/28(火) 23:17:53.63ID:uvfLqTRTK&R1
0705デフォルトの名無しさん
2014/10/28(火) 23:19:01.09ID:ZFLQwBg+メンバ関数とかいらんわ
0706デフォルトの名無しさん
2014/10/28(火) 23:51:36.24ID:jVTnh4rL俺はオーバロードがあるとうれしいかな
ttp://cpplover.blogspot.jp/2014/10/n1875-c.html
0707627
2014/10/28(火) 23:52:50.49ID:yg9JLa760708デフォルトの名無しさん
2014/10/28(火) 23:54:31.98ID:jVTnh4rL眠いんで変なこと言った
0709デフォルトの名無しさん
2014/10/29(水) 00:20:23.07ID:ITcKex6dいやいや関数のオーバーロードはCにあっていいと思うよ、ただしリンクが大変だ
0710デフォルトの名無しさん
2014/10/29(水) 10:14:03.28ID:FRMiK0c0あれ?C++でよくね?
0711デフォルトの名無しさん
2014/10/29(水) 17:36:05.19ID:dXPcUlLe0712デフォルトの名無しさん
2014/10/29(水) 17:51:30.48ID:Cyi/yNzT0713デフォルトの名無しさん
2014/10/29(水) 21:19:13.67ID:OOL+6wsDjavaしか使ったことない前提
まだeclipseへのCの入れ方がわからないけど
0714デフォルトの名無しさん
2014/10/29(水) 21:21:18.09ID:OOL+6wsDCの場合でいうとVisualCなんでしょうか?
0715デフォルトの名無しさん
2014/10/29(水) 22:38:06.32ID:FNNFJVXhObjective-Cでもオーバーロードあんだろ…
0716デフォルトの名無しさん
2014/10/29(水) 22:38:48.84ID:FNNFJVXh導入した言語はないぞ
0717デフォルトの名無しさん
2014/10/30(木) 00:39:42.47ID:YHBMm73x0718デフォルトの名無しさん
2014/10/30(木) 07:51:45.02ID:teQja72kWin32API
0719デフォルトの名無しさん
2014/10/30(木) 08:48:11.40ID:/137+PaD0720デフォルトの名無しさん
2014/10/30(木) 09:31:27.23ID:cKVXk1/wif(b>20 || a>10)
効率がいいのは、どっちからしいんですけど
どっちですか?
0721デフォルトの名無しさん
2014/10/30(木) 10:51:27.28ID:sq6jEOjYそれは一概には言えない。
可能性としては、a>10とb>20のどちらかがどちらかより真になることが多いなら、それを先にした方がいい。
0722デフォルトの名無しさん
2014/10/30(木) 11:57:02.35ID:HIs5p7W3難しいですよねエクリプスに入れるのって?
0723デフォルトの名無しさん
2014/10/30(木) 12:34:50.66ID:/137+PaD0724デフォルトの名無しさん
2014/10/30(木) 12:54:28.45ID:7fc6WtHX> 効率がいいのは、どっちからしいんですけど
そう言ったやつに聞け
なんの前提もなしにそう言ってるなら、今後そいつの言うことは聞き流していい
0725デフォルトの名無しさん
2014/10/30(木) 14:29:48.10ID:HIs5p7W3ありがとう
なんていうエクリプスですか?
0726デフォルトの名無しさん
2014/10/30(木) 14:32:11.66ID:HIs5p7W30727デフォルトの名無しさん
2014/10/30(木) 15:12:59.88ID:HIs5p7W3プロジェクトたちあげてみたいんですが
#include <stdio.h>
#include <stdlib.h>
に赤罰が出ます
プロジェクトの中には srcの中に自分の作ったファイルしかありません
#include <stdio.h>
#include <stdlib.h>が入ってない気がするんです
0728デフォルトの名無しさん
2014/10/30(木) 15:28:12.96ID:5zPuqKEdfunc(int reg)
{
reg = 0xff;
}
この関数をディスアセンブルすると
0 push rbp
1 mov rbp,rsp
4 mov DWORD PTR [rbp-0x14],edi
7 mov DWORD PTR [rbp-0x4],0xff
14 pop rbp
15 ret
ベースポインタのpush,popが何をやっているのかわからないのですが、教えてください
0729デフォルトの名無しさん
2014/10/30(木) 15:35:13.12ID:64aev4EECではなくC++のプロジェクトでは
stdio.hではなくcstdio使えとかってな
警告じゃない?
>>728
退避したものを復元してるだけでは
0730デフォルトの名無しさん
2014/10/30(木) 15:38:10.40ID:5zPuqKEdこのベースポインタの処理、どの関数を読んでも出てくるのですが、スタック領域にベースポインタをpush、またpopすると何が起こるのでしょうか
0731デフォルトの名無しさん
2014/10/30(木) 15:42:28.09ID:64aev4EEだから退避したものを復元してるだけではと言ってるんだけど。
VS、Eclipseその他
定番どころのIDEなら混合モードでデバッグ出来るから
ステップ実行して値の変化を確かめてみたらいいんじゃないかな
0732デフォルトの名無しさん
2014/10/30(木) 15:48:28.87ID:5zPuqKEdスタックの仕組みはわかるので、私がお聞きしたいのはベースポインタを退避、復元という処理にはどんな意味があるのかということです。勘違いさせてしまい申し訳ございません。
0733デフォルトの名無しさん
2014/10/30(木) 15:48:46.64ID:0o1hvduwベースポインタの push/pop の部分は、単に呼び出し時点に巻き戻す用
自動変数がある場合、その後、スタック/ベースポインタの加減算でスキマを作って
そのスキマに自動変数をわりあてる
関数から戻る直前 スタック/ベースポインタの加減算を巻き戻して 帰る
必ずこうなるわけではない(コンパイラ次第)けど、多分こんなもん
0734デフォルトの名無しさん
2014/10/30(木) 15:52:34.39ID:1rX8nkrW関数の中から関数を呼ぶ場合があるから
0735デフォルトの名無しさん
2014/10/30(木) 15:55:22.72ID:5zPuqKEdありがとうございます。main()にもrbpのpushがあるのはargc,argvをベースポインタに割り当ててるということでしょうか。私は説明が下手と理解が曖昧なのでプログラマになれるか不安です
0736デフォルトの名無しさん
2014/10/30(木) 16:03:17.76ID:5zPuqKEd0737デフォルトの名無しさん
2014/10/30(木) 16:03:32.39ID:0o1hvduw0738デフォルトの名無しさん
2014/10/30(木) 16:10:03.57ID:5zPuqKEd0739デフォルトの名無しさん
2014/10/30(木) 16:14:08.70ID:0o1hvduw[自動変数 B]
[自動変数 A]
[push bp]
(ここが呼び出された直後)
[リターンアドレス]
[関数第1引数]
:
[関数第n引数]
このように関数呼び出し側が 引数をスタックに詰んだ後に call するんだが
呼ばれた側は、その時の スタックの位置をメモっといて(bp)
メモした位置からの相対位置で引数本体を抜き出すといった具合だが
先に書いたように、コンパイラ次第だったりもするので、コンパイラの技術資料あたれー
0740デフォルトの名無しさん
2014/10/30(木) 16:23:27.76ID:5zPuqKEd手元にあるドラゴンブック第2版、7章をじっくり読もうと思います
0741デフォルトの名無しさん
2014/10/30(木) 16:54:50.92ID:L+CtiNQP0742デフォルトの名無しさん
2014/10/30(木) 17:08:52.77ID:5zPuqKEdたとえ豚に真珠と言われようが
0743デフォルトの名無しさん
2014/10/30(木) 22:44:40.28ID:1lR2Yce7使ったほうが意図が伝わるので使えと言われてきたが
言われないと使わなかったなぁ・・・・
static const char* const file = "app.cfg";
staticも使わないなぁ、グローバル変数にしちゃうなぁ
C89やC99の違いも解らなくなったなぁ
もーだーめだー(なにが)
0744デフォルトの名無しさん
2014/10/30(木) 23:22:42.45ID:XB7oU5Zc大抵はでかいROMテーブルがいるときに使うな
0745デフォルトの名無しさん
2014/10/30(木) 23:28:06.25ID:gdX840BN管理上よくない
0746デフォルトの名無しさん
2014/10/31(金) 02:36:13.51ID:IvqZg/YM0747デフォルトの名無しさん
2014/10/31(金) 10:19:07.81ID:yAkJcFMf0748デフォルトの名無しさん
2014/10/31(金) 10:58:41.94ID:NwqKHC4Iどの途、アセンブリ出力を眺めたりマップファイルを眺めたりは必要だし。
0749デフォルトの名無しさん
2014/10/31(金) 18:39:27.93ID:Bv2xV/5AうちはUNIX(AIX)業務系で
リソースはほぼ無限だからなぁ・・・・
読み易いソース >>>> リソースに優しいコード > 速いコード
さすがにグローバル連発したら
こっちでも殴られますわ
0750デフォルトの名無しさん
2014/10/31(金) 18:45:42.97ID:AO1PQn8r0751デフォルトの名無しさん
2014/10/31(金) 18:49:30.96ID:RBA0S+28構造体の中に配列を作って渡しても
値渡しになるんでしょうか
0752デフォルトの名無しさん
2014/10/31(金) 18:50:35.27ID:wpaPUpf2あるのは精々、ポインタの値渡しです。
0753デフォルトの名無しさん
2014/10/31(金) 18:52:05.92ID:AO1PQn8r0754デフォルトの名無しさん
2014/10/31(金) 18:53:38.97ID:RBA0S+28構造体の中に入れると配列でも
値と
参照
使い分けられるということですね
0755デフォルトの名無しさん
2014/10/31(金) 18:55:12.86ID:AO1PQn8r調べてるか実際にやってみてね
0756デフォルトの名無しさん
2014/10/31(金) 19:12:44.28ID:x+sYExqHちなみにJavaにもないぞ。
あるのはそれぞれ値渡しだけ。
ただ、Cにはポインタの値渡しがあり、
Javaには参照値の値渡しがあるってだけ。
foo(bar b) {b = newbar}
これで呼び出し元の変数に変化を与えられるのが参照渡し。
0757デフォルトの名無しさん
2014/10/31(金) 19:36:09.80ID:RBA0S+28構造体にないのか
配列にないのかどっちのことをいってるんですか?
Kouzou ko1 ;
method(&ko1)でアドレス渡して参照渡しでしょ?
0758デフォルトの名無しさん
2014/10/31(金) 19:39:13.28ID:fvAGO10bアドレス(ポインタ)の値渡しだ馬鹿野郎
0759デフォルトの名無しさん
2014/10/31(金) 19:41:42.10ID:1dvn2SK4参照渡しとは C++ のように
Kouzou ko1;
methid(ko1); という呼び出しになり、さらに metod() は ko1 へ副作用をおこせる
0760デフォルトの名無しさん
2014/10/31(金) 19:44:53.53ID:1dvn2SK4methodA(&a);
struct s;
methodB(&s);
両者とも「参照渡し」とは呼ばない。 ポインタ(の値)渡し
0761デフォルトの名無しさん
2014/10/31(金) 19:46:18.07ID:vA8jFBTY興味があったらぐぐってごらん。
C言語の入門という意味でも、
プログラミング言語全般への入門という意味でも、
値渡しと参照渡しの違いは自分の中でハッキリさせといたほうがいい。
0762デフォルトの名無しさん
2014/10/31(金) 20:02:37.87ID:RBA0S+280763デフォルトの名無しさん
2014/10/31(金) 20:05:17.80ID:fvAGO10b題名と著者を晒せ
0764デフォルトの名無しさん
2014/10/31(金) 22:06:43.81ID:9IkTS5mD0765デフォルトの名無しさん
2014/11/01(土) 00:43:45.89ID:GSPeP9Igchar data;
struct symbol_t *next;
}sym_t;
sym_t *insert(sym_t *prev){
sym_t *new;
if ((new = (sym_t *)malloc(sizeof(sym_t))) == NULL)
puts("error");
new->next = prev;
prev = new;
return new;
}
int main(){
char c;
sym_t head, *new = NULL;
head.next = NULL;
while ((c = getchar()) != '\n'){
new = insert(head.next);
new->data = c;
}
for (new = &head; new->next != NULL; new = new->next)
printf("%c\n", new->next->data);
return 0;
}
リストの挿入をしたいのですが、上記のような関数を作った場合うまく動きません
どこがおかしいのか教えてください
0766デフォルトの名無しさん
2014/11/01(土) 00:58:18.94ID:PUzzze1L自分がどういう動作をするプログラムを望んでるか分かってたらこうならない
0767デフォルトの名無しさん
2014/11/01(土) 01:40:42.64ID:tsG7FyjXちゃんとしたコンパイラで警告レベルを上げてプログラミングしよう。
コンパイラが指摘してくれるような問題がごろごろしているぞ。
0768デフォルトの名無しさん
2014/11/01(土) 11:37:14.62ID:OvKWG/6Pスタック下位
関数の引数
auto変数
スタック上位
とスタックに積んでいるようです。
また、main()内、ediにはargcの値、rsiにはargvのアドレスが入っているのですが、
これらのレジスタはmov命令なしに最初から値が入っています。
spもbpも最初から値がセットされているようです。
mov命令なしにレジスタに値が入っているのは、コンパイラが自動的に割り当てたからでしょうか。
0769デフォルトの名無しさん
2014/11/01(土) 12:08:51.45ID:nCE7+pHe0770デフォルトの名無しさん
2014/11/01(土) 12:21:46.77ID:OvKWG/6P0771デフォルトの名無しさん
2014/11/01(土) 12:25:43.78ID:5KQC2GDp「C言語 スタートアップ」でGoogle先生に聞いてみよう
0772デフォルトの名無しさん
2014/11/01(土) 12:35:55.56ID:OvKWG/6Pありがとうございますm(_ _)m
0773デフォルトの名無しさん
2014/11/01(土) 14:13:47.67ID:BAlmKsTx構造体のメンバに
int num[];
みたいな配列って入れられないんですよね?
0774デフォルトの名無しさん
2014/11/01(土) 14:17:45.47ID:woVuP3aC配列は使えると思うが、要素数を未指定でやりたいってことをいってんのかな?
ポインタで代用すれば?
0775デフォルトの名無しさん
2014/11/01(土) 14:23:33.07ID:nCE7+pHeflexible array memberはC99から
0776>>773
2014/11/01(土) 14:23:47.45ID:BAlmKsTx普通に
int num[5];みたいにあらかじめ宣言が必要なんですね
ポインタで代用というのは?
int *num;
にして
kouzoutai.num[]={3,3,2,2,2,2};
ってやるんでしょうか
0778デフォルトの名無しさん
2014/11/01(土) 14:43:05.33ID:51i1DmKj0779デフォルトの名無しさん
2014/11/01(土) 14:43:07.62ID:PTQBgk6Uこんな感じでしょうか
http://ideone.com/ExVwre
0780デフォルトの名無しさん
2014/11/01(土) 15:07:27.43ID:nCE7+pHe設定変えればC99は使えるはずだが、
http://www.eclipse.org/forums/index.php/t/67870/
どっちにしろmallocは使うぞ
自動変数に置いても後ろの分の領域が無いからな
http://melpon.org/wandbox/permlink/VtsBgcBjDuTaD1l0
0781>>773
2014/11/01(土) 15:14:08.34ID:BAlmKsTx聞かなきゃ知らないまま何年も行ってそう
0782デフォルトの名無しさん
2014/11/01(土) 19:51:08.04ID:vp2e+aGxまず、コンパイルして得た結果をリンクする、という概念は大丈夫か?
次に、リンクするものは、ソースのオブジェクトの他、ライブラリ、そしてスタートアップがある点はどうか
昔のコンパイラはリンク時にスタートアップルーチン+ソースのオブジェクト+ライブラリを陽に指定してリンクしていた
最近はある意味、上記過程はブラックボックスの中に入ってしまって意識されないが、ある意味あまりいい傾向ではないかもしれないね
0783デフォルトの名無しさん
2014/11/01(土) 20:30:48.01ID:3nVvYlYVまさしく今そのブラックボックスに興味持って中を勉強中なんでは?
コンピュータ自体がブラックボックスの宝庫なんだから
ブラックボックスを作れる人が絶滅しない限りは今まで通りどんどんブラックボックス化していいと思う
0784デフォルトの名無しさん
2014/11/01(土) 22:36:59.27ID:fq7f8slF0785デフォルトの名無しさん
2014/11/02(日) 10:21:00.09ID:FPvqJpqA0786デフォルトの名無しさん
2014/11/02(日) 10:29:26.94ID:vxEoPS2x0787デフォルトの名無しさん
2014/11/02(日) 12:49:15.79ID:8hv0bURA0788デフォルトの名無しさん
2014/11/02(日) 13:04:07.52ID:zCm1VvUyこうしとけ
scanf("%5s%*[^¥n]", str);
getchar();
0789デフォルトの名無しさん
2014/11/02(日) 13:27:14.42ID:8hv0bURA動きました!ありがとう!
けど意味わからんと調べてみたんですが元のコードだと切り捨てた後の入力が入力ストリームというのに残ってて挙動がおかしかったってことでいいですか?
0790デフォルトの名無しさん
2014/11/02(日) 13:55:26.20ID:zCm1VvUyどういう風に挙動がおかしかったのかがわからないけど、
>>788に変えて意図通りに動いたなら理由はそゆことです
0791デフォルトの名無しさん
2014/11/02(日) 16:17:17.49ID:TOrV8LyY発掘するまでもなく設計資料は残ってるんだし、たいして難しいもんでもないし
0792デフォルトの名無しさん
2014/11/02(日) 16:38:27.82ID:8hv0bURAうまく特定できなかったけど次にscanfでたら同じ文字列が勝手に入ってたりって感じでした
ありがとうございましたー
0793デフォルトの名無しさん
2014/11/03(月) 00:11:29.43ID:Sl9Vim3v小数点の数を文字列に変換しようとして次のようにコードを打ちました。
char str[5];
sprintf(str, "%f", 3.14);
ところが文字列strには「?」しか格納されていません。
おかしいなと思い
sprintf(str, "%d", 314);
と打ってみましたがこれは問題無く「314」と格納されていました。
最初のは何が問題でしょうか?ちなみに%f以外にも%gとか%lfとか
試しましたが全て「?」でした。
0794デフォルトの名無しさん
2014/11/03(月) 00:19:31.01ID:wj4A8VFWstr[32]ぐらいにしろ
0796デフォルトの名無しさん
2014/11/03(月) 00:26:48.18ID:Kt2/HQpK浮動小数点の扱えるまともな環境なの?
0797793
2014/11/03(月) 00:31:15.57ID:Sl9Vim3vAVRというマイコンがあるんですがそのマイコン用にAtmel Sudio 6という統合開発環境が用意されています。
C言語もサポートしていてそのC言語でプログラムを書いています。
浮動小数点も問題無く扱えるはず・・・なんですが・・・
0798デフォルトの名無しさん
2014/11/03(月) 01:11:38.41ID:J1ye0ZX1>sprintf(str, "%f", 3.14);
sprintf(str, "%4.2f", 3.14);
とか指定したらどうなる?
0800デフォルトの名無しさん
2014/11/03(月) 01:14:11.91ID:ZMCFj896atmel studio 6 printf float
ぐぐれよ
http://foma7.exblog.jp/13595062
0801デフォルトの名無しさん
2014/11/03(月) 01:14:35.63ID:wj4A8VFWsprintfのソース見てみたら
0802デフォルトの名無しさん
2014/11/03(月) 01:15:22.37ID:wj4A8VFWデフォルトじゃ表示できないだけだったか
0803デフォルトの名無しさん
2014/11/03(月) 01:15:58.11ID:Kt2/HQpKなんでそういう大事なことを最初に書かない?
マイコン系で浮動小数点使うのはおすすめじゃないが、
どうしても使いたいならそれなりに調べろ。
http://stackoverflow.com/questions/22526319/floating-point-value-not-being-displayed-using-printf-function
これか、だめなら avr printf floating でぐぐれ。
0804793
2014/11/03(月) 01:31:10.83ID:Sl9Vim3vそういうことでしたか!
実数表示処理用のライブラリを指定しないといけないというのは初耳でした。
ありがとうございましたm(_ _)m
0805デフォルトの名無しさん
2014/11/03(月) 01:38:49.61ID:TAxV/Jyl>sprintf(str, "%d", 314);
この関数の第3引数は、
"314"とクォーテーションで囲んでいないから、整数型か?
>sprintf(str, "%f", 3.14);
整数型なら、3.14のような実数型は渡せないのでは?
0806デフォルトの名無しさん
2014/11/03(月) 01:42:19.92ID:ZMCFj896"%d", 314
"%f", 3.14
0807デフォルトの名無しさん
2014/11/04(火) 21:40:09.42ID:yP9wlV1Da ? b : c ? d : e ・・・(1)
下記のどちらで解釈されるかを調べたんですが、
a ? b : (c ? d : e) ・・・(2)
(a ? b : c) ? d : e ・・・(3)
書いてあるページが見つかりません。
mingwのgccでは(2)になったんですが他のコンパイラでもこうですかね?
0808デフォルトの名無しさん
2014/11/04(火) 21:44:24.46ID:0eOV+naS0809デフォルトの名無しさん
2014/11/04(火) 21:51:27.45ID:Dsoa1rcKhttp://www.bohyoh.com/CandCPP/C/operator.html
条件演算子は右結合なので、(2)となります。
0810デフォルトの名無しさん
2014/11/04(火) 22:27:01.89ID:ZDlm4Njmそれは危険な発想。
0811デフォルトの名無しさん
2014/11/04(火) 22:33:00.92ID:yP9wlV1Dありがとうございます。
検索のキーワードが分かったら結構ゴロゴロ >>807 見たいな例が見つかりました。
スレ汚しすいません。
0812デフォルトの名無しさん
2014/11/05(水) 02:51:07.75ID:UfxTy9YTMac OSX(10.8)でC言語でソフトをつくりたいと思っています。
ソフトはGUIでもCUIでもかまいません。
急ぎで実装と考えるとCUIになるかとは思いますが・・・。
そのソフトやりたいことは、
起動させているQuickTimePlayer10のウィンドウを
指定の座標で、指定の大きさにしたいのです。
ソフトの機能はそれだけです。
これを急ぎでつくりたいのですが、Macでのプログラミング経験がなく・・・。
WindowsであればC/C++でWin32APIを2年ほど色々と触ったので
そこらへんは分かるのですが、Macの場合は何をどうすればいいのか
まだ分からないことが多すぎる状態です。
急ぎなので、何を覚えて、どういう実装方法にすれば
一番早く目的のプログラムを作れるかをご教授いただきたいです。
検索用のひとことでもかまいません。宜しくお願いします。
0813デフォルトの名無しさん
2014/11/05(水) 02:59:37.98ID:UfxTy9YThttp://7ujm.net/C++/EnumWindows.html
ここらへんが近いです。他プログラムのウィンドウサイズを変えるです。
0814デフォルトの名無しさん
2014/11/05(水) 03:31:56.52ID:UfxTy9YT手法としては、QTが起動していなくてもかまいません。
要はプログラムによって目的の動画ファイルを
指定の座標に指定のサイズで起動させる。
という機能でもかまいません。
成し遂げたい機能は
指定の動画を、指定の座標に、指定の大きさで配置
です。動画が既に起動しているかどうかはあまり重要ではありません。
今のところ
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[])
{
int ret=0;
ret = system("open /Users/maxi/Desktop/NP/1030.mp4");
return 0;
}
まぁ、あまりMac関係ないですが、これで起動はさせることができます。
引数で座標と大きさ指定できれば一瞬で解決するのですが・・・
0815デフォルトの名無しさん
2014/11/05(水) 04:15:14.66ID:UfxTy9YTというか、実現できました。短い時間でしたがお付き合いいただきありがとうございました。
では。
0816デフォルトの名無しさん
2014/11/05(水) 13:48:12.31ID:TxicaWjv「私は低レイヤーで作業できることに魅力を感じて〜」
とか
「より低レイヤーで開発しやすい〜」
とか低レイヤーって言葉聞くんですけど、つまり低レイヤーって
アセンブラの事ですか?
0817デフォルトの名無しさん
2014/11/05(水) 13:57:57.90ID:DV/kt5feハードウェアやレジスタを直接操作したりする層(レイヤー)が下(低レイヤー)で
ドライバやOSやフレームワークなどの、下を抽象化する層が上に乗っていく(高レイヤーっていうのか?)
アセンブラか?と言われるとまあ合ってるんじゃない
0818デフォルトの名無しさん
2014/11/05(水) 13:59:29.99ID:kG4LWIhQ低レイヤーときくとOSI参照モデルとかの層の話に聞こえる
0819デフォルトの名無しさん
2014/11/05(水) 14:39:20.08ID:TxicaWjv>>818
ありがとう〜
ネットワークでおける話では
プレゼンテーション層が高レイヤーで
物理層が低レイヤーなのかな?
0820デフォルトの名無しさん
2014/11/05(水) 15:29:58.99ID:Fpn6fvq+まあそういうこと
0821デフォルトの名無しさん
2014/11/05(水) 20:09:24.41ID:+x9XCqU/OS やドライバが低レイヤーだろう?
>ハードウェアやレジスタを直接操作したり
これはドライバの仕事じゃない?
0822デフォルトの名無しさん
2014/11/05(水) 20:41:00.48ID:CNahLZw/0823デフォルトの名無しさん
2014/11/05(水) 21:11:28.78ID:+x9XCqU/MS-DOS 以外でそんなことが出来る変態OSがあるのか?
0824デフォルトの名無しさん
2014/11/05(水) 21:30:30.48ID:Q1wayxmp0825デフォルトの名無しさん
2014/11/05(水) 21:40:24.67ID:CNahLZw/0826デフォルトの名無しさん
2014/11/05(水) 22:34:35.92ID:snz2pLURhttp://www.linux-cmd.com/ioperm.html
変態には同意
0827デフォルトの名無しさん
2014/11/06(木) 04:16:37.34ID:Oz7u3oJ8組込みCは駄目ですかw
OSはしょぼいのを自前で作ります
0828デフォルトの名無しさん
2014/11/06(木) 08:38:37.56ID:TlrWomysカメラの制御プログラム開発したことあるけどデバイスドライバとは言わなかったなあ制御プログラムと呼んでた
Linux搭載してるとハードウェア制御してるプログラムは全部デバイスドライバって呼んで間違いないよね
いまいち区別が分からない
0829デフォルトの名無しさん
2014/11/06(木) 12:00:23.67ID:gTT0XKv2コマンドライン引数が、よくわからないだけど
コマンドプロンプトと、何の関係があるの?
0830デフォルトの名無しさん
2014/11/06(木) 12:43:53.14ID:keBB2IB1まずアプリケーションにはウインドウを持つものと持たないものの2種類がある
後者を扱う場合の多くはコマンドプロンプトを使う
そしてC言語入門では後者しか扱わない
そのサイト一見優しそうだが予備知識の説明がすっぽり抜けてるな
0831デフォルトの名無しさん
2014/11/06(木) 12:47:39.00ID:+waWq91kそのサイトは初心者には判断できない間違いが多く含まれている。
従って、そのサイトで勉強することはお勧めできない。
0832デフォルトの名無しさん
2014/11/06(木) 12:48:01.04ID:dIsyhXfCドライバなんだからデバイスに指示するプログラムだよ
デバイスの中で動くソフトは制御プログラムとかファームウェアとか呼ばれることが多い
カメラの制御プログラムの開発してて、この区別がつかないとか、終わってるぞ
0833デフォルトの名無しさん
2014/11/07(金) 22:52:50.48ID:iSwb40qE0834デフォルトの名無しさん
2014/11/09(日) 22:35:07.81ID:4o+EWYj20835片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/11/09(日) 22:37:45.14ID:XU91kGr50836デフォルトの名無しさん
2014/11/09(日) 23:28:25.66ID:soX2Kmcs意味ないけど。
絶対に>>834がやりたいことじゃない。
switch(x)
{
case 2<3:
...
}
0837デフォルトの名無しさん
2014/11/10(月) 00:26:12.55ID:CRSPUJgn#include <stdio.h>
int main(void) {
int i = 9;
switch (i) {
case (1?9:2): printf("aaa\n"); break;
}
switch (i) {
case (0?2:9): printf("bbb\n"); break;
}
return i;
}
0838デフォルトの名無しさん
2014/11/10(月) 07:51:52.04ID:oJxK98s80839デフォルトの名無しさん
2014/11/10(月) 15:49:21.93ID:usZuxDGK0840デフォルトの名無しさん
2014/11/10(月) 15:55:29.67ID:rT7F8QxPそれが可能っていうところが
0841デフォルトの名無しさん
2014/11/10(月) 16:45:45.62ID:PTGniR9Vこのプログラムの出力が0xff,0x00,0x00,0x00にならない理由を教えてください。
0842デフォルトの名無しさん
2014/11/10(月) 16:53:07.85ID:8QediavH関数の引数として解釈されるときに、引数は最低でもintのサイズまで拡張されるので
printf("0x%x\n",(int)-1)と同じになっている
(int)-1は0xFFFFFFFF
unsigned charにすれば、0xFFは-1ではなく255として解釈されるので、intになっても255のままであり、printfの結果も0xFFになる
http://ideone.com/YUZ415
0843デフォルトの名無しさん
2014/11/10(月) 17:07:23.03ID:PTGniR9Vありがとうございます
引数がintのサイズまで拡張される、重要ですのでメモっておきます
0844デフォルトの名無しさん
2014/11/10(月) 18:12:00.78ID:PTGniR9Vと、確かにesiにffが拡張されて(fffffff)ロードされて、printf()に渡されていることがわかりました。
ありがとうございましたm(_ _)m
0845デフォルトの名無しさん
2014/11/10(月) 18:41:26.27ID:8QediavH検索ワードは汎整数拡張とか整数拡張とか
0846デフォルトの名無しさん
2014/11/11(火) 20:17:36.43ID:Ck5u9kVe0847デフォルトの名無しさん
2014/11/14(金) 02:29:09.43ID:3ASGNoMRsigned long long に最小値を入れると、
warning: integer constant is so large that it is unsigned
っていうのが出るんだけど、原因わかる人いませんか?
0848デフォルトの名無しさん
2014/11/14(金) 02:54:33.17ID:LuzGjT1/ありましたが、言ってることもコメントもよくわかりません。
http://d.hatena.ne.jp/saitodevel01/20110321/1300685958
特に、
>関数、変数等の管理の都合で、一つのソースファイルに対して
>1つのヘッダーを用意し、そのヘッダーに定義をまとめる現場もあるんですよね。
>外部参照しているものなのか、完全にローカルなものなのかを明確にすることと、
>一つのファイルで管理したい、という考えのところだと、ヘッダファイルに
>定義は詰め込む感じですね
とか
0849デフォルトの名無しさん
2014/11/14(金) 08:56:50.25ID:PAxv0h4N実際にそのコードを貼ってごらん。
# まさかとは思うが、0と0Lと0.0と0.fの違いが分かっていない悪寒。
0850デフォルトの名無しさん
2014/11/14(金) 08:59:26.32ID:PAxv0h4N私も分からん。
原則、ヘッダに定義は書かないで宣言の実にするべきだと思うが、
そうではない現場のことを言っているのなら無視すればいい。
つーか、Hatenaなんだから自分で聞けや。
0851デフォルトの名無しさん
2014/11/14(金) 09:01:28.41ID:NoejJarlローカルなものは.cにおいてますね
.hにローカルなものおいてるのは見たことないないかな
ローカルなヘッダーファイルを作ってるとかかな
0852デフォルトの名無しさん
2014/11/14(金) 09:23:59.43ID:eD2UgsYu複数ファイルからインクルードするならヘッダに書けばいいし
一つの.cファイル内でしか使わないならその中にstaticでかいとけばいいし
分かりやすくするにはどうしたらいいかということを自分で判断できるようになればおのずと答えはでる
結論としてはもっとプログラムを書いて分かりやすいプログラムになるようにするにはどうしたらいいかということを考えるべき
0853デフォルトの名無しさん
2014/11/14(金) 09:26:19.60ID:3ASGNoMRC言語始めたばかりなんであんま理解できてないかもです・・
コードはこれです↓
signed long long x3の宣言のところでwarningが出てしまいます。
#include<stdio.h>
volatile signed long long x4 = 1LL;
int main(void) {
unsigned long long x1 = 1LLU;
signed long long x2 = 1LL;
signed long long x3 = -9223372036854775808LL;
volatile unsigned long long x5 = 109690884550LLU;
x5 = (((x1+x2)+x3)+x4);
if (x9 != 9223372036854775811LLU) { printf("NG\n"); } else { ; }
return 0;
}
0854デフォルトの名無しさん
2014/11/14(金) 09:27:50.38ID:3ASGNoMRif (x5 != 9223372036854775811LLU) でした。
すみません。
0855デフォルトの名無しさん
2014/11/14(金) 11:15:44.32ID:+rkmRu6a組み込みソフトの分野だと分からんでもない。
専用のヘッダー、例えばram.hとかを作って使用する変数すべて、というか全てのRAM領域のアドレス(〜1KByte程度)を
マッピングしたファイルを作り、すべてのcファイルで共有することをやったことはある。
変数宣言の際にすべて先頭に特別な識別子、例えばEXTERNなどを付与しておき実体宣言と外部参照宣言は
マクロで切り分ける。
例えば、
#ifdef RAMDEFINE
#define EXTERN
#else
#define EXTERN extern
#endif
RAMDEFINEは何処かで1回のみ宣言して、このヘッダーを取り込むことで変数の実体の定義を行う。
(ヘッダーに対応させてram.cとかが分かりやすい)
まあ、OSも何もなくて全てを自前で準備しなければいけない小規模組み込みソフトの世界でのみ使えるテクニックだとは思うけどね。
蛇足だけど、組み込みソフトの分野では使用するチップによってはメモリアドレスによって、使用できるアドレッシングモードや
所要クロック数が異なることがあるため、メモリマップそのものを自分で全て把握して管理しないといけない。
変数を一つのファイルに纏めるのはアドレス管理を容易にするため。場合によってはvolatile宣言も必須。
0856デフォルトの名無しさん
2014/11/14(金) 11:55:59.25ID:qPlOgKHisigned long long x3 = -9223372036854775807LL - 1;
ここを読むといい(かも)
http://www.kijineko.co.jp/tech/creintro/integer-representation.html
0857デフォルトの名無しさん
2014/11/14(金) 16:54:30.91ID:9h3dP9ft複数の *.c で参照する内容を *.h に記述すると考えればいいのでは?
こういうときに仮定義は合理的なんだけれども、あまり賛同してもらえない、extern は要らない子!
0858デフォルトの名無しさん
2014/11/14(金) 23:01:47.78ID:jkhIdRmyPICみたいにメーカーのお膳立てがしっかりしていると
アドレスも一々調べないで済むし。
0859デフォルトの名無しさん
2014/11/15(土) 00:33:25.90ID:oIW00eXK読んでみます!!
ありがとうございます。
0860デフォルトの名無しさん
2014/11/15(土) 02:00:33.84ID:AgCJAqY5この本でそのブログの人とだいたい同じことを言ってる。
この筆者も組み込み関係みたいで、ひとつの*.cソースにひとつの*.h
でというやり方。グローバル変数はexternで、ヘッダーに出さない関数はstaticで。
C言語 入門書の次に読む本 [改訂新版]
http://www.amazon.co.jp/dp/4774146129/
0861デフォルトの名無しさん
2014/11/15(土) 02:08:31.40ID:6Z/ZPh8x0862デフォルトの名無しさん
2014/11/15(土) 03:28:50.05ID:mJKZ+fx9家電分野とかだとコスト至上主義で、ROM容量が数KB、RAM容量1KB未満とかで
入出力ポート数や内蔵タイマ数に特化した上にLCDやモータドライバなどの
特殊機能を取り込んだチップが普通に使われてる。
汎用のOSやチップとか使えたものじゃない。
0863デフォルトの名無しさん
2014/11/15(土) 09:04:40.16ID:qc7doK9Y家電系組み込みエンジニア発見。先の発言してた人と同じ人かな。
昔、同じようなことしてたことがあるから、大体やっていることは想像できる。
複数のタイマを並行して走らせて、外部の制御対象のデバイスのタイミングに合わせて
内部割り込みを発生させ、タスク管理でもしてるのだろう。
以前はリソースの制約が厳しいので、メモリを1バイト単位、処理時間を1クロック時間単位で
調整していた記憶がある。
最近は、やり方も変わっているのかと思っていたがあまり変わってないのだな。
0864デフォルトの名無しさん
2014/11/15(土) 10:57:51.63ID:lm0Ap3/Wそのチップのコストダウンによっていくら安くなり
それによる1点特化の開発コストアップによりいくら高くなってるのか
ホントに安くなってるのか?ということ
0865デフォルトの名無しさん
2014/11/15(土) 11:02:14.03ID:BCiMTvXDもっと低レベルな泥臭いことやらないと
0866デフォルトの名無しさん
2014/11/15(土) 11:30:27.15ID:mZUmkatx0867デフォルトの名無しさん
2014/11/15(土) 11:32:50.73ID:BCiMTvXDツールに使われてる人、多くなったし
説明しても...
0868デフォルトの名無しさん
2014/11/15(土) 11:34:50.75ID:2nz92jze組み込み系だと、扱う対象が外部デバイスだけだからタスクと言ってもそれ程大層なものじゃない。
単に処理モジュールを切り替える程度。
ただ、廉価版とはいえリアルタイム制約が厳しい組み込み系チップは、内部に複数のレジスタセットを持っていて
スタックを介さずに実行環境を切り替えるなど、意外にタスクスイッチングの機能は優秀だったりする。
0869デフォルトの名無しさん
2014/11/15(土) 11:36:33.44ID:BCiMTvXDやってる人が優秀なのかも
0870デフォルトの名無しさん
2014/11/15(土) 13:09:32.42ID:KvmYAgyz例えばテレビの販売台数は 40万台/月ぐらい
シェア 10% で一年売れば約 50万台
10円安く作れれば 500万の利益だから
0871デフォルトの名無しさん
2014/11/15(土) 14:02:12.91ID:vYFtI7/G相対的なものじゃなくて絶対なものだと思うよ
0872デフォルトの名無しさん
2014/11/15(土) 14:49:13.69ID:ZvNVTtLDチップ単体のコストというよりは、システム全体のコストとのバランスだな。
大抵、ハードウェアの開発コストとソフトウェアの開発コストはトレードオフの関係になることが多い。
新しいLSIの採用と周辺回路の設計を行ったり、メカ周りの金型を起こすより安上がりに済むと判断すれば、
チップを含め新しくソフトを開発することによって(ソフト)開発コストが増加することになっても、
製品としては安くなる。
チップそのもののコストは安いに越したことはないがあまり大きな意味はない。
大抵の場合、現場ではハードウェアの付けをソフトウェアが払うことになる。
現場の身分制度を比喩した
「士農工商・メカ・エレ・ソフト」
の言葉がこの現状をよく示している。
0873デフォルトの名無しさん
2014/11/15(土) 16:08:35.76ID:lm0Ap3/W突貫工事甚だしそうだな
確かにチップ以前に周辺HWのコストも関係してきそうなのは少しわかった
でもチップもなぜか安くしたがってその結果ソフト開発費が膨れてるよなあ
0874デフォルトの名無しさん
2014/11/15(土) 16:27:23.06ID:ZvNVTtLD結果は余裕のない開発になり、手直し、後戻りなど現場が耐えられなくなって、人件費などの間接費が当初の見積りより膨れ上がる、と。
分かってはいるけど止められない、まあ、経営側のリスク管理の甘さだわな。
0875デフォルトの名無しさん
2014/11/15(土) 17:30:43.92ID:kPlUCcYE趣味工作でも汎用OSはめんどい。
汎用OSが動作する最小単位がモジュール化出来てないと基板設計からやるハメになるし、
Linuxくらいまで行くとタイミング制御とかめんどくさくなるからワンチップマイコンのほうが楽。
というか>>858は汎用OSが楽とか使いやすいと言ってるわけじゃないと思うんだが。
>>864
汎用OS使うと状態遷移が管理しきれなくなってテストのコストが膨大になるし、
8ビットマイコンとか個人でも数十円で買えるんだから、業務で仕入れたらもっと安くなるだろ多分。
汎用OS走らせられるほどのチップや周辺機器はそんなに安くない。
0876デフォルトの名無しさん
2014/11/15(土) 17:46:23.55ID:KvmYAgyz> テレビのソフトって500万とかそんなオーダーなのか・・・
お前馬鹿ってよく言われないか?
0877デフォルトの名無しさん
2014/11/15(土) 17:59:51.70ID:UMRs7bgoコストに関しては、数千万円の装置の制御部分なんてけちっても何の足しにもならないよ。
PICにしろ他のワンチップCPUにしろ、メモリ量に関わらず数出ているものは安いし。
数出ないものは何年間生き延びるか分からないから怖くて使えないしね。
0878デフォルトの名無しさん
2014/11/17(月) 18:55:07.59ID:ga8uKdRQC言語の前の主流は?
アセンブリですかね
0879デフォルトの名無しさん
2014/11/17(月) 19:22:50.87ID:ACjfM/vu0880デフォルトの名無しさん
2014/11/17(月) 19:37:02.90ID:4KBshbVy最近は殆んどアセンブラと呼ぶのが主流になってると思ってた。
意外にアセンブリという言葉もまだ使われてたんだな。
0881デフォルトの名無しさん
2014/11/17(月) 20:40:36.82ID:oWS5dSpx組み込み機器で使われると言う意味でなら、アセンブラ一択だろ。JK
0882デフォルトの名無しさん
2014/11/17(月) 21:38:49.39ID:ga8uKdRQGoogle先生にはそう教わったけど
0883デフォルトの名無しさん
2014/11/17(月) 21:45:52.32ID:JjmH5hadって話になる
0884デフォルトの名無しさん
2014/11/17(月) 21:47:17.36ID:ACjfM/vuアセンブル
アセンブラ
言語ツールをアセンブラと言っていたけどいつしか言語自体をアセンブラと言う様になった。
0885デフォルトの名無しさん
2014/11/17(月) 21:57:53.43ID:ga8uKdRQいつのまに淘汰されたし
0886デフォルトの名無しさん
2014/11/17(月) 22:11:13.37ID:PRhQCGe9たぶん
C、なにそれ、美味しいの状態の人
おおかったから
0887デフォルトの名無しさん
2014/11/17(月) 22:13:01.57ID:PRhQCGe9C使って作れるマイコン少なかった
ここ10年ぐらいでは、C使ってつくれるようになったのは
0888デフォルトの名無しさん
2014/11/17(月) 22:49:47.05ID:WwamNeuQ記述そのものはアセンブラのニーモニック表記だけど、Cライクな選択構造や繰り返し構造が使えるようになってた。
0889デフォルトの名無しさん
2014/11/17(月) 22:56:50.50ID:PRhQCGe9C作らせようとしてた会社あったな
できたのかな
0890デフォルトの名無しさん
2014/11/17(月) 22:57:49.80ID:PRhQCGe9COBOLでCOBOLコンパイラとかとんでももあったようで
0891デフォルトの名無しさん
2014/11/17(月) 23:00:03.97ID:oWS5dSpxPIC見る限り、クロス開発ならCで充分だと思うけどね。
0892デフォルトの名無しさん
2014/11/17(月) 23:14:08.22ID:+nMX5TA2組み込みも範囲が広いから、業務用のプリンタとかだと、20年前からCで書いてるし
0893デフォルトの名無しさん
2014/11/17(月) 23:21:43.05ID:PRhQCGe9メインフレーム系ではまだ生き残ってることも
0894デフォルトの名無しさん
2014/11/18(火) 03:58:44.85ID:fmsMXjf6懐かしいな…確か1990年頃のトラ技かインターフェースで見た覚えが
0895デフォルトの名無しさん
2014/11/18(火) 06:06:39.69ID:gVM8kF5fそこまで遡らなくても、2000年過ぎ頃までは使われてた。
確か、当時NEC(現ルネサス)のチップの開発環境だったと思う。
その後はC言語に移行したが。
0896デフォルトの名無しさん
2014/11/18(火) 07:01:07.13ID:Tz+Y+PUH78Kシリーズか?
今までNEC、東芝、松下、富士通と色々使ってきたが
個人的には78Kシリーズが一番扱いやすかった。
扱っている内蔵デバイスの種類にもよるのだろうが。
0897デフォルトの名無しさん
2014/11/18(火) 07:09:24.80ID:9qwkdrcP0898デフォルトの名無しさん
2014/11/18(火) 07:19:42.33ID:bd7T6iURそれより、いい加減スレチなんだが。
0899デフォルトの名無しさん
2014/11/19(水) 00:26:04.30ID:44PVjppFhttp://fox.2ch.net/test/read.cgi/poverty/1416286592/
0900デフォルトの名無しさん
2014/11/21(金) 01:52:18.08ID:F9pcfIr3最近のCは組込み一択なのかな・・・・・
いや 組込みの話題多いから・・・・・
AIX(IBM製OS)はxlcというIBMが作ったコンパイラを使用してたけど、
OSの無い組込みってどこの製品を使ってるんだろうか・・・・
0901デフォルトの名無しさん
2014/11/21(金) 08:03:37.92ID:tDfQtZmKとにかく動作確認がやりにくい
VC#で作るGUIアプリみたいに実行ボタン押したら
すぐ結果が確認できるみたいな手軽さがない
プログラムをビルドしてターゲットのROMに実行ファイルを書き込んで
ターゲットの電源を入れなおすとかしないといけないそれも毎回毎回だ
画面が付いてる製品ならまだいい通信機器とか制御プログラムとか画面の無い製品は
オシロスコープで信号線を流れてる電圧をチェックして仕様書どおりか確認とかしないといけない
第一コーディングがほとんどやらない業務時間の9割はドキュメント作成と仕様検討会議とかプレゼン
俺はソースコードを読み書きしたいだけなんや
大体組み込みなんかハード屋が設計した時点でソフトの仕様もほぼ決まってしまう
テレビの画質なんかほぼLSIで決まるしソフト屋が頑張ったところで表面的な部分をいじってるだけにすぎないわ
それが面白いか俺はノーサンキューだわ少なくとも画面が出るプログラムじゃないと面白くないわ
0902デフォルトの名無しさん
2014/11/21(金) 08:28:59.91ID:iFQePu0Oだからそれが全てじゃないってば。
組み込みLinuxでセルフ開発なんてケースもあるし、
ハードの調整用パラメータをソフトで制御するケースもあるんだから
いろんな意味で的を外しているぞ。
>>900
PICとかMSPとか普通、OSなんて入れない。
そうそう、ArduinoもノンOSだな。
クロス開発だから、ノンOS環境で開発するわけじゃないよ。
って書いてて思ったが、どの途C++コンパイラを使っているなぁ。
0903デフォルトの名無しさん
2014/11/21(金) 09:07:36.45ID:6E4JnwC6いちいちターゲットのROMにプログラム書き込んで動作確認とかしてるのは趣味の電子工作だけだろ。
少なくとも業務で開発するのなら、ターゲットの試作ボードとICE繋いで開発マシンの画面上で動作確認するだろ。
当然オシロスコープ使って試作ボードが駆動するモータやソレノイドの電圧波形とか確認もするが。
>>902
AndroidはノンOSではないよ。
Linuxのカーネルをベースにgoogleがカスタマイズしたものが
その正体。
AndroidのJVMもその上で動いてる。
0904デフォルトの名無しさん
2014/11/21(金) 09:13:10.92ID:6E4JnwC6AnduinoとAndroid見間違えた。勘違い。
0905902
2014/11/21(金) 12:27:42.97ID:p7ZbghyfデジタルサイネージなんかでAndroidの開発もないではないけど、
あれはあれでJavaだなぁ。純粋なCはどんどん少なくなってくる。
0906デフォルトの名無しさん
2014/11/21(金) 12:40:56.31ID:iKlnST6s0907デフォルトの名無しさん
2014/11/21(金) 12:48:18.44ID:p7Zbghyfそれにしても、やはりCじゃないのかw
0908デフォルトの名無しさん
2014/11/22(土) 00:38:37.03ID:DH1Wp7sHArduinoはその方向でかなり手軽になってるよ。
printfじゃないので書式付き出力は出来んけど、Serial.println()でprintfデバッグみたいなことも出来る。
0909デフォルトの名無しさん
2014/11/22(土) 23:09:58.16ID:vTT4MJd/#include <stdio.h>
int main(void)
{
int cont;
do {
int no;
printf("整数を入力:"); scanf("%d",&no);
if (no % 2)
puts("その数は奇数");
else
puts("その数は偶数");
printf("もう一度? [yes...0/no...9]:");
scanf("%d",&cont);
} while (cont == 0);
return (0);
}
参考書の例文を丸写ししたプログラムなんだけど
"コンパイラに内部エラーが発生しました。
file 'do.exe' not found"
ってエラーが出てしまう。なんでかな?
0910デフォルトの名無しさん
2014/11/22(土) 23:11:31.61ID:FNFLDgFX0911デフォルトの名無しさん
2014/11/22(土) 23:24:34.72ID:vTT4MJd/どっか読み落としてんのかな
int cont = 0;
にすればいいの?
0912デフォルトの名無しさん
2014/11/22(土) 23:57:16.71ID:sSjpbQoucontを初期化しないのは余り宜しくないな。
まぁ、問題はそこにはないので、取り敢えず使ったコンパイラを書いてくれ。
0913デフォルトの名無しさん
2014/11/23(日) 00:17:41.35ID:39EBzanl0914デフォルトの名無しさん
2014/11/23(日) 01:09:12.44ID:o0fOyf3/コピペしてコンパイルしてみたが何の問題もなく
通って、実行結果もおかしくなかったぞ
0915デフォルトの名無しさん
2014/11/23(日) 01:14:50.92ID:q/BdwCC0「do.exe というファイルが見つかりません」
コンパイラの設定が間違ってるんじゃないの?
ネットからダウンロードしてインストールした?
学校のPCからコピーして持ってきたとか?
0916デフォルトの名無しさん
2014/11/23(日) 01:26:08.12ID:qpRfZ2AJえ???なんでだろ
>>915
ネットからダウンロードしました
そういえばそのままで設定いじってなかったな…
0917デフォルトの名無しさん
2014/11/23(日) 01:41:46.80ID:3jCJoN6yコンパイラによっては容認するものもあるけど、厳密にはCプログラムとしては文法的に誤りがある。
Cでは、変数宣言は全ての実行文の前に行なわなければいけない。
変数noがdo whileループ内部で宣言されているのは、C++の文法だと問題ないけど、Cの文法だと間違い。
0918デフォルトの名無しさん
2014/11/23(日) 02:23:02.91ID:o0fOyf3/そういえばそうか。でも Cygwin gcc で
gcc -Wall -ansi -pedantic をつけてコンパイルすると
#include<stdio.h>
int main(void){
for(int i=0;i<10;i++)
printf("%d\n",i);
return(0);
}
はちゃんと
エラー: 'for' ループ初期化宣言は C99 モード内でのみ許可されています
for(int i=0;i<10;i++)
と言われるのだが、上の例は言われないんだよな・・・なぜだろう
0919デフォルトの名無しさん
2014/11/23(日) 02:24:29.77ID:Pyfj4pkz$ do
し続けてないよないよ言ってるだけというオチじゃあ
>>917
あまりgccで言うstdオプション使わないから間違ってたらごめん
-std=C99でもダメだっけ?
0920デフォルトの名無しさん
2014/11/23(日) 02:29:24.70ID:Pyfj4pkzCの仕様上変数は{〜}で囲ったなかの一番上で宣言されてればいいから
void func(void){
int i=0;
printf("%d", i);
{
int j;
j=2;
}
}
とかは妥当なコード
0921デフォルトの名無しさん
2014/11/23(日) 02:44:00.56ID:QHZ/jO6T古いcであってさえ、ブロックの先頭で変数を宣言するのは問題ない。
c99であれば、ブロックの先頭である必要さえなくなる。
0922デフォルトの名無しさん
2014/11/23(日) 05:16:16.04ID:qPVLpYB92. do...while を while... に書き直す
0923デフォルトの名無しさん
2014/11/23(日) 07:14:26.32ID:fnmzg+1nソースコードの文法的なエラーとは別の問題が出てるよね
0924デフォルトの名無しさん
2014/11/23(日) 08:02:28.94ID:/RofDeyq0925デフォルトの名無しさん
2014/11/23(日) 08:17:12.17ID:YMriJYw/しかも2011年から更新止まってるし
フリーにしても、もう少しまともな環境使えよ
0926デフォルトの名無しさん
2014/11/23(日) 08:56:06.60ID:VB4k/RY70927デフォルトの名無しさん
2014/11/23(日) 09:04:17.79ID:VB4k/RY7自己解決しました。
0928909
2014/11/23(日) 09:12:02.34ID:39EBzanl>>923
それとあと日本語ポップアップで
"オブジェクト参照がオブジェクト インスタンスに設定されていません。"
とも出てたわ
>>925
検索してみて1番上の方に出てきたから大丈夫かと思って…
visual studioは重くてダメだった
0929デフォルトの名無しさん
2014/11/23(日) 09:44:33.05ID:QHZ/jO6Tなんでそうやって情報を小出しにするの?
馬鹿なの? 間抜けなの?
0930デフォルトの名無しさん
2014/11/23(日) 09:49:21.26ID:yVuYMGtk0931デフォルトの名無しさん
2014/11/23(日) 10:13:13.19ID:/RofDeyq0932デフォルトの名無しさん
2014/11/23(日) 10:53:53.94ID:FBxIR6RM仕事におもちゃ使うのが流行ってんのかねぇ
(gccの完成度の話ではなく、野良という意味)
いくら安いからってお客さんて馬鹿なのかな?
いや、メーカ品のコンパイラをずっと使ってたもんで・・・
0933デフォルトの名無しさん
2014/11/23(日) 10:55:38.70ID:FBxIR6RM>>930
こういうやつらマジ要らんわ
コンテンツから人遠ざけるだけだろ
0934デフォルトの名無しさん
2014/11/23(日) 11:03:11.40ID:yVuYMGtk「普通の入門者」は遠ざからないから安心しろwww
お前のような似非プログラマは実際必要ないから来なくなるのは正しいwww
0935デフォルトの名無しさん
2014/11/23(日) 11:12:34.87ID:LxrnNrb8何を保証してくれるのかなと思いますが
作る人のミスまで見つけてくれるとかかな
0936デフォルトの名無しさん
2014/11/23(日) 11:13:29.98ID:D8Ghfy88おれもはじめたばかりで学習C言語開発環境使ってたけど
エラーが出るからやめたよ
あのサイトに載ってる範囲のプログラムだと確か大丈夫だけど
プログラムが長くなってくるとエラーが起きるようになってきた
ただ、そのプログラム、今こぴぺして
学習C言語開発環境に貼り付けてみたけどちゃんと動いたよ
ちなみに俺はその辺の学習内容だと全く大丈夫だった
むしろ手軽に使えるから重宝してた
動的配列だったかな?ずっと学習が先に進んだあたりで
はじめてエラーが起きるようになったからvisual studioに変えた
0937デフォルトの名無しさん
2014/11/23(日) 13:00:34.14ID:Pyfj4pkzゲームでよくオプソのコード使う事例増えてるけどそれも納得行かない感じでしょ
スレチだけどjQueryも使うなって話でしょ
とりあえず情報小出しにすると答えられないと諌めてる人をコンテンツから遠ざけるとか言って
自分はフリーコンパイラ使ってる奴はアホとか自分以外の考えの人バカにしてるだけでしょ
0939デフォルトの名無しさん
2014/11/23(日) 17:46:29.19ID:0PqgWOdE「コンパイラ内部エラー」=「コンパイラのバグを踏んだ」
コンパイラを変えれる状況なら変えてしまえ。
>>912
条件分岐に辿り着く前にscanfしてるから、そっちよりもscanfの戻り値見ないことを問題視したい。
>>917
C系の変数宣言が許される場所のバリエーションは
「スコープの先頭」「ブロックの先頭←古いC」「任意←最近のCやC++等」がある。
>>909はブロックの先頭だから普通は問題ない。
>>918はfor文自体の中で、ブロックの中ではないから古いCの基準ではダメ。
>>923>>925
この手の学習用のCコンパイラやインタプリタってバギーなのが多いんだよね。
小型軽量でJIT実行できれば良いってのが大半だし、TCC使うのが一番だと思う。
>>932
GCCとかclangとかICCとか>VCとか>マイコンなどの専用コンパイラ>胡散臭い学習用Cコンパイラ
個人的な評価だけど…マイコンメーカが自社製品用に作ってるコンパイラは余り信用出来ない。
メーカ製だとユーザ少ないし腰も重いことが多いが、オプソの方は何人かがバグを踏めば修正が入る。
まぁ一度メーカ製コンパイラのバグで痛い目見るといい。アセンブラですら信用ならんからな…
>>935
バカ高いサポート契約結んでれば、自社製品のバグを踏まないように顧客のコードに修正指示を出してくれるんじゃないかな。
そして//コメント禁止とか名前の文字数制限とかの腐れたコーディング規約が生成される…と。
0940デフォルトの名無しさん
2014/11/23(日) 18:59:08.21ID:fnBJfGZE0941デフォルトの名無しさん
2014/11/23(日) 20:27:58.30ID:QHZ/jO6Tgccを否定している人達は現実が見えてないとしか思えない。
0942デフォルトの名無しさん
2014/11/23(日) 20:44:21.17ID:pl8PYAOzスルーでいいよ
0943デフォルトの名無しさん
2014/11/23(日) 22:06:57.11ID:fnmzg+1n0944デフォルトの名無しさん
2014/11/24(月) 00:14:05.86ID:ALHBj7yp学習用ならtccは確かにいいかも
0945デフォルトの名無しさん
2014/11/24(月) 04:28:34.07ID:ejUX+ggI0946デフォルトの名無しさん
2014/11/24(月) 05:13:35.34ID:oCsnChH4軍事だとCじゃなくてADAだったりして
0947デフォルトの名無しさん
2014/11/24(月) 07:26:20.08ID:fEDkGqiu0948デフォルトの名無しさん
2014/11/24(月) 12:41:53.42ID:vb0rebZq0949デフォルトの名無しさん
2014/11/24(月) 12:56:24.02ID:00mMx8o2インテルなど実アセンブラも拡張命令とか出し続けて無駄に機能が増えても損はないだろう。
0950デフォルトの名無しさん
2014/11/24(月) 17:22:24.44ID:+YhL1jR3スライド形式
abcdの内 bcdを3回スライド、その前にcdを2回スライド、その前にdをスライド
ってやる方法だと重複が出ます。
なので樹系図的に表示すれば重複は無いと思うのです。
どうすればいいですか?
再帰でやると、データ構造が全然分からなくなります。
再帰で配列使ったら、配列=ポインタだから滅茶苦茶になります。
0951デフォルトの名無しさん
2014/11/24(月) 17:50:38.49ID:+YhL1jR30953片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/11/24(月) 18:21:13.32ID:cxOxEmtO0954デフォルトの名無しさん
2014/11/24(月) 18:26:44.44ID:43udTiuRhttps://github.com/ampl/gsl/tree/master/permutation
0955デフォルトの名無しさん
2014/11/24(月) 18:42:27.74ID:qSgsCHeq再帰でいいとおもうよ
http://ideone.com/3CWKVR
0956デフォルトの名無しさん
2014/11/24(月) 19:24:31.49ID:dugjCC7iありがとうございます!!
でも仕組みが分からない…
教えて下さい
0957デフォルトの名無しさん
2014/11/24(月) 20:10:01.48ID:oNJsluPPハ,,ハ
( ゚ω゚ ) お断りします
/ \
((⊂ ) ノ\つ))
(_⌒ヽ
ヽ ヘ }
ε≡Ξ ノノ `J
0958デフォルトの名無しさん
2014/11/24(月) 20:33:17.07ID:qSgsCHeq関数 f は、文字列 str[] の start <= i < end の部分を入れ替えてできる順列を表示する関数です
str[] の中のデータは内部で書き換えますが、リターンするときには元と同じにして戻ります
例題の場合、最初の呼び出しでは
先頭の文字を a→b→c→d→a とローテートしながら、その途中途中で再帰コールしています
ツリーで言うなら枝が4本できたってこと。
こうして次々に再帰コールで枝分かれしていって、最後に分岐しなくなったところで表示します
0959デフォルトの名無しさん
2014/11/24(月) 20:50:31.37ID:S++9Igbs0960デフォルトの名無しさん
2014/11/24(月) 21:08:09.72ID:qSgsCHeq0961デフォルトの名無しさん
2014/11/24(月) 21:12:50.86ID:S++9Igbsどういう意味でしょうか?
どうすれば改善できるかを聞いております。
0962デフォルトの名無しさん
2014/11/24(月) 21:31:50.61ID:ALHBj7yp性能のいいパソコンを使う
総当りをやめる
好きなの選べ
0963デフォルトの名無しさん
2014/11/24(月) 21:45:36.44ID:/Xnwup+Z・諦める
も、追加で
0964デフォルトの名無しさん
2014/11/24(月) 21:50:46.08ID:VEx2A02b0965デフォルトの名無しさん
2014/11/24(月) 21:52:36.39ID:ALHBj7yp却下
0966デフォルトの名無しさん
2014/11/24(月) 22:26:51.93ID:Yz9Tit6A0967デフォルトの名無しさん
2014/11/24(月) 22:28:12.59ID:S++9Igbsいいスペックのでやっても数日かかるとおもうのですが...
>>964
総当たり以外の方法が浮かばないです
0968デフォルトの名無しさん
2014/11/24(月) 22:29:01.84ID:S++9Igbs一応最適解です
0969デフォルトの名無しさん
2014/11/24(月) 22:30:16.36ID:cxOxEmtO0970デフォルトの名無しさん
2014/11/24(月) 22:36:23.63ID:DZ0ISr8h0971デフォルトの名無しさん
2014/11/24(月) 22:39:01.46ID:ALHBj7yp時間と相談した結果の近似解じゃダメなのか
それとそのアプリ知らないんだが、簡単にでも説明とかないんだ
0972デフォルトの名無しさん
2014/11/24(月) 22:39:01.74ID:Yz9Tit6A0973デフォルトの名無しさん
2014/11/24(月) 22:59:50.33ID:SQsB+YJ2ルールがわからないよ‥
�@問題領域は 8x8?
�A上下左右どのスワイプでどの駒(□)が動くのかが今ひとつ見えない(最初の問題を解いたかぎりでは)
0974デフォルトの名無しさん
2014/11/24(月) 23:03:18.25ID:S++9Igbs少ない手数からの総当たりなので最適解は必ず見つかると踏んでおります。
ちなみに10日というのは、1秒で約900手としたときのおおよその時間です。
>>971
http://www.youtube.com/watch?v=7wi9f8VudSA/
こちらを見ていただければ理解出来ると思います。
0975デフォルトの名無しさん
2014/11/24(月) 23:07:04.50ID:84Bp5Ajb0976デフォルトの名無しさん
2014/11/24(月) 23:11:33.19ID:Yz9Tit6A障害物を通過したときの理想的な形状を定義するとか。
0977デフォルトの名無しさん
2014/11/24(月) 23:16:10.68ID:dugjCC7iローテ以外の方法ないですかね?
ローテのプログラムはすでに作りました。
樹形図を辿る方法です。
0978デフォルトの名無しさん
2014/11/24(月) 23:22:57.36ID:qSgsCHeqすまん、問題見てきました。結構難しいね。
比較的短い手数を探索して点数付けて、正解に近いいくつかを再度探索、を繰り返すのはどうかな?
0979デフォルトの名無しさん
2014/11/24(月) 23:34:59.02ID:S++9Igbs見るに堪えないコードだと思いますが、ご容赦ください。
http://codepad.org/LvK4Bk4N
0980デフォルトの名無しさん
2014/11/25(火) 00:34:23.56ID:uMipTR6D0981デフォルトの名無しさん
2014/11/25(火) 01:10:16.99ID:qBXs+9tQまずその比較的短い手数のものすら見つけることができないです。
0982デフォルトの名無しさん
2014/11/25(火) 01:18:49.04ID:uMipTR6Dいくつか候補が出てきてその候補の評価関数の出力が最もいいものを出力してるなら
得られた解が最も良いわけではなくともなんとなくよさそうな解を出力すればってことでしょ
話から察するに総当たりでやって一番初めに見つけたものを出力って感じだろうけど
いっそ遺伝的アルゴリズムみたいなサイコロ振って出た目によって適当に動かし方決めるやり方で実装してみるとか(無責任)
0984デフォルトの名無しさん
2014/11/25(火) 01:43:11.47ID:ySd7D+hFその全部の段階の形状を先に求められれば早そうだけどな。
0985デフォルトの名無しさん
2014/11/25(火) 02:07:05.26ID:rPvMoqx2並列化は?
0986デフォルトの名無しさん
2014/11/25(火) 02:46:39.96ID:uMipTR6D回転させないで直接移動させたほうが計算コスト減らないか
270度回転が必要な時なんて90度回転を3回やってから
動けるブロックだけ下に移動なんてしてるの無駄だよね
0987デフォルトの名無しさん
2014/11/25(火) 03:01:52.00ID:uMipTR6Dhttp://codepad.org/hcs2kRzk
0988デフォルトの名無しさん
2014/11/25(火) 05:57:20.17ID:fATWhlU/予想ではこのくらいのマスだったら1秒以内で解けると思うんだが。
スタート、終わりどちらから始めてもいいので、交互に一手づつ全パーンを生成して、進めた局面はキャッシュして
スタート、終わりのキャッシュは個別にもっておいて、反対のキャッシュにヒットした時が正解だ。
0989デフォルトの名無しさん
2014/11/25(火) 05:58:38.64ID:0UX0vxRLなんか違うっつーか29回目でおかしな最適解出しちゃってるやん
0990デフォルトの名無しさん
2014/11/25(火) 06:30:17.92ID:fATWhlU/http://applitown.com/wp-content/uploads/2014/11/IMG_4602-233x350.jpg
http://applitown.com/puzzle/8943
01100000
01102000
01002033
01002033
11000030
11020030
00020330
00020330
0991デフォルトの名無しさん
2014/11/25(火) 06:32:22.27ID:usPvVGxo4方向について長々と書くよりは、移動させる方向は固定してフィールド自体を回転させたほうが簡潔に書けるかと思ったためです。
>>987,989
一度最初の方は当たらなくしようと思い、10手目くらいから当たるようにしたのですがほとんど変わらず、どうせなら最初から当たるように元に戻したのですが、どこか1つの値を戻し間違えたみたいです。
そこさえ直せばちゃんと動きます。
>>988
1つのマスに1つのブロックが対応する訳ではないので、膨大な数になると思われます。
0992デフォルトの名無しさん
2014/11/25(火) 06:46:50.14ID:usPvVGxohttp://codepad.org/WlW1bUIi
0993デフォルトの名無しさん
2014/11/25(火) 06:51:44.89ID:usPvVGxo調べてみたのですが、イマイチよく理解できませんでした。すみません。
>>984
単に形状が変わっていくのではなく、さらに分裂や結合が頻繁に起こりうるので、それは難しいかと思われます。
0994デフォルトの名無しさん
2014/11/25(火) 07:31:08.00ID:KGUPIGkG0995デフォルトの名無しさん
2014/11/25(火) 09:25:20.42ID:fATWhlU/やってないけど、最大4手でスタート、エンドから10手(計20手)進める場合の局面数は、
1048576×2以内。回転で対称な配置はエンドからの展開は不要。
手数が増えるとわからないけど、そんなに時間かからない気が。
0996デフォルトの名無しさん
2014/11/25(火) 09:28:34.72ID:fATWhlU/壁にぶつかってるやつの動作が、直前にぶつかったか、ぶつかってステップ食ってるかで動きが違うか。
0997デフォルトの名無しさん
2014/11/25(火) 09:56:02.56ID:NsIg3ARf40手必要になったらもう無理だねえ
誰か実装してみてw
0998デフォルトの名無しさん
2014/11/25(火) 10:12:51.12ID:OORXmuq/0999デフォルトの名無しさん
2014/11/25(火) 10:23:56.94ID:oMA0ONCn1000デフォルトの名無しさん
2014/11/25(火) 11:22:34.75ID:/YcGydE4C言語なら俺に聞け(入門編)Part 127 [転載禁止]©2ch.net・
http://peace.2ch.net/test/read.cgi/tech/1416882087/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。