C言語なら俺に聞け(入門編)Part 130 [転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2015/08/09(日) 07:05:26.18ID:TarQJqGz★前スレ
C言語なら俺に聞け(入門編)Part 129
http://peace.2ch.net/test/read.cgi/tech/1432674955/
★過去スレ
C言語なら俺に聞け(入門編)Part 127
http://peace.2ch.net/test/read.cgi/tech/1424244688/
ttp://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 168代目
http://peace.2ch.net/test/read.cgi/tech/1408962564/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
# サイズが大きい場合はアップローダ等を利用してください。
ttp://codepad.org/
ttp://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
【重要】
当たり前の事ですが、2chではコピペ荒らしは禁止されています
0002【重要】
2015/08/09(日) 09:22:28.42ID:Mf04DnbChttp URLのh抜きは無意味な上に見苦しいので禁止されています。
------- テンプレここまで
0003デフォルトの名無しさん
2015/08/09(日) 11:06:26.44ID:OP4YbmEH0004デフォルトの名無しさん
2015/08/09(日) 13:33:56.36ID:axnRa0IZお前は一生書き込み禁止な
0005デフォルトの名無しさん
2015/08/09(日) 13:51:11.59ID:aboGxbYP0006デフォルトの名無しさん
2015/08/09(日) 17:29:29.26ID:UBu5K04W0007デフォルトの名無しさん
2015/08/09(日) 17:54:49.68ID:TarQJqGz補集合君が暴れるからスルーしとけよ...
0008デフォルトの名無しさん
2015/08/10(月) 07:44:59.98ID:rIKjhm9i補集合を習ってない中学生が立てたから。
0009デフォルトの名無しさん
2015/08/10(月) 08:36:08.85ID:woEY2l+M前スレの >>1 見てこいよ...
粘着の上にアホとか救いようがないな
0010デフォルトの名無しさん
2015/08/10(月) 11:22:58.35ID:rIKjhm9i前スレも中学生がたてたんだろ。補集合習えばそう言う事もわかるようになるよ。
0011デフォルトの名無しさん
2015/08/10(月) 11:32:28.88ID:F5fikD7Iお前マジで病院行け
0012デフォルトの名無しさん
2015/08/11(火) 22:46:15.01ID:Mgdtb9TF{
int *p;
func(p);
}
void func(int *p)
{
int i;
p=(int *)malloc(sizeof(int)*10);
for(i=0;i<10;i++) p[i]=i;
}
0013デフォルトの名無しさん
2015/08/11(火) 22:47:50.81ID:Mgdtb9TFmain内のint *pをグローバル変数として宣言すると問題は解決する。
意味がわからない。
0014デフォルトの名無しさん
2015/08/11(火) 23:12:44.24ID:gENzvhcqfuncはローカル変数pにmallocした領域のアドレスを代入しただけ。
0015デフォルトの名無しさん
2015/08/11(火) 23:21:11.10ID:gENzvhcq{
int *p; printf("%p¥n", p);
func(&p); printf("%p¥n", p);
}
void func(int **p)
{
int i;
*p=(int *)malloc(sizeof(int)*10);
for(i=0;i<10;i++) (*p)[i]=i;
}
0016デフォルトの名無しさん
2015/08/11(火) 23:21:16.34ID:Mgdtb9TFすっきり。サンクス。
0017デフォルトの名無しさん
2015/08/11(火) 23:47:11.61ID:vcxWn3j/{
void main()
{
int i = 0;
printf("%d\n", i);
func(i);
printf("%d\n", i);
}
0018デフォルトの名無しさん
2015/08/11(火) 23:48:59.37ID:vcxWn3j/void func(int a) { a = 2; }
void main() { int i = 0; printf("%d\n", i); func(i); printf("%d\n", i); }
出力結果は
0
0
だ
0019デフォルトの名無しさん
2015/08/12(水) 00:27:59.35ID:L3mBXOuq習ってないない事をそんなに悔しがるな。
0020デフォルトの名無しさん
2015/08/12(水) 01:01:07.24ID:6/gA/tA70021デフォルトの名無しさん
2015/08/12(水) 04:46:10.56ID:Duyu8hT/どんな言語でも通常は値渡し。
アドレス渡しのときはアドレス渡しの指定をする言語が多い。
0022デフォルトの名無しさん
2015/08/12(水) 06:14:21.40ID:ybFGXm8Q粘着キモッ
自慢の補集合でバカにされたのが相当悔しかったんだな w
0023デフォルトの名無しさん
2015/08/12(水) 13:42:02.50ID:1hIGpXXS0024デフォルトの名無しさん
2015/08/12(水) 13:57:16.35ID:ooDMpDHl0025デフォルトの名無しさん
2015/08/12(水) 13:59:39.08ID:ooDMpDHl0026デフォルトの名無しさん
2015/08/12(水) 14:07:46.56ID:Hhw23eoj値渡しの対義語は参照渡し
アセンブリ言語レベルで見れば、参照渡しもアドレスをスタックに積んでcalleeに渡すことで実現するから値渡しに他ならず、
値渡しか参照渡しかの区別は高水準言語の構文の違いでしかない
逆に言うと言語仕様次第でいろんなケースがありどれが特異で何がメジャーかは言語の版図を比べねば何ともいえない
ちな、
FORTRANとかはデフォで参照渡し
Visual Basicとかは明示的に指定する構文がある(ByValとByRef)
C言語はアセンブリ言語に準じて「全て値渡し」 ←new!
(C++は参照渡しも構文でサポートする
0027デフォルトの名無しさん
2015/08/12(水) 14:12:12.63ID:Hhw23eojアセンブリ言語が透けて見えることが存在意義みたいな言語だが
なにそ設計が超古い言語なのでスタックに積むという概念が当初なかって参照渡しがデフォになったのかもしれん、
知らんけど
0028デフォルトの名無しさん
2015/08/12(水) 17:21:30.71ID:ybFGXm8QFORTRAN ができた当時のマシンにはスタックなんてなかった
なので再帰呼び出しとかもできない仕様だった
参照渡しはスタック関係なくて、ポインタを持たない言語だから参照渡しでないと複数の値を戻せない
なので当時の言語の多くは参照渡しだった
0029デフォルトの名無しさん
2015/08/13(木) 10:24:35.45ID:4eOxFIa9当時はマシン語でサブルーチンも使えたなかったのか?
0030デフォルトの名無しさん
2015/08/13(木) 10:49:40.48ID:NBdm0Dcb0031デフォルトの名無しさん
2015/08/13(木) 13:30:10.19ID:IaxbF1k8FORTRANが最初にできた頃はまだスタックポインタの概念だけあってフレームポインタが無かったのだと思われ
したら、フレームポインタ相対で自動変数にアクセスするとかなテクニックが無い
変数は全てグローバルで、リンク時にアドレスが確定する奴だけ、
サブルーチン/関数の仮引数もご同様に、callee固有のグローバルメモリに書く(最適化でレジスタ渡し)、
原始的なOSはあったがユーザーアプリのマルチスレッドは非考慮、メインプログラムと並行動作するのは割り込みルーチンだけ、みたいな
いや全部想像だけど
0032デフォルトの名無しさん
2015/08/13(木) 14:16:50.56ID:YBCyuJGa誰も言語の実装なんて聞いてない。
0033デフォルトの名無しさん
2015/08/13(木) 14:35:06.15ID:i1KJFY+C0034デフォルトの名無しさん
2015/08/13(木) 14:42:54.14ID:2ltC0v0Q0035デフォルトの名無しさん
2015/08/13(木) 15:47:00.31ID:96XWMJC8> アセンブリ言語レベルでCALL命令とRET命令があるならスタックはあるだろ
残念ながらない
マシンによるけど、例えば CALL 命令はリターンアドレスを特定のレジスタに入れたりする
多重コールするためにはそのレジスタの値をメモリーに書いておく必要がある
そのメモリー領域が固定だったりすると再起すると破綻する
> 当時はマシン語でサブルーチンも使えたなかったのか?
ちなみに今稼働してる汎用機(IBM360アーキテクチャ)もハードウェアスタックは持っていない
もちろんソフトウェアで対処してるから普通にC言語で再起も使えるけど
0036デフォルトの名無しさん
2015/08/13(木) 20:14:19.17ID:i1KJFY+C0037デフォルトの名無しさん
2015/08/13(木) 21:24:25.50ID:96XWMJC8SPレジスタって言うのがスタックポインタを指すなら、>>35 に書いた汎用機や昔のミニコンには無かった
いわゆるマイクロプロセッサでSPを持ってない奴は俺の知ってる限りではない
0038デフォルトの名無しさん
2015/08/13(木) 21:41:19.66ID:IaxbF1k8汎用レジスタの最後のやつ($r29とか)をABIでスタックポインタだってことに取り決めてしているだけ…
ちなみにリターンアドレスレジスタは専用レジスタとして存在する
0039デフォルトの名無しさん
2015/08/13(木) 23:38:20.02ID:VOcpaM0yプロシージャコールはlr レジスタにリターンアドレスを入れて飛ぶbl命令。
push/popは一応あるがポストデクリメントインデックスロード/ストアのエイリアスだよな?
0040デフォルトの名無しさん
2015/08/14(金) 01:22:49.66ID:fUOmNUiihttp://peace.2ch.net/test/read.cgi/tech/1432674955/993の事か?
お前は補集合説明されても理解できない低脳のようだ。中学でたら肉体労働者の道を選べ。
0041デフォルトの名無しさん
2015/08/14(金) 01:40:50.52ID:FkFXC97f0042デフォルトの名無しさん
2015/08/14(金) 09:33:02.21ID:MLtSzQcl0043デフォルトの名無しさん
2015/08/14(金) 09:45:08.24ID:vjnCwLdg0044デフォルトの名無しさん
2015/08/14(金) 10:26:38.65ID:RQZ1qz2w整理整頓が苦手なタイプ?
0045デフォルトの名無しさん
2015/08/14(金) 11:00:25.14ID:Xm+H7pc+これだけの(これ以上の)ヘッダファイルを全部読み込ませろって?
0046デフォルトの名無しさん
2015/08/14(金) 11:09:10.53ID:i+rUiXK3プログラムにいちいちincludeするの面倒くさくね?
0047デフォルトの名無しさん
2015/08/14(金) 11:21:56.87ID:RQZ1qz2wじゃあ、たった一行とかその程度のincludeに対して、
何十行何百行もソースコードを書くのは面倒極まりないなw
0048デフォルトの名無しさん
2015/08/14(金) 11:28:25.27ID:27IJGZ5r#include"/dev/tty"
0049デフォルトの名無しさん
2015/08/14(金) 16:36:58.93ID:MLtSzQcl?
0050デフォルトの名無しさん
2015/08/14(金) 16:55:22.17ID:B5jUJrRI>>46のがタイピング量の問題だと思ったのであろう
0051デフォルトの名無しさん
2015/08/14(金) 19:26:18.87ID:Xm+H7pc+0052デフォルトの名無しさん
2015/08/15(土) 10:59:11.07ID:ZGampa1w関係無いもの、余分なものが知らずに入り込むのを徹底的に恐れるのが真のぷろぐらま
0053デフォルトの名無しさん
2015/08/15(土) 13:07:14.85ID:Tyv45jUEDIとかAOPとかいろんな技術出てきてんのに
完全に時代遅れなんだよ
0054デフォルトの名無しさん
2015/08/15(土) 13:25:21.56ID:/RI7x+zy使っているライブラリ関数のプロトタイプだけ記述しておけば良いってことか?
0055デフォルトの名無しさん
2015/08/15(土) 14:26:01.38ID:C69xVf610056デフォルトの名無しさん
2015/08/15(土) 14:58:54.28ID:U2H5mvyM…と思って今試してみたら、標準モノのincludeはコピペしなかった。
体で覚えとるもんだねー。
0057デフォルトの名無しさん
2015/08/15(土) 19:54:00.13ID:CUQGzyB8標準ライブラリのヘッダファイルはメジャーな奴一通りインクルードしとくのが吉じゃないの
どうせ宣言だけの話で、使わないやつはリンカが無視するし
VCとかならプリコンパイルヘッダーでまとめて#includeしとけば記述量もビルド時間も気にならないし
0058デフォルトの名無しさん
2015/08/15(土) 22:11:02.40ID:CUQGzyB8解説書かコメントに書いてた希ガス(記憶モード
0059デフォルトの名無しさん
2015/08/15(土) 22:13:09.83ID:UMzyrNX20060デフォルトの名無しさん
2015/08/15(土) 22:33:32.35ID:ZM/NfvVBincludeしてるものがバラバラなら、機能分割が適切じゃないと判断できたりする
0061デフォルトの名無しさん
2015/08/16(日) 10:52:10.35ID:FFqXUCaL余分なヘッダファイル入れる余裕なんてなかった。
おまじないで入れとくのはあったけど。
0062デフォルトの名無しさん
2015/08/16(日) 19:18:47.45ID:IJ4hgGlz0063デフォルトの名無しさん
2015/08/16(日) 20:23:15.51ID:cyQ/Mt2/0064デフォルトの名無しさん
2015/08/18(火) 13:03:53.25ID:Pt5up3Gpマッチョビルダーさんが勝手に最適化してくれるんじゃないの?
0065デフォルトの名無しさん
2015/08/18(火) 14:30:53.74ID:y6vFQ3Pk0066デフォルトの名無しさん
2015/08/18(火) 15:47:21.12ID:ASsXs8Xj何言ってんのお前
0067デフォルトの名無しさん
2015/08/18(火) 20:36:38.02ID:ravjHlVt0068デフォルトの名無しさん
2015/08/18(火) 21:05:50.80ID:5VoN7ZyK気になって水も喉を通りません
CPUの型番か何かですか?
0069デフォルトの名無しさん
2015/08/18(火) 21:51:46.74ID:4B2G0AJZ0070デフォルトの名無しさん
2015/08/19(水) 00:26:30.30ID:YoDg1IQL0071デフォルトの名無しさん
2015/08/19(水) 00:39:51.32ID:bO61Namfだなあprintf()にはprintf専用のヘッダファイルが欲しいし
fopen()やfwrite()やfread()も同様ヘッダファイルは関数毎に設けるのが正義
とうぜんライブラリを作るときイケてる>>62はそうしているわけ。
おもしろくない‥
0073デフォルトの名無しさん
2015/08/19(水) 07:47:00.48ID:bNikrGPp0074デフォルトの名無しさん
2015/08/19(水) 08:02:19.59ID:GQnHjma90075デフォルトの名無しさん
2015/08/19(水) 16:23:19.25ID:7p8IeJNLとか、言ってるバカがいるから、すべての仮定義ごとにヘッダーは分ける必要がある。
0076デフォルトの名無しさん
2015/08/19(水) 19:54:03.01ID:VkD/T9ge他人に強要しなければ。
0077デフォルトの名無しさん
2015/08/19(水) 22:53:51.97ID:euar0ROOint x[2][2] = {1,2,3,4}; が定義されているとすると、
私はこうなると思ってました。
x[0][0]=1
x[0][1]=2
x[0][2]=3
x[1][0]=4
x[1][1]=?
x[1][2]=?
x[2][0]=?
x[2][1]=?
x[2][2]=?
でも実際はこうでした。
x[0][0]=1
x[0][1]=2
x[1][0]=3
x[1][1]=4
なぜこのようなことになるのでしょうか?
0078デフォルトの名無しさん
2015/08/19(水) 23:06:47.89ID:A+ikevFq何を勘違いしてるのか知らんがx[2][2]の2というのは要素数の事だぞ。
だからx[0][*]はx[0][0]とx[0][1]の2つしかないぞ。
0079デフォルトの名無しさん
2015/08/19(水) 23:16:29.62ID:h3q9BP1pは x[0] と x[1] しか器を用意してない (x[2] については範囲外で使っちゃいけない)
0080デフォルトの名無しさん
2015/08/19(水) 23:27:42.02ID:kON+6oYOで宣言すれば3*3*3個のint型の変数が用意される
それぞれの変数へのアクセスの仕方は
x[0][0][0]
x[0][0][1]
x[0][0][2]
x[0][1][0]
x[0][1][1]
x[0][1][2]
x[0][2][0]
x[0][2][1]
x[0][2][2]
x[1][0][0]
x[1][0][1]
x[1][0][2]
以下同様
0081デフォルトの名無しさん
2015/08/19(水) 23:29:01.12ID:kON+6oYO0082デフォルトの名無しさん
2015/08/19(水) 23:33:24.63ID:kON+6oYO>すみません、大学院の入試問題を解いてて不思議に思った点があります。
つ、釣られたクマー
0083デフォルトの名無しさん
2015/08/20(木) 00:09:09.45ID:AZARt+fU>>62の知能水準が低いのだからしゃーない
0084デフォルトの名無しさん
2015/08/20(木) 00:10:45.69ID:PZonKGwv0085デフォルトの名無しさん
2015/08/21(金) 08:49:48.03ID:HEDkHo6C0086デフォルトの名無しさん
2015/08/25(火) 17:40:02.53ID:vwyZWK1t0087デフォルトの名無しさん
2015/08/28(金) 11:20:38.56ID:Kof9T1s5変数宣言時、型と変数名の間にはタブを使っています。
でも、関数宣言時、戻り値と関数名の間には1スペースを使っています。
見た目の問題だけの問題ですが、どちらかに統一した方がいいのでしょうか?
0088デフォルトの名無しさん
2015/08/28(金) 11:22:14.18ID:Kof9T1s50089デフォルトの名無しさん
2015/08/28(金) 11:22:35.87ID:uCcB2afg0090デフォルトの名無しさん
2015/08/28(金) 12:36:18.13ID:WxHFBL7Uエディタの設定でタブの代わりに適切な数の空白で埋めてくれるやつがあるはず
0091デフォルトの名無しさん
2015/08/28(金) 16:38:36.36ID:uCcB2afg記憶容量の節約という面だと相当な昔だろ。
ここ最近の20年程度はそんな目的でタブは使われないとおもうが。
0092デフォルトの名無しさん
2015/08/28(金) 17:53:47.28ID:yEzQxbTc但しブログ、掲示板でソース貼り付け時は除く。
0093デフォルトの名無しさん
2015/08/28(金) 18:54:17.82ID:WxHFBL7Uプロポーショナルじゃなければ詰めている□がない
0094デフォルトの名無しさん
2015/08/28(金) 22:54:09.41ID:/yDjITyEタブは環境依存するから、いちいち直してるとコンフリクトしやすいんだよね。
0095デフォルトの名無しさん
2015/08/29(土) 00:20:56.90ID:5CQQSIet?
0096デフォルトの名無しさん
2015/08/29(土) 09:03:26.09ID:lIO44AIh同意
>>95
いちいち直すバカは苦労するって話だろ
タブサイズ変更できないエディターなんて今時珍しいだろうし
0097デフォルトの名無しさん
2015/08/29(土) 10:55:48.95ID:1RMr0U9K8タブ設定の人と4タブ設定の人がやりあうと、同じ箇所を手直しすることになるじゃん?
gitとかvcs使った時のマージでコンフリクトするんだよ。。。
0098デフォルトの名無しさん
2015/08/29(土) 11:08:52.74ID:1x+r04Uf手直しするとき、タブ設定を変えればいいだろ
宗教じゃあるまいし
0099デフォルトの名無しさん
2015/08/29(土) 11:32:21.29ID:mEyV9vcQそれが発生することになるのかがよくわからん。
0100デフォルトの名無しさん
2015/08/29(土) 11:50:09.53ID:lIO44AIh0101デフォルトの名無しさん
2015/08/29(土) 12:10:45.33ID:mEyV9vcQ0102デフォルトの名無しさん
2015/08/29(土) 12:14:33.53ID:w8X4idEwえっ?
直すも何も…てめぇのエディタの設定上だけの話やん
0103デフォルトの名無しさん
2015/08/29(土) 12:58:16.99ID:mEyV9vcQ0104デフォルトの名無しさん
2015/08/29(土) 13:03:47.12ID:1RMr0U9Kossに関わってる全員に強制できるわけ無いじゃん
0105デフォルトの名無しさん
2015/08/29(土) 13:12:34.58ID:1RMr0U9Kコードいじってくるんだよ
と言うか、エディタが勝手に修正しちゃうだろ
設定何て個人の自由なんだし、そういう自由な世界のより集めのコードで成り立っている訳だし
0106デフォルトの名無しさん
2015/08/29(土) 13:22:37.07ID:75OTRCwgプロジェクトの設定にあわすようにすんだろツールで
0107デフォルトの名無しさん
2015/08/29(土) 13:47:58.26ID:mEyV9vcQ?
タブ表示幅の話じゃないのか?どういじってくるわけ?
0108デフォルトの名無しさん
2015/08/29(土) 14:07:36.49ID:iR3ndiCaemacs使ってたらこの混在についてはみんな知ってるだろうけど
0109デフォルトの名無しさん
2015/08/29(土) 15:07:06.87ID:pZ2skf+r8マスタブ設定のエディタで保存したソースを
4マスタブ設定のエディタで読み込んでも4マスタブで表示されるだけじゃん。
0110デフォルトの名無しさん
2015/08/29(土) 15:14:45.48ID:9ExjS67Lタブ幅の設定を変えず、自分のエディタの設定で書いてくるってことだろ
エディタによってはオートインデントで既存のコードを勝手に別のタブ幅で整えてくれるかもしれん
0111デフォルトの名無しさん
2015/08/29(土) 15:17:21.74ID:lIO44AIhコーダーAがソース修正する時に関係ない行の空白を修正
同時にコーダーBがその行を変更したら
って話
>>104
OSS でもプロジェクト毎にコードスタイル決めてるだろうし、そもそもソースファイル修正する時は言われなくても元のファイルのタブサイズに合わせるだろ
0112デフォルトの名無しさん
2015/08/29(土) 15:19:54.27ID:1RMr0U9K普通は合わせるけど、それも個人の自由だからさ…
0113デフォルトの名無しさん
2015/08/29(土) 15:24:48.97ID:1RMr0U9K8派でも、インデントは4スペ使ったりするんだよ…
インデントとタブ幅を必ず合わせなきゃいけないわけじゃないからさ
0114デフォルトの名無しさん
2015/08/29(土) 15:27:05.93ID:75OTRCwgだからって、それをいちいち手でなおしているのか?
0115デフォルトの名無しさん
2015/08/29(土) 15:27:26.42ID:1RMr0U9K0116デフォルトの名無しさん
2015/08/29(土) 15:33:22.98ID:1RMr0U9Kいや、だから直さない気にしない方が良いし、そもそもそんな問題起こすダブが嫌われるって話
0117デフォルトの名無しさん
2015/08/29(土) 15:39:42.04ID:mEyV9vcQ混在したら勝手に直すことになるのよ?
タブを空白に変換したり改行コードを統一したりするのと同じ話だと思うんだが。
0118デフォルトの名無しさん
2015/08/29(土) 15:46:55.17ID:lIO44AIh> それも個人の自由だからさ…
そんな主張する奴には普通コミットさせないだろ
0119デフォルトの名無しさん
2015/08/29(土) 15:56:40.85ID:t4lzWNNN0120デフォルトの名無しさん
2015/08/29(土) 15:59:08.42ID:pZ2skf+r0121デフォルトの名無しさん
2015/08/30(日) 23:53:40.19ID:5WlSK8Ue3ヶ月かけて膨大なソースコードのインデントや桁合わせのスペースを4タブに直したばかりの漏れになんと言う仕打ち…!
0122デフォルトの名無しさん
2015/08/30(日) 23:59:17.89ID:sDG/7JCU0123デフォルトの名無しさん
2015/08/31(月) 08:20:00.51ID:SWBaMMdR経験上、会社なら問題ないと思う
みんな変更したがらないから、やったもん勝ち
0124デフォルトの名無しさん
2015/08/31(月) 12:52:02.88ID:I/nqUJvXみんなが同意してるなら問題ない
勝手にやったのならボコられてもしょうがない
0125デフォルトの名無しさん
2015/09/01(火) 23:24:53.20ID:MZ/X05ll0126デフォルトの名無しさん
2015/09/02(水) 00:17:54.28ID:Ep6/7oo10127デフォルトの名無しさん
2015/09/02(水) 00:23:09.33ID:gPfgGsLz仕事が無くならなくて良いなあw
0128デフォルトの名無しさん
2015/09/02(水) 01:06:07.13ID:AGRtnxMuプログラミング初心者です
サウンドノベルを作ってますが、文字を一文字ずつ出力させたいです。
ググっても出るのはJavaやDXライブラリばかりです
DXライブラリでないC言語(C++)でのやり方の例を知りたいです
0129デフォルトの名無しさん
2015/09/02(水) 04:09:28.86ID:VguevtMllinux系はプログラミング経験ないから知らん。
0130デフォルトの名無しさん
2015/09/02(水) 08:00:48.43ID:DAe+xWqLCtrl+A押して変換ボタン押すだけでは
0131デフォルトの名無しさん
2015/09/02(水) 08:08:19.10ID:YJig55mN逆はうまく行かなくてもタブからスペースは置き換えるだけだから全自動だろ
0132デフォルトの名無しさん
2015/09/02(水) 08:57:14.92ID:wzGiCrowタブ+nマス空白 → タブ2
これで一括変換でいいか?
0133デフォルトの名無しさん
2015/09/02(水) 09:22:29.78ID:gPfgGsLz0134デフォルトの名無しさん
2015/09/02(水) 10:37:55.27ID:urmqHodw0135デフォルトの名無しさん
2015/09/02(水) 13:33:19.51ID:oTTrtdE40136デフォルトの名無しさん
2015/09/02(水) 14:07:41.07ID:urmqHodw彡;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ
イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;r''ソ~ヾ:;;;;;;゙i,
t;;;;;;;リ~`゙ヾ、;;;;;;;;;;;;;;;;;;;;ノ i,;;;;;;!
゙i,;;;;t ヾ-‐''"~´_,,.ィ"゙ ヾ;;f^! / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ト.;;;;;》 =ニー-彡ニ''"~´,,...,,. レ')l. < おまえは何を言っているんだ
t゙ヾ;l __,, .. ,,_ ,.テ:ro=r''"゙ !.f'l. \____________
ヽ.ヽ ー=rtσフ= ; ('"^'=''′ リノ
,,.. -‐ゝ.>、 `゙゙゙゙´ ,' ヽ . : :! /
~´ : : : : : `ヽ:. ,rf :. . :.: j 、 . : : ト、.、
: : : : : : : : : : ヽ、 /. .゙ー:、_,.r'゙: :ヽ. : :/ ヽ\、
:f: r: : : : : : : : !丶 r-、=一=''チ^ ,/ !:: : :`丶、_
: /: : : : : : : : :! ヽ、 ゙ ''' ''¨´ / ,i: : : l!: : : : :`ヽ、
〃: :j: : : : : : : ゙i `ヽ、..,,__,, :ィ":: ,ノ:: : : : : : : : : : : :\
ノ: : : : : : : : : : :丶 : : ::::::::: : : : /: : : : : : : : : : : : : : : :\
0137デフォルトの名無しさん
2015/09/03(木) 03:37:32.91ID:APM+2rA2やられたことあるわ。
一括変換でらえらいことになった。
0138デフォルトの名無しさん
2015/09/03(木) 06:43:29.95ID:upxxgUps0139デフォルトの名無しさん
2015/09/03(木) 09:12:58.81ID:bwOHrxTD0140デフォルトの名無しさん
2015/09/03(木) 11:19:32.46ID:qqXcw9HH0141デフォルトの名無しさん
2015/09/03(木) 11:56:59.53ID:sLGijn2Pページブレーク(改ページ)だな
0142デフォルトの名無しさん
2015/09/04(金) 01:13:14.94ID:1VX8kYzQリリースビルドか否かの判別が
#ifndef NDEBUG
...
#endif
というふうにいつも二重否定になるので違和感
0143デフォルトの名無しさん
2015/09/04(金) 01:16:38.37ID:IG+8/rPl理不尽に思うかも知れんが慣れるしかない
0144デフォルトの名無しさん
2015/09/04(金) 09:57:58.15ID:d8FLtwcpという主張の現れではないか
0145デフォルトの名無しさん
2015/09/04(金) 20:20:12.44ID:lLDO/TT10147デフォルトの名無しさん
2015/09/04(金) 20:40:02.21ID:lLDO/TT1返答ありがとうございます
ポインターを返したいときにポインタのポインタを使うというのは
どういうことのなのでしょうか
0148片山博文MZ ◆T6xkBnTXz7B0
2015/09/04(金) 20:44:03.95ID:rFIKIt4eは、int型の戻り値とchar*型の*ppを返すことができる。
0149片山博文MZ ◆T6xkBnTXz7B0
2015/09/04(金) 20:56:31.56ID:rFIKIt4eアドレスを渡せば、関数側でポインターpを書き換えることができる。
0150デフォルトの名無しさん
2015/09/04(金) 21:25:44.58ID:lLDO/TT1ポインターpを書き換えるために
ポインタのポインタを使うということですか
0151デフォルトの名無しさん
2015/09/04(金) 21:26:08.46ID:2MCw2+A7ポインタの配列がほしいとき
0152デフォルトの名無しさん
2015/09/04(金) 22:42:59.28ID:6EQzrIAR0153デフォルトの名無しさん
2015/09/04(金) 23:31:48.66ID:ScQu4/re0154デフォルトの名無しさん
2015/09/05(土) 00:36:40.73ID:ezd7r+DnCoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGraph);
0155デフォルトの名無しさん
2015/09/05(土) 01:24:51.02ID:jZ9K/01bchar *titles[] = {"Hamlet", "Odyssey"};
Hamlet, Odysseyの先頭アドレスを、200, 300とすると、
titles[0]には200、titles[1]には300が入っている。
さらに、titles[0], titles[1]のアドレスを100, 104とする
char **books[2];
books[0] = &titles[1]; // 104 300→Odyssey
books[1] = &titles[0]; // 100 200→Hamlet
books[0], books[1]には、104, 100が入るので、
アドレス300, 200、つまり、Odyssey, Hamletを参照できる
0156デフォルトの名無しさん
2015/09/05(土) 05:53:52.09ID:zclI+AozIplImage* image = cvCreateImage(cvSize(10, 20), IPL_DEPTH_8U, 1);
printf("width=%d, height=%d\n", image->width, image->height);
cvReleaseImage(&image); // ←imageが指すオブジェクト解放後、image=NULLになる。
ていうか動的に確保・開放するリソース管理のなら、インターフェースを
(1) 開放したらNULLになる (2) NULLの開放はNOP
のコンボにすると悩み事が3〜4個減って良い
0157デフォルトの名無しさん
2015/09/05(土) 06:10:44.38ID:zclI+Aozerrt = fopen_s(&fp, "sample.txt", "w");
if (errt != 0) { 関数を抜ける処理1; }
p = malloc((size_t)1000000);
if (p == NULL) { 関数を抜ける処理2; }
みたいなケースにおいて、関数を抜ける処理1, 2それぞれでfpのclose()やpの確保状況に神経を使いつつ開放処理を書く羽目になるのを回避でくる、
というと古典的なプログラマーの中にはリソースを使うだけの関数を親関数から呼んで親関数で確保と開放をせよと言い出すが
それをのべつまくなくやるのはコーディング労力の無駄遣いなので嫌
0158デフォルトの名無しさん
2015/09/05(土) 20:19:03.33ID:PsNR9tXj書かないで済むわけじゃないから
0159デフォルトの名無しさん
2015/09/05(土) 21:30:22.01ID:MnUBO53Fリソースの解放を関数内でやるのは変わらんだろ。
cvReleaseImageのやり方のポイントはダングリングポインタによる問題を防ぐことだ。
0160デフォルトの名無しさん
2015/09/06(日) 07:45:37.21ID:hkh1gvU8もちわかってるが、FILE*ならFILE*用、ポインタならポインタ用の開放関数を1個定義すれば済むから記述量は減る
(関数から抜けるときにファイルが開かれているのかとか、ポインタがmalloc()された後なのかとかいうif文を書かなくて良くなる
& 新たな機能を起こす度に親関数と子関数を毎回ペアで書かなくとも良い
>>159
>リソースの解放を関数内でやるのは変わらんだろ。
論点がずれトル
・ >>157にはリソースの解放を「関数内でやらない」とは一言も書いてない
・ ダングリングポインタによる問題に対する本質的解決はスマートポインタ
(オブジェクトを使っている奴が居る限り開放させず、使う奴が居なくなったら確実に開放する
だからcvReleaseImage()の仕様が目指すものとは多分違う
0161デフォルトの名無しさん
2015/09/06(日) 09:46:35.86ID:30jMlVbGC言語スレで何言っているんだか。
仮にスマートポインタが「本質的解決」だとして、Cはその「本質的解決」ができないから
何をやっても無駄なんてことはないわけで、CはCでできる範囲で対策すればよい。
そのひとつがcvReleaseImage()のようにリソースの解放とそれを指すポインタの破棄を
まとめて行う手法。
もともとの話はポインタのポインタを使う理由だろ?
0162デフォルトの名無しさん
2015/09/06(日) 09:54:34.26ID:uhlPSgY9>ダングリングポインタによる問題に対する本質的解決はスマートポインタ
本当か?
循環参照はどうするの?
0163デフォルトの名無しさん
2015/09/06(日) 15:31:04.23ID:I4Ed+P43苦しんで覚えるこのページの、文字列の比較なのですが、
何故、for(i=0: i<len+1なのに
下でif(i==len+1)なのかわかりません
上が小なりで、下がイコールなはずかない気がするのですが、教えてください
0164デフォルトの名無しさん
2015/09/06(日) 15:45:07.56ID:DVzwxqmJお騒がせしました。
0165デフォルトの名無しさん
2015/09/06(日) 19:54:06.81ID:oUZslDQp> ダングリングポインタによる問題に対する本質的解決はスマートポインタ
スレチだが...
exitされたらアウトやん
0166デフォルトの名無しさん
2015/09/06(日) 20:29:42.28ID:Ir/JiN9vアウトかどうかは環境とかに依存するから、議論したいなら別なところでやってくれ
0167デフォルトの名無しさん
2015/09/06(日) 21:30:28.39ID:oUZslDQp依存しねーよヴァカ
0168デフォルトの名無しさん
2015/09/06(日) 21:37:10.84ID:W1rl/V9echar *msg = "Hello";
while(*msg!='\0'){
printf("%c\n",*msg);
msg++;
}
という文があるとします。
.
この直後にmsgが指し示す文字は最初からずれてしまって'\0'になってしまってますね。
*msg=='H'になるように初期化するにはどうしたらいいんでしょうか?
あまりそういうことはしないのかな?
0169デフォルトの名無しさん
2015/09/06(日) 21:39:00.46ID:Ir/JiN9vこう言うバカがいるからこの手の話は定期的に出てくる
0170片山博文MZ ◆T6xkBnTXz7B0
2015/09/06(日) 21:40:47.96ID:0zNPIayW俺なら
char msg[] = "Hello";
char *p = msg;
while (*p != 0) {
printf("%c\n", *p);
++p;
}
0171デフォルトの名無しさん
2015/09/06(日) 21:41:12.86ID:Ir/JiN9v> char *msg = "Hello";
char *msg1 = msg;
> while(*msg!='\0'){
> printf("%c\n",*msg);
> msg++;
> }
msg = msg1;
0172168
2015/09/06(日) 22:24:04.76ID:W1rl/V9e>>171
なるほど、そういう手がありますね。
msgが指し示す位置は変わっていくので注意が必要ですね。
よくわかりました!さすが2chのみなさんはスゴイ!!
0173デフォルトの名無しさん
2015/09/06(日) 22:54:51.83ID:0k0tAUH40174デフォルトの名無しさん
2015/09/06(日) 23:14:59.93ID:Y00nafd0配列からわけがわからないんだけどどうしよう
0175デフォルトの名無しさん
2015/09/06(日) 23:22:52.77ID:KRCjd7IN頑張れ
0176片山博文MZ ◆T6xkBnTXz7B0
2015/09/06(日) 23:38:09.56ID:0zNPIayWまずはC言語の入門書を見てごらん。変数は、型を持ったデータの入れ物。
型は、大きさ(サイズ)の決まったデータの種類で、整数型(int,shortなど)や浮動小数点型(float,doubleなど)がある。
配列は同じ型のデータの連続した並び。
int a[3];は長さ3のint型の配列aの宣言。
0177片山博文MZ ◆T6xkBnTXz7B0
2015/09/06(日) 23:44:01.78ID:0zNPIayW最初の要素に666を代入したいときは
a[0] = 666;
と書く。
0178デフォルトの名無しさん
2015/09/07(月) 07:36:52.64ID:JjeaPI5Tありがとうございます
来週テストや
0179デフォルトの名無しさん
2015/09/07(月) 16:59:37.93ID:q6TJJ945そんなに言うなら、何がどう依存するのか示せるか?
0180デフォルトの名無しさん
2015/09/07(月) 18:42:01.65ID:6llEDhWfexit がらみであーだこーだ
0181デフォルトの名無しさん
2015/09/07(月) 18:46:10.10ID:q6TJJ945まあスレチだから仕方ないがpgr
0182デフォルトの名無しさん
2015/09/07(月) 18:51:44.75ID:6llEDhWf0183デフォルトの名無しさん
2015/09/07(月) 20:40:47.12ID:cWScd58Rあとテンポラリファイルちゃんと消せ!
0184デフォルトの名無しさん
2015/09/08(火) 03:13:07.21ID:PbVOYybR>ファイルオープンしたままアプリ落ちてファイル消せない
そんなことがあるんですか?それは OS の問題では?
0185デフォルトの名無しさん
2015/09/08(火) 07:46:53.84ID:AfOYv5w4アプリ側ならアプリとOSのせい。
0186デフォルトの名無しさん
2015/09/08(火) 09:46:17.75ID:niylIegQ0187デフォルトの名無しさん
2015/09/08(火) 22:55:03.72ID:87tqLtAC環境によってアウトの定義すら違うんだぞ w
0188デフォルトの名無しさん
2015/09/08(火) 23:28:09.55ID:niylIegQデストラクタ実行の機会が失われることの
どこに環境依存があるんだ?
0189デフォルトの名無しさん
2015/09/09(水) 04:44:02.79ID:CLzKY4Zpおいおい,アプリが落ちた後ファイルが触れなくなるなんて,OS が悪いに決まっているだろうに…
>>186
一概に言えないという理由は?
0190デフォルトの名無しさん
2015/09/09(水) 06:19:52.05ID:Fk0Nt1Os> デストラクタ実行の機会が失われる
それがアウトに繋がるかどうかは環境依存だろ
0191デフォルトの名無しさん
2015/09/09(水) 07:48:24.69ID:W9m6tU7jっていうの偶に聞くけどね。
0192デフォルトの名無しさん
2015/09/09(水) 07:55:37.75ID:IRdX7Jr/0193デフォルトの名無しさん
2015/09/09(水) 08:17:44.05ID:qD3xbxh00194デフォルトの名無しさん
2015/09/09(水) 08:44:14.12ID:X10C1ufT前提決めずに各人がオレオレ環境だとこれがベストって言い合ってるだけだから永遠に終わらない
0195デフォルトの名無しさん
2015/09/09(水) 11:28:55.46ID:zLKTZ6N+0196デフォルトの名無しさん
2015/09/09(水) 11:56:32.22ID:4Gk7xWc/カーネルやデーモンのようなプログラムでは必要な期間だけリソースを占有するのは
当然で常識じゃないかな?(´・ω・`)
で、当然、ヘタレなすぐ落ちるプログラムだってそれをなぞっておいて損はしないよ?(´・ω・`)
0197デフォルトの名無しさん
2015/09/09(水) 12:11:17.93ID:p/PhlC/O後半は場合による
すぐ終わるプログラムではなぞるためのコードを書く手間を損と感じる人もいるかもしれん
0198デフォルトの名無しさん
2015/09/09(水) 12:28:25.54ID:d8nJ7EeH> いにしえの malloc - free 論争か?
おまえ当時fjの議論に参加してたの?
それとも最近アーカイブ読んで知ったかしちゃってるの?
0199デフォルトの名無しさん
2015/09/09(水) 14:08:48.60ID:61epwTm+横レス失礼
議論じゃなくディベートね
収穫よりも言い負かすことが目的の
0200デフォルトの名無しさん
2015/09/09(水) 17:47:20.62ID:yEdJqNknhttps://groups.google.com/forum/m/#!msg/fj.comp.lang.c++/G4HRnHTdImg/pTgn9kQaMCoJ
0201デフォルトの名無しさん
2015/09/09(水) 18:16:11.61ID:M9IJrk250202デフォルトの名無しさん
2015/09/09(水) 19:35:01.34ID:luKpH+pq0203デフォルトの名無しさん
2015/09/09(水) 20:26:43.22ID:RPhi1/u9ダングリングポインタの問題をスマートポインタで解決するという話にexit持ち出すのがそもそもずれてるだろ。
0204デフォルトの名無しさん
2015/09/09(水) 20:35:49.75ID:61epwTm+main(){
char *p;
p = malloc(1);
free(p); /* スマートポインタの話はここが論点 */
exit(0); /* 全然アウトじゃねえぜ */
}
0205デフォルトの名無しさん
2015/09/09(水) 20:51:15.91ID:yEdJqNkn論点はCでスマートポインタをどうやって実現するかだろ。
0206デフォルトの名無しさん
2015/09/09(水) 21:25:59.09ID:zGFc4+4cそんな事、C++でCの機能だけとスマートポインタを使えばいいんじゃないかな?(´・ω・`)
0207デフォルトの名無しさん
2015/09/09(水) 21:45:04.39ID:R6JoDPux0208デフォルトの名無しさん
2015/09/09(水) 21:49:10.21ID:zGFc4+4c奴は卑怯どころか非道な上に馬鹿だよ?(´・ω・`)
0209デフォルトの名無しさん
2015/09/09(水) 21:53:03.53ID:R6JoDPux0210デフォルトの名無しさん
2015/09/09(水) 22:02:54.03ID:RPhi1/u9そのうえで、有用なテクニックを多言語から借用するってのは別に無駄とは思わんがね。
つか、C++選べるなら>>206みたいなアドバイスされんでも最初から使っているだろうw
0211デフォルトの名無しさん
2015/09/09(水) 22:08:16.35ID:RFpH3DA+0212デフォルトの名無しさん
2015/09/09(水) 22:36:22.36ID:cIeN+09g0213デフォルトの名無しさん
2015/09/09(水) 22:46:20.60ID:fpVht+uv如何なるサイトや質問サイト・参考書には、開発環境にMicrosoft Visual C++ (年号) Express
がお勧めされていますが、
今のVisual Studioダウンロードページ https://www.visualstudio.com/ja-jp/downloads/download-visual-studio-vs#DownloadFamilies_2
を見ると3種類あって、上記に相当するものが現在においては何なのか分からず、調べても手がかりとなる見当がつきません。
Microsoft Visual C++ (年号) Express に相当するものは2015年現在でどれにあたるのか、
教えて頂けると嬉しいです。
0214デフォルトの名無しさん
2015/09/09(水) 22:48:47.70ID:RFpH3DA+今ならUbuntu+gccになりますかな。
0215デフォルトの名無しさん
2015/09/09(水) 22:48:53.02ID:M9IJrk250216デフォルトの名無しさん
2015/09/09(水) 22:53:13.34ID:fpVht+uv0217片山博文MZ ◆T6xkBnTXz7B0
2015/09/09(水) 22:57:33.62ID:ziL5iL0X0218デフォルトの名無しさん
2015/09/09(水) 23:01:48.16ID:yEdJqNkn本質的な解決はスマートポインタらしいぞ。
>>160
>ダングリングポインタによる問題に対する本質的解決はスマートポインタ
0219デフォルトの名無しさん
2015/09/09(水) 23:05:47.32ID:zGFc4+4c考えだから、素直にC++を使えばいいんじゃないかな?(´・ω・`)
その方が世の中に迷惑を掛ける可能性が減ると思うよ?(´・ω・`)
0220片山博文MZ ◆T6xkBnTXz7B0
2015/09/09(水) 23:08:38.13ID:ziL5iL0X0221デフォルトの名無しさん
2015/09/09(水) 23:17:06.39ID:bdykH7Tiスマートポインタの使い方を一つ紹介するよ。
今のコンピュータは複数の演算器を持っていて、スレッドが普通に使われる。
ところで、別のスレッドに依頼した結果を受け取る要求が存在する。
例えば、検索ボタンをクリックしたら別のスレッドで検索するのだが、
結果の表示はGUIスレッドで行う必要がある場合。
ボタンを押した人は、検索が終わった時には結果を必要としていないかもしれない。
そんなときは、std::weak_ptrに検索ボックスのポインタを入れて、トークンとして
別スレッドに渡してしまうのです。
検索結果がGUIスレッドのキューに入った時、std::weak_ptrが生きているかどうかで
必要性がわかり、そして配送先もstd::weak_ptrを見ればわかるのです。
どや?ええやろ?
0222デフォルトの名無しさん
2015/09/09(水) 23:21:44.24ID:yEdJqNknCのスレでC++知ってんぞ自慢されてもねえ
それをCで使えるなら自慢しても良いぞ
0223デフォルトの名無しさん
2015/09/09(水) 23:28:54.15ID:fpVht+uvvisual studio community 動作環境 で候補には出るものの、検索後のリストがどれも動作環境を説明していません。
ちなみに私のパソコンはCore i3 メモリ4GB HDD500GBですが、果たしてどうでしょうか…
0224デフォルトの名無しさん
2015/09/09(水) 23:33:15.98ID:bdykH7Ti俺も似たような感じなのだが、Community2013ではメモリーが少々足りない場合があるな。
そこで少し増設して8GBにしたら快適すぎる感じだな。
0225デフォルトの名無しさん
2015/09/09(水) 23:41:39.59ID:fpVht+uvありがとうございます。一応大学の初心者向け授業ですが、やはり足りない可能性があるのは怖いですね…
0226片山博文MZ ◆T6xkBnTXz7B0
2015/09/09(水) 23:41:46.16ID:ziL5iL0XゆえにスマポをCで実現するためには、引き金(トリガー)をどこかに仕掛ける必要がある。
アイドル時や何かの処理が終わった時、atexitなど。
0228デフォルトの名無しさん
2015/09/10(木) 00:29:05.68ID:B+8BdQiv0229デフォルトの名無しさん
2015/09/10(木) 01:06:42.85ID:576iJPhBコンストラクタや仮想関数は何とか近い事ができるんだけど、デストラクタだけは�_。
c++スマポの安全性はRAIIで賄ってるから、Cでスマポの考えを逆輸入するのは難しいと言うか不可能と思う。
0230デフォルトの名無しさん
2015/09/10(木) 01:09:04.80ID:576iJPhB0231デフォルトの名無しさん
2015/09/10(木) 05:15:03.09ID:6rpsG8260232デフォルトの名無しさん
2015/09/10(木) 09:50:48.88ID:ibvPBe6Xstruct a {
int val;
} ;
struct b {
struct a a;
int b;
} ;
struct c {
struct a a;
int b;
} ;
で
struct b *bp;
struct c ci;
bp = (struct b *)&c;
bp->a.val; ←このときの参照ってci.a.valと同じなります?
0233デフォルトの名無しさん
2015/09/10(木) 09:57:54.38ID:B+8BdQiv継承したほうが安全だろう
キャストしなくて済むし
0234デフォルトの名無しさん
2015/09/10(木) 12:53:02.18ID:2qgiotlI継承?
0235デフォルトの名無しさん
2015/09/10(木) 12:54:58.68ID:NBtCIoQN0236デフォルトの名無しさん
2015/09/10(木) 13:08:11.85ID:wTdG4R3iPdf印刷するにはどういったコードになるでしょうか。
色々調べたんですけど、アクロバット?か何かが無いと出来ないのでしょうか。
0237デフォルトの名無しさん
2015/09/10(木) 13:10:03.02ID:4T3270g60238デフォルトの名無しさん
2015/09/10(木) 14:29:08.99ID:0Au8sdD50239デフォルトの名無しさん
2015/09/10(木) 14:36:53.90ID:SIwNJgUKコピペでチョチョイのチョイと甘く考えてるならたぶんムリ
0240デフォルトの名無しさん
2015/09/10(木) 14:57:33.87ID:Lt3YsJ/ZHDC a = CreateDC(NULL, "pdfFactory", NULL, NULL);
DOCINFO b = { .cbSize = sizeof b, .lpszDocName = "dqn" };
StartDoc(a, &b);
StartPage(a);
TextOut(a, 10, 10, "KuSo300t", 8);
EndPage(a);
EndDoc(a);
DeleteDC(a);
0241デフォルトの名無しさん
2015/09/10(木) 17:45:00.02ID:aVwT62VH自分はcは経験ありますが7年くらい業務側でjavaばかりです。
cに対する需要の状況が見えてこなくて、マジcに移りたい(戻りたい)です
0242デフォルトの名無しさん
2015/09/10(木) 20:18:43.28ID:2qgiotlIネット検索してC言語の求人も探せない奴にC使えますって言われてもな
0243デフォルトの名無しさん
2015/09/10(木) 20:26:08.41ID:ibvPBe6XC++はつかえないので
とりあえずこのままでいこうかと思います
ありがとうございました
0244デフォルトの名無しさん
2015/09/10(木) 20:43:13.46ID:KXxs+KZT0245デフォルトの名無しさん
2015/09/10(木) 20:51:00.68ID:dEoNAq5eCじゃないんだけど、C++ならQtにQPdfWriterというクラスがあるよ。
0246デフォルトの名無しさん
2015/09/10(木) 23:38:40.35ID:Lt3YsJ/Zchar dick[] = "tortoise";
char *head = &dick[0];
char *start = &dick[0];
どっちでも構わんが、何が聞きたいんだ?
0247デフォルトの名無しさん
2015/09/10(木) 23:59:18.38ID:xoP3n2DS0248デフォルトの名無しさん
2015/09/11(金) 01:48:09.48ID:VNxgdx8i文脈でそれっぽいのならなんでもよくね
begin,first,initial,front,left,top,lead
とかでも。leftはRTL(アラビア語ヘブライ語)だとおかしいかもだけど
0249デフォルトの名無しさん
2015/09/11(金) 09:10:22.56ID:hQV6iO0gごめんスレチだったね
英語をききたかったんだ
>>248
そんなもんか
みんなありがとね
0250デフォルトの名無しさん
2015/09/11(金) 12:57:02.60ID:ajD0jsEA236です。追加で質問します。
>DOCINFO b = { .cbSize = sizeof b, .lpszDocName = "dqn" };
とありますが、
�@.lpszDocName はpdfのフルパスとか入れれば良いのですか?ドキュメント名というものがどれに当たるのか分かりません。
�A.cbsizeにbが入るのは何故でしょうか。左辺でbに代入するはずのものが入ってるので、おやっ?と思いました。
重ね重ねすみませんがまたご教授の程よろしくお願いします。
他の回答していただいたかたもありがとうございます
0251デフォルトの名無しさん
2015/09/11(金) 13:06:54.20ID:4I3QEOJLだからbの大きさが代入される
0252デフォルトの名無しさん
2015/09/11(金) 19:23:18.37ID:bRL4EH4ZCっつーかAPIの範疇だからAPIのドキュメント見るべき
0253デフォルトの名無しさん
2015/09/11(金) 20:10:09.54ID:49Y+knkg0254デフォルトの名無しさん
2015/09/11(金) 20:30:36.16ID:2u4Zhe7cPrimoPDFとかCubePDFとかインストールして、
普通に印刷するコードを書くという手も有るけどな
0255デフォルトの名無しさん
2015/09/11(金) 20:48:47.05ID:w5kWDNgm金,時間,著作権/商標どれもクリアできる.
業界(プロ)の信用が失われている現状で再募集しても誰も「決められない.」
0256デフォルトの名無しさん
2015/09/11(金) 22:16:08.37ID:4Iho3dgzlpszDocNameは印刷ジョブ名
0257デフォルトの名無しさん
2015/09/12(土) 00:02:39.68ID:Y0QkDcDuこのスレで聞くより、APIのドキュメントを見るとか、
その関数で検索して、サンプルなどを探すのが速い
それで実行して、エラーが出たら、
エラーメッセージで検索して、
それでもわからなければ、このスレで聞くのがよい
エラーメッセージで検索すれば、
たいていのバグは解決する
0258デフォルトの名無しさん
2015/09/12(土) 09:22:07.26ID:lTmP7o65特定のフリーソフトをインストールして
ソフト独自の仮想プリンタに印刷(描画)してると理解するなんて
中級者でもムリ
>>238 を無視するやつを相手しても仕方ない
0259デフォルトの名無しさん
2015/09/12(土) 18:49:51.36ID:6uNosM8g仮想プリンタがソフト独自? 意味わかめ
みんなそうなってるだろ
0260デフォルトの名無しさん
2015/09/12(土) 18:54:26.45ID:XCUtCB/3印刷できるソフトならどれでも使えるだろ
0261デフォルトの名無しさん
2015/09/12(土) 19:16:39.10ID:6uNosM8gつーかエンドユーザーレベルの知識すら欠落
要するにWindowsアウェーなやつが無理したんだろw
0262デフォルトの名無しさん
2015/09/12(土) 19:31:38.55ID:K5Xj9mys0263デフォルトの名無しさん
2015/09/15(火) 18:25:10.87ID:6zzSGYUr0264デフォルトの名無しさん
2015/09/15(火) 22:10:41.40ID:Z2SQdZ/10265デフォルトの名無しさん
2015/09/16(水) 14:45:59.83ID:RI4vXOi2今、linuxでCで開発する時って、どういったツールがあるの?
大昔のようなvimにmakefileにgdbにctagsとかなの?
javaでいうeclipseのようなものってあるの?
0266デフォルトの名無しさん
2015/09/16(水) 14:52:48.28ID:knfsespoどのくらい使い物になるかは知らん
0267デフォルトの名無しさん
2015/09/17(木) 19:41:36.89ID:6VOBLfbC調べたいんだけど、 そういうコマンドラインツールある?
WindowsじゃなくてLinuxにあると助かります。
0268デフォルトの名無しさん
2015/09/17(木) 22:59:42.35ID:cRlPLxlR0269デフォルトの名無しさん
2015/09/17(木) 23:28:35.36ID:wGpcz/rU以前、awkで作った事はある
0270デフォルトの名無しさん
2015/09/18(金) 00:49:37.45ID:ga/YmSRD0271デフォルトの名無しさん
2015/09/18(金) 01:00:59.73ID:kZ1aVgi20272デフォルトの名無しさん
2015/09/18(金) 12:51:29.22ID:QAQ6VXx0だいたいわかると思うが
あるいはコメントをのぞいたステップ数がほしいなら
そういうツールを探すべきだが
何がしたいのかしら
0273デフォルトの名無しさん
2015/09/18(金) 14:38:12.50ID:E/9Kj6t9#define MAC 1
#endif
を1行にまとめられますか。例えば
#ifndef MAC;#define MAC 1;#endif
のように。
cpp命令に関するfaqと思いますが、ヒットしなかったもので。
0274デフォルトの名無しさん
2015/09/18(金) 14:46:05.07ID:tAuaYMjWもっとプログラム本質的な部分に注力すればバグが減るかもね?(´・ω・`)
0275デフォルトの名無しさん
2015/09/18(金) 14:54:42.11ID:E/9Kj6t90276デフォルトの名無しさん
2015/09/18(金) 15:01:52.66ID:tAuaYMjWどんな謎な理由かはしらないけど、それならC的には解決不能だよ?(´・ω・`)
0277デフォルトの名無しさん
2015/09/18(金) 15:02:27.61ID:QAQ6VXx0ムリ
そういうわけのわからん管理してるところでは裏技を考える気にもならん
0278デフォルトの名無しさん
2015/09/18(金) 16:03:23.02ID:E/9Kj6t9では仕方ないので当初案の
#include MACFILE
で行くわ。。。参ったな。。。
0279デフォルトの名無しさん
2015/09/18(金) 16:14:52.44ID:tAuaYMjW謎過ぎる理由だよね?(´・ω・`)
0280デフォルトの名無しさん
2015/09/18(金) 20:25:31.93ID:7AiId5VK例えばgrepした結果をエビデンスとしてるテストとか
ってことだと思うけどこれって一般的じゃないの?それとも趣味グラマだから知らんだけ?
0281デフォルトの名無しさん
2015/09/18(金) 20:27:21.25ID:7AiId5VK0282デフォルトの名無しさん
2015/09/18(金) 20:29:24.12ID:5egfmsiH# は行の頭にないといけないから,一行にまとめるのは無理だね‥
0283デフォルトの名無しさん
2015/09/18(金) 21:14:57.69ID:CC22AFvaよくないですかね
0284デフォルトの名無しさん
2015/09/18(金) 21:54:12.74ID:cvTsARmg0285デフォルトの名無しさん
2015/09/18(金) 22:18:41.32ID:g2giZXD6それがダメって言うんじゃ、行ずれ関係なくもう一度テストすべきだろう
0286デフォルトの名無しさん
2015/09/18(金) 22:49:11.68ID:7AiId5VKもちろん必要があればテスト再実施自体はするさ
0287デフォルトの名無しさん
2015/09/18(金) 22:52:29.86ID:ThAKGp2R0288デフォルトの名無しさん
2015/09/18(金) 22:55:00.20ID:DEZGWZvh知らない人は知らない
そういう有名人
0289デフォルトの名無しさん
2015/09/18(金) 22:55:07.72ID:G/wDxCRG一般的ではないと思う…
0290デフォルトの名無しさん
2015/09/18(金) 22:55:34.73ID:5egfmsiH0292デフォルトの名無しさん
2015/09/19(土) 03:47:14.02ID:8Pb114IFこれか?
www.riruraru.com
0293デフォルトの名無しさん
2015/09/19(土) 05:27:46.33ID:5mtYZboS0294デフォルトの名無しさん
2015/09/21(月) 23:33:36.41ID:eHYLkp1zAを4に、Eを3に、Gを6に、Iを1に、Oを0に、Sを5に、Zを2にするのですが
これswitch文のところをもう少し賢くできませんかね?同じような記述ばかりなので…
#include<stdio.h>
#pragma warning(disable : 4996)
void replace(char* str){
int i = 0;
while (str[i] != NULL){
switch (str[i]){
case 'A':str[i] = '4';
break;
case 'E':str[i] = '3';
break;
case 'G':str[i] = '6';
break;
case 'I':str[i] = '1';
break;
case 'O':str[i] = '0';
break;
case 'S':str[i] = '5';
break;
case 'Z':str[i] = '2';
break;
default:
break;
}
i++;
}
}
0295デフォルトの名無しさん
2015/09/22(火) 00:16:26.05ID:ODKFKrge'A'〜'Z'が入る配列を用意しておいて(int conv[26])
conv['A'] には '4' を入れておくとか
0296デフォルトの名無しさん
2015/09/22(火) 00:17:07.08ID:qQ66LWrg['A'] = '4',
['E'] = '3',
['G'] = '6',
['I'] = '1',
['O'] = '0',
['S'] = '5',
['Z'] = '2',
};
void replace(char* str){
int i = 0;
while (str[i] != NULL){
str[i] = table[str[i]];
i++;
}
}
0297デフォルトの名無しさん
2015/09/22(火) 00:34:37.37ID:52HAR6EJ0298デフォルトの名無しさん
2015/09/22(火) 00:41:19.87ID:52HAR6EJvoid replace2(char* str){
int i = 0;
while (str[i] != '\0'){
if (table[str[i]] != '\0') {
str[i] = table[str[i]];
}
i++;
}
}
0299デフォルトの名無しさん
2015/09/22(火) 03:27:59.64ID:4Ivoz8Dlこの書籍今でも古くないですか?
0300デフォルトの名無しさん
2015/09/22(火) 07:56:11.90ID:1xZOxR2Vありがとうございます!参考になります
0301デフォルトの名無しさん
2015/09/22(火) 18:07:02.48ID:OazZUeupvoid replace(char* str) {
static char table[] = "OIZEASG";
for (char* p=str; *p; p++) {
char* q = strchr(table, *p);
if (q)
*p = '0' + (char)(q-table);
}
}
0302デフォルトの名無しさん
2015/09/22(火) 22:33:38.00ID:hQ0EouVlvoid transform(char *, char *, char *, char(*)(char));
#define begin(array) &array[0]
#define end(array) *(&array + 1)
char lambda(char);
int main(void)
{
static char s[] = "IHWOECZBRYLDNUGXKSFQVPTAMJ";
char d[27];
transform(begin(s), end(s), begin(d), lambda);
puts(d);
return 0;
}
void transform(char *first, char *last, char *dest, char(*pred)(char))
{
for(; first != last; ++first, ++dest)
{
*dest = pred(*first);
}
}
char lambda(char val)
{
return isupper(val) ? "4BCD3F6H1JKLMN0PQR5TUVWXY2"[val - 'A'] : val;
}
0303デフォルトの名無しさん
2015/09/22(火) 23:49:02.84ID:LWcwCDYy0304デフォルトの名無しさん
2015/09/23(水) 01:39:49.44ID:iC4K+Xaq0305デフォルトの名無しさん
2015/09/23(水) 02:48:13.71ID:5/XPiZj6printf("%x\n", data);
printf("%x\n", &data);
これが同じ値を示すってのがかなり理解不能なのだが
0306デフォルトの名無しさん
2015/09/23(水) 02:51:16.05ID:5/XPiZj63行目が文字化けした
&を小文字に
0307デフォルトの名無しさん
2015/09/23(水) 03:15:05.58ID:frQW6agwそういう仕様だよ
これは覚えるもので、理解不能とかいうものではない。
配列名が配列全体でなく、先頭要素へポインタにしたのはなぜかという
疑問だとすると、その方がシンプルだからだろう
0308デフォルトの名無しさん
2015/09/23(水) 09:02:33.56ID:ehjJfghS0309デフォルトの名無しさん
2015/09/23(水) 13:47:45.22ID:Hk7AVzca他に合理的な仕様も無いだろ。
0310デフォルトの名無しさん
2015/09/23(水) 15:17:01.44ID:WS8lJkwwchar chara='z';
if (chara == 'a' || 'i' || 'u' || 'e' || 'o') puts("boin");
else puts("shiin");
どの場合でもboinと表示されるのですが何故でしょうか?
0311片山博文MZ ◆T6xkBnTXz7B0
2015/09/23(水) 15:20:56.66ID:KfupEJ55'i'が非ゼロだから。
if (chara == 'a' || chara == 'i' || chara == 'u' || chara == 'e' || chara == 'o') puts("boin");
と書くかswitchを使え
0312デフォルトの名無しさん
2015/09/23(水) 15:58:48.14ID:WS8lJkww回答ありがとうございます
ずいぶん冗長なように感じますね…
0313デフォルトの名無しさん
2015/09/23(水) 16:20:41.74ID:Q8fOJWKp0314デフォルトの名無しさん
2015/09/23(水) 16:38:27.29ID:/2ucBDu/>>296 を真似ればいいんじゃないの
#include <stdio.h>
char noun[128] = {
['a'] = 1,
['i'] = 1,
['u'] = 1,
['e'] = 1,
['o'] = 1,
};
int main(){
char z = 'z';
puts(noun[(int)z] ? "boin" : "shinn");
}
0315デフォルトの名無しさん
2015/09/23(水) 17:24:51.68ID:WS8lJkwwすいません。visual studio 2013 express for desktopでC++としてコンパイルしているのですが
識別子が必要です。lambda本体を導入する'{'が必要です。といったエラーが出て実行できません
連想配列のようなことをしているのですかね?
0316デフォルトの名無しさん
2015/09/23(水) 17:35:43.64ID:frQW6agw0317デフォルトの名無しさん
2015/09/23(水) 17:49:28.59ID:iC4K+Xaq>>296 >>314 は C/C++ じゃない
0318デフォルトの名無しさん
2015/09/23(水) 18:31:45.29ID:Hk7AVzca0319デフォルトの名無しさん
2015/09/23(水) 18:43:06.44ID:dN3Md19M0320デフォルトの名無しさん
2015/09/23(水) 19:28:27.77ID:CTBmtWAI考慮しなくていいの?
0321デフォルトの名無しさん
2015/09/23(水) 19:55:14.87ID:Hk7AVzca0322デフォルトの名無しさん
2015/09/24(木) 10:59:56.39ID:9GfCZfDJtags使えば先頭行はわかるんだけどね
関数のお尻がわからんかった
0323デフォルトの名無しさん
2015/09/24(木) 12:02:13.89ID:teXop3eDターミナルで「sudo gcc -v」と入力したら
英文の規約が出てきました。
何も考えず同意したのですが、後から規約が読みたくなりました。
もし宜しければ規約を読めるサイトを教えて欲しいです
(もしかしてGPLライセンスですか?)
0324デフォルトの名無しさん
2015/09/24(木) 18:37:34.98ID:CMBCqBI40325デフォルトの名無しさん
2015/09/25(金) 12:20:17.75ID:cJmaZWu4UNIXは、デフォでCを使う
俺は、触った事無いけど、サーバー系だから
ANSIのライブラリ以外も多くあると思う
UNIXを使う為なら良いんじゃない?
ただ、WindowsでCを勉強するって感じなら向いてない。
(まぁ、Windowsで軽くCを学びたいなら良いけど
WindowsアプリをCで組むのはお勧めしない)
俺は、プログラミングはCから入ったから
本がいっぱいある。あげようか?
0326デフォルトの名無しさん
2015/09/25(金) 13:47:57.57ID:rk8r/wn+という設問で選択肢を選ばせるような問題がありました
char *ptrの指す値を書き換えるのは未定義だと理解しているのですが問題ないのでしょうか
0327デフォルトの名無しさん
2015/09/25(金) 13:53:18.61ID:+5sW3GLu問題ない
0328デフォルトの名無しさん
2015/09/25(金) 15:53:11.22ID:A3FKOyUBvoid smple(char *ptr)
{
char *str = "A123F56";
0329デフォルトの名無しさん
2015/09/25(金) 15:55:44.40ID:A3FKOyUBvoid smple(char *ptr) { ptr[0] = 書き換え ... }
char *str1 = "A123F56";
char str2[] = "A123F56";
sample(str1); /* これはダメ: リテラル"A123F56"を変えるから */
sample(str2); /* これはOK: 別途確保した配列を書き換えてる */
0330デフォルトの名無しさん
2015/09/25(金) 16:03:14.21ID:xTvv10X70331デフォルトの名無しさん
2015/09/25(金) 17:22:23.30ID:rk8r/wn+0332デフォルトの名無しさん
2015/09/25(金) 18:45:10.32ID:EM2/ouOX0333デフォルトの名無しさん
2015/09/26(土) 02:53:09.19ID:S/TBW6nvえっ???
0334デフォルトの名無しさん
2015/09/26(土) 14:20:52.81ID:Dv5trudRchar *str = "リテラル";
非const引数に直渡しで、「const を非const に渡すな」と怒るかどうかが焦点
void func(char*);
func("リテラル");
0335デフォルトの名無しさん
2015/09/26(土) 16:38:10.84ID:9hL7F3GQ新しい規格でもC++みたいに
const char * const
は無理なの?
0336デフォルトの名無しさん
2015/09/26(土) 16:54:20.75ID:V8SS9bIh0337デフォルトの名無しさん
2015/09/26(土) 17:01:10.10ID:8isGWqIvは普通に可能だよ
0338デフォルトの名無しさん
2015/09/27(日) 23:28:58.45ID:gtC8I5rJconstあんまり打ちたくない
0339デフォルトの名無しさん
2015/09/27(日) 23:55:50.64ID:c5AWpRny0340デフォルトの名無しさん
2015/09/28(月) 00:03:26.27ID:Sj9rKlsdそうなの?
0341デフォルトの名無しさん
2015/09/28(月) 01:21:39.64ID:8FV3B/V70342デフォルトの名無しさん
2015/09/28(月) 01:47:08.24ID:dgRADDDn0343デフォルトの名無しさん
2015/09/28(月) 15:26:04.74ID:5yF+i1M8ファンクションキーに覚えさせておけばいいのに。
key 10,"const"
…C関係ないね。
0344デフォルトの名無しさん
2015/09/30(水) 00:05:42.64ID:yBnLAXak職業プログラマではないので自由にしてればいんだけど、なんか気になります。
0345デフォルトの名無しさん
2015/09/30(水) 00:34:56.46ID:Eb56OawZ0346デフォルトの名無しさん
2015/09/30(水) 00:45:04.20ID:wkMyE1bDまず分割せずに書いてみる
おまえさんに適性があれば必ず、分割の必要性を感じてくる
そのセンスに従え
0347デフォルトの名無しさん
2015/09/30(水) 01:03:37.93ID:eY6uj561ファイル入出力関連とか特定のデータ処理関連とか。
0348デフォルトの名無しさん
2015/09/30(水) 02:44:30.75ID:q4gG0wbe0349デフォルトの名無しさん
2015/09/30(水) 05:26:50.30ID:xoExs65RTERM environment variable not set.
と、出てきて画面がクリアされません。どうすれば解決するでしょうか?
開発環境はxcodeを使っています。
0350デフォルトの名無しさん
2015/09/30(水) 06:32:11.94ID:L4DkDpWh100行ごとに分割
0351デフォルトの名無しさん
2015/09/30(水) 09:30:28.36ID:nCu17qEEputs(strchr("aeiou", 'e') ? "boin" : "shiin");
0352デフォルトの名無しさん
2015/09/30(水) 13:04:33.69ID:jYfkTZI8TERMをセットすれば?
0353デフォルトの名無しさん
2015/09/30(水) 14:46:05.55ID:BJAxvEPRインデントがスペース4つ分ですが
そのインデントはハードタブ、ソフトタブのどちらで表現されていたのですか?
またそれらはエディタで直接書かれていたのでしょうか?
それともハードタブでエディタで書きソフトタブに変換するなどしていたのでしょうか?
*BSDに搭載されているnviにはソフトタブで書くことを考慮していないところも気になります
vimのexpandtabはnviにはありません
それから黎明期からの教徒の方がいらっしゃるなら当時どのような環境で
ソフト、ハードどちらのインデントが主流だったのかなど教えていただけませんか?
(インデントがスペース4つ分以外の異教徒の回答は不要です)
長くなりましたが、古い時代の神々がどうのような環境でどのようにインデントしていたかを教えてください
私は真実を知りたいのです、よろしくお願いします
0354デフォルトの名無しさん
2015/09/30(水) 20:43:39.18ID:ZJ0t2KRE分けなくていいよ
ひとつのファイルでスクロールがイライラしだしたら考えたらいい
普通のエディタなら分量に苦しむことなく編集できると思う
0355デフォルトの名無しさん
2015/10/01(木) 00:13:47.53ID:eLQmBqABTabで4文字でしたっけ。
たしか、初期のころは8文字だったと思いますよ。
たとえば、
Kernighan and Plaugerの『ソフトウェア作法』には、ソースプログラムから
Tabを取り除く、detabというプログラム片の解説があるのですが、そこでは、
欄とばし符号(Tabの事)を含む文書ファイルを、欄とばしの機能をもたない出力
装置で打ち出したいとしよう。第一近似としては、欄の配置が一定でたとえば8字おき、
というようなことで満足しよう。(B. W. Kernighan and P. J. Plauger,『ソフトウェア作法』
木村 泉訳、1981年)
と書いてあって、あきらかにTabは8文字であることを暗黙に仮定しています。
エディタにもよりましたが、デフォルトでは、Tabキーを打つと8文字飛んだように
思います。
0356デフォルトの名無しさん
2015/10/01(木) 00:20:58.79ID:eLQmBqABP.S.
昔のタイプライターは、活字の大きさがPicaならば、タブバーを推すと
10文字(1インチ)、Eliteならば、12文字(1インチ)飛びました。
タイプライターで打った文書を見ると、パラグラフの先頭が1インチ空けて
あるのが判りますが、これは、タブレバーを押した証拠です。
0357デフォルトの名無しさん
2015/10/01(木) 00:26:07.29ID:siepgiuL0358デフォルトの名無しさん
2015/10/01(木) 00:34:28.89ID:V9HjUoXg0359デフォルトの名無しさん
2015/10/01(木) 01:44:06.30ID:sA6PT11+0360デフォルトの名無しさん
2015/10/01(木) 02:17:34.44ID:LJiOdX2vありがとうございます
>あきらかにTabは8文字であることを暗黙に仮定しています。
>エディタにもよりましたが、デフォルトでは、Tabキーを打つと8文字飛んだように
思います。
はい、デフォルトではそうですね
しかしUNIXにはtabsコマンドで端末のtab幅を変更できnvi(検証FreeBSD)では":set ts=タブ幅"で幅を調整できます
つまり少なくともUNIXではコーディング時に必ずしも幅が8桁であることを強要・仮定しません
ユーザが自由に変更できます
なので最初の神が4桁で編集・管理していたことを現状否定できません
なおスペースに変換すること自体はexpandコマンドが3.0BSDで存在することからある程度認知されていたようです
余談までにBSDカーネルやLinuxカーネルのコーディング規約では少なくとも第一レベルはタブで8桁であること、
「UNIXプログラミング環境」でも8桁の箇所があることから8桁派に一定以上の地位があったことは間違いないでしょう
(FreeBSDカーネルの規約(style(9))のインデントでは第二レベルはスペースで4つとされている)
問題は旧約聖書のインデントは印刷のために特別整形されていたものなのかどうかということです
0361デフォルトの名無しさん
2015/10/01(木) 02:52:59.25ID:sA6PT11+否定する前に、元来が4桁だったという根拠は?
tabsで?桁に調整できるではないかと、たとえば俺がもし主張したら
きっちり否定・論破できるのか?
その昔、I/Oやベーマガがご盛況だった頃、インデント幅は8だったぞ
0362デフォルトの名無しさん
2015/10/01(木) 03:52:22.35ID:LJiOdX2v>>360で私は
>>355の
>あきらかにTabは8文字であることを暗黙に仮定しています。
を否定しましたが
>否定する前に、
の「否定」が>>360のことを指すものだと仮定すると
>元来が4桁だったという根拠は?
ということがよくわからないです
>>360の
>なので最初の神が4桁で編集・管理していたことを現状否定できません
のことであれば
私はこの中の「最初の神」はデニス・リッチーさんを指しているつもりなのですが
あなたがこれを>>353の「古い時代の神々」または「黎明期からの教徒」だと解釈しているのであれば
誤解です(誤解を招く表現でごめんなさい)
そうでなければそのレスは理解できなかったです
補足をお願いします
0363デフォルトの名無しさん
2015/10/01(木) 04:29:57.07ID:UCU57ugyメモリに何が入ってるか考えるの面倒くさい
(´・ω・`)
0364デフォルトの名無しさん
2015/10/01(木) 09:25:47.07ID:WI/LKGqAソフトタブなんて機能がついたのなんて相当後だろ
TABは8文字に決まってんだよ
0365デフォルトの名無しさん
2015/10/01(木) 09:45:23.04ID:vDalg+0nマジで低能しかいないのか?
0366デフォルトの名無しさん
2015/10/01(木) 17:59:51.24ID:nGSUhzC+K&Rは4桁なんですが
0367デフォルトの名無しさん
2015/10/01(木) 18:31:30.38ID:VU6YL+ln0368デフォルトの名無しさん
2015/10/01(木) 19:05:47.30ID:WI/LKGqA0369デフォルトの名無しさん
2015/10/01(木) 20:09:56.07ID:nGSUhzC+c言語Unixより後ですが
0370デフォルトの名無しさん
2015/10/01(木) 20:25:20.46ID:OkTWXPhZじゃあUNIXってどの言語で作られたの?
0371デフォルトの名無しさん
2015/10/01(木) 20:42:53.35ID:nGSUhzC+最初はアセンブリ
のちにUNIX
アセンブリだったのはほんとの最初のほうだけだったけど
0372デフォルトの名無しさん
2015/10/01(木) 20:43:30.90ID:nGSUhzC+修正
×UNIX
○C
0373デフォルトの名無しさん
2015/10/01(木) 21:01:19.50ID:d2nevp300374デフォルトの名無しさん
2015/10/02(金) 04:12:19.16ID:QASF+JQQキッシュイーターは引っ込んでな。
0375デフォルトの名無しさん
2015/10/02(金) 11:21:27.79ID:V9waEvOY0376デフォルトの名無しさん
2015/10/02(金) 11:42:32.42ID:49dcduiu通常行記述はハードタブ1発で済んでたような気もするが
>>374 の 7カラム目だったかは怪しい
0377デフォルトの名無しさん
2015/10/02(金) 12:10:10.65ID:uL/7tBhjふと思ったのですが、共通する変数ならヘッダに置いてやってしまうほうがいいのでしょうか
他にもとりあえず使われる変数はmainに全部置き、カテゴリごとに別ファイルに関数を作ってその変数を渡すという風にしてるのですが、実務(や効率、保守性)の観点から見るとこのままでいいのでしょうか?
また、そのようなことはどうしたら学べますか?
長文失礼しました
0378デフォルトの名無しさん
2015/10/02(金) 12:42:26.76ID:49dcduiuvoid func(int ****arg);
int ***data;
func(&data);
これを →
int ***func();
int ***data;
data = func();
こうする感じで
0379デフォルトの名無しさん
2015/10/02(金) 12:55:44.94ID:IBJNSczF私も80桁のカードにプログラムをパンチしたくちですが、
行番号が無い時に7桁とばすのに、なにかキーを押した記憶がある
のですが、それがTabだったかどうか記憶がありません。
たしかIBM製のパンチャーだったと思いますが。
0380デフォルトの名無しさん
2015/10/02(金) 13:55:47.71ID:uL/7tBhj前それが出来なかったのですが今やったらすんなりできました
レスありがたいのですが、僕が例に出したのが悪かったです
例では三重ポインタの動的確保ですが、他の関数ではその三重ポインタ(引数では四重)や他の(mainにも宣言してある)配列などを引数にとって計算を行ったりします
調べたら変数宣言のファイルを作り、ヘッダにexternをつけると書いてあったので、実際使えるのかやら知りたかったのですが、それをやるとどんどん関数の引数がいらなくなっていくので、それをやる線引きで悩んでいるという感じです
0381デフォルトの名無しさん
2015/10/02(金) 14:17:20.61ID:49dcduiu「extern 付の変数を用意して
関数引数をなくしていくようなやりかたは原則として使うな」
ぐらいの心構えで
問題発生時
何時・誰が(何処が)、この変数の値を変えやがりましたか?
を追跡し難い構造になりやすいし
0382デフォルトの名無しさん
2015/10/02(金) 16:35:17.83ID:uL/7tBhjなるほど、極力そういうのはやらないほうがいいんですね、ありがとうございます
0383デフォルトの名無しさん
2015/10/05(月) 17:10:32.54ID:bX1BWxYnレコード id(4バイト),名前(20バイト),データ(16Kバイト),属性(256バイト)が
100個あったとしたら、以下のような感じで宣言と別関数に渡せばよいのでしょうか?
typedef struct record{
unsigned long id;
unsigned char name[20];
unsigned long data[16*1024/4];
unsigned char attirbute[256];
} record_t;
void ref_func(recort_t *hoge, int cnt){
int i;
for(i=0; i<cnt; i++){
hoge[i].data = 0xaa55;
}
}
0384デフォルトの名無しさん
2015/10/05(月) 17:11:44.77ID:bX1BWxYnrecord_t hoge[100];
int num_array, i;
num_array = sizeof(hoge)/sizeof(record_t);
/*初期データ*/
for(i=0; i<num_array; i++){
hoge[i].id = i;
strncpy(hoge[i].name, "abc", sizeof(hoge[i].name));
hoge[i].data = 0x9876;
}
/*別関数で参照・更新*/
ref_func(hoge, cnt);
/*更新後*/
for(i=0; i<cnt; i++){
printf("id=%d, name=%s, data=%x\n", hoge[i].id, hoge[i].name, hoge[i].data);
}
return 0;
}
0385デフォルトの名無しさん
2015/10/05(月) 21:26:21.81ID:HSAikNuyCopyright (C) Microsoft Corporation. All rights reserved.
383.c
383.c(8): error C2143: 構文エラー: ')' が '*' の前にありません。
383.c(8): error C2143: 構文エラー: '{' が '*' の前にありません。
383.c(8): error C2059: 構文エラー: '型'
383.c(8): error C2059: 構文エラー: ')'
383.c(24): warning C4047: '=': 間接参照のレベルが 'unsigned long [4096]' と 'int' で異なっています。
383.c(24): error C2106: '=': 左のオペランドが、左辺値になっていません。
383.c(27): error C2065: 'cnt': 定義されていない識別子です。
383.c(30): error C2065: 'cnt': 定義されていない識別子です。
0386デフォルトの名無しさん
2015/10/05(月) 22:27:34.61ID:h1adZIvW0387デフォルトの名無しさん
2015/10/05(月) 22:29:47.20ID:h1adZIvW0388デフォルトの名無しさん
2015/10/05(月) 22:33:45.62ID:gJLDEi8K0389デフォルトの名無しさん
2015/10/06(火) 00:14:37.81ID:jvGuV8O5MBRに感染するウイルスか何か?
ものすごくヤバイ匂いが・・・
0390デフォルトの名無しさん
2015/10/06(火) 02:39:56.76ID:ms+vENK/This 55AA is called a boot record signature and is kind of like an EOF when the sector is read.
0391デフォルトの名無しさん
2015/10/06(火) 05:42:08.81ID:qvQzEjSa使うことはよくある
0392デフォルトの名無しさん
2015/10/06(火) 16:46:22.17ID:jUDOLtzl0393デフォルトの名無しさん
2015/10/06(火) 17:29:57.63ID:RbjHc03Bそれはなぜですか?
元ネタを教えていただきませんか?
0394デフォルトの名無しさん
2015/10/06(火) 18:50:29.76ID:qvQzEjSaバグなどの問題があってテスト領域のデータが意図せずに書き換えられた場合に発見する確立を上げるため。
メモリデータが1に変化する場合と0に変化する場合の両方の場合を考慮して、なるべくテストデータの
0 の分布と 1 の分布が均等になるようにしておくのが基本的な考え方。
0x55(01010101)や0xAA(10101010)の他に、0x0F(00001111)、0xF0(11110000)、0x33(00110011)
0xCC(11001100)などの場合もある。
0395デフォルトの名無しさん
2015/10/06(火) 20:27:23.79ID:oYnd+VZR元ネタを効かれてるんでそ?
0396392
2015/10/06(火) 21:32:03.38ID:jUDOLtzl結果的にmemtest86の作者と同じことを考えていた
思いつけないやつは致命的に適性がない
オシロ当てたりするときは、デューティー比が1:1だと解りにくいんで
394みたいなことに加え0x49とか0x92やコンプリみたいなこともする
0397デフォルトの名無しさん
2015/10/06(火) 21:49:55.15ID:ms+vENK/0398392
2015/10/06(火) 22:39:11.54ID:jUDOLtzl0399デフォルトの名無しさん
2015/10/06(火) 22:45:02.86ID:oJ4owWk0プログラムのバグにはあまり関係ないと思うがな。
特定の値に書き換えてしまう確率は値が小さい方が比較的高いと言える程度だろ。
0400デフォルトの名無しさん
2015/10/06(火) 22:54:28.75ID:KgemWPL+https://ja.wikipedia.org/wiki/Hexspeak
0401デフォルトの名無しさん
2015/10/07(水) 00:48:22.71ID:d37/nh+3こういう発想しか出来ない奴って、ビット演算子とか使ったことないんだろうか?
うっかり誤ったマスクデータ使ったり、&と|を勘違いしたりした経験あれば
そんなこと言わないと思うんだが。
0402デフォルトの名無しさん
2015/10/07(水) 07:17:14.74ID:elQLoWSu多少演算が違っていても、間違って0x55を書く確率と0x88を書く確率なんて大して違わないだろ。
0403デフォルトの名無しさん
2015/10/07(水) 07:48:46.87ID:G7fFJAALビット演算の場合は、演算データに対して被演算データ(テストデータ)が何であるかによって大きく影響を受ける。
例えば、意図しない書き換えが0x01との論理和演算の場合、テストデータの最下位が0であれば発見できるが、1であれば発見できない。
書き換えデータが予め予測できない以上、テストデータの0,1の分布を均等にしておくのが一番発見できる可能性が高い。
0404デフォルトの名無しさん
2015/10/07(水) 07:58:31.60ID:elQLoWSuこうだろ。
確率が変わるのは何らかの予測ができる場合だ。
0405デフォルトの名無しさん
2015/10/07(水) 08:11:34.12ID:G7fFJAAL情報エンタルピーが最大と仮定(0と1が均一確立で発生)
しているんだよ。
情報理論の基本だろ。
0406デフォルトの名無しさん
2015/10/07(水) 08:12:26.59ID:G7fFJAAL○確率
0407デフォルトの名無しさん
2015/10/07(水) 08:17:05.53ID:G7fFJAAL×エンタルピー
○エントロピー
0408デフォルトの名無しさん
2015/10/07(水) 08:19:10.68ID:elQLoWSu0409デフォルトの名無しさん
2015/10/07(水) 08:28:50.28ID:G7fFJAAL設計者の何らかの意図が介在しているからな。
ただ意図しない書き換えには、そんなもの存在しないと考えるのが自然で無難な考え方。
0410デフォルトの名無しさん
2015/10/07(水) 16:07:28.33ID:pjmPk0WF#include <stdio.h>
int main(void){
printf("halo world\n");
return 0;
}
0411デフォルトの名無しさん
2015/10/07(水) 16:20:57.39ID:f/5i6RZS>halo
error: 綴りがちがうです(死)
0412デフォルトの名無しさん
2015/10/07(水) 17:27:05.88ID:gQOBln3k0413デフォルトの名無しさん
2015/10/07(水) 21:49:21.07ID:elQLoWSuプログラムで書く場合の最小単位は8bitだから各ビットの変化は独立事象じゃないと
言っているんだが?
「その通り」って、いったい何をどのように理解したんだか。
0414デフォルトの名無しさん
2015/10/07(水) 22:39:52.36ID:6zK6lqZA0415デフォルトの名無しさん
2015/10/07(水) 23:46:47.99ID:idUOggME0416デフォルトの名無しさん
2015/10/08(木) 00:06:25.36ID:POJ8qnGh今の環境はFreeBSDですがLinuxなどでも使えるような方法を教えてください!
0417デフォルトの名無しさん
2015/10/08(木) 00:15:08.55ID:zB8NDCa50418デフォルトの名無しさん
2015/10/08(木) 06:45:11.90ID:Wg5qs1Il普通に制御用のポートで待ち受けてればいいのでは?
0419デフォルトの名無しさん
2015/10/11(日) 06:09:00.19ID:hK8W5DC20420デフォルトの名無しさん
2015/10/11(日) 10:43:50.53ID:cisW2wCG0421デフォルトの名無しさん
2015/10/11(日) 11:59:52.24ID:kPPqSTTy0422デフォルトの名無しさん
2015/10/12(月) 10:41:40.39ID:WcoOmG9rていうかメモリの書き換わりがコードから追いにくくなる
当たればスゲーパフォーマンスが出るが、バグったときがかなり悲惨
デフォルトでは"new"がOSのメモリ確保APIに依存することから、
組み込みのファームウェアの本当の最下層やOSのコアの部分では事実上STLが使えない
STLの無いC++とか中途半端も良いところなのでCが正解
0423デフォルトの名無しさん
2015/10/12(月) 10:43:06.38ID:zXcAU5CZ0424デフォルトの名無しさん
2015/10/12(月) 10:46:05.04ID:WcoOmG9r0425デフォルトの名無しさん
2015/10/12(月) 10:58:05.03ID:HUg+uyu5C++の隠れたコードは陽に意識して使うものだし
newの話からSTLに飛ぶ狂態は間違いなく頭おかしい
0426デフォルトの名無しさん
2015/10/12(月) 12:38:38.20ID:P/evmScx> デフォルトでは"new"がOSのメモリ確保APIに依存することから、
> 組み込みのファームウェアの本当の最下層やOSのコアの部分では事実上STLが使えない
アロケータというのがあってな。
割り込みやら特殊な部分で使えないって話だとしても、それ以外では sbrk() なりを自分で
書くだけで使えるようになることも多い。
0427デフォルトの名無しさん
2015/10/12(月) 13:29:00.54ID:WcoOmG9r>C++の隠れたコードは陽に意識して使うものだし
隠れたコードの存在自体を問題視しているノシ
>newの話からSTLに飛ぶ狂態は間違いなく頭おかしい
↑STLが中で何をやっているか、どういう使い方をしたらパフォーマンスがどうなるのか、スタックの消費量はどうなるのか、
何がスレッドセーフで何がそうでないのか、
そもそもstd::stringをCで書いたらどんなコードになるのかわかった上でレスしているとは思えぬ
newとSTLの間の理解が飛んでいることを>>425で自ら表明しているのだから…
C++界隈には手前がアタマイイーつもりでてんでロクなことをしない輩が居るというのも使用をためらう理由のひとつ
使用者が言語仕様に似るのかもしれん…
>>426
それは知ってるし(だから”デフォルトでは”と断ってゐる)、やったこともあるYO!
しかし確実さと簡明さを至上とするはずの(ハードウェアにかかわる微妙な問題でただでさえ複雑化する)
OSのカーネルにあたる部分でstd::stringやstd::vectorとか使う設計センスをあなたは信用できますか
0428デフォルトの名無しさん
2015/10/12(月) 13:36:33.44ID:P/evmScx使わないほうがいい箇所で使わなければいいだけの話なんだから、
C++を使わない理由にはならないのでは?
チーム内に信用できない・わかってない輩がいて、コードレビューもしない
ということなら、Cだろうが何だろうがご愁傷様という話だし。
そんな状況で「Cなら安心」(?)と思える理由がよくわからない。
0429デフォルトの名無しさん
2015/10/12(月) 13:41:59.30ID:WcoOmG9r左様全てはコストとの相談である
微妙な状況で隠れたコードがあるとレビューの効率が落ちるし、
そもそも複数人でコードすべてを見るレビューがどんだけ高コストか知っているなら
レビュー至上主義みたいなレスは出てこないはず…
コード全体を十分見れないのであれば、使ってほしくない言語機能は処理系レベルで禁止するにしくはなし
0430デフォルトの名無しさん
2015/10/12(月) 14:20:22.53ID:zXcAU5CZ0431デフォルトの名無しさん
2015/10/12(月) 14:44:26.93ID:HUg+uyu5参考までに聞かせてくれ
おまえの理解では「STL」とは何だ?
0432デフォルトの名無しさん
2015/10/12(月) 16:47:14.62ID:j9MpNgGM0433デフォルトの名無しさん
2015/10/12(月) 17:24:28.84ID:HUg+uyu5あれをSTLとは言わんぞ
0434デフォルトの名無しさん
2015/10/12(月) 19:06:48.27ID:z2P61KABこれで、a1とa2のどちらかの大小を判定して、小さい方<大きい方
と表示してくれるプログラムになっているのですが
if関数の条件部分が何がどうなってるのかさっぱり分かりません…
教員が黒板に書いて説明もせずに終わってしまいました…
0435デフォルトの名無しさん
2015/10/12(月) 19:25:33.00ID:HUg+uyu5a1がa2より大きいときにだけ実行する
temp = a1;
a1 = a2;
a2 = temp;
は、a1とa2の値を入れ替える処理だ
a1がa2より大きいときだけ、a1とa2を入れ替えると、
a1には必ず大きい方の値が、a2にはそうでない値が入ることになる
0436デフォルトの名無しさん
2015/10/12(月) 19:26:04.91ID:t+M9Z4Xia1 > a2ならa1とa2を交換して a1 < a2 とになるようにしてるだけ
0437デフォルトの名無しさん
2015/10/12(月) 19:43:48.69ID:z2P61KABありがとうございます
0438デフォルトの名無しさん
2015/10/12(月) 19:43:50.23ID:z2P61KABありがとうございます
0439デフォルトの名無しさん
2015/10/12(月) 23:01:24.03ID:HUg+uyu5当たり前すぎるのに長ったらしく目障りなコードを
もういいだろってことにするだけのもので、
当たり前すぎない奴がガタガタ言うのは放置するしか手がない
そーゆー奴は使うなってこと
0440デフォルトの名無しさん
2015/10/12(月) 23:12:57.66ID:rQ+NVLx7まあ、そういうこったな
万人向けの道具としては完全に失格だけど
もうC++はそういう方向性じゃないからな
0441デフォルトの名無しさん
2015/10/13(火) 00:03:40.09ID:yGVtmSaWC++14/C++1z 20
http://peace.2ch.net/test/read.cgi/tech/1410382924/
ほらよ
0442デフォルトの名無しさん
2015/10/13(火) 00:03:52.76ID:L1lZL95u0443デフォルトの名無しさん
2015/10/13(火) 00:10:18.48ID:yGVtmSaW0444デフォルトの名無しさん
2015/10/13(火) 00:12:51.15ID:L1lZL95u0445デフォルトの名無しさん
2015/10/13(火) 06:49:10.98ID:+dD3Vasdint main(void){
char str;
str = getchar();
while(str != 'a'){
puts("×");
str = getchar();
}
puts("○");
return 0;
}
aが入力されるまで繰り返し続けるプログラムなんですが実行すると
w
×
×
o
×
×
a
○
という風に目的以外の文字を打つと×が2回出てしまいます
なぜでしょうか?
0446デフォルトの名無しさん
2015/10/13(火) 07:09:37.99ID:GFCMPHjJ0447デフォルトの名無しさん
2015/10/13(火) 08:55:35.05ID:+dD3Vasd配列を使ったらちゃんと動きました
ありがとうございました
0448デフォルトの名無しさん
2015/10/14(水) 21:00:08.51ID:UlxsNyw4VC++2010で、
{
int x;
double y;
int n = sscanf_s("6,0.0000", "%d,%lf", &x, &y);
}
とやるとx, yにそれぞれ6, 0.0が入ってn==2となる(期待動作)が、
{
size_t x;
double y;
int n = sscanf_s("6,0.0000", "%Iu,%lf", &x, &y);
}
とやるとn==1となってyに値が入らない、(xには6が入る
0449448
2015/10/14(水) 21:01:02.66ID:UlxsNyw40450デフォルトの名無しさん
2015/10/14(水) 22:01:33.28ID:i4h52HNbcまたはc++の書かれた大量の.txtを分別する必要が生じました
0451デフォルトの名無しさん
2015/10/14(水) 23:16:38.65ID:KOaK3OWE0452デフォルトの名無しさん
2015/10/14(水) 23:44:12.43ID:wKxZRGBM…と話を逸らしてみる
0453片山博文MZ ◆T6xkBnTXz7B0
2015/10/15(木) 02:05:21.82ID:DKqxwJYdC++にしかない記述を見つけ出して判定する、くらいしか思い付かないなあ。
C++でしか使わない標準ヘッダーのインクルードとか「std::」など。
GitHubを参考にしたら?
0454デフォルトの名無しさん
2015/10/15(木) 02:21:48.06ID:yCaEBBjUCコンパイラに通してエラーが出なければC。
エラーが出て、C++コンパイラなら通るならC++。
スクリプトは自分で書けるだろ。
0455デフォルトの名無しさん
2015/10/15(木) 02:24:33.33ID:2u28QwcFソース自体に文法エラーがあるかもしれないのでその方法は完全ではなさそう
0456デフォルトの名無しさん
2015/10/15(木) 03:05:28.18ID:yCaEBBjUそんなのまで面倒見ようとしたら機械判定は無理だな。
ほんとに必要なら両方エラーになったやつを後で目視判定するしかないかな。
0457デフォルトの名無しさん
2015/10/15(木) 06:45:14.88ID:CaDOatiNインクルードファイルやマクロの指定がちゃんとできてなくてほとんど目視になる未来が見える
grep で :: とか class throw catch static_cast nullptr とかのキーワードがあれば C++ でいいんじゃね
>>455
そもそも C と C++ の両方でコンパイルできるソースが存在する時点で完全はあり得ない
0458デフォルトの名無しさん
2015/10/15(木) 08:48:45.80ID:b8H8ox4xたとえば
int main(void)
{
retur 0;
}
か・・・
「これはCではない」が俺の答えだが
0459デフォルトの名無しさん
2015/10/15(木) 09:26:01.73ID:uTgqsqJW揚げ足を取る気はないけど、
そんなソースでも上の方で変なヘッダを読んでると通る場合もあるしね。
#include "my_trick.h"
int main(void)
{
retur 0;
}
--- my_trick.h ここから ---
#define retur return
--- my_trick.h ここまで ---
言い換えれば #include の中まで追わないツールでは
Cのソースか否かを判定できないってこと。
しかし、単一ファイルの機械判定じゃ
インクルード用パスまで処理できないだろうし。
0460デフォルトの名無しさん
2015/10/15(木) 10:09:09.79ID:e79jBZIH0461デフォルトの名無しさん
2015/10/15(木) 11:53:31.58ID:/FttwQgW俺は「エラーのあるソース」と言ったはずだ
エラーのないソースについてどうやって「揚げ足」がとれるんだ?
しかも #include はおまえが追加したもので
「これは俺のコードではない」が俺の答えだが
>>460
-Dretur=returnなんてioccc以外で実例あるか?
0462デフォルトの名無しさん
2015/10/15(木) 13:15:47.81ID:fxI94dUt0463デフォルトの名無しさん
2015/10/15(木) 14:29:57.86ID:FIAOecaqその1)
本当にソースだけなのかな?
→ 説明他の文中にコードが書かれてるようなのだと手も足もだせない
その2)
makefile ないの?
そこに C/C++ どっちでコンパイルするか記述してそうだけど
0464デフォルトの名無しさん
2015/10/15(木) 15:57:16.64ID:2u28QwcFそのとうり
0465デフォルトの名無しさん
2015/10/15(木) 16:54:06.67ID:imNmawUu> その1)
> 本当にソースだけなのかな?
ソースだけでいいです。
本当はソースだけじゃないが、それは除去可能なので考慮外でいいです。
> その2)
> makefile ないの?
> そこに C/C++ どっちでコンパイルするか記述してそうだけど
ありません。
typoもありません。
#includeには/usr/include以外もあります。
仮に千ファイルの目視確認が、50程度に減ると大変うれしいです。
0466デフォルトの名無しさん
2015/10/15(木) 16:59:55.13ID:jbXTRNV+0467デフォルトの名無しさん
2015/10/15(木) 17:03:15.95ID:jbXTRNV+0468デフォルトの名無しさん
2015/10/15(木) 17:06:44.63ID:kPMRst6A漏れたの見て適当にパターン追加すればすぐできんだろ
$ egrep -l 'class|::|#include.*<[^.]*>' *.txt
0469デフォルトの名無しさん
2015/10/15(木) 18:55:07.02ID:skglJZk00470デフォルトの名無しさん
2015/10/15(木) 21:18:14.14ID:Y1tNGP/eワーニングレベルを上げたときちょーうざーい
0471デフォルトの名無しさん
2015/10/15(木) 23:18:15.80ID:HFbUTYOm0472デフォルトの名無しさん
2015/10/15(木) 23:37:55.12ID:kPMRst6A○ ウォーニング
0473デフォルトの名無しさん
2015/10/15(木) 23:46:37.36ID:HFbUTYOm0474デフォルトの名無しさん
2015/10/16(金) 06:10:54.96ID:4x1rfSTd0475デフォルトの名無しさん
2015/10/16(金) 07:05:23.80ID:Pm7R1HUM> -Dretur=returnなんてioccc以外で実例あるか?
むしろできない処理系の実例を知りたいわ
0476デフォルトの名無しさん
2015/10/16(金) 08:36:50.48ID:dd40xLzW......
......
return strlen(hoge); <- こういうのおkだっけ?
}
0477デフォルトの名無しさん
2015/10/16(金) 12:03:26.95ID:fawQUoNIおk
なんでおkじゃないと思ったの?
0478デフォルトの名無しさん
2015/10/16(金) 12:27:14.75ID:dd40xLzW0479デフォルトの名無しさん
2015/10/16(金) 12:49:18.51ID:uHiIqjUe例示しているコードの場合、その程度は許容する処理系が殆どだろうけど
厳密には strlen() の戻り値は size_t 型なので int にキャストした方が無難
コンパイル時に警告が出るかも
0480デフォルトの名無しさん
2015/10/16(金) 22:13:24.21ID:gBEGw2vxstrlen()が返すのはsize_tなので64ビット環境ではワーニングがちょーうざーい
0481デフォルトの名無しさん
2015/10/18(日) 23:40:00.84ID:/XPu/MdMこれって64bit環境でもintですか?
仮にintだとしたらCで高速な処理を書く場合はintを使ったほうが速いということになりますかね。
0482デフォルトの名無しさん
2015/10/18(日) 23:48:36.52ID:1MrL9p77intだけでプログラミング出来るならそうかもしれない
0483デフォルトの名無しさん
2015/10/19(月) 01:38:46.12ID:NKYwlAGr>C言語の型は演算時全て汎整数昇格によってint型に変換されると言われていますが、
えっ
>仮にintだとしたらCで高速な処理を書く場合はintを使ったほうが速いということになりますかね。
intは処理系が想定するアーキテクチャ──で最も自然なサイズの整数型、とされる{誰によって?}ので
確かにそれ以外の型を不必要に使うよりは速さが期待できる
実測はしていない
0484デフォルトの名無しさん
2015/10/19(月) 09:02:55.41ID:n+wSsaqA>C言語の型は演算時全て汎整数昇格によってint型に変換されると言われていますが、
これほんと?
汎整数拡張ってこの世からなくなったの?
0485デフォルトの名無しさん
2015/10/19(月) 09:07:05.59ID:n+wSsaqA忘れてくれすまん
0486デフォルトの名無しさん
2015/10/19(月) 20:16:48.87ID:8GQYIyfO>C言語の型は演算時全て汎整数昇格によってint型に変換されると言われていますが、
integral/integer promotion のことなら,
integral/integer promotion を受けるのは int よりサイズの小さな型,すなわち char, short のみ.
0487デフォルトの名無しさん
2015/10/19(月) 21:20:22.54ID:ptZEm67j汎整数拡張って何だ? 整数拡張なら知ってるが。
# 自分が同じことをされる気分を思い知れ
0488デフォルトの名無しさん
2015/10/19(月) 21:50:26.76ID:UqlRVX0Pcとc++では呼び方が違うようだね
0489デフォルトの名無しさん
2015/10/19(月) 22:43:32.83ID:EvDPDZPqほら微妙に知識が足りないまま揚足取ろうとするから
こんなことになっちゃってまあ
0490デフォルトの名無しさん
2015/10/19(月) 23:12:12.74ID:ptZEm67jこんなことって、どんなこと?
もっぺん聞くが、汎整数拡張って何だ? 整数拡張なら知ってるが。
# ここはCスレ
0491デフォルトの名無しさん
2015/10/20(火) 00:03:41.32ID:k6scLtu1Cは整数拡張、C++は汎整数昇格と書かれているが、タイトルがなぜ両者のミックスなのかはよくわからん。
整数拡張が起こるのはintより小さいサイズの型だな。
64bit環境ならlong型使ってもint使っても使っても演算効率は変わらない。
0492デフォルトの名無しさん
2015/10/20(火) 00:29:04.86ID:CvaUwt6E(size_tとから64 bitになるが
0493デフォルトの名無しさん
2015/10/20(火) 02:46:29.09ID:1m2w2gZVC99の翻訳は整数拡張になったが
0494デフォルトの名無しさん
2015/10/20(火) 05:41:52.29ID:7U/Y/4//> C99
の本てネットにないの?
0495デフォルトの名無しさん
2015/10/20(火) 06:45:57.24ID:1m2w2gZVK&Rは書籍"プログラミング言語C"の俗称、現在はANSI対応の第2版
日本語版は共立出版から石田先生の翻訳で出版されている
電子書籍化はされていなかったはず
C99は規格名で日本での公式の翻訳はJIS X3010を参照すればわかる
ネットでググれば内容を確認できるサイトもいくつかある
0496デフォルトの名無しさん
2015/10/20(火) 08:11:21.15ID:m2BdvBuH> # 自分が同じことをされる気分を思い知れ
草生えた
0497デフォルトの名無しさん
2015/10/20(火) 14:54:33.93ID:/mfteKV2俗称ならそう断れば済むのに無理やり引っ張ってもバカにしか見えないぜ
0498デフォルトの名無しさん
2015/10/20(火) 14:56:53.07ID:RLC1jZn70499デフォルトの名無しさん
2015/10/20(火) 15:12:58.75ID:mXSv7y9K知らなかった?
0500デフォルトの名無しさん
2015/10/20(火) 15:27:03.20ID:RLC1jZn7サービス業に成り下がっていると思うんだが…
0501デフォルトの名無しさん
2015/10/20(火) 15:38:04.51ID:mXSv7y9Kマ板へどうぞ
0502デフォルトの名無しさん
2015/10/20(火) 16:37:31.49ID:ScGaOmOZ工業人の定義はどこに規定されている?
0503デフォルトの名無しさん
2015/10/20(火) 16:40:24.15ID:Ixf8573x日本工業規格である JIS でうたってるし、そういうもんでしょ
JAS で扱ってるなら食品さ
0504デフォルトの名無しさん
2015/10/20(火) 17:00:30.53ID:ffVke2Wd工業製品のC言語を使って作ったものが、工業製品であるかはまた別じゃね
0505デフォルトの名無しさん
2015/10/20(火) 17:06:52.66ID:Ixf8573xたしかーにw
書いたコードに対するクオリティーコントロールの類はJIS外だったっけか
得られる対価に物理的なものがなくても工業製品扱いになってきてるし
工業という言葉の範囲は正直わけわからんね
0506デフォルトの名無しさん
2015/10/20(火) 17:13:15.97ID:RjoJCkAX0507デフォルトの名無しさん
2015/10/20(火) 18:43:28.81ID:zMKLiSST一応ソフトウェア品質の測定や評価のための規格ならあることはある
JIS X0129やX0133など
0508デフォルトの名無しさん
2015/10/20(火) 23:17:04.26ID:9lMv4SHaではなく
C99では「整数拡張」、C++では「汎整数昇格」
0509デフォルトの名無しさん
2015/10/20(火) 23:36:55.77ID:wyga96ibアスタリスクはお前……お前さっきまで掛け算の演算子みたいな顔してたくせに
何なんだよアドレスって……&もお前……さっきまで論理積みたいな顔してたくせに……。
同じ記号で全然違うものを表現するのはやめてほしい。
大体何でアドレスが必要なんだ。何に使うんだ。
難しいし、難しい割に何の役に立つのか全然分からん。
0510デフォルトの名無しさん
2015/10/20(火) 23:56:26.40ID:ffVke2Wd何もしなくてもポインタ扱いってのはぶったまげた仕様だと思った
俺だったら絶対整合性とかにとらわれて、「&」つけなきゃポインタを取れないようにするわ
でもそうするとポインタの先を配列風にアクセスするときに(*p)[10]ってしなきゃならなくなるし
関数ポインタで関数を呼び出す時も(*p)()ってしなきゃならなくなるから、不便だね
そういう意味でCは凄いと思う
0511デフォルトの名無しさん
2015/10/21(水) 01:05:24.40ID:V6YgCR7p0512デフォルトの名無しさん
2015/10/21(水) 02:00:14.44ID:z8pMKpA9必死すぎワロタ
0513デフォルトの名無しさん
2015/10/21(水) 03:30:15.14ID:sgpkO4IL0514デフォルトの名無しさん
2015/10/21(水) 03:45:21.99ID:Ckk/2AJOその程度の考えしか浮かばないのなら決定的にプログラムセンスが欠けてる
Cのポインタ周りの実装は非常に洗練されてるぞ
多少安全性を犠牲にしても徹底的に無駄を削り落として効率を追及した姿勢は
UNIXのシステム記述言語として誕生した出自を考えればある意味当然
0515デフォルトの名無しさん
2015/10/21(水) 07:38:13.94ID:+loG4wyYお前ら教えてくれ因みに基礎しかやってない
0516デフォルトの名無しさん
2015/10/21(水) 08:13:36.48ID:HP7XxcT50517デフォルトの名無しさん
2015/10/21(水) 13:00:34.16ID:qLT13gcy俺もそう思う
& と * は省略不可、これがきれいだよね。
printf(&"hello world"[0]); でいいのに
printf( "hello world" ); じゃなきゃヤダジタ
というのはあくまで構文砂糖であり極論すれば理不尽の1つだ
あるのを知ってて使わないと、知らないのと勘違いされるから使うけど、
何の疑問も持たないアホを見てるとイライラするよね
0518デフォルトの名無しさん
2015/10/21(水) 13:42:17.30ID:gAn1abGPシリアルモードレジスタ、SMRビット定義のコードで
# define H8_3069F_SCI_SMR_CKS_PER1 (0<<0)
# define H8_3069F_SCI_SMR_CKS_PER4 (1<<0)
# define H8_3069F_SCI_SMR_CKS_PER16 (2<<0)
# define H8_3069F_SCI_SMR_CKS_PER64 (3<<0)
とあります。
(0<<0)、(1<<0)の部分をそのまま0、1と記述しないのは
「ここはビットに関する定義ですよ」ということをわかりやすくする為、
という考え方でよろしいでしょうか。
またこのようなコードは組み込み系では一般的なのでしょうか。
宜しくお願い致します。
0519デフォルトの名無しさん
2015/10/21(水) 13:46:38.87ID:Zpd4YsWy1ビット目のマスクまたは値ですよ という意図で (1<<1)
:
nビット目のマスクまたは値ですよ という意図で (1<<n) と書くけど
(n << 0) すなわち n を 0ビットシフトする と記述する意図はわからんね
0520デフォルトの名無しさん
2015/10/21(水) 14:12:01.68ID:ixJXXqdPこれが例えばビット[3:2]に割当てられていれば、
PER1 (0 << 2)
PER4 (1 << 2)
PER16 (2 << 2)
になる
0521デフォルトの名無しさん
2015/10/21(水) 14:25:42.19ID:Zpd4YsWy( 0 ) << 0
(1<<0) << 0
(1<<1) << 0
((1<<0)|(1<<1)) << 0
なっとくう
0522デフォルトの名無しさん
2015/10/21(水) 14:29:16.14ID:AFr25YPiこの本は8章から難しかった
0523518
2015/10/21(水) 14:46:33.93ID:gAn1abGP早速のご回答、とてもわかりやすい説明でありがとうございました。
>>522
8章からが難しいのですね。
数年前に勉強したC言語を復習しながらなので
そこまで辿り着けるかどうか(笑)
また何かありましたら宜しくお願いいたします。
0524デフォルトの名無しさん
2015/10/23(金) 06:25:09.84ID:1PSI3h49http://cache.togech.jp/wp-content/uploads/2015/06/558b8880a19ea.jpg
0525デフォルトの名無しさん
2015/10/23(金) 13:31:12.56ID:E9Sd6aCq0526デフォルトの名無しさん
2015/10/25(日) 08:26:21.37ID:m/QHrFcqスマン、この意味がわからない・・
0527デフォルトの名無しさん
2015/10/25(日) 15:14:05.80ID:pQr9SQa92chレスにしてはむしろクドいくらい
部分だけ見ると無意味式だけどformat揃えてるて話
0528デフォルトの名無しさん
2015/10/25(日) 18:38:41.64ID:MN19GUGi俺も意味わからん
> PER1 (0 << 2) ⇒ 0
> PER4 (1 << 2) ⇒ 4
> PER16 (2 << 2) ⇒ 8
0529デフォルトの名無しさん
2015/10/25(日) 18:48:34.95ID:+dxag48m辺りの概念がそもそもわかってないんじゃない?
0530デフォルトの名無しさん
2015/10/25(日) 19:00:49.88ID:kjlT9+oK(1<<0) 00000001
(2<<0) 00000010
(3<<0) 00000011
---
(0<<2) 00000000
(1<<2) 00000100
(2<<2) 00001000
(3<<2) 00001100
---
これなら分かるだろう
だけど組込み系だとこんな場合はビットフィールド構造体を使うような気がする
MSB先行かLSB先行かで環境依存にはなるけど、組込み系の処理系なら大抵は
コンパイラオプションで設定できるはず
0531デフォルトの名無しさん
2015/10/25(日) 19:40:43.09ID:xouXdqaL組み込み系のレジスタアクセスにビットフィールドなんか使ってたら、
単なる代入に見えて実は read-modify-write とかになって死ぬ。
0532デフォルトの名無しさん
2015/10/25(日) 20:02:07.03ID:kjlT9+oKアクセス方法に制限がある特殊なレジスタはアセンブラでSET、CLRするしかない
殆どの場合はバイト単位のアクセスで問題ないよ
0533デフォルトの名無しさん
2015/10/25(日) 20:19:41.77ID:xouXdqaLreg.bits = 1;
こんなコードが read-modify-write になるのはビットフィールドを使ったときだけ。
自分でビット演算するなら読み書きのタイミングや回数はコード上の見た目とそろう。
メモリマップトレジスタのアクセス幅はレジスタごとの仕様により変わるだろう。
個人的な経験の範囲では、バイト単位でアクセスするレジスタには覚えが無いな。
だいたいは CPU レジスタや主なデータバスの幅と合わせてあったと思う。
0534デフォルトの名無しさん
2015/10/25(日) 20:48:25.80ID:kjlT9+oK>自分でビット演算するなら読み書きのタイミングや回数はコード上の見た目とそろう。
そりゃそうだろう。当たり前
まあread/writeのタイミングや回数が問題になるなら素直にインラインアセンブラを使う方が無難で安全
アクセス幅は単にC言語の最小アクセス単位のcharを例にしただけでビットフィールドのアクセスの最小ビット数が
バイト単位と言いたかっただけ
まあもうどうでもいいよ
0535デフォルトの名無しさん
2015/10/25(日) 20:56:28.51ID:ruGH96NV0536デフォルトの名無しさん
2015/10/26(月) 07:13:03.87ID:vgIN4zh70537デフォルトの名無しさん
2015/10/26(月) 07:32:17.42ID:qp8aMCEi> こんなコードが read-modify-write になるのはビットフィールドを使ったときだけ。
a=0; が clr にコンパイルされて read-modified-write になる例もある
The 68000 CLR instruction does a Read access first, then a Write access.
http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node000C.html
> 個人的な経験の範囲では、バイト単位でアクセスするレジスタには覚えが無いな。
ドヤ顔するには経験値が低すぎる
0538デフォルトの名無しさん
2015/10/26(月) 07:45:26.11ID:FkTNVC7Rchar b7:1; /* または char b0:1; */
char b6:1; /* char b1:1; */
...
char b0:1; /* char b7:1; */
} bit_field;
typedef union { /* バイトとビットフィールドの共用体 */
char byte;
bit_field bit;
} SFR;
SFR sfr; /* レジスタの変数宣言 */
sfr.byte = 0; /* まとめてクリア */
sfr.bit.7 = 1; /* ビットフィールドで bit7 set */
sfr.byte |= 0x80; /* bit演算で bit7 set */
0539デフォルトの名無しさん
2015/10/26(月) 07:48:27.26ID:FkTNVC7R正 sfr.bit.b7 = 1
0540デフォルトの名無しさん
2015/10/26(月) 08:06:17.85ID:YRFGsT3p> a=0; が clr にコンパイルされて read-modified-write になる例もある
それは困るな。
どのコンパイラの話?
http://www.jamsat.or.jp/scope/hitech/68k1.txt
> コンパイラは volatile と宣言されたオブジェクトにゼロを書くのに 68000 の CLR 命令を使いません。
ここらへんの仕様がちょっと調べて確認できるのはこのコンパイラだけだったけど、
コンパイラ屋さんもバカではないだろうから、こういう配慮があるもんじゃないかな。
べつにドヤ顔してるつもりはないよ。
バイト単位でアクセスするレジスタの例を知ってるなら出してくれればいいのでは?
・・・あ、 8bit アーキテクチャなら普通な気がするんだけど、そういう話?
0541デフォルトの名無しさん
2015/10/26(月) 08:13:00.03ID:FkTNVC7R0542デフォルトの名無しさん
2015/10/26(月) 08:33:24.48ID:YRFGsT3pそう言われればそうか。
使ったことあるCPUのマニュアル見直したら普通にあったわ。
>532 の「殆どの場合はバイト単位のアクセスで問題ない」ってのはさすがに
おかしいだろう思って逆に極端なことを言っちゃったみたい。
ごめんよ。
0543デフォルトの名無しさん
2015/10/26(月) 08:36:34.42ID:YRFGsT3pこれもよく見るんだけど、 C の aliasing rule 違反なんだよね。
最適化でどうなるかわかったもんじゃない。
0544デフォルトの名無しさん
2015/10/26(月) 08:39:07.37ID:66JW6Ozr> どのコンパイラの話?
知らないと思うが HI-UX 付属の cc
> バイト単位でアクセスするレジスタの例を知ってるなら出してくれればいいのでは?
8bit デバイスを 16bit システムに繋ぐとか普通にあるだろ
0545デフォルトの名無しさん
2015/10/26(月) 09:20:45.67ID:YRFGsT3pありがとう。
・・・これは、"HI-UX" でちょっと調べても仕様は確認できないね。
0546デフォルトの名無しさん
2015/10/26(月) 10:09:57.91ID:RjS49Wj6ちょっとごめん
最適化でどうなるかわからないってどういう意味?
ビットフィールドの順序が入れ替わる可能性があるということ?
どちらかの順序で割り当てられたらビット並びそのものが入れ替わることはないと思っていたのだけど違うのか?
0547デフォルトの名無しさん
2015/10/26(月) 10:27:20.81ID:YRFGsT3punion のメンバのうち最後に書き込まれたもの以外のメンバを読むと未定義動作になる。
少なくとも規格の範囲内では。
使うならコンパイラごとの追加仕様に頼ることになる。
gcc だと >538 の例で sfr. としてのアクセスは拡張機能として認められるけど、
char* sfr_byte = &sfr.byte;
bit_field* sfr_bits = &sfr.bits;
こうしてしまうと sfr_byte, sfr_bits を通した相互のアクセス結果は保証されなくなる。
https://gcc.gnu.org/bugs/#casting_and_optimization
> To fix the code above, you can use a union instead of a cast (note that this is a GCC extension which might not work with other compilers):
0548デフォルトの名無しさん
2015/10/26(月) 10:49:34.69ID:RjS49Wj6いやそう言うことを聞きたいんじゃなくて、>>538のコードが最適化で挙動が変わる可能性があるかどうかを知りたいんだが
0549デフォルトの名無しさん
2015/10/26(月) 11:02:35.17ID:3wRG2QUFそもそもunionに書いたからって思った通りに重なるかどうかの保証もないし
0550デフォルトの名無しさん
2015/10/26(月) 11:04:27.77ID:YRFGsT3p未定義動作ならなんでもアリだよ?
・・・と、少し調べなおしたところ C99 以降の C では挙動が(実装依存にはなるけど)定まるようになってるみたい。
https://stackoverflow.com/questions/19511391/type-punning-vs-union-member-access
これなら、整数の表現形式やビットフィールドの格納方法が変わらない限り結果は変わらない。
最適化でそこが変わる可能性があるかどうか知りたければ、コンパイラの仕様を確認すればいい。
未定義動作になるのは C++ の話ね。スレ違いごめん。
0551デフォルトの名無しさん
2015/10/26(月) 11:09:51.36ID:RjS49Wj60552デフォルトの名無しさん
2015/10/26(月) 11:59:47.08ID:BA/+Pgz/処理系定義やんC89でも
重大な違いだぞ、これ
0553デフォルトの名無しさん
2015/10/26(月) 12:10:26.02ID:5JPyjNoj読んで、レジスタアクセスの注意とかビットフィールドでアクセスした
ときの注意とかそういうので判断した方がいい
0554デフォルトの名無しさん
2015/10/26(月) 23:13:46.88ID:3Irjsyu60555デフォルトの名無しさん
2015/10/27(火) 06:47:57.34ID:8pn5p80e適合させる必要もないしそれだけの手間をかけるメリットもない
要はC言語風に記述出来て開発者だけが仕様を理解していれば良い代物
まあ一般的に通用する範囲での互換性程度は維持しているだろうが詳細はユーザマニュアル参照で
生成したコードも製品に最適化(メモリマッピングなど)されており基本的には機種依存
0556デフォルトの名無しさん
2015/10/27(火) 06:59:47.11ID:3NG8LBLK生成するコードを全て網羅出来てるなら純粋にすごいと思う
0557デフォルトの名無しさん
2015/10/27(火) 11:09:06.54ID:l6WYH4GQ規格に準拠した評価ツールやらをかましたら55点みたいなのも
普通に使われているという印象
そして有料の専用デバイスを介してデバッガを動かしたら
コンパイラのバグ発覚みたいな素敵な世界
0558デフォルトの名無しさん
2015/10/27(火) 12:14:14.46ID:u1aO7Xxwこれによって生産性があがった。ただ、移植性なんてもともと考えてない。
どうても挙動に・・・ってところがあるならそこはインラインアセンブラで書けばいい。
0559デフォルトの名無しさん
2015/10/27(火) 14:10:28.43ID:sViExbmq本質的にターゲット依存する論理とそうでないのの分類は病的なほど拘る。
で移植性なんぞあるわけないパートで寝言ぬかさないってだけ。
0560デフォルトの名無しさん
2015/10/27(火) 16:23:09.25ID:xcs+KCO60561デフォルトの名無しさん
2015/10/27(火) 17:29:54.20ID:8pn5p80e環境が貧弱だからアセンブラ使わざるを得ない場面も多い
アセンブラに頼らなくても済むくらいの環境ならとっくにC++に移行してる
0562デフォルトの名無しさん
2015/10/27(火) 20:17:11.59ID:uryQ+4FCどんだけ狭い井戸で吠えてるんだよ w
0563デフォルトの名無しさん
2015/10/27(火) 21:50:58.68ID:aTkGcr+4英語なみの絶対必須
0564デフォルトの名無しさん
2015/10/27(火) 22:39:14.05ID:U7jDynek分野による
0565デフォルトの名無しさん
2015/10/27(火) 23:51:38.28ID:aTkGcr+40566デフォルトの名無しさん
2015/10/28(水) 00:20:33.85ID:UwSVDSb+0567デフォルトの名無しさん
2015/10/28(水) 00:35:24.30ID:c/6FT5oj0568デフォルトの名無しさん
2015/10/28(水) 00:35:59.88ID:Q/PXF6pR某変態リーナスさんはC++をけちょんけちょんにけなしているそうな
0569デフォルトの名無しさん
2015/10/28(水) 04:19:36.37ID:YjvJYbMNなぜその内容が>>566へのレスになるんだ?
0570デフォルトの名無しさん
2015/10/28(水) 10:29:34.42ID:MvlYKNm6LinuxカーネルはCです という行間を読みとれよ
0571デフォルトの名無しさん
2015/10/28(水) 10:39:19.84ID:9zUX3+we必須 というかアセンブラを怖がる奴はCもさわるな ダメ、絶対
少々頭の切り替えが必要だがさほど難しいものでもない
0572デフォルトの名無しさん
2015/10/28(水) 11:02:51.62ID:YjvJYbMNUNIXがCで記述されているのは有名だけど、Linuxと何の関係が?
Linuxカーネルは、gccとかclangなどのC++で記述しているのじゃないの?
0573デフォルトの名無しさん
2015/10/28(水) 11:22:37.52ID:MX47WjJW0574デフォルトの名無しさん
2015/10/28(水) 11:29:38.07ID:YjvJYbMNクラスやオブジェクトの概念を使わずに記述しているとは思えないんだけど?
0575デフォルトの名無しさん
2015/10/28(水) 11:32:43.07ID:jEqolq4L0576デフォルトの名無しさん
2015/10/28(水) 11:38:26.54ID:YjvJYbMN構造体だけでは大規模ソフト開発は遠からず行き詰まる
最近はオブジェクト指向すらソフトウェアの大規模化、複雑化に適応しきれず
新しい方法論が色々議論されているけど
0577デフォルトの名無しさん
2015/10/28(水) 11:40:53.78ID:MX47WjJW0578デフォルトの名無しさん
2015/10/28(水) 11:43:58.36ID:qZpORpWM察してやれよ
0579デフォルトの名無しさん
2015/10/28(水) 11:58:10.30ID:MvlYKNm6>実際Linuxカーネルのコード見たわけではないけど
寝言は見てから言えよ
0580デフォルトの名無しさん
2015/10/28(水) 12:13:05.35ID:9zUX3+we調べもせずグダグダ抜かすトンチキがこんなとこにいるとは思えないんだけど?
0581デフォルトの名無しさん
2015/10/28(水) 12:31:52.79ID:EG5qMPfkコンパイラはgccだが言語はCだ、C++ではない
https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/kernel/cpu.c
>>576
昔は継承を糞のように重ねる流儀がはやったが、最近は継承関係を深くしない
デザインパターンのやり方は、記述の簡易性を実装に押し付ける(vtableとかね)ところが疑問だ
0582デフォルトの名無しさん
2015/10/28(水) 15:51:20.32ID:5D/M7fNM本日のNG
0583デフォルトの名無しさん
2015/10/28(水) 15:57:26.96ID:zwgLtS1NLinuxを最新のC++で全面的に書き直してくれるそうだ
楽しみにしていよう
0584デフォルトの名無しさん
2015/10/28(水) 16:41:53.48ID:bAVM3T1Q本体にメスが入る日もそう遠くないかと
0585デフォルトの名無しさん
2015/10/28(水) 16:49:08.35ID:MX47WjJW〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
0586デフォルトの名無しさん
2015/10/28(水) 16:49:32.66ID:0c7VcdM3Cで書かれているものをC++で書き直す必要が有るのか
移植性などまで考えたら、一行書き直すのにも慎重にならないといけないのに
0587デフォルトの名無しさん
2015/10/28(水) 16:53:26.41ID:MX47WjJWそれ、FXに関係あるんか?
0588デフォルトの名無しさん
2015/10/28(水) 16:58:39.56ID:MX47WjJW0589デフォルトの名無しさん
2015/10/28(水) 17:06:03.23ID:jEqolq4LLinusのC++嫌いは相当なものがあるので、Linusが生きてる限りC++になることはないんじゃないかな
0590デフォルトの名無しさん
2015/10/28(水) 17:13:09.81ID:MX47WjJW0591デフォルトの名無しさん
2015/10/28(水) 18:10:33.13ID:YOCHWkbo0592デフォルトの名無しさん
2015/10/28(水) 18:24:21.72ID:Ye8SldTs爆笑
レベルの低さを自ら晒していくスタイル
所詮、2ちゃんねるだな
0593デフォルトの名無しさん
2015/10/28(水) 18:36:22.55ID:qZpORpWM0594デフォルトの名無しさん
2015/10/28(水) 18:42:45.62ID:Ye8SldTsこの文脈でどこから低レベルプログラムの言葉が出てくるのやら
アホですか
0595デフォルトの名無しさん
2015/10/28(水) 18:45:42.09ID:qZpORpWM起こった事を話すぜ!
/ ̄ ̄ ̄~ヽ
(____ノハ
||| ‖ノ///|
|ヘ| //へ//|
‖ヽノ/u‖/ヘ
‖u| ノ /Vヘ|
/(ト・ッ(イ・ラ ソ人
/ ( ̄||  ̄ ノ|ヾ)
L/)、()ノu||V\
`// ∧rニ⊃ / / /ヽ
//二二Z ー′/u/ / |
――イ`ーイ/ /⌒\|
/ 厂 ̄
0596デフォルトの名無しさん
2015/10/28(水) 18:59:26.07ID:Ye8SldTsいつのまにか低レベルプログラムでのC言語の話になっていた
な、何を言っているのかわからねーと思うがおれも何をされたのかわからなかった
0597デフォルトの名無しさん
2015/10/28(水) 19:30:46.05ID:kvcGwh7f誰も同意してないのを理解したほうがいい
0598デフォルトの名無しさん
2015/10/28(水) 19:36:41.13ID:jEqolq4L0599デフォルトの名無しさん
2015/10/28(水) 19:40:33.14ID:Ye8SldTsプログラムそのものについては何も言ってないw
プログラムを作る側の人間のことを言っているだけだ
ここには話の流れを読めないアスペしかいないのか?
0600デフォルトの名無しさん
2015/10/28(水) 19:48:21.31ID:Ye8SldTs低レベルプログラムをC言語に限定するから話が混乱しているんだろ
C++で低レベルプログラムはできないのか?
低レベルプログラムは今後もずっとC言語で開発を続けるのか?
0601デフォルトの名無しさん
2015/10/28(水) 19:51:06.26ID:jEqolq4L>>593は>>591の「カーネルについてなら」ってのを説明するために「低レベルプログラム」って言葉を出したと思うよ
0602デフォルトの名無しさん
2015/10/28(水) 20:21:11.88ID:MX47WjJW相手にするな
0603デフォルトの名無しさん
2015/10/28(水) 21:04:19.61ID:me0APspr0604デフォルトの名無しさん
2015/10/28(水) 21:22:05.37ID:h9uKgHvBsqliteを使用したいと思って、以下のサイトなどを参照しながら組み込んでみました。
http://qune.cside.com/archives/001397.html
http://qune.cside.com/archives/001402.html
sqlite3.libを作成してコンパイルしてみたら一応コンパイルできたので組み込むことはできたと思います。
しかし、sqlite3_openを使用しようとすると未解決だと言われてエラーになってしまいます。
sqlite3.hを見てみると、確かにsqlite3_openがないように思います。
どなたか詳しい方いらっしゃいましたらご教授いただけないでしょうか?
0605デフォルトの名無しさん
2015/10/28(水) 21:43:31.81ID:ESD9qix2VFS とかは関数ポインタ多数してるから C++ で書き直せばもっときれいになるんじゃね
って夢想してた時もありました
0606デフォルトの名無しさん
2015/10/28(水) 22:51:43.42ID:3egweU9O0607デフォルトの名無しさん
2015/10/28(水) 23:14:48.62ID:UbSDqQh0そのさらに理由がPDP-7でOSを作る理由がテキスト整形のためだったというからCはテキスト整形言語
C++はSimulaの高速版であってシステム記述言語とかいうお題目はマーケティング上の後付け
実際は言うほど低水準レイヤーのプログラミングがしやすいわけではない
0608デフォルトの名無しさん
2015/10/28(水) 23:23:47.15ID:MX47WjJW〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
0609デフォルトの名無しさん
2015/10/29(木) 00:28:29.50ID:Xs9VAOmG0610デフォルトの名無しさん
2015/10/29(木) 00:49:56.65ID:dmkvBav+sqlite3.h で宣言している関数を使えば?
0611デフォルトの名無しさん
2015/10/29(木) 07:10:21.38ID:3X5hZ3VZサイトのソースだけ見た感じだと sqlite3_open16 関数はあるけど sqlite3_open 関数は見当たらないんだけど
関数名を間違ってないか?
0612デフォルトの名無しさん
2015/10/29(木) 09:41:20.33ID:lCX/HIGLヘッダ・アプリ側とライブラリ構築時で条件コンパイルの不一致があるんじゃないの?
0613デフォルトの名無しさん
2015/10/29(木) 13:10:25.77ID:RuNbCYAKがねえよ〜〜〜っていわれてるだけじゃ
0614デフォルトの名無しさん
2015/10/30(金) 18:57:04.42ID:LfaK2NHG数字を4つ、「:」(コロン)で区切って入力し、その値を読み込ませたいのですが、上手く行きません。
どのようにすればコロンで区切って入力しても読み込ませられるのでしょうか?
#include<stdio.h>
int main(void)
{
int a,b,c,d;
printf(" ");
scanf("%d %d %d %d",&a,&b,&c,&d);
printf("%d:%d:%d:%d",a,b,c,d);
return 0;
}
↑このプログラムで、例えば 「 1:2:3:4 」で入力して読み込ませたいです
実際に実行したところsol環境下では
「1:0:3267:-1880102752」 となってしまいます
「1 2 3 4」と空白入力なら「1:2:3:4」と表示されるのですが、コロンで区切る場合どうすればいいのでしょうか?
0615デフォルトの名無しさん
2015/10/30(金) 18:57:50.94ID:cmMi+a6z0616デフォルトの名無しさん
2015/10/30(金) 19:08:11.92ID:IeVTHDcTscanf("%d:%d:%d:%d"...
0617デフォルトの名無しさん
2015/10/30(金) 19:13:11.99ID:nkuBrrJo0618デフォルトの名無しさん
2015/10/31(土) 06:16:05.94ID:SizDdumHsscanf() で分解する手もあるね。
if (sscanf(line, "%d %d %d %d",&a,&b,&c,&d) != 4) {
/**/ if (sscanf(line, "%d:%d:%d:%d",&a,&b,&c,&d) != 4) {
/**//**/ printf("Input format error\n");
/**//**/ exit(EXIT_FAILURE);
/**/ }
}
printf("%d:%d:%d:%d\n",a,b,c,d);
return 0;
スペース区切りでもコロン区切りでも受け入れる。
区切り文字が混在しちゃダメだけどな。
0619デフォルトの名無しさん
2015/11/01(日) 22:27:46.17ID:33MT/QA4「1行おきに # という文字がいくつかるかを精査して、もし10個以上の #があったら その行番号を返す」みたいなのを
作ろうと思ってるんだけど、配列があまり沢山作れない。
・ fgetc でテキストファイルの読み込み開始、1文字ごとに カウンタ i を回す
・ もし #があったらその数をカウント
・ \nを発見したらカウンタ i をクリア
みたいな方法がセオリー?
0620デフォルトの名無しさん
2015/11/01(日) 22:45:18.07ID:E8YAweFv何なのあのスタイル。
0621デフォルトの名無しさん
2015/11/01(日) 22:49:43.24ID:eXne5FsEマルチコア処理とかしやすいんじゃないの?(適当)
0622デフォルトの名無しさん
2015/11/01(日) 22:50:38.71ID:4DqGfJD+1行おきじゃなくて1行ごとだろ?
#include<stdio.h>
int main()
{
int line = 1, sharp = 0, last = -1, ch;
while ((ch = getchar()) != -1) {
switch (ch) {
case '#':
if (++sharp >= 10 && last != line) {
printf("%d\n", line);
last = line;
}
break;
case '\n':
line++;
sharp = 0;
break;
}
}
return 0;
}
0623デフォルトの名無しさん
2015/11/01(日) 22:56:00.10ID:09km9W3i要求仕様は本当に1行おき(2行で1回)かもしれんし
0624デフォルトの名無しさん
2015/11/01(日) 23:14:56.59ID:hLroo8HA馬鹿なのか?
0625デフォルトの名無しさん
2015/11/01(日) 23:17:56.50ID:ALz0qdi+何使うのが賢いの?
0626デフォルトの名無しさん
2015/11/01(日) 23:41:43.09ID:7LcQdB7D0627デフォルトの名無しさん
2015/11/02(月) 00:13:11.52ID:YBxk60ds0628デフォルトの名無しさん
2015/11/02(月) 01:23:40.24ID:goUHl0gaありがとう
>>620
え、そういうものがベターだと思ってた。違うのね。
なんか、メモリに入れた方が早い、みたいなイメージずっと持ってる。
0629デフォルトの名無しさん
2015/11/02(月) 01:27:35.11ID:goUHl0ga言い方間違えた。1行ごと、です。
やっぱり、「行」という概念が無いのか。
改行コード \n を根拠に、1行とみなして処理するのが正しいのか。
苦労はするが、何でもできそうな言語だね。
0630デフォルトの名無しさん
2015/11/02(月) 01:28:35.70ID:i2TT4nAY#include <stdio.h>
int main() {
char *line = NULL;
size_t cap = 0;
ssize_t len;
while ((len = getline(&line, &cap, stdin)) > 0)
fwrite(line, len, 1, stdout);
}
0631デフォルトの名無しさん
2015/11/02(月) 01:45:27.68ID:EDVS+Szh若さ関係ないと思うが。
先ずは簡単にすぐ作れる方法で組めばええねん。
0632デフォルトの名無しさん
2015/11/02(月) 07:03:23.28ID:Rilo63iE\nは改行コードじゃないけどな
0633デフォルトの名無しさん
2015/11/02(月) 07:41:48.85ID:Ja5leRdcそれ、glibc拡張じゃねーの
0634デフォルトの名無しさん
2015/11/02(月) 08:25:34.89ID:Z33a0vfb「データを全部読み込んでから処理したがる」って興味深い指摘だ。
言われてみれば、昔はfgetc()で1byteずつ読んで処理してたのに
最近だとメガバイトまでいかないファイルなら全部読んでから
オンメモリで配列みたいに扱った方が楽だし速いじゃんって思うわ。
自分は決して若くないけどね。
>>619
入力がテキストファイル、つまり行指向のファイルなら
fgets()みたいな行指向の入力関数を使うと見通しは良くなる。
あらかじめ行の最大文字数が分かってないとやっかいだけど。
(用意しておいた行バッファより長い行が含まれていたら…)
0635デフォルトの名無しさん
2015/11/02(月) 08:48:38.47ID:agFCj4dy俺は最近Cを趣味でやり始めたんだが、熟練者が多そうなcだからこそオンメモリでやってるもんだと思ってたが、
昨日の書き込み見てると違うようだね。
昔はメモリが少なかったようだから、むしろ避けるのかな。
0636デフォルトの名無しさん
2015/11/02(月) 08:52:47.87ID:agFCj4dyまず文字が最大数ある行を求めるスクリプト自体を書く必要あるのか・・・・
でも、それ自体は俺にもできそう。
どうもです。
0637デフォルトの名無しさん
2015/11/02(月) 08:57:53.10ID:i2TT4nAY一応 BSD でも使える
0638デフォルトの名無しさん
2015/11/02(月) 09:31:53.97ID:ThiHCjn7エスケープシーケンス?
0639デフォルトの名無しさん
2015/11/02(月) 14:19:30.11ID:e+1R+FDw改行コードって案外面倒
0640デフォルトの名無しさん
2015/11/02(月) 14:51:53.35ID:sH3CQlXL> メガバイトまでいかない
> 行の最大文字数
本質的に同じことなのに、問題意識の持ち方がブレるね
0641デフォルトの名無しさん
2015/11/02(月) 15:04:23.66ID:YJ91Wm1P文脈違うのにアホか w
0642デフォルトの名無しさん
2015/11/02(月) 15:36:56.30ID:sH3CQlXLブレたのは認めるんだな?
0643デフォルトの名無しさん
2015/11/02(月) 18:01:05.17ID:YJ91Wm1P「文脈違うのに」の意味すら理解できないのかよ w
0644デフォルトの名無しさん
2015/11/02(月) 18:07:20.13ID:sH3CQlXL内容がないよう
言葉遊びは余所でやってねC文盲さん
0645デフォルトの名無しさん
2015/11/02(月) 18:29:02.61ID:YJ91Wm1P同じ言葉すら文脈によって意味が違ったりするのに w
0646uy ◆Qawu9.2l1E
2015/11/02(月) 21:35:58.41ID:NBJZmpcUえ?何?え?何?
OSでも作ってんのこのスレwwwwwwwwww
0647デフォルトの名無しさん
2015/11/02(月) 21:53:08.16ID:9y9c/GIHいつまで自宅警備やってんだ
はやくそとにでろよwww
0648デフォルトの名無しさん
2015/11/02(月) 22:41:12.91ID:sH3CQlXL自分が恥ずかしいときの表記がネイティブと違うね外人さん
0649デフォルトの名無しさん
2015/11/02(月) 23:06:48.34ID:YJ91Wm1Pで文脈の意味はわかったのかい? w
0650デフォルトの名無しさん
2015/11/02(月) 23:21:47.75ID:sH3CQlXL外人さんが本当は何が言いたいのかがね
曙をアゲモノと言い間違えられてもわかんないように
0651デフォルトの名無しさん
2015/11/02(月) 23:26:31.91ID:YJ91Wm1P>>643 w
0652デフォルトの名無しさん
2015/11/02(月) 23:35:51.91ID:sH3CQlXL0653デフォルトの名無しさん
2015/11/02(月) 23:47:22.89ID:YJ91Wm1P0654デフォルトの名無しさん
2015/11/02(月) 23:59:02.63ID:+iet3Qxd知らん詳しく教えて。
0656デフォルトの名無しさん
2015/11/03(火) 06:30:48.96ID:Y2+tMywR二ちゃん レスアンカーとは
でググれ
0657デフォルトの名無しさん
2015/11/03(火) 06:51:30.66ID:Cq3I9J34普通は1行の長さの上限がわからないなんてことは無いのでfgets()チョー便利かつ速い
1行読み込めたか否かチェックしたければ、読んだ内容の末尾('\0'直前)が'\n'であることで確認してワカル、
(ファイル終端で'\n'を抜かされた場合も次の呼び出しが返却値NULL && !ferror(fp)になるのでこれまた読み込みエラーかガチでファイルの終わりに行き着いたのかワカル、
改行無しの行を仕様で禁止してしまえばループ内ではNULLを返すまで読む、というロジックで済ませて事後ferror()で読み込みエラーだったのか否か判別しても良い、
0658デフォルトの名無しさん
2015/11/03(火) 06:56:36.13ID:Cq3I9J34でない限り、
行の長さに制限が無いプログラム=チョー長い行を与えたらOut of memoryでクラッシュするプログラム
クラッシュはバグ
0659デフォルトの名無しさん
2015/11/03(火) 08:32:23.01ID:kfNzP733>普通は1行の長さの上限がわからないなんてことは無い
そんな保障はどこにもない、しかしそんな制限は外すことができる。
>>658
繰り返すが、1行の長さに、特に明示的に制限をもたない記述はできる。
0660デフォルトの名無しさん
2015/11/03(火) 08:53:21.62ID:6LvWzDb+当方繰り返し処理・参照渡し・配列とかは理解してるつもりのレベル(Ruby 半年ぐらい)。
0661デフォルトの名無しさん
2015/11/03(火) 08:56:14.66ID:6LvWzDb+>読んだ内容の末尾('\0'直前)が'\n'
そういうのってUTF-8とかShift-JISでも万国共通なの?
0662デフォルトの名無しさん
2015/11/03(火) 09:21:30.97ID:yQksX5ncでも存在しないとか今後とも現れないとは断言出来ない。
0663デフォルトの名無しさん
2015/11/03(火) 14:17:10.47ID:i649bMmf邪魔しそうならその前に息の根を止めればよいのだ
0664デフォルトの名無しさん
2015/11/03(火) 15:11:09.74ID:yQksX5nc0665デフォルトの名無しさん
2015/11/03(火) 15:45:42.08ID:pb2lynUQ俺的には別に
仮に何か問題があったにしても
そのこと自体からもまた教訓はあるわけで
0666デフォルトの名無しさん
2015/11/03(火) 21:27:12.17ID:Q+Hc78/Aこれの実行手順?流れを教えてください..
0667デフォルトの名無しさん
2015/11/03(火) 21:56:13.73ID:dHjPhyBB長年C使ってるが共用体の使いどころが分からないから使ってない
コードの書き方は知ってるから具体例(メーラーを作る際にこれこれこういうデータを入れておくと良い、等)を教えてくれ
0668デフォルトの名無しさん
2015/11/03(火) 22:18:27.39ID:REN4mikWBMPファイルのヘッダとかがよく例にあげられる。
0669デフォルトの名無しさん
2015/11/03(火) 22:36:02.20ID:RSo1SLykまたバージョンによってデータ構造が変わるときに使うイメージ。
ただ、ポインタキャストで代用できるので、あるから利用するけど無くてもそう困らないって程度のもの。
0670デフォルトの名無しさん
2015/11/03(火) 22:36:33.59ID:7F8rrZeR簡単にチェックサムを求められる
0671デフォルトの名無しさん
2015/11/04(水) 10:21:07.01ID:+IbiBxzwアセンブラとかデバイスドライバとかで
固定領域を強いられるメモリのサイズを1ミリでもケチるとき
今でもネットワーク系でパケットサイズをトコトン圧縮したい時に使える
あるいはDBのテーブル設計の制約で無理やり変な格納したりするのに似てる
0672デフォルトの名無しさん
2015/11/04(水) 10:27:19.90ID:uV+HLnCbただ用途が低レベルでの使い道を意識しているので格好は似たけどかなり意味合いが違っていると
思ったり
0673デフォルトの名無しさん
2015/11/04(水) 11:00:43.52ID:U0l8BWyWポインタのキャストをよりきれいに書ける
int a;
char *b;
b = (char *)&a; //charに限らず無数の型から選択
union { int *c; char *d; } e; //あらかじめ列挙した型の集合
e.c = &a;
b = e.d; //予約を入れてある型だけを使う
0674デフォルトの名無しさん
2015/11/04(水) 11:30:34.94ID:M1QIFaxd0675デフォルトの名無しさん
2015/11/04(水) 11:33:04.34ID:uL9UAJVL0676デフォルトの名無しさん
2015/11/04(水) 11:35:18.30ID:NfJG0nDfそれ、移植性無いから「きれい」とは言わないと思うんだ。 >>550 あたりの話。
0677デフォルトの名無しさん
2015/11/04(水) 11:37:08.44ID:AI7s9lYx0678デフォルトの名無しさん
2015/11/04(水) 11:54:41.67ID:U0l8BWyW誰かが未定義動作とか狂言ほざいてた件ね
別な話intのアドレスをchar*にキャストするような場面で
どこまでの移植性を確保すべきかって問題は棚上げか
0679デフォルトの名無しさん
2015/11/04(水) 11:56:46.22ID:M1QIFaxd0680デフォルトの名無しさん
2015/11/04(水) 12:59:30.25ID:8eLhc3Ee> どこまでの移植性を確保すべきかって問題は棚上げか
だいたい大丈夫だけどたまにダメな時がある
のでよい子はちゃんと確認しましょう
って認識でいいと思うけど
0681デフォルトの名無しさん
2015/11/04(水) 16:31:11.29ID:dqaQ2lyU共用体と言われて出てくるのは XEvent かな。
0682デフォルトの名無しさん
2015/11/04(水) 18:02:34.92ID:eayvyamy0683デフォルトの名無しさん
2015/11/04(水) 18:36:15.81ID:GrrorL6D0684デフォルトの名無しさん
2015/11/04(水) 19:30:32.02ID:EyTjp+/k0685デフォルトの名無しさん
2015/11/04(水) 20:33:37.73ID:ugSU3v780686デフォルトの名無しさん
2015/11/05(木) 14:03:00.16ID:XSjm53lI平均値の関数だけ全然うまく行かない・・かれこれ4時間くらい悩んでるんだけど助けて
ちなみに4列目に最大値、5列目に平均値を入れたい・・
void keisan_ave(double vc[STU_NUM][SUB_NUM + 2])
{
int i, j;
for (i = 0; i < STU_NUM; i++) {
for (j = 0; j < SUB_NUM; j++)
vc[i][SUB_NUM + 1] += vc[i][j];
vc[i][SUB_NUM + 1] /= SUB_NUM;
}
}
0688686
2015/11/05(木) 14:47:41.08ID:XSjm53lI0689デフォルトの名無しさん
2015/11/05(木) 18:07:08.40ID:/t0LGbr5だが難しい。
0690デフォルトの名無しさん
2015/11/05(木) 20:52:52.09ID:5FPMX7jCそれ以外は高級言語でやって、メモリを直で弄る時にポインタ使ったり、
またアセンブラからじゃないと呼び出せない命令あるときは、インラインアセンブラなどを使うのが普通です
0691デフォルトの名無しさん
2015/11/05(木) 21:44:51.72ID:PewigBGb>別のニュータイプな言語を作る
そういうのは一般にメタプログラミングと呼ばれる
ある言語体系そのものをより高位の言語で記述して新しい言語仕様を生成する行為で古典的にはLisp、最近ではSchemeや
Haskellなどの言語でのプログラミングが該当する
C言語はデータ型については基本型を利用してユーザ定義型を定義することで新しい仕様を生成することは出来るけど
構文そのものを新しい仕様に書き換えるほどの柔軟性は持っていない
(C++だとテンプレートを利用してそれに近いことは出来るけど)
(テンプレートメタプログラミング)
https://ja.wikipedia.org/wiki/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%83%A1%E3%82%BF%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
0692デフォルトの名無しさん
2015/11/05(木) 22:20:57.68ID:7DD1JuXV0693デフォルトの名無しさん
2015/11/05(木) 22:32:48.72ID:WNppqAQOCを使って、PythonやRubyなどのインタープリターを作ったりするわけだが。
0694デフォルトの名無しさん
2015/11/05(木) 22:52:00.89ID:q6SXWkeZCはわりかし理想に近い自己記述性言語だね。
よりまし論ちゃよりまし論だけど、程度の違いで2位を大きく離す。
アセンブラは永世名人てことで、それ以外のランキングで。
0695デフォルトの名無しさん
2015/11/05(木) 23:43:17.23ID:CBLPeFfm0696デフォルトの名無しさん
2015/11/06(金) 00:12:35.92ID:VF1V1DpNwwwww
0697デフォルトの名無しさん
2015/11/06(金) 06:38:35.91ID:VWf0XtVEwwwwww
0698デフォルトの名無しさん
2015/11/06(金) 06:51:13.27ID:cewDcmBk適用範囲の広さと言語の能力は別の話。
最近の流行は関数型言語に見られるように、問題をアルゴリズム(手続き)に分解することなく直接記述
して結果を得るプログラミングパラダイム(手法、アイデア)が注目されている。
0699デフォルトの名無しさん
2015/11/06(金) 07:44:49.61ID:32s2XI2w0700デフォルトの名無しさん
2015/11/06(金) 08:40:41.15ID:rJe69Wnt0701デフォルトの名無しさん
2015/11/06(金) 11:22:07.58ID:bnfLM8rl既存のライブラリなりビルトインコマンドなりを使うのが
言語としての能力なのか?
0702デフォルトの名無しさん
2015/11/06(金) 12:15:47.99ID:59qVNbQ4実務未経験ニートです
0703デフォルトの名無しさん
2015/11/06(金) 12:29:19.61ID:cewDcmBk一例として、最近のトレンドで言えば純粋関数型言語とまでは言わないまでも、関数を第一級オブジェクトとして扱う能力を
言語仕様としてサポートするようにしているものが多い。
簡単に言えば関数をオブジェクト変数として扱う能力のことで、関数そのものをコーディング時点ではなくプログラムの
実行時に動的に生成したり、変数に代入したりする能力のこと。
うまく使えば非常に柔軟なプログラミングができる。
JavaやC#ですら最新版ではラムダ式をサポートして関数型プログラミングを部分的にサポートしている。
ライブラリなどで後から付与できる能力ではない。
CやC++は言語仕様としては関数ポインタを使えばある程度はカバーできるが、実行時に生成することまでは不可能で
能力的にはこれらの言語に一歩劣る(第二級オブジェクトと呼ばれたりする)。
第一級オブジェクト
https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88
0704デフォルトの名無しさん
2015/11/06(金) 12:30:46.42ID:/jHYDo1t0705デフォルトの名無しさん
2015/11/06(金) 12:48:56.86ID:9Z5Sq3Y5メタプログラミングって、コードを生成するコード書くことだと思ってた
0706デフォルトの名無しさん
2015/11/06(金) 12:49:51.59ID:9Z5Sq3Y5へ?じゃあRubyはCでコンパイルしたものがインタプリタ?
0707デフォルトの名無しさん
2015/11/06(金) 12:51:57.92ID:nQX73RAvだけどLispはだめ、やはり実用的なJavaScriptが来るね。スピノザという優秀な新しい言語もあるけど、発展途上でこれからだね。
0708デフォルトの名無しさん
2015/11/06(金) 13:08:27.40ID:BrIDK9lzそれで何を実現したかだからな。
0709デフォルトの名無しさん
2015/11/06(金) 14:34:05.11ID:bnfLM8rl実行時にファンクタだかクロージャだかを生成ということは動的な型宣言だな
そのためのエンジンが実行環境に必須になるが、
おまえの言う「言語としての能力」とはインタープリタ方式か
Cでもインタープリタならいくらでも作れるし
ライブラリとしてリンクもできるぞ
0710uy ◆Qawu9.2l1E
2015/11/06(金) 14:47:40.18ID:Y2REc2weCはゴミ
終わったコンテンツ
0711デフォルトの名無しさん
2015/11/06(金) 14:48:51.67ID:h0LZsufn全く的外れのこと言っているから
0712デフォルトの名無しさん
2015/11/06(金) 14:55:33.93ID:bnfLM8rlおまえの脳内定義なぞ知らんし興味もない
俺はデフォC++使いでとあるサーバーOSのシステムプログラマだ
0713デフォルトの名無しさん
2015/11/06(金) 14:59:32.66ID:h0LZsufn何を言い出すのかと思えばC++と関数型と何の関係がある?
まだJava(8以降)使いの方が関数型の意味を理解しているぞ
0714デフォルトの名無しさん
2015/11/06(金) 15:48:03.22ID:cewDcmBk関数の動的な生成というのは動的な型宣言のことではない。
関数が特定の型を持つのではなく、関数そのものがオブジェクトとして単独で存在し得ることを言う
(C++のインスタンス関数とは意味が違う)。
関数型言語においては、関数の定義内容そのものが意味を持つのであってC/C++の関数では必須である
関数名さえも必要としない。
0715デフォルトの名無しさん
2015/11/06(金) 16:03:05.84ID:S4ieCUclキチガイ
0716デフォルトの名無しさん
2015/11/06(金) 16:08:07.23ID:Mjk0iITYそもそもCのコンパイラは何で作られてるのか
0717デフォルトの名無しさん
2015/11/06(金) 16:26:01.63ID:59qVNbQ40718デフォルトの名無しさん
2015/11/06(金) 16:42:23.34ID:bnfLM8rlだからおまえ語の関数型は知らんし興味もないと言ってるだろ
703にラムダ式と書いてあるんだが、おまえそこが読めてないわけだな
0719デフォルトの名無しさん
2015/11/06(金) 16:54:33.56ID:w/JClB2S0720デフォルトの名無しさん
2015/11/06(金) 17:09:41.44ID:h0LZsufn何を言ってるのかわからん
C++とラムダ式と何の関係がある?
0721デフォルトの名無しさん
2015/11/06(金) 17:22:40.93ID:RcgHKBApただC++やら関数型言語やらの話題はそろそろスレチ
0722デフォルトの名無しさん
2015/11/06(金) 17:35:12.20ID:bnfLM8rl関数そのものがオブジェクトとして単独で存在ならC++でもできるぞ
旧式にはstd::unary_functionとか、今ならauto型のクロージャとか、
Cならstrtokとか
0723デフォルトの名無しさん
2015/11/06(金) 17:39:28.85ID:atrV3A7D0724デフォルトの名無しさん
2015/11/06(金) 17:44:43.75ID:jYl2uPgf0725デフォルトの名無しさん
2015/11/06(金) 17:48:15.03ID:Qypt/zqZ0726デフォルトの名無しさん
2015/11/06(金) 17:51:41.97ID:jYl2uPgfアセンブラというのは当初からそうであって、
別に流行り廃りではないという意味ですよ?
0727デフォルトの名無しさん
2015/11/06(金) 18:08:54.89ID:hkmY+19TCのことコンパイラって呼んじゃうの?
ありえなくね?
0728デフォルトの名無しさん
2015/11/06(金) 18:12:03.21ID:qPCALp3Zそれは常識だと思うが、関係ない話だろ
0730uy ◆Qawu9.2l1E
2015/11/06(金) 18:51:42.89ID:Y2REc2we0731デフォルトの名無しさん
2015/11/06(金) 19:30:21.71ID:Lv7Y04f20732デフォルトの名無しさん
2015/11/06(金) 19:48:03.34ID:FxVaFUyPそのスピノザって実体があるの?それとも想像上のものなの?
0733デフォルトの名無しさん
2015/11/06(金) 20:22:43.93ID:bzjECrxB人から馬鹿にされてもいいなら、おまいがそう呼んでもおいらは気にしないよ?
0734デフォルトの名無しさん
2015/11/06(金) 20:46:00.05ID:hkmY+19Tアセンブリ言語とアセンブラを混同してる奴を馬鹿にした発言って分かって言ってる?
0735uy ◆Qawu9.2l1E
2015/11/06(金) 22:16:09.12ID:P+wdThaZ0736デフォルトの名無しさん
2015/11/06(金) 23:58:21.49ID:QHn3ScEY0737デフォルトの名無しさん
2015/11/07(土) 00:54:41.13ID:W0grguRl誤用を勝手に統合とか言うな
0738デフォルトの名無しさん
2015/11/07(土) 01:09:29.50ID:2jS+GA5U0739デフォルトの名無しさん
2015/11/07(土) 01:19:14.80ID:2+zlw+C0一般には
現在では
最先端業界では
0740デフォルトの名無しさん
2015/11/07(土) 01:41:09.97ID:iSyLgP720741デフォルトの名無しさん
2015/11/07(土) 01:55:50.70ID:h403dGxo0742デフォルトの名無しさん
2015/11/07(土) 08:30:03.77ID:DIskN6SB0743デフォルトの名無しさん
2015/11/07(土) 13:30:35.96ID:aLq5xEfS0744デフォルトの名無しさん
2015/11/07(土) 15:41:18.09ID:/aFIzr5i30万回の比較でそんなに時間がかかるとは思いませんが…
int data[N] = { /* ... */ };
int flag = 1;
int i;
while(flag) {
flag = 0;
for (i = 0; i < N-1; i += 2) { /* Pair1 */
if (data[i] > data[i+1]) {
swap(&data[i], &data[i+1]);
flag = 1;
}
}
for (i = 1;i < N-1;i += 2) { /* Pair2 */
if (data[i] > data[i+1]) {
swap(&data[i], &data[i+1]);
flag = 1;
}
}
}
0745デフォルトの名無しさん
2015/11/07(土) 15:50:20.93ID:RwXev/URint count = 0;
while(flag) {
・・・
++count;
}
とかして、whileが何回ループしているか調べてみ?
0746デフォルトの名無しさん
2015/11/07(土) 15:57:53.41ID:8zpBhEvQ昇順じゃなくて降順に並べてるんじゃねーの
0747デフォルトの名無しさん
2015/11/07(土) 16:01:52.66ID:8zpBhEvQ0748デフォルトの名無しさん
2015/11/07(土) 16:02:11.97ID:RwXev/URそれならwhileは一回しかループしないな、一瞬で終わらなければおかしい
どのみちwhileが何回実行されているか調べてみ?
一回になっていなければ元のデータがおかしい
でも君のソースは
>data[i] > data[i+1]
ってなってるから、これは降順にソートしてるね
そりゃ時間かかるわ
0749デフォルトの名無しさん
2015/11/07(土) 16:03:28.93ID:RwXev/UR> >data[i] > data[i+1]
> ってなってるから、これは降順にソートしてるね
> そりゃ時間かかるわ
↑これは真っ赤な嘘読み飛ばしてね
赤っ恥かいたわ
0750デフォルトの名無しさん
2015/11/07(土) 18:38:21.44ID:u/NDNbQ9strcpyもstrcmpも殆ど大差ないんだしstrcpyで統一したらいいのに
0751デフォルトの名無しさん
2015/11/07(土) 18:42:30.36ID:8zpBhEvQあれはお飾りだ
必要なものは自分で創れ、というメッセージが盛り込まれている
0753デフォルトの名無しさん
2015/11/07(土) 19:09:36.31ID:W4WQrYYx0754デフォルトの名無しさん
2015/11/07(土) 20:48:24.28ID:pmmGMi9Qstrcpy と strcmp の何が大差ないんだ?
= と == が大差ないという主張に等しいが、気は確かか?
0755デフォルトの名無しさん
2015/11/07(土) 21:08:48.56ID:W0grguRl0756デフォルトの名無しさん
2015/11/07(土) 21:12:39.01ID:82pB21Im0757uy ◆Qawu9.2l1E
2015/11/07(土) 21:26:03.81ID:SyMt01Zbstrcmp(a,b) // true
同じじゃねーか死ね
0758デフォルトの名無しさん
2015/11/07(土) 21:52:42.39ID:W0grguRl戻り値がchar*とintなのに同じだと思える頭が凄いと思うわ
0759デフォルトの名無しさん
2015/11/07(土) 22:23:58.36ID:7Wjs1C+w2を入力したら「2です。」と出るようにしたいのですが、どちらを入力しても上手く行きません。
どこが間違っているのか教えてください。よろしくお願いします。
#include<stdio.h>
int main(void)
{
int x;
x = getchar();
switch(x)
{
case 1:
printf("1です。\n");
break;
case 2:
printf("2です。\n");
break;
default:
printf("1か2を入力してください。\n");
break;
}
return(0);
}
0760デフォルトの名無しさん
2015/11/07(土) 22:29:47.25ID:+qIb9d6w0762デフォルトの名無しさん
2015/11/07(土) 23:00:19.56ID:BAa+UA3Jcase '1':
0763デフォルトの名無しさん
2015/11/07(土) 23:01:29.12ID:FO8fPt0Jcase '1'
って''でくくればいけると思う
と言っても俺も初心者
0764デフォルトの名無しさん
2015/11/07(土) 23:02:38.68ID:FO8fPt0Jcharがintにキャストされてるから
intの1とは値が違う
だからcase '1'にすればいいはず。
0765デフォルトの名無しさん
2015/11/07(土) 23:08:04.17ID:82pB21ImCとも標準ライブラリとも無関係な質問だな…
ハードウェア、OSでいくらでも変わる。
0766デフォルトの名無しさん
2015/11/07(土) 23:10:10.47ID:jQ62234F0767デフォルトの名無しさん
2015/11/07(土) 23:19:04.80ID:+qIb9d6w出来ました。ありがとうございます!
0768デフォルトの名無しさん
2015/11/07(土) 23:45:35.62ID:8zpBhEvQ'1'に決まってる
その値がいくつかは環境次第だが
0769デフォルトの名無しさん
2015/11/07(土) 23:56:56.75ID:+qIb9d6wcase '1000':
printf("1000です。\n");
break;
を間に入れて入力したところ
警告
multi-character character constant
と出ました。
この場合どうすれば良いのでしょうか
使用コンパイラはEasyIDECを使ってます。よろしくお願いします。
0770デフォルトの名無しさん
2015/11/08(日) 00:36:23.27ID:alo7xJoJ読んで字のごとく
'1000' は 0x31303030 になったり、0x30303031 になったりと、
いちおー処理系定義なんだが、その中でもいやらしい部類のもので
普通あんまり使わないものだ
"1000" と間違えて使おうとする初心者が後を絶たないので
警告してくる優しいコンパイラもあるってことだ
ちなみに case "1000": はエラーな
case ラベルには整数定数しか使えないが、"1000" は char[5]型の配列だから
0771デフォルトの名無しさん
2015/11/08(日) 01:02:52.05ID:efjnY4bo一文字しか拾えないな
0772uy ◆Qawu9.2l1E
2015/11/08(日) 02:53:34.80ID:N78xvzg6c[0] = getchar();
c[1] = getchar();
c[2] = getchar();
c[3] = getchar();
switch(c[0]){
case('1'
switch(c[1]){
case '0'
switch(c[2]){
case '0'
switch(c[3]){
case '0'
printf("1000です。\n");
break;
} } } }
0773デフォルトの名無しさん
2015/11/08(日) 06:42:49.55ID:EOi7N1v9>>759 では「1文字入力、文字を判定」だったのが
>>769 だと「何桁かの数を入力、数値を判定」に変わってるのかな。
後者の場合、Cでは...
「数値を入力する関数」(いろいろ入力できる関数の数値入力の機能)
scanf("%d", &val);
「文字列を入力する関数」と「文字列を数値に変換する関数」の組み合わせ
fgets(str, sizeof(str)-1, stdin);
val = atoi(str);
で処理するのが一般的じゃないかな。
0774デフォルトの名無しさん
2015/11/08(日) 06:57:06.70ID:Mx/JsbZ2有難うございます。試してみます。
0775デフォルトの名無しさん
2015/11/08(日) 10:24:38.42ID:T9o3yiOKその流れでbreakかよ
だっせw
0776デフォルトの名無しさん
2015/11/08(日) 10:47:01.70ID:DawjqT0U0777デフォルトの名無しさん
2015/11/08(日) 11:36:49.19ID:qqsWJtTx0778デフォルトの名無しさん
2015/11/08(日) 13:08:45.37ID:qKI1i85uもうお前黙ってろよ
0779デフォルトの名無しさん
2015/11/08(日) 19:44:27.89ID:fxNneYGA0780uy ◆Qawu9.2l1E
2015/11/08(日) 20:18:25.33ID:w/pNyAon0781デフォルトの名無しさん
2015/11/08(日) 22:04:57.63ID:zP6ysKLYあ、はいさようなら
どうぞご勝手に
0782デフォルトの名無しさん
2015/11/09(月) 00:51:27.56ID:7dxN4OZOC言語なんて化石言語勉強してたら完全に時代に取り残されるわ
0783デフォルトの名無しさん
2015/11/09(月) 05:18:46.38ID:DFK2+nvQ何か嫌なことでもあったの?
0784デフォルトの名無しさん
2015/11/09(月) 09:20:11.93ID:jDVf3Lh4ハードに振り回される奴隷か
えらべ
0785デフォルトの名無しさん
2015/11/09(月) 09:58:26.74ID:1YRGtQ5X0786デフォルトの名無しさん
2015/11/09(月) 10:41:51.25ID:MLzwOVdy丸分かりな回答者が多いんだ?
0787uy ◆Qawu9.2l1E
2015/11/09(月) 10:53:51.57ID:VP0GkkkJ専門学校のゆとり授業ですら半年でC言語終わるというのに
半年以上こんなスレで「学習してるつもり」な奴がいるとしたら
それはもう手遅れだよ
0788デフォルトの名無しさん
2015/11/09(月) 10:59:52.43ID:ap/P9p2T自己紹介乙
0789uy ◆Qawu9.2l1E
2015/11/09(月) 11:39:34.89ID:VP0GkkkJその憤りをよォ?
0790デフォルトの名無しさん
2015/11/09(月) 12:08:31.60ID:DFK2+nvQ休んでもええんやで
0791デフォルトの名無しさん
2015/11/09(月) 14:28:58.88ID:HSdrBA110792デフォルトの名無しさん
2015/11/09(月) 14:47:15.22ID:J2sa9vnc0793デフォルトの名無しさん
2015/11/09(月) 15:07:24.19ID:xWo1GUk+0794デフォルトの名無しさん
2015/11/09(月) 15:22:52.78ID:jDVf3Lh40795デフォルトの名無しさん
2015/11/09(月) 15:48:50.99ID:hqP7pMYo0796デフォルトの名無しさん
2015/11/09(月) 16:58:03.27ID:18mrGe0r0797デフォルトの名無しさん
2015/11/09(月) 17:35:34.04ID:ddVcBsOP0798デフォルトの名無しさん
2015/11/10(火) 09:30:22.04ID:VHD4wWpP2ch的な認識では…
0799デフォルトの名無しさん
2015/11/10(火) 14:21:51.64ID:GVeAJQjd/usr/bin/*tag*がno such fileでctagsの使えないマシンで困っている。
たぶんtagジャンプという手段が古いため具備されてないのだと思うのだが、現代的な代替手段って何?
0800デフォルトの名無しさん
2015/11/10(火) 17:35:16.17ID:n7TPWRzV0801デフォルトの名無しさん
2015/11/10(火) 17:53:16.34ID:cQ4nvqtb代替手段あったっけ?
0802デフォルトの名無しさん
2015/11/10(火) 17:59:12.22ID:GVeAJQjd超モダンな解決方法でびっくりぽん。
>>801
それしか出て来んか。
爺が、爺の吹きだまりに相談したのが間違いだったか。
0803デフォルトの名無しさん
2015/11/10(火) 18:04:07.13ID:cQ4nvqtb0804デフォルトの名無しさん
2015/11/10(火) 19:56:17.38ID:/8AI4TLX中露を残して、ドルの巻き添えで世界経済全滅!?
UFOと、マイトレーヤの登場!
サヨクの栄える時代到来! バカウヨさようなら(笑)
滝つぼは近い!
日本丸という船頭のいない船に乗っている乗客は先が見えない。空の上から見下ろすと日本丸の行方に滝つぼが見える。
船上では毎日株価が上がって不労所得が入るのでドンチャン騒ぎをしているが、実はお先真っ暗なのだ。
http://www.chokugen.com/opinion/backnumber/h27/jiji151109_1028.html
第一の暴落は年内だが、12月のある日、NY株式市場は、人民元事実上切り下げで起きた8月のパニック以上の暴落に陥るだろう。
しかしこれは2016年夏に起きる、人類が未だ経験したことのない正に「想像を絶した超大暴落」の前兆である。
http://www.chokugen.com/opinion/backnumber/h27/jiji151026_1023.html
各国の金が無いとなるとFRBの信用は地に落ち、中ロをはじめドルに依存しない諸国を除く全世界経済が破綻する。
だからドイツはFRBに出来ない要求はしないことにしたのである。ドイツ銀行は何故か保管分の移動は僅か37%で結構であるとFRBに伝えた。
http://www.chokugen.com/opinion/backnumber/h27/jiji151106_1027.html
世界中の中央銀行のトップは、内心ではパニック状態にあります。2015年の秋が世界経済衰退の始まりになると、重ねて警告してきました。
最初のうちは、国民に気づかれないように、「延期」「猶予」「一時停止」といったモラトリアムやリストラに偽装されるでしょう。
「まさか、このアメリカが」、「まさか、この世界第三位の経済大国である日本が」・・・人々は、毎日、「変だ」とは感じるものの、
いよいよ断崖から落ちるその瞬間まで、国家の財政破綻を認めようとしないのです。その中でもっとも大規模な暴落の後で、債券市場の暴落が訪れるでしょう。
http://kaleido11.blog.fc2.com/blog-entry-3851.html
上念司「日本が破産するとか、嘘ですからね。僕、彼ら全員、訴えてやろうと思ってますけどね。」
https://www.youtube.com/watch?v=_m1ruaXIdkU
0805デフォルトの名無しさん
2015/11/10(火) 19:57:08.32ID:/8AI4TLXA 大体正確です。
最初になくなるのは世界の株式市場でしょう。世界の株式市場の崩壊は日本において始まるでしょう。
マイトレーヤは繰り返し次のように言われる――かれらは自分の財産を隠し、犯罪的雰囲気さえも創出している。
日本はアメリカの国債の25%を所有していますが、それを引き出すとアメリカ経済も駄目になり、世界経済全体が破綻します。
株式市場の暴落が起きるとき、それが最終的な暴落であることがはっきりするや否や、マイトレーヤは出現するでしょう。
マイトレーヤが公に世界に現れるにつれて、UFOがとてつもない数で姿を表すでしょう
マイトレーヤと名乗らずに、彼は声なき人々、スポークスマンをもたない人々すべてのために語るでしょう。
マイトレーヤの唇からますます厳しい警告と重みが発せられることを覚悟しなさい。
非常に間もなくマイトレーヤを、テレビで見るでしょう。マイトレーヤは「匿名」で働いております。
あなた方がマイトレーヤを見るとき、彼の最初の控えめな態度に混乱してはならない。
マイトレーヤが日本のテレビに出るとき、日本人のようには見えないでしょう。彼は日本語で話すでしょう。
マイトレーヤはテレビやラジオを通して何百万もの大勢の人々に語りかけるでしょう。
マイトレーヤは毎日テレビに現れ、質問に答えるでしょう。彼はテレビに出て全世界に語りかけるように要請されるでしょう。
マイトレーヤ出現の日付(2017年1月)に関して言及していました。マイトレーヤはすでに、時間は定められたと言われました。
マイトレーヤが衛星中継テレビを通して世界に向かって話をする準備は良好に進行している。テレビ中継はこの出来事のために存在するのであり、
この時、初めてご自身の本当の身分を明らかにされます。一言も語らず、全人類の一人一人とテレパシー交信をされます。
歴史上で初めて、世界的規模のテレパシーによる接触が起こるのです。それは驚くべきことです。私たちはこの惑星の歴史の中のユニークな瞬間に立っています。
25分か35分くらいかもしれませんが、それぞれの人間が彼のアイディアを、内的にテレパシーで自分自身の言語で聞くでしょう。あなた方は日本語で、というように。
0806uy ◆Qawu9.2l1E
2015/11/11(水) 02:14:56.40ID:uYSp+fPE0807デフォルトの名無しさん
2015/11/11(水) 03:44:54.06ID:WOIGmI6i0808uy ◆Qawu9.2l1E
2015/11/11(水) 06:06:59.41ID:uYSp+fPE0809デフォルトの名無しさん
2015/11/11(水) 06:55:19.94ID:mKuF2Y4X当然、奴隷なので単価は最低。
0810uy ◆Qawu9.2l1E
2015/11/11(水) 07:21:24.51ID:uYSp+fPEhttp://livedoor.blogimg.jp/coleblog/imgs/c/f/cfadff9c.jpg
0811デフォルトの名無しさん
2015/11/11(水) 07:45:36.91ID:WOIGmI6iたしかに日に日に減らされている,とはいえるね.二強のひとつだけれどもね
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
0812デフォルトの名無しさん
2015/11/11(水) 09:57:44.36ID:6xwn9bdU0813uy ◆Qawu9.2l1E
2015/11/11(水) 10:04:44.14ID:uYSp+fPE0814デフォルトの名無しさん
2015/11/11(水) 11:03:41.76ID:njhZtc1V0815デフォルトの名無しさん
2015/11/11(水) 12:27:49.38ID:dnGEiVDnでも C は tiobe では二強の一つ、ruby や JavaScript なんかより沢山の人が触っているんだよ
C が書けないなんて恥ずかしいことだよね
uy ってそんなにC言語にコンプレックスがあるんだ‥どうしてなのだろう?
0816デフォルトの名無しさん
2015/11/11(水) 12:58:13.51ID:RgT2aiggクロス開発にしても JavaScript や C# には大きな変化は見られない
Apple の開発者たちは何処に行ったの?
0817uy ◆Qawu9.2l1E
2015/11/11(水) 14:03:27.22ID:8UWeoNQXもうruby以外やんないし
0818デフォルトの名無しさん
2015/11/11(水) 14:05:37.14ID:iOpec/0o登場時期的に
0819デフォルトの名無しさん
2015/11/11(水) 14:05:53.86ID:mKuF2Y4X0820デフォルトの名無しさん
2015/11/11(水) 15:15:45.25ID:aN+nySLk0821デフォルトの名無しさん
2015/11/11(水) 20:37:54.08ID:38dE08Ci0822デフォルトの名無しさん
2015/11/11(水) 20:45:10.53ID:WOIGmI6iC++への切り替えも簡単だし
特にどうということのない,パンピー言語をなんで毛嫌いするのか理解に苦しむ
0823デフォルトの名無しさん
2015/11/11(水) 21:12:59.62ID:VZfzcqFQ0824デフォルトの名無しさん
2015/11/11(水) 21:31:25.06ID:mKuF2Y4Xosは作れないけど、バカを量産している。
0825デフォルトの名無しさん
2015/11/11(水) 22:07:10.07ID:RuyjG4nL0826uy ◆Qawu9.2l1E
2015/11/12(木) 00:11:03.41ID:vfLy0hrq動的言語が遅いのは最初の一回だけ
理論上二回目以降はネイティブの速度で動く
0827デフォルトの名無しさん
2015/11/12(木) 00:47:41.27ID:JWXmz4jM0828デフォルトの名無しさん
2015/11/12(木) 00:50:14.89ID:1q8k4dBYパチンコ開発にしか使われてへん
0829デフォルトの名無しさん
2015/11/12(木) 02:29:28.90ID:T7R8bWMR0830デフォルトの名無しさん
2015/11/12(木) 02:30:03.87ID:T7R8bWMRruby は JIT があるの?
0831デフォルトの名無しさん
2015/11/12(木) 05:04:48.38ID:+TRt+Sln0832デフォルトの名無しさん
2015/11/12(木) 08:46:39.62ID:nlnsCDv6むしろ、バカ検出器と呼ぶべきではないか?
0833デフォルトの名無しさん
2015/11/12(木) 09:03:08.98ID:fovobVzi0834デフォルトの名無しさん
2015/11/12(木) 09:11:20.95ID:1q8k4dBYソフトウェア制作がまずありきで自分にたりないものを補う形で技法を学んでいかないとダメってことでした。
なぜならプログラミングの上達というのは終わりがなく上達を待ってからソフトウェアを作ろうと思ったら一生ソフトウェアはつくれないからです。
設計、オブジェクト指向などでがんじからめになってまったくソフトウェアを作ってない人にはぜひ読んでほしい1冊です。
0835デフォルトの名無しさん
2015/11/12(木) 10:28:32.65ID:iQ6UIi2A「船だ!船をくれ」と言って海に出て漂流者になるのと同じ
0836デフォルトの名無しさん
2015/11/12(木) 12:31:20.64ID:1q8k4dBY海に出ずに何が分かるのか
0837uy ◆Qawu9.2l1E
2015/11/12(木) 12:36:49.17ID:YKGP90Ph結局何も書かかない事が多い
けど設計をすると「なんだこのヌルゲ(簡単過ぎる)」ってなる事はあるんだ
でも書いたら負け、みたいな?
脳トレにならないっていうか?
設計を書かない事によって基盤ステータスの向上を図りたいし
術者の経験値によって
呪文詠唱を紙に起こさなくても大規模魔法発動する為のキャパシティは増えるよ
初心者は1000行程度でも「MPが足りない」から
魔法陣書いたり、複数人で陣形組んだりしないとダメだけど
数々の魔導書を読んでしまうと
術式を紙に書く? → 書かない
スペル詠唱する? → しない
無詠唱魔法 → 発動
みたいな感じ。
わかる?
行数は複雑さに直結
rubyのように短く書くってことは
なるべく欲張って多くの呪文を、
無詠唱で発動させる為のノウハウなんだよ
ソースコードを長々と書いてたら無詠唱にならないから
発動のたびにスペルが必要になるし
みんなも無詠唱を目指そう
0838デフォルトの名無しさん
2015/11/12(木) 12:44:43.99ID:9l61Vk4VCommon Lispがあるじゃない。
Yahoo! StoreはCommon Lispを使わなきゃ書けない程多機能で複雑なので有名だよ。
rubyで簡単に書けるの?
なるべく行数を減らすのには大賛成だけど。
0839uy ◆Qawu9.2l1E
2015/11/12(木) 13:01:44.02ID:YKGP90PhLisp / C++ は
にわかPGフィルターとしての機能が十分だから
覚えておくと利点がある
この2言語は学歴みたいなもの
LispとC++をこなしていないPGは低学歴のようなもの
別に低学歴だからって見下さないけど、LispもC++も出来ないのか・・・っていう奴を見ると、ああ低学歴だなって思うあの感覚、それだけ
0840デフォルトの名無しさん
2015/11/12(木) 13:44:02.88ID:TGPkuJvyお前がまともなPGでないのはバレバレだから
というかソフト開発の現場で働いたこと無いだろ
学生か?就職頑張れよw
0841デフォルトの名無しさん
2015/11/12(木) 16:09:33.39ID:eWqhTRW7書評みたいだし、対象本を読んでみたくなる文なのに
肝心の本のタイトルが書かれてない。
0842uy ◆Qawu9.2l1E
2015/11/12(木) 16:10:42.52ID:TtLqFIMIhttp://www.pixiv.net/member_illust.php?mode=medium&illust_id=6480125
昔ね。高1だから15の時かな。
バイトの面接にいったのね
そしたら19〜22位の性格キツそうな女が出てきて
履歴書に書いたままの質問されて、履歴書のままの回答してたんだけど、
友達何人?って話にいきなりなってさ
「友達いる?何人?え?3人?たったの3人?3人しかいないの?え?やっぱ5人って何?でも5人しかいないの?」
どんどん一人でエキサイティングしていきやがった
とりあえず「はい・・・はい・・・」って相槌うって勝手に喋らせてるうちに面接終わって
最初から圧迫面接で落とす気満々だったんだろうね もちろん落ちましたよ
uy「社会ってこんなんなんだな・・・・」
社会に溶け込まない道を進む事を決心した 当時uy15歳
0843uy ◆Qawu9.2l1E
2015/11/12(木) 16:25:25.35ID:TtLqFIMI0844デフォルトの名無しさん
2015/11/12(木) 16:28:18.90ID:KDhvSoAA一人で妄想の世界で生きてろ
>>842
uy「やっぱ5人います」
面接官(社会性も主体性もない上に友達すら大事にしないような人か・・・無いな。)
俺は高校2年の頃にプログラミングのバイトに行ったんだけど、
俺「OS作れます」→実際に動いてるところを見せた→勿論その場で受かったよ
Unixでも何でも無い、ライフゲームくらいしか載ってないOSだけど。
会社で何を学んだかって言うとメモを取る重要性だとか調べて分からなかったら人に訊く重要性だとか
何が重要で、何故重要かといった一般的なことばかりだったけどね。
いい経験になったと今でも思ってるよ。
株式会社オプティムに感謝を。
0846デフォルトの名無しさん
2015/11/12(木) 16:49:42.83ID:+fz8NmqLこれはとてつもなく重要な課題だ
これさえできれば仕事は勤まるといっても良い
しかし、難しい
人に聞いてばかりでは仕事にならないし
思い込みで自分で判断してとんでもない事になったり
0847デフォルトの名無しさん
2015/11/12(木) 16:53:06.19ID:YDnfQbbXほうれんそうしてください
わりとマジで
仕事が終わったら報告(+成果物)
他の人に影響ありそうな作業するときには連絡
そもそも作業してもいいかを自分で判断すべきでない時には相談
はい今からsvnマージしまーす
0849デフォルトの名無しさん
2015/11/12(木) 21:10:50.38ID:1q8k4dBYttp://www.amazon.co.jp/review/R3GJCKHBM79OG7/ref=cm_cr_dp_title?ie=UTF8&ASIN=4779121183&channel=detail-glance&nodeID=465392&store=books
0850uy ◆Qawu9.2l1E
2015/11/13(金) 06:27:27.61ID:8gPiU2/Q0851デフォルトの名無しさん
2015/11/13(金) 11:50:10.81ID:P+x1lmAA0852Office & Gamers @ 試験運用中(トリなしw
2015/11/13(金) 11:53:52.41ID:bF4wyOAhhttp://upload.saloon.jp/src/up20029.zip
…って言う訳で、AtomZ3735Fでスプライト64枚・3Dキューブ416個、秒間60コマを実現してみたw
ZIPファイルを開くと実行ファイルが出てくるので、迷わずダブルクリックすればよいw
加熱・クロックダウンのアルゴリズムはこれから煮詰めてみるとして、今回は秒間
45コマを下回ると、1コマ毎にスキップするようにして延命措置を図ったw
下限値は39コマ(実質19コマ)ぐらいで、おそらく放っておくと100℃(シャットダウン警告)まで上昇
するかもしれないw
適当なところで切り上げようw
# タブレットを使っているユーザーはESCキーが即座に押せないと思うから、1分を目安に切り上げてもらいたいw
# VC++ & DarkGDK & マルチスレッドの時代。(アハ
0853uy ◆Qawu9.2l1E
2015/11/13(金) 11:57:21.01ID:TDianL6O0854デフォルトの名無しさん
2015/11/13(金) 13:02:27.66ID:Efiy+Xypこれ、他の表記法ないですか?
0855デフォルトの名無しさん
2015/11/13(金) 13:11:41.08ID:4ohAy024p[0]+=2;
0856デフォルトの名無しさん
2015/11/13(金) 13:29:48.20ID:Efiy+Xypありがとう
0857デフォルトの名無しさん
2015/11/13(金) 14:41:13.87ID:gAGNSJDOはどうだろう。
0858デフォルトの名無しさん
2015/11/13(金) 15:03:19.13ID:4ohAy0240859デフォルトの名無しさん
2015/11/13(金) 15:05:41.13ID:P+x1lmAAそれちゃんと動く?
優先順位を考えると
*p++ --> *(p++)
*p+=x -> (*p)+=x
だから全く違う作用になる気がするんだけど。
0860Office & Gamers @ 試験運用中(トリなしw
2015/11/13(金) 15:37:18.53ID:bF4wyOAh99%は配列使えば?で済む問題w
0861デフォルトの名無しさん
2015/11/13(金) 15:48:55.38ID:P+x1lmAAどの本に書いてあったか忘れたけど、曰く
「プログラマがポインタを欲しいと思う場合の多くは、本当に欲しいのはクロージャである」
日本語訳されてるLisp系の難しい本だった筈。
要は、メモリアロケータを書いているとかそういう特殊な例外を除けば、
setterを持ったオブジェクトへの参照を投げればポインタを用いて行いたかった事は何でも出来るって話が載ってて
なるほどなぁって思ったの。
Cだとそんな奴ファーストクラスに居ないから何らかの形でポインタを扱う必要は出るけどね。
0862Office & Gamers @ 試験運用中(トリなしw
2015/11/13(金) 15:52:27.09ID:bF4wyOAhポインタの入ってるメモリ変数から値を取り出して、さらにメモリ変数を使って…ムダの集大成w
素直にインラインアセンブルどうぞw
0863デフォルトの名無しさん
2015/11/13(金) 15:53:25.83ID:4ohAy0240864デフォルトの名無しさん
2015/11/14(土) 05:03:46.89ID:nfjsLiRt0865デフォルトの名無しさん
2015/11/14(土) 13:54:57.48ID:vV+jaivcと
char st[]="ABC";
p=st
の違いがわからないんですが。。。
0866デフォルトの名無しさん
2015/11/14(土) 14:01:07.81ID:fm2vcKXcchar *p = "ABC";
は悪しき書法でみなかったことにする.
char st[]="ABC";
のみが正義
0867デフォルトの名無しさん
2015/11/14(土) 14:04:53.34ID:LsNNjMuZchar *pはポインタ変数pの実態と文字列"ABC"の領域が確保される
もちろん、pは変数なので別のものを指すこともできる
st[]は文字列"ABC"の領域が確保されてそのstはその先頭アドレス
0868デフォルトの名無しさん
2015/11/14(土) 14:14:08.92ID:vV+jaivcうーん・・・
char st[]="ABC";
p=st
の場合は
pはstのアドレスで
*pはAですよね?
char *p="ABC";
の場合の
pと*pの内容はどうなるんですか?
そこらへんがよくわかりません。
0869デフォルトの名無しさん
2015/11/14(土) 14:17:45.55ID:LsNNjMuZ名前が省略されてるだけ
0870uy ◆e6.oHu1j.o
2015/11/14(土) 14:31:24.35ID:Shexr7Cq0871デフォルトの名無しさん
2015/11/14(土) 14:35:20.17ID:LsNNjMuZchar* p = "ABC";
だと、pには文字列"ABC"が記憶された場所の先頭アドレスが入り、
文字列自体は読み込み可能な場所に配置される(書き込みできるかどうかは処理系依存)。
典型的な実装だと文字列の先頭アドレスの値はスタック上に配置されるけど、
文字列自体は別な場所にプログラム自体の実行前に展開される。
もっと正確にはローダの仕様にもよるんだが、イメージとしてはそんな感じ。
char st[] = "ABC";
char* p = st;
だと、まず最初に読み書き可能な場所に文字列ABCが展開されて、stはその場所の先頭アドレスと等しくなり、
次にpにそのアドレスがコピーされる。
典型的な実装だと文字列も文字列の先頭アドレスの値もスタック上にそのコードの実行時に配置される。
「読み書き自由な配列」を「読み込み可能な文字列」で初期化してるのか、
「読み込み可能な文字列」へのアドレスを引っ張って来てるだけかの違い。
0873デフォルトの名無しさん
2015/11/14(土) 16:41:54.44ID:vV+jaivcなるほど、ありがとうございました。
0874デフォルトの名無しさん
2015/11/14(土) 18:41:34.15ID:cLksvIkwパチンコ開発にしか使われてへん
そのパチンコも斜陽でオワコン
0875デフォルトの名無しさん
2015/11/14(土) 19:00:04.14ID:0gXln6Bu0876デフォルトの名無しさん
2015/11/14(土) 19:08:28.71ID:Wquzevs4液晶とかは違うの使ってるのでは
0877デフォルトの名無しさん
2015/11/14(土) 19:21:30.77ID:od4ceKsj0878デフォルトの名無しさん
2015/11/14(土) 22:54:35.53ID:Va7f2G7P今だに求人してるし
http://human-touch.jp/list/lp03/
0879デフォルトの名無しさん
2015/11/14(土) 23:31:46.32ID:cLksvIkwサブ基盤(液晶表示)はC
0880デフォルトの名無しさん
2015/11/14(土) 23:41:37.15ID:Wquzevs4何人病院送りにしたんだろうか
0881Office & Gamers @ 試験運用中(トリなしw
2015/11/15(日) 02:08:20.44ID:l4bmWZ/e…ポインターで考えるから分からないんだよw
迷わずレジスタで考えればよいw
EBXがポインター、[EBX]が中身w
# C/++やろうと思ったら、アセンブラができてないと難しいよw
0882Office & Gamers @ 試験運用中(トリなしw
2015/11/15(日) 02:13:21.79ID:l4bmWZ/e俺様が作ったZ80マクロライブラリーあげようかw
…ってのは冗談で、パチスロ台って警察絡みで規格が決まってるのかな?w
今時アセンブラ始めるイキモノはいないと思うけど、x86/64の基本ぐらい覚えておくといい。
0883デフォルトの名無しさん
2015/11/15(日) 10:11:49.51ID:mMtidkZ50884デフォルトの名無しさん
2015/11/15(日) 10:33:07.16ID:tSgwXNWJ0885デフォルトの名無しさん
2015/11/15(日) 11:46:07.26ID:8F7LnjGSZ80 であの表示させることができるなら、それはそれで凄いわ w
普通に 32bit CPU でやってるでしょ
>>882
オレオレクソライブラリはノーサンキュー
>>883
法律で ROM/RAM 容量決まってて、所詮数KB なので解析と言うほどのことはない
ちなみに高級言語でもいいらしいが、RAM の制限が厳しすぎて事実上アセンブラ一択
http://law.e-gov.go.jp/htmldata/S60/S60F30301000004.html
ロ リードライトメモリーに関する規格は、次のとおりとする。 (イ) 記憶容量が1,024Bを超えないものであること。
(ロ) 使用領域の容量が512Bを超えないものであること。
0886Office & Gamers @ 試験運用中(トリなしw
2015/11/15(日) 12:19:03.02ID:l4bmWZ/e8048か8051でよさそうだなw
0887デフォルトの名無しさん
2015/11/15(日) 17:08:11.83ID:ndJn5r2D0888デフォルトの名無しさん
2015/11/15(日) 18:28:35.93ID:kWogEYmo0889デフォルトの名無しさん
2015/11/15(日) 21:24:15.37ID:EwdOIsCt0890デフォルトの名無しさん
2015/11/15(日) 21:35:16.22ID:iPwOPSNv0891デフォルトの名無しさん
2015/11/15(日) 21:38:08.56ID:DVr3HCs9ノ l Jヽ レ/::/ /:イ:\/l:l l::l u !. l / ';:::l ', ';:::::l. ';::::l:::::
ノヌ レ /:l l:::::lヽ|l l:l し !/ ';:l,、-‐、::::l ';::::l::::
/ ヽ、_ /::l l:::::l l\l ヽ-' / ';!-ー 、';::ト、';::::l:::
ム ヒ /::::l/l::::lニ‐-、`` / /;;;;;;;;;;;;;ヽ! i::::l:::
月 ヒ /i::/ l::l;;;;;ヽ \ i;;;;;;;;;;;;;;;;;;;l l::l:::
ノ l ヽヽノ /:::l/:l /;;l:!;;;;;;;;;', ';;;;;;;;;;;;;;;;;ノ l:l::
 ̄ ̄ /::::;ィ::l. l;;;;!;;;;;;;;;;;l `‐--‐'´.....:::::::::!l
__|_ ヽヽ /イ//l::l ヽ、;;;;;;;ノ.... し :::::::::::::::::::::ヽ /!リ l
| ー /::::l';!:::::::::::::::::::: u ', i ノ l
| ヽー /イ';::l ’ し u. i l l
| /';:';:!,.イ し 入 l l U
| /,、-'´/ し / ヽ、 u し ,' ,' l
| /l し _,.ノ `フ" ,' ,' ,ィ::/:
| /::::::ヽ ヽ / し ,' ,' / l::
| /::::::::::::`‐、 し ', / u ,、-'´ l,、-
| ``‐-、._::::::::::` ‐ 、 ',/ , -'´`'´ ,-'´
| _,、-‐'"´';:::::::::イ:l';:::` ‐ 、._____,、-‐'"´ u /
| | | | \ l::/ l::::::/リ ';:::::lリ:::::l';:::l l:l:::::l\ u
| | | |
0892デフォルトの名無しさん
2015/11/16(月) 11:31:32.42ID:7yHHnP/Uhttp://jobinjapan.jp/cate/
全掲載求人109,160件の平均最低月給195,800円
C言語の求人 の平均最低月給213,200円
http://jobinjapan.jp/job-listing/keyword-c-pg.html
0893デフォルトの名無しさん
2015/11/17(火) 00:25:08.24ID:bLxBvan2オブジェクトサイズとかいくらでも小さくできるんじゃね
0894デフォルトの名無しさん
2015/11/17(火) 03:03:42.05ID:+A3liqn5↑ ↑ ↑ ↑ ↑
0895デフォルトの名無しさん
2015/11/18(水) 23:54:28.46ID:IsYvp3Ph条件としてUAB80はPCのUSBポートに刺さったままです。
できるかどうか分からないんですが、UAB80のマイク端子に
マイクやiPhone等のオーディオ機器が接続されているかどうかって
検出できたりするのでしょうか?
[iPhoneなどがあるかどうか]---[ラインケーブルオスオス]---[UAB-80]---[PC]
オスオスのラインケーブルまでは常に刺さっている状態です。
そのケーブルは例えばiPhoneのイヤホン穴にさしたりするのですが、
それが刺さっているかどうかをPC側で検知したいです
どなたか詳しいかた教えて頂けますと幸いです。
0896デフォルトの名無しさん
2015/11/19(木) 00:13:33.90ID:slqX97dqソニーのような日本の大企業は個人開発者は相手にしないので、
ソフト会社を作ってUSB開発を多数手がけて実績をつくります。
それなりの実績があればプレゼンを聞いてもらえるかも知れません。
UAB80とやらの売り上げに大きく貢献するアイデアを引っさげて乗り込んでみましょう。
0897デフォルトの名無しさん
2015/11/19(木) 01:24:52.23ID:K40USr3eなんでこのスレに書いたの?
0898デフォルトの名無しさん
2015/11/19(木) 08:46:58.25ID:tXltmCM2それに近いことがC言語でできるかと思って聞きました
でもその反応だとC言語では無理なようですね
OSレベルの話かそもそもUAB80にそういう機能がないと無理って事ですよね?
0899デフォルトの名無しさん
2015/11/19(木) 09:00:13.43ID:fE11LsS9現代の歴史家は2人が失読症ではないかと疑っている。
https://twitter.com/okdshin/status/666903312151613440
0900デフォルトの名無しさん
2015/11/19(木) 09:24:40.79ID:laqPFw1RiOSにC言語は無関係
開発もObjective-CかSwiftだし
0901デフォルトの名無しさん
2015/11/19(木) 09:33:39.32ID:slqX97dqソニーしか知らない事
できたと仮定して、社外で知ってる人もいるかも知れないけど、それはNDAで守秘義務が課せられる
よって、こういうところで聞いても回答が得られるわけがない
0902デフォルトの名無しさん
2015/11/19(木) 09:45:58.64ID:qRWYua/hまぁどっちにしてもCには無関係、やりたいOS系のスレで聞け
0903Office & Gamers @ 試験運用中(トリなしw
2015/11/19(木) 10:16:10.75ID:iMr4bgtF0904デフォルトの名無しさん
2015/11/19(木) 19:55:25.87ID:tXltmCM2iPhoneでやりたいのではなく
作りたいのはWindowsかmacのソフトです
iOSは制作に全く関係ないです
>>901
なるほど、そういうことなんですね
USBをさした時はデバイスマネージャーなり
/dev/なりに変化があるので検知できるのは分かるのですが
その先はOSでも全く認識できないんですね
一応マイク機器とかiPhoneさした時のノイズを拾って
変化があったことは検知は出来たのですが
さした時のノイズなのか抜いた時のノイズなのか分からなくて
質問した次第です
まぁ開発したソニー社員レベルじゃないと無理ってことが分かったので
なんか物理スイッチ仕込むなどの別の方法考えてみます
0905デフォルトの名無しさん
2015/11/19(木) 20:26:40.43ID:Dmd2q2K2CWnd::OnDeviceChangeをチェック
ベンダーIDとプロダクトIDが取得できれば
何が接続されたかは分かる
0906デフォルトの名無しさん
2015/11/19(木) 21:01:28.09ID:PXrtBeotPCからはUSB経由で、UAB-80から来るデータはキャッチできるが、
UAB-80から先のデバイスや、
どういうデータをやり取りしているかなどは、
UAB-80の仕様書が公開されていないとわからない
データを自力で解析するのはまず無理
0907Office & Gamers @ 試験運用中(トリなしw
2015/11/19(木) 21:25:20.42ID:iMr4bgtF検知と言うか、端子にSWがあるw
0908uy ◆Qawu9.2l1E
2015/11/19(木) 23:24:01.62ID:8VKR5aXo0909デフォルトの名無しさん
2015/11/20(金) 00:22:54.80ID:ms2dnfiVちょっとズレてる
0910Office & Gamers @ 試験運用中(トリなしw
2015/11/20(金) 00:52:19.69ID:VwHpl7SR0911デフォルトの名無しさん
2015/11/20(金) 01:14:13.88ID:EgnFQpgt結局プログラムでどうこうしようとすると
UAB-80からくるデータ(音声データ)から判断するしかないんですね
>>907
ヘッドホンというかUSB端子ですね
>>910
ノイズ検知はしているのですが、それで刺しているか抜いているかは分からないです
多分物理スイッチが妥当かなぁと思っています
それかもしRかLの電位が変わるのであればそれを計測するとかもあるかもですね
まぁもうちょっと試行錯誤してみます
0912デフォルトの名無しさん
2015/11/20(金) 03:23:02.19ID:dp6olKXD0913Office & Gamers @ 試験運用中(トリなしw
2015/11/20(金) 04:39:01.60ID:VwHpl7SR0914デフォルトの名無しさん
2015/11/20(金) 06:53:58.28ID:QCNUTLJMハードウェアに密接ってのを勘違いしてるのは分かった
0915Office & Gamers @ 試験運用中(トリなしw
2015/11/20(金) 07:33:17.46ID:VwHpl7SRオフィス用ゲーマー向け液晶ディスプレイ
http://hope.2ch.net/test/read.cgi/gamef/1447971576/
0916デフォルトの名無しさん
2015/11/20(金) 21:16:21.40ID:9+UleEnaソフトウェアって1,0の情報だよね、それなのに
ライセンス違反ってなんじゃそれって思うね
1,0の情報に金払う意味が分からない
0917デフォルトの名無しさん
2015/11/20(金) 21:41:26.17ID:Ze+xUj+Fは?
0918デフォルトの名無しさん
2015/11/20(金) 21:50:34.71ID:nm+XLPc10919デフォルトの名無しさん
2015/11/20(金) 21:53:50.00ID:nPtWKFbC1,0がただのランダムな数字列だと情報でも何でもない、それはただの雑音
1,0の並びに意味があるから情報と呼ばれる
情報と呼ばれるからには価値がある、よって金銭の流れも発生し利権問題も発生する
情報が商用活動に利用されるとライセンスで保護するのも当然の成り行き
0920デフォルトの名無しさん
2015/11/20(金) 22:23:41.50ID:EgnFQpgt01にボッキしてる人がいると聞いて
0921デフォルトの名無しさん
2015/11/20(金) 23:19:48.01ID:Roa7o7Rm0922デフォルトの名無しさん
2015/11/21(土) 00:58:35.40ID:4yrnKY3K1,0でミサイル発射されるんやで
0923uy ◆Qawu9.2l1E
2015/11/21(土) 01:25:16.54ID:1stbRJxP法なんて及ぶべきじゃない
アノニマスがそういう主張では?
0924デフォルトの名無しさん
2015/11/21(土) 02:25:55.96ID:j5GgL+Dbア○ニマスとI○I○の戦いはこの点後者にちょっと分が悪い
0925デフォルトの名無しさん
2015/11/21(土) 06:24:55.29ID:0mc6NB+I0926デフォルトの名無しさん
2015/11/21(土) 08:16:22.72ID:nOx2yUwI0927デフォルトの名無しさん
2015/11/21(土) 10:17:44.09ID:itZHXc4c例えばデフォルト値が決まってる変数にrando関数で
はじき出された確立で違う値を設定するみたいなコードが
あった場合、通常は動作するから危険性がないけど、ある時
突然バグを起こすみたいな事になりません?
すごい怖いなと思うんですが、こういのってあるんですか?
0928デフォルトの名無しさん
2015/11/21(土) 10:37:55.69ID:3orPb4v5おっとカルドセプトサーガの悪口はそこまでだ
0929デフォルトの名無しさん
2015/11/21(土) 10:59:35.96ID:38Oajjxc0930デフォルトの名無しさん
2015/11/21(土) 12:31:12.29ID:+qmJr5EIそれはrandの脆弱性ではなくて、randを使ってるアプリ側のバグだろ。。。
0931デフォルトの名無しさん
2015/11/21(土) 13:24:45.66ID:R2Cl6+Bx先に泥棒を入れてからカギを閉めますみたいなわけわからん話や
0932デフォルトの名無しさん
2015/11/21(土) 13:27:26.25ID:o0TZz0/L2000年問題とかあっただろ
ある日になると突然バグりだすとか
そういう仕込みをすることは可能だし
そっちの方を警戒すべきでは
0933デフォルトの名無しさん
2015/11/21(土) 13:40:32.20ID:2FFj0oRpある改札では2000年2月29日相当日が内部的に2000年3月1日になってたから
改札内から出れない問題が頻発したっていう
>>927
そもそも製品コードにCのrandを使うべきではない。
Cのrandは仕様上は15bitの乱数値が出せれば十分だという事になってる。
その上、典型的な実装では単純な線形合同法が使われていて、処理が重い上に
現在の値から次回の値を予測できるだけの情報を常に出力している(スポンジが無い)。
xorshift法(超高速)やBBS法(遅いけど暗号学的に安全)なんかの手法を用途に応じて使い分けるべき。
0934デフォルトの名無しさん
2015/11/21(土) 15:48:54.10ID:uVehkYL0知識の
無い人は
3行までにして
ほしい
それ以上、
書き込むのは
スキル
アップ
してから
0935デフォルトの名無しさん
2015/11/21(土) 16:10:22.89ID:nOx2yUwI初期化時に乱数を振って何らかの値を設定、
その取りうる値によってプログラムが正常動作しない場合がある、
てのはrand()の脆弱性とは言わんだろうなぁ。
電源投入時に乱数を出して、それが特定の値だった場合に
正常な起動をせずに、画面いっぱいに奇妙なメッセージが出るって
現象が起きるソフトの話を聞いたことがある。
>>932
日付関連も怖いね。プログラムのコード中にある日時が埋め込まれていて
その日付よりも過去に起動したと判断される(内部時計の狂いとかで)と
正常な起動をせずに、画面いっぱいに奇妙なメッセージが出るって…(以下略)
0936デフォルトの名無しさん
2015/11/21(土) 16:34:50.46ID:o0TZz0/L閏年とかももちろんだけど、閏秒とかもあるしね
時刻合わせでタイムトラベルすることも有るし不確定要素が多いね
実際に俺が体験した事では昔携帯で日付がおかしなことになっててさ
長年使っていた古い携帯だったからバッテリーが上がると
日付が工場出荷時のに戻されるのね
その状態のときに車をオカマされてさ、相手の人から連絡取れるようにするために
携帯に電話してもらって着信残そうとしたわけよ
そしたら携帯の日付が大昔になっていたから、そのときの着信は
大昔であると判断されて、他の正しい日付の履歴に押し出されて
着信履歴に残ってなかったwww
その人とは二度と連絡が取れなくなってしまった
ちなみにGooglePlayはスマホの日付が大幅にずれていたら
アクセスできなくなるね、どういうわけか
0937デフォルトの名無しさん
2015/11/21(土) 16:50:54.58ID:+qmJr5EIそれはどちらかというとあなたの不注意のような気が…
0938デフォルトの名無しさん
2015/11/21(土) 16:53:51.29ID:U6Bu2qpcどういうわけかも何も不正防止だろ
ディレクトリサービスだって日付時刻が大幅にずれていればエラー吐くよ
0939デフォルトの名無しさん
2015/11/21(土) 16:54:24.49ID:o0TZz0/L時刻関係で実害が出た例を挙げただけ
交通事故に巻き込まれてテンパってそこまで頭が回らなかったんだよね
0940デフォルトの名無しさん
2015/11/21(土) 17:08:16.77ID:2FFj0oRp改札云々はジョークだよ。
randの方は仕様書に
The rand function computes a sequence of pseudo-random integers in the range 0 to RAND_MAX.
The value of the RAND_MAX macro shall be at least 32767.
って書いてあるんだよ。
https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use
にある通り、ほぼ全ての実装で線形合同法が使われてる。
0941927
2015/11/21(土) 17:20:09.88ID:S73HunFeではrand関数を見つけるのってどうすればいいんですか?
randっていう文字がprintfface()みたいに名前変えられてたら
分からなくないですか?
0942デフォルトの名無しさん
2015/11/21(土) 17:24:37.57ID:2FFj0oRpなんでそんな脈絡もない名前に変わってるのかが分からんけど
どんな名前に変わってるか分かってるんならgrepすりゃ良いじゃん
0944デフォルトの名無しさん
2015/11/21(土) 18:02:16.86ID:2FFj0oRp自分が書いて他人に分からないってどういう事?
rand標準関数の名前が#defineで置換されてるって事?
それともオレオレrand関数が作られてて、それを探すって事?
0945デフォルトの名無しさん
2015/11/21(土) 18:11:50.95ID:j5GgL+Db種が割れにくい(超長周期の)乱数生成といえばMT法がメジャーだが(フリーで公開されている)ちと重い
まあそれにしても種を単純にtime()とかで作ってると種がバレるがそこらへんはアプリの側の作りの問題
速度と乱数性の両立を目指したアルゴリズムはいくつかあるっぽい
RKISS
p://yaneuraou.yaneu.com/2014/12/26/stockfish-dd-rkiss/
>>933
ちょっ線形合同法は乱数生成アルゴリズムの中で最速な部類なんだけど…
0946デフォルトの名無しさん
2015/11/21(土) 18:18:20.79ID:2FFj0oRp32bit同士の乗算なんて見たくもない古い人間でごめんよ。
そのRKISSは簡単に回路化できそうで良いね。
0947デフォルトの名無しさん
2015/11/21(土) 18:32:04.98ID:jlX7h0BH非同期でハザードでまくるからだとすると、
「古い」って半端ない古さだね
0948927
2015/11/21(土) 18:50:24.10ID:S73HunFe100万行近いプログラムからこの変数は固定値であるって
どうやって分かるんですか?
0949デフォルトの名無しさん
2015/11/21(土) 19:13:44.15ID:2FFj0oRp最低でも120クロック近く掛かる計算を3度も4度も繰り返すのが嫌だってのが理由だからね。
半端な古さでごめんね?
>>948
何をもって乱数と言うのかにも依るな、それは。
変数の定義にconstなり何なりが付いてれば定数だわな。
あとはコーディング規約によってはkで始まってたり全部大文字だったりする変数は定数だって決まってたりする。
0950デフォルトの名無しさん
2015/11/21(土) 20:49:27.24ID:TwdaWMbWputs(
0951デフォルトの名無しさん
2015/11/21(土) 20:51:17.95ID:TwdaWMbWfor (size_t a = 0; a < 10; ++a) {
puts("dummy");
size_t b = a * a;
printf("%08p %2u\n", &b, b);
}
ループブロックの先頭以外で宣言された自動変数は、
コンパイラによってループのたびにスタックに積まれたり積まれなかったりするの?
TCCでソートの復習してたらスタックオーバーフロー起こした。GCCでは起きない。
もしかして最適化に依存する?
0952デフォルトの名無しさん
2015/11/21(土) 20:58:36.89ID:wPUZshUi0953デフォルトの名無しさん
2015/11/21(土) 21:10:43.44ID:TwdaWMbWループのたびにアドレス変わってることを確認したから
スタックだとわかったわけで、それはないよ。
ただ再帰じゃないのにこんな動きするとは思ってもみなかった。
0954デフォルトの名無しさん
2015/11/21(土) 21:16:12.76ID:lo2qe4EWバグじゃね?
0955デフォルトの名無しさん
2015/11/21(土) 21:16:56.33ID:wPUZshUiてか、GCCだとオーバーフローのチェックなんてねーんじゃねーの?
0956デフォルトの名無しさん
2015/11/21(土) 21:22:58.54ID:TwdaWMbWすまんちゃんと説明する。
GCCで起きないと書いたのは「アドレスの変化も含めて」起きないってこと。
ところがTCCではアドレスが変化する。
そして対策として宣言をループの外に出したらちゃんと動いたのさ。
0957デフォルトの名無しさん
2015/11/21(土) 21:25:12.81ID:wPUZshUiソースを全部あげろや
0958デフォルトの名無しさん
2015/11/21(土) 21:30:44.34ID:TwdaWMbW原因は最初から特定できてるよ。
スタックサイズの違いだと主張するってことは、
スタックに積む動作が規格として正しいってこと?
それともコンパイラの実装依存?そこを知りたいわけで。
0959デフォルトの名無しさん
2015/11/21(土) 21:32:39.37ID:+qmJr5EI普通に考えたら無いね
本当に最小のコードで発生するなら、コンパイラのバグと言って良いと思う
0960デフォルトの名無しさん
2015/11/21(土) 21:32:57.60ID:o0TZz0/L0961デフォルトの名無しさん
2015/11/21(土) 21:34:31.78ID:+qmJr5EI>>958は聞く態度じゃないなあ…
0962デフォルトの名無しさん
2015/11/21(土) 21:40:33.71ID:TwdaWMbWmysort(void *base, size_t const num, size_t const size, bool(*comp)(void const *, void const *)) {
for (size_t a = 1; a < num; ++a) {
if (comp(base + (a - 1) * size, base + a * size)) continue;
byte t[size]; //これを
memcpy(t, base + a * size, size);
size_t b = a;
while (b > 0 && (! comp(base + (b - 1) * size, base + a * size))) --b;
memmove(base + (b + 1) * size, base + b * size, (a - b) * size);
memcpy(base + b * size, t, size);
}
return;
}
----------------------------------------
static void
mysort(void *base, size_t const num, size_t const size, bool(*comp)(void const *, void const *)) {
byte t[size]; //こうした
for (size_t a = 1; a < num; ++a) {
if (comp(base + (a - 1) * size, base + a * size)) continue;
memcpy(t, base + a * size, size);
size_t b = a;
while (b > 0 && (! comp(base + (b - 1) * size, base + a * size))) --b;
memmove(base + (b + 1) * size, base + b * size, (a - b) * size);
memcpy(base + b * size, t, size);
}
return;
} 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0963デフォルトの名無しさん
2015/11/21(土) 22:07:30.88ID:wPUZshUi再帰の話かと思ったら違うのか
答えはお前のバグ
面倒だから終了
0964デフォルトの名無しさん
2015/11/21(土) 22:35:52.83ID:+qmJr5EI提示するコードは動くものじゃないと意味がないよ
質問者が端折った部分に問題がある事がかなり多いからね
例えばcompの中に本当の問題があるのかもしれない
だから、先ずは、君の環境で問題を再現できる最小限のコードを作って、それをideoneとかに貼ってもらうのが一番いい
0965デフォルトの名無しさん
2015/11/21(土) 23:32:07.48ID:j5GgL+Db常識的に考えてスコープを抜けた自動変数の実体を残しておくメリットはゼロどころかマイナスなわけだが、
だって言語仕様、その変数の値を使わないのだから…
0966デフォルトの名無しさん
2015/11/22(日) 00:42:41.14ID:h5zZ1/BEアホウ。ブロックごとにスタックフレームを伸ばしたり縮めたりするわけないだろ。
実体を残す事にはパフォーマンス上の理由がある。
0967デフォルトの名無しさん
2015/11/22(日) 01:17:22.33ID:/loq94Oxそんあことはわかっている文章をよくお読み
0968デフォルトの名無しさん
2015/11/22(日) 01:21:48.53ID:/loq94Ox>>965の「実体」は、(変数の)値、ぐらいの意味ですにょ
つまりbのインスタンス
0969デフォルトの名無しさん
2015/11/22(日) 01:23:12.42ID:wAq+seW6出力
0012FF2C
4
0012FF28
3
0012FF24
2
0012FF20
1
まだ興味ある人いるかな?色々試してやっと条件わかったよ。
ループブロック中ならどこでも(先頭でも)、引数を配列の要素数として使うと再現する。
byte b[sizeof(size_t)]だと問題なし。察するに可変長配列絡みだと思う。
TCCはc99対応が完全じゃないみたいだから。
結局自己解決しちゃったけどいい勉強になりました。
0970デフォルトの名無しさん
2015/11/22(日) 01:35:03.98ID:/loq94Ox>byte b[size]; // ここ
みたいな動的配列が可能なのか…
てコンパイラの実装としては_alloca()でスタック上に配列の領域をとる、の一択になりそう…
これはスタックフレームが伸び縮みする例外的なケースと言える(「スタックフレーム」の定義にもよるが、)
ただそれにしてもforループk回目のb[]の領域を、ループk-1回目のb[]とは別にとる理由が無いから、
アドレスが変わるのはTCCとかいうコンパイラのアレである可能性が大
ていうか個人的には_alloca()がらみの技術は君子危うきに近寄らずの類
0971デフォルトの名無しさん
2015/11/22(日) 01:40:22.17ID:/loq94Ox>forループk回目のb[]の領域を、ループk-1回目のb[]とは別にとる理由
これ有るわ;
動的配列がb[], c[]の2個あって、
forループk-1回目でb[], c[]とも4バイトの領域をとり、
ループ2回目でb[], c[]とも8バイトに増えた場合でかつループ回数が定数でない場合、
どうやってもb[]かc[]のどちらかはアドレスが変わらざるおえない
(TCCだと両方変わるのかもしれんが、GCCでも片方は変わらざるを得ない希ガス
0972デフォルトの名無しさん
2015/11/22(日) 01:52:14.67ID:dFORHBUS解決して良かったね
それがみんなが良くやるデバッグ手順だから覚えとき
0973デフォルトの名無しさん
2015/11/22(日) 01:54:48.11ID:wAq+seW6固定長配列とみなせる場合はスタックずらさない、もしくはループの外に出す。
つまり、可変長配列における最適化の程度問題、という結論に至りました。
0974Office & Gamers @ 試験運用中(トリなしw
2015/11/22(日) 01:58:36.20ID:BYhORoTI0975デフォルトの名無しさん
2015/11/22(日) 10:20:14.44ID:h5zZ1/BEVLAはC11で実装しなくても良くなるわけだ。
0976デフォルトの名無しさん
2015/11/22(日) 11:37:55.22ID:YBB6ktHMこんなコードを見たんですが、==の部分は必要なのでしょうか。
0977デフォルトの名無しさん
2015/11/22(日) 11:53:02.54ID:zgumCplV0978デフォルトの名無しさん
2015/11/22(日) 12:00:29.99ID:yPUHF/WVいや、お前はわかってない
foo(a, b);
…
bar(c, d);
の時に foo( ) の引き数として push した領城は foo( ) から戻った後は二度と使われないけどいちいちスタックを戻さずに、bar( ) の分と一緒に戻すとかやるのは珍しくない
>>969
バグかどうかは別にして、そう言う実装になっていることは認識しているみたい
Variable length array stuff: VLAs were implemented using alloca() but the memory wasn't freed until the end of the function. This prevents VLAs from being used in a loop, for instance.
http://lists.nongnu.org/archive/html/tinycc-devel/2013-04/msg00051.html
>>975 が言ってる
> gotoでスコープ外れる時に戻さなきゃならんし
の話もしてるし、その内直るかも
0979デフォルトの名無しさん
2015/11/22(日) 12:51:48.18ID:/loq94Oxだーかーら、そのスタックを戻す戻さないの話は変数の「領域」を使いまわすという話でしょ
変数の「値」については自分で
>foo( ) から戻った後は二度と使われない
と書いてあるやんけ
つまり言ってる事は>>968で文言を補足した上での>>965と同じで、「使わなくなった変数の領域を残して新たに領域を取り直す必要は無い」
0980デフォルトの名無しさん
2015/11/22(日) 14:04:02.99ID:yPUHF/WVマジで理解力ないんだな
>>978 の話は使わなくなった引数の領域を残したまま新たに引数領域を取り直すって話しだ
勘違いしない様にわざわざ push って書いたのにバカには効果がなかったのか w
0981デフォルトの名無しさん
2015/11/22(日) 15:03:16.41ID:/loq94Ox> >>978 の話は使わなくなった引数の領域を残したまま新たに引数領域を取り直すって話しだ
強弁すぐる…
領域のアドレスが変わらず上書きされるのなら、手段が何であれ領域は使いまわされているのであって、新たな領域の取り直しではない
そもそも今の話の流れは、「変数b(後にVLA b[]と判明)のアドレスが変わってるんだけど何で?」というのが発端であって
GCCの実装が「ループの度に」いったんスタック上にとったb[]をfreeして再alloca()する実装なのか、
最初にいったんスタック上にとったb[]をfreeせずに使いまわすのか(つまり手段の違い)は問題ではない(どっちでもb[]のアドレスは変わらない
それをpush/popするから(アドレスは変わらないのに)領域を取り直してるんだ、とか流れを理解する気か能力がゼロなんじゃ…
0982デフォルトの名無しさん
2015/11/22(日) 15:15:29.31ID:/loq94Oxpush→pop→pusu→pop
というのが
push→push→pop×2 に相当するSPの減算
に最適化されるケースがあるという主張か、
これは本当ですか?ガチで最適化するなら冒頭のpush→pop→pushも無くなるんじゃ…
(何かの相対アドレッシングによるスタックに対する書き込みになる
すると新たな領域を取り直す必要はまるで無い
かつ、ループ回数が定数でないループ内(←いまここ)の中で>>978が主張するような最適化をされたら死ぬ
0983デフォルトの名無しさん
2015/11/22(日) 15:38:37.44ID:yPUHF/WV> これは本当ですか?
20年前の X68K の GCC ですらそうなってる
0984デフォルトの名無しさん
2015/11/22(日) 15:41:10.96ID:/loq94Oxよしんばそうだったとして、ループの度に変数のアドレスが変わるような話なのかどうか、
push→push→pop×2 に相当するSPの減算
がループの中で行われるのであれば、今の話の流れ(ループの度に変数のアドレスが変わる)とは関係しないんじゃー!
つまり無関係。
0985デフォルトの名無しさん
2015/11/22(日) 15:42:09.52ID:yPUHF/WV>>982
> (何かの相対アドレッシングによるスタックに対する書き込みになる
たいてのプロセッサでスタックに書くのは push が最も効率的
0986デフォルトの名無しさん
2015/11/22(日) 15:46:46.97ID:yPUHF/WVブロックの終端でいちいちspを操作するのをはしょって、関数の終端で一気に戻してるってこと
>>978 に書いてあるだろ
仕様なのかバグなのかは知らんが
0987デフォルトの名無しさん
2015/11/22(日) 15:55:46.05ID:vggKhYqJ0988デフォルトの名無しさん
2015/11/22(日) 15:59:01.42ID:/loq94Oxvoid foo() { b[]をalloca(); for for (n回回す) { b[]使う } b[]をfree(); return; } →ワカル (もともとの問題提起の解決編
void foo() { for (n回回す) { push→push→pop×2 に相当するSPの減算 } return; } →ワカル (>>967に対する病的な例外の指摘
void foo() { for (n回回す) { push→push } pop×2*n に相当するSPの減算; return } →ワカラン… (>>986
nが1億でb[]の要素サイズが8 Byteとかだったらどうすんじゃー!
8億バイトものスタックを20年前の X68Kでとれたんですか…(汗
0989デフォルトの名無しさん
2015/11/22(日) 16:02:16.18ID:/loq94Ox>>986が今の流れに対していかに空想的かおわかりいただけただろうか…
0990デフォルトの名無しさん
2015/11/22(日) 16:49:20.58ID:h5zZ1/BE間接ジャンプしたらどうすんだ?
0991デフォルトの名無しさん
2015/11/22(日) 17:09:34.23ID:/loq94Ox(FPか何かがSPをどこまで戻せばよいか知ってる
alloca()がgotoでスキップされたりされなかったりしても同じ
0992デフォルトの名無しさん
2015/11/22(日) 17:18:32.00ID:/loq94Ox関数先頭でalloca()して、抜けるときにSP操作して戻る、という最適化で何の問題も無い気がしてきた…orz
(つまり>>971のようにループの度に配列サイズが増えるようなケースは杞憂
つまり、関数内でどんなしっちゃかめっちゃかなgotoをやっても再alloca()の必要無しで、
開放もSPをあらかじめ記憶していた値に戻すだけなので問題無し
0993デフォルトの名無しさん
2015/11/22(日) 17:37:06.28ID:vggKhYqJ頭悪すぎ
0994デフォルトの名無しさん
2015/11/22(日) 17:39:58.11ID:/loq94Ox0995デフォルトの名無しさん
2015/11/22(日) 17:40:47.15ID:yPUHF/WV> nが1億でb[]の要素サイズが8 Byteとかだったらどうすんじゃー!
知らんがな、作った奴に言えよ…
TinyCC Changelog
version 0.9.26:
Features: - C99 variable length arrays (Thomas Preud'homme & Joe Soroka)
http://bellard.org/tcc/changelog.html
>>992
> ていうか調べたらC99のVLAっって確保したサイズを後から変えられないってネットに書いてあるから
それ、今回の話と関係ないから
0996デフォルトの名無しさん
2015/11/22(日) 17:49:41.20ID:+9G59Pl/http://peace.2ch.net/test/read.cgi/tech/1448182148/
0997デフォルトの名無しさん
2015/11/22(日) 17:51:06.21ID:yPUHF/WV0998デフォルトの名無しさん
2015/11/22(日) 18:00:04.03ID:/loq94Oxもともとはといえば、「スコープを抜けた変数の領域を残す「必要は無い」(>>965)」に対し、
「スコープを抜けた変数の領域をあえて残すケースがあるわドアホウ(>>966, >>987)」
という論理的におかしい噛み付き方がなされたのがスレが伸びた原因
0999デフォルトの名無しさん
2015/11/22(日) 18:07:32.40ID:/loq94Ox「スコープを抜けたVLA変数の領域をあえて残す「必要がある」」という正しく対立する主張となり、
ループ内で確保したVLAの開放をいつやるのかは最適化ポリシーの違いと言う結論に達して済んだんだけど…
1000デフォルトの名無しさん
2015/11/22(日) 18:11:49.48ID:vggKhYqJ10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。