C言語なら俺に聞け(入門編)Part 131 [転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2015/11/22(日) 17:49:08.07ID:+9G59Pl/★前スレ
C言語なら俺に聞け(入門編)Part 130
http://peace.2ch.net/test/read.cgi/tech/1439071526/
★過去スレ
C言語なら俺に聞け(入門編)Part 129
http://peace.2ch.net/test/read.cgi/tech/1432674955/
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 168代目
http://peace.2ch.net/test/read.cgi/tech/1408962564/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
# サイズが大きい場合はアップローダ等を利用してください。
http://codepad.org/
http://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
【重要】
当たり前の事ですが、2chではコピペ荒らしは禁止されています
0002デフォルトの名無しさん
2015/11/22(日) 18:25:54.05ID:a00B+hc9疑問なんですが何故エクスプローラだとファイル探索に時間がかかるんですか?
N個のファイルがあった場合、全部調べても計算量はO(N)だと思うのですが、
何秒、何十秒とかかるのは何故でしょう?
C言語の文字列操作関数使ってエクスプローラに変わる機能が作りたいんですが
そもそも何故こんなにエクスプローラが使えないのか分かりません…
僕の使い方が悪いのかもしれませんが
0003デフォルトの名無しさん
2015/11/22(日) 18:26:37.05ID:a00B+hc9これ作れたら結構便利なんじゃないかと。
0004デフォルトの名無しさん
2015/11/22(日) 18:51:07.88ID:zgumCplVウィンドウ右上にある検索ボックスでの検索?
まあ何であれ自分で作ってみれば原因もわかるんじゃない
CUIで作るだけじゃ分からんかもしれんけど
0005デフォルトの名無しさん
2015/11/22(日) 18:54:04.16ID:dFORHBUS0006uy ◆Qawu9.2l1E
2015/11/22(日) 19:16:19.32ID:hFpqZnLD新規アカウント作るとその後数日間だけは速い
でも、どこかにキャッシュが蓄積されてんだろうね
少しずつエクスプローラーが重くなる
もう大容量ファイル以外はSSD推奨の流れ
0007デフォルトの名無しさん
2015/11/22(日) 19:20:17.51ID:ISFyIiRrあの検索はファイル名のみを検索してるわけじゃないから
0008デフォルトの名無しさん
2015/11/22(日) 19:29:21.11ID:vggKhYqJプログラムが完成したあたりでEverythingの存在を知って愕然とするが良い
コンマ何秒でリアルタイム検索が出来るWindows最強の検索ソフト
これ使ったこと有ったら自分でつくろうなどと言う発想は最早出てこない
>>3
Vista以降であればIExplorerBrowserってのが有るから
殆ど何も書かなくてもエクスプローラ風のファイラーが作れる
http://oldworldgarage.web.fc2.com/programing/tip0010-1_IExplorerBrowser.html
http://eternalwindows.jp/shell/explorerbrowser/explorerbrowser01.html
ツリービューがほしい場合はINameSpaceTreeControlを使うらしい
http://eternalwindows.jp/shell/explorerbrowser/explorerbrowser04.html
こちらに関しては使ったことがないので良く知らない
0009デフォルトの名無しさん
2015/11/22(日) 19:50:08.20ID:yPUHF/WVちょっと理解力の足りない子が暴れてたからね
0010デフォルトの名無しさん
2015/11/22(日) 19:53:44.91ID:yPUHF/WVむしろファイル名だけの検索に戻して欲しい
ファイルの中身を検索したい時はエディタとかでやるし
0011デフォルトの名無しさん
2015/11/22(日) 20:01:06.71ID:ISFyIiRr0012デフォルトの名無しさん
2015/11/22(日) 20:05:04.34ID:/loq94Oxそういうことにしたければそういうことにすればいいんじゃ…
VLAとは関係ないpush/pop最適化の話をやぶから棒に振っておきながら、
そんな最適化はループ状況でスタックオーバーフローを起こすと突っ込まれたとたん
話題を最初からTCCのVLAの実装の話であったかのように捻じ曲げた醜態はdatと皆の記憶に残ったであろう…
0013デフォルトの名無しさん
2015/11/22(日) 20:09:00.46ID:vggKhYqJ0014デフォルトの名無しさん
2015/11/22(日) 20:31:44.48ID:dHfinU55まだ言ってるのかよ…
マジ、お前の理解力が無さすぎ
0015デフォルトの名無しさん
2015/11/22(日) 20:41:53.91ID:/loq94OxID:dHfinU55が何と主張しようとも、>>12と次の3点が事実なわけだが…
・ループ状況におけるpush/pop最適化がうまく働くケースと、スタックオーバーフローを引き起こすケースについては漏れが述べた(特に否定されず
・VLAについて、ループ内でサイズが増える場合は都度新たな領域の確保が必要であることも漏れが述べた(特に否定されず
・gotoでいかに関数ないジャンプしようとも、VLAの開放は関数を抜ける際に問題なく行えることも漏れが述べた(特に否定されず
この上何を理解せよというのか
傷ついたID:dHfinU55の心?
>>13
(以下略
0016デフォルトの名無しさん
2015/11/22(日) 20:52:05.39ID:yPUHF/WV> VLAとは関係ないpush/pop最適化の話をやぶから棒に振っておきながら
VLA も push/pop もスタック操作であることも理解できないのかよ…
> そんな最適化はループ状況でスタックオーバーフローを起こすと突っ込まれたとたん
元々その話なんだが…
ひょっとしてスタックオーバーフローは自分が最初に指摘したとか思ってたりするのか w
> 醜態はdatと皆の記憶に残ったであろう…
確かにそうだな
誰の醜態とは言わないけどさ
0017デフォルトの名無しさん
2015/11/22(日) 20:54:00.98ID:dFORHBUS可変長配列がスタックオーバーフローの原因になり得るって、言われてみればわかる話だけど、そこに目がいかなかったからね
でも次からはその可能性も検討材料にできるので、傍観者だったけど俺は成長出来たな
0018デフォルトの名無しさん
2015/11/22(日) 21:09:49.71ID:yPUHF/WV> 可変長配列がスタックオーバーフローの原因になり得るって
いやいや、ブロックの終端で普通に解放すればいいだけ
個人的には TCC の実装がおかしいと思う
どこかのアホが約一名勘違いしてるみたいだけど w
0019デフォルトの名無しさん
2015/11/22(日) 21:12:54.40ID:/loq94Ox>VLA も push/pop もスタック操作であることも理解できないのかよ…
素人カヨ…
1. 藻前が出したpush/popはcallerが準備する(引数領域の)話
本来は領域を残すことは必須では無い
2. VLAはcalleeが中でやる話であって、対象となるスタックフレームの位置が違う
なおかつ、ループ状況かつサイズ増大する配列が複数のときは、領域を残すことが必須となる。
これらが一緒とか、TCCの話にすり替えた件といい、話の捻じ曲げはお得意のご様子で…
>> そんな最適化はループ状況でスタックオーバーフローを起こすと突っ込まれたとたん
>元々その話なんだが…
>ひょっとしてスタックオーバーフローは自分が最初に指摘したとか思ってたりするのか w
語るに落ちた?
本来のpush/pop最適化はスタックオーバーフローなんて起こしません
スタックオーバーフローを起こすぐらいなら、ループ内でSPをオフセットして帳尻を合わせるインストラクションを1発実行する方がまだマシだからだ
(>>15の箇条書きの一発目、または前スレ>>998の「ワカル」2発目
どっちがより深く理解して喋ってるのか衆目に明らかになったってカンジ?
0020デフォルトの名無しさん
2015/11/22(日) 21:23:33.30ID:vggKhYqJallocaしまくってスタックオーバーフローしましたってだけの話だろ
お前が一人で勝手にもつれさせているだけ
https://www.youtube.com/watch?v=BKorP55Aqvg
↑これの「赤い線なのに君が書いた線は青いせんじゃないか」
とかいってるやつがお前
0021デフォルトの名無しさん
2015/11/22(日) 21:32:00.55ID:/loq94Ox>>19の前半のは撤回
ループ内でサイズ増大するVLAが複数あっても、ループの終わり(そのVLAがスコープを抜けたとき)にSPリセットすれば済むわ;
それはそうとして、
>>20
んまーそんな感じやね
ただ「実体を残す事にはパフォーマンス上の理由がある。 」と言い出した
(SPリセットしないことを言い出した)のは前スレの>966であって漏れジャナーイ
0022デフォルトの名無しさん
2015/11/22(日) 21:35:19.68ID:zgumCplVでも今回は一人だけおかしい側だったから動画の状況とは違うな
0023デフォルトの名無しさん
2015/11/22(日) 21:50:13.11ID:zgumCplV3次元空間なら3本お互いに直角にできる
もっと多い次元の空間とか考える方向があるのならもしかして7本もできるのかも?(よくわからん)
背景色と当てる光の色をうまくすれば緑のインクで赤い線を書くこともできるような気がしなくもない
と思ったが緑のインクの時点で赤い光は吸収されるからどう頑張っても無理か
0024デフォルトの名無しさん
2015/11/22(日) 21:57:25.25ID:yPUHF/WV> なおかつ、ループ状況かつサイズ増大する配列が複数のときは、領域を残すことが必須となる。
はあ?
何のために領域を残すことが「必須」なのか説明してからほざきなよ w
ちなみにそんなアホな主張をしてるのは君だけだから
0025デフォルトの名無しさん
2015/11/22(日) 22:01:48.36ID:yPUHF/WV> ただ「実体を残す事にはパフォーマンス上の理由がある。 」と言い出した
> (SPリセットしないことを言い出した)のは前スレの>966であって漏れジャナーイ
そいつはパフォーマンス上「やることが」あるって書いてる
「必須」と勘違いしたのは君だけ
0026デフォルトの名無しさん
2015/11/22(日) 22:16:32.92ID:wAq+seW6#include <stdlib.h>
#include <string.h>
typedef unsigned char byte;
int main(void) {
for (size_t a = 4; a; --a) {
size_t size = sizeof(size_t);
byte b[size + a * 16];
fprintf(stderr, "%p %u\n", b, sizeof(b));
memcpy(b, &a, size);
printf("%u\n", *(size_t *)b);
}
return 0;
}
>>18も勘違いしてないか?
こんな風に"ちゃんと"可変長配列にするとgccでもアドレスずれるよ。
http://www.c-tipsref.com/words/stackframe.html の2番目の図を拝借させてもらうと、
ローカル変数領域が途中結果領域を超えてしまうから必然的にallocaし直すハメになる。
スタックに取らずにvectorみたいにヒープに取れば無問題なんだけど。
とにかく一時変数のスコープは短くってのとループ内のvlaは気をつけたほうがいい。
0027デフォルトの名無しさん
2015/11/22(日) 22:22:36.57ID:wAq+seW60028デフォルトの名無しさん
2015/11/22(日) 22:33:39.14ID:/loq94Ox>そいつはパフォーマンス上「やることが」あるって書いてる
漏れがスコープを抜けた変数の実体を残す必要は無い、と書いたのに対して
なんかスゲー剣幕で、実体を残す奴はバカいわんばかりに(実際には「アホウ」と書いてた;
「実体を残す事にはパフォーマンス上の理由がある。 」と書いてた気がするYO
ていうかやっぱあんまりVLAに関係ない発言だったのねん(そもそも>>966のときはまだbが通常の自動変数というスレの流れだったし、
0029デフォルトの名無しさん
2015/11/22(日) 22:58:13.24ID:vggKhYqJ~~~~~~~~~~~~~~~~~~~~~~~~
>なんかスゲー剣幕で、実体を残す奴はバカいわんばかりに
~~~~~~~~~~~~~~~~~~~~~
この時点で日本語としてのつながりがおかしいでしょ
他人の文章を読み取ったり表現したり論理的に考える能力が無いから
話がもつれるんだよ
0030デフォルトの名無しさん
2015/11/22(日) 23:06:28.73ID:vNSTGRzmhttps://github.com/kazz0117/LED-Displaay-Digital-Clock-Using-H8-3694F
始めてマイコンボードで作った作品です。
ソースレビューをお願いします。
29歳のアマチュアPGです。
0031デフォルトの名無しさん
2015/11/22(日) 23:34:21.20ID:/loq94Oxちょっそれtypoだから
>>28訂正
誤: 実体を残す奴はバカいわんばかりに
正: 実体を残さない奴はバカいわんばかりに
0032デフォルトの名無しさん
2015/11/22(日) 23:54:10.80ID:vNSTGRzmhttps://github.com/kazz0117/H8-3694F-Digital-Clock
これでプロとして通用する見込みがあるか判定もお願いします。
0033デフォルトの名無しさん
2015/11/23(月) 00:10:09.36ID:b98i53Mhこれぞ2chだって感じだなー
0034デフォルトの名無しさん
2015/11/23(月) 00:10:57.31ID:AALv4lAugotoでスコープ外れる時も解放しなきゃならんが、
GCCの拡張でラベルのアドレスをvoid *変数に入れた間接gotoだと、実行時までブロックの外に抜ける事が
決定しないので、解放できなくなる。
0035デフォルトの名無しさん
2015/11/23(月) 00:31:50.54ID:fxSBPtHVさっと見た感じ読みやすいコードだと思います。
気になった点としては、
1. せっかくtypedef unsigned char _UBYTEとかで型を隠してるのに使われてない
2. #define hoge 0とか1とかは可能な限りenumを使いたい
3. そのファイル内でしか使われない関数はstaticを付けてスコープを制限したい
4. 3の結果グローバルな関数のプロトタイプ宣言は.hに移す
5. main()とか若干長いのでもうちょっと短くしたい(冒頭の処理をhoge_init()にまとめるとか)
あまり細かく見てないけどこんな感じです。
0036デフォルトの名無しさん
2015/11/23(月) 00:33:56.81ID:fxSBPtHVアンダースコアで始まるシンボル名はコンパイラ側でリザーブされているので使わないように。
インクルードガードとかもね。どうしても付けたいなら末尾に。
0037デフォルトの名無しさん
2015/11/23(月) 00:50:28.55ID:m2YBTfVY>>36
見ていただいてありがとうございます。
ご指摘の改善点、のちほど適用させていただきます。
0038デフォルトの名無しさん
2015/11/23(月) 00:51:27.18ID:VAY4UJYXデュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。
例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。
設計思想は 《 RPGツクール 》 が良いかな? 他に、優れたエディター有ったら挙げてみて。
個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。
↓
エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。
↓
遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。
↓
各社TCGを再現するテストプレイ ⇒ 更に改良や修正。
↓
機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。
↑
下位版の改造および商用利用には、別途で当社との契約が必要。
さ〜て、製作ベンダー見つけよっと!ww(クス
http://wc2014.2ch.net/test/read.cgi/entrance2/1447639727/-18
0039デフォルトの名無しさん
2015/11/23(月) 07:52:00.20ID:UOHAVa5Aグラムシュミットの正規直交化ってまさにそれじゃないの?
0040デフォルトの名無しさん
2015/11/23(月) 19:33:30.67ID:1C9r5blK何故でしょうか。
最初のうちは、問題なくビルドできていたのですがヘッダファイルを追加した際に
発生しています。
なので、ヘッダファイル関連の部分をコメントアウトしても同様のエラーになるます。
ビルドはPC上のNetBeansを使って、ラズベリーパイ上に転送してラズベリーパイ上でコンパイルしています。
ちなみにMAKEは良くわからないので、NetBeans任せです。
「main.c:(.text+0x1c): `softPwmWrite' に対する定義されていない参照です」
0041デフォルトの名無しさん
2015/11/23(月) 19:59:18.70ID:7jQqFmWDこれ、プロとして通用以前にまともに動かないだろ?
メインのループの中でLED表示もキー読み取りもしてないじゃんwww
0042デフォルトの名無しさん
2015/11/23(月) 20:19:49.24ID:4hTn3ZTz詳しく見たわけじゃないけど、タイマ割り込みを使ってLED表示とキー入力のルーチンを
呼び出しているように思える。
組み込み系のタスク管理処理だと一般的なやり方のような気がするけど。
0043デフォルトの名無しさん
2015/11/23(月) 20:27:30.18ID:+Ddm9172題材もちょっとねー
大学生でもこれぐらいは書くからねー
0044デフォルトの名無しさん
2015/11/23(月) 20:38:46.63ID:7jQqFmWDOK,OK.理解した。俺がちゃんと読んでなかったわ(恥
DispDigit()の中で自分自身をSetTimer()で登録しているから
周期的にDispDigit()が呼ばれるってわけね
わかりずれーww
0045デフォルトの名無しさん
2015/11/23(月) 20:46:54.29ID:fxSBPtHVエラーメッセージそのままだよ。定義(実装)の前に参照しようとしている。
関数ならプロトタイプ宣言を先にしておく、もしくは関数ブロック自体を使うより前に配置する。
ファイルの上から下へ流れることを思い出すべし。
0046デフォルトの名無しさん
2015/11/23(月) 20:58:25.33ID:1C9r5blKありがとうございます。
確認してみます。
0047デフォルトの名無しさん
2015/11/23(月) 23:28:30.23ID:1C9r5blK色々調べてみたら、wiringPiをgccのリンクオプションで指定しなければならなかったようです。
全然関係ない普通の関数でビルドエラーが出まくるので、原因特定に時間が掛かってしまった。。
0048デフォルトの名無しさん
2015/11/24(火) 10:58:57.10ID:tJqlgFatいいからhoge厨は二度と来るな。
0049デフォルトの名無しさん
2015/11/24(火) 11:42:48.48ID:d6tP0hfQどうかお願い致します
0050デフォルトの名無しさん
2015/11/24(火) 12:15:08.25ID:2IyJeQ15ってすれば出来るよ
0051デフォルトの名無しさん
2015/11/24(火) 12:46:17.07ID:WDNAFAErその聞き方だとCってよりアルゴリズムの話になる
どういう計算、判断をCで書きたいか書いてくれ
0052デフォルトの名無しさん
2015/11/24(火) 13:15:35.66ID:cksHvZaSまず1000円札と1円玉だけで練習
それができたら紙幣と硬貨の種類を増やしてやり直し
0053デフォルトの名無しさん
2015/11/24(火) 17:03:51.24ID:zj3pUKBAアルゴリズム(というほど大げさでもないか)の話題だが…。
C特有の整数の除算結果や剰余を得る演算子の質問かも知れぬ。
0054デフォルトの名無しさん
2015/11/24(火) 19:07:30.92ID:UGtu2+cgconst int coin[ATC]={1,5,10,50,100,500};
bool tsuri(int x, const int *stok, int *r) { // int stok[ATC], int r[ATC]
int i=ATC;
while (i--){ if (stok[i]>=(r[i]=x/coin[i])) x-=r[i]*coin[i]; else r[i]=0; }
return x==0; }
0055デフォルトの名無しさん
2015/11/24(火) 23:37:59.56ID:GksIIF6Pそれはさておき、定数6が余りにダサ過ぎる。
0056デフォルトの名無しさん
2015/11/24(火) 23:53:59.47ID:UGtu2+cg0057デフォルトの名無しさん
2015/11/25(水) 00:01:30.37ID:DK24seVo0058デフォルトの名無しさん
2015/11/25(水) 00:19:25.37ID:Sra0FKsRそのコード、例えば、おつりが400円でストックの100円玉が3枚のとき
100円玉はスキップされて一枚も使われないぞ
0059デフォルトの名無しさん
2015/11/25(水) 00:35:40.61ID:Zpo4a/J30060デフォルトの名無しさん
2015/11/25(水) 00:44:00.54ID:d8/Xbbzt0061デフォルトの名無しさん
2015/11/25(水) 01:19:42.11ID:Vd1+RMMI0062デフォルトの名無しさん
2015/11/25(水) 01:35:50.94ID:rAklTrAk0063デフォルトの名無しさん
2015/11/25(水) 01:40:29.76ID:wwtRzQvg求人情報113,957件の平均最低月給196,400円 ♬
あなたの住む街は第何位?平均最低月給はいくら??
http://jobinjapan.jp/area/
0064デフォルトの名無しさん
2015/11/25(水) 07:43:59.70ID:7xFqT66+横から失礼。
>>54 が何だか複雑な処理をしてるなぁと思ったが、
おつり用の小銭ストックの残数を調べてたのか。
すると客が金を投入して商品を選択した時点で
(商品を出す前に)おつりを払い出せるか確認しないといかんな。
「おつりが出せません。あと3本買ってください」とか
表示される自動販売機ができちゃうな。
0065デフォルトの名無しさん
2015/11/25(水) 07:48:49.66ID:vDBW4/m60066デフォルトの名無しさん
2015/11/25(水) 14:58:04.94ID:IJD2vpFF0067デフォルトの名無しさん
2015/11/26(木) 07:14:29.70ID:KF/aoe7N正しいスレはわからないためここで質問します
ふさわしいところがあれば誘導お願いします
「Cプログラマのためのアルゴリズムとデータ構造」という本を読んでいるのですが
237ページからのヒープソートのセクションで
ヒープ=半順序木を配列に実装にしたもの
というようなことが書かれていますがgoogleする限り
ヒープ=半順序木
という意味でつかわれていることが多いようです
実際のところヒープの定義はなんですか?
0068デフォルトの名無しさん
2015/11/26(木) 07:52:24.60ID:cMOPjOrthttps://ja.wikipedia.org/wiki/%E3%83%92%E3%83%BC%E3%83%97%E9%A0%98%E5%9F%9F
0069デフォルトの名無しさん
2015/11/26(木) 08:19:55.65ID:egDOh8oEこのスレには文法バカの言語オタクしかいません
というか真面目な質問を今の2ちゃんねるでする方が間違っています
まだ、某知恵袋とかで質問した方がまともな回答がもらえるでしょう
0070デフォルトの名無しさん
2015/11/26(木) 09:19:41.42ID:8/48+RLP半順序木とヒープは別物
ヒープはその本にある通り、半順序木を配列に実装したもの
Cには半順序木というデータ構造がないので、Cで半順序木を実装するにはヒープとして実装する必要がある
0071デフォルトの名無しさん
2015/11/26(木) 15:01:07.41ID:3WTjKhoCありがとうございます
しかしwikpediaには「ヒープの実装」のセクションにて
古典的な二分木データ構造を使って、二分ヒープ木を構築することは完全に可能である。
中略
しかし、より普及しているやり方は、配列に写す方法である。
以下のように、ほとんど完全な二分木の要素に番号を付けてみる。
まず、根元の要素に 1 という番号を付ける。
以下幅優先で順番に番号を振ってゆく(図を参照)。
https://ja.wikipedia.org/wiki/%E4%BA%8C%E5%88%86%E3%83%92%E3%83%BC%E3%83%97
しかし実際現場または一般では(私は学生です)
あなたや本の言う通り「ヒープ」と同義ということになっているのであれば
Wikipediaが間違っているのでしょうか?
それともヒープの実装が現実的には配列しか選択肢がないために
実質的に「配列の実装」とうことになっており学術的な定義では半順序木と等価なのでしょうか?
(はたまた私の(Wikipediaについて)日本語の解釈が間違っているのでしょうか?)
0072デフォルトの名無しさん
2015/11/26(木) 15:03:02.52ID:3WTjKhoCなんとか意味わかります?
0073デフォルトの名無しさん
2015/11/26(木) 17:49:14.82ID:bZdq0+/9配列上だとキャッシュに乗りやすくて速いだろうし
0074デフォルトの名無しさん
2015/11/26(木) 19:31:11.82ID:AipKzKjF正直何を聞きたいのかよくわからない。
ヒープソートで半順序木を使っている。
半順序木は配列で実装できる。
半順序木は配列と等価なのですか?
って言ってるんだよね。
実装するものとされるものだから、明らかに等価じゃない。
「配列以外の実装ってありますか?」とか
「配列で実装するとこういう問題があると思うんですけど・・」とか
聞きたいことを明確にすべき
0075デフォルトの名無しさん
2015/11/26(木) 19:41:04.28ID:KF/aoe7Nすみません
最終的に知りたいこと(聞きたい事)はヒープの定義です。
それにあたって本とWikipediaの説明の記述の食い違いについても説明がほしいのです
本の記述ではヒープとは半順序木の配列を使った実装だとあります。
しかしWikpediaによればその定義は半順序木と等価であるような説明(実際に半順序木とは書かれていないが)です。
0076デフォルトの名無しさん
2015/11/26(木) 19:58:00.51ID:ofQuFmMzWikipediaなら出典も書いてあるはずだからあたってみたら?
0077デフォルトの名無しさん
2015/11/26(木) 20:19:11.22ID:QqGRNt0Rセジウィックのアルゴリズム本でも読め
Wikipediaに書いてある事が怪しいと思うんなら自分で編集しなおせよ
ロックされてない項目なら
編集合戦になるかもしれないけどな
0078デフォルトの名無しさん
2015/11/26(木) 20:24:40.74ID:QqGRNt0Rhttps://ja.wikipedia.org/wiki/%E3%83%92%E3%83%BC%E3%83%97
ここを読んでるんだけど、
>ヒープ(英: heap)とは、「子要素は親要素より常に大きいか等しい(または常に小さいか等しい)」という制約を持つ木構造の事。
という定義になってる
https://ja.wikipedia.org/wiki/%E3%83%92%E3%83%BC%E3%83%97%E3%82%BD%E3%83%BC%E3%83%88
上のリンクにもここにも「半順序木」という言葉は見つからない
だから木構造でいいだろ
たまたま配列表現も可能でそちらの方が実現も楽だし速度も速いし、現在のCPUのアーキテクチャに
とっては都合がいいってだけの話
なんならヒープを二分木で書いてそれでヒープソートを書いてそれを講師に見せて「こういう事ですか」
とでも聞いてみりゃいいじゃん
00792
2015/11/26(木) 20:25:03.78ID:IxMwzK+NWindowsのエクスプローラーがファイル名だけ検索してないってどういうことですか?
ファイル名で検索してるのにそれ以外の事って検索しようがなくないですか?
例えばファイルの中身を調べても何の意味もないかと…
実際何してるんでしょう?
0080デフォルトの名無しさん
2015/11/26(木) 20:30:46.59ID:KF/aoe7Nヒープは半順序木の配列をつかった実装ということで決着です!
決まりです!ありがとうございます!
0081デフォルトの名無しさん
2015/11/26(木) 20:31:10.47ID:ofQuFmMzC言語スレだぞここは
ファイル名だけで検索してるって具体的にどういう方法で検索してるのかも書かずによく言い切れるな
00822
2015/11/26(木) 20:37:34.42ID:IxMwzK+NWinndowsの仕組みが分からないんですよね
あのエクスプローラの検索機能って何を目的としてるんでしょうか?
0083デフォルトの名無しさん
2015/11/26(木) 20:43:21.67ID:xvh9rNnd重症患者
0084デフォルトの名無しさん
2015/11/26(木) 20:49:25.70ID:ofQuFmMzファイル名だけで検索させているのかどうかも分かりませんってことか
お前の使い方が悪い
0085デフォルトの名無しさん
2015/11/26(木) 21:30:45.65ID:uW3Onm83一義的な定義は木構造だと思うけど、
配列を用いた実装が有名なので、
その実装方法や、特定の実装自体のことをヒープと呼ぶこともある。
wikipediaをwikiと呼ぶようなもんだ。
0086デフォルトの名無しさん
2015/11/26(木) 21:36:01.67ID:KF/aoe7Nすごい安心する
回答ありがとうございます!
0087デフォルトの名無しさん
2015/11/26(木) 21:37:40.68ID:R9Nnr2R1嘘こけ
木構造はtreeって呼ぶし二分木もbinary tree
お前が言ってるのはtreeとheapが同じってことだぞ、わかってんのか
0088デフォルトの名無しさん
2015/11/26(木) 21:41:03.68ID:KF/aoe7N0089デフォルトの名無しさん
2015/11/26(木) 21:54:42.91ID:uW3Onm83> ヒープ(英: heap)とは、「子要素は親要素より常に大きいか等しい(または常に小さいか等しい)」という制約を持つ木構造の事。
が正しい。ただし、実装方法や特定の実装のことをヒープと呼ぶこともある。
「ヒープ」と言って実際に何を指しているかは、文脈から判断するしかない。
0090デフォルトの名無しさん
2015/11/26(木) 21:59:33.46ID:KF/aoe7Nとは半順序木と同じことではないのですか???
0091デフォルトの名無しさん
2015/11/26(木) 22:11:00.55ID:uW3Onm83同じ
0092デフォルトの名無しさん
2015/11/26(木) 22:18:50.31ID:KF/aoe7N半順序木==ヒープってことですよね?
んで文脈によってヒープは半順序木の配列による実装を指すことがあるということですね?
0093デフォルトの名無しさん
2015/11/26(木) 22:20:50.93ID:gSiocztQ0094デフォルトの名無しさん
2015/11/26(木) 22:29:31.14ID:uW3Onm83その理解でいいと思う
ただ、「ヒープ==半順序木」が本当に第一義かというと異論あるかも。
おそらく世界で最初にプログラムとして実装された半順序木は
配列を使ったものなので、明確に区別されていなかった可能性はある。
広義と狭義だと考えといた方がいいかもしれない
0095デフォルトの名無しさん
2015/11/26(木) 22:33:27.35ID:R9Nnr2R1自分で第一義をコロコロ変えるなよw
0096デフォルトの名無しさん
2015/11/26(木) 22:35:47.83ID:R9Nnr2R1最初は配列とか知ったか振り恥ずかしいぞ
0097デフォルトの名無しさん
2015/11/26(木) 22:41:24.58ID:KF/aoe7Nありがとうございます
いまのところこれが一番他の文章と矛盾せず納得できるものです
コロコロ回って申し訳なく思いますが現状はこの形で頭に入れます
ほかの方も意見をありがとうございます
またひっくり返りそうな文章がみつかればここへ凸するつもりです!
そのときはまたよろしくお願いします!
ではおやすみなさい!
0098デフォルトの名無しさん
2015/11/27(金) 07:43:46.38ID:OSV5eH1L名称に含まれる要素全てが実装に含まれるとは考えてはいけない。
0099デフォルトの名無しさん
2015/11/27(金) 22:17:07.99ID:p4Ja58Mtあれってまさかファイル内のテキストまで検索してるんですか?
余計な事しなくていいのに…
0100デフォルトの名無しさん
2015/11/27(金) 22:39:28.89ID:TNfNeR16そのまさか
副次ストリームなんかも含めて読む
逆にアホな実装すると副次ストリームのデータ考慮しないでいろいろやらかす
0101デフォルトの名無しさん
2015/11/27(金) 23:21:25.77ID:FVkBDZy00102デフォルトの名無しさん
2015/11/27(金) 23:31:51.41ID:ncYhuR0u0103デフォルトの名無しさん
2015/11/27(金) 23:38:23.30ID:TNfNeR16え、お前まだWindows XPなの?
0104デフォルトの名無しさん
2015/11/27(金) 23:41:04.12ID:TNfNeR16Windowsのこと知らないならWindowsスレで聞いて来いよ
0105デフォルトの名無しさん
2015/11/28(土) 10:30:18.07ID:kQYUqWPa最下位の桁が0だったら省略するということをしたいです。
123.450… → "123.45"
123.451… → "123.45"
123.400… → "123.4"
123.000… → "123"
"%.2f"などではできないかと思うのですが、
これを実現できる書式はありますか?
簡単になるのなら、最後のものは"123.0"でも構わないです。
0106デフォルトの名無しさん
2015/11/28(土) 10:45:24.44ID:tW/rjk30sprintfして、
for (i = strlen(s) - 1; i > 0; i--) {
if (s[i] == '0') {
s[i] = '\0';
} else {
break;
}
}
とかじゃ駄目なの?
というか物理工学の分野だと最後の0にも意味があるから(誤差やら不確かさやらがどうたら)
省略してはいけない筈。
0107デフォルトの名無しさん
2015/11/28(土) 14:09:52.79ID:Fac7bhmL0108デフォルトの名無しさん
2015/11/28(土) 21:06:13.19ID:Net63fUyここで皆さん話されているような職人のようなCらしいことが
できなくても平気だろうか。
そもそも自分で開発はしないと思うけど、設計やテストや解析
でこのスレのような高度なことをされると、自分には理解する自信がない。
0109デフォルトの名無しさん
2015/11/28(土) 21:42:45.40ID:mRjH+OFo0110デフォルトの名無しさん
2015/11/28(土) 22:13:50.81ID:M/Wigktg> C経験はほとんど無いが、次の案件で求められてるのだけど、
> そもそも自分で開発はしないと思うけど、
君が一体なにを求められてるのかをきちんと確認した方がいいんじゃね?
0111デフォルトの名無しさん
2015/11/28(土) 22:51:51.80ID:/Rhs9J/ichar** argvとchar* argv[]が同じになる理由が分かりません。
それと
int main(int argc, char** argv) {
int a = atoi(argv[1]);
↑
この部分がわかりません。どうして*argv[1]じゃないんでしょうか?
0112デフォルトの名無しさん
2015/11/28(土) 23:15:32.76ID:Iy/WtbZ6文字ではなくて、文字列が欲しいからでしょ
…って答えでは納得してもらえないだろう事は予測している
0113デフォルトの名無しさん
2015/11/28(土) 23:25:50.43ID:/Rhs9J/iはい。分かりません。
&argv[1][0]とかいろいろやってみてます。
argvって配列へのポインタですか?
0114デフォルトの名無しさん
2015/11/28(土) 23:30:34.51ID:/Rhs9J/i*arvg[0], &[argv][1]0, *(argv + 1)
&やら*やら[]やら適当に書いて動けばよし!
ってな感じなんですよね。
どこか有益な情報へのリンクないですか?
0115デフォルトの名無しさん
2015/11/28(土) 23:40:20.50ID:KLYDsHNyhttp://kmaebashi.com/programmer/pointer.html
の"Cの宣言を解釈するには、・・・"以下を読むといいかも。
0116デフォルトの名無しさん
2015/11/28(土) 23:47:55.29ID:/Rhs9J/iありがとうございます。まさにオレのための記事ですね。
0117デフォルトの名無しさん
2015/11/29(日) 02:36:07.68ID:zxYmQd3n>ありがとうございます。まさにオレのための記事ですね。
何おぅ?!
0118デフォルトの名無しさん
2015/11/29(日) 13:19:12.38ID:AVw7OQAA知らなかった?
0119デフォルトの名無しさん
2015/11/30(月) 05:11:20.33ID:qSWjFIuy0120デフォルトの名無しさん
2015/11/30(月) 06:24:30.81ID:CAXF3MtW0121デフォルトの名無しさん
2015/11/30(月) 11:14:19.00ID:ArO4KIJP>>107
ありがとうございます。
printf()の中で指定することは諦めて、作成した文字列に対して、
「右端の文字が0なら削除」を繰り返し、最後に「右端の文字が.なら削除」を行うようにしました。
0122デフォルトの名無しさん
2015/11/30(月) 12:33:33.82ID:GeGeh89vif (privateFunc) {
privateFunc();
}
if (*privateFunc) {
privateFunc();
}
0123デフォルトの名無しさん
2015/11/30(月) 12:51:55.08ID:luHPgjr1それだけだとどちらも一般的とは言いがたい
ただLinuxカーネルなんかでよく使われるxxx_opsみたいな構造体の場合はだいたい前者
0124デフォルトの名無しさん
2015/11/30(月) 12:52:00.45ID:rAoyarnGどうがんばっても privateFuncが保持してるのはポインタだし
未設定な NULL に対して * で参照先をほぐすのは良くない手だとおもうが
実呼び出しにおいて
(*privateFunc)() を privateFunc() と記述してよいことにしてるのはその後の話かと
0125デフォルトの名無しさん
2015/11/30(月) 13:08:49.31ID:uig6cR0c0126デフォルトの名無しさん
2015/11/30(月) 13:55:47.19ID:xo2paQEJだったら前者しかないんじゃないの
0127デフォルトの名無しさん
2015/11/30(月) 16:57:30.00ID:GeGeh89vSDKやAPIが非公開にしているメソッドを実行するケースを想定しています。
0128デフォルトの名無しさん
2015/11/30(月) 17:03:32.32ID:xo2paQEJあるかどうかわからない関数名を書いたらない場合はコンパイルエラーになるし
0129デフォルトの名無しさん
2015/11/30(月) 17:04:28.41ID:rAoyarnG関数ポインタ以外の方法で提供きているのってある?
存在しない場合にランタイムが判断してエラーで終わるのとは別
0130デフォルトの名無しさん
2015/11/30(月) 17:25:45.70ID:GeGeh89v前提条件が少なくてすみません。
もともとプライベート関数としていたものを同名でパブリック宣言(extern)しています。
名称が同じであれば、古い時代の実行環境でも、存在確認さえできれば実行できるのかなと思っていたのですが。
0131デフォルトの名無しさん
2015/11/30(月) 20:07:43.96ID:luHPgjr1ポインタじゃなかったの?
コンパイルできる最小限のコードで示してよ
0132デフォルトの名無しさん
2015/11/30(月) 22:08:03.78ID:GeGeh89vこんなイメージになります。
/* libtest.c */
#include <stdio.h>
void privateFunc() { printf("ok!\n"); }
/* app.c */
#include <stdio.h>
extern void privateFunc();
int main() { if (privateFunc) privateFunc(); }
$ clang -shared libtest.c -o libtest.so
$ clang -I./ -L./ app.c -o app -ltest
$ ./app
$ ok!
0133デフォルトの名無しさん
2015/11/30(月) 22:19:36.25ID:GeGeh89v試しにlibtest.cのprivateFunc()未実装版と一緒に実行もしてみましたが、
なぜか「lazy symbol binding failed: Symbol not found: _privateFunc」という実行時エラーが発生してしまいました。
0134デフォルトの名無しさん
2015/11/30(月) 22:32:01.16ID:98iBsahC解決できなけりゃエラーなので無理。
遅延ロードは初めはスタブのアドレスにしといて初回のコールで、スタブが実際のアドレスに変更する。なので、これも無理。
dlsymで取得するしかない。
0135デフォルトの名無しさん
2015/11/30(月) 23:59:42.62ID:GeGeh89vdlsymで想定していた用途の実現が可能になりました。ありがとうございます。
0136デフォルトの名無しさん
2015/12/01(火) 06:13:33.85ID:bfm5WjOEこれでようやく家に帰れるな……
0137デフォルトの名無しさん
2015/12/01(火) 09:54:34.47ID:m5SsaW1TGUIプログラミングでの互換性チェック処理としてよく見かけるんだけど。
あれ古いバージョンのOSでもちゃんと動くのだろうか。
http://git.io/vBFBJ
0138デフォルトの名無しさん
2015/12/01(火) 18:31:09.36ID:wfTLHpyuObjective-Cだと標準的なやり方なのかも
知らんけど
0139デフォルトの名無しさん
2015/12/03(木) 21:18:23.89ID:5585omJgFILE *fp;
fp=fopen("a.txt","wb");
fprintf(fp,"ABC %02x%02x", 0x0a,0x0d);
fclose(fp);
どうして???
0140デフォルトの名無しさん
2015/12/03(木) 21:19:12.24ID:5585omJg0141デフォルトの名無しさん
2015/12/03(木) 21:24:56.13ID:/xqyH1ID出落ちすぐる…
0142デフォルトの名無しさん
2015/12/03(木) 21:28:54.62ID:q2v1B9Om0143デフォルトの名無しさん
2015/12/03(木) 21:29:50.67ID:vntsHvc00144デフォルトの名無しさん
2015/12/03(木) 21:33:46.20ID:MeAB/UFS\r\n使いなよ
0145デフォルトの名無しさん
2015/12/03(木) 21:33:54.07ID:v/Q0KO/Bこれ便利だね
まったくのスレチだけど
0146デフォルトの名無しさん
2015/12/03(木) 21:53:48.74ID:5585omJg出来たわ
0147デフォルトの名無しさん
2015/12/03(木) 21:54:15.59ID:+xl+clkyそうだとしても、そのプログラムの外で
sed 's/$/\r/'
とかする方が安全だと思うよ。
0148デフォルトの名無しさん
2015/12/03(木) 21:58:05.38ID:q2v1B9Om0149デフォルトの名無しさん
2015/12/04(金) 05:27:51.81ID:ypRhf+PQ0150デフォルトの名無しさん
2015/12/04(金) 06:15:36.49ID:GzeAUkqU0151デフォルトの名無しさん
2015/12/04(金) 08:47:13.33ID:4C4dhHoEオープンなものじゃなきゃ、中身は・・・・
0152デフォルトの名無しさん
2015/12/05(土) 00:48:35.11ID:RCWMYbfh問題あるから
a=GetProcAddress();
if(!a) goto hell;
とかQueryInterfaceなんだろ
0153デフォルトの名無しさん
2015/12/05(土) 03:01:58.22ID:NRX1k+Is0154デフォルトの名無しさん
2015/12/08(火) 12:09:23.06ID:h2gKlU3s0155デフォルトの名無しさん
2015/12/11(金) 16:54:30.37ID:VzNoaKJQ0156デフォルトの名無しさん
2015/12/11(金) 17:19:05.31ID:omtdZIcm執筆の比重としてはWeb<書籍になると思うから、書籍の方がクオリティは高くなってるはず
0157デフォルトの名無しさん
2015/12/11(金) 17:42:05.54ID:wJLmTi/k分からんことあって聞くときも、どれが分からんってポインタ示せるだろ
でもリファレンス本は一冊買っておけ
0158デフォルトの名無しさん
2015/12/11(金) 18:56:15.20ID:AuU75Yh5Webだけで十分だと思うよ
0159デフォルトの名無しさん
2015/12/11(金) 21:10:42.15ID:C8NouVc80160デフォルトの名無しさん
2015/12/11(金) 21:59:03.72ID:f+RTKPNqプログラミング自体も初心者なら本買っとけ
0161デフォルトの名無しさん
2015/12/11(金) 23:00:23.61ID:MQP/fuYv0162デフォルトの名無しさん
2015/12/12(土) 07:17:34.14ID:Ul6e92210163デフォルトの名無しさん
2015/12/12(土) 18:06:58.90ID:pNUoYZP0あとC言語を深く知りたいならK&R買っておけ。
0164デフォルトの名無しさん
2015/12/12(土) 19:00:58.75ID:VrLvS+wi昔の人はこれで勉強したんだろうが
本屋でじっくり選びながら自分に合ったのを買うといいと思うけど、最近はC言語の品揃えは寂しいだろうな
0165デフォルトの名無しさん
2015/12/12(土) 19:43:36.96ID:bw/xX943英語できるなら原書買うべきだよな
訳者がクソ
0166デフォルトの名無しさん
2015/12/12(土) 21:33:40.49ID:7G0ybzbE俺もこの本から初めて今では立派なIT奴隷さ
0167デフォルトの名無しさん
2015/12/13(日) 14:12:28.56ID:etBxJcNEあとは使ってるうちに覚えるもんだ。
0168デフォルトの名無しさん
2015/12/13(日) 15:26:12.76ID:qLuXuixr0169デフォルトの名無しさん
2015/12/13(日) 19:42:27.46ID:X0iYpvwVそういう意味では猫でも分かるのWebサイトは自分には合わなかった
勉強したのはCじゃなくてWinAPIの方だけど
0170デフォルトの名無しさん
2015/12/14(月) 01:46:39.82ID:tJK5Al3Khttps://ja.wikipedia.org/wiki/%E3%82%B3%E3%82%A2%E3%83%80%E3%83%B3%E3%83%97
0171デフォルトの名無しさん
2015/12/14(月) 02:51:02.40ID:R2ktMZMc0172名無しさん@そうだ選挙に行こう
2015/12/14(月) 11:45:30.54ID:3juNniWhできない。実行ファイルではない
0173名無しさん@そうだ選挙に行こう
2015/12/14(月) 13:25:56.38ID:vCFPKOAB不可能ではないがunexecはもう誰もメンテしてないだろうから自分で対応しなきゃならん
0174名無しさん@そうだ選挙に行こう
2015/12/14(月) 13:59:08.72ID:m5o8tph80175名無しさん@そうだ選挙に行こう
2015/12/14(月) 14:24:46.97ID:7u6mTfK6分かりません 助けて
0176名無しさん@そうだ選挙に行こう
2015/12/14(月) 14:38:11.70ID:AFi/i5CF対価として得る知識を与えるのは教師だ
教師に聞け
0177名無しさん@そうだ選挙に行こう
2015/12/14(月) 16:34:34.52ID:VJuIJuYL丸投げなら宿題スレ行け。
0178名無しさん@そうだ選挙に行こう
2015/12/14(月) 16:43:41.19ID:ZfnvEW4e実行ファイルもあれば可能ですか?
0179デフォルトの名無しさん
2015/12/14(月) 22:32:42.63ID:bvFbtQ0Rどこがおかしいのでしょうか
#include <stdio.h>
#include <ctype.h>
void myStrTrans(char *str)
{
for(;(*str=toupper(*str))!=0;str++)
;
}
int main()
{
char moji[20];
printf("文字入力-->");
scanf("%s",moji);
myStrTrans(moji);
printf("処理後の文字は、%c です\n",moji);
return 0;
}
0180デフォルトの名無しさん
2015/12/14(月) 22:36:26.89ID:vOSXDJab→ printf("処理後の文字は、%s です\n",moji);
表示のしかたが間違ったね
1文字だけを書くのなら %c にしつつ moji[0] を渡す
文字列を書くのなら %s で moji を渡す
0181デフォルトの名無しさん
2015/12/14(月) 22:44:03.62ID:bvFbtQ0R0182デフォルトの名無しさん
2015/12/15(火) 19:53:22.37ID:8itc1+dp0183デフォルトの名無しさん
2015/12/15(火) 20:01:22.58ID:3HIEMBwM0184デフォルトの名無しさん
2015/12/15(火) 20:16:41.71ID:B8igkfF6K&Rを読むといい
FILEがどういった構造になっているか書かれている
普段気にせず使っている標準関数がどう実装されているのかとかもね
勿論、Cのことは一通り身に付けてからでないと厳しいだろうけど
0185デフォルトの名無しさん
2015/12/15(火) 20:47:21.15ID:ED1k4Paq32ビット環境だったら4バイトのデータを格納しているだけの存在でしかない
0186デフォルトの名無しさん
2015/12/15(火) 22:41:33.72ID:EyQbsWt1void * x;
char *a = x;
int *b = x;
で、printf("%p %p¥n", a+1, b+1);
二つは同じになるはずだよね。でもならない。
0187デフォルトの名無しさん
2015/12/15(火) 23:07:02.03ID:qzRWqMaa誰に教わってるの?
独学?
0188デフォルトの名無しさん
2015/12/15(火) 23:11:19.46ID:EyQbsWt10189デフォルトの名無しさん
2015/12/15(火) 23:15:22.55ID:DSeHdp2+同じ席に二人は座れない。
異なるポインタ変数に同じアドレスを指定したいと言うのと勘違いしてないか?
0190デフォルトの名無しさん
2015/12/15(火) 23:21:41.74ID:DSeHdp2+189は間違ってるごめんな
0191デフォルトの名無しさん
2015/12/15(火) 23:24:12.14ID:DSeHdp2+型に応じてアドレスを計算するからじゃないか?
0192デフォルトの名無しさん
2015/12/15(火) 23:47:04.70ID:Iepi85fF型がある
p++;
アドレスが1バイト増加するか、4バイト増加するか
型によってことなる
0193デフォルトの名無しさん
2015/12/16(水) 00:17:23.55ID:/GcouSm1最適化なしで変数少し書き換えて、コンパイルして、できたファイルがどう変化したか、ちまちま調べたら、機械語の知識すこしあれば、Cがどういうものか理解しやすい、かった。
プロテクトかかる仕事以降のものではいちいちやってない。
0194デフォルトの名無しさん
2015/12/16(水) 00:28:46.71ID:Pu5ssxxv436 名前:774ワット発電中さん[sage] 投稿日:2015/12/15(火) 03:11:12.11 ID:56tRv1JH
>>424 こういうのは?
// 状態変数
typedef enum {
State1;
State2;
....
} State;
State st;
// 受信電文解読関数 戻り値は st = State1 みたいな感じで
// 動作分岐関数
void onEvent(State st)
{
switch (st) {
case State1;
// 処理1;
break;
case State2;
// 処理2;
break;
....
default:
// デフォルト処理;
break;
}
}
0195デフォルトの名無しさん
2015/12/16(水) 00:32:13.77ID:Gbc4VAtQ習うより慣れろですよ
0196デフォルトの名無しさん
2015/12/16(水) 01:21:20.63ID:/d+HK7e1a+2 b+2
でできたものとfcとかしたら簡単かと思う。
0197デフォルトの名無しさん
2015/12/16(水) 02:04:42.11ID:finNVuoB>型がある
>p++;
>アドレスが1バイト増加するか、4バイト増加するか型によってことなる
型を判定するのはコンパイラであって、
アセの段階で既に185の言うとおり。
c++などならその限りではないこともある。
0198デフォルトの名無しさん
2015/12/16(水) 02:20:33.65ID:finNVuoBint * ip;
char* cp;
((char*)ip)++;/*カッコ過剰かも知れんが一応*/
cp++;
これでまあ普通は同じ分アドレスは増える。
Cは実行時に型など判別しない。
0199デフォルトの名無しさん
2015/12/16(水) 02:23:37.62ID:finNVuoB野中って何?
0200デフォルトの名無しさん
2015/12/16(水) 02:46:19.98ID:OpCUYLL/0201デフォルトの名無しさん
2015/12/16(水) 03:10:34.16ID:finNVuoB上の情報をもってないなら
普通はもってないよ。
void * x;
char *a = x;
int *b = x;
>で、printf("%p %p¥n", a+1, b+1);
>二つは同じになるはずだよね。でもならない。
printf("%p %p¥n", ((int*)a)+1, b+1);
とかすれば同じになると思うよ。
+1の1は共にsizeof(int)、32bitなら定数4に置き換わる。
キャストしないとコンパイラは4と1に置き換える。
同じにならないのは当たり前。
0202デフォルトの名無しさん
2015/12/16(水) 03:49:03.87ID:finNVuoBすぐわかることだと思う。
(最近の(昔もか)処理系は大概できるよね)
ポインタとは何か。
Cだけやってると本質を理解できてるとは
限らない。
もしすべてのポインタ等に型情報ついてたら、
メモリ食う、実行時にチェックしたら処理速
度低下、、、。
メリットなど何もない。
0203デフォルトの名無しさん
2015/12/16(水) 05:36:56.17ID:eyla9c4jおばかさんですねえ。
ソースコードの段階で「それ以上の情報」をもってるでしょ。
オブジェクトにおちたら、
「全ての変数はsizeof 変数のデータを格納してるだけの存在でしかない」
とでも言いたいのだろうか?
C++や他の全ての言語でも同様。型情報だって単なる何バイトかのデータだよ。
0204デフォルトの名無しさん
2015/12/16(水) 06:51:48.35ID:GHcX74lGメモリイメージ上に 型情報+実体 があるもの以外は
型情報は無い (ミクロな視点)
言語仕様のふるまい的には アドレスだけじゃなく型もセットになってるべ (マクロな視点)
Cのインタープリタはどっちに見えるんだろうね
0205デフォルトの名無しさん
2015/12/16(水) 08:55:16.66ID:kWyL6TIC従って、コンパイラと同じように振る舞うと思われる。
0206デフォルトの名無しさん
2015/12/16(水) 09:18:38.63ID:GOyFzD2S0207デフォルトの名無しさん
2015/12/16(水) 09:42:21.94ID:finNVuoB>おばかさんですねえ。
>ソースコードの段階で「それ以上の情報」をもってるでしょ。
メモリ上に展開された実行形式の変数等に型などない。
あると思うなら探せばいいよ。
>オブジェクトにおちたら、
>「全ての変数はsizeof 変数のデータを格納してるだけの存在でしかない」
>とでも言いたいのだろうか?
>C++や他の全ての言語でも同様。型情報だって単なる何バイトかのデータだよ。
型情報はCには拡張機能でもないと存在しない。
(sizeofも変数ではないし。定数。)
コンパイラのみが型を必要とする。
そうしないと定数に置き換えられないものが
あるから。
ポインタ+数などもその一つ。
0208デフォルトの名無しさん
2015/12/16(水) 10:18:24.33ID:finNVuoBポインタの型が特定できないとコンパイル
できない。
逆に言えば型が必要なのはコンパイル時のみ。
同じshort* ptrに対して、
((int*)ptr)+1←ポインタにsizeof(int)加算。
((char*)ptr)+1←ポインタにsizeof(char)加算。
sizeofも一般的には数値(定数)に置き換える。
キャストもあるので型情報持たせても意味がない。
0209デフォルトの名無しさん
2015/12/16(水) 11:27:45.66ID:eyla9c4j>メモリ上に展開された実行形式の変数等に型などない。
>あると思うなら探せばいいよ。
おばかさんですねえ。
> ポインタはアドレスを格納する変数でしかない
自分でソースコードの話ふっておきながら、後付けで「実行形式」に限定ですかあ?
実行形式の変数ってなんだろ? 謎。
0210デフォルトの名無しさん
2015/12/16(水) 11:34:57.70ID:GOyFzD2S0211デフォルトの名無しさん
2015/12/16(水) 11:38:09.11ID:finNVuoBソースコード以外では型など存在しない。
コンパイルするためにのみ型は必要とされる。
constとかも同じ。
0212デフォルトの名無しさん
2015/12/16(水) 11:50:32.58ID:eyla9c4jようやくそこに辿り着いた?
そうだよ。変数とはソース上の概念でしかない。
⇩は変数について述べている。実行形式に変数なんて無い。すなわちソース上の話。
> ポインタはアドレスを格納する変数でしかない
なので、⇩は大ウソ。
> 32ビット環境だったら4バイトのデータを格納しているだけの存在でしかない
0213デフォルトの名無しさん
2015/12/16(水) 12:17:29.88ID:finNVuoB相手しないほうが良いかな。
>そうだよ。変数とはソース上の概念でしかない。
>⇩は変数について述べている。実行形式に変数なんて無い。すなわちソース上の話。
>> ポインタはアドレスを格納する変数でしかない
変数が存在しなかったら一体何ができるというのか。
>なので、⇩は大ウソ。
>> 32ビット環境だったら4バイトのデータを格納しているだけの存在でしかない
じゃあ他に何を格納してるの?
0214デフォルトの名無しさん
2015/12/16(水) 12:26:07.94ID:ZVfdq9M10215デフォルトの名無しさん
2015/12/16(水) 12:39:58.50ID:y7Ri551N何の話をしてるのかさっぱりだぜ
0216デフォルトの名無しさん
2015/12/16(水) 12:56:37.16ID:/+z9g2H6(コンパイル中のコンパイラがやっていることも考慮に入れるかもしれない)
vs
実装やコンパイル後に得られるもの(機械語等)ではこうなってるじゃん
後者の言ってることもわかるけど、前者寄りの意見でああるが、
強弁するとトラブルかなぁぐらいの弱気
Q. ポインタって何?
A. ポインタはポインタ
アドレスを格納するだけの変数ならば整数変数だけでも良いのに
言語の枠組みで別途用意してるんだし、、、、
0217デフォルトの名無しさん
2015/12/16(水) 13:11:18.23ID:finNVuoB過去のCPUはポインタ用の命令がなかった
気がする。(実アドレスが格納されてた)
仮想メモリ等を実現するためには、
必要かも知れないが、無駄が多い気もする。
0218デフォルトの名無しさん
2015/12/16(水) 13:17:22.59ID:IT3U5Wv/どういうこと?昔からmoveとかload命令はあるけど。
仮想メモリとポインタは関係ないよね
0219デフォルトの名無しさん
2015/12/16(水) 13:25:23.93ID:IT3U5Wv/JIS C規格に適合していれば、ホスト環境なら同じ
0220デフォルトの名無しさん
2015/12/16(水) 13:29:23.21ID:finNVuoB>仮想メモリとポインタは関係ないよね
仮想メモリ等を実現するためにCPUの構造が
複雑になってる。
実メモリアドレスのみを用いてのプログラミングは
不可能な環境が多い。
過去の処理系のポインタは実メモリアドレス。
0221デフォルトの名無しさん
2015/12/16(水) 13:45:42.63ID:finNVuoB実メモリアドレスが一致していた頃のこと。
メモリアクセスにバイオレーション等も
ない時代のもの。
マルチスレッド対応以前のもの。
0222デフォルトの名無しさん
2015/12/16(水) 13:55:20.86ID:AzqBkmNw0223デフォルトの名無しさん
2015/12/16(水) 13:55:59.12ID:Gbc4VAtQ0224デフォルトの名無しさん
2015/12/16(水) 14:37:21.99ID:finNVuoB0225デフォルトの名無しさん
2015/12/16(水) 14:53:29.46ID:eyla9c4jメモリ上にあるのは変数じゃなくて単なるビット列だろ。おばかさん。専門卒には高度すぎるかい?
0226デフォルトの名無しさん
2015/12/16(水) 15:04:34.70ID:finNVuoBその判別はメモリ上にあっても可能。
0227デフォルトの名無しさん
2015/12/16(水) 15:12:55.17ID:finNVuoBプログラミング言語においてのみ
変数と呼ぶのか。
0228デフォルトの名無しさん
2015/12/17(木) 01:14:09.55ID:K2MykLOH『プログラミング言語C』だけ熟読すればおk
0229デフォルトの名無しさん
2015/12/17(木) 01:17:20.63ID:K2MykLOHプログラミング言語内に限った話じゃないんじゃ…
0230デフォルトの名無しさん
2015/12/17(木) 01:41:20.16ID:ybxRpiqYK&Rの本を初心者に薦めるのは止めようぜ
0231デフォルトの名無しさん
2015/12/17(木) 02:50:14.04ID:EKc7MmCc未だ世迷言ほざいてるのか。このばかは。Wikipediaですら、
https://ja.wikipedia.org/wiki/%E5%A4%89%E6%95%B0_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
> プログラミングにおいて、変数(へんすう、variable)とは、プログラムのソースコードにおいて、扱われるデータを一定期間記憶し必要なときに利用できるようにするために、データに固有の名前を与えたものである。
と書かれているのに。
「メモリ上に展開された実行形式の変数等」がどんなにどんなに噴飯ものの発言だかわかってないんだろうな。
理解したつもりになってて全く理解してない専門卒の低学歴は性質が悪い。
0232デフォルトの名無しさん
2015/12/17(木) 10:53:20.02ID:WsxUU2ukいい本だと思うけどな
あれで分からない部分はwebで補完すりゃいい
特にコンパイル環境はwebのほうがわかりやすいからな
0233デフォルトの名無しさん
2015/12/17(木) 11:12:13.43ID:4KY33HOW0234デフォルトの名無しさん
2015/12/17(木) 11:22:24.79ID:mR3QQ7jE書籍のみでの学習ならそう思うけどサイト見られるならそれ一冊でよさそう
0235デフォルトの名無しさん
2015/12/17(木) 11:54:12.83ID:8SZtl6dNたまには全体の流れ等を見てみることも
0236デフォルトの名無しさん
2015/12/17(木) 12:07:26.31ID:T2aqugd0他の言語からCに乗り換えるためのリファレンスだから
今みたくプログラム言語を初めて学ぶ人が読む本じゃない
0237デフォルトの名無しさん
2015/12/17(木) 12:37:07.11ID:CLoQ9apkC言語の初心者には決して悪くない。
自分が何の初心者か分かってないのが騒いでるだけ
0238デフォルトの名無しさん
2015/12/17(木) 22:46:15.68ID:FeM+ks960239デフォルトの名無しさん
2015/12/18(金) 11:14:11.85ID:Oc3YU1tZ初心者でも読めなくはないがな。
講義や研修を一通り終えたくらいのレベルの人にはちょうどいい気がする。
0240デフォルトの名無しさん
2015/12/18(金) 12:37:55.76ID:hIsxkBegWindows時代はVC++の入門書とAPIの本で。
0241デフォルトの名無しさん
2015/12/18(金) 23:18:38.32ID:xTRH7Suihttp://hayabusa3.2ch.net/test/read.cgi/news/1450395043/
0242デフォルトの名無しさん
2015/12/18(金) 23:40:17.88ID:GSLUIhyT0243デフォルトの名無しさん
2015/12/19(土) 08:11:41.53ID:zHA4DGTiあの薄っぺらいペチペチ言うキーボード
ディスプレイは光沢液晶
起動音は簡単に消せる仕組みがなくイライラさせられる
既にiphoneのシェアはAndroidに負けてて将来性も薄い
Linuxを使ってるって言うならすげえってなるけど
macとかオシャレグッズの一つだろ
0244デフォルトの名無しさん
2015/12/19(土) 09:05:50.45ID:C76ftQjv(その他UNIX互換環境と比べて)手厚いサポートとシェアだけが利点
0245デフォルトの名無しさん
2015/12/19(土) 09:11:24.65ID:P/E9W26MでもUbuntuがプリインストールされてるいい感じのノートがあればそっち使うな
Winはシェル面倒くさくて無理
0246デフォルトの名無しさん
2015/12/19(土) 10:14:54.78ID:AtJf5ENEいるなら機種教えてくれ。何買おうか迷ってるんだよ。
0247デフォルトの名無しさん
2015/12/19(土) 12:38:53.28ID:UjV/9p/Cもっと条件を絞って
ていうかラップトップって今もあるのか?
0248デフォルトの名無しさん
2015/12/19(土) 12:40:50.65ID:dNXWfsX0どこにでも売ってるだろ
0249デフォルトの名無しさん
2015/12/19(土) 12:45:58.40ID:AtJf5ENE安くて程々な性能
0250デフォルトの名無しさん
2015/12/19(土) 13:19:20.82ID:9J93sV9+Trackpadってどの辺が神なの?Trackpointより神?
0251デフォルトの名無しさん
2015/12/19(土) 13:22:03.32ID:T0IQ8AlqMacでいいだろ
インストールするの面倒だし
0252デフォルトの名無しさん
2015/12/19(土) 13:28:13.65ID:UjV/9p/Cそれこそ1万円を切る中古ノートでも良いかもしれない
販売価格(税込): 9,800 円 メーカー: DELL
OS: ubuntu 14.04LTS CPU: Atom N455 1.66GHz
メモリ: 1024MB チップセット: インテルNM10 Expressチップセット
HDD: 250GB ディスプレイ: 10.1インチ 1024x600
http://www.panamedia.co.jp/products/detail.php?product_id=294
開発で使いたいなら、画面もそれなりに広くないと嫌だろうな。
3万〜4万程度で探してみたら良いんじゃない?
XPが動かせていたPCなら、問題なくインストールできると思うよ。
デストリビュータも色々あるけど、メジャーな所を選択すれば
情報も多いし後々楽じゃないかな?
0253デフォルトの名無しさん
2015/12/19(土) 13:56:44.92ID:AtJf5ENEありがとう。中古は考えてなかったけど予算少ないしいいかも。
>>251
MacBook高いんだよね。中古ならそれなりのありそうだけど。
それならLinux入れたい。
0254デフォルトの名無しさん
2015/12/19(土) 14:08:20.72ID:UjV/9p/C0255デフォルトの名無しさん
2015/12/19(土) 14:53:33.18ID:HmYuvDMq見た目と操作感で決めるならMacBook Proがダントツで最強
ノートで他の選択肢はないよ
0256デフォルトの名無しさん
2015/12/19(土) 14:58:59.40ID:UjV/9p/C同程度の環境を2,3万で作れるわけだし
0257デフォルトの名無しさん
2015/12/19(土) 15:06:52.83ID:l5OQFCIpgccとか標準で使えるの?
0258デフォルトの名無しさん
2015/12/19(土) 18:25:03.86ID:LCiUeeSk0259デフォルトの名無しさん
2015/12/19(土) 18:53:04.74ID:jx2/7ryw操作感ならThinkpadだろ
7列キーボード時代の
0260デフォルトの名無しさん
2015/12/19(土) 19:38:02.09ID:UjV/9p/CIBMが手放して以降は買ってない。
気に入っていたんだけどな。残念。
0261デフォルトの名無しさん
2015/12/19(土) 23:24:23.65ID:25MZJC6YMacBookProだと破れそうだけどギリギリ入るのに。
0262デフォルトの名無しさん
2015/12/20(日) 18:05:44.71ID:Xz71BWpzポケットに入れられるくらいのサイズで、出先にHDMI対応のモニタと入力端末があれば済む
0263デフォルトの名無しさん
2015/12/20(日) 18:28:15.56ID:ZYmGF2Jz> 入力端末
て何。ノートなりデスクトップなりが要るてこと。
0264デフォルトの名無しさん
2015/12/20(日) 18:33:20.89ID:Ny1JRpvZ0265デフォルトの名無しさん
2015/12/20(日) 18:34:15.10ID:aWZnirdW0266デフォルトの名無しさん
2015/12/20(日) 18:35:43.03ID:+xSCMvYaUSBキーボード(とUSBマウス)
(Bluetooth経由の無線はどうだろう?)
0267デフォルトの名無しさん
2015/12/23(水) 03:14:07.67ID:/wOBmLFi一般的かどうか知らんが、Apple製のXcodeという統合開発環境(無料)があって、
それでC言語による開発は普通に可能。
gccは今試しにgcc -vやったら普通に入ってた。
まあでもMacはObjective-Cで開発するときにしか使ってないな。
C言語での開発は基本的にWindows。
0268デフォルトの名無しさん
2015/12/24(木) 02:22:47.34ID:rZX6jm4/テキストファイルを行毎に読んで
その行のスペース毎に配列に分けたいのですがどうすればいいですか?
例:あ り が と う
char s[5];
でs[]にひとつひとつ入れていく感じです
0269デフォルトの名無しさん
2015/12/24(木) 02:23:52.06ID:rZX6jm4/ど う も
ま た ね
の時も教えてください
うまく説明できなくてすみません
0270デフォルトの名無しさん
2015/12/24(木) 02:28:15.57ID:h3JTIwaNつまりその例だと、
s[0] = 'あ';
s[1] = 'り';
s[2] = 'が';
・
・
・
になるようにしたいってこと?
無理だよ。
0271デフォルトの名無しさん
2015/12/24(木) 02:32:06.99ID:rZX6jm4/え?無理なんですか?
strtokとか使えば行けそうな気がするんですけど厳しいですかね
0272デフォルトの名無しさん
2015/12/24(木) 02:35:40.52ID:KuEGn2vc0273デフォルトの名無しさん
2015/12/24(木) 02:38:45.81ID:rZX6jm4/使わないとでも出来なくないですか?
使っても出来るのか分かりませんが…
0274デフォルトの名無しさん
2015/12/24(木) 03:09:03.20ID:ZIvzfH3jcharではあらわせん
0275デフォルトの名無しさん
2015/12/24(木) 03:53:25.99ID:O43DKcKR「あ」が普通の文字コードだとcharに入らない件は置いといて
訊きたいことがstrtokの使い方だとすると、まあこんな感じ
http://codepad.org/2UiXlEUT
0276デフォルトの名無しさん
2015/12/24(木) 04:10:40.93ID:nzmFeWJcどのみち格納には一文字2バイト要るけど。
それかC++11の<regex>使って、std::wregex_token_iterator(std::wsregex_以下略でもよい。好み)を用意し、
std::wregex_token_iterator witr( wstr, wstr + size, "(\\s*)", -1 );
for( ;witr != std::wregex_token_iterator p(); ++witr )
{
if( *witr != L"" )
{
array.push_back( *witr );
}
}
とでもする。
0277デフォルトの名無しさん
2015/12/24(木) 05:54:44.54ID:ZDpdO5sCchar s[5]; という変数名や strtok() に目をつけたあたりからの推断だが
本当は char *s[5]; に、各トークンの先頭番地を格納したいんじゃないか?
入力: "Monday Tuesday Wednesday Thursday Friday"
結果:
s[0] 'M'の番地
s[1] 'T'の番地 (Tuesday の 'T')
s[2] 'W'の番地
s[3] 'T'の番地 (Thursday の 'T')
s[4] 'F'の番地
0278デフォルトの名無しさん
2015/12/24(木) 06:40:19.50ID:r56a6lxQ> strtokはなるべく使わないようにしたほうがいい
何故?
0279デフォルトの名無しさん
2015/12/24(木) 06:50:15.66ID:2ShnOfV/0280デフォルトの名無しさん
2015/12/24(木) 08:38:13.34ID:VDgCwlJn内部に状態を持っているからじゃないか?
最近の実装だとスレッドローカルな変数を使う事が多いみたいだから、環境によっては問題ないみたい
ただ、規格ではスレッドセーフ保証は無いんじゃなかったかな?
>>279
それマイクロソフト以外の開発環境で採用してる処理系あるの?
0281デフォルトの名無しさん
2015/12/24(木) 09:13:10.25ID:rm8rK8Gg0282デフォルトの名無しさん
2015/12/24(木) 09:26:07.89ID:ycxxjW+cstrtok は元文字列書き換えもやってるし 先頭番地の記録だけじゃ足りないんだよね
入力: "Monday Tuesday Wednesday Thursday Friday"
処理後: "Monday\0Tuesday\0Wednesday\0Thursday\0Friday" (\0 はバイナリの 0)
puts(s[0]) で 「Monday」
puts(s[1]) で 「Tuesday」
puts(s[2]) で 「Wednesday」
puts(s[3]) で 「Thursday」
puts(s[4]) で 「Friday」
0283デフォルトの名無しさん
2015/12/24(木) 11:14:29.15ID:i6Lb1xpyすいません適当すぎました
ぶっちゃけると
3.5 2.1 + 4.0 * 1.4 -
みたいなものをchar配列に入れて数字に変換して計算したいんですけど
行ごとの計算とスペースごとの読み込みが上手くできなくて困ってます
0284デフォルトの名無しさん
2015/12/24(木) 11:34:47.04ID:Zs2o0pyDその場合は使うのはchar*ではなくchar**じゃないかな。
つまり、ある型Tがあって、T* s;としたときに
s[0]が"3.5"
s[1]が"2.1"
s[2]が"+"
みたいになればいいって事でしょ?
この場合、T型がchar*型になるから、全体としてはchar** s;になると思う。
0285デフォルトの名無しさん
2015/12/24(木) 11:41:09.44ID:i6Lb1xpyすいませんC言語なんですけど
char*とchar**
よく分かりません
普通のcharと違うんですか?
0286デフォルトの名無しさん
2015/12/24(木) 12:17:21.16ID:Zs2o0pyD違う。
charはASCII文字を1文字だけ格納できる整数型
char*はcharへのポインタ
char**はchar*へのポインタ、つまりcharへのポインタのポインタ
今3.5なり2.1なり複数の「文字」から構成される「文字列」を格納したいんだよね?
Cだと文字と文字列は別のものなんだ。
0287デフォルトの名無しさん
2015/12/24(木) 12:26:55.24ID:2ShnOfV/0288デフォルトの名無しさん
2015/12/24(木) 12:40:25.62ID:r3VNG3Ob32ビット環境だったら4バイトのデータを格納しているだけの存在でしかない
0289デフォルトの名無しさん
2015/12/24(木) 12:56:52.90ID:JSDN82+ycharのポインタとintのポインタ、格納しているデータ長は同じかも知れんがポインタ演算の挙動は型によって変わる
0290デフォルトの名無しさん
2015/12/24(木) 13:20:56.87ID:HM5VQL2Nほら、ここに答えがあるぞ
http://web.cc.yamaguchi-u.ac.jp/~fukuyo/prog2/404.html
0291デフォルトの名無しさん
2015/12/24(木) 14:17:55.43ID:rZX6jm4/勉強しときます
>>290
ありがとうございます
似てますけどちょっと違いますね
僕はファイル読み込みでやりたいんですよね
参考にさせて貰います
0292デフォルトの名無しさん
2015/12/24(木) 16:18:06.73ID:egycav5a四次元の理屈が分かっている奴がいるぞ。
0293デフォルトの名無しさん
2015/12/24(木) 21:13:50.99ID:r3VNG3Obもう仕事では誰も使ってへん
0294デフォルトの名無しさん
2015/12/24(木) 21:19:18.62ID:KuEGn2vc0295デフォルトの名無しさん
2015/12/24(木) 22:35:38.37ID:2ShnOfV/それ言い出したバカはとっくに逃走してる
0296デフォルトの名無しさん
2015/12/25(金) 00:28:46.68ID:RyGgxdqZその理解では説明が付かないこともある。
http://melpon.org/wandbox/permlink/FBUjSTXysU1mQBVM
0297デフォルトの名無しさん
2015/12/25(金) 07:54:17.80ID:Zo4woatr0298デフォルトの名無しさん
2015/12/25(金) 08:51:06.09ID:b5WU2Fqhポインターに1加算したら、型に応じたアドレス分だけ加算される。
1だけ加算したかったら、キャストするしかない。
0299デフォルトの名無しさん
2015/12/25(金) 12:51:48.77ID:OtKF+aYO少なくとも >>296 のコードの範疇では沿ってるだろ
int x;
int *p = &x + 1;
*p = 10;
鼻から悪魔が出てきても文句を言えないクソコードで >>296 が何を主張してるのかはよくわからんけど
0300デフォルトの名無しさん
2015/12/25(金) 16:24:06.77ID:tivSlsf4これって初期化と代入で何が変わってるの?最適化?
http://melpon.org/wandbox/permlink/hauqYsmBwJX49DAX
0301デフォルトの名無しさん
2015/12/25(金) 16:32:25.11ID:sHNvOw5/x と y のメモリ上の配置がどうなるかなんて
最適化とか 使ってる環境とかで簡単にゆれる
0302デフォルトの名無しさん
2015/12/25(金) 19:26:32.47ID:OtKF+aYOその if 文は単に x と y を比較してるだけだから成立しないよ
0303デフォルトの名無しさん
2015/12/25(金) 19:28:15.89ID:wx0vRYD+struct position{
int x, y;
};
position pos;
0304デフォルトの名無しさん
2015/12/25(金) 19:29:31.67ID:wx0vRYD+オメー邪魔だぞ
このタイミングで間に割り込むんじゃねーよ
ゴミクズ
0305デフォルトの名無しさん
2015/12/25(金) 20:27:50.09ID:0xMqAn7x0306デフォルトの名無しさん
2015/12/25(金) 21:02:07.82ID:OVOClXE2いろいろ応用できそうだな
http://ameblo.jp/jinakuwan/
0307デフォルトの名無しさん
2015/12/26(土) 01:06:34.09ID:nrKOtgfCもう誰も使ってへん
0308デフォルトの名無しさん
2015/12/26(土) 01:21:23.87ID:6+NqK2ZWhttp://news.mynavi.jp/news/2015/01/08/221/
0309デフォルトの名無しさん
2015/12/26(土) 12:26:41.12ID:oIXuKyHb2015年12月のデータだとJavaが抜いてCは2位になったみたい。
アセンブリが増えてるのが興味深いね
0310デフォルトの名無しさん
2015/12/26(土) 12:38:41.28ID:KD7gR2Cz高速通信生かそうとしたら、ドライバー部分をアセンブラで組むしかない。
0311デフォルトの名無しさん
2015/12/26(土) 13:09:18.29ID:wDqylk+t0312デフォルトの名無しさん
2015/12/26(土) 13:19:15.27ID:6+NqK2ZW今年何かあったっけ?
0313デフォルトの名無しさん
2015/12/26(土) 13:30:53.57ID:nrKOtgfCオープンソースの賑わいもある
javaFXを使えばプラットフォームを問わずGUIアプリも作れる
Cはオワコン
もう誰も使ってへん
0314デフォルトの名無しさん
2015/12/26(土) 13:42:19.50ID:oIXuKyHbランキングは2位に落ちてるけどレーティングは16.460%と6〜7プロジェクトに1つの割合で使われてるぞ
君と君の知り合いがC#やVBしか使ってなくて、Cを使ってる人を聞いたことがないとしても
世界的にはC#は4%、VBやrubyは2%しか使われていない。
0315デフォルトの名無しさん
2015/12/26(土) 14:11:57.71ID:7WO4+JzY業務ユースのJavaがトップになるのは当然だな。
オープンソースリポジトリも考慮すればまた違ってくるんじゃないか?
0316デフォルトの名無しさん
2015/12/26(土) 14:34:02.68ID:RP14UPme処理系の普及度からいえばC++とCが逆転するような気がするんだが…
0317デフォルトの名無しさん
2015/12/26(土) 17:33:38.48ID:6Xz/DXW50318デフォルトの名無しさん
2015/12/26(土) 18:20:07.14ID:Mh3LsY+/C++に抜かれるなんて考えられない
0319デフォルトの名無しさん
2015/12/26(土) 18:24:39.86ID:EXUTS9i+0320デフォルトの名無しさん
2015/12/26(土) 18:34:15.06ID:X0XEda8C0321デフォルトの名無しさん
2015/12/26(土) 18:39:49.64ID:WET3gKUy0322デフォルトの名無しさん
2015/12/26(土) 19:04:57.57ID:oIXuKyHbANSIスタイルの かんすうの せんげんが とおらない!
main(argc, argv)
int argc;
char* argv[];
{
return 0;
}
0323デフォルトの名無しさん
2015/12/26(土) 19:20:04.29ID:pmQb/XIR0324デフォルトの名無しさん
2015/12/26(土) 19:20:35.79ID:X0XEda8C0325デフォルトの名無しさん
2015/12/26(土) 19:22:19.98ID:pmQb/XIR0326デフォルトの名無しさん
2015/12/26(土) 19:24:45.67ID:6Xz/DXW50327デフォルトの名無しさん
2015/12/26(土) 19:32:38.64ID:6AGjzFRF0328デフォルトの名無しさん
2015/12/26(土) 20:07:17.02ID:YV12MLKo0329デフォルトの名無しさん
2015/12/26(土) 20:40:58.44ID:6AGjzFRF○ C++で増えた予約語を識別子に使ってるケース
int new; とか C言語なら合法
0330デフォルトの名無しさん
2015/12/26(土) 21:14:32.22ID:oIXuKyHb0331デフォルトの名無しさん
2015/12/26(土) 21:25:09.13ID:pVKld/fI0332デフォルトの名無しさん
2015/12/26(土) 21:40:22.22ID:WauQYE2gauto a = 0;
return a;
}
あれ? 同じじゃんw
0333デフォルトの名無しさん
2015/12/26(土) 21:50:24.04ID:LYATmO+u0334デフォルトの名無しさん
2015/12/27(日) 07:57:50.06ID:A9mtyxzemalloc() の返り値でエラー出まくり。
0335デフォルトの名無しさん
2015/12/27(日) 10:25:07.84ID:pr/2a1JCC++は*.cpp
VC++においてはね。
0336デフォルトの名無しさん
2015/12/27(日) 11:16:26.61ID:LZ1P+G9zオプションで変えられる
プロパティ──ペ──ジからだと
[構成プロパティ]→[C/C++]→[詳細設定]→[コンパイル言語の選択]
0337デフォルトの名無しさん
2015/12/27(日) 16:33:00.03ID:6NYNO2+5CとC++でNULLの定義が違っている場合もあるよね
Cはvoid*からの暗黙の変換が許されているから
#define NULL ((void *)0)
な環境があるけど
C++はvoid*からの変換がダメだから
#define NULL 0
だよね
0338デフォルトの名無しさん
2015/12/27(日) 16:34:51.54ID:6NYNO2+5今ももちろん問題なんだけど
それ以前に最近のC++とCは完全に別々の道を歩んでいて
互換性なんか全然ない状況なんだけどね
0339デフォルトの名無しさん
2015/12/27(日) 17:04:46.46ID:bldDGb7M誰も使ってへん
WEBもデータベースも碌に使えない
GUIアプリも使えない
こんなオワコン言語誰が使うのよ
組込みで使われてる?
あんなものはソフトウェア開発じゃねえよ
ハード屋が設計した時点でソフトの仕様もほぼ決まる
ハード屋の設計ミスはソフト屋に押し付けられる
半田ゴテとオシロスコープでデバッグする人間なんかソフトウェア技術者じゃねえよ
0340デフォルトの名無しさん
2015/12/27(日) 17:30:33.70ID:HgS+DUOa0341デフォルトの名無しさん
2015/12/27(日) 17:45:06.68ID:OS6eeKxOそのドライバを使って作られるものもCなんですよ
そんな視野の狭いこと言ってないで一度は社会に出て働いてみたらいいよ
0342デフォルトの名無しさん
2015/12/27(日) 19:17:22.40ID:7NjrpkLVそれをCスレでいう奴はC言語以上に使えない存在だけどね
0343デフォルトの名無しさん
2015/12/27(日) 20:12:46.46ID:kNkpHWWg0344デフォルトの名無しさん
2015/12/27(日) 20:22:55.78ID:tVVclFon0345デフォルトの名無しさん
2015/12/27(日) 23:38:33.21ID:5oYvOMbQ作ってくれた方がうれしいことは結構ある。
うちのソースはC99の範囲で作成してて、環境依存性が低くなってるぜ!(ドヤッ
でもいいんだけど。古いコンパイラでビルドできないから、実際には環境依存性が
拡大してんだよね(ノ∀`)
必要性はともかく、MS-DOS用コンパイラでも通る libjpeg のソースはカッコイイとは思う。
0346デフォルトの名無しさん
2015/12/29(火) 19:08:52.54ID:B86ZwWUs0347デフォルトの名無しさん
2015/12/29(火) 19:59:56.63ID:Kpb8+VpB0348デフォルトの名無しさん
2015/12/29(火) 21:46:02.81ID:q8X2dkwQ2chやそれ以前の古のCGIは元々DBではなくファイルで管理が一般的
現在のおーぷんなんかはDBされているらしいが(いまはここもDBなのかもしれない)
0349デフォルトの名無しさん
2015/12/29(火) 22:55:27.03ID:Kpb8+VpBまぁ始まりは、あめぞう掲示板だもんね
いまもファイル管理かな 可能ならファイル管理が一番負担少ないんだよね鯖には
0350デフォルトの名無しさん
2015/12/30(水) 02:58:42.64ID:umSXLTLcついでにvimとか使えるようになりたいんですが、vimって関数とか補完してくれるんですか?
0351デフォルトの名無しさん
2015/12/30(水) 03:29:06.94ID:c25CJwGc挿入モードでC-pとかC-nとかで補完できると思う
0352デフォルトの名無しさん
2015/12/30(水) 09:20:55.40ID:wAoiK+Ar0353デフォルトの名無しさん
2015/12/30(水) 09:37:10.79ID:dF3jkthqなんでもvim化したくなる病気にかかるぞ。
vsvim、vimperatorちょーきもちいいし
0354デフォルトの名無しさん
2015/12/30(水) 14:47:38.87ID:ugBw4vew0355デフォルトの名無しさん
2015/12/30(水) 23:21:31.16ID:ZlOQB/u7では、どんなものがソフトウエア開発なんだ? おまはんの理解では。
ハード屋の設計ミスを押しつけられるのをそんなに不満がるおまはんが、
いったいソフトウエアとは何だと思っているのか、ぜひぜひ聞いてみたいもんだねえ。
半田ごてもオシロスコープも使えないクルクルパーがソフトウエア技術者なのか?
頭おか・・・いや変わってるねえ。
0356デフォルトの名無しさん
2015/12/30(水) 23:57:50.55ID:umSXLTLcありがとうございます。
ちょっと試してみます。
ちなみに、linuxでcやる場合どういう環境がスタンダードなんでしょうか?
0357デフォルトの名無しさん
2015/12/31(木) 00:03:50.41ID:Rg3p4l8E0358デフォルトの名無しさん
2015/12/31(木) 00:09:26.32ID:n9A3edra0359デフォルトの名無しさん
2015/12/31(木) 01:53:24.89ID:Rg3p4l8E画面が出るプログラムの方が面白くないか
0360デフォルトの名無しさん
2015/12/31(木) 02:05:15.22ID:6jpuja+H> 画面が出るプログラム
は使いにくいじゃん。
0361デフォルトの名無しさん
2015/12/31(木) 02:56:04.46ID:CRKJz/nvおれは余生はPHPのみで過ごします
0362デフォルトの名無しさん
2015/12/31(木) 06:25:21.15ID:i33x2L8PQuickFix機能が大好きなんだよ。
でも >>351 の補完操作は知らなかった。なかなか便利だね。
0363デフォルトの名無しさん
2015/12/31(木) 08:53:09.06ID:N9IVqlb80364デフォルトの名無しさん
2015/12/31(木) 12:52:11.32ID:Rg3p4l8Ectags使ってタグジャンプとか常識だろ
0365デフォルトの名無しさん
2015/12/31(木) 13:56:35.64ID:a5VWzLtoPerl 6が先日爆誕した今、PHPもRubyもPythonもみなPerl 6の前にひれ伏すのみ!
全てのLL言語は道を空けろ
0366デフォルトの名無しさん
2015/12/31(木) 14:28:24.51ID:HlqOeDMbint型の数値をchar型のascii文字列に変換する方法はないでしょうか?
int a=31なら
char b='1'
int a=41なら
char b='A'
に変換する方法です。
どなたかわかりましたら、お願いします。
0367デフォルトの名無しさん
2015/12/31(木) 14:45:02.76ID:E/Q2xqoeasciiコード表をググる
0368デフォルトの名無しさん
2015/12/31(木) 14:53:25.60ID:n9A3edrab = (char)a;
0369デフォルトの名無しさん
2015/12/31(木) 15:09:58.06ID:fJbh+cClint a=31なら
char b='1'
31って、10進数じゃなく、16進数なの?
0370デフォルトの名無しさん
2015/12/31(木) 16:34:24.08ID:a5VWzLto「質問の意味不明。再入力せよ
「無人化すべきである
0371デフォルトの名無しさん
2015/12/31(木) 19:17:49.74ID:wE66IW8zこれ以上はどうしようもない気がするが…
0372デフォルトの名無しさん
2015/12/31(木) 19:22:29.15ID:SKwNZ+jxchar b[2];
b[0] = (char)a;
b[1] = 0;
かもしれんじょ
0373デフォルトの名無しさん
2015/12/31(木) 20:58:42.08ID:a5VWzLto(char)31が何で(char)'0'になんの?
ASCIIコード表によれば31はUnit Separatorだって書いてあるが…
0374デフォルトの名無しさん
2015/12/31(木) 21:16:31.63ID:SlDcEVNzasciiコード表って10進だと思う?
0375デフォルトの名無しさん
2015/12/31(木) 21:30:15.73ID:a5VWzLtoそれ漏れよりも>>371に聞いてくれ
0376デフォルトの名無しさん
2015/12/31(木) 21:31:14.84ID:h8iGf5UY0x41 'A'
0377デフォルトの名無しさん
2015/12/31(木) 21:32:42.94ID:SlDcEVNzごめんね早漏で
0378デフォルトの名無しさん
2015/12/31(木) 21:34:45.49ID:CPFiItNLおそらく16進表記なんだろう…と意図を汲むことはできるけどさ。
まず最初に、プログラムは
0379デフォルトの名無しさん
2015/12/31(木) 21:34:51.00ID:h8iGf5UYchar b;
i=1;
b=1+'0';
0380デフォルトの名無しさん
2015/12/31(木) 21:36:44.73ID:h8iGf5UYchar b[10];
i=31;
b[0]=i/10+'0';
b[1]=i%10+'0';
b[2]=0;
0381デフォルトの名無しさん
2015/12/31(木) 21:38:22.33ID:CPFiItNLおそらく16進表記なんだろう…と意図を汲むことはできるけどさ。
まず最初に、プログラムは"書いたとおりに動く"ってことをきちんと認識すべきだ。
その上でなお>>366のままの処理を実現したいならルックアップテーブルを使うのが簡単。
0382デフォルトの名無しさん
2015/12/31(木) 21:41:23.01ID:a6Iii3M/0383デフォルトの名無しさん
2015/12/31(木) 21:43:19.09ID:h8iGf5UYご本人様に仕事紹介した方がなんとかしてくれるのでは
0384デフォルトの名無しさん
2016/01/01(金) 05:37:57.59ID:6x5pHkP6最初の2行の質問部分と、欲しい結果の例示が矛盾してるんだ。
int a=31 なら char b='1'
int a=41 なら char b='A'
... bは文字列じゃない。char変数。
おまけに値31から文字'1'に変換する文字コードが不明瞭。
値0x31(10進数で49)が'1'なら一般的なASCIIコードだと分かるけど。
というわけで、答える人も >>366 の矛盾をそれぞれの視点で
解釈してるんで様々な答案が現れる。
もう一度、正しい質問を出し直すのが良いかと。
0385デフォルトの名無しさん
2016/01/05(火) 01:22:26.29ID:dvg1UNQjint c=1;
main()
{
int b=2,c=3;
{
int a=4,b=5;
printf("c=%d",c);
}
}
こんなときにprintfで表示するcはmainの外にあるcですか?mainの中にあるcですか?
0386デフォルトの名無しさん
2016/01/05(火) 01:30:27.66ID:9P9OP9TUこの場合に表示されるのは 3 だね。
0387デフォルトの名無しさん
2016/01/05(火) 11:48:25.98ID:3x6aqfzIhttp://codepad.org/fVWmtQM5
ここにソースを貼って聞くより、
codepad使って試してみる方が速いし
君のためにもなると思う。
0388デフォルトの名無しさん
2016/01/05(火) 11:59:21.74ID:uJ085arg0389デフォルトの名無しさん
2016/01/05(火) 15:49:49.90ID:LDSV25Qv移植性のある動作か環境依存かは判断できないからなぁ。
規格についての質問だったんじゃないかしら。
0390デフォルトの名無しさん
2016/01/05(火) 16:22:25.15ID:KbFq7Je6これは規格で決まっているのか?という質問の仕方をするぞ。ふつーなら
まあ。そんな質問の仕方ができるのなら、自分で規格書にあたるだろうがな
ソフト関係一般、試してみてから質問しろって質問大杉
0391デフォルトの名無しさん
2016/01/05(火) 19:28:12.81ID:W/DE25A20392デフォルトの名無しさん
2016/01/05(火) 19:40:01.60ID:3x6aqfzI0393デフォルトの名無しさん
2016/01/05(火) 21:16:04.59ID:QofW8aPuあるあるネタだよね
0394デフォルトの名無しさん
2016/01/08(金) 01:58:52.78ID:Sl02QCfRdouble型の配列x.int型のcがあるとする
printf("x[%d]=",c);
x[%d]の%dはcがint型だからという考え方で良いんですか?
0395デフォルトの名無しさん
2016/01/08(金) 02:06:54.04ID:gvhAKgDA0396デフォルトの名無しさん
2016/01/08(金) 02:23:22.67ID:Sl02QCfRありがとうございます
0397デフォルトの名無しさん
2016/01/08(金) 16:33:51.39ID:jv1GyZfR0398デフォルトの名無しさん
2016/01/08(金) 16:58:44.64ID:lSaO5zOy0399デフォルトの名無しさん
2016/01/08(金) 17:13:59.66ID:sptetxO+0400デフォルトの名無しさん
2016/01/08(金) 17:15:52.70ID:jv1GyZfRそんな事出来るのか
>>399
何故?
0401デフォルトの名無しさん
2016/01/08(金) 17:18:57.93ID:sptetxO+同じ機械語で書かれた実行ファイルを書き直してるだけだし
0402デフォルトの名無しさん
2016/01/08(金) 17:20:42.43ID:sptetxO+今時のコンパイラの最適化を超えることができるかは不明だぜ?
0403デフォルトの名無しさん
2016/01/08(金) 17:27:10.00ID:jv1GyZfRもしかしてアセンブラが早いんじゃなくて、詳細設定も出来るから上手い人が書いたら早いってこと?
つまり初心者がアセンブラ使ったらcより遅くなるってこと?
0404デフォルトの名無しさん
2016/01/08(金) 17:35:34.33ID:sptetxO+0405デフォルトの名無しさん
2016/01/08(金) 19:29:37.94ID:aMJ95Xnsコンパイラの能力と、アセ書く人の腕次第
0406デフォルトの名無しさん
2016/01/08(金) 19:47:56.85ID:HKkiRRvQ0407デフォルトの名無しさん
2016/01/08(金) 23:07:20.42ID:9BLMKoY/その通りと思って間違いない
0408デフォルトの名無しさん
2016/01/09(土) 00:24:52.19ID:rnbze7si0409デフォルトの名無しさん
2016/01/09(土) 01:51:05.94ID:ANqeYpuPdouble a[4][5].temp
ピボットがa[k][k]のとき二次配列a[4][5]のk行の要素とm行の要素を交換するプログラムを作りなさい
for(i=k;I<5;i++){
temp=a[k][i];
a[k][i]=a[m][i];
a[m][i]=temp;}
と答えがなっているのですが
for(i=0;•••;•••)とならないのはなぜですか?
0410デフォルトの名無しさん
2016/01/09(土) 06:13:10.50ID:VKEzr4niピボットがk行k列ということはk列より前の列は対角化が終了しているはずだから要素は0になっているので交換は不要
…とエスパーしてみる
0411デフォルトの名無しさん
2016/01/09(土) 13:25:44.77ID:ANqeYpuP答えが間違ってる可能性はありますか?
0412デフォルトの名無しさん
2016/01/09(土) 13:40:26.34ID:DqPp/fffループの終了条件が間違っている可能性がある
多分最後の列ベクトルが列数のカウントに入っていない
0413デフォルトの名無しさん
2016/01/09(土) 13:44:46.00ID:DqPp/fff0414デフォルトの名無しさん
2016/01/09(土) 13:51:12.35ID:aqFjvIcuLU分解かガウスジョルダンか分からんけど上三角行列の行交換の部分だけなら特に間違ってないだろ
0415デフォルトの名無しさん
2016/01/09(土) 14:16:34.01ID:ANqeYpuP四次元連立一次方程式の配列a[4][5]をガウスジョルダンでm行とk行の要素を入れ替えなさい
みたいな感じです
0416デフォルトの名無しさん
2016/01/09(土) 14:28:29.00ID:EC0TmpF1ガウスジョルダンなら>>410のレスの通りだろ
下手にすべての要素を入れ換えると処理済みの対角要素まで要らんところに移動することになるぞ
0417デフォルトの名無しさん
2016/01/09(土) 14:36:17.94ID:ANqeYpuP整理して考えてみます
0418デフォルトの名無しさん
2016/01/10(日) 02:03:02.80ID:KHsQJ2Yxprintf(..........)
for(...;...;...)
となっていたら
上の二行だけを先に実行してそれが終わって次の文ですよね?
0419デフォルトの名無しさん
2016/01/10(日) 02:07:57.34ID:KHsQJ2Yxすみません解決しました
0420デフォルトの名無しさん
2016/01/10(日) 03:58:11.89ID:KHsQJ2Yx{
int i ,a[3]={10,20,30}, b[3]={1,2,3};
func1(a);
for(i=0;i<3;i++) printf(
0421デフォルトの名無しさん
2016/01/14(木) 15:18:15.64ID:+xO0ECJYこうすると速くなる、こうするのが賢いってコードある?
特になければ素直に1バイトごとにビットシフトで処理しようかと思うんだけど。
0422デフォルトの名無しさん
2016/01/14(木) 15:57:38.19ID:si8G2R6b8ビット毎の並び順では バイトオーダー
違った?
0423デフォルトの名無しさん
2016/01/14(木) 17:11:17.68ID:DrC+qJSaメモリアクセスが減らせて速いからでは?
バイト単位でアクセスしたコードが最適化でどうなるか分からんから、結果的に意味ないかもだが
それでも32bit分一気に読み込んで書き換えるコードより速くなることはないだろう
ほかには、ユニオンを使うやり方と、SSEを使う方法が考えられる
SSEを使う方法は、例えばこれ
http://qiita.com/nbjiao/items/12f90c734c0df31aec62
0424デフォルトの名無しさん
2016/01/14(木) 18:52:06.53ID:si8G2R6b上位 下位
を
下位 上位
では
回路上でみると、ビットの入れ替えしないといけないように見えるから
やっぱり、俺が勘違いしてるのか
0425デフォルトの名無しさん
2016/01/14(木) 18:54:35.61ID:nHVQKm3B何bit単位でさらに並びをどうするかってのはほんとは色々組み合わせがあるものよ
0426デフォルトの名無しさん
2016/01/14(木) 19:19:36.95ID:jIuADbbbunion や キャストを使わずにやろうとすると、
バイトオーダーの入れ替えを作るのにビットシフトするのかな
((a << 8) & 0xf0) | ((a >> 8) & 0x0f)
0427デフォルトの名無しさん
2016/01/14(木) 19:22:16.82ID:si8G2R6b0428デフォルトの名無しさん
2016/01/14(木) 20:36:54.02ID:os+tW4sXそれが普通でしょ
今時の CPU なら何ビットシフトしても1サイクルで終わるし
コンパイラーによっては、68000 の swap のような専用命令を使ってくれたりする
0429デフォルトの名無しさん
2016/01/14(木) 20:56:46.88ID:si8G2R6b0430デフォルトの名無しさん
2016/01/14(木) 21:11:42.91ID:DrC+qJSa0431デフォルトの名無しさん
2016/01/14(木) 21:48:03.06ID:jIuADbbbはずかしー
0432デフォルトの名無しさん
2016/01/14(木) 22:47:53.67ID:Zc1b49I1半年振りに int main() と書いたような気が
>>431 どんまい
0433デフォルトの名無しさん
2016/01/15(金) 07:45:02.36ID:rbEYiMQp0434デフォルトの名無しさん
2016/01/15(金) 08:09:04.37ID:kbAfmhMJそれぐらい自分で考えろ
0435デフォルトの名無しさん
2016/01/15(金) 09:06:47.46ID:L+SdYadB16bit 値なら、& 取る必要無いだろ?
0436デフォルトの名無しさん
2016/01/15(金) 09:34:48.02ID:CkLNaHVR0437デフォルトの名無しさん
2016/01/15(金) 09:39:17.10ID:CkLNaHVR0438デフォルトの名無しさん
2016/01/15(金) 15:22:44.57ID:F13ndxIM0439デフォルトの名無しさん
2016/01/15(金) 16:26:33.96ID:fA3ibDHk0440デフォルトの名無しさん
2016/01/15(金) 16:26:59.37ID:fA3ibDHk0441デフォルトの名無しさん
2016/01/15(金) 16:47:29.87ID:CkLNaHVR0442デフォルトの名無しさん
2016/01/15(金) 18:23:08.30ID:vW09T/Qwなんでゼロが出てくるの?
0443デフォルトの名無しさん
2016/01/15(金) 18:27:31.72ID:CkLNaHVR0444デフォルトの名無しさん
2016/01/15(金) 20:07:47.85ID:nz6sd5//?
コードでいうと?
0445デフォルトの名無しさん
2016/01/15(金) 20:12:06.86ID:XOSgYs/9>>436見りゃわかるだろアホ
0446デフォルトの名無しさん
2016/01/15(金) 20:15:07.23ID:nz6sd5//unsigned short が 16bit であると決まっているのか?
0447デフォルトの名無しさん
2016/01/15(金) 20:21:36.08ID:CsxQJ5lx最上位ビットが立ってる状態での右シフトで
1を補ってしまうのを嫌うのに 符号なし にしてるっぽい
0448デフォルトの名無しさん
2016/01/16(土) 08:11:13.95ID:WjMevUGdエンディアネスの変換は素直に
hton/ntoh 系のPOSIX関数を使うのが無難でないか。
きっとライブラリ作者の方でチューニング済みだよ。
て言うか >>429 と同じ内容だな、こりゃ。
0449デフォルトの名無しさん
2016/01/16(土) 09:03:42.72ID:K5qF020v0450デフォルトの名無しさん
2016/01/16(土) 09:14:24.57ID:PGyH0xCz暑中やるもんでもないような
0451デフォルトの名無しさん
2016/01/16(土) 13:10:08.41ID:QU9s9ZKoシフト8回、論理積6回、論理和7回か。
こう書けばシフト6回、論理積4回、論理和3回だからこっちの方が標準的なマシンなら速いぞ。
http://codepad.org/zLQuDOiU
あと型のサイズが気になる程古い環境だとunsigned long long型はそもそも存在しないので注意な。
0452デフォルトの名無しさん
2016/01/16(土) 13:18:13.82ID:QU9s9ZKoCの仕様上は1バイトは7bit以上
・・・・・・だった筈
0453デフォルトの名無しさん
2016/01/16(土) 15:54:07.40ID:K5qF020vおれのはbswap2回になるわけだが
0454デフォルトの名無しさん
2016/01/16(土) 16:12:42.07ID:K5qF020vお前のもclangでやれば同じになるようだな
0455デフォルトの名無しさん
2016/01/16(土) 16:17:28.40ID:FL+/Wrts7bitで処理しているCPUってあるの?
0456デフォルトの名無しさん
2016/01/16(土) 16:19:49.89ID:K5qF020v0457デフォルトの名無しさん
2016/01/16(土) 17:31:03.53ID:QU9s9ZKo頭が固くてごめんよ、Intel系で、最適化掛けたら、確かにbswap命令が1個か2個の超短い関数になるね。
俺が言った「標準的なマシンなら速い」ってのは
「ハッカーのたのしみ」って本で扱ってるような、およそどんな種類のCPUにも含まれている命令のみを使った場合に速いって話な。
実際、アーキテクチャ依存な最適化なんかを掛けずに比較するとこんな具合になる。
https://gist.github.com/pixie-grasper/74fcbd7d924cd99c570e
>>455
昔はあったってWikipediaには書いてあるな。
あとはFPGAでわざわざそういうCPU作るとか
0458デフォルトの名無しさん
2016/01/16(土) 17:39:40.54ID:K5qF020v今時gccやclangがサポートしてるCPUならおよそどんな種類のCPUにも含まれてるんじゃないか?
0459デフォルトの名無しさん
2016/01/16(土) 17:40:17.63ID:QU9s9ZKoclang++ bswap.cc -o - -S -emit-llvm -std=c++1y | opt -O3
したら両方共
tail call i64 @llvm.bswap.i64(i64 %a)
になっちゃった。
最適化つえぇ・・・
0460デフォルトの名無しさん
2016/01/16(土) 17:44:51.83ID:QU9s9ZKotargetとしてサポートしてるCPUには8086から80386までを含む。
IntelのCPUにbswap命令が追加されたのは486になってから。
0461デフォルトの名無しさん
2016/01/16(土) 17:46:41.12ID:K5qF020v0462デフォルトの名無しさん
2016/01/16(土) 17:47:59.37ID:QU9s9ZKo今時のgccやclangが
ではなく
今時のCPUなら
か。
せやね
0463デフォルトの名無しさん
2016/01/16(土) 21:27:19.76ID:tFEy8q4U漢のフルカスタムへおいでませ
0464デフォルトの名無しさん
2016/01/17(日) 22:55:07.68ID:h36PkqQ1開発中のアプリケーションで両方使っているんですが、ランダムアクセスの方が遅いんです。実装の問題でしょうか?
0465デフォルトの名無しさん
2016/01/17(日) 22:59:54.79ID:hf3I1SqlSSDを対象に同じ事をする場合は、相当の改善は見込めると思います。
0466デフォルトの名無しさん
2016/01/18(月) 01:05:34.65ID:TR/YNlokレスありがとうございます。
勘違いしてたみたいでランダムアクセスの方が速いと思ってました。
ちなみにSSDの環境で比べています。
ランダムアクセスの利点はメモリ消費の節約ぐらいですか?
0467デフォルトの名無しさん
2016/01/18(月) 01:17:38.83ID:TR/YNlok利点はメモリ消費の節約と、レコード番号によるアクセスですね
実装では選択レコードの表示と、全レコードの表示が機能としてあるのですが、
選択レコードの表示はそれなりに速いので、ランダムアクセスファイルで
シーケンシャルアクセスすると逆に遅くなっちゃうということですかね
0468デフォルトの名無しさん
2016/01/18(月) 02:58:27.22ID:F4LpYkVc大きいとメモリを圧迫するからバランス
0469デフォルトの名無しさん
2016/01/18(月) 04:10:59.44ID:TR/YNlok0470デフォルトの名無しさん
2016/01/18(月) 07:48:18.62ID:X1DF5hh10471デフォルトの名無しさん
2016/01/18(月) 12:31:46.71ID:qMoQIRpx一般的にはアクセス箇所が少ないならファイルを直接アクセスする方が有利
使わないところを読むのは時間的にも空間的にも無駄だから
0472デフォルトの名無しさん
2016/01/18(月) 12:50:07.58ID:M94/HkrHBasic とか COBOLやろか
0473デフォルトの名無しさん
2016/01/18(月) 12:50:08.80ID:ICspl/0l自前で実装?
0474デフォルトの名無しさん
2016/01/18(月) 14:27:58.54ID:xk2uumt00475デフォルトの名無しさん
2016/01/18(月) 18:16:01.25ID:TYJ3w2rJC言語でシーケンシャルファイルとかランダムアクセスファイルとかがどこの何者なのか先ず聞きたいわ。
0476デフォルトの名無しさん
2016/01/18(月) 22:43:18.95ID:TR/YNlok0477デフォルトの名無しさん
2016/01/19(火) 01:24:48.90ID:NnBd5aRZmain()
{
func(3);
func(2);
printf(”%d¥n”,func(1));
}
int func(int a)
{
if(a > m) m=a;
return(m);
}
このときなぜmainの外に値がかえるのですか?
0478デフォルトの名無しさん
2016/01/19(火) 01:35:33.28ID:kkfqYwuP色々とおかしくなってる所があって質問の意図が掴みにくい
まず>>1に書いてある実行環境で走らせてみてその結果を貼ってくれると嬉しい
http://codepad.org/
http://ideone.com/
0479デフォルトの名無しさん
2016/01/19(火) 02:04:07.95ID:NnBd5aRZです
0480デフォルトの名無しさん
2016/01/19(火) 03:00:42.81ID:NUykG/ueこんな感じのを想定してみるけど
うーんすまんがイマイチ意図が読めん
とりあえずグローバル変数はどこの誰が触っても良い共有物なので
m=aの時点で値は変わってるしそれをmain()はちゃんと受け取ってるよ
もうちょい疑問点を出してみてくれ
0481デフォルトの名無しさん
2016/01/19(火) 03:30:00.15ID:NnBd5aRZグローバル変数の値の変わり方
みたいなのが知りたかったので助かりました
0482デフォルトの名無しさん
2016/01/19(火) 18:22:04.71ID:DwRras8D1以下または301以上の場合には0を戻すようにする
みたいなプログラムどうやったら組めますか
0483デフォルトの名無しさん
2016/01/19(火) 18:43:59.03ID:eYkN5B6n一般的にはif文とfor文の組合せで実現出来るものだと思う
それともそういった構文を使わずに、ということなのかな
0484デフォルトの名無しさん
2016/01/19(火) 18:46:42.09ID:MH15YYPthttp://codepad.org/7e0f66gt
0485デフォルトの名無しさん
2016/01/19(火) 21:24:24.21ID:20zNHCnh宿題スレへ
0486デフォルトの名無しさん
2016/01/19(火) 21:35:06.89ID:zhXlS8A2return ans[seisu];
で一発や
0487デフォルトの名無しさん
2016/01/19(火) 22:03:16.08ID:dkAc/DrUその「答え」を求める問題やろ
0488デフォルトの名無しさん
2016/01/19(火) 22:10:15.26ID:dkAc/DrU指定する数をint nとすれば
(1+n/2)*n/2
とかそんな感じで一発じゃね?
0489デフォルトの名無しさん
2016/01/20(水) 17:03:54.37ID:UTQHsO+H1. 足し算のループで答えを求める
2. 等差数列の和の公式を適用 (ループがなくなり計算一発)
3. 予め計算して表にしておく (計算もなくなり表引きだけ)
てな具合にアルゴリズムの洗練をたどれる良い問題だね。
それに加えてプログラミングの重要な心得も含んでいる。
0. 関数が正常に動作するべき値の範囲に注意をはらうべし
(異常な入力値をチェックせよ)
質問の答えじゃなくて感想だけど。
0490デフォルトの名無しさん
2016/01/21(木) 21:18:39.30ID:mV6gE67Oバグが出やすい箇所みたいなの教えてください。
今学んでるんですが、何これ、そんなにバグ作りこみたいの?
って仕様ばっかで困ってます。
0491デフォルトの名無しさん
2016/01/21(木) 21:25:33.12ID:rCIbkvUQ0492デフォルトの名無しさん
2016/01/21(木) 22:43:31.48ID:aXQag5k7で、何を教えて欲しいの?
0493デフォルトの名無しさん
2016/01/21(木) 23:25:19.95ID:4xSfWFv3こちらのサイトの一番上の抵抗分圧の抵抗の組み合わせを抽出するプログラム
をC言語で作りたいのですが、いまいちどういう風に作ったらいいか
わかりません。
このプログラムは与えられたV1とV2からV2に近くなるR1とR2の組み合わせ抽出するというプログラムです。
抵抗分圧の公式はV2=V1*R2/(R1+R2)です。
E24系列というのはRの基本値で、1, 1.2, 1.3・・という決まった値でそれの10倍値や100倍値も存在し、
MAXだと100万倍ぐらいまであります。(1MΩ10MΩ)
R1とR2の全組み合わから一度Voutを計算して、V2と一番近くなる組み合わせをだそう
かと思ったのですが、Rの組み合わせが膨大で現実的ではありません。
なにかいい方法はないでしょうか?
0494デフォルトの名無しさん
2016/01/22(金) 00:05:58.23ID:Fkb5gpUk理論抵抗比とやらからある程度組合せを選別出来ない?
理論比がR1:R2=3:1としたらR2=1.0(固定)に対してR1=3.0が最も近いのでV2を計算
そしたら次はR2=1.1に対してR1=3.3、R2=1.2に対してR1=3.6と双方左にずれてく
こうやって同じ間隔を空けて組合せを作っていけば保険に前後の値を入れたとしても
精々300通り位で済むんじゃないかな
0495デフォルトの名無しさん
2016/01/22(金) 00:08:24.15ID:LSwKLHy0おもしろそうだと思うんだけど
C言語入門スレで聞くよりも、
宿題すれか、プログラミングのお題スレで
出題として出してみると良いかも
0496デフォルトの名無しさん
2016/01/22(金) 00:23:42.54ID:nDBVl/8L例えばどの仕様をバグを作り込みたい仕様だと思うの?
0497デフォルトの名無しさん
2016/01/22(金) 00:56:14.38ID:iy9dE6+2お題すれで聞いてみますね。
0498デフォルトの名無しさん
2016/01/22(金) 01:27:11.48ID:G5rv7JJ3V2=V1*R2/(R1+R2)
を式変形すると
V1/V2-1=R1/R2
になるから、
1 <= (V1/V2-1)*10^n < 10
となるようにnを選んで、
E24系列を仮定するなら自明な重複を除いて全部で133通りある数値から(V1/V2)*10^nを引いて絶対値を取って、
結果得られる値が小さい順に並べれば良いと思われ。
0499デフォルトの名無しさん
2016/01/22(金) 02:08:19.69ID:SkuvTEjs勝手に暗黙的型変換とか
ifの評価は論理値でなく式にも適用されるとか
色々あると思いますが。
これはコンパイル通らないよね?と思っているのがバンバン通ります。
認識せずコーディングルールだけを盲目的に信じてると潜んでる問題とか分からんので。
0500デフォルトの名無しさん
2016/01/22(金) 03:17:34.54ID:nDBVl/8Lifの評価が式にも適用されてる?勘違いしてるね
Cは式や関数も値を持つって事を意識するだけでいい
暗黙の型変換はコンパイラ次第で防げる
0501デフォルトの名無しさん
2016/01/22(金) 07:59:14.62ID:raZVxvb6Haskellとかから来た人なの?
0502デフォルトの名無しさん
2016/01/22(金) 08:05:21.33ID:zQ4mPetq今となっては厄介な遺産だな。
0503デフォルトの名無しさん
2016/01/22(金) 08:29:23.99ID:sYC1tQRVありがとうございます。
>>501
javaからきました。
boolとかもそうですよね。
関数しかないとか、全部関数把握しなきゃいけない。。
コピペしまくることになりそう。
0504デフォルトの名無しさん
2016/01/22(金) 08:37:05.82ID:NsaQTY0q0505デフォルトの名無しさん
2016/01/22(金) 11:29:56.02ID:tiw7VxmHぶっちゃけ 今さらCをやるとなると
プログラマ1年生に戻った気で何もかもやり直しに近いよ
仕事とかでやらなきゃいけないなら
機械語を学んでからCに戻るのが結局近道だよ
0506デフォルトの名無しさん
2016/01/22(金) 11:50:02.90ID:QVNa2tJM大して変わらんでしょ
0507デフォルトの名無しさん
2016/01/22(金) 14:19:59.78ID:tiw7VxmHちょっとスタックに置いといた荷物が
何者かに中身をすり替えられちゃったんですけど
ちょっと〜、何よさっき買った紙コップ
全部ゴミが入ってるじゃないの
ハァ、自分で洗って使え? アタマおかしいんじゃないの?
0508デフォルトの名無しさん
2016/01/22(金) 14:32:16.34ID:QVNa2tJM0509デフォルトの名無しさん
2016/01/22(金) 16:43:02.27ID:JjkkXr1Aこれどういう意味?
そもそも論理値なんて概念はCには無いし
単に整数で比較してるだけだろうに
ifの…評価が…式に適用される??
0510デフォルトの名無しさん
2016/01/22(金) 16:50:07.52ID:dviPRbltエスパーすると単に式であればエラーならないことを言っているんだろう
0511デフォルトの名無しさん
2016/01/22(金) 17:01:31.13ID:3zzK2PtEif (a = 1) を文法エラーにして
if (a == 1) と強要したという話だろう
0512デフォルトの名無しさん
2016/01/22(金) 17:17:22.35ID:rH3H4J7vif (1 == a) が推奨みたいな話もあったな
0513デフォルトの名無しさん
2016/01/22(金) 17:17:38.35ID:Nk1dYniH単に論理値が存在しない問題を何か勘違いして
式がどうのと言っちゃってる可能性大だな
boolean b = false;
if (b = true) System.out.println("ok");
0514デフォルトの名無しさん
2016/01/22(金) 17:24:05.70ID:3zzK2PtE○ if (a == 1) と強要したいという話だろう
>>513
Java vs C の間は、その部分に関して同じだよね
0515デフォルトの名無しさん
2016/01/22(金) 18:48:47.64ID:sYC1tQRVそれはjavaじゃなくてc#でした。
まぁ勉強して仕様大体把握できました。
mainが下に来るのは慣れないっす。
あと、ヘッダにextern書いてボディにも本体書くとか何の意味あるのかとかいまいち分かってません。
0516デフォルトの名無しさん
2016/01/22(金) 19:12:27.04ID:papJD+Lzならmain上に書けばいいだろ
0517デフォルトの名無しさん
2016/01/22(金) 19:24:28.02ID:sYC1tQRV0518デフォルトの名無しさん
2016/01/22(金) 19:32:07.01ID:0g5nn+BU0519デフォルトの名無しさん
2016/01/22(金) 20:03:36.84ID:papJD+Lz0520デフォルトの名無しさん
2016/01/22(金) 20:06:43.86ID:0StJWjHm関数の実体のソースファイルでもそのヘッダをインクルードする目的は
ヘッダでのプロトタイプ宣言と実体の定義内容とが一致してることを
コンパイル時にコンパイラにチェックしてもらうためだよ。
やらなくてもコンパイルはできるしプログラムは動作するけど、
やっといた方が間違いを見つけやすいので好ましい。
Javaだとリンク段階でチェックされるのかな?
0521デフォルトの名無しさん
2016/01/22(金) 22:27:45.45ID:jTMGJc5I> これはコンパイル通らないよね?と思っているのがバンバン通ります。
>>515
> それはjavaじゃなくてc#でした。
ふぁっ??
bool b = false;
if (b = true) System.Console.WriteLine(
0522デフォルトの名無しさん
2016/01/22(金) 22:29:02.87ID:GDAtUH1+GCCでLTOを有効にするとリンク時にもチェックしてくれる。他の処理系はシラネ。
0523デフォルトの名無しさん
2016/01/22(金) 22:29:08.20ID:kXJvYH2o);
C#でもコンパイルはバンバン通るわけだが?w
ただwarningが出るだけであってw
0524デフォルトの名無しさん
2016/01/23(土) 01:33:26.87ID:VoXQl1Qagccとかだとオプションが必要だけど、aliasなりで常につけるようにした方がいい
コンパイラの型警告はかなりしつこくなるけど、全部直した方が安全
0525デフォルトの名無しさん
2016/01/23(土) 08:06:39.60ID:hXc+Q7TL0526デフォルトの名無しさん
2016/01/23(土) 10:10:12.38ID:Tt4ej2Eeどういう文章?
K&Rなんてもう20年くらい見てないから覚えとらんわw
0527デフォルトの名無しさん
2016/01/23(土) 10:45:48.36ID:xqToPitJ0528デフォルトの名無しさん
2016/01/23(土) 11:42:45.80ID:4pLQQZj10529デフォルトの名無しさん
2016/01/23(土) 11:45:49.30ID:wu3iaE45int a;
printf("%p\n" , a) ;
printf("%p\n" , &a) ;
とした場合、どちらもaのアドレスを表示すると思っていたのですが
違いました
&があるのとないのではどう意味が違うんでしょうか?
0530デフォルトの名無しさん
2016/01/23(土) 11:51:56.03ID:BpJ08GBsそもそもprintfは値として渡された物を書式に従って出力する関数。
aだとaに代入されている値が関数に渡されて、
&aだとaのアドレスが値として関数に渡される。
あるいはもっと切実な話をすると、
aがchar**型だとしたら、aと&aと*aは全部ポインタになるけど
その値は一般的には違う物になるよね。
それを意味論的に分けて考えて表示したい時に、%pが勝手に引数の解釈を変えたら困る。
0531デフォルトの名無しさん
2016/01/23(土) 13:00:38.15ID:A3hLtNYo渡された値をアドレスとして表示してくれるだけ
例のaだけのほうだと、aに入った値をアドレスとして表示しようとする
0532デフォルトの名無しさん
2016/01/23(土) 14:00:40.07ID:Lok9lOLd単にこういうことな
char c = 'a';int i = c;long l = c;
printf("%c %c %c\n", c, i, l);
printf("%d %d %d\n", c, i, l);
printf("%p %p %p\n", c, i, l);
これ実行すると
a a a
97 97 97
0x61 0x61 0x61
%pは「アドレスを表示」じゃなくて「単に16進で表示」の方が近い
0533デフォルトの名無しさん
2016/01/23(土) 15:41:29.24ID:wu3iaE45>>531
>>532
ありがとうございます %p で出力するとアドレスだ出力されるものだと思っていました
0534デフォルトの名無しさん
2016/01/23(土) 16:00:18.93ID:TP8lOr4+%pとかあるのか、いままでずっと0x%xって書いてたわw
0535デフォルトの名無しさん
2016/01/23(土) 16:08:11.20ID:WP4XiwuV%p は16進表示じゃなくてポインタの表示であって、引数に void* 以外渡すと
未定義動作になるから気をつけて使うように。
>>529 で &a を表示してる例も、キャストを入れて (void*)&a とするのが望ましい。
入れなくても動く環境がほとんどだけどね。
0536デフォルトの名無しさん
2016/01/23(土) 16:16:25.56ID:0uWz0x3q入れないと動かない環境一つ以上詳しく。
0537デフォルトの名無しさん
2016/01/23(土) 16:33:44.22ID:WP4XiwuVhttp://www.kouno.jp/home/c_faq/c5.html#17
> 古いHP 3000シリーズはバイトアドレスとワードアドレスで異なる
> アドレス指定の方法を使っていた。だから同じアドレスを指していても、
> voidとcharのポインターは、intの(構造体なども)ポインターと違った
> 内部表現を持っていた。
0538デフォルトの名無しさん
2016/01/23(土) 16:36:21.47ID:iFLpPtX0(void*)&a
しないと動かないというソースよろしく
0539デフォルトの名無しさん
2016/01/23(土) 16:36:22.73ID:x7wsLJ4u0540デフォルトの名無しさん
2016/01/23(土) 16:38:17.55ID:vCzR1C5c0541デフォルトの名無しさん
2016/01/23(土) 16:40:56.91ID:TP8lOr4+16進でアドレスを表示させたいわけじゃなくて、
ポインタとして意味のある値を表示して欲しいって意味でキャスト無しで%p使うのもダメ?
0542デフォルトの名無しさん
2016/01/23(土) 16:41:15.39ID:WP4XiwuVえ?
%p は渡された値を void* として操作するんだから、内部表現の違う int* を渡してたら
正常に動作しないのは当然じゃないの?動くように実装するのは不可能だと思うんだけど。
printf() 実装の中じゃ実引数の型なんかわからないんだし。
0543デフォルトの名無しさん
2016/01/23(土) 16:44:38.35ID:ZB4QwEVsお前がどう思うかを聞いているんじゃない
動かない、の証拠を見せてくれと言っている
> キャストを入れて (void*)&a とするのが望ましい。
これでもいいぞ
これが望ましいとする文献を一つでもひいてこれたら
俺はお前にありがとう勉強になったと言う
0544デフォルトの名無しさん
2016/01/23(土) 16:45:03.96ID:WP4XiwuV厳密には未定義動作。未定義動作だから期待通り動くこともあるし、実際そうなる環境が多い。
>537 のリンク先にあるような稀な環境まで含めて移植性を最大限にすることに価値が無いコードだと
言い切れるならダメということもないと思う。
0545デフォルトの名無しさん
2016/01/23(土) 16:49:43.47ID:WP4XiwuV動かないの証拠は無いかなぁ。 >537 のリンク先にあるような環境も手元に無いし。
文献でいいなら JIS C でどう?
7.19.6.1 fprintf 関数
http://kikakurui.com/x3/X3010-2003-01.html#206
> p
> 実引数は,void へのポインタでなければならない。 ...
...
> ... 実引数の型が対応する変換指定に対して正しくない場合,その動作は,未定義とする。
0546デフォルトの名無しさん
2016/01/23(土) 16:51:10.11ID:TP8lOr4+(void *)以外のポインタを渡したときの動作が厳密には未定義なの?
その渡したポインタ依存の表示になるのではないの?
0547デフォルトの名無しさん
2016/01/23(土) 16:51:53.95ID:TP8lOr4+おお。ごめん理解した。
0548デフォルトの名無しさん
2016/01/23(土) 16:53:25.62ID:RFw3K97vおk、もういいよ
証拠もなければ経験も無いのに言ったわけだね
その返答で十分
0549デフォルトの名無しさん
2016/01/23(土) 17:26:23.05ID:ACxJywqs0550デフォルトの名無しさん
2016/01/23(土) 18:38:29.82ID:A3hLtNYoそんな環境があることも%pの仕様がvoid*のみだということも知らんかったわ
0551デフォルトの名無しさん
2016/01/23(土) 18:49:57.20ID:jjYbvGIM0552デフォルトの名無しさん
2016/01/23(土) 19:07:09.54ID:S7jNr+aw規格に〜〜しなければいけないと書いてあるのに、そうしなければ動かない証拠だせとか。
0553デフォルトの名無しさん
2016/01/23(土) 19:19:20.49ID:BpJ08GBsその渡したポインタ依存の表示になる「かもしれない」。
なるからなないかは実装や環境に依存する。
0554デフォルトの名無しさん
2016/01/23(土) 19:39:16.75ID:F2GISj/i0555デフォルトの名無しさん
2016/01/23(土) 19:59:22.37ID:S7jNr+awsizeof(int*) < sizeof(void*)はワードマシンならばあり得る実装だね
ID:RFw3K97vは理解できましたか?
0556デフォルトの名無しさん
2016/01/23(土) 20:06:39.55ID:BpJ08GBs>>545が言ってる「未定義動作」は
7.19.6.1.9:
If a conversion specification is invalid, the behavior is undefined. If any argument is
not the correct type for the corresponding conversion specification, the behavior is
undefined.
だからundefinedって意味。
そんでもってundefinedの方の未定義動作は、
実行時に予測不可能な値を返しても良いし、コンパイルできなくても良い事になってる。
0557デフォルトの名無しさん
2016/01/23(土) 20:51:05.74ID:BlQsRwma対象を (void*) でキャストするべきだってことの理由は
>>542 が十分に説得的だと思うがね。
動かない証拠を示せ(動かない環境の実例を挙げろ)って
要求はそもそも筋が違うんじゃないかと。
もちろん、筋違いだいうことを証明しろと言われても無理だが。
0558デフォルトの名無しさん
2016/01/23(土) 21:08:46.46ID:WP4XiwuV「>>545が言ってる「未定義動作」は」も「undefinedの方の未定義動作は」も、同じだよね?
undefined behavior = 未定義動作で、意味はそれしか無いと思ってるんだけど、どういうこと?
0559デフォルトの名無しさん
2016/01/24(日) 04:56:33.25ID:f7pzKq0s結論がどこに書かれてるのか分からないから、見出しから全部読まされる。
0560デフォルトの名無しさん
2016/01/24(日) 09:49:52.46ID:YuSBWhfF0561デフォルトの名無しさん
2016/01/24(日) 12:07:54.26ID:QohUoDbS今時ネットワークもデータベースもGUIも扱わない言語とか意味ない
組込みで使われているとかいったってメーカーは未来がないの明らかだし
オシロスコープとか半田ごてとか使ったデバッグなんか電子工学専門のやつがやった方がいい
教育関係者が時代の流れに付いていけてないからいつまでもC言語なんていう化石言語にしがみついてるけど
教育関係者の既得権益のためだけに存在しているだけのゴミ言語
0562デフォルトの名無しさん
2016/01/24(日) 12:21:04.02ID:4ZCEMBL40563デフォルトの名無しさん
2016/01/24(日) 12:36:00.08ID:aa7cqZRyお前がしがみついてるLLもCかC++で記述されてるわけだが。
バカな愚民はそれが上位者から与えられたものだと理解できない。
0564デフォルトの名無しさん
2016/01/24(日) 12:38:54.71ID:U2BkwJ1U0565デフォルトの名無しさん
2016/01/24(日) 12:42:22.16ID:U2BkwJ1U教育分野ならLisp系のScalaとかふさわしい言語はいくらでもある
0566デフォルトの名無しさん
2016/01/24(日) 12:48:42.17ID:4ZCEMBL40567デフォルトの名無しさん
2016/01/24(日) 12:50:33.40ID:EtsnNE6eマルチパラダイムではあるけどLispというよりはむしろJavaの方が近いだろ
0568デフォルトの名無しさん
2016/01/24(日) 13:24:55.26ID:I3hxJf040569デフォルトの名無しさん
2016/01/24(日) 16:09:16.89ID:6rvYTtSNもっとキビキビうごくべきだ。ウェブブラウザがつかってるJavaScriptこそ愚劣。愚鈍の元凶だ
0570デフォルトの名無しさん
2016/01/25(月) 20:35:56.38ID:zf+nEsaX0571571
2016/01/25(月) 21:25:15.10ID:5o1dXGqO『C言語 ポインタ完全制覇』をWin上のVirtualBox+Linuxで
勉強しています。
ソースは以下です。
http://ideone.com/o2lB7o
http://ideone.com/sHvkH9
1つ目は可変長引数の関数を作りました。
Segmentation Faultとなります。
2つ目はクイックソートのプログラムです。
こちらもSegmentation Faultとなります。
2つ目のプログラムではint型の配列から
char型の配列への変換の仕方もわかっていません。
どなたかご教授お願いします。
0572デフォルトの名無しさん
2016/01/25(月) 21:34:12.68ID:MTh5r7jR1つ目:!=を=!って書いてる
2つ目:right_index--とするべきところで++してる
0573571
2016/01/25(月) 22:01:44.56ID:5o1dXGqOお返事ありがとうございます。すぐ理解されるなんて
上級者のかたなのですね。
1つ目は上手くいきました。ありがとうございました。
2つ目は572さんの言うところが間違っていたので
書き換えたのですが、まだsegmentation faultとしか
でません。
よろしくおねがいします
0574デフォルトの名無しさん
2016/01/25(月) 22:16:42.89ID:rVrFKv/m++してるとこ2か所あるでしょ
あとprintfしてるのがローカル変数のアドレスになってるけど見たいのは中身でしょ
http://ideone.com/bFJWLb
0575デフォルトの名無しさん
2016/01/25(月) 22:59:52.22ID:MTh5r7jR(left+right)/2
よりは
left+(right-left)/2
と書くべきだよね。
これによる影響が出るのが普通じゃないケースだから本当にどうでもいいんだけど。
0576デフォルトの名無しさん
2016/01/25(月) 23:36:59.55ID:xvjEE6gTその違いって、何?
0577デフォルトの名無しさん
2016/01/25(月) 23:49:02.61ID:MTh5r7jRただの足し算だとキャリーオーバーフローする可能性がある。
その結果を2で割るとleftやrightより小さな値が得られる。
後者ではその可能性は排除される。
0578571
2016/01/25(月) 23:55:08.32ID:5o1dXGqOありがとうございました。
全て問題は解決しました。
初心者なのでまた質問させていただくと思います
よろしくおねがいします。
0579デフォルトの名無しさん
2016/01/26(火) 00:03:34.55ID:DpSNwlQs思ったんですが、そういう桁あふれの可能性は
コンパイラがうまく処理してくれるようにはならないんでしょうか?
そういうのは、仕様とにらめっこしているプログラマの役割なんですかね?
0580デフォルトの名無しさん
2016/01/26(火) 02:05:23.41ID:U8DjCw8X未定義動作はコンパイラが都合がいいように解釈して、場合によっては素敵なバイナリを作ってくれる
ttp://cpplover.blogspot.jp/2014/06/old-new-thing.html
0581デフォルトの名無しさん
2016/01/26(火) 04:29:12.69ID:en75rJef0582デフォルトの名無しさん
2016/01/26(火) 10:20:39.55ID:8FYVyjVA0583デフォルトの名無しさん
2016/01/26(火) 17:25:27.08ID:eKv0VZf+0584デフォルトの名無しさん
2016/01/27(水) 14:07:39.32ID:Pto6ddp0『C言語 ポインタ完全制覇』をWin上のVirtualBox+Linuxで
勉強しています。
ソースは以下です。
http://ideone.com/0eMgIK
http://ideone.com/Hc67Hc
1つ目はコンパイルできますが、英文ファイルを引数に
しても何も動作しません。
2つ目はとても基本的なことでしょうが、理解できてません。;;
ご教授よろしくお願いします。
0585デフォルトの名無しさん
2016/01/27(水) 14:23:17.95ID:YnVB9WDG一つ目は標準入出力から得たデータをbuf配列へ入れていくプログラム。
実行後、キボードから適当に入力してCLTR+Zを入力してみてください。
2つ目は
bb=int_to_str(a);
でエラー出てる。
char bb[20];
を
char *bb;
とするか
bb=int_to_str(a);
を
strcpy(bb,int_to_str(a));
とする。
0586デフォルトの名無しさん
2016/01/29(金) 00:31:39.68ID:A8Omu85i(1) シフト演算子(「>>」や「<<」)は、右辺が0でもいいんでしたっけ;
(2) C標準ライブラリのmemcpy()やmemmove()は、第3引数が(size_t)0でもいいんでしたっけ;;
0587デフォルトの名無しさん
2016/01/29(金) 07:48:10.41ID:HI9V2WVT0588デフォルトの名無しさん
2016/01/29(金) 08:30:27.04ID:iWXq7w4x0除算はいいんですか?
0589デフォルトの名無しさん
2016/01/29(金) 09:04:35.48ID:uNLw2+tE未定義
0590デフォルトの名無しさん
2016/01/29(金) 11:43:57.01ID:/5mJkDc70591デフォルトの名無しさん
2016/01/29(金) 11:58:13.04ID:HI9V2WVTnビット右シフト <-> 2のn乗で割る
2の0乗は1だから定義可能な算術だ
0592デフォルトの名無しさん
2016/01/29(金) 12:13:53.55ID:x/sxD8MEどうだっけ。
0593デフォルトの名無しさん
2016/01/29(金) 12:15:34.69ID:HI9V2WVT0594デフォルトの名無しさん
2016/01/29(金) 12:22:51.29ID:x/sxD8ME6.5.7.5:
The result of E1 >> E2 is E1 right-shifted E2 bit positions. If E1 has an unsigned type
or if E1 has a signed type and a nonnegative value, the value of the result is the integral
part of the quotient of E1 / 2 E2 . If E1 has a signed type and a negative value, the
resulting value is implementation-defined.
要約:符号付き型で負の数の場合、右シフトの結果は処理系依存だよ!
0595デフォルトの名無しさん
2016/01/29(金) 21:16:45.63ID:WT7mu4NaSEEK_SETで最初に戻してランダムに行の文字列を取ってくるようにしたのですが
私のPCでは問題無く動くんですが、EOFまで読んだファイルって
EOFになった情報がセットされるとかどっかで見ました
これって他のPCだと変な動作になる可能性ありますか?
0596デフォルトの名無しさん
2016/01/29(金) 22:57:18.71ID:Hpd/92hjmjd!!?
算術シフトが無いCPUでもsigned intの演算速度を落とさせないための配慮なんだろうか、、、
0597デフォルトの名無しさん
2016/01/29(金) 23:58:28.04ID:wSlTo5Cq0598デフォルトの名無しさん
2016/01/30(土) 00:19:44.01ID:ilOv8EKS0599デフォルトの名無しさん
2016/01/30(土) 00:42:27.57ID:HpDJFp9+確かにcharがsignedかunsignedかは処理系依存
ただし、表示可能な文字は正、とだけは決まってゐる
ハズ
0600デフォルトの名無しさん
2016/01/30(土) 02:27:08.09ID:xES4tsnw0601デフォルトの名無しさん
2016/01/30(土) 08:38:59.28ID:AurOqJPwfseek() 関数の機能としてEOF状態の解除が含まれてるはず。
おかしな状態になったら「ライブラリがバグってやがる」と
文句を言えるくらいに大丈夫、だと思う。
0602デフォルトの名無しさん
2016/01/30(土) 09:26:10.22ID:6qZO0/Pj算術シフトとは
0603デフォルトの名無しさん
2016/01/30(土) 17:39:19.09ID:ECbFIrJaそれを聞いて安心しました!
ありがとうございます
0604584
2016/01/30(土) 18:29:33.42ID:G92s9ZB+レスありがとうございます。2つ目は上手くいきました。
ただ1つ目の方はまだうまくいきません。
実は本には、9行目はchar型ではなく、int型と書いてありました。
勝手にこれは、誤りだとおもってchar型に変えました。
http://ideone.com/0eMgIK
どなたかご指導お願いします
0605デフォルトの名無しさん
2016/01/30(土) 18:34:17.83ID:eSJs9CE40606デフォルトの名無しさん
2016/01/30(土) 18:43:08.27ID:1awzzRNNint 型のままでいい,ファイルの終わりと文字'0xff' との区別をつけるため http://codepad.org/c50zWkLt
標準入力をキーボードにとるのがうまくいかない場合は,
プログラムの実行ファイルを a.exe,適当な英文ファイルを test.txt とした場合,
a.exe < test.txt
と入力してみるといい
0607デフォルトの名無しさん
2016/01/30(土) 18:49:48.14ID:nIpvaiJY%Sじゃなくて%s
0608584
2016/01/30(土) 19:12:36.18ID:G92s9ZB+>>606
なぜか単語5個の英文で、それをやると、
<<<<<
と出力され、”数”が出力されません。
実行環境がWin+VW+Linuxなのがまずいのでしょうかね。
0609607
2016/01/30(土) 19:21:19.88ID:nIpvaiJY>>604あて
>>608
printf("<%S>\n" , buf);じゃなくて
printf("<%s>\n" , buf);
書式が間違ってるから表示されない
0610デフォルトの名無しさん
2016/01/30(土) 20:37:01.86ID:72muWdcr0611584
2016/01/30(土) 20:42:23.97ID:G92s9ZB+上手くいきました! sとSの違いでした…;;
0613デフォルトの名無しさん
2016/01/30(土) 22:03:11.56ID:FCZ73JzIこの事実は・・・
0614デフォルトの名無しさん
2016/01/30(土) 22:07:01.98ID:XFryV8Mcドライバーも鉄鋼製品だから製鉄やるべきって理屈?
0615デフォルトの名無しさん
2016/01/30(土) 22:21:58.32ID:FCZ73JzIpython一式ががpythonでかけるのけ
0616デフォルトの名無しさん
2016/01/30(土) 22:24:26.51ID:6Po/ckh80617デフォルトの名無しさん
2016/01/30(土) 22:28:56.89ID:I8QYzQc60618デフォルトの名無しさん
2016/01/30(土) 22:30:48.96ID:FCZ73JzIそういう時期は誰でもあるから
0619デフォルトの名無しさん
2016/01/30(土) 22:51:15.62ID:WPy6oV1/C#とかはほとんどC#で書かれてるけど、一部Cを呼ぶんだよね
ソース追ってってexternに来ると面倒でしょうがない
0620デフォルトの名無しさん
2016/01/30(土) 22:55:39.46ID:CogBGL7bPyPyのほうがC言語に近いだろ。
0621デフォルトの名無しさん
2016/01/30(土) 23:11:34.52ID:1jV8LkZN問題はなんとなく王道言語だと思って来る人で
0622デフォルトの名無しさん
2016/01/30(土) 23:56:20.96ID:72muWdcrじゃあアセンブラ使ってるからアセンブラ学ぶべき
機械語使ってるから機械語使うべき
電子回路使ってるから電子回路使うべき
半田ごてつかってるから半田ごて使うべきになるのかよ
半田このやろう
0623デフォルトの名無しさん
2016/01/31(日) 00:23:34.54ID:zJ6m2KtS別に必要ないなら使わなくてもいいんだよ
C#くん 呼んじゃったし
0624デフォルトの名無しさん
2016/01/31(日) 11:31:50.43ID:0VTupv6x> 機械語使ってるから機械語使うべき
ここから意味不明になってるぞ
0625デフォルトの名無しさん
2016/01/31(日) 13:23:49.81ID:OtXGSzkV0626デフォルトの名無しさん
2016/01/31(日) 14:12:40.40ID:iwDB+Nosべきで言うのなら電子回路まで学ぶべきだな
電子回路を手で作りたいわけじゃないからはんだごては学ばんでもいい
0627デフォルトの名無しさん
2016/01/31(日) 14:28:15.08ID:a4GTRLT50628デフォルトの名無しさん
2016/01/31(日) 14:42:25.63ID:m2D4t7R9デバイスドライバみたいなものを書くのが楽になるし
プログラムが普通にできる奴ならすぐ理解できる程度の難易度
アナログ的な特性とか、それより下位のレイヤーは、
プログラミングにはあんまり関係ないし、
難易度が一気にあがる
0629デフォルトの名無しさん
2016/01/31(日) 14:50:34.96ID:9arms57EGa-As合金なんて無かったんや・・・・・・
0630デフォルトの名無しさん
2016/01/31(日) 20:19:44.80ID:efxfc/YXC言語なんていうオワコン言語に今更時間とエネルギーを費やす価値はない
0631デフォルトの名無しさん
2016/01/31(日) 20:29:35.57ID:zJ6m2KtS知らないみたいだね
0632デフォルトの名無しさん
2016/01/31(日) 20:30:03.12ID:1GkI/C5F(貴方視点で)終わってるなら、そっとしといてくれや
0633デフォルトの名無しさん
2016/01/31(日) 20:41:14.25ID:GpQ4uNr/君はなんでそんなに苦しがってるの?
そんな投稿で何かが変わるの?
ここで呻いてもどうしようもないよ。
何が原因なのか、どうなったら解決できるのか、そこを考えよう。
0634デフォルトの名無しさん
2016/01/31(日) 21:08:46.51ID:qHH5NNfaならスレみなきゃいいのに
0635デフォルトの名無しさん
2016/01/31(日) 22:18:14.90ID:iwDB+Nosぜひともそのレスをする時間とエネルギーに関しても費やす価値が無いことに気が付いてほしい
0636デフォルトの名無しさん
2016/01/31(日) 22:44:33.90ID:8GI8e/FD大脳だけでは生命維持できないが、脳幹が無事なら生命維持だけはできる。
0637デフォルトの名無しさん
2016/01/31(日) 22:54:50.92ID:eL72H0FT「歪み」を何と読むかで、理系頭か文系頭かがわかるように
0638デフォルトの名無しさん
2016/02/01(月) 00:04:00.65ID:dRJvSEmL変に頑張って特定のソフトで日本国内オンリーでシェアが上がったらガラパゴス化するだろ
PC98とか一太郎とか
0639デフォルトの名無しさん
2016/02/01(月) 00:27:29.46ID:Jui80FAm0640デフォルトの名無しさん
2016/02/01(月) 06:12:40.67ID:ZBzDFClp低レベルな人がいるんでないの?
すまん、上の文は言葉遊びだ。読み流してくれ。
0641デフォルトの名無しさん
2016/02/01(月) 20:27:50.33ID:aq9Mx2ga0642デフォルトの名無しさん
2016/02/01(月) 20:46:21.44ID:rMTqXsJZmallocで獲得した領域を開放したいときにfreeを使う。それ以上の意味はない
0643デフォルトの名無しさん
2016/02/01(月) 21:06:15.74ID:gmWomOLnmalloc したら必ず解放 ← プログラマが守るべきルール
0644デフォルトの名無しさん
2016/02/01(月) 21:11:25.81ID:tIibSl+X0645デフォルトの名無しさん
2016/02/01(月) 21:13:05.58ID:L4FPlr7pいろんな修正が入った後でfreeが必要になったけど入れ忘れてメモリリークしてて後から困れ
0646デフォルトの名無しさん
2016/02/01(月) 22:37:46.45ID:6f/LcOayメモリ確保は出来るだけまとめてやって、使い終わったら必ず開放するのを心がけるようになった。
0647デフォルトの名無しさん
2016/02/01(月) 23:20:57.92ID:dRJvSEmLVirtualAllocで4メガぐらいガバっと確保して
allocが有るたびに前から順番に渡していくだけ
再利用はしないし、フリーリストの管理もない
4メガ使い切ったら新しく4メガ確保
4メガのメモリブロックがどこからも参照されなくなったらVirtualFree
歯抜けになっても再利用しないし開放も出来ないのでメモリ効率が悪い
その代わり確保も開放もめちゃくちゃ早い
allocはメモリブロック使用量変数をサイズ分増やすのと参照カウンタを上げるだけ
freeは参照カウンタを下げるだけ
Interlocked系関数を上手く使うことでマルチスレッドでも同期処理無しで動く
0648デフォルトの名無しさん
2016/02/02(火) 09:01:12.29ID:E+FKouYL0649デフォルトの名無しさん
2016/02/02(火) 12:54:02.26ID:WkrnCzmRバカがオレオレ malloc サイコー
ってドヤってるだけ
0650デフォルトの名無しさん
2016/02/02(火) 17:23:23.85ID:rX0rX7Nf0651デフォルトの名無しさん
2016/02/02(火) 17:36:01.74ID:Ip2iNyidある時刻になればひっそりと実行して勝手に終了するプログラムをCで作りたい
んですが可能でしょうか?
具体的には15:00になったら
Cフォルダにあるnumber.txtに1という文字を追加していくプログラムです。
0652デフォルトの名無しさん
2016/02/02(火) 17:41:55.68ID:7f7wf/mW0653デフォルトの名無しさん
2016/02/02(火) 17:44:32.20ID:MWyXjmPG0654デフォルトの名無しさん
2016/02/02(火) 20:23:56.83ID:2Sj5nBMPという部分はOSの機能 >>653 を使うのが楽だと思うけど
仮にいちいち自作すると
・UIの隠し方と終了方法をどうするのか
で余計な手間がかかる。日をまたぐならさらに
・OS再起動後も継続する
ってことでいいんかな。やっぱりいちいち作りたくないな
0655デフォルトの名無しさん
2016/02/02(火) 21:41:26.58ID:ucpE/ELv定期動作させたい部分にフック。
定期動作に不要な初期化なんかのメモリを解放して終了。
こんな感じだっけね。
0656デフォルトの名無しさん
2016/02/02(火) 22:06:47.69ID:yOFSQOe0そんなプログラム作ったとして何の役に立つとよ?
0657デフォルトの名無しさん
2016/02/02(火) 22:19:25.76ID:7S2eAgvu0658デフォルトの名無しさん
2016/02/02(火) 22:55:07.53ID:+n78UQ/o0659デフォルトの名無しさん
2016/02/02(火) 23:36:40.20ID:7S2eAgvu0660デフォルトの名無しさん
2016/02/03(水) 00:40:12.39ID:ayAcYB0t0661デフォルトの名無しさん
2016/02/03(水) 00:46:37.03ID:7nc06kA40662デフォルトの名無しさん
2016/02/03(水) 02:00:07.63ID:ZY8+tRrgRubyが現れた!Pythonが現れた!PHPが現れた!Perlが現れた!Javaが現れた!Awkが(ry
魔王オワコンは困惑している!
オシロスコープはにげだした!半田ごてはにげだした!
0663デフォルトの名無しさん
2016/02/03(水) 07:24:42.47ID:FAarDA2Dバカ発見
0664デフォルトの名無しさん
2016/02/03(水) 18:28:26.63ID:6g6gbrY0すいません。
本当はキーロガーを作りたいんです。
クライアント管理ソフトみたいなの作りたくて
キーログってその基本じゃないですか?
タスクスケジューラだと時間指定だから
条件発動できないじゃないですか
どうすればいいですかね?
0665デフォルトの名無しさん
2016/02/03(水) 19:08:39.32ID:ySPeAyr8Cで作る作らないの前にOSのAPIだと思うけど
0666デフォルトの名無しさん
2016/02/03(水) 19:55:26.21ID:5VKefHqDウィルス(マルウェア)になりうるからな…
0667片山博文MZ ◆T6xkBnTXz7B0
2016/02/03(水) 20:57:30.85ID:PDk33kNH半端な出来だと経歴に傷が付くぞ。
0668デフォルトの名無しさん
2016/02/03(水) 21:13:10.96ID:ycDP2Q2/> タスクスケジューラだと時間指定だから
> 条件発動できないじゃないですか
はあ?
テメーが
> ある時刻になればひっそりと実行して…
> 具体的には15:00になったら…
つったんだろうが
0669デフォルトの名無しさん
2016/02/03(水) 21:41:12.92ID:u1wZgCbuwhile(1) {
if(ishour15()) {
execute_keylogger();
}
sleep(1);
}
}
0670デフォルトの名無しさん
2016/02/04(木) 11:06:24.14ID:GZ4dZRgg普通のマクロのaに書いたものがaに置くのと同じじゃないですか?
0671デフォルトの名無しさん
2016/02/04(木) 11:19:47.94ID:xESoReV8FOO1("%d\n", 1)
とやると プリプロセッサの引数の数が不一致でエラーになる
#define FOO2(a) printf a
FOO2(("%d\n", 1))
と括弧込みで展開するのは一つの手だけど
printf ("%d\n", 1)
~~~~~~~~~~~~~ ここが引数の部分
printf から fprintf に変えつつ 出力先を stderr にってな場合にはどうしようもない
それが
#define FOO3(...) fprintf(stderr, __VA_ARGS__)
FOO3("%d\n", 1)
こう書けるようになっておいしい
0672デフォルトの名無しさん
2016/02/04(木) 11:35:48.93ID:GZ4dZRggコンマが関係なくなるという意味があったんですね。
ありがとうございます。
0673デフォルトの名無しさん
2016/02/04(木) 22:45:13.78ID:R19753iMそういうエディタがありますか?
毎回調べてすぐ忘れてマジしんどいです。
0674デフォルトの名無しさん
2016/02/04(木) 22:57:12.63ID:KJLuK0Ig0675デフォルトの名無しさん
2016/02/04(木) 23:38:13.73ID:+Y8C24ZPVisualStudioが一番
他のIDEでもだいたい出せるし、エディタでも特に高機能なやつならプラグインがあったりする
0676デフォルトの名無しさん
2016/02/05(金) 09:20:03.09ID:jtmJ9DAX1要素のサイズと要素数の順をすぐ忘れる
0677デフォルトの名無しさん
2016/02/05(金) 17:25:23.00ID:Zl3yCQ2Q0678デフォルトの名無しさん
2016/02/05(金) 17:47:46.22ID:o3yfcjVc0679デフォルトの名無しさん
2016/02/05(金) 18:26:23.00ID:ZPivzzR9それじゃ駄目なのか?
0680デフォルトの名無しさん
2016/02/05(金) 22:23:27.03ID:2THMBE2Eキーロガーとサーバーと
何の関係が有るんですか?
0681デフォルトの名無しさん
2016/02/06(土) 15:07:33.66ID:D7PR4EVc0682デフォルトの名無しさん
2016/02/06(土) 15:19:41.91ID:ZpLAymRqすぐにデータが欲しいとか、ターゲット側に証拠を残したくない場合に
サーバで記録する
0683デフォルトの名無しさん
2016/02/06(土) 17:37:29.90ID:Yx87UQ8j路鳥師という言葉は初見なんだけど、
もしかして縦書き表示の2ちゃんねるビュア用の倍角強調表現かな。
0684デフォルトの名無しさん
2016/02/06(土) 18:04:52.37ID:4STRQeN+0685デフォルトの名無しさん
2016/02/06(土) 18:05:10.48ID:qkAA7xMq0686デフォルトの名無しさん
2016/02/06(土) 22:07:21.64ID:CLV5WMIc1つ目は配列の数値を表現するプログラムです
コンパイルして、実行して数値を打っても何も動きません
http://ideone.com/XEZ1eX
2つ目は標準入力としてファイルを読み、それを出力する
プログラムです。3つのソースで動きます。
こちらもコンパイルできたのですが、ファイルを引数に
実行しても動きません。
http://ideone.com/3MfVZt
http://ideone.com/QwE5qg
http://ideone.com/CgnTBA
よろしくお願いします。
0687デフォルトの名無しさん
2016/02/06(土) 22:51:15.89ID:JenVg3C/とりあえず一つ目はwhileをどうやったら抜けるのか分からない
入力無しでEnterしても改行は必ず入るよ
0688デフォルトの名無しさん
2016/02/06(土) 23:11:17.26ID:G9N4zA900689デフォルトの名無しさん
2016/02/07(日) 09:13:38.83ID:ihWrHU4lJavaとc言語 勉強してますが c++は
かなり違いますか??
0690デフォルトの名無しさん
2016/02/07(日) 09:28:03.47ID:eIUfmNbyJavaは、オブジェクト指向だから、Javaでかいたら、C++にかきなおしやすい
Javaは、グローバル変数がないため、(#defineもない)さきにCでかいたら、Javaにかきなおすのは、たいへんかもしれない
0691デフォルトの名無しさん
2016/02/07(日) 10:19:19.12ID:7OAFDS8O順次・分岐・反復に関してはどのプログラミングも共通(gotoは除く)
なのでライブラリが分かりにくいC++のほうが頭使うからとの事です。
Cは標準ライブラリだけで単純すぎる気がします。
0692デフォルトの名無しさん
2016/02/07(日) 10:26:40.95ID:HPtrUBPyCが理解できないとそもそもC++が理解できない。
ライブラリ使いながら学ぶタイプの人間ならC++からでも問題はないかも知れないが。
0693デフォルトの名無しさん
2016/02/07(日) 10:59:31.20ID:jvYVRZ1r0694デフォルトの名無しさん
2016/02/07(日) 11:02:11.78ID:ADbKW/eV0695デフォルトの名無しさん
2016/02/07(日) 11:20:01.84ID:YehISXuU> なのでライブラリが分かりにくいC++のほうが頭使うからとの事です。
認知症の予防にはいいんじゃね?
0696デフォルトの名無しさん
2016/02/07(日) 12:14:33.18ID:pDArDbnYc#のパクリ言語のjavaなんてやる必要ないし、
c++の構文引き継いでるc#の方がやりやすい。
0697デフォルトの名無しさん
2016/02/07(日) 13:54:07.48ID:5D2B2THMどちらのプログラムもstdin「標準入力」からデータを読んでいる。
標準入力は通常、キーボードからの入力を受け入れる。
キーボードから標準入力に入力する場合、
データの終わりは Ctrl + D (Ctrlキーを押しながらDキー、Shiftは不要) を押す。
これが >>688 の教えてくれたことの意味。
ちなみに Ctrl + D で入力終了はLinux(Unix)の場合。
DOSやWindowsだと Ctrl + Z (画面には ^Z と表示される)の後に Enter、
だったと思うがちょっと自信がない。
ここまでを踏まえて2番目の質問。
このプログラムはファイル内容を読むようには作られていない。
標準入力から読んで画面に、より正確にはstdout「標準出力」に出力する。
ファイルから読ませたい場合は、標準入力の切り替え(リダイレクト機能)を使う。
具体的には下行のような感じ。
$ prog < file.txt
< file.txt で「標準入力をキーボードでなく file.txt に切り替えろ」という意味。
ファイル名を指定して内容を表示するプログラム、つまり
$ prog file.txt
のような使い方をするプログラムを作る場合は
1. 最初に(ファイル名を指定して)ファイルを開く
2. ついでファイルを読む
3. 最後にファイルを閉じる
という手順になる。
とりあえず、こんな説明で分かるだろうか。
0698デフォルトの名無しさん
2016/02/07(日) 18:35:20.16ID:EGgUv7/Gstrcpy(a,b);
aは変化しますが
bはどうなるんですか?
0699デフォルトの名無しさん
2016/02/07(日) 19:01:54.58ID:6NGyEHk4constなので変わりません
0700デフォルトの名無しさん
2016/02/07(日) 19:44:42.95ID:HPtrUBPystrcpy("from", to);
0701デフォルトの名無しさん
2016/02/07(日) 19:49:44.53ID:fu54F6yL貴様が生まれてくる前から copy destination source の順に決まっている
0702デフォルトの名無しさん
2016/02/07(日) 20:14:36.67ID:ZO1JcykC先輩にデバッグしやすように#ifなどのプリプロセッサをガンガン使うように
指示された。
確かにデバッグはしやすくなったが、コードが読み辛くてたまらん。
使わないとおこられるし。
Cやってる人は、みなさん、#ifなどのプリプロセッサをガンガン使うのでしょうか?
0703デフォルトの名無しさん
2016/02/07(日) 20:19:47.87ID:jvYVRZ1rで終わる話
せいぜい気の利いたエディタを探して色付けをマシにするくらいかな
昔そのプロジェクト専用の grep を自作したのを思い出した(関数名や条件コンテキスト付随)
0704デフォルトの名無しさん
2016/02/07(日) 20:36:38.57ID:pDArDbnYそもそもなんでその手のプロじゃない人材を平気で投入するんだろう。
あんま詳しくないから勉強期間くれと言っても、速攻でぶちこむし。
中途半端な知識でやらされて、手が止まって無駄な時間ばっか使うわ。
0705デフォルトの名無しさん
2016/02/07(日) 20:51:12.39ID:ADbKW/eVCで何をしたいのかにもよると思うけど、低レベル開発なら選択肢ないからなぁ
0706デフォルトの名無しさん
2016/02/07(日) 20:52:33.07ID:oPkfyoq8デバッグ目的ならデバッガ使う方が良いんじゃ?
0707デフォルトの名無しさん
2016/02/07(日) 20:59:20.86ID:ol9Dn32yなんで? いくつものバリエーションを盛り込んだものをソースファイルひとつで作るって事?
自分は「デバッグをしやすくするために」 #if とかは使わないなぁ。
0708デフォルトの名無しさん
2016/02/07(日) 21:02:12.26ID:ZO1JcykC正確にはデバッグではなくて、テスト用に使う、でした。
0709デフォルトの名無しさん
2016/02/07(日) 21:10:45.20ID:YehISXuUそこら辺は趣味の領域だから、半分くらいの人には違和感あると思う
0710デフォルトの名無しさん
2016/02/07(日) 21:15:31.15ID:pDArDbnY0711片山博文MZ ◆T6xkBnTXz7B0
2016/02/07(日) 21:18:38.79ID:6NGyEHk4C言語には大文字小文字の区別がある。
ヌルポインタを表すならNULLが正しい。
0712デフォルトの名無しさん
2016/02/07(日) 21:29:37.55ID:c0FtLi6Sありがとうございます。
http://www.nurs.or.jp/~sug/soft/super/hash.htm
ここなんですけどね、
nullを使おうとすると未宣言だといわれるし、
char *getValue()
char * searchList()
とか、アスタの位置の位置とか色々分からんです。
これって*charを返すように見えるんだけど???
0713片山博文MZ ◆T6xkBnTXz7B0
2016/02/07(日) 21:34:56.73ID:6NGyEHk4とりあえず#include <stdlib.h>を上の方に追加だ。これでNULLが使える。
アスタリスクの前後のスペースには文法上の意味はない。
0714デフォルトの名無しさん
2016/02/07(日) 21:41:04.10ID:pDArDbnY大文字は使えるんですが小文字が使えんです。
ただのタイポですかね。
0715デフォルトの名無しさん
2016/02/07(日) 23:09:44.17ID:g0b3K00onull を NULL で読み替えられるぐらいの知識はある前提でいろいろ書いてるっぽい雰囲気
0716デフォルトの名無しさん
2016/02/08(月) 00:20:54.72ID:8lnEEOYD入門なら別のところへ
0717デフォルトの名無しさん
2016/02/08(月) 07:01:07.43ID:YRs2z8LNこういう間違いをCプログラムの専門家の間では「nullポ」と呼ぶんだ(高峰風)。
これから改良をほどこすサンプル、素朴なコード片の紹介部分だから
実際にコンパイラにかけてみてないだけだと思う。
0718デフォルトの名無しさん
2016/02/08(月) 07:17:40.35ID:ujXDy4GQ0719デフォルトの名無しさん
2016/02/08(月) 09:32:42.28ID:Mf5/oJdGドイツ語由来だからヌルだよとか言い出す馬鹿もいるけど、コンピューターサイエンスは英語読みが原則
0720デフォルトの名無しさん
2016/02/08(月) 10:44:14.20ID:ljIIu1xuというか まだ汗が主流な頃
0721デフォルトの名無しさん
2016/02/08(月) 11:34:46.39ID:M0j0fnEJまだ16bitが生き残ってる頃
0722デフォルトの名無しさん
2016/02/08(月) 12:33:37.32ID:+mZ+QTsE上司と思われる人物が社員に対して「おいトイレに行くでもないのに
何回も立つな」って注意してたんだけど、その社員は背伸びしたかったらしい
プログラマって音立てたり立ったらだめなの?
こういう現場ってホワイトとはいえないでしょうか?
将来C言語で組み込みやりたいと思ってる僕が恐怖を感じた瞬間でした
0723デフォルトの名無しさん
2016/02/08(月) 16:56:21.91ID:3QcKIDeAせめて他人の仕事の邪魔だけはするなってね
逆にバグも少なくて他の人の2倍3倍の生産性が有って他人のコードのバグ探しも素早い
優秀な人材だったら自由奔放にしていても何も言われないと思うよ
ソフトウェアの世界は人によって2倍3倍生産性が違うのは全然普通のこと
ひとたびバグを出せばそれを特定するのに、コードを書く以上に時間がかかるからね
一つのバグをつぶすのに丸一日費やすとかは普通にあり得る
だからバグを出さない人は重宝されて、バグを頻繁に出す人は冷や飯食わされる
つまり君次第だね
0724デフォルトの名無しさん
2016/02/08(月) 19:40:36.78ID:ujXDy4GQ昭和の老害はTAOCPすら学んで無いのか?
0725デフォルトの名無しさん
2016/02/08(月) 20:25:14.41ID:2IUcNUmlむしろその頃に仕事でやってた人はそう言うアルゴリズムの教育受けてたり実装してたりするから、ハッシュとかソートの基礎知識を持ってたりする
0726デフォルトの名無しさん
2016/02/08(月) 20:41:19.19ID:YRs2z8LN仕事や研究機関でコンピュータサイエンスの教育を受けた人と、
ホビーマイコンを我流でいじってた連中とはまるで違うでしょ。
>>720 は後者を指してるんじゃないかと。
自分もそのクチ(ホビー我流)なんで実感として分かる。
というか身につまされる。
0727デフォルトの名無しさん
2016/02/08(月) 21:49:51.51ID:UKgal17Zまあね
バグってるプログラムや基板の相手する仕事ってのは、
バグってる人間の相手もせにゃならんわけで
それを怖がる人にはちょっと無理かなあ
0728デフォルトの名無しさん
2016/02/08(月) 22:04:05.70ID:YQ0+a64D今まではテストで結果を証明してたので、
そこを修整する根拠を示せと言われて困ってる。
0729デフォルトの名無しさん
2016/02/08(月) 22:07:29.62ID:rZ+1cXkYガキじゃないんだから。
周りの人の集中を妨げるだろ。
お前一人の職場じゃないってことを忘れるなよ。
0730デフォルトの名無しさん
2016/02/08(月) 22:14:27.07ID:ZIKWtfuiassertデバッグはいいぞ
0731デフォルトの名無しさん
2016/02/08(月) 23:01:46.07ID:UpNzBg5kテスト専用フレームワークとか作らずとも、直に
#if 0 /*単体テスト*/
/*テスト内容のコメント*/
(テスト用コード)
#endif
でだいたいおk
#if 1にしっぱなしにするリスクはソースコードのコミット前に「単体テスト」でググればワカル
0732デフォルトの名無しさん
2016/02/09(火) 00:32:46.53ID:XhrCkHezhttp://hanabi.2ch.net/test/read.cgi/lic/1454165737/
0733デフォルトの名無しさん
2016/02/09(火) 10:17:28.87ID:zKyrJnIK大原則:人間がやれば済むことは人間様が手間をかけてやる
それをおかしいと思うならCを使うべきかどうか見なおすべき
0734デフォルトの名無しさん
2016/02/09(火) 10:29:35.29ID:VIyyoieF書くよ
ひたすらテストコード書くバイトしてたことある
0735デフォルトの名無しさん
2016/02/09(火) 12:53:23.12ID:zDhnJS+H0736デフォルトの名無しさん
2016/02/09(火) 17:44:09.56ID:CN4QadC3そこにテストがどう関わってるか読めんけど。
0737デフォルトの名無しさん
2016/02/09(火) 18:04:09.58ID:fDhCvDizそれでもテストは必要
0738デフォルトの名無しさん
2016/02/09(火) 20:49:45.71ID:EWOJwJ1Nって、お脳が不安定な方が作業されてるんですか
0739686
2016/02/09(火) 23:37:25.74ID:5G8kNDfrどうもありがとうございました!
2番目の方は完璧に動きました。標準入力とファイルの
扱い方を忘れていました。
ただ1番目の単純な方が想定通りにうごきません;
http://ideone.com/XEZ1eX
下のような結果になります。
Input array size
15
variable_array[0]..15
配列に値を入れていくはずですが、どこがおかしいのでしょうか?
どなたかお教えくれないでしょうか?
0740デフォルトの名無しさん
2016/02/09(火) 23:50:57.70ID:3EOr0/Uo15は配列のサイズを意図してる?
今回は15とだけ入力したのでサイズ1のvariable_array={15}
ができた訳だけど
0741デフォルトの名無しさん
2016/02/09(火) 23:51:50.92ID:3EOr0/Uoサイズ1→要素数1
0742デフォルトの名無しさん
2016/02/09(火) 23:52:27.27ID:XKhjKgOy普通に書くけど?
0743デフォルトの名無しさん
2016/02/10(水) 06:21:24.12ID:AJuMr8NV11行 "Input array size" 「配列の要素数を入れろ」と
14-19行 データ入力ループの実際の動作が食い違ってるんだよ。
14-19行の仕組みだと、数値を任意の個数(EOFまで)入力させて
数値を1個入れるたびに(動的に確保された)配列の要素数を増やしている。
結果として、配列の要素数は入力された数値の個数になる。
11行で表示される通りの動作にしたいなら、
最初に数値を1個だけ入力させて、その値の要素数を持つ配列を確保。
入力ループは配列要素数の回数だけ回す。
0744デフォルトの名無しさん
2016/02/10(水) 09:19:50.49ID:2Jj9x+f9中年のCプログラマーなんか、頭が固く、
皆オブジェクト指向に挫折して、Cの手続き型から抜け出せないw
さらに恐ろしい事実を告げると、Java8ではStreamという、
関数型まで採用されてしまったのだ
今や手続き型の老害は、死ぬのみw
0745デフォルトの名無しさん
2016/02/10(水) 09:27:45.82ID:OtzvJZiD0746デフォルトの名無しさん
2016/02/10(水) 10:58:40.58ID:nNZFJpww0747デフォルトの名無しさん
2016/02/10(水) 11:19:56.25ID:+WwN5s4F特に低レベル開発者
実際の挙動が見えづらくなるからね
でもそういう人は抽象化を必要としてなかったりするから問題にはならない
0748デフォルトの名無しさん
2016/02/10(水) 17:13:13.46ID:+sMp0qjD目の前に実際に動くディバイスが有って、それの制御を書いているような人からしたら
猫と犬は動物クラスで、猫はニャー、犬はワン、と鳴く、などといった
下らない思考パズルや言葉遊びの類に興味を持てないのも仕方ない
彼らからしたらLEDが光ってモーターが回る方が断然面白いだろう
0749デフォルトの名無しさん
2016/02/10(水) 18:51:36.60ID:OnEbfKeK概念なので、とまどう奴はいる
ただし例えば仮想関数はC言語だとこんな実装になるよ〜
ってやってやると、なんだ前からやってるやん
ってスパッと理解してくれる
0750デフォルトの名無しさん
2016/02/10(水) 19:20:29.28ID:nNZFJpwwカプセル化や記述をシンプルにする目的でC++を選ぶ人もいるわけだし。
// C
StringFromAnimal(animal)
// C++
animal.toString();
0751デフォルトの名無しさん
2016/02/10(水) 21:53:09.57ID:QBsTk/Mz配列の変数は先頭の要素を指すものだと見た記憶があるのですが、1番目となにが違うのかよく分かっていません。
ttp://ideone.com/JM7Zwb
これを配列の要素数を取れるように直すにはどうすればいいのでしょうか。
すみません、お願いします。
0752686
2016/02/10(水) 22:24:39.12ID:Trt5lCpBありがとうございました。C言語復帰者なので、至らないところ
だらけです。”Input Some values” とすればよかったのですね。
743さんの予想通りに動きました。
いかせん、現在読んでる書物が中級以上なので、丁寧な説明が
少なくて困っていました。
0753デフォルトの名無しさん
2016/02/10(水) 23:11:21.01ID:eRJ6+i7X0754デフォルトの名無しさん
2016/02/11(木) 00:19:28.48ID:sTXI2tGn0755デフォルトの名無しさん
2016/02/11(木) 06:50:31.44ID:L8ovqpUs関数の引数として渡された配列名は、自動的に配列の先頭要素へのポインタに変換される。
配列とポインタに関してよく見かける説明文だと思うが、これに引っかかってる。
int Count(int arr[]);
int Count2(int *arr);
2つの関数は仮引数の表現(arr[], *arr)は違うが、まったく同じということ。
どちらの arr も int *arr (int型変数へのポインタ)として扱われる。
これにより、関数の返り値 sizeof(arr) / sizeof(int) の意味は、
どちらの関数でも sizeof(int*) / sizeof(int) である。
「int型ポインタを格納するのに要するメモリサイズと、intの値を格納するのに要する
メモリサイズの比」という、あまり意味のない値を計算しているのだ。
で、呼び出された関数の側で、引数の配列に含まれる要素数を知る方法。
配列の要素数は、自動的には関数に渡されないので、
「関数の引数として配列の要素数も与える」のが一般的。
extern int func(int arr[], int elems); /* 外部関数の場合 */
int main() {
int array[10];
int result;
result = func(array, sizeof(array)/sizeof(array[0]));
}
(注意) sizeof() は関数でなく演算子。
sizeof(array) のarrayはポインタには変換されないので
期待通り array[10] のバイト数が得られる。
0756デフォルトの名無しさん
2016/02/11(木) 10:22:05.46ID:OZhLkZUr0757デフォルトの名無しさん
2016/02/11(木) 10:44:16.18ID:6rujyZn/どの言語から始めたらいいと思いますか?
プログラムの{ぜ}の字も分かりません
0758デフォルトの名無しさん
2016/02/11(木) 10:58:01.51ID:vxNioHuUThe sizeof operator yields the size (in bytes) of its operand,
which may be an expression or the parenthesized name of a type.
0759デフォルトの名無しさん
2016/02/11(木) 11:38:39.58ID:Otx75HG3座ってたら死亡率上がるんですが
立つことを注意する人間は殺人未遂として訴えてもいいんですよ
0760デフォルトの名無しさん
2016/02/11(木) 12:55:31.56ID:L8ovqpUssizeof() で返るのはバイト数で合ってるよね。
記憶だけで書いたから調べ直しちゃったよ。
それはそれとして、
「sizeof()が返すのはバイト数ではない」
→ じゃ正しくは何を返すのかも書いてくれよ、小出しにして焦らすなよ。
と感じるのは俺だけの特異な反応だろうか。
0761デフォルトの名無しさん
2016/02/11(木) 13:13:52.42ID:vxNioHuU残念sizeof()では無い。sizeof。
>>758に書いてあるだろ。
0762デフォルトの名無しさん
2016/02/11(木) 15:11:20.84ID:5LqHbRm/不思議に思うかもしれないけどsizeofは演算子なんだよ
0763デフォルトの名無しさん
2016/02/11(木) 15:14:27.14ID:2zWchetY必ず return() って書く人なんだろ
いちいち絡むなよ
0764デフォルトの名無しさん
2016/02/11(木) 15:32:32.65ID:FeJdCYca0765755
2016/02/11(木) 15:54:12.00ID:L8ovqpUsおお、確かに演算子はsizeofで、必ずしも sizeof() とカッコで囲む必要はないね。
型名でバイト数を取りたいときにカッコで囲む必要があるんだっけ。
ご指摘の通り。しかも回答側 >>755 で間違ってるんだからより悪質だった。
size_t bytes;
int a = 3;
bytes = sizeof a; // ok
bytes = sizeof 3; // ok
bytes = sizeof int; // error!
bytes = sizeof(int); // ok
>>763
return にカッコをつけない派です。
retrun とタイポする癖があるんでコンパイラにチェックしてもらってる。
0766デフォルトの名無しさん
2016/02/11(木) 16:40:16.73ID:1NCRSvefバイトは 8bit とは限らない
https://ja.m.wikipedia.org/wiki/%E3%82%AA%E3%82%AF%E3%83%86%E3%83%83%E3%83%88_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)
0767デフォルトの名無しさん
2016/02/11(木) 17:58:20.12ID:OZhLkZUr(´・ω・`)Cのsizeof(char)=1とC#のchar2バイトが頭の中で混ざって間違えて覚えてたごめんね
0768デフォルトの名無しさん
2016/02/11(木) 18:07:19.37ID:FNR4nKd2||
Λ||Λ
( / ⌒ヽ
| | |
∪ 亅|
| | |
∪∪
:
:
‐ニ三ニ‐
0769デフォルトの名無しさん
2016/02/11(木) 18:39:15.40ID:+Uw2l5tWどっかで曖昧が生じるのかと思って前調べたけどわからなかった気がする
むしろ変数とかリテラルのほうがかっこつけたほうがわかりやすいのに
0770デフォルトの名無しさん
2016/02/11(木) 18:50:42.45ID:OZhLkZUrgccとvcどちらかで通って片方でエラーになってた事があった思い出
0771デフォルトの名無しさん
2016/02/11(木) 19:20:29.00ID:L8ovqpUssizeof は演算子だから基本的にはカッコは不要って考え方は納得いく。
関数と見間違えるとか、Cの「最小タイピング主義」とか。
型名でカッコが必要なのは、ポインタ関係じゃなかろうか。
sizeof char * と書けると sizeof(char) * か sizeof(char*) か曖昧になる。
後に続く内容で曖昧さが解消されるかもしれないが、
曖昧さを抱えたまま式を解釈するコンパイラを作るのが大変とか。
0772751
2016/02/11(木) 20:04:21.09ID:iLJD0Fnbお礼が遅くなりましてすみません。
詳しく教えていただきありがとうございます。
>配列の要素数は、自動的には関数に渡されないので、
>「関数の引数として配列の要素数も与える」のが一般的。
参考書では要素数を仮引数に与えていたことを思い出しました。
なぜそのような面倒なやり方をしているのか合点がいきました。
また、sizeof関数に関するみなさんのレスも読ませていただきました。
勉強になりました、ありがとうございます。
0773デフォルトの名無しさん
2016/02/11(木) 20:07:24.55ID:iLJD0Fnb失礼しました
0774デフォルトの名無しさん
2016/02/11(木) 23:42:50.29ID:GKHUTBEj関数へのポインタで躓いています。
本に以下のように書いてありますが、中身が読み取れません。
どなたか、簡単な例でおしえてくださらないでしょうか?
”関数は、式の中では「関数へのポインタ」に自動的に
変換される。ただし、アドレス演算子&のオペランド
であるときと,sizeof演算子のオペランドのときは例外
である”
”関数呼び出し演算子()は「関数」ではなく「関数への
ポインタ」をオペランドとする。”
0775デフォルトの名無しさん
2016/02/12(金) 02:03:53.33ID:bwdIAcv4byte a;
sizeof a + 10
とか
sizeof(byte)+10
みたいに書かれてたらなにが返ってくるのか調べただけだと不安で実行してみちゃうわ
極めて非合理的な仕様だと思う
0776デフォルトの名無しさん
2016/02/12(金) 02:11:20.26ID:bwdIAcv4初心者のうちはあんまり気にしなくていい
配列のとこでも同じようなことが書いてあると思うけど、C言語特有の適当に仕様を決めて、後で見たらなんか変だったパターンのやつだ
関数ポインタは(*f)()とかしなくてもf()で呼べるとこだけ覚えとけ
あとは、sizeofとか&とか、(f+1)()みたいな不自然なことをせざるを得なくなった時に改めて細かい仕様を調査するのがいい
0777デフォルトの名無しさん
2016/02/12(金) 02:29:04.53ID:e+FqND6Xvoid func(){} という関数があったとして、
&func, func の値はどちらも同じ関数へのポインタ。
printf(“%p %p", &func, func);
func(); このfuncは関数へのポインタ。
これでも呼べる。
(&func)();
0778デフォルトの名無しさん
2016/02/12(金) 09:25:22.36ID:OTNNkTevその開始アドレスをポインタ変数に格納することで
ポインタ変数経由で変数の中身を読み書きしたり
関数を呼び出したりできるというだけのこおと
0779デフォルトの名無しさん
2016/02/12(金) 09:28:38.34ID:dKyYxY1Q0780デフォルトの名無しさん
2016/02/12(金) 13:05:19.83ID:LK6Hhi/I実際のところ >>776 の言う通り、細かいことを気にしないのが良い。
「ソースを書くときに直感的かつ楽チンに書けるように仕様を定めたら、
仕様書の方がえらく複雑になっちゃった」という、いかにもCらしいお話の結果だ。
あえて説明するなら下のような意味かな。
……これは自信がないので詳しい人の添削を求む。
#include <stdio.h>
static int func(int arg) {
printf("関数 %s() が引数 %d で呼ばれた\n", __func__, arg);
return arg;
}
int main()
{
int (*pfunc)(int arg); /* pfunc: 関数へのポインタを格納する変数 */
pfunc = func; /* (1) */
pfunc = &func; /* (1') */
pfunc(200); /* (2) */
(*pfunc)(201); /* (2') */
func(300); /* (3) */
return 0;
}
(改行多過ぎエラーが出たのでつづく)
0781780
2016/02/12(金) 13:05:58.13ID:LK6Hhi/I「関数は、式の中では『関数へのポインタ』に自動的に変換される」
(1)のように書ける、ということ
「アドレス演算子&のオペランドであるときは例外」
(1')のように書いても(1)と同じ意味、ということ
「sizeof演算子のオペランドのときは例外」
これはどういう意味だろう?
「関数呼び出し演算子()は『関数』ではなく『関数へのポインタ』をオペランドとする」
(2)のように書いて関数を呼び出せること
(2')のような書き方をする必要はない(書いても同じように動作するけど)ということ
最後に、普通の関数の呼び出し(3)は「まずfuncが関数へのポインタに自動的に変換され、
次いで変換結果である関数へのポインタに対して関数呼び出し演算子()が作用する」
てな具合に動作しているのだ。理屈の上では。
0782デフォルトの名無しさん
2016/02/12(金) 13:39:13.89ID:nnsHRM/E>「sizeof演算子のオペランドのときは例外」
>これはどういう意味だろう?
sizeof(func)
↑これがエラーになるというだけ
『関数へのポインタ』に自動的に変換されるならsizeof(pfunc)と同じになる
0783774
2016/02/13(土) 13:53:58.42ID:NQaIiq8oとくに>>780さんのご説明でわかりました。
コピペして自分のPCに保存しています。
すみません、配列とポインタでもう一つ質問があります。
1 hoge[][]
2 **hoge
3 *hoge[]
4 (*hoge)[]
1と2は同じ中身ですよね?
3と4の違いは分かります。
それでは1,2,3,4の関係はどうなってるのでしょうか?
1と2が同じで、3と4はそれぞれ別物と考えてよいのでしょうか?
0784デフォルトの名無しさん
2016/02/13(土) 13:59:40.77ID:sJF7YOqD確実に理解してない仕組みは不要に使わなくていい。
使うとき勉強、実験したらいい。
0785デフォルトの名無しさん
2016/02/13(土) 15:09:54.02ID:fIKntVXIポインタの配列 struct foo1 { type *pointer; } array[num];
配列のポインタ struct foo2 { type array[num]; } *pointer;
0786デフォルトの名無しさん
2016/02/14(日) 03:42:01.75ID:2H7lNMsF1. int hoge[1][2] は int (hoge[1])[2]の意味で、hoge[0]はint型の2要素の配列を表す(sizeof(hoge[0]) == 値はsizeof(int) * 2
hogeそのものはint型の2要素の配列の配列
2. int **hogeはint *(*hoge)の意味で、*hogeはint型へのポインタ(int*)へのポインタを表す(sizeof(*hoge) == sizeof(int*)
hogeそのものはint型を指すポインタ(int*)を指すポインタ
3. int *hoge[2]はint *(hoge[2])の意味で、hoge[0]はint型へのポインタ(int*)を表す(sizeof(hoge[0]) == sizeof(int*)
hogeそのものはint型を指すポインタ(int*)の配列
4. int (*hoge)[2]はこれ以外書き様が無く、*hogeはint型の2要素の配列を表す(sizeof(*hoge) == sizeof(int) * 2
hogeそのものはint型の2要素の配列を指すポインタ
1と4、2と3がそれぞれ同じような意味だが、1と3はhogeそのものが配列、2と4はhogeそのものはポインタという違いがあり、
hogeそのものの値の変更は(hogeがポインタである)2と4のみでできる、
0787デフォルトの名無しさん
2016/02/14(日) 03:50:28.95ID:2H7lNMsF誤: 2. int **hogeはint *(*hoge)の意味で、*hogeはint型へのポインタ(int*)へのポインタを表す(sizeof(*hoge) == sizeof(int*)
正: 2. int **hogeはint *(*hoge)の意味で、*hogeはint型を指すポインタ(int*)を表す(sizeof(*hoge) == sizeof(int*)
0788デフォルトの名無しさん
2016/02/14(日) 21:37:48.99ID:fEjJVis1未だにコンソールでmakeとか打ってんのか
世間はmakeとか卒業してant, maven, gradleと新しいツールに移行してんのに
オシロスコープと半田ごてでオナニーかよw
組込みとかネットワークもDBもGUIも使わない
バージョン管理システムはCVSですかwせいぜいSVNだろうなwww
世の中はgitに以降してるのにどうしようもねえよプルリとか分かんねえんだろうな
オブジェクト指向、アスペクト思考、依存性の注入とか新しい概念がいっぱい出て来てるのに
手続き型に引きこもってたらこれから日本のメーカーが衰退して組込みの仕事がなくなるのは確実なのにどうすんのよ
C言語なんか週末勉強会なんか全く開かれないし転職サイトでC言語で募集してる記事なんか皆無やぞ
教育関係者が時代の変化に付いていけてなくてC言語しか教えられないから残ってるだけ
オワコンにしがみつくゴミはパチンコ開発でもやってろ
0789デフォルトの名無しさん
2016/02/14(日) 21:48:24.80ID:kQeVlKcr0790デフォルトの名無しさん
2016/02/14(日) 22:37:05.06ID:7PLx3+xaC#とVBは数年がかりで移した
VCから流用してたのが使えなくなるのと追加でいろんな機能をもたせようとしたのが辛いのかかなり苦戦した
やっと目的を達成して今後はC#でかけるから楽だし、構文木とか推論とかもAPIとして公開できて夢広がりんぐ
0791デフォルトの名無しさん
2016/02/14(日) 23:32:26.49ID:AznglxFthttp://hanabi.2ch.net/test/read.cgi/lic/1454165737/
0792デフォルトの名無しさん
2016/02/15(月) 09:06:12.56ID:9ExsxeaN0793デフォルトの名無しさん
2016/02/15(月) 10:10:20.74ID:E84Q1jzsそれ、大部分がC以外で書かれたOSから書いてるんだろうな?
なんていうOS?
0794デフォルトの名無しさん
2016/02/15(月) 11:07:44.59ID:FLuEFg6M0795デフォルトの名無しさん
2016/02/15(月) 12:43:13.36ID:9wbMWgsxそんなのごく一部だろう
0796デフォルトの名無しさん
2016/02/15(月) 13:18:03.18ID:wecJul4I0797デフォルトの名無しさん
2016/02/15(月) 13:19:42.26ID:9ExsxeaN人様にケチつける前にスレ違い発言をどうにかしろよ
0798デフォルトの名無しさん
2016/02/15(月) 13:24:14.87ID:g+W5jzDiclangでopeomp使おうとビルドしてみたんですが、実行すると
スレッド数がOMP_NUM_THREADSに関わらず常に1になってしまいます。
コードはGCC5.2では正常に動きます。
こういうとき何を調べたらいいでしょうか?
OSはCentOS6.7で、llvm、clang、openmpはすべて3.7です。
0799デフォルトの名無しさん
2016/02/15(月) 15:32:38.96ID:cEyJtxrNコンパイルオプションや警告が出てれば全部貼ったほうがいいよ
0800デフォルトの名無しさん
2016/02/15(月) 16:01:00.10ID:g+W5jzDiそうですね、失礼しました。
スマホからだと書くのがきついので、帰宅後にPCから書き込みます。
0801デフォルトの名無しさん
2016/02/15(月) 17:31:04.58ID:g+W5jzDiclang -fopenmp a.c とすべきところを
clang -lomp a.c としたり
clang -openmp a.c としたりアホなことやっていたのが原因でした。
スレ汚しすみませんでした。
なお、llvm一式のビルドには
CentOS6.7標準のgcc 4.4.7は古すぎて
駄目だろうと思ったので、自前でビルドしたgcc 5.2を用いました。
0802デフォルトの名無しさん
2016/02/15(月) 18:05:51.07ID:2DOX1wmDなんだ、ただ多数派か少数派かだけで優劣語る判断能力の欠如した情弱か。
0803デフォルトの名無しさん
2016/02/15(月) 18:15:13.82ID:AZNjQN5i例えば電化製品の電源ONや、温度のボタンなどはscanf()関数が
担っているんでしょうか?
0804デフォルトの名無しさん
2016/02/15(月) 19:32:21.14ID:4oQTQyhgもしかしたら、コンパイラの都合でそもそも使えないかもしれない
0805デフォルトの名無しさん
2016/02/15(月) 20:38:06.25ID:DVDGKYNF実務者でないので確かなことは言えないけど、
たぶんscanf()は担ってないだろうね。
どこかの固定番地のメモリを読むとスイッチの状態が取れる、
みたいな方式がもっとも単純な実現方法だったけど…。
#define SW_ADDRESS ((volatile char*)0xffff00) /* 番地は一例(実際の回路による) */
#define SW_BIT_POWER 0x1
#define SW_BIT_UP 0x2
#define SW_BIT_DOWN 0x4
void read_sw(void) {
char sw_now = *SW_ADDRESS; /* 今のスイッチの状態をメモリの内容として読む */
if (sw_now & SW_BIT_POWER) { /* 電源スイッチの処理 */ }
if (sw_now & SW_BIT_UP) { /* 上矢印ボタンの処理 */ }
if (sw_now & SW_BIT_DOWN) { /* 下矢印ボタンの処理 */ }
...
}
現代の家電制御だと操作部は外部デバイスの扱いで、
ボタンを押すと割り込みがかかる(イベントが発生する)感じなのかな。
0806デフォルトの名無しさん
2016/02/15(月) 20:41:21.97ID:z4NOVyYmいいえ
IOポートをベンダーのライブラリによって変数または関数でアクセスできるようにされています
0807805
2016/02/15(月) 21:01:32.89ID:DVDGKYNFああ、IOポートを忘れてた。_asm_()でIN/OUT命令のラッピングとか。
…以下個人的な記録。"便所の落書き"レベルだが実はこちらが書きたかった。
ところで俺のIDを見てくれ、こいつをどう思う(全部が大文字)。
しかも先頭3文字がDVD、DVD!
0808デフォルトの名無しさん
2016/02/15(月) 21:10:35.79ID:MiqBdzVE)'ーーノ( | | | 、 / l| l ハヽ |ー‐''"l
/ D | | |/| ハ / / ,/ /|ノ /l / l l l| l D ヽ
l ・ i´ | ヽ、| |r|| | //--‐'" `'メ、_lノ| / ・ /
| V l トー-トヽ| |ノ ''"´` rー-/// | V |
| ・ |/ | l ||、 ''""" j ""''/ | |ヽl ・ |
| D | | l | ヽ, ― / | | l D |
| !! | / | | | ` ー-‐ ' ´|| ,ノ| | | !! |
ノー‐---、,| / │l、l |レ' ,ノノ ノハ、_ノヽ
/ / ノ⌒ヾ、 ヽ ノハ, |
,/ ,イーf'´ /´ \ | ,/´ |ヽl |
/-ト、| ┼―- 、_ヽメr' , -=l''"ハ | l
,/ | ヽ \ _,ノーf' ´ ノノ ヽ | |
、_ _ ‐''l `ー‐―''" ⌒'ー--‐'´`ヽ、_ _,ノ ノ
 ̄ ̄ | /
0809デフォルトの名無しさん
2016/02/15(月) 21:55:30.62ID:m+SXox7w0810デフォルトの名無しさん
2016/02/15(月) 22:57:49.99ID:8/hvPvbC0811デフォルトの名無しさん
2016/02/15(月) 23:13:44.55ID:VPv2PLWt0812デフォルトの名無しさん
2016/02/16(火) 00:30:12.02ID:A8sxbaEiお隣の土人レベルで支離滅裂な反論だな。
0813デフォルトの名無しさん
2016/02/16(火) 01:01:51.42ID:QXrSBwPpもはやソフトウェア技術者じゃないよ
C言語はソフトウェアじゃない
0814デフォルトの名無しさん
2016/02/16(火) 01:15:50.67ID:c8/hor6F全部unsignedじゃ駄目なん??
0815デフォルトの名無しさん
2016/02/16(火) 01:32:25.99ID:MBCQ5F1Nunsigned char
int
unsigned int
0816デフォルトの名無しさん
2016/02/16(火) 01:46:52.45ID:leT4GxElオシロスコープは測定器、半田ごては工具。
デバッグに使うのはICE(インサーキットエミュレータ)。
最近はターゲットボードのCPUに直接プローブを接続する代わりに
マイコンのUART機能を利用した簡易ICEを使うことも多いけどな。
0817デフォルトの名無しさん
2016/02/16(火) 01:59:42.70ID:MBCQ5F1N#include <stdio.h>
#include <string.h>
int main(void)
{
char a[] = "32-bit application";
char c[ARRAY_SIZE];
int k;
int length = strlen(a);
unsigned u[ARRAY_SIZE];
printf("sizeof(c) = %d\n", sizeof(c) );
printf("sizeof(u) = %d\n", sizeof(u) );
memcpy(c, a, length);
c[length] = '\0';
printf("strlen(c) = %d\n", strlen(c) );
for(k = 0; c[k] != 0; k++) {
printf("%X ", c[k]);
}
putchar('\n');
memset(u, 0, ARRAY_SIZE);
memcpy(u, a, length);
for(k = 0; u[k] != 0; k++) {
printf("%4X ", u[k]);
}
return 0;
}
0818デフォルトの名無しさん
2016/02/16(火) 05:24:10.84ID:WAHfrhjM単に char と書くと signed char か unsigned char か確定しない。
signed と書かなくても符号付きになる他の整数型と異なる挙動は
不統一で見苦しいって話かな。
0819デフォルトの名無しさん
2016/02/16(火) 08:51:09.83ID:c8/hor6F0820デフォルトの名無しさん
2016/02/16(火) 09:01:09.73ID:rD0NYg0sまず、符号付きとは限らない。処理系定義。
で、符号付きの利点は他の整数型と同じ仕様の方が分かりやすいからじゃないかな多分
0821デフォルトの名無しさん
2016/02/16(火) 09:43:02.89ID:pJeE/dKVC言語自体には文字という概念も無い。
0822デフォルトの名無しさん
2016/02/16(火) 10:35:19.71ID:A8sxbaEi>C言語自体には文字という概念も無い。
あるよ。”abc"とか'a'とか。
文字型変数は無いけど。
0823デフォルトの名無しさん
2016/02/16(火) 11:36:38.20ID:d+4j8JFt0824デフォルトの名無しさん
2016/02/16(火) 12:36:22.55ID:Nv9Fnt/E「ワード」というのは、昔のコンピュータは最小の記憶単位だったのではないでしょうか。
例えば、1960年代初頭の日立のパラメトロン計算機は、21ビットを短ワードと呼び41ビットを
長ワードと呼んでいて、磁気ドラムの記憶容量は、短ワードで8392ワード、長ワードで4192ワード
でした。
計算はワード単位で行いました。
0825デフォルトの名無しさん
2016/02/16(火) 12:48:46.10ID:JA04JtkX∀と∃の違いわかるかな?
0826デフォルトの名無しさん
2016/02/16(火) 15:37:30.09ID:VEJFRQq2顔文字とヨ
0827デフォルトの名無しさん
2016/02/16(火) 15:44:14.92ID:CTU8DF7Hそういう言い方が出来るなら、
無限多倍長整数や、分数、無理数、複素数も
あることになるな。
0828デフォルトの名無しさん
2016/02/16(火) 16:02:53.66ID:VEJFRQq2文字型変数あるやん
0829デフォルトの名無しさん
2016/02/16(火) 16:12:19.64ID:Nv9Fnt/E記号論理学の記号で、「全て」と「或る」と云うことは解っていますが、
これと「ワード」との関係がわかりません。
御教示ください。
0830デフォルトの名無しさん
2016/02/16(火) 16:32:10.70ID:jAB1ZrKHBASIC→アセンブラって来たから信じてた。
0831デフォルトの名無しさん
2016/02/16(火) 17:35:24.24ID:WAHfrhjM「単に1byte長の整数を格納する領域」と見るか、どちらの立場をとるかで
混乱してると思われる。
そして ANSI C 以前のコンパイラ製作者にも両派があった。
charは「文字型」派 ... 単なるcharは符号なし
charは「小さい整数型」派 ... 単なるcharは符号付き
結局ANSI規格でcharは小さい整数と定め、
signed/unsignedの修飾で符号の有無を明示できるようにした。
しかしながら、単なるcharの符号の有無は「処理系定義」。
……たぶん同一商品シリーズのコンパイラ製品をANSI対応版に切り替えたとき、
それまでのソースを変更せずに再コンパイルして、同じ動作を保つため。
(個人的な疑問.1)
古いCコンパイラ処理系には
charにはsigned/unsignedの修飾ができないものが存在したのだろうか?
(個人的な疑問.2)
そもそもsignedという修飾子が新しく追加されたものなのか?
0832デフォルトの名無しさん
2016/02/16(火) 17:52:00.63ID:EwcJlFmr0833831
2016/02/16(火) 19:07:27.59ID:WAHfrhjMMS-DOSでLatticeとかTurboとか言ってた頃までしかさかのぼれないのだ。
K&R『プログラミング言語C』第1版の和訳を読んだ記憶で、
unsignedは確かに見たがsignedがどうだったか記憶があいまい。
デフォルトでsignedだから書く必要はないと印象が薄かったのか、
signedという修飾語が何かの独自拡張だったのかな、という話なのよ。
0834デフォルトの名無しさん
2016/02/16(火) 19:12:10.48ID:EwcJlFmr0835831
2016/02/16(火) 19:23:17.73ID:WAHfrhjMやっぱりsignedはANSI以後だったか。
すると >>831 の疑問.1も自動的に解決というわけだ。
今でも単なるcharの符号の有無をコマンドラインオプションで
切り替えられる処理系が多い(全部か?)のはANSI以前の名残りかもな。
>>833
用語としては「修飾語」でなく「修飾子」と書くべきだったね。
0836デフォルトの名無しさん
2016/02/16(火) 21:03:04.77ID:fXbScveD(SJIS 漢字は 最上位ビットがたった 8bit値のペア)
char が 符号無しのほうが都合が良くなるシーンがあって
コンパイラオプションで逃げれるようにしてあったとかなんとか
多分文字の比較周辺だろう
0837デフォルトの名無しさん
2016/02/16(火) 23:01:02.06ID:rhm6d/76char/signed char/unsigned char全部別の型なんだから文字として扱うのはcharだけでいいのに。
0838デフォルトの名無しさん
2016/02/17(水) 09:39:51.28ID:aScpC0wo0839デフォルトの名無しさん
2016/02/17(水) 12:33:04.22ID:meWsqvoD0840デフォルトの名無しさん
2016/02/17(水) 15:33:30.86ID:/MXgbI0Xint x;
xはint型だから4byteって分かるから
一々sizeof調べる必要なくね?ってお思うんですが…
必要だからあるんでしょうね…
0841デフォルトの名無しさん
2016/02/17(水) 15:34:35.10ID:TSaSWJ2t> xはint型だから4byteって分かるから
いいえちがいます
0842デフォルトの名無しさん
2016/02/17(水) 15:47:24.17ID:9Tg9xwfb関数ではなく演算子
0843デフォルトの名無しさん
2016/02/17(水) 15:53:20.97ID:aScpC0wostruct {
.....
} st_data;
memset(&st_data,0,sizeof(st_data;));
構造体のサイズ、自分で計算するの?
仕様変更のたびに計算し直すの?
0844デフォルトの名無しさん
2016/02/17(水) 17:11:39.31ID:b9cN/SiCint x;
xはint型だから2byteって分かるから…
という具合に書かれてたね。20世紀も遠くなったものだ。
・intは4byteと限らない >>841
・構造体のメモリ配置には穴がある(各要素の大きさの単純な和にならない) >>843
・構造体の構成を変更した時にsizeofなら自動的に追従してくれる >>843
・ところで sizeof は関数ではなく演算子ですよ >>842
俺もひとつsizeofの効用を紹介したい。
int array[10];
for (i = 0; i < sizeof(array) / sizeof(array[0]); i++) {
...
}
上のような処理(arrayの要素数だけループ)の場合、
sizeofで書いておけばarrayの要素数を増減させたときや
arrayの型をintからlongに変えたときでもforの方は手直しする必要がない。
つまりあらかじめ修正忘れバグが生じる危険を除去しておける。
0845844
2016/02/17(水) 17:20:46.04ID:b9cN/SiCfor (i = 0; i < sizeof(array) / sizeof(array[0]); i++) でなく
for (i = 0; i < sizeof array / sizeof array[0]; i++) と書ける。
ということは知ってるけどsizeofにカッコがついてないと落ち着かないわ。
上の2番目の例を見ても、何やら股間がスースーする感じ。
0846デフォルトの名無しさん
2016/02/17(水) 19:51:30.81ID:ZLMxZU9oパンツ穿けよ
0847デフォルトの名無しさん
2016/02/17(水) 21:27:16.78ID:sobQnjjW先頭にアンスコだがどっかのMSDNのサンプルで使われてた
0848デフォルトの名無しさん
2016/02/17(水) 21:55:56.81ID:FcItmVTSintのサイズは実装依存だから
0849デフォルトの名無しさん
2016/02/17(水) 21:56:11.63ID:XCSGc6/ksizeof(型名[n])がsizeof(型名)*nを返す仕様であるため
sizeof(変数名[0])が0になる実装がないとかあるとか
0850デフォルトの名無しさん
2016/02/17(水) 22:52:20.50ID:kFTtiQmOそう思ってたら、64bit の処理系で
int -> 4byte
long -> 4byte
longlong -> 8byte
とか言うのも結構謎だよな。int のサイズが変わる事ってあるのかしらん。
0851デフォルトの名無しさん
2016/02/17(水) 23:32:27.84ID:XCSGc6/k互換性大事にしてLLP64にするか
もしくはLP64で精一杯
0852デフォルトの名無しさん
2016/02/17(水) 23:39:59.64ID:hHciXnJ70853デフォルトの名無しさん
2016/02/17(水) 23:48:02.11ID:mucHor6Xsizeof(*array)のほうがわかりやすいのでこちらを常用したいのですが、問題はありますか?
0854デフォルトの名無しさん
2016/02/18(木) 07:39:27.06ID:tgEJTGBi0855デフォルトの名無しさん
2016/02/18(木) 08:09:04.90ID:86RD4104たぶん正しい。
実際のarrayが配列であるかポインタであるかによらず正しい、と思う。
・sizeof(array[0]) の代わりに sizeof(*array) と書くことに問題は?
たぶん文法的には問題ない。
でも上に出た「配列の要素数を知るのに使う」場面では
sizeof(array) / sizeof(array[0]) という具合に
配列名[0] で書くのがイディオムになってる気がする。
少なくとも sizeof(array) / sizeof(*array) の書き方は見たことがない。
他の人にソースを見せたとき sizeof(*array) だと
「ここは何を計算してるんだ? ……ああ、配列の要素数ね」と
読解のリズムを軽く乱すという弊害はあるかも。
「たぶん」「…と思う」ばかりでアテにならんね。済まぬ。
間違ってたらツッコんでくれ。
0856デフォルトの名無しさん
2016/02/18(木) 11:05:45.49ID:dlsHUuTCCの省略記法が
*(address + index) = address[index]
ってなってるから
array[0], *(array + 0), *array
は常に同じ意味になる。
演算子オーバーロード?知らない子ですね。
0857デフォルトの名無しさん
2016/02/18(木) 11:06:25.55ID:dlsHUuTC0858デフォルトの名無しさん
2016/02/18(木) 14:02:28.82ID:OJ9pcQItごく稀に違うことがある。GCCの拡張機能だしどうでもいいけど
http://melpon.org/wandbox/permlink/HHiSa06qnoFym74G
http://melpon.org/wandbox/permlink/MaLi9c5ZzaiFAqGK
0859デフォルトの名無しさん
2016/02/18(木) 17:09:02.69ID:+9j/40fE書いたらどうなるのか考えてみました。例えばCの組み込みで考えると
クーラーの温度を18°にした状態から26°にしてその後24°にしたら
表示が24°にも関わらず18°の風が出るようになる
こういう迷惑なコード書かれていた場合ってどうやって検出するんですか?
ブラックボックステストだと網羅できない気がします。
Cにそういうコードまで検出するような開発環境ってあるんでしょうか?
0860デフォルトの名無しさん
2016/02/18(木) 17:09:39.99ID:+9j/40fEある条件で誤動作をするようなコードを製品にした段階で
残したままにしてしまった事もあると思うんです。
0861デフォルトの名無しさん
2016/02/18(木) 17:16:46.27ID:lABVi1X/0862デフォルトの名無しさん
2016/02/18(木) 17:47:00.02ID:uosgYTqQExcelのイースターエッグは有名ですね
95 → https://www.youtube.com/watch?v=nwg9eLHZZRo
97 → https://www.youtube.com/watch?v=-gYb5GUs0dM
2000 → https://www.youtube.com/watch?v=unkKO2BY9TU
自分はExcel97のイースターエッグが好きでした
マイクロソフトの職場って楽しそうで良いですね
0863デフォルトの名無しさん
2016/02/18(木) 18:47:57.83ID:hH2RoOce仕様外の動作を検出するテストについて聞いてんだろうが
0864デフォルトの名無しさん
2016/02/18(木) 20:09:10.75ID:qb28fXgBブラックボックステストだと基本無理
その操作を3回繰り返した時だけとか、特定の日時のみとか、いくらでも条件増やせるし
なのでまともな会社はコードレビューとか、ホワイトボックステストとかやってる
そう言うコードは通常のテストでは通らないのでコードカバレッジの計測も有効
0865デフォルトの名無しさん
2016/02/18(木) 20:32:37.77ID:csZ8WmW60866デフォルトの名無しさん
2016/02/18(木) 20:52:35.95ID:0fagojS5機械に自動検出できるわけない。
0867デフォルトの名無しさん
2016/02/18(木) 21:39:07.98ID:B5G89/jK嫌な事件だったね・・・
0868デフォルトの名無しさん
2016/02/18(木) 23:42:28.11ID:pF8TduzOこんなモダンなソース見たことないんですが
githubのこんな流儀のプロジェクトあったら紹介してください
0869デフォルトの名無しさん
2016/02/18(木) 23:47:24.22ID:pF8TduzO#include <stdint.h>
で検索したらいっぱい出ました
0870デフォルトの名無しさん
2016/02/19(金) 06:12:54.61ID:tDicO6hXツールを紹介してくれないかな。手軽に使えるものが好ましい。
関数単位ならGNUのgprofが頭に浮かぶんだけど、
細かい部分ではデバッグライトを埋め込むしか思いつかない。
0871デフォルトの名無しさん
2016/02/19(金) 07:13:26.78ID:UoTVqCBsGCC なら gcov でいいんじゃね?
0872デフォルトの名無しさん
2016/02/19(金) 07:32:50.56ID:SyHnFeOw0873870
2016/02/19(金) 07:36:03.71ID:tDicO6hXまさにgcovがそのためのプログラムみたいね。ありがとさん。
gccの付属ツールだったか。
ツール名が分かっていれば使い方を検索するのは容易だけど、
逆引き(こんな機能のツールはないかしら)を見つけるのは難しい。
自分の環境に適合しないものも出てくるしね。
0874デフォルトの名無しさん
2016/02/19(金) 08:26:30.01ID:UoTVqCBsgcc コードカバレッジ
でググれば普通にでてくる
0875デフォルトの名無しさん
2016/02/19(金) 08:53:19.63ID:MJre7f670876デフォルトの名無しさん
2016/02/19(金) 09:09:12.93ID:oqk65wRo何かトラブルが起こった時どうするの?みたいな考えは山のように浮かぶけど
プログラミングの細かい仕様のアイディアは全然思い浮かばない
こういう俺みたいなタイプってIT業界ではどんな場面で活躍できるんだろ?
0877デフォルトの名無しさん
2016/02/19(金) 09:15:36.05ID:mSn4rtqxスレ違いの話題を振るような奴は活躍できない
0878デフォルトの名無しさん
2016/02/19(金) 09:19:19.43ID:i395RlVRこいつ32bitから64bitへの移植とかやった事無い素人
0879デフォルトの名無しさん
2016/02/19(金) 09:37:01.47ID:oqk65wRoまぁそう言わないでください
いっつもここでは答える側ですよ僕も
0880デフォルトの名無しさん
2016/02/19(金) 10:38:34.04ID:vBd4Joyl読めないから間違いを見つけられない人が多数
0881デフォルトの名無しさん
2016/02/19(金) 11:26:02.90ID:eREs2hdbマ板でやれ
ふわっとした物事の発想が得意なら企画とか向いてるんじゃね?
0882デフォルトの名無しさん
2016/02/19(金) 11:40:24.51ID:cnIR4f5j0883デフォルトの名無しさん
2016/02/19(金) 11:52:05.94ID:WNehkofW同じ記憶容量でおおきくできることだけど (同時に最小値も大きくなってしまうが)
浮動小数点表現で取りえる上限下限の値を支配してるのは指数部だろうし
仮数部を符号なしにして得られるメリットは たいしたことないからなんじゃねーの?
0884デフォルトの名無しさん
2016/02/19(金) 12:44:37.80ID:c03fK/Bb注意しつつアドバイスくれるとか
超良い人間ですねあなた
分かりました企画で就職します!
プログラミング好きだけど組むとなったらやたら時間かかって
0885デフォルトの名無しさん
2016/02/19(金) 13:38:30.42ID:vBd4Joyl就職前にやりこんでおいたほうが吉かも
0886デフォルトの名無しさん
2016/02/19(金) 13:54:19.20ID:unMO5CFjSE/プログラマでいいんじゃね
仮の設計をたたき台にして具体的に検証して改善出来るなら有望
0887870 == 873
2016/02/19(金) 17:17:20.04ID:tDicO6hX確かに「コードカバレッジ」だけをキーワードに検索して
Wikipediaの「コード網羅率」のページを開き、
外部リンクのツール(フリーなもの)の項を見ればgcovにたどり着けた。
「ちっとは自力で調べろや」と言われても仕方ない有様だったわ。
いや、お恥ずかしい。
0888デフォルトの名無しさん
2016/02/19(金) 19:31:19.70ID:unMO5CFj0889デフォルトの名無しさん
2016/02/19(金) 19:54:18.78ID:xsNKFu6i0890デフォルトの名無しさん
2016/02/19(金) 20:03:00.04ID:eREs2hdbまっさらな所から何かコードを書くときはググりながら書くかな
0891デフォルトの名無しさん
2016/02/19(金) 20:13:45.97ID:unMO5CFj0892デフォルトの名無しさん
2016/02/19(金) 20:37:39.81ID:YxSgZRHQ0893デフォルトの名無しさん
2016/02/19(金) 21:59:23.86ID:O+q3yGey日頃使ってる C/C++ は滅多にググったりしないけど、今日久々に Python 使ったのでググりまくった
0894デフォルトの名無しさん
2016/02/19(金) 22:31:43.55ID:xsNKFu6iおいおい覚えてこ。。
0895デフォルトの名無しさん
2016/02/19(金) 22:39:52.84ID:TH2A1UYk0896デフォルトの名無しさん
2016/02/19(金) 23:13:46.93ID:jQ6CZKbbここの認識が間違ってるから。
0897デフォルトの名無しさん
2016/02/20(土) 12:22:14.20ID:7T2ACTsM0898デフォルトの名無しさん
2016/02/20(土) 12:33:55.27ID:3sA1dT+gつうか >>895 の質問はネタお題だよね。
本当に知りたいならこのスレッドは不適かと(どこが適当かは知らないけど)。
0899デフォルトの名無しさん
2016/02/20(土) 16:10:02.64ID:7iTe4rm9日本で言う神は、超人も含む。
0900デフォルトの名無しさん
2016/02/20(土) 18:39:44.13ID:lYQ0UjNJそれって開発上で困らないんですか?
0901デフォルトの名無しさん
2016/02/20(土) 18:41:03.47ID:WX8IzsC4むしろC#にてデザパタ本がない七不思議
0902デフォルトの名無しさん
2016/02/20(土) 19:02:22.14ID:owoJYL1y0903デフォルトの名無しさん
2016/02/20(土) 19:15:28.09ID:OMpzR0PF0905デフォルトの名無しさん
2016/02/20(土) 20:04:18.18ID:OMpzR0PFありがとうございます!
0906デフォルトの名無しさん
2016/02/20(土) 22:07:41.24ID:lYQ0UjNJGUIでプログラミングできる環境がないのは何故?
0907デフォルトの名無しさん
2016/02/20(土) 22:27:14.42ID:cc/ImfAV0908デフォルトの名無しさん
2016/02/20(土) 22:27:57.61ID:cc/ImfAV0909デフォルトの名無しさん
2016/02/20(土) 22:33:21.65ID:7rbbNzFw0911デフォルトの名無しさん
2016/02/20(土) 22:37:22.70ID:twWMzqJZみたいな?
0912デフォルトの名無しさん
2016/02/20(土) 23:17:07.65ID:hK4Y+Ytpあるが実用的ではないので有名にならない
最終的なものを見ながらホームページを視覚的に作れるのは大きな利点だけどプログラミングはそうじゃないから
0913デフォルトの名無しさん
2016/02/20(土) 23:44:24.33ID:y7w1zIclもしデザパタが無くて困ってるのなら、
デザパタを理解していない証拠だよ
0914デフォルトの名無しさん
2016/02/21(日) 04:09:33.41ID:AMz/IHJU0915デフォルトの名無しさん
2016/02/21(日) 09:40:51.73ID:6FoMFdKRビジュアルプログラミング言語とかモデルベース開発とかでググってみれば?
0916デフォルトの名無しさん
2016/02/21(日) 09:59:44.37ID:UzPMPT/jしかし久しぶりにCでコンパイルしようとしたらエラーが出まくった。
structとかvoidとかを書き忘れてたり。
0917デフォルトの名無しさん
2016/02/21(日) 11:20:13.18ID:++cldRkk例えば7って入れないフォルダあるじゃん
0918デフォルトの名無しさん
2016/02/21(日) 11:25:20.11ID:X8k91nqv0919デフォルトの名無しさん
2016/02/21(日) 11:55:35.08ID:phEKpqeY配布・運用後に一般ユーザーで動かすと動きまへんというのはよくやらかす
0920デフォルトの名無しさん
2016/02/21(日) 12:57:38.35ID:pzpae+MZ0921859
2016/02/22(月) 10:34:37.72ID:FsdI40u2コードを一つ一つみてもどういう役割を果たすか分からないと
意味なくないですか?
例えばこれはいらないだろうとかいう数行のコードとか
見分けつくんですか?
0922デフォルトの名無しさん
2016/02/22(月) 10:46:43.11ID:jiaYaktK0923デフォルトの名無しさん
2016/02/22(月) 12:29:05.40ID:FsdI40u20924デフォルトの名無しさん
2016/02/22(月) 13:10:42.53ID:JfDI0x9Fまずコードカバレッジの意味を辞書で調べろ
0925デフォルトの名無しさん
2016/02/22(月) 15:25:01.69ID:NgPLLMlbCにデザパタ?
それはGoFの23個のデザパタを言ってるの?
Design Patterns: Elements of Reusable Object-Oriented Software
まさかCでもOOPできるとかそういうレベルの話をしたいの?
非OOPLで適用できる実用的なデザパタなんて思いつかないんだが
0926デフォルトの名無しさん
2016/02/22(月) 18:07:19.84ID:y6o8tSrfexternダメ絶対。
0927デフォルトの名無しさん
2016/02/22(月) 18:42:37.43ID:JfDI0x9F本質的なところはオブジェクト指向に依存しないでしょ
「継承を使った場合の○○パターン」というような実装例しか理解できてないの?
0928デフォルトの名無しさん
2016/02/22(月) 19:51:31.36ID:WwV2mwuR> 本質的なところはオブジェクト指向に依存しないでしょ
本質が何なのかは、俺にはわからないけど
GoFの23個は全部(?)オブジェクト指向を「前提」としてたハズでは?
手元の翻訳本にはでっかく
「オブジェクト指向における再利用のためのデザインパターン」
って書いてるよ
0929デフォルトの名無しさん
2016/02/22(月) 20:00:09.18ID:WwV2mwuR「本書では、読者が少なくとも1つのオブジェクト指向言語を知っていること、
そしてオブジェクト指向設計の経験があることを前提としている。
我々が型やポリモルフィズムについて、あるいは、
実装の継承と対比してインタフェースの継承について論じたからといって、
ただちに近くの解説本に手を伸ばすようなことではだめである。」
0930デフォルトの名無しさん
2016/02/22(月) 20:16:30.07ID:v4lNOwvrハイ撤収〜♪
0931デフォルトの名無しさん
2016/02/22(月) 20:19:34.32ID:WwV2mwuRイテレータ当たりを言い張られてもつまらないので
それ以外で
0932デフォルトの名無しさん
2016/02/22(月) 20:22:36.65ID:v4lNOwvr0933デフォルトの名無しさん
2016/02/22(月) 20:23:48.76ID:WwV2mwuR0934デフォルトの名無しさん
2016/02/22(月) 20:34:27.59ID:X9AMd52R「こうすればCにもGoFのデザインパターンを応用できる」
「それは○○の機能を使ってないからGoFのデザインパターンと呼べない」
みたいな言い争いになるんじゃないの?
煎じ詰めると「GoFのデザインパターンはオブジェクト指向に依存するか否か」という
元のお題に対するそれぞれの見解を、表現を変えて主張し合う水掛け論に至ると。
その過程でデザインパターンに関する理解が深まるなら歓迎するけど、
きっと俺は前提知識が足りないだろうな。
0935デフォルトの名無しさん
2016/02/22(月) 20:52:26.37ID:v4lNOwvr”デザパタも良く使うデータ構造とアルゴリズムをセットにしてOOP風に纏めたものにすぎない”
それ以上でもそれ以下でもない
ノイマン型コンピュータは、結局のところ、
・メモリにデータをどう配置するかというデータ構造、と
・CPU内部のプログラムカウンタをどう制御するか、という制御構造
しか無い
この二つをパズルのように組み合わせて色々する
これはノイマン型コンピュータの仕組み、ハードウェア由来だから
ノイマン型であれば、何処まで行っても、デザパタだろうが何だろうが
本質はデータ構造とアルゴリズム、色で言うところの三原色
オブジェクト指向だとか関数型だとかいろんな方言が有るが
データ構造とアルゴリズムをオブラートに包むときの表現方法の違いで色々あるだけ
一皮むいたらデータ構造とアルゴリズムが出てくる
当たり前、最終的には機械語なんだからな
0936デフォルトの名無しさん
2016/02/22(月) 21:01:52.33ID:7CRrT+IDそういう人達にとっては古くからのプログラム方法のほうがいいんじゃないかね
web業界はアジャイルだのオブジェクト指向だのデザパタだのどんどん新しい
概念が必要だと思うけど組み込みの場合は30年以上前のプログラミング手法だと思うんだけど違う?
俺は将来組み込みプログラマになりたい、伝統の技を継承したいと思ってる。
偉そうに書いてすいません。
0937デフォルトの名無しさん
2016/02/22(月) 21:06:08.08ID:y6o8tSrfOOPとは限らない。
0938デフォルトの名無しさん
2016/02/22(月) 21:07:18.89ID:7CRrT+ID組み込みは設計(電機電子計卒の仕事)がプログラミングみたいなもんでwebプログラマみたいに
SEを兼ねたりしないイメージなんですが…
0939デフォルトの名無しさん
2016/02/22(月) 21:08:49.31ID:v4lNOwvr東京弁と関西弁と関西弁で、表現力について揉めているだけ
ケンミンショーを開催しているだけ
プログラミング言語がいっぱいあるのは、データ構造とアルゴリズムを
効率的に表現することにおいて、得手不得手や個人の趣味が有るからでしかない
何が何だか分からなくなったら何時でもデータ構造とアルゴリズムに分解して考えればよい
プログラミングの本質、原子であり、2大要素で、これ以上の分類は意味が無いし、それ以外の要素もない
データ構造は空間であり、制御構造は時間と考えても良いし
データ構造は名詞で物体的、制御構造は動詞で”間”、と考えても良い
ノイマン型においてはな!
0940デフォルトの名無しさん
2016/02/22(月) 21:44:58.68ID:HRZm6+Gdこれからはソフトウェアの時代
日本のメーカーはハードウェアのことしか知らない
先細りは目に見えてる
0941デフォルトの名無しさん
2016/02/22(月) 22:12:24.02ID:v4lNOwvr定期的に壊れて買い替え需要が有るし
「物質」なのでリンゴやナスと同じで普通の商売ができるから
ソフトウェアではアメリカに勝てないのがもうよく分かったから
消去法でハードウェアに力を入れているだけ
仮に日本製ソフトが海外でバンバン売れまくるなら各社力を入れるだろうが
アメリカに勝てるわけないからハードとセットにして売っているだけ
あとはアメリカ製ソフトを組み合わせて、顧客の要望に合わせて
プログラムという名のカスタマイズして売っている状況
他は日本固有の土着性の強いパッケージソフトを作って売るとかな
0942デフォルトの名無しさん
2016/02/23(火) 00:21:55.54ID:Od+jz+2uhttp://hanabi.2ch.net/test/read.cgi/lic/1454165737/
0943デフォルトの名無しさん
2016/02/23(火) 01:40:39.07ID:c6FJPsMP0944デフォルトの名無しさん
2016/02/23(火) 02:10:47.83ID:CsrYKjCu組み込みはWebアプリより遥かに範囲が広いよ。
それだけに、トップレベルの必要スキルは高いから、大抵の者が就ける仕事は互いに似たような小型家電になりがち。
0945デフォルトの名無しさん
2016/02/23(火) 08:39:46.36ID:ODpICnBYそのデータ構造と制御構造に、どうアプローチするかが高級言語の仕様。
アプローチの違いで揉めてるわけだよw
0946デフォルトの名無しさん
2016/02/23(火) 09:28:15.21ID:wLklzJNq0947デフォルトの名無しさん
2016/02/23(火) 09:50:59.33ID:sWvQpzuh近頃じゃ怪しくなってるよね。
昔ならそれこそ電気釜は電気釜の専用プログラム、
エアコンはエアコンの専用プログラムだったのに、
今はテレビでも録画機でも、試験用の外部装置をつければ
Linuxの汎用コンピュータ + 拡張デバイスになってたりするもんな。
電話機はもう、小型のPC(通話機能つき)じゃろ。
0948デフォルトの名無しさん
2016/02/23(火) 12:19:34.35ID:+453XExT0949デフォルトの名無しさん
2016/02/23(火) 12:26:32.18ID:P5/V/4Is0950デフォルトの名無しさん
2016/02/23(火) 12:34:29.25ID:570jH2Wu0951デフォルトの名無しさん
2016/02/23(火) 12:37:50.18ID:+453XExT仕様はハード屋が設計した時点でほぼ決まってしまっている
ハード屋の設計ミスで納期遅れ出ても後工程であるソフト開発にしわ寄せがくる
ハード屋がやりたくないデバッグ作業をソフト屋に押し付けられるだけ
オシロスコープと半田ごてなんか使ってて何がソフトウェア技術者なんや
俺は天才プログラマーになりたかったんや
0952デフォルトの名無しさん
2016/02/23(火) 12:40:10.94ID:570jH2Wu0953デフォルトの名無しさん
2016/02/23(火) 12:41:17.93ID:ODpICnBY0954デフォルトの名無しさん
2016/02/23(火) 12:42:44.79ID:ixoIfLlt0955デフォルトの名無しさん
2016/02/23(火) 12:43:25.81ID:+BhKz6nj0956デフォルトの名無しさん
2016/02/23(火) 16:47:23.82ID:ixoIfLlt実行速度の差が反対になるほどなんですけど原因はなんですか?
0957デフォルトの名無しさん
2016/02/23(火) 16:54:43.86ID:TTnQy7CB0958デフォルトの名無しさん
2016/02/23(火) 16:59:41.96ID:ixoIfLlt{
}
0959デフォルトの名無しさん
2016/02/23(火) 17:03:49.26ID:ixoIfLlt{
while(b!=0
{
a%=b;
if(a!=0)
b%=a;
else
return b;
}
return a;
}
gcd2(int a , int b)
{
int temp;
while(b!=0)
{
a%=b;
temp=a;
a=b;
b=temp;
}
return a;
}
晒しました。
0960デフォルトの名無しさん
2016/02/23(火) 19:26:36.07ID:I91l52v4ループで何回も処理させて精度以上にちゃんとしてる?
0961デフォルトの名無しさん
2016/02/23(火) 19:39:23.00ID:ixoIfLlt0962デフォルトの名無しさん
2016/02/23(火) 20:04:25.54ID:4yRoVbnKこのコードは不要なコードとかってどうやってわかるんですか?
例えば使われてない変数x=funciton();があった場合でも実は
必要なケースもあるかもしれないしどうやって判断してるのかなと
0963デフォルトの名無しさん
2016/02/23(火) 21:39:48.24ID:9Kr7JMr6不要なコードはコメントアウトしておくか、消して必要なときにまた書くか
0964デフォルトの名無しさん
2016/02/23(火) 22:12:51.71ID:I91l52v4ポインタを介して参照されてることもあるので注意は必要
C++だと代入もoperator=があるので不要かどうか判断しにくい
int x; int* p; p=&x; x=function();
foo(p);←こういう場合はx=を消しちゃダメ
return;
function();が不要かどうかは優秀なプログラムかプログラマにしかわからない
functionがグローバル変数や引数の書換、副作用のある処理をしていなければ不要だが
それをプログラムで検査するのは大変
だいたいはプログラマが目で追って確かめることになる
0965デフォルトの名無しさん
2016/02/24(水) 08:31:59.00ID:FlUhpr/Tちょっと読んでみたけど、あんまり活発じゃないのね。
0966デフォルトの名無しさん
2016/02/24(水) 08:35:24.04ID:X0nmP2Wx0967デフォルトの名無しさん
2016/02/24(水) 08:38:39.51ID:fFFtJP7cfor()
{
for(){}
for(){}{}for()
}
みたいに改行せずに書いてあった場合
構造を読み取るのはプロでも至難の技ですか?
仮に他人が書いたコードがforが2一つの構造で20個以上
使われてるのにこういう改行無しの場合
まずプログラマはどうするんでしょうか?
0968デフォルトの名無しさん
2016/02/24(水) 09:03:54.80ID:TNtOGmLO環境依存
>>967
読みやすいかどうかはちゃんと実際のコードを見ないとわからない
見映えを直したいなら、cb(1)とかindent(1)とか
0969デフォルトの名無しさん
2016/02/24(水) 09:13:27.42ID:fFFtJP7cあまりにも複雑なら勘違いしそう
0970デフォルトの名無しさん
2016/02/24(水) 09:39:47.53ID:mma8Yghlフォーマッタ使えばいいだろ
0971デフォルトの名無しさん
2016/02/24(水) 09:49:55.99ID:TNtOGmLOindentぐらい入ってないの?
0972デフォルトの名無しさん
2016/02/24(水) 12:05:20.93ID:8JHYf/gB手動でやるってことは構造を解いていくからできるのであって
自動でインデントやってくれる機能ってないんでしょうか?
0973デフォルトの名無しさん
2016/02/24(水) 12:22:51.75ID:JjoY/fea入門レベルの奴は書き込むなよ
0974デフォルトの名無しさん
2016/02/24(水) 12:34:06.37ID:9j05QFbc0975デフォルトの名無しさん
2016/02/24(水) 13:12:38.54ID:FY1/e+a30976デフォルトの名無しさん
2016/02/24(水) 17:06:34.87ID:FlUhpr/T(要するに日本語が壊れたような)質問が多くないか。
「書き込む」の前に、入力した文章を読み直して、
疑問点が伝わる内容か確認した方が、より適切な回答を得られると思う。
0977デフォルトの名無しさん
2016/02/24(水) 19:44:04.95ID:T2ZiLr9a初心者でLinux使いなんてあんまいないし
詳しくは知らないがManpageの種類の番号
で(1)はユーザーコマンドのことでようは普通のプログラムの名前って意味ね
Windows移植版もきっとどっかにあるよ
0978デフォルトの名無しさん
2016/02/24(水) 19:51:35.91ID:+rjhOBbMいやいや,見栄えを直すのは実は思ったより簡単なんです
0979デフォルトの名無しさん
2016/02/26(金) 06:56:03.56ID:bmAp+C+zこういうアーケードゲームも組み込みの範囲内ですか?
C/C++でしょうか?
0980デフォルトの名無しさん
2016/02/26(金) 17:31:26.51ID:9sT3sFGwhttp://www.4gamer.net/games/116/G011678/20120828064/
この記事にアーケードを支えた組み込みエンジニアって書いてるから組み込みが多いのかも、言語は組み込みでならC言語が多くてアセンブリ言語もたまに使われるらしい
0981デフォルトの名無しさん
2016/02/26(金) 19:16:21.24ID:z3yCzaKQそのOSはC/C++が使われていると思うが
ゲーム自体はDirectXやOpenGLが使える言語ならどれでもいい。
0982デフォルトの名無しさん
2016/02/26(金) 21:00:44.28ID:bmAp+C+zということは組み込みの潮流と同じですね
0983デフォルトの名無しさん
2016/02/26(金) 21:04:25.89ID:3qM7nJI0最適化がかかると結果がどうなるかは全く予想できん
逆アンブルを読んでみるしかない
0984デフォルトの名無しさん
2016/02/26(金) 21:10:09.82ID:5zWIUITe全然違うだろ
DxはAPIなんだから言語えらばねーよ
0985デフォルトの名無しさん
2016/02/26(金) 22:13:00.21ID:bmAp+C+zどう違うのか説明してよ
0986デフォルトの名無しさん
2016/02/26(金) 22:51:16.87ID:H4BtjcEZマジで言ってるなら、まず組み込みとは何かを調べた方がいいよ
0987デフォルトの名無しさん
2016/02/26(金) 23:06:47.38ID:bmAp+C+z俺はC/AsmからOS+αの流れを把握して勝手に納得したわけだが
なんでAPIの話しになるんだ?
0988デフォルトの名無しさん
2016/02/26(金) 23:11:06.91ID:oP1C7qwmttps://goo.gl/X0z6DS
0989デフォルトの名無しさん
2016/02/26(金) 23:16:45.43ID:oP1C7qwm0990デフォルトの名無しさん
2016/02/26(金) 23:56:39.52ID:Fu7p+6vG0991デフォルトの名無しさん
2016/02/27(土) 00:27:46.50ID:oo0AZpTuハードとソフト両方使えるなんていいなぁあぁああぁ
0992デフォルトの名無しさん
2016/02/27(土) 02:47:22.04ID:vqfa5BWxソフトから入った人間は大抵中途半端
0993デフォルトの名無しさん
2016/02/27(土) 03:17:03.89ID:oo0AZpTu0994デフォルトの名無しさん
2016/02/27(土) 03:41:56.38ID:oo0AZpTu基盤作って組んだりしてる大学生とか見ると羨ましくなる
こっちは半田付けでさくらんぼ作ってたのにぃぃぃぃいいい
0995デフォルトの名無しさん
2016/02/27(土) 09:48:59.83ID:GGk6IaQQもし経験がPCのみなら、Raspberry Piくらいからトライすると良いと思う。
0996デフォルトの名無しさん
2016/02/27(土) 09:55:21.70ID:qE5vqaqGブレッドボードで何を組んだのか分からんけど…
0997デフォルトの名無しさん
2016/02/27(土) 11:50:31.67ID:fjoQxCAd0998デフォルトの名無しさん
2016/02/27(土) 14:26:48.36ID:gGvU6VKE0999デフォルトの名無しさん
2016/02/27(土) 14:37:27.40ID:fjoQxCAd1000デフォルトの名無しさん
2016/02/27(土) 14:52:13.54ID:tGnOxt/H10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。