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

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

C言語なら俺に聞け(入門編)Part 131

1 :デフォルトの名無しさん:2015/11/22(日) 17:49:08.07 ID:+9G59Pl/.net
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 130
http://peace.2ch.net/test/read.cgi/tech/1439071526/
★過去スレ
C言語なら俺に聞け(入門編)Part 129
http://peace.2ch.net/test/read.cgi/tech/1432674955/
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 168代目
http://peace.2ch.net/test/read.cgi/tech/1408962564/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
http://codepad.org/
http://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
【重要】
当たり前の事ですが、2chではコピペ荒らしは禁止されています

348 :デフォルトの名無しさん:2015/12/29(火) 19:08:52.54 ID:B86ZwWUs.net
可搬性を確保するのむずかCよね

349 :デフォルトの名無しさん:2015/12/29(火) 19:59:56.63 ID:Kpb8+VpB.net
2chのread.cgiも、Cだっけ?DBって何使ってんだんすかね?

350 :デフォルトの名無しさん:2015/12/29(火) 21:46:02.81 ID:q8X2dkwQ.net
>>349
2chやそれ以前の古のCGIは元々DBではなくファイルで管理が一般的
現在のおーぷんなんかはDBされているらしいが(いまはここもDBなのかもしれない)

351 :デフォルトの名無しさん:2015/12/29(火) 22:55:27.03 ID:Kpb8+VpB.net
>>350
まぁ始まりは、あめぞう掲示板だもんね
いまもファイル管理かな  可能ならファイル管理が一番負担少ないんだよね鯖には

352 :デフォルトの名無しさん:2015/12/30(水) 02:58:42.64 ID:umSXLTLc.net
linuxでc言語の環境組んで勉強したいです。
ついでにvimとか使えるようになりたいんですが、vimって関数とか補完してくれるんですか?

353 :デフォルトの名無しさん:2015/12/30(水) 03:29:06.94 ID:c25CJwGc.net
>>352
挿入モードでC-pとかC-nとかで補完できると思う

354 :デフォルトの名無しさん:2015/12/30(水) 09:20:55.40 ID:wAoiK+Ar.net
Ctagがなんか使ってないとあんまり使いやすい補完は出来なかったような

355 :デフォルトの名無しさん:2015/12/30(水) 09:37:10.79 ID:dF3jkthq.net
vimのキーバインドに慣れると通常の操作にはもう戻れなくなるから注意しろよ!
なんでもvim化したくなる病気にかかるぞ。
vsvim、vimperatorちょーきもちいいし

356 :デフォルトの名無しさん:2015/12/30(水) 14:47:38.87 ID:ugBw4vew.net
nviも思い出してあげてください

357 :デフォルトの名無しさん:2015/12/30(水) 23:21:31.16 ID:ZlOQB/u7.net
>>341
では、どんなものがソフトウエア開発なんだ? おまはんの理解では。
ハード屋の設計ミスを押しつけられるのをそんなに不満がるおまはんが、
いったいソフトウエアとは何だと思っているのか、ぜひぜひ聞いてみたいもんだねえ。
半田ごてもオシロスコープも使えないクルクルパーがソフトウエア技術者なのか?
頭おか・・・いや変わってるねえ。

358 :デフォルトの名無しさん:2015/12/30(水) 23:57:50.55 ID:umSXLTLc.net
>>353
ありがとうございます。
ちょっと試してみます。

ちなみに、linuxでcやる場合どういう環境がスタンダードなんでしょうか?

359 :デフォルトの名無しさん:2015/12/31(木) 00:03:50.41 ID:Rg3p4l8E.net
コンソールでvimでgccでmakeだろ

360 :デフォルトの名無しさん:2015/12/31(木) 00:09:26.32 ID:n9A3edra.net
emacsですべて済む

361 :デフォルトの名無しさん:2015/12/31(木) 01:53:24.89 ID:Rg3p4l8E.net
そもそもCで何を作るんだ
画面が出るプログラムの方が面白くないか

362 :デフォルトの名無しさん:2015/12/31(木) 02:05:15.22 ID:6jpuja+H.net
>>361
> 画面が出るプログラム
は使いにくいじゃん。

363 :デフォルトの名無しさん:2015/12/31(木) 02:56:04.46 ID:CRKJz/nv.net
Cには苦C思い出しかない C++、C#然り
おれは余生はPHPのみで過ごします

364 :デフォルトの名無しさん:2015/12/31(木) 06:25:21.15 ID:i33x2L8P.net
俺はコンソール上でvim、vim中から :make する人。
QuickFix機能が大好きなんだよ。

でも >>353 の補完操作は知らなかった。なかなか便利だね。

365 :デフォルトの名無しさん:2015/12/31(木) 08:53:09.06 ID:N9IVqlb8.net
ちゃんと用意を整えればclangベースの完成度の高い補完が受けられるはず

366 :デフォルトの名無しさん:2015/12/31(木) 12:52:11.32 ID:Rg3p4l8E.net
補完もしらないとか
ctags使ってタグジャンプとか常識だろ

367 :デフォルトの名無しさん:2015/12/31(木) 13:56:35.64 ID:a5VWzLto.net
>>363
Perl 6が先日爆誕した今、PHPもRubyもPythonもみなPerl 6の前にひれ伏すのみ!
全てのLL言語は道を空けろ

368 :デフォルトの名無しさん:2015/12/31(木) 14:28:24.51 ID:HlqOeDMb.net
すいません、picマイコンのプログラムを行っているのですが、
int型の数値をchar型のascii文字列に変換する方法はないでしょうか?

int a=31なら
char b='1'

int a=41なら
char b='A'
に変換する方法です。

どなたかわかりましたら、お願いします。

369 :デフォルトの名無しさん:2015/12/31(木) 14:45:02.76 ID:E/Q2xqoe.net
>>368
asciiコード表をググる

370 :デフォルトの名無しさん:2015/12/31(木) 14:53:25.60 ID:n9A3edra.net
>>368
b = (char)a;

371 :デフォルトの名無しさん:2015/12/31(木) 15:09:58.06 ID:fJbh+cCl.net
>>368
int a=31なら
char b='1'
31って、10進数じゃなく、16進数なの?

372 :デフォルトの名無しさん:2015/12/31(木) 16:34:24.08 ID:a5VWzLto.net
>>368
「質問の意味不明。再入力せよ
「無人化すべきである

373 :デフォルトの名無しさん:2015/12/31(木) 19:17:49.74 ID:wE66IW8z.net
いや、>>370がすべてだろ
これ以上はどうしようもない気がするが…

374 :デフォルトの名無しさん:2015/12/31(木) 19:22:29.15 ID:SKwNZ+jx.net
文字列って言ってるし

char b[2];
b[0] = (char)a;
b[1] = 0;

かもしれんじょ

375 :デフォルトの名無しさん:2015/12/31(木) 20:58:42.08 ID:a5VWzLto.net
>>373
(char)31が何で(char)'0'になんの?
ASCIIコード表によれば31はUnit Separatorだって書いてあるが…

376 :デフォルトの名無しさん:2015/12/31(木) 21:16:31.63 ID:SlDcEVNz.net
>>375
asciiコード表って10進だと思う?

377 :デフォルトの名無しさん:2015/12/31(木) 21:30:15.73 ID:a5VWzLto.net
>>376
それ漏れよりも>>373に聞いてくれ

378 :デフォルトの名無しさん:2015/12/31(木) 21:31:14.84 ID:h8iGf5UY.net
0x31 '1'
0x41 'A'

379 :デフォルトの名無しさん:2015/12/31(木) 21:32:42.94 ID:SlDcEVNz.net
>>377
ごめんね早漏で

380 :デフォルトの名無しさん:2015/12/31(木) 21:34:45.49 ID:CPFiItNL.net
>>368
おそらく16進表記なんだろう…と意図を汲むことはできるけどさ。
まず最初に、プログラムは

381 :デフォルトの名無しさん:2015/12/31(木) 21:34:51.00 ID:h8iGf5UY.net
int i;
char b;

i=1;
b=1+'0';

382 :デフォルトの名無しさん:2015/12/31(木) 21:36:44.73 ID:h8iGf5UY.net
int i;
char b[10];

i=31;
b[0]=i/10+'0';
b[1]=i%10+'0';
b[2]=0;

383 :デフォルトの名無しさん:2015/12/31(木) 21:38:22.33 ID:CPFiItNL.net
>>368
おそらく16進表記なんだろう…と意図を汲むことはできるけどさ。
まず最初に、プログラムは"書いたとおりに動く"ってことをきちんと認識すべきだ。
その上でなお>>368のままの処理を実現したいならルックアップテーブルを使うのが簡単。

384 :デフォルトの名無しさん:2015/12/31(木) 21:41:23.01 ID:a6Iii3M/.net
超エスパーすると、sprintfの使えない処理系で同等のことをしたいんじゃないかと

385 :デフォルトの名無しさん:2015/12/31(木) 21:43:19.09 ID:h8iGf5UY.net
素人さんに組み込み系やらせてるだけだから
ご本人様に仕事紹介した方がなんとかしてくれるのでは

386 :デフォルトの名無しさん:2016/01/01(金) 05:37:57.59 ID:6x5pHkP6.net
>>368
最初の2行の質問部分と、欲しい結果の例示が矛盾してるんだ。

int a=31 なら char b='1'
int a=41 なら char b='A'
... bは文字列じゃない。char変数。

おまけに値31から文字'1'に変換する文字コードが不明瞭。
値0x31(10進数で49)が'1'なら一般的なASCIIコードだと分かるけど。

というわけで、答える人も >>368 の矛盾をそれぞれの視点で
解釈してるんで様々な答案が現れる。
もう一度、正しい質問を出し直すのが良いかと。

387 :デフォルトの名無しさん:2016/01/05(火) 01:22:26.29 ID:dvg1UNQj.net
初心者です
int c=1;
main()
{
    int b=2,c=3;
    {
    int a=4,b=5;
    printf("c=%d",c);
    }
}

こんなときにprintfで表示するcはmainの外にあるcですか?mainの中にあるcですか?

388 :デフォルトの名無しさん:2016/01/05(火) 01:30:27.66 ID:9P9OP9TU.net
一番近いスコープで宣言されてるヤツ。
この場合に表示されるのは 3 だね。

389 :デフォルトの名無しさん:2016/01/05(火) 11:48:25.98 ID:3x6aqfzI.net
>>387
http://codepad.org/fVWmtQM5

ここにソースを貼って聞くより、
codepad使って試してみる方が速いし
君のためにもなると思う。

390 :デフォルトの名無しさん:2016/01/05(火) 11:59:21.74 ID:uJ085arg.net
テキスト GCC 最強

391 :デフォルトの名無しさん:2016/01/05(火) 15:49:49.90 ID:LDSV25Qv.net
コンパイルして試すって方法では
移植性のある動作か環境依存かは判断できないからなぁ。
規格についての質問だったんじゃないかしら。

392 :デフォルトの名無しさん:2016/01/05(火) 16:22:25.15 ID:KbFq7Je6.net
それならたとえば gcc でやって見たらこうなったんだけど、
これは規格で決まっているのか?という質問の仕方をするぞ。ふつーなら
まあ。そんな質問の仕方ができるのなら、自分で規格書にあたるだろうがな

ソフト関係一般、試してみてから質問しろって質問大杉

393 :デフォルトの名無しさん:2016/01/05(火) 19:28:12.81 ID:W/DE25A2.net
再現できる最小コードに切り詰めてくうちに問題点を自分で発見してしまう

394 :デフォルトの名無しさん:2016/01/05(火) 19:40:01.60 ID:3x6aqfzI.net
何かを学習するのなら、そう言うのって大事じゃないかな

395 :デフォルトの名無しさん:2016/01/05(火) 21:16:04.59 ID:QofW8aPu.net
>>393
あるあるネタだよね

396 :デフォルトの名無しさん:2016/01/08(金) 01:58:52.78 ID:Sl02QCfR.net
>>389
double型の配列x.int型のcがあるとする
printf("x[%d]=",c);

x[%d]の%dはcがint型だからという考え方で良いんですか?

397 :デフォルトの名無しさん:2016/01/08(金) 02:06:54.04 ID:gvhAKgDA.net
そう

398 :デフォルトの名無しさん:2016/01/08(金) 02:23:22.67 ID:Sl02QCfR.net
>>397
ありがとうございます

399 :デフォルトの名無しさん:2016/01/08(金) 16:33:51.39 ID:jv1GyZfR.net
c言語よりアセンブリのほうが早いらしいけど、コンパイルしたのを逆アセンブリして、アセンブリコンパイラでコンパイルしたら早くなったりする?

400 :デフォルトの名無しさん:2016/01/08(金) 16:58:44.64 ID:lSaO5zOy.net
コンパイラにアセンブリソースを出力させれば良いだろう

401 :デフォルトの名無しさん:2016/01/08(金) 17:13:59.66 ID:sptetxO+.net
かわらん

402 :デフォルトの名無しさん:2016/01/08(金) 17:15:52.70 ID:jv1GyZfR.net
>>400
そんな事出来るのか

>>401
何故?

403 :デフォルトの名無しさん:2016/01/08(金) 17:18:57.93 ID:sptetxO+.net
逆アセして 再びアセンブラにより実行ファイルを作ったところで
同じ機械語で書かれた実行ファイルを書き直してるだけだし

404 :デフォルトの名無しさん:2016/01/08(金) 17:20:42.43 ID:sptetxO+.net
逆アセしたのを人手で修正するとなると、実行速度が変わる可能性はあるけど
今時のコンパイラの最適化を超えることができるかは不明だぜ?

405 :デフォルトの名無しさん:2016/01/08(金) 17:27:10.00 ID:jv1GyZfR.net
>>404
もしかしてアセンブラが早いんじゃなくて、詳細設定も出来るから上手い人が書いたら早いってこと?
つまり初心者がアセンブラ使ったらcより遅くなるってこと?

406 :デフォルトの名無しさん:2016/01/08(金) 17:35:34.33 ID:sptetxO+.net
初心者が手を出すようなもんじゃない とだけ

407 :デフォルトの名無しさん:2016/01/08(金) 19:29:37.94 ID:aMJ95Xns.net
>>405
コンパイラの能力と、アセ書く人の腕次第

408 :デフォルトの名無しさん:2016/01/08(金) 19:47:56.85 ID:HKkiRRvQ.net
cpuのパイプラインまで考慮して命令並べる事もあるので、インテルとかにいる達人じゃなきゃ勝てない。

409 :デフォルトの名無しさん:2016/01/08(金) 23:07:20.42 ID:9BLMKoY/.net
>>405
その通りと思って間違いない

410 :デフォルトの名無しさん:2016/01/09(土) 00:24:52.19 ID:rnbze7si.net
コンパイラの最適化を超えるアセンブリは簡単にはかけないから、せいぜい逆アセを元に修正加えるのがせいぜいじゃない?

411 :デフォルトの名無しさん:2016/01/09(土) 01:51:05.94 ID:ANqeYpuP.net
int i.j.k.m
double a[4][5].temp
ピボットがa[k][k]のとき二次配列a[4][5]のk行の要素とm行の要素を交換するプログラムを作りなさい

for(i=k;I<5;i++){
temp=a[k][i];
a[k][i]=a[m][i];
a[m][i]=temp;}

と答えがなっているのですが
for(i=0;•••;•••)とならないのはなぜですか?

412 :デフォルトの名無しさん:2016/01/09(土) 06:13:10.50 ID:VKEzr4ni.net
>>411
ピボットがk行k列ということはk列より前の列は対角化が終了しているはずだから要素は0になっているので交換は不要
…とエスパーしてみる

413 :デフォルトの名無しさん:2016/01/09(土) 13:25:44.77 ID:ANqeYpuP.net
>>412
答えが間違ってる可能性はありますか?

414 :デフォルトの名無しさん:2016/01/09(土) 13:40:26.34 ID:DqPp/fff.net
>>413
ループの終了条件が間違っている可能性がある
多分最後の列ベクトルが列数のカウントに入っていない

415 :デフォルトの名無しさん:2016/01/09(土) 13:44:46.00 ID:DqPp/fff.net
すまん、あってたわ

416 :デフォルトの名無しさん:2016/01/09(土) 13:51:12.35 ID:aqFjvIcu.net
>>413
LU分解かガウスジョルダンか分からんけど上三角行列の行交換の部分だけなら特に間違ってないだろ

417 :デフォルトの名無しさん:2016/01/09(土) 14:16:34.01 ID:ANqeYpuP.net
>>416
四次元連立一次方程式の配列a[4][5]をガウスジョルダンでm行とk行の要素を入れ替えなさい

みたいな感じです

418 :デフォルトの名無しさん:2016/01/09(土) 14:28:29.00 ID:EC0TmpF1.net
>>417
ガウスジョルダンなら>>412のレスの通りだろ
下手にすべての要素を入れ換えると処理済みの対角要素まで要らんところに移動することになるぞ

419 :デフォルトの名無しさん:2016/01/09(土) 14:36:17.94 ID:ANqeYpuP.net
>>418
整理して考えてみます

420 :デフォルトの名無しさん:2016/01/10(日) 02:03:02.80 ID:KHsQJ2Yx.net
for(...;...;...)
printf(..........)
for(...;...;...)
となっていたら
上の二行だけを先に実行してそれが終わって次の文ですよね?

421 :デフォルトの名無しさん:2016/01/10(日) 02:07:57.34 ID:KHsQJ2Yx.net
>>420
すみません解決しました

422 :デフォルトの名無しさん:2016/01/10(日) 03:58:11.89 ID:KHsQJ2Yx.net
int main(void)#include <stdio.h>

{
int i ,a[3]={10,20,30}, b[3]={1,2,3};

func1(a);
for(i=0;i<3;i++) printf(

423 :デフォルトの名無しさん:2016/01/14(木) 15:18:15.64 ID:+xO0ECJY.net
バイトオーダーの入れ替え(リトル <-> ビッグ)関数が必要なんだけど、
こうすると速くなる、こうするのが賢いってコードある?
特になければ素直に1バイトごとにビットシフトで処理しようかと思うんだけど。

424 :デフォルトの名無しさん:2016/01/14(木) 15:57:38.19 ID:si8G2R6b.net
なんでビットシフト?
8ビット毎の並び順では バイトオーダー
違った?

425 :デフォルトの名無しさん:2016/01/14(木) 17:11:17.68 ID:DrC+qJSa.net
例えば32bit分を一気に読み込んでビットシフトで生成したほうが
メモリアクセスが減らせて速いからでは?

バイト単位でアクセスしたコードが最適化でどうなるか分からんから、結果的に意味ないかもだが
それでも32bit分一気に読み込んで書き換えるコードより速くなることはないだろう

ほかには、ユニオンを使うやり方と、SSEを使う方法が考えられる
SSEを使う方法は、例えばこれ
http://qiita.com/nbjiao/items/12f90c734c0df31aec62

426 :デフォルトの名無しさん:2016/01/14(木) 18:52:06.53 ID:si8G2R6b.net
バイト並びが
上位 下位

下位 上位
では
回路上でみると、ビットの入れ替えしないといけないように見えるから
やっぱり、俺が勘違いしてるのか

427 :デフォルトの名無しさん:2016/01/14(木) 18:54:35.61 ID:nHVQKm3B.net
通信やグラフィック(ビットマップ)なんかではビット単位で全部ひっくり返す必要もあったりするね
何bit単位でさらに並びをどうするかってのはほんとは色々組み合わせがあるものよ

428 :デフォルトの名無しさん:2016/01/14(木) 19:19:36.95 ID:jIuADbbb.net
a が 16bit整数だとして
union や キャストを使わずにやろうとすると、
バイトオーダーの入れ替えを作るのにビットシフトするのかな
((a << 8) & 0xf0) | ((a >> 8) & 0x0f)

429 :デフォルトの名無しさん:2016/01/14(木) 19:22:16.82 ID:si8G2R6b.net
エンディアン 嘘つかない?

430 :デフォルトの名無しさん:2016/01/14(木) 20:36:54.02 ID:os+tW4sX.net
>>428
それが普通でしょ
今時の CPU なら何ビットシフトしても1サイクルで終わるし
コンパイラーによっては、68000 の swap のような専用命令を使ってくれたりする

431 :デフォルトの名無しさん:2016/01/14(木) 20:56:46.88 ID:si8G2R6b.net
ttps://linuxjm.osdn.jp/html/LDP_man-pages/man3/byteorder.3.html

432 :デフォルトの名無しさん:2016/01/14(木) 21:11:42.91 ID:DrC+qJSa.net
ただし、>>428のコードは間違っているので問題外だがな

433 :デフォルトの名無しさん:2016/01/14(木) 21:48:03.06 ID:jIuADbbb.net
うわ やっちまった
はずかしー

434 :デフォルトの名無しさん:2016/01/14(木) 22:47:53.67 ID:Zc1b49I1.net
http://codepad.org/oeWG3Pe9
半年振りに int main() と書いたような気が

>>433 どんまい

435 :デフォルトの名無しさん:2016/01/15(金) 07:45:02.36 ID:rbEYiMQp.net
32bit版は?

436 :デフォルトの名無しさん:2016/01/15(金) 08:09:04.37 ID:kbAfmhMJ.net
>>435
それぐらい自分で考えろ

437 :デフォルトの名無しさん:2016/01/15(金) 09:06:47.46 ID:L+SdYadB.net
>>434
16bit 値なら、& 取る必要無いだろ?

438 :デフォルトの名無しさん:2016/01/15(金) 09:34:48.02 ID:CkLNaHVR.net
http://codepad.org/6qJztvx0

439 :デフォルトの名無しさん:2016/01/15(金) 09:39:17.10 ID:CkLNaHVR.net
http://codepad.org/1IPWK31U

440 :デフォルトの名無しさん:2016/01/15(金) 15:22:44.57 ID:F13ndxIM.net
次にお前は64bit版は?と言う

441 :デフォルトの名無しさん:2016/01/15(金) 16:26:33.96 ID:fA3ibDHk.net
4bit版は?

442 :デフォルトの名無しさん:2016/01/15(金) 16:26:59.37 ID:fA3ibDHk.net
64bit版は?

443 :デフォルトの名無しさん:2016/01/15(金) 16:47:29.87 ID:CkLNaHVR.net
http://codepad.org/XMq1qSHq

444 :デフォルトの名無しさん:2016/01/15(金) 18:23:08.30 ID:vW09T/Qw.net
>>443
なんでゼロが出てくるの?

445 :デフォルトの名無しさん:2016/01/15(金) 18:27:31.72 ID:CkLNaHVR.net
http://codepad.org/tiL3KiRJ

446 :デフォルトの名無しさん:2016/01/15(金) 20:07:47.85 ID:nz6sd5//.net
>>437

コードでいうと?

447 :デフォルトの名無しさん:2016/01/15(金) 20:12:06.86 ID:XOSgYs/9.net
>>446
>>438見りゃわかるだろアホ

448 :デフォルトの名無しさん:2016/01/15(金) 20:15:07.23 ID:nz6sd5//.net
>>447
unsigned short が 16bit であると決まっているのか?

449 :デフォルトの名無しさん:2016/01/15(金) 20:21:36.08 ID:CsxQJ5lx.net
assert で跳ねるようにして確認してる   (けど1バイトは8bit確定なのだろうか?)

最上位ビットが立ってる状態での右シフトで
1を補ってしまうのを嫌うのに 符号なし にしてるっぽい

450 :デフォルトの名無しさん:2016/01/16(土) 08:11:13.95 ID:WjMevUGd.net
>>423
エンディアネスの変換は素直に
hton/ntoh 系のPOSIX関数を使うのが無難でないか。
きっとライブラリ作者の方でチューニング済みだよ。

て言うか >>431 と同じ内容だな、こりゃ。

451 :デフォルトの名無しさん:2016/01/16(土) 09:03:42.72 ID:K5qF020v.net
それじゃ任意の変換ができんがな

452 :デフォルトの名無しさん:2016/01/16(土) 09:14:24.57 ID:PGyH0xCz.net
バイト織田の変更とかarchにあわせるためだから
暑中やるもんでもないような

453 :デフォルトの名無しさん:2016/01/16(土) 13:10:08.41 ID:QU9s9ZKo.net
>>445
シフト8回、論理積6回、論理和7回か。

こう書けばシフト6回、論理積4回、論理和3回だからこっちの方が標準的なマシンなら速いぞ。
http://codepad.org/zLQuDOiU

あと型のサイズが気になる程古い環境だとunsigned long long型はそもそも存在しないので注意な。

454 :デフォルトの名無しさん:2016/01/16(土) 13:18:13.82 ID:QU9s9ZKo.net
>>449
Cの仕様上は1バイトは7bit以上

・・・・・・だった筈

455 :デフォルトの名無しさん:2016/01/16(土) 15:54:07.40 ID:K5qF020v.net
>>453
おれのはbswap2回になるわけだが

456 :デフォルトの名無しさん:2016/01/16(土) 16:12:42.07 ID:K5qF020v.net
>>453
お前のもclangでやれば同じになるようだな

457 :デフォルトの名無しさん:2016/01/16(土) 16:17:28.40 ID:FL+/Wrts.net
>>454
7bitで処理しているCPUってあるの?

458 :デフォルトの名無しさん:2016/01/16(土) 16:19:49.89 ID:K5qF020v.net
1bitでもあるぞ

459 :デフォルトの名無しさん:2016/01/16(土) 17:31:03.53 ID:QU9s9ZKo.net
>>456
頭が固くてごめんよ、Intel系で、最適化掛けたら、確かにbswap命令が1個か2個の超短い関数になるね。

俺が言った「標準的なマシンなら速い」ってのは
「ハッカーのたのしみ」って本で扱ってるような、およそどんな種類のCPUにも含まれている命令のみを使った場合に速いって話な。

実際、アーキテクチャ依存な最適化なんかを掛けずに比較するとこんな具合になる。
https://gist.github.com/pixie-grasper/74fcbd7d924cd99c570e

>>457
昔はあったってWikipediaには書いてあるな。
あとはFPGAでわざわざそういうCPU作るとか

460 :デフォルトの名無しさん:2016/01/16(土) 17:39:40.54 ID:K5qF020v.net
>>459
今時gccやclangがサポートしてるCPUならおよそどんな種類のCPUにも含まれてるんじゃないか?

461 :デフォルトの名無しさん:2016/01/16(土) 17:40:17.63 ID:QU9s9ZKo.net
clangで言語依存な最適化のみ最大限掛けたら、つまり
clang++ bswap.cc -o - -S -emit-llvm -std=c++1y | opt -O3
したら両方共
tail call i64 @llvm.bswap.i64(i64 %a)
になっちゃった。
最適化つえぇ・・・

462 :デフォルトの名無しさん:2016/01/16(土) 17:44:51.83 ID:QU9s9ZKo.net
>>460
targetとしてサポートしてるCPUには8086から80386までを含む。
IntelのCPUにbswap命令が追加されたのは486になってから。

463 :デフォルトの名無しさん:2016/01/16(土) 17:46:41.12 ID:K5qF020v.net
だから今時と言ってるだろ

464 :デフォルトの名無しさん:2016/01/16(土) 17:47:59.37 ID:QU9s9ZKo.net
ああ!
今時のgccやclangが
ではなく
今時のCPUなら
か。

せやね

465 :デフォルトの名無しさん:2016/01/16(土) 21:27:19.76 ID:tFEy8q4U.net
>>459
漢のフルカスタムへおいでませ

466 :デフォルトの名無しさん:2016/01/17(日) 22:55:07.68 ID:h36PkqQ1.net
ランダムアクセスファイルって基本的にはメモリに乗せてから処理するより遅くなると見ていいんでしょうか?
開発中のアプリケーションで両方使っているんですが、ランダムアクセスの方が遅いんです。実装の問題でしょうか?

467 :デフォルトの名無しさん:2016/01/17(日) 22:59:54.79 ID:hf3I1Sql.net
HDDを対象にランダムアクセスすれば、メモリーアクセスの方が遙かに速いでしょうね。
SSDを対象に同じ事をする場合は、相当の改善は見込めると思います。

468 :デフォルトの名無しさん:2016/01/18(月) 01:05:34.65 ID:TR/YNlok.net
>>467
レスありがとうございます。
勘違いしてたみたいでランダムアクセスの方が速いと思ってました。
ちなみにSSDの環境で比べています。
ランダムアクセスの利点はメモリ消費の節約ぐらいですか?

469 :デフォルトの名無しさん:2016/01/18(月) 01:17:38.83 ID:TR/YNlok.net
>>468 質問撤回します
利点はメモリ消費の節約と、レコード番号によるアクセスですね
実装では選択レコードの表示と、全レコードの表示が機能としてあるのですが、
選択レコードの表示はそれなりに速いので、ランダムアクセスファイルで
シーケンシャルアクセスすると逆に遅くなっちゃうということですかね

470 :デフォルトの名無しさん:2016/01/18(月) 02:58:27.22 ID:F4LpYkVc.net
小さいファイルならメモリに載せたほうが格段に早い
大きいとメモリを圧迫するからバランス

471 :デフォルトの名無しさん:2016/01/18(月) 04:10:59.44 ID:TR/YNlok.net
走査前にファイル容量を調べてアクセス方法を分岐するのは一般的ですかね?

472 :デフォルトの名無しさん:2016/01/18(月) 07:48:18.62 ID:X1DF5hh1.net
メモリマップしてOSに任せとけ

473 :デフォルトの名無しさん:2016/01/18(月) 12:31:46.71 ID:qMoQIRpx.net
メモリに乗せる云々は、ファイル全体をメモリに読み込むという意味さと解釈すると
一般的にはアクセス箇所が少ないならファイルを直接アクセスする方が有利
使わないところを読むのは時間的にも空間的にも無駄だから

474 :デフォルトの名無しさん:2016/01/18(月) 12:50:07.58 ID:M94/HkrH.net
まず使用言語を聞かないと話が食い違ってる気がする
Basic とか COBOLやろか

475 :デフォルトの名無しさん:2016/01/18(月) 12:50:08.80 ID:ICspl/0l.net
賢いDBあるのに
自前で実装?

476 :デフォルトの名無しさん:2016/01/18(月) 14:27:58.54 ID:xk2uumt0.net
一応、ここはC言語入門編のスレな

477 :デフォルトの名無しさん:2016/01/18(月) 18:16:01.25 ID:TYJ3w2rJ.net
そうだよな。
C言語でシーケンシャルファイルとかランダムアクセスファイルとかがどこの何者なのか先ず聞きたいわ。

478 :デフォルトの名無しさん:2016/01/18(月) 22:43:18.95 ID:TR/YNlok.net
ありがとうございました。

479 :デフォルトの名無しさん:2016/01/19(火) 01:24:48.90 ID:NnBd5aRZ.net
int m=−1;
main()

  func(3);
  func(2);
  printf(”%d¥n”,func(1));

int func(int a)

  if(a > m) m=a;
  return(m);


このときなぜmainの外に値がかえるのですか?

480 :デフォルトの名無しさん:2016/01/19(火) 01:35:33.28 ID:kkfqYwuP.net
ここに書き込むためだと思うけど
色々とおかしくなってる所があって質問の意図が掴みにくい

まず>>1に書いてある実行環境で走らせてみてその結果を貼ってくれると嬉しい
http://codepad.org/
http://ideone.com/

481 :デフォルトの名無しさん:2016/01/19(火) 02:04:07.95 ID:NnBd5aRZ.net
m=3

です

482 :デフォルトの名無しさん:2016/01/19(火) 03:00:42.81 ID:NUykG/ue.net
http://ideone.com/e82xp6
こんな感じのを想定してみるけど
うーんすまんがイマイチ意図が読めん

とりあえずグローバル変数はどこの誰が触っても良い共有物なので
m=aの時点で値は変わってるしそれをmain()はちゃんと受け取ってるよ
もうちょい疑問点を出してみてくれ

483 :デフォルトの名無しさん:2016/01/19(火) 03:30:00.15 ID:NnBd5aRZ.net
>>482
グローバル変数の値の変わり方
みたいなのが知りたかったので助かりました

484 :デフォルトの名無しさん:2016/01/19(火) 18:22:04.71 ID:DwRras8D.net
整数を受け取って2からその数までの偶数の和を戻す関数
1以下または301以上の場合には0を戻すようにする
みたいなプログラムどうやったら組めますか

485 :デフォルトの名無しさん:2016/01/19(火) 18:43:59.03 ID:eYkN5B6n.net
>>484
一般的にはif文とfor文の組合せで実現出来るものだと思う

それともそういった構文を使わずに、ということなのかな

486 :デフォルトの名無しさん:2016/01/19(火) 18:46:42.09 ID:MH15YYPt.net
>>484
http://codepad.org/7e0f66gt

487 :デフォルトの名無しさん:2016/01/19(火) 21:24:24.21 ID:20zNHCnh.net
>>484
宿題スレへ

488 :デフォルトの名無しさん:2016/01/19(火) 21:35:06.89 ID:zhXlS8A2.net
配列に答えを予め格納しておいて配列のインデックスと与えられる整数とを結びつける
return ans[seisu];
で一発や

489 :デフォルトの名無しさん:2016/01/19(火) 22:03:16.08 ID:dkAc/DrU.net
>>488
その「答え」を求める問題やろ

490 :デフォルトの名無しさん:2016/01/19(火) 22:10:15.26 ID:dkAc/DrU.net
>>484
指定する数をint nとすれば
(1+n/2)*n/2
とかそんな感じで一発じゃね?

491 :デフォルトの名無しさん:2016/01/20(水) 17:03:54.37 ID:UTQHsO+H.net
>>484 「2から指定された値までの偶数の和」という問題は
1. 足し算のループで答えを求める
2. 等差数列の和の公式を適用 (ループがなくなり計算一発)
3. 予め計算して表にしておく (計算もなくなり表引きだけ)
てな具合にアルゴリズムの洗練をたどれる良い問題だね。

それに加えてプログラミングの重要な心得も含んでいる。
0. 関数が正常に動作するべき値の範囲に注意をはらうべし
 (異常な入力値をチェックせよ)


質問の答えじゃなくて感想だけど。

492 :デフォルトの名無しさん:2016/01/21(木) 21:18:39.30 ID:mV6gE67O.net
今度からC言語使わされることになったんですが、
バグが出やすい箇所みたいなの教えてください。

今学んでるんですが、何これ、そんなにバグ作りこみたいの?
って仕様ばっかで困ってます。

493 :デフォルトの名無しさん:2016/01/21(木) 21:25:33.12 ID:rCIbkvUQ.net
アセンブラレベルの自由度を高級言語で再現した結果。

494 :デフォルトの名無しさん:2016/01/21(木) 22:43:31.48 ID:aXQag5k7.net
>>492
で、何を教えて欲しいの?

495 :デフォルトの名無しさん:2016/01/21(木) 23:25:19.95 ID:4xSfWFv3.net
ttp://sim.okawa-denshi.jp/teikokeisan.htm
こちらのサイトの一番上の抵抗分圧の抵抗の組み合わせを抽出するプログラム
をC言語で作りたいのですが、いまいちどういう風に作ったらいいか
わかりません。
このプログラムは与えられたV1とV2からV2に近くなるR1とR2の組み合わせ抽出するというプログラムです。
抵抗分圧の公式はV2=V1*R2/(R1+R2)です。
E24系列というのはRの基本値で、1, 1.2, 1.3・・という決まった値でそれの10倍値や100倍値も存在し、
MAXだと100万倍ぐらいまであります。(1MΩ10MΩ)
R1とR2の全組み合わから一度Voutを計算して、V2と一番近くなる組み合わせをだそう
かと思ったのですが、Rの組み合わせが膨大で現実的ではありません。
なにかいい方法はないでしょうか?

496 :デフォルトの名無しさん:2016/01/22(金) 00:05:58.23 ID:Fkb5gpUk.net
規格の事はよく分からなけれど
理論抵抗比とやらからある程度組合せを選別出来ない?

理論比がR1:R2=3:1としたらR2=1.0(固定)に対してR1=3.0が最も近いのでV2を計算
そしたら次はR2=1.1に対してR1=3.3、R2=1.2に対してR1=3.6と双方左にずれてく

こうやって同じ間隔を空けて組合せを作っていけば保険に前後の値を入れたとしても
精々300通り位で済むんじゃないかな

497 :デフォルトの名無しさん:2016/01/22(金) 00:08:24.15 ID:LSwKLHy0.net
>>495
おもしろそうだと思うんだけど
C言語入門スレで聞くよりも、
宿題すれか、プログラミングのお題スレで
出題として出してみると良いかも

498 :デフォルトの名無しさん:2016/01/22(金) 00:23:42.54 ID:nDBVl/8L.net
>>492
例えばどの仕様をバグを作り込みたい仕様だと思うの?

499 :デフォルトの名無しさん:2016/01/22(金) 00:56:14.38 ID:iy9dE6+2.net
>>495
お題すれで聞いてみますね。

500 :デフォルトの名無しさん:2016/01/22(金) 01:27:11.48 ID:G5rv7JJ3.net
>>495
V2=V1*R2/(R1+R2)
を式変形すると
V1/V2-1=R1/R2
になるから、
1 <= (V1/V2-1)*10^n < 10
となるようにnを選んで、
E24系列を仮定するなら自明な重複を除いて全部で133通りある数値から(V1/V2)*10^nを引いて絶対値を取って、
結果得られる値が小さい順に並べれば良いと思われ。

501 :デフォルトの名無しさん:2016/01/22(金) 02:08:19.69 ID:SkuvTEjs.net
>>498
勝手に暗黙的型変換とか
ifの評価は論理値でなく式にも適用されるとか
色々あると思いますが。

これはコンパイル通らないよね?と思っているのがバンバン通ります。

認識せずコーディングルールだけを盲目的に信じてると潜んでる問題とか分からんので。

502 :デフォルトの名無しさん:2016/01/22(金) 03:17:34.54 ID:nDBVl/8L.net
>>501
ifの評価が式にも適用されてる?勘違いしてるね
Cは式や関数も値を持つって事を意識するだけでいい
暗黙の型変換はコンパイラ次第で防げる

503 :デフォルトの名無しさん:2016/01/22(金) 07:59:14.62 ID:raZVxvb6.net
色々で上げた二つの言いたいことはたぶん大抵の手続き型言語に当てはまると思うんだが
Haskellとかから来た人なの?

504 :デフォルトの名無しさん:2016/01/22(金) 08:05:21.33 ID:zQ4mPetq.net
bool型を別に用意せずintで済ませることで言語仕様を小さく抑えることには有効だったかも知れんが、
今となっては厄介な遺産だな。

505 :デフォルトの名無しさん:2016/01/22(金) 08:29:23.99 ID:sYC1tQRV.net
>>502
ありがとうございます。
>>503
javaからきました。

boolとかもそうですよね。
関数しかないとか、全部関数把握しなきゃいけない。。
コピペしまくることになりそう。

506 :デフォルトの名無しさん:2016/01/22(金) 08:37:05.82 ID:NsaQTY0q.net
なんでも出来るけど、なんでも自分でやらなきゃいけないのがC言語。

507 :デフォルトの名無しさん:2016/01/22(金) 11:29:56.02 ID:tiw7VxmH.net
>>505
ぶっちゃけ 今さらCをやるとなると
プログラマ1年生に戻った気で何もかもやり直しに近いよ

仕事とかでやらなきゃいけないなら
機械語を学んでからCに戻るのが結局近道だよ

508 :デフォルトの名無しさん:2016/01/22(金) 11:50:02.90 ID:QVNa2tJM.net
JavaからならC++でいいじゃん
大して変わらんでしょ

509 :デフォルトの名無しさん:2016/01/22(金) 14:19:59.78 ID:tiw7VxmH.net
あの、警察ですか?
ちょっとスタックに置いといた荷物が
何者かに中身をすり替えられちゃったんですけど

ちょっと〜、何よさっき買った紙コップ
全部ゴミが入ってるじゃないの
ハァ、自分で洗って使え? アタマおかしいんじゃないの?

510 :デフォルトの名無しさん:2016/01/22(金) 14:32:16.34 ID:QVNa2tJM.net
昔からバカとハサミは使いようと言ってな

511 :デフォルトの名無しさん:2016/01/22(金) 16:43:02.27 ID:JjkkXr1A.net
> ifの評価は論理値でなく式にも適用されるとか

これどういう意味?
そもそも論理値なんて概念はCには無いし
単に整数で比較してるだけだろうに

ifの…評価が…式に適用される??

512 :デフォルトの名無しさん:2016/01/22(金) 16:50:07.52 ID:dviPRblt.net
>>511
エスパーすると単に式であればエラーならないことを言っているんだろう

513 :デフォルトの名無しさん:2016/01/22(金) 17:01:31.13 ID:3zzK2PtE.net
憶測
if (a = 1) を文法エラーにして
if (a == 1) と強要したという話だろう

514 :デフォルトの名無しさん:2016/01/22(金) 17:17:22.35 ID:rH3H4J7v.net
そういや
if (1 == a) が推奨みたいな話もあったな

515 :デフォルトの名無しさん:2016/01/22(金) 17:17:38.35 ID:Nk1dYniH.net
javaでも「式にも適用される」わけだがw
単に論理値が存在しない問題を何か勘違いして
式がどうのと言っちゃってる可能性大だな
boolean b = false;
if (b = true) System.out.println("ok");

516 :デフォルトの名無しさん:2016/01/22(金) 17:24:05.70 ID:3zzK2PtE.net
× if (a == 1) と強要したという話だろう
○ if (a == 1) と強要したいという話だろう

>>515
Java vs C の間は、その部分に関して同じだよね

517 :デフォルトの名無しさん:2016/01/22(金) 18:48:47.64 ID:sYC1tQRV.net
すみません。
それはjavaじゃなくてc#でした。

まぁ勉強して仕様大体把握できました。
mainが下に来るのは慣れないっす。
あと、ヘッダにextern書いてボディにも本体書くとか何の意味あるのかとかいまいち分かってません。

518 :デフォルトの名無しさん:2016/01/22(金) 19:12:27.04 ID:papJD+Lz.net
>>517
ならmain上に書けばいいだろ

519 :デフォルトの名無しさん:2016/01/22(金) 19:24:28.02 ID:sYC1tQRV.net
使う関数とか先に宣言してないと駄目じゃない

520 :デフォルトの名無しさん:2016/01/22(金) 19:32:07.01 ID:0g5nn+BU.net
見た目が気に入らないならヘッダに追い出せば良いじゃない

521 :デフォルトの名無しさん:2016/01/22(金) 20:03:36.84 ID:papJD+Lz.net
プロトタイプあるだろ

522 :デフォルトの名無しさん:2016/01/22(金) 20:06:43.86 ID:0StJWjHm.net
ヘッダファイルでexternつきのプロトタイプ宣言をして、
関数の実体のソースファイルでもそのヘッダをインクルードする目的は
ヘッダでのプロトタイプ宣言と実体の定義内容とが一致してることを
コンパイル時にコンパイラにチェックしてもらうためだよ。

やらなくてもコンパイルはできるしプログラムは動作するけど、
やっといた方が間違いを見つけやすいので好ましい。

Javaだとリンク段階でチェックされるのかな?

523 :デフォルトの名無しさん:2016/01/22(金) 22:27:45.45 ID:jTMGJc5I.net
>>501
> これはコンパイル通らないよね?と思っているのがバンバン通ります。
>>517
> それはjavaじゃなくてc#でした。

ふぁっ??

bool b = false;
if (b = true) System.Console.WriteLine(

524 :デフォルトの名無しさん:2016/01/22(金) 22:29:02.87 ID:GDAtUH1+.net
>>522
GCCでLTOを有効にするとリンク時にもチェックしてくれる。他の処理系はシラネ。

525 :デフォルトの名無しさん:2016/01/22(金) 22:29:08.20 ID:kXJvYH2o.net
途中で切れた

);

C#でもコンパイルはバンバン通るわけだが?w
ただwarningが出るだけであってw

526 :デフォルトの名無しさん:2016/01/23(土) 01:33:26.87 ID:VoXQl1Qa.net
Cでも代入がifに入ってると警告出せる
gccとかだとオプションが必要だけど、aliasなりで常につけるようにした方がいい
コンパイラの型警告はかなりしつこくなるけど、全部直した方が安全

527 :デフォルトの名無しさん:2016/01/23(土) 08:06:39.60 ID:hXc+Q7TL.net
K&R読んでたけど、"端から落ちる"って表現がよくわからん。

528 :デフォルトの名無しさん:2016/01/23(土) 10:10:12.38 ID:Tt4ej2Ee.net
>>527
どういう文章?
K&Rなんてもう20年くらい見てないから覚えとらんわw

529 :デフォルトの名無しさん:2016/01/23(土) 10:45:48.36 ID:xqToPitJ.net
javaはソース本体がCでいうヘッダーファイルとしても使えるようになってるのでは

530 :デフォルトの名無しさん:2016/01/23(土) 11:42:45.80 ID:4pLQQZj1.net
この端渡るべからず

531 :デフォルトの名無しさん:2016/01/23(土) 11:45:49.30 ID:wu3iaE45.net
すいません アドレス演算子について教えてください

int a;
printf("%p\n" , a) ;
printf("%p\n" , &a) ;

とした場合、どちらもaのアドレスを表示すると思っていたのですが
違いました

&があるのとないのではどう意味が違うんでしょうか?

532 :デフォルトの名無しさん:2016/01/23(土) 11:51:56.03 ID:BpJ08GBs.net
>>531
そもそもprintfは値として渡された物を書式に従って出力する関数。

aだとaに代入されている値が関数に渡されて、
&aだとaのアドレスが値として関数に渡される。

あるいはもっと切実な話をすると、
aがchar**型だとしたら、aと&aと*aは全部ポインタになるけど
その値は一般的には違う物になるよね。
それを意味論的に分けて考えて表示したい時に、%pが勝手に引数の解釈を変えたら困る。

533 :デフォルトの名無しさん:2016/01/23(土) 13:00:38.15 ID:A3hLtNYo.net
printfで%pを指定したからと言ってアドレスが表示されるわけではない
渡された値をアドレスとして表示してくれるだけ

例のaだけのほうだと、aに入った値をアドレスとして表示しようとする

534 :デフォルトの名無しさん:2016/01/23(土) 14:00:40.07 ID:Lok9lOLd.net
>>531
単にこういうことな
char c = 'a';int i = c;long l = c;
printf("%c %c %c\n", c, i, l);
printf("%d %d %d\n", c, i, l);
printf("%p %p %p\n", c, i, l);
これ実行すると
a a a
97 97 97
0x61 0x61 0x61
%pは「アドレスを表示」じゃなくて「単に16進で表示」の方が近い

535 :デフォルトの名無しさん:2016/01/23(土) 15:41:29.24 ID:wu3iaE45.net
>>532
>>533
>>534

ありがとうございます %p で出力するとアドレスだ出力されるものだと思っていました

536 :デフォルトの名無しさん:2016/01/23(土) 16:00:18.93 ID:TP8lOr4+.net
やべえw
%pとかあるのか、いままでずっと0x%xって書いてたわw

537 :デフォルトの名無しさん:2016/01/23(土) 16:08:11.20 ID:WP4XiwuV.net
>>533-536
%p は16進表示じゃなくてポインタの表示であって、引数に void* 以外渡すと
未定義動作になるから気をつけて使うように。

>>531 で &a を表示してる例も、キャストを入れて (void*)&a とするのが望ましい。
入れなくても動く環境がほとんどだけどね。

538 :デフォルトの名無しさん:2016/01/23(土) 16:16:25.56 ID:0uWz0x3q.net
> 入れなくても動く環境がほとんどだけどね。

入れないと動かない環境一つ以上詳しく。

539 :デフォルトの名無しさん:2016/01/23(土) 16:33:44.22 ID:WP4XiwuV.net
>>538
http://www.kouno.jp/home/c_faq/c5.html#17
> 古いHP 3000シリーズはバイトアドレスとワードアドレスで異なる
> アドレス指定の方法を使っていた。だから同じアドレスを指していても、
> voidとcharのポインターは、intの(構造体なども)ポインターと違った
> 内部表現を持っていた。

540 :デフォルトの名無しさん:2016/01/23(土) 16:36:21.47 ID:iFLpPtX0.net
その古いHP 3000シリーズとやらが
(void*)&a
しないと動かないというソースよろしく

541 :デフォルトの名無しさん:2016/01/23(土) 16:36:22.73 ID:x7wsLJ4u.net
DOSアプリとしてコンパイルするとメモリモデルによって自動で表示変えてくれたりするのかな? > %p

542 :デフォルトの名無しさん:2016/01/23(土) 16:38:17.55 ID:vCzR1C5c.net
DOSアプリって何?

543 :デフォルトの名無しさん:2016/01/23(土) 16:40:56.91 ID:TP8lOr4+.net
>>537
16進でアドレスを表示させたいわけじゃなくて、
ポインタとして意味のある値を表示して欲しいって意味でキャスト無しで%p使うのもダメ?

544 :デフォルトの名無しさん:2016/01/23(土) 16:41:15.39 ID:WP4XiwuV.net
>>540
え?
%p は渡された値を void* として操作するんだから、内部表現の違う int* を渡してたら
正常に動作しないのは当然じゃないの?動くように実装するのは不可能だと思うんだけど。
printf() 実装の中じゃ実引数の型なんかわからないんだし。

545 :デフォルトの名無しさん:2016/01/23(土) 16:44:38.35 ID:ZB4QwEVs.net
>>544
お前がどう思うかを聞いているんじゃない
動かない、の証拠を見せてくれと言っている

> キャストを入れて (void*)&a とするのが望ましい。

これでもいいぞ
これが望ましいとする文献を一つでもひいてこれたら
俺はお前にありがとう勉強になったと言う

546 :デフォルトの名無しさん:2016/01/23(土) 16:45:03.96 ID:WP4XiwuV.net
>>543
厳密には未定義動作。未定義動作だから期待通り動くこともあるし、実際そうなる環境が多い。
>539 のリンク先にあるような稀な環境まで含めて移植性を最大限にすることに価値が無いコードだと
言い切れるならダメということもないと思う。

547 :デフォルトの名無しさん:2016/01/23(土) 16:49:43.47 ID:WP4XiwuV.net
>>545
動かないの証拠は無いかなぁ。 >539 のリンク先にあるような環境も手元に無いし。

文献でいいなら JIS C でどう?
7.19.6.1 fprintf 関数
http://kikakurui.com/x3/X3010-2003-01.html#206
> p
> 実引数は,void へのポインタでなければならない。 ...
...
> ... 実引数の型が対応する変換指定に対して正しくない場合,その動作は,未定義とする。

548 :デフォルトの名無しさん:2016/01/23(土) 16:51:10.11 ID:TP8lOr4+.net
>>546
(void *)以外のポインタを渡したときの動作が厳密には未定義なの?
その渡したポインタ依存の表示になるのではないの?

549 :デフォルトの名無しさん:2016/01/23(土) 16:51:53.95 ID:TP8lOr4+.net
>>547
おお。ごめん理解した。

550 :デフォルトの名無しさん:2016/01/23(土) 16:53:25.62 ID:RFw3K97v.net
> 動かないの証拠は無いかなぁ。 >539 のリンク先にあるような環境も手元に無いし。

おk、もういいよ
証拠もなければ経験も無いのに言ったわけだね
その返答で十分

551 :デフォルトの名無しさん:2016/01/23(土) 17:26:23.05 ID:ACxJywqs.net
まだポインターの概念も理解していない人間がのさばっているのか

552 :デフォルトの名無しさん:2016/01/23(土) 18:38:29.82 ID:A3hLtNYo.net
537みたいな環境のコンパイラだとint*をvoid*にキャストしたときに値を変換するコードを吐くってことなのかな
そんな環境があることも%pの仕様がvoid*のみだということも知らんかったわ

553 :デフォルトの名無しさん:2016/01/23(土) 18:49:57.20 ID:jjYbvGIM.net
また河野さんか。。。

554 :デフォルトの名無しさん:2016/01/23(土) 19:07:09.54 ID:S7jNr+aw.net
バカなの?
規格に〜〜しなければいけないと書いてあるのに、そうしなければ動かない証拠だせとか。

555 :デフォルトの名無しさん:2016/01/23(土) 19:19:20.49 ID:BpJ08GBs.net
>>548
その渡したポインタ依存の表示になる「かもしれない」。
なるからなないかは実装や環境に依存する。

556 :デフォルトの名無しさん:2016/01/23(土) 19:39:16.75 ID:F2GISj/i.net
まだ未定義動作の概念も理解していない人間がのさばっているのか

557 :デフォルトの名無しさん:2016/01/23(土) 19:59:22.37 ID:S7jNr+aw.net
sizeof(int*) == sizeof(void *)は要求されてないから、引数として渡されるデータが足りないかも知れない
sizeof(int*) < sizeof(void*)はワードマシンならばあり得る実装だね

ID:RFw3K97vは理解できましたか?

558 :デフォルトの名無しさん:2016/01/23(土) 20:06:39.55 ID:BpJ08GBs.net
>>556
>>547が言ってる「未定義動作」は
7.19.6.1.9:
If a conversion specification is invalid, the behavior is undefined. If any argument is
not the correct type for the corresponding conversion specification, the behavior is
undefined.
だからundefinedって意味。

そんでもってundefinedの方の未定義動作は、
実行時に予測不可能な値を返しても良いし、コンパイルできなくても良い事になってる。

559 :デフォルトの名無しさん:2016/01/23(土) 20:51:05.74 ID:BlQsRwma.net
printf() の書式指定 %p に関してだけど
対象を (void*) でキャストするべきだってことの理由は
>>544 が十分に説得的だと思うがね。

動かない証拠を示せ(動かない環境の実例を挙げろ)って
要求はそもそも筋が違うんじゃないかと。
もちろん、筋違いだいうことを証明しろと言われても無理だが。

560 :デフォルトの名無しさん:2016/01/23(土) 21:08:46.46 ID:WP4XiwuV.net
>>558
>>547が言ってる「未定義動作」は」も「undefinedの方の未定義動作は」も、同じだよね?
undefined behavior = 未定義動作で、意味はそれしか無いと思ってるんだけど、どういうこと?

561 :デフォルトの名無しさん:2016/01/24(日) 04:56:33.25 ID:f7pzKq0s.net
柴田望洋とかいう人の明解C言語実践編とか読んでるけど切れそう。

結論がどこに書かれてるのか分からないから、見出しから全部読まされる。

562 :デフォルトの名無しさん:2016/01/24(日) 09:49:52.46 ID:YuSBWhfF.net
アセンブラやってりゃ内部でどんな処理してるか予想するぐらいは容易なんだがなぁ。

563 :デフォルトの名無しさん:2016/01/24(日) 12:07:54.26 ID:QohUoDbS.net
C言語とかオワコン
今時ネットワークもデータベースもGUIも扱わない言語とか意味ない
組込みで使われているとかいったってメーカーは未来がないの明らかだし
オシロスコープとか半田ごてとか使ったデバッグなんか電子工学専門のやつがやった方がいい
教育関係者が時代の流れに付いていけてないからいつまでもC言語なんていう化石言語にしがみついてるけど
教育関係者の既得権益のためだけに存在しているだけのゴミ言語

564 :デフォルトの名無しさん:2016/01/24(日) 12:21:04.02 ID:4ZCEMBL4.net
http://builder.japan.zdnet.com/script/sp_c-programming-language/20370255/

565 :デフォルトの名無しさん:2016/01/24(日) 12:36:00.08 ID:aa7cqZRy.net
>>563
お前がしがみついてるLLもCかC++で記述されてるわけだが。
バカな愚民はそれが上位者から与えられたものだと理解できない。

566 :デフォルトの名無しさん:2016/01/24(日) 12:38:54.71 ID:U2BkwJ1U.net
C言語は実用一辺倒の

567 :デフォルトの名無しさん:2016/01/24(日) 12:42:22.16 ID:U2BkwJ1U.net
C言語は実用一辺倒の言語だから抽象的な概念を扱うのは苦手
教育分野ならLisp系のScalaとかふさわしい言語はいくらでもある

568 :デフォルトの名無しさん:2016/01/24(日) 12:48:42.17 ID:4ZCEMBL4.net
scala よりも clojure のほうが

569 :デフォルトの名無しさん:2016/01/24(日) 12:50:33.40 ID:EtsnNE6e.net
SchemeやHaskellならわかるけど何故にScalaを挙げた?
マルチパラダイムではあるけどLispというよりはむしろJavaの方が近いだろ

570 :デフォルトの名無しさん:2016/01/24(日) 13:24:55.26 ID:I3hxJf04.net
教育用ということでStandardMLを大学の授業でやってたけど興味が持てなかったわ

571 :デフォルトの名無しさん:2016/01/24(日) 16:09:16.89 ID:6rvYTtSN.net
ウェブブラウザほど、ぶざまなソフトウェアは無い。あんなソフトウェアを人前にだすなといいたい。
もっとキビキビうごくべきだ。ウェブブラウザがつかってるJavaScriptこそ愚劣。愚鈍の元凶だ

572 :デフォルトの名無しさん:2016/01/25(月) 20:35:56.38 ID:zf+nEsaX.net
IE<ゴメンネ

573 :571:2016/01/25(月) 21:25:15.10 ID:5o1dXGqO.net
C言語初級者です。2つのソースコードについて質問があります。
『C言語 ポインタ完全制覇』をWin上のVirtualBox+Linuxで
勉強しています。
ソースは以下です。
http://ideone.com/o2lB7o
http://ideone.com/sHvkH9

1つ目は可変長引数の関数を作りました。
Segmentation Faultとなります。

2つ目はクイックソートのプログラムです。
こちらもSegmentation Faultとなります。
2つ目のプログラムではint型の配列から
char型の配列への変換の仕方もわかっていません。

どなたかご教授お願いします。

574 :デフォルトの名無しさん:2016/01/25(月) 21:34:12.68 ID:MTh5r7jR.net
>>573
1つ目:!=を=!って書いてる
2つ目:right_index--とするべきところで++してる

575 :571:2016/01/25(月) 22:01:44.56 ID:5o1dXGqO.net
>>574
お返事ありがとうございます。すぐ理解されるなんて
上級者のかたなのですね。

1つ目は上手くいきました。ありがとうございました。

2つ目は572さんの言うところが間違っていたので
書き換えたのですが、まだsegmentation faultとしか
でません。

よろしくおねがいします

576 :デフォルトの名無しさん:2016/01/25(月) 22:16:42.89 ID:rVrFKv/m.net
1か所しか書き換えなかったんじゃないの
++してるとこ2か所あるでしょ
あとprintfしてるのがローカル変数のアドレスになってるけど見たいのは中身でしょ
http://ideone.com/bFJWLb

577 :デフォルトの名無しさん:2016/01/25(月) 22:59:52.22 ID:MTh5r7jR.net
物凄くどうでもいいけど
(left+right)/2
よりは
left+(right-left)/2
と書くべきだよね。

これによる影響が出るのが普通じゃないケースだから本当にどうでもいいんだけど。

578 :デフォルトの名無しさん:2016/01/25(月) 23:36:59.55 ID:xvjEE6gT.net
>>577
その違いって、何?

579 :デフォルトの名無しさん:2016/01/25(月) 23:49:02.61 ID:MTh5r7jR.net
>>578
ただの足し算だとキャリーオーバーフローする可能性がある。
その結果を2で割るとleftやrightより小さな値が得られる。

後者ではその可能性は排除される。

580 :571:2016/01/25(月) 23:55:08.32 ID:5o1dXGqO.net
>>576さん
ありがとうございました。
全て問題は解決しました。

初心者なのでまた質問させていただくと思います
よろしくおねがいします。

581 :デフォルトの名無しさん:2016/01/26(火) 00:03:34.55 ID:DpSNwlQs.net
なるほど。そういうことですね。

思ったんですが、そういう桁あふれの可能性は
コンパイラがうまく処理してくれるようにはならないんでしょうか?
そういうのは、仕様とにらめっこしているプログラマの役割なんですかね?

582 :デフォルトの名無しさん:2016/01/26(火) 02:05:23.41 ID:U8DjCw8X.net
C言語では符号付き整数のオーバーフローは未定義
未定義動作はコンパイラが都合がいいように解釈して、場合によっては素敵なバイナリを作ってくれる
ttp://cpplover.blogspot.jp/2014/06/old-new-thing.html

583 :デフォルトの名無しさん:2016/01/26(火) 04:29:12.69 ID:en75rJef.net
ひょえぇ1関数2000行あるぅ、、

584 :デフォルトの名無しさん:2016/01/26(火) 10:20:39.55 ID:8FYVyjVA.net
ふえぇgotoだらけぇ

585 :デフォルトの名無しさん:2016/01/26(火) 17:25:27.08 ID:eKv0VZf+.net
マクロ駆使して別言語化してるし…

586 :デフォルトの名無しさん:2016/01/27(水) 14:07:39.32 ID:Pto6ddp0.net
すみません。また質問です。2つのソースコードについて質問があります。
『C言語 ポインタ完全制覇』をWin上のVirtualBox+Linuxで
勉強しています。
ソースは以下です。

http://ideone.com/0eMgIK
http://ideone.com/Hc67Hc

1つ目はコンパイルできますが、英文ファイルを引数に
しても何も動作しません。

2つ目はとても基本的なことでしょうが、理解できてません。;;

ご教授よろしくお願いします。

587 :デフォルトの名無しさん:2016/01/27(水) 14:23:17.95 ID:YnVB9WDG.net
>586
一つ目は標準入出力から得たデータをbuf配列へ入れていくプログラム。
実行後、キボードから適当に入力してCLTR+Zを入力してみてください。


2つ目は
bb=int_to_str(a);
でエラー出てる。

char bb[20];

char *bb;
とするか

bb=int_to_str(a);

strcpy(bb,int_to_str(a));
とする。

588 :デフォルトの名無しさん:2016/01/29(金) 00:31:39.68 ID:A8Omu85i.net
質問ッス!
(1) シフト演算子(「>>」や「<<」)は、右辺が0でもいいんでしたっけ;
(2) C標準ライブラリのmemcpy()やmemmove()は、第3引数が(size_t)0でもいいんでしたっけ;;

589 :デフォルトの名無しさん:2016/01/29(金) 07:48:10.41 ID:HI9V2WVT.net
(1) OK : 0 ビットシフト = ビットシフトしない と評価される

590 :デフォルトの名無しさん:2016/01/29(金) 08:30:27.04 ID:iWXq7w4x.net
っけ;;
0除算はいいんですか?

591 :デフォルトの名無しさん:2016/01/29(金) 09:04:35.48 ID:uNLw2+tE.net
>>590
未定義

592 :デフォルトの名無しさん:2016/01/29(金) 11:43:57.01 ID:/5mJkDc7.net
(2)も問題ない

593 :デフォルトの名無しさん:2016/01/29(金) 11:58:13.04 ID:HI9V2WVT.net
右シフトを除算と等価とみなしてる?
nビット右シフト <-> 2のn乗で割る

2の0乗は1だから定義可能な算術だ

594 :デフォルトの名無しさん:2016/01/29(金) 12:13:53.55 ID:x/sxD8ME.net
右シフトが論理右シフトになるか算術右シフトになるかって未規定だっけ?
どうだっけ。

595 :デフォルトの名無しさん:2016/01/29(金) 12:15:34.69 ID:HI9V2WVT.net
算術シフトか論理シフトかは、、、処理系依存だっけ、、、か?

596 :デフォルトの名無しさん:2016/01/29(金) 12:22:51.29 ID:x/sxD8ME.net
処理系依存だった。
6.5.7.5:
The result of E1 >> E2 is E1 right-shifted E2 bit positions. If E1 has an unsigned type
or if E1 has a signed type and a nonnegative value, the value of the result is the integral
part of the quotient of E1 / 2 E2 . If E1 has a signed type and a negative value, the
resulting value is implementation-defined.
要約:符号付き型で負の数の場合、右シフトの結果は処理系依存だよ!

597 :デフォルトの名無しさん:2016/01/29(金) 21:16:45.63 ID:WT7mu4Na.net
ファイルを開いて何行あるか調べるためにEOFまで読んで
SEEK_SETで最初に戻してランダムに行の文字列を取ってくるようにしたのですが
私のPCでは問題無く動くんですが、EOFまで読んだファイルって
EOFになった情報がセットされるとかどっかで見ました
これって他のPCだと変な動作になる可能性ありますか?

598 :デフォルトの名無しさん:2016/01/29(金) 22:57:18.71 ID:Hpd/92hj.net
>>596
mjd!!?

算術シフトが無いCPUでもsigned intの演算速度を落とさせないための配慮なんだろうか、、、

599 :デフォルトの名無しさん:2016/01/29(金) 23:58:28.04 ID:wSlTo5Cq.net
C言語作ったやつが適当だったからだろ

600 :デフォルトの名無しさん:2016/01/30(土) 00:19:44.01 ID:ilOv8EKS.net
charに符号がついてるかどうかも不明だったっけ

601 :デフォルトの名無しさん:2016/01/30(土) 00:42:27.57 ID:HpDJFp9+.net
>>600
確かにcharがsignedかunsignedかは処理系依存
ただし、表示可能な文字は正、とだけは決まってゐる
ハズ

602 :デフォルトの名無しさん:2016/01/30(土) 02:27:08.09 ID:xES4tsnw.net
unsigned 以外はシフト不可にしておけばよかったんや

603 :デフォルトの名無しさん:2016/01/30(土) 08:38:59.28 ID:AurOqJPw.net
>>597
fseek() 関数の機能としてEOF状態の解除が含まれてるはず。

おかしな状態になったら「ライブラリがバグってやがる」と
文句を言えるくらいに大丈夫、だと思う。

604 :デフォルトの名無しさん:2016/01/30(土) 09:26:10.22 ID:6qZO0/Pj.net
>>602
算術シフトとは

605 :デフォルトの名無しさん:2016/01/30(土) 17:39:19.09 ID:ECbFIrJa.net
>>603
それを聞いて安心しました!
ありがとうございます

606 :584:2016/01/30(土) 18:29:33.42 ID:G92s9ZB+.net
>>587
レスありがとうございます。2つ目は上手くいきました。

ただ1つ目の方はまだうまくいきません。
実は本には、9行目はchar型ではなく、int型と書いてありました。
勝手にこれは、誤りだとおもってchar型に変えました。

http://ideone.com/0eMgIK

どなたかご指導お願いします

607 :デフォルトの名無しさん:2016/01/30(土) 18:34:17.83 ID:eSJs9CE4.net
EOF と比較する場合 char で受けちゃだめで int じゃないと意図通りとまらない

608 :デフォルトの名無しさん:2016/01/30(土) 18:43:08.27 ID:1awzzRNN.net
>>606
int 型のままでいい,ファイルの終わりと文字'0xff' との区別をつけるため http://codepad.org/c50zWkLt

標準入力をキーボードにとるのがうまくいかない場合は,
プログラムの実行ファイルを a.exe,適当な英文ファイルを test.txt とした場合,
a.exe < test.txt
と入力してみるといい

609 :デフォルトの名無しさん:2016/01/30(土) 18:49:48.14 ID:nIpvaiJY.net
>>608
%Sじゃなくて%s

610 :584:2016/01/30(土) 19:12:36.18 ID:G92s9ZB+.net
みなさんレスありがとうございます

>>608
なぜか単語5個の英文で、それをやると、
<<<<<
と出力され、”数”が出力されません。
実行環境がWin+VW+Linuxなのがまずいのでしょうかね。

611 :607:2016/01/30(土) 19:21:19.88 ID:nIpvaiJY.net
安価ミスってた
>>606あて

>>610
printf("<%S>\n" , buf);じゃなくて
printf("<%s>\n" , buf);
書式が間違ってるから表示されない

612 :デフォルトの名無しさん:2016/01/30(土) 20:37:01.86 ID:72muWdcr.net
C言語なんていうオワコン言語で文字列処理なんかやるからそうなる

613 :584:2016/01/30(土) 20:42:23.97 ID:G92s9ZB+.net
みなさんありがとうございました
上手くいきました! sとSの違いでした…;;

614 :584:2016/01/30(土) 21:59:08.91 ID:G92s9ZB+.net
>>612
敢えて低級言語勉強してますW
pythonがねらい目なのはわかってるつもりです。

615 :デフォルトの名無しさん:2016/01/30(土) 22:03:11.56 ID:FCZ73JzI.net
pythonもCで書かれてますが
この事実は・・・

616 :デフォルトの名無しさん:2016/01/30(土) 22:07:01.98 ID:XFryV8Mc.net
>>615
ドライバーも鉄鋼製品だから製鉄やるべきって理屈?

617 :デフォルトの名無しさん:2016/01/30(土) 22:21:58.32 ID:FCZ73JzI.net
オワコンとかいってるのはなぜ
python一式ががpythonでかけるのけ

618 :デフォルトの名無しさん:2016/01/30(土) 22:24:26.51 ID:6Po/ckh8.net
マクロでポリモーフィズム楽しいな。

619 :デフォルトの名無しさん:2016/01/30(土) 22:28:56.89 ID:I8QYzQc6.net
昔「マイコン技術はオワコン」とか言って叩かれた奴がいたらしい。

620 :デフォルトの名無しさん:2016/01/30(土) 22:30:48.96 ID:FCZ73JzI.net
やり始めの頃は自分の世界だけで判断するから、しょうがないかもね
そういう時期は誰でもあるから

621 :デフォルトの名無しさん:2016/01/30(土) 22:51:15.62 ID:WPy6oV1/.net
pypyは一切C含んでないんだっけ?
C#とかはほとんどC#で書かれてるけど、一部Cを呼ぶんだよね
ソース追ってってexternに来ると面倒でしょうがない

622 :デフォルトの名無しさん:2016/01/30(土) 22:55:39.46 ID:CogBGL7b.net
C#のほうがよりC言語使ってない。
PyPyのほうがC言語に近いだろ。

623 :デフォルトの名無しさん:2016/01/30(土) 23:11:34.52 ID:1jV8LkZN.net
今回みたいに低レベル用と知って勉強するなら問題ないでしょ
問題はなんとなく王道言語だと思って来る人で

624 :デフォルトの名無しさん:2016/01/30(土) 23:56:20.96 ID:72muWdcr.net
C言語使ってるからC言語学ぶべきとか
じゃあアセンブラ使ってるからアセンブラ学ぶべき
機械語使ってるから機械語使うべき
電子回路使ってるから電子回路使うべき
半田ごてつかってるから半田ごて使うべきになるのかよ
半田このやろう

625 :デフォルトの名無しさん:2016/01/31(日) 00:23:34.54 ID:zJ6m2KtS.net
オワコンとかいってるから、おちょくられてるだけなのに
別に必要ないなら使わなくてもいいんだよ

C#くん 呼んじゃったし

626 :デフォルトの名無しさん:2016/01/31(日) 11:31:50.43 ID:0VTupv6x.net
>>624
> 機械語使ってるから機械語使うべき
ここから意味不明になってるぞ

627 :デフォルトの名無しさん:2016/01/31(日) 13:23:49.81 ID:OtXGSzkV.net
半田このやろう が言いたかっただけでしょ

628 :デフォルトの名無しさん:2016/01/31(日) 14:12:40.40 ID:iwDB+Nos.net
最終的な振る舞いに影響するんだから
べきで言うのなら電子回路まで学ぶべきだな
電子回路を手で作りたいわけじゃないからはんだごては学ばんでもいい

629 :デフォルトの名無しさん:2016/01/31(日) 14:28:15.08 ID:a4GTRLT5.net
単結晶の生成当たりから学ぼう

630 :デフォルトの名無しさん:2016/01/31(日) 14:42:25.63 ID:m2D4t7R9.net
マジな話、デジタル回路は知っておいたほうがいい
デバイスドライバみたいなものを書くのが楽になるし
プログラムが普通にできる奴ならすぐ理解できる程度の難易度
アナログ的な特性とか、それより下位のレイヤーは、
プログラミングにはあんまり関係ないし、
難易度が一気にあがる

631 :デフォルトの名無しさん:2016/01/31(日) 14:50:34.96 ID:9arms57E.net
>>629
Ga-As合金なんて無かったんや・・・・・・

632 :デフォルトの名無しさん:2016/01/31(日) 20:19:44.80 ID:efxfc/YX.net
低レベルな部分にこだわってるから応用ソフトの分野で主導権が握られへんねや
C言語なんていうオワコン言語に今更時間とエネルギーを費やす価値はない

633 :デフォルトの名無しさん:2016/01/31(日) 20:29:35.57 ID:zJ6m2KtS.net
どうして楽してできるようになったのか
知らないみたいだね

634 :デフォルトの名無しさん:2016/01/31(日) 20:30:03.12 ID:1GkI/C5F.net
オワコン連呼してちょっかい出してくる奴の滑稽なこと
(貴方視点で)終わってるなら、そっとしといてくれや

635 :デフォルトの名無しさん:2016/01/31(日) 20:41:14.25 ID:GpQ4uNr/.net
>632
君はなんでそんなに苦しがってるの?
そんな投稿で何かが変わるの?
ここで呻いてもどうしようもないよ。
何が原因なのか、どうなったら解決できるのか、そこを考えよう。

636 :デフォルトの名無しさん:2016/01/31(日) 21:08:46.51 ID:qHH5NNfa.net
>>632
ならスレみなきゃいいのに

637 :デフォルトの名無しさん:2016/01/31(日) 22:18:14.90 ID:iwDB+Nos.net
>>632
ぜひともそのレスをする時間とエネルギーに関しても費やす価値が無いことに気が付いてほしい

638 :デフォルトの名無しさん:2016/01/31(日) 22:44:33.90 ID:8GI8e/FD.net
>>632
大脳だけでは生命維持できないが、脳幹が無事なら生命維持だけはできる。

639 :デフォルトの名無しさん:2016/01/31(日) 22:54:50.92 ID:eL72H0FT.net
「低レベル」が何に聞こえるかは、PGの適性かもね
「歪み」を何と読むかで、理系頭か文系頭かがわかるように

640 :デフォルトの名無しさん:2016/02/01(月) 00:04:00.65 ID:dRJvSEmL.net
第一応用ソフトの分野でどうやってアメリカと戦うんだよ
変に頑張って特定のソフトで日本国内オンリーでシェアが上がったらガラパゴス化するだろ
PC98とか一太郎とか

641 :デフォルトの名無しさん:2016/02/01(月) 00:27:29.46 ID:Jui80FAm.net
この文脈で低レベルをハード寄り的な意味以外にとらえる人はいないだろう

642 :デフォルトの名無しさん:2016/02/01(月) 06:12:40.67 ID:ZBzDFClp.net
この文脈での低レベルの意味を勘違いする
低レベルな人がいるんでないの?

すまん、上の文は言葉遊びだ。読み流してくれ。

643 :デフォルトの名無しさん:2016/02/01(月) 20:27:50.33 ID:aq9Mx2ga.net
mallocで作ったメモリーは解放しなくてもプログラムが終われば解放されるけれど、プログラムが終わる前に開放したいときだけfreeを使うという理解であってますか?

644 :デフォルトの名無しさん:2016/02/01(月) 20:46:21.44 ID:rMTqXsJZ.net
>>643
mallocで獲得した領域を開放したいときにfreeを使う。それ以上の意味はない

645 :デフォルトの名無しさん:2016/02/01(月) 21:06:15.74 ID:gmWomOLn.net
プログラムが終われば必ず解放←OSが決めたルール
malloc したら必ず解放 ← プログラマが守るべきルール

646 :デフォルトの名無しさん:2016/02/01(月) 21:11:25.81 ID:tIibSl+X.net
大筋では同意するけど、atexit まで面倒はみたくない

647 :デフォルトの名無しさん:2016/02/01(月) 21:13:05.58 ID:L4FPlr7p.net
どうせOSが開放してくれるからとfreeしないでおいて
いろんな修正が入った後でfreeが必要になったけど入れ忘れてメモリリークしてて後から困れ

648 :デフォルトの名無しさん:2016/02/01(月) 22:37:46.45 ID:6f/LcOay.net
Win98時代に1万回ぐらい連続でmallocやったら(1回1kバイト程度確保)mallocが失敗したのを見て
メモリ確保は出来るだけまとめてやって、使い終わったら必ず開放するのを心がけるようになった。

649 :デフォルトの名無しさん:2016/02/01(月) 23:20:57.92 ID:dRJvSEmL.net
俺のメモリ管理なんて超適当だぜ
VirtualAllocで4メガぐらいガバっと確保して
allocが有るたびに前から順番に渡していくだけ
再利用はしないし、フリーリストの管理もない
4メガ使い切ったら新しく4メガ確保
4メガのメモリブロックがどこからも参照されなくなったらVirtualFree
歯抜けになっても再利用しないし開放も出来ないのでメモリ効率が悪い
その代わり確保も開放もめちゃくちゃ早い
allocはメモリブロック使用量変数をサイズ分増やすのと参照カウンタを上げるだけ
freeは参照カウンタを下げるだけ
Interlocked系関数を上手く使うことでマルチスレッドでも同期処理無しで動く

650 :デフォルトの名無しさん:2016/02/02(火) 09:01:12.29 ID:E+FKouYL.net
mallocでいいじゃんと思うけど、windowsだとそういう自前mallocが有効なのかねえ

651 :デフォルトの名無しさん:2016/02/02(火) 12:54:02.26 ID:WkrnCzmR.net
Windows 関係ない
バカがオレオレ malloc サイコー
ってドヤってるだけ

652 :デフォルトの名無しさん:2016/02/02(火) 17:23:23.85 ID:rX0rX7Nf.net
そこまでやってるならいいほうでは

653 :デフォルトの名無しさん:2016/02/02(火) 17:36:01.74 ID:Ip2iNyid.net
visual c++でC言語プログラミングしています。
ある時刻になればひっそりと実行して勝手に終了するプログラムをCで作りたい
んですが可能でしょうか?

具体的には15:00になったら
Cフォルダにあるnumber.txtに1という文字を追加していくプログラムです。

654 :デフォルトの名無しさん:2016/02/02(火) 17:41:55.68 ID:7f7wf/mW.net
可能

655 :デフォルトの名無しさん:2016/02/02(火) 17:44:32.20 ID:MWyXjmPG.net
タスクスケジューラ 使い方 でぐぐる先生に聞く

656 :デフォルトの名無しさん:2016/02/02(火) 20:23:56.83 ID:2Sj5nBMP.net
・指定時刻になったらタスクを起動する
という部分はOSの機能 >>655 を使うのが楽だと思うけど

仮にいちいち自作すると
 ・UIの隠し方と終了方法をどうするのか
で余計な手間がかかる。日をまたぐならさらに
 ・OS再起動後も継続する
ってことでいいんかな。やっぱりいちいち作りたくないな

657 :デフォルトの名無しさん:2016/02/02(火) 21:41:26.58 ID:ucpE/ELv.net
プログラムの起動直後にVsyncあたりのタイマ割込みを乗っ取って、
定期動作させたい部分にフック。
定期動作に不要な初期化なんかのメモリを解放して終了。

こんな感じだっけね。

658 :デフォルトの名無しさん:2016/02/02(火) 22:06:47.69 ID:yOFSQOe0.net
>>653
そんなプログラム作ったとして何の役に立つとよ?

659 :デフォルトの名無しさん:2016/02/02(火) 22:19:25.76 ID:7S2eAgvu.net
なんしよっとか、きさん。くらさるっぞ!

660 :デフォルトの名無しさん:2016/02/02(火) 22:55:07.53 ID:+n78UQ/o.net
ほんなこつ

661 :デフォルトの名無しさん:2016/02/02(火) 23:36:40.20 ID:7S2eAgvu.net
オワコンC言語技術者はオシロスコープと半田ごての使い方でも研究してろw

662 :デフォルトの名無しさん:2016/02/03(水) 00:40:12.39 ID:ayAcYB0t.net
引きこもりはち○この弄り方でも研究してろ>661

663 :デフォルトの名無しさん:2016/02/03(水) 00:46:37.03 ID:7nc06kA4.net
組み込み系でもやらされてるのかな オワコン先生は

664 :デフォルトの名無しさん:2016/02/03(水) 02:00:07.63 ID:ZY8+tRrg.net
Cは仲間を呼んだ!
Rubyが現れた!Pythonが現れた!PHPが現れた!Perlが現れた!Javaが現れた!Awkが(ry
魔王オワコンは困惑している!
オシロスコープはにげだした!半田ごてはにげだした!

665 :デフォルトの名無しさん:2016/02/03(水) 07:24:42.47 ID:FAarDA2D.net
>>645
バカ発見

666 :デフォルトの名無しさん:2016/02/03(水) 18:28:26.63 ID:6g6gbrY0.net
>>656
すいません。
本当はキーロガーを作りたいんです。
クライアント管理ソフトみたいなの作りたくて
キーログってその基本じゃないですか?
タスクスケジューラだと時間指定だから
条件発動できないじゃないですか
どうすればいいですかね?

667 :デフォルトの名無しさん:2016/02/03(水) 19:08:39.32 ID:ySPeAyr8.net
>>666
Cで作る作らないの前にOSのAPIだと思うけど

668 :デフォルトの名無しさん:2016/02/03(水) 19:55:26.21 ID:5VKefHqD.net
>>666
ウィルス(マルウェア)になりうるからな…

669 :片山博文MZ ◆T6xkBnTXz7B0 :2016/02/03(水) 20:57:30.85 ID:PDk33kNH.net
キーロガー作りたいなら匿名でやれ。管理の甘い海外サーバ経由でな。
半端な出来だと経歴に傷が付くぞ。

670 :デフォルトの名無しさん:2016/02/03(水) 21:13:10.96 ID:ycDP2Q2/.net
>>666
> タスクスケジューラだと時間指定だから
> 条件発動できないじゃないですか
はあ?
テメーが
> ある時刻になればひっそりと実行して…
> 具体的には15:00になったら…
つったんだろうが

671 :デフォルトの名無しさん:2016/02/03(水) 21:41:12.92 ID:u1wZgCbu.net
int main(void) {
  while(1) {
    if(ishour15()) {
      execute_keylogger();
    }
    sleep(1);
  }
}

672 :デフォルトの名無しさん:2016/02/04(木) 11:06:24.14 ID:GZ4dZRgg.net
__VA_ARGS__って・・・の場所に書いたものがが__VA_ARGS_の場所に_置くだけの気がするんですけど、これの何が凄いんですか?
普通のマクロのaに書いたものがaに置くのと同じじゃないですか?

673 :デフォルトの名無しさん:2016/02/04(木) 11:19:47.94 ID:xESoReV8.net
#define FOO1(a) printf(a)
FOO1("%d\n", 1)
とやると プリプロセッサの引数の数が不一致でエラーになる

#define FOO2(a) printf a
FOO2(("%d\n", 1))
と括弧込みで展開するのは一つの手だけど
 printf ("%d\n", 1)
   ~~~~~~~~~~~~~ ここが引数の部分
printf から fprintf  に変えつつ 出力先を stderr にってな場合にはどうしようもない
それが
#define FOO3(...) fprintf(stderr, __VA_ARGS__)
FOO3("%d\n", 1)
こう書けるようになっておいしい

674 :デフォルトの名無しさん:2016/02/04(木) 11:35:48.93 ID:GZ4dZRgg.net
わかりました。
コンマが関係なくなるという意味があったんですね。
ありがとうございます。

675 :デフォルトの名無しさん:2016/02/04(木) 22:45:13.78 ID:R19753iM.net
ほぼ、c#とvisual studioしか使わないゆとりですが、c言語って関数の引数とか変数の型とか分からないのでしょうか?
そういうエディタがありますか?

毎回調べてすぐ忘れてマジしんどいです。

676 :デフォルトの名無しさん:2016/02/04(木) 22:57:12.63 ID:KJLuK0Ig.net
eclipse環境だとどうなんだろう

677 :デフォルトの名無しさん:2016/02/04(木) 23:38:13.73 ID:+Y8C24ZP.net
>>675
VisualStudioが一番
他のIDEでもだいたい出せるし、エディタでも特に高機能なやつならプラグインがあったりする

678 :デフォルトの名無しさん:2016/02/05(金) 09:20:03.09 ID:jtmJ9DAX.net
型だけじゃなく簡易でよいので仮引数名も出て欲しいのが qsort
1要素のサイズと要素数の順をすぐ忘れる

679 :デフォルトの名無しさん:2016/02/05(金) 17:25:23.00 ID:Zl3yCQ2Q.net
マクロをつかって名前付き引数が使えるようになったみたいだけれどマクロではそいう言うのは使えないな。

680 :デフォルトの名無しさん:2016/02/05(金) 17:47:46.22 ID:o3yfcjVc.net
ググる先生に教えてもらう

681 :デフォルトの名無しさん:2016/02/05(金) 18:26:23.00 ID:ZPivzzR9.net
EclipseならF3でヘッダーの定義箇所にジャンプする機能があるが、
それじゃ駄目なのか?

682 :デフォルトの名無しさん:2016/02/05(金) 22:23:27.03 ID:2THMBE2E.net
>>669
キーロガーとサーバーと
何の関係が有るんですか?

683 :デフォルトの名無しさん:2016/02/06(土) 15:07:33.66 ID:D7PR4EVc.net
やりたいことに疑問を持たない?オレオレ路鳥師

684 :デフォルトの名無しさん:2016/02/06(土) 15:19:41.91 ID:ZpLAymRq.net
>>682
すぐにデータが欲しいとか、ターゲット側に証拠を残したくない場合に
サーバで記録する

685 :デフォルトの名無しさん:2016/02/06(土) 17:37:29.90 ID:Yx87UQ8j.net
>>683
路鳥師という言葉は初見なんだけど、
もしかして縦書き表示の2ちゃんねるビュア用の倍角強調表現かな。

686 :デフォルトの名無しさん:2016/02/06(土) 18:04:52.37 ID:4STRQeN+.net
鷺,か

687 :デフォルトの名無しさん:2016/02/06(土) 18:05:10.48 ID:qkAA7xMq.net
C言言五口

688 :デフォルトの名無しさん:2016/02/06(土) 22:07:21.64 ID:CLV5WMIc.net
2つ質問よろしくお願います。環境はWin+VW+Linuxです

1つ目は配列の数値を表現するプログラムです
コンパイルして、実行して数値を打っても何も動きません
http://ideone.com/XEZ1eX

2つ目は標準入力としてファイルを読み、それを出力する
プログラムです。3つのソースで動きます。
こちらもコンパイルできたのですが、ファイルを引数に
実行しても動きません。
http://ideone.com/3MfVZt
http://ideone.com/QwE5qg
http://ideone.com/CgnTBA


よろしくお願いします。

689 :デフォルトの名無しさん:2016/02/06(土) 22:51:15.89 ID:JenVg3C/.net
>>688
とりあえず一つ目はwhileをどうやったら抜けるのか分からない
入力無しでEnterしても改行は必ず入るよ

690 :デフォルトの名無しさん:2016/02/06(土) 23:11:17.26 ID:G9N4zA90.net
Control-D でいいんじゃ?

691 :デフォルトの名無しさん:2016/02/07(日) 09:13:38.83 ID:ihWrHU4l.net
いま

Javaとc言語 勉強してますが c++は
かなり違いますか??

692 :デフォルトの名無しさん:2016/02/07(日) 09:28:03.47 ID:eIUfmNby.net
ふつうは、こうかんがえる
Javaは、オブジェクト指向だから、Javaでかいたら、C++にかきなおしやすい
Javaは、グローバル変数がないため、(#defineもない)さきにCでかいたら、Javaにかきなおすのは、たいへんかもしれない

693 :デフォルトの名無しさん:2016/02/07(日) 10:19:19.12 ID:7OAFDS8O.net
CよりC++勉強したほうがいいって本当ですか?
順次・分岐・反復に関してはどのプログラミングも共通(gotoは除く)
なのでライブラリが分かりにくいC++のほうが頭使うからとの事です。
Cは標準ライブラリだけで単純すぎる気がします。

694 :デフォルトの名無しさん:2016/02/07(日) 10:26:40.95 ID:HPtrUBPy.net
Cの概念が完全に理解できてからでもいいよ。
Cが理解できないとそもそもC++が理解できない。
ライブラリ使いながら学ぶタイプの人間ならC++からでも問題はないかも知れないが。

695 :デフォルトの名無しさん:2016/02/07(日) 10:59:31.20 ID:jvYVRZ1r.net
JavaとCを並行でやるって悪い所取りの最悪手

696 :デフォルトの名無しさん:2016/02/07(日) 11:02:11.78 ID:ADbKW/eV.net
cやってからJavaとc++やったほうがいい

697 :デフォルトの名無しさん:2016/02/07(日) 11:20:01.84 ID:YehISXuU.net
>>693
> なのでライブラリが分かりにくいC++のほうが頭使うからとの事です。
認知症の予防にはいいんじゃね?

698 :デフォルトの名無しさん:2016/02/07(日) 12:14:33.18 ID:pDArDbnY.net
c#でいいだろ。
c#のパクリ言語のjavaなんてやる必要ないし、
c++の構文引き継いでるc#の方がやりやすい。

699 :デフォルトの名無しさん:2016/02/07(日) 13:54:07.48 ID:5D2B2THM.net
>>688
どちらのプログラムもstdin「標準入力」からデータを読んでいる。
標準入力は通常、キーボードからの入力を受け入れる。

キーボードから標準入力に入力する場合、
データの終わりは Ctrl + D (Ctrlキーを押しながらDキー、Shiftは不要) を押す。
これが >>690 の教えてくれたことの意味。
ちなみに Ctrl + D で入力終了はLinux(Unix)の場合。
DOSやWindowsだと Ctrl + Z (画面には ^Z と表示される)の後に Enter、
だったと思うがちょっと自信がない。


ここまでを踏まえて2番目の質問。
このプログラムはファイル内容を読むようには作られていない。
標準入力から読んで画面に、より正確にはstdout「標準出力」に出力する。
ファイルから読ませたい場合は、標準入力の切り替え(リダイレクト機能)を使う。
具体的には下行のような感じ。
$ prog < file.txt
< file.txt で「標準入力をキーボードでなく file.txt に切り替えろ」という意味。


ファイル名を指定して内容を表示するプログラム、つまり
$ prog file.txt
のような使い方をするプログラムを作る場合は

1. 最初に(ファイル名を指定して)ファイルを開く
2. ついでファイルを読む
3. 最後にファイルを閉じる

という手順になる。
とりあえず、こんな説明で分かるだろうか。

700 :デフォルトの名無しさん:2016/02/07(日) 18:35:20.16 ID:EGgUv7/G.net
文字列操作関数strcpyについて
strcpy(a,b);
aは変化しますが
bはどうなるんですか?

701 :デフォルトの名無しさん:2016/02/07(日) 19:01:54.58 ID:6NGyEHk4.net
>>700
constなので変わりません

702 :デフォルトの名無しさん:2016/02/07(日) 19:44:42.95 ID:HPtrUBPy.net
strcpyの引数って逆のほうが直感的な気がするんだけど、俺だけかな。

strcpy("from", to);

703 :デフォルトの名無しさん:2016/02/07(日) 19:49:44.53 ID:fu54F6yL.net
>>702
貴様が生まれてくる前から copy destination source の順に決まっている

704 :デフォルトの名無しさん:2016/02/07(日) 20:14:36.67 ID:ZO1JcykC.net
上司命令でJava屋の私がCをやることになった。
先輩にデバッグしやすように#ifなどのプリプロセッサをガンガン使うように
指示された。
確かにデバッグはしやすくなったが、コードが読み辛くてたまらん。
使わないとおこられるし。
Cやってる人は、みなさん、#ifなどのプリプロセッサをガンガン使うのでしょうか?

705 :デフォルトの名無しさん:2016/02/07(日) 20:19:47.87 ID:jvYVRZ1r.net
読みやすさを求めるならCなんか使うな

で終わる話

せいぜい気の利いたエディタを探して色付けをマシにするくらいかな
昔そのプロジェクト専用の grep を自作したのを思い出した(関数名や条件コンテキスト付随)

706 :デフォルトの名無しさん:2016/02/07(日) 20:36:38.57 ID:pDArDbnY.net
使うなと言われても仕事ですし。
そもそもなんでその手のプロじゃない人材を平気で投入するんだろう。
あんま詳しくないから勉強期間くれと言っても、速攻でぶちこむし。
中途半端な知識でやらされて、手が止まって無駄な時間ばっか使うわ。

707 :デフォルトの名無しさん:2016/02/07(日) 20:51:12.39 ID:ADbKW/eV.net
エディタなりIDEなりの設定で乗り切る案件じゃないかなぁ
Cで何をしたいのかにもよると思うけど、低レベル開発なら選択肢ないからなぁ

708 :デフォルトの名無しさん:2016/02/07(日) 20:52:33.07 ID:oPkfyoq8.net
ガンガン使う、って程じゃないなぁ、プリプロセッサ
デバッグ目的ならデバッガ使う方が良いんじゃ?

709 :デフォルトの名無しさん:2016/02/07(日) 20:59:20.86 ID:ol9Dn32y.net
#if を使うとデバッグがしやすくなるってのはまずわかんない。
なんで? いくつものバリエーションを盛り込んだものをソースファイルひとつで作るって事?

自分は「デバッグをしやすくするために」 #if とかは使わないなぁ。

710 :デフォルトの名無しさん:2016/02/07(日) 21:02:12.26 ID:ZO1JcykC.net
>>709
正確にはデバッグではなくて、テスト用に使う、でした。

711 :デフォルトの名無しさん:2016/02/07(日) 21:10:45.20 ID:YehISXuU.net
>>702
そこら辺は趣味の領域だから、半分くらいの人には違和感あると思う

712 :デフォルトの名無しさん:2016/02/07(日) 21:15:31.15 ID:pDArDbnY.net
NULLとnullの違いってなんですか?

713 :片山博文MZ ◆T6xkBnTXz7B0 :2016/02/07(日) 21:18:38.79 ID:6NGyEHk4.net
>>712
C言語には大文字小文字の区別がある。
ヌルポインタを表すならNULLが正しい。

714 :デフォルトの名無しさん:2016/02/07(日) 21:29:37.55 ID:c0FtLi6S.net
>>713
ありがとうございます。

http://www.nurs.or.jp/~sug/soft/super/hash.htm
ここなんですけどね、
nullを使おうとすると未宣言だといわれるし、

char *getValue()
char * searchList()
とか、アスタの位置の位置とか色々分からんです。
これって*charを返すように見えるんだけど???

715 :片山博文MZ ◆T6xkBnTXz7B0 :2016/02/07(日) 21:34:56.73 ID:6NGyEHk4.net
>>714
とりあえず#include <stdlib.h>を上の方に追加だ。これでNULLが使える。
アスタリスクの前後のスペースには文法上の意味はない。

716 :デフォルトの名無しさん:2016/02/07(日) 21:41:04.10 ID:pDArDbnY.net
>>715
大文字は使えるんですが小文字が使えんです。
ただのタイポですかね。

717 :デフォルトの名無しさん:2016/02/07(日) 23:09:44.17 ID:g0b3K00o.net
そこ メタなCで記述してるだけじゃない?
null を NULL で読み替えられるぐらいの知識はある前提でいろいろ書いてるっぽい雰囲気

718 :デフォルトの名無しさん:2016/02/08(月) 00:20:54.72 ID:8lnEEOYD.net
そのサイト「C言語の中級テクニックを中心に解説する」って書いてあるぞ
入門なら別のところへ

719 :デフォルトの名無しさん:2016/02/08(月) 07:01:07.43 ID:YRs2z8LN.net
nullはNULLのタイポだろうね。
こういう間違いをCプログラムの専門家の間では「nullポ」と呼ぶんだ(高峰風)。

これから改良をほどこすサンプル、素朴なコード片の紹介部分だから
実際にコンパイラにかけてみてないだけだと思う。

720 :デフォルトの名無しさん:2016/02/08(月) 07:17:40.35 ID:ujXDy4GQ.net
ハッシュテーブルってスーパーテクニックだったのかあ

721 :デフォルトの名無しさん:2016/02/08(月) 09:32:42.28 ID:Mf5/oJdG.net
ちなみに独習するとnullをヌルって読む癖付けちゃう奴多いけどナルだからな
ドイツ語由来だからヌルだよとか言い出す馬鹿もいるけど、コンピューターサイエンスは英語読みが原則

722 :デフォルトの名無しさん:2016/02/08(月) 10:44:14.20 ID:ljIIu1xu.net
ハッシュとか知らない人が多かった80年台
というか まだ汗が主流な頃

723 :デフォルトの名無しさん:2016/02/08(月) 11:34:46.39 ID:M0j0fnEJ.net
90年代だって知らん
まだ16bitが生き残ってる頃

724 :デフォルトの名無しさん:2016/02/08(月) 12:33:37.32 ID:+mZ+QTsE.net
会社見学でプログラマの現場見てきたんだが
上司と思われる人物が社員に対して「おいトイレに行くでもないのに
何回も立つな」って注意してたんだけど、その社員は背伸びしたかったらしい
プログラマって音立てたり立ったらだめなの?

こういう現場ってホワイトとはいえないでしょうか?
将来C言語で組み込みやりたいと思ってる僕が恐怖を感じた瞬間でした

725 :デフォルトの名無しさん:2016/02/08(月) 16:56:21.91 ID:3QcKIDeA.net
その人が普段バグばっかりだして迷惑ばかりかけている人だったらそういう扱いになるよ
せめて他人の仕事の邪魔だけはするなってね
逆にバグも少なくて他の人の2倍3倍の生産性が有って他人のコードのバグ探しも素早い
優秀な人材だったら自由奔放にしていても何も言われないと思うよ
ソフトウェアの世界は人によって2倍3倍生産性が違うのは全然普通のこと
ひとたびバグを出せばそれを特定するのに、コードを書く以上に時間がかかるからね
一つのバグをつぶすのに丸一日費やすとかは普通にあり得る
だからバグを出さない人は重宝されて、バグを頻繁に出す人は冷や飯食わされる
つまり君次第だね

726 :デフォルトの名無しさん:2016/02/08(月) 19:40:36.78 ID:ujXDy4GQ.net
>>722
昭和の老害はTAOCPすら学んで無いのか?

727 :デフォルトの名無しさん:2016/02/08(月) 20:25:14.41 ID:2IUcNUml.net
>>722
むしろその頃に仕事でやってた人はそう言うアルゴリズムの教育受けてたり実装してたりするから、ハッシュとかソートの基礎知識を持ってたりする

728 :デフォルトの名無しさん:2016/02/08(月) 20:41:19.19 ID:YRs2z8LN.net
80年代のプログラマと言っても、
仕事や研究機関でコンピュータサイエンスの教育を受けた人と、
ホビーマイコンを我流でいじってた連中とはまるで違うでしょ。

>>722 は後者を指してるんじゃないかと。
自分もそのクチ(ホビー我流)なんで実感として分かる。
というか身につまされる。

729 :デフォルトの名無しさん:2016/02/08(月) 21:49:51.51 ID:UKgal17Z.net
>>724
まあね
バグってるプログラムや基板の相手する仕事ってのは、
バグってる人間の相手もせにゃならんわけで
それを怖がる人にはちょっと無理かなあ

730 :デフォルトの名無しさん:2016/02/08(月) 22:04:05.70 ID:YQ0+a64D.net
c言語ってテストコードとか書かないんです?
今まではテストで結果を証明してたので、
そこを修整する根拠を示せと言われて困ってる。

731 :デフォルトの名無しさん:2016/02/08(月) 22:07:29.62 ID:rZ+1cXkY.net
用もなく何度も立ったり座ったりすんなよ。
ガキじゃないんだから。
周りの人の集中を妨げるだろ。
お前一人の職場じゃないってことを忘れるなよ。

732 :デフォルトの名無しさん:2016/02/08(月) 22:14:27.07 ID:ZIKWtfui.net
>>730
assertデバッグはいいぞ

733 :デフォルトの名無しさん:2016/02/08(月) 23:01:46.07 ID:UpNzBg5k.net
#if〜#endifもあるしな
テスト専用フレームワークとか作らずとも、直に
#if 0 /*単体テスト*/
/*テスト内容のコメント*/
(テスト用コード)
#endif
でだいたいおk

#if 1にしっぱなしにするリスクはソースコードのコミット前に「単体テスト」でググればワカル

734 :デフォルトの名無しさん:2016/02/09(火) 00:32:46.53 ID:XhrCkHez.net
【ワカヤマン】C言語プログラミング能力認定試験 [無断転載禁止](c)2ch.net
http://hanabi.2ch.net/test/read.cgi/lic/1454165737/

735 :デフォルトの名無しさん:2016/02/09(火) 10:17:28.87 ID:zKyrJnIK.net
>>730
大原則:人間がやれば済むことは人間様が手間をかけてやる

それをおかしいと思うならCを使うべきかどうか見なおすべき

736 :デフォルトの名無しさん:2016/02/09(火) 10:29:35.29 ID:VIyyoieF.net
>>730
書くよ
ひたすらテストコード書くバイトしてたことある

737 :デフォルトの名無しさん:2016/02/09(火) 12:53:23.12 ID:zDhnJS+H.net
テストにCだからとかXXXだからとかないし

738 :デフォルトの名無しさん:2016/02/09(火) 17:44:09.56 ID:CN4QadC3.net
C と XXX とを並べてくるとは、お主できるな。
そこにテストがどう関わってるか読めんけど。

739 :デフォルトの名無しさん:2016/02/09(火) 18:04:09.58 ID:fDhCvDiz.net
まぁ後発のXXXはライブラリも安定してるから多少はテストがラクかもね
それでもテストは必要

740 :デフォルトの名無しさん:2016/02/09(火) 20:49:45.71 ID:EWOJwJ1N.net
安定してる
って、お脳が不安定な方が作業されてるんですか

741 :686:2016/02/09(火) 23:37:25.74 ID:5G8kNDfr.net
>>699
どうもありがとうございました!
2番目の方は完璧に動きました。標準入力とファイルの
扱い方を忘れていました。


ただ1番目の単純な方が想定通りにうごきません;
http://ideone.com/XEZ1eX

下のような結果になります。
Input array size
15
variable_array[0]..15

配列に値を入れていくはずですが、どこがおかしいのでしょうか?
どなたかお教えくれないでしょうか?

742 :デフォルトの名無しさん:2016/02/09(火) 23:50:57.70 ID:3EOr0/Uo.net
Input array sizeは書き間違いだと思ってたが
15は配列のサイズを意図してる?

今回は15とだけ入力したのでサイズ1のvariable_array={15}
ができた訳だけど

743 :デフォルトの名無しさん:2016/02/09(火) 23:51:50.92 ID:3EOr0/Uo.net
スマン訂正
サイズ1→要素数1

744 :デフォルトの名無しさん:2016/02/09(火) 23:52:27.27 ID:XKhjKgOy.net
>>730
普通に書くけど?

745 :デフォルトの名無しさん:2016/02/10(水) 06:21:24.12 ID:AJuMr8NV.net
>>741
11行 "Input array size" 「配列の要素数を入れろ」と
14-19行 データ入力ループの実際の動作が食い違ってるんだよ。

14-19行の仕組みだと、数値を任意の個数(EOFまで)入力させて
数値を1個入れるたびに(動的に確保された)配列の要素数を増やしている。
結果として、配列の要素数は入力された数値の個数になる。

11行で表示される通りの動作にしたいなら、
最初に数値を1個だけ入力させて、その値の要素数を持つ配列を確保。
入力ループは配列要素数の回数だけ回す。

746 :デフォルトの名無しさん:2016/02/10(水) 09:19:50.49 ID:2Jj9x+f9.net
250 名前:スッキリ厨[sage] 投稿日:2016/02/10(水) 06:03:33.68 ID:WrIiP8cs
中年のCプログラマーなんか、頭が固く、
皆オブジェクト指向に挫折して、Cの手続き型から抜け出せないw

さらに恐ろしい事実を告げると、Java8ではStreamという、
関数型まで採用されてしまったのだ

今や手続き型の老害は、死ぬのみw

747 :デフォルトの名無しさん:2016/02/10(水) 09:27:45.82 ID:OtzvJZiD.net
最近は「30代の老害社員」 が増えてるみたいだねぇ。

748 :デフォルトの名無しさん:2016/02/10(水) 10:58:40.58 ID:nNZFJpww.net
C言語使いこなせるレベルならオブジェクト指向なんてすぐ理解出来るだろ。

749 :デフォルトの名無しさん:2016/02/10(水) 11:19:56.25 ID:+WwN5s4F.net
抽象的な概念を苦手とする人は多いよ
特に低レベル開発者
実際の挙動が見えづらくなるからね
でもそういう人は抽象化を必要としてなかったりするから問題にはならない

750 :デフォルトの名無しさん:2016/02/10(水) 17:13:13.46 ID:+sMp0qjD.net
苦手っつーか、彼らからしたら無意味な議論に感じるんだろう
目の前に実際に動くディバイスが有って、それの制御を書いているような人からしたら
猫と犬は動物クラスで、猫はニャー、犬はワン、と鳴く、などといった
下らない思考パズルや言葉遊びの類に興味を持てないのも仕方ない
彼らからしたらLEDが光ってモーターが回る方が断然面白いだろう

751 :デフォルトの名無しさん:2016/02/10(水) 18:51:36.60 ID:OnEbfKeK.net
>>748
概念なので、とまどう奴はいる
ただし例えば仮想関数はC言語だとこんな実装になるよ〜
ってやってやると、なんだ前からやってるやん
ってスパッと理解してくれる

752 :デフォルトの名無しさん:2016/02/10(水) 19:20:29.28 ID:nNZFJpww.net
OOPは下手に構えずに、特定の機能つまみ食いするくらいの気持ちで始めてもいいんじゃないかね。
カプセル化や記述をシンプルにする目的でC++を選ぶ人もいるわけだし。

// C
StringFromAnimal(animal)
// C++
animal.toString();

753 :デフォルトの名無しさん:2016/02/10(水) 21:53:09.57 ID:QBsTk/Mz.net
2番目と3番目のやり方(意味は同じ?)で配列の要素数が取れないのは、引数が配列の先頭要素を指しているからですか?
配列の変数は先頭の要素を指すものだと見た記憶があるのですが、1番目となにが違うのかよく分かっていません。
ttp://ideone.com/JM7Zwb

これを配列の要素数を取れるように直すにはどうすればいいのでしょうか。
すみません、お願いします。

754 :686:2016/02/10(水) 22:24:39.12 ID:Trt5lCpB.net
>>745
ありがとうございました。C言語復帰者なので、至らないところ
だらけです。”Input Some values” とすればよかったのですね。
743さんの予想通りに動きました。

いかせん、現在読んでる書物が中級以上なので、丁寧な説明が
少なくて困っていました。

755 :デフォルトの名無しさん:2016/02/10(水) 23:11:21.01 ID:eRJ6+i7X.net
戻り値で返すんじゃなくて、中でなんかされんの慣れない。

756 :デフォルトの名無しさん:2016/02/11(木) 00:19:28.48 ID:sTXI2tGn.net
CプログマラーにとってFILE構造体あたりがオブジェクト指向のHello World!であるはずだ

757 :デフォルトの名無しさん:2016/02/11(木) 06:50:31.44 ID:L8ovqpUs.net
>>753
関数の引数として渡された配列名は、自動的に配列の先頭要素へのポインタに変換される。
配列とポインタに関してよく見かける説明文だと思うが、これに引っかかってる。

int Count(int arr[]);
int Count2(int *arr);
2つの関数は仮引数の表現(arr[], *arr)は違うが、まったく同じということ。
どちらの arr も int *arr (int型変数へのポインタ)として扱われる。

これにより、関数の返り値 sizeof(arr) / sizeof(int) の意味は、
どちらの関数でも sizeof(int*) / sizeof(int) である。
「int型ポインタを格納するのに要するメモリサイズと、intの値を格納するのに要する
メモリサイズの比」という、あまり意味のない値を計算しているのだ。


で、呼び出された関数の側で、引数の配列に含まれる要素数を知る方法。
配列の要素数は、自動的には関数に渡されないので、
「関数の引数として配列の要素数も与える」のが一般的。

extern int func(int arr[], int elems); /* 外部関数の場合 */

int main() {
 int array[10];
 int result;

 result = func(array, sizeof(array)/sizeof(array[0]));
}


(注意) sizeof() は関数でなく演算子。
sizeof(array) のarrayはポインタには変換されないので
期待通り array[10] のバイト数が得られる。

758 :デフォルトの名無しさん:2016/02/11(木) 10:22:05.46 ID:OZhLkZUr.net
残念!sizeofが返す値はバイト数ではないのだ

759 :デフォルトの名無しさん:2016/02/11(木) 10:44:16.18 ID:6rujyZn/.net
厨房です

どの言語から始めたらいいと思いますか?

プログラムの{ぜ}の字も分かりません

760 :デフォルトの名無しさん:2016/02/11(木) 10:58:01.51 ID:vxNioHuU.net
>>758
The sizeof operator yields the size (in bytes) of its operand,
which may be an expression or the parenthesized name of a type.

761 :デフォルトの名無しさん:2016/02/11(木) 11:38:39.58 ID:Otx75HG3.net
>>731
座ってたら死亡率上がるんですが
立つことを注意する人間は殺人未遂として訴えてもいいんですよ

762 :デフォルトの名無しさん:2016/02/11(木) 12:55:31.56 ID:L8ovqpUs.net
>>758 >>760
sizeof() で返るのはバイト数で合ってるよね。
記憶だけで書いたから調べ直しちゃったよ。

それはそれとして、
「sizeof()が返すのはバイト数ではない」
→ じゃ正しくは何を返すのかも書いてくれよ、小出しにして焦らすなよ。
と感じるのは俺だけの特異な反応だろうか。

763 :デフォルトの名無しさん:2016/02/11(木) 13:13:52.42 ID:vxNioHuU.net
>>762
残念sizeof()では無い。sizeof。
>>760に書いてあるだろ。

764 :デフォルトの名無しさん:2016/02/11(木) 15:11:20.84 ID:5LqHbRm/.net
>>762
不思議に思うかもしれないけどsizeofは演算子なんだよ

765 :デフォルトの名無しさん:2016/02/11(木) 15:14:27.14 ID:2zWchetY.net
>>763
必ず return() って書く人なんだろ
いちいち絡むなよ

766 :デフォルトの名無しさん:2016/02/11(木) 15:32:32.65 ID:FeJdCYca.net
(charが12 bitだったりしたらどうなるんだ…

767 :755:2016/02/11(木) 15:54:12.00 ID:L8ovqpUs.net
>>763
おお、確かに演算子はsizeofで、必ずしも sizeof() とカッコで囲む必要はないね。
型名でバイト数を取りたいときにカッコで囲む必要があるんだっけ。
ご指摘の通り。しかも回答側 >>757 で間違ってるんだからより悪質だった。

size_t bytes;

int a = 3;
bytes = sizeof a; // ok
bytes = sizeof 3; // ok

bytes = sizeof int; // error!
bytes = sizeof(int); // ok


>>765
return にカッコをつけない派です。
retrun とタイポする癖があるんでコンパイラにチェックしてもらってる。

768 :デフォルトの名無しさん:2016/02/11(木) 16:40:16.73 ID:1NCRSvef.net
>>766
バイトは 8bit とは限らない
https://ja.m.wikipedia.org/wiki/%E3%82%AA%E3%82%AF%E3%83%86%E3%83%83%E3%83%88_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)

769 :デフォルトの名無しさん:2016/02/11(木) 17:58:20.12 ID:OZhLkZUr.net
残念!8ビットと決まってないだけだった
(´・ω・`)Cのsizeof(char)=1とC#のchar2バイトが頭の中で混ざって間違えて覚えてたごめんね

770 :デフォルトの名無しさん:2016/02/11(木) 18:07:19.37 ID:FNR4nKd2.net
>>769 うむ、許す
   ||
 Λ||Λ
( / ⌒ヽ
 | |   |
 ∪ 亅|
  | | |
  ∪∪
   :
   :

 ‐ニ三ニ‐

771 :デフォルトの名無しさん:2016/02/11(木) 18:39:15.40 ID:+Uw2l5tW.net
そもそも型名ではなんでカッコ必須なんだろう
どっかで曖昧が生じるのかと思って前調べたけどわからなかった気がする
むしろ変数とかリテラルのほうがかっこつけたほうがわかりやすいのに

772 :デフォルトの名無しさん:2016/02/11(木) 18:50:42.45 ID:OZhLkZUr.net
他人のソースでsizeof unsigned intって書かれてて
gccとvcどちらかで通って片方でエラーになってた事があった思い出

773 :デフォルトの名無しさん:2016/02/11(木) 19:20:29.00 ID:L8ovqpUs.net
この投稿は個人の感想・推測なので明確な根拠はないと、あらかじめ注意しておく。

sizeof は演算子だから基本的にはカッコは不要って考え方は納得いく。
関数と見間違えるとか、Cの「最小タイピング主義」とか。

型名でカッコが必要なのは、ポインタ関係じゃなかろうか。
sizeof char * と書けると sizeof(char) * か sizeof(char*) か曖昧になる。
後に続く内容で曖昧さが解消されるかもしれないが、
曖昧さを抱えたまま式を解釈するコンパイラを作るのが大変とか。

774 :751:2016/02/11(木) 20:04:21.09 ID:iLJD0Fnb.net
>>757
お礼が遅くなりましてすみません。
詳しく教えていただきありがとうございます。

>配列の要素数は、自動的には関数に渡されないので、
>「関数の引数として配列の要素数も与える」のが一般的。
参考書では要素数を仮引数に与えていたことを思い出しました。
なぜそのような面倒なやり方をしているのか合点がいきました。

また、sizeof関数に関するみなさんのレスも読ませていただきました。
勉強になりました、ありがとうございます。

775 :デフォルトの名無しさん:2016/02/11(木) 20:07:24.55 ID:iLJD0Fnb.net
すみません、sizeofは演算子なんですね
失礼しました

776 :デフォルトの名無しさん:2016/02/11(木) 23:42:50.29 ID:GKHUTBEj.net
ポインタの勉強しています。
関数へのポインタで躓いています。
本に以下のように書いてありますが、中身が読み取れません。
どなたか、簡単な例でおしえてくださらないでしょうか?

”関数は、式の中では「関数へのポインタ」に自動的に
変換される。ただし、アドレス演算子&のオペランド
であるときと,sizeof演算子のオペランドのときは例外
である”

”関数呼び出し演算子()は「関数」ではなく「関数への
ポインタ」をオペランドとする。”

777 :デフォルトの名無しさん:2016/02/12(金) 02:03:53.33 ID:bwdIAcv4.net
式は結合の優先順位を考えると確定はできるだろうけど
byte a;
sizeof a + 10
とか
sizeof(byte)+10
みたいに書かれてたらなにが返ってくるのか調べただけだと不安で実行してみちゃうわ
極めて非合理的な仕様だと思う

778 :デフォルトの名無しさん:2016/02/12(金) 02:11:20.26 ID:bwdIAcv4.net
>>776
初心者のうちはあんまり気にしなくていい
配列のとこでも同じようなことが書いてあると思うけど、C言語特有の適当に仕様を決めて、後で見たらなんか変だったパターンのやつだ

関数ポインタは(*f)()とかしなくてもf()で呼べるとこだけ覚えとけ
あとは、sizeofとか&とか、(f+1)()みたいな不自然なことをせざるを得なくなった時に改めて細かい仕様を調査するのがいい

779 :デフォルトの名無しさん:2016/02/12(金) 02:29:04.53 ID:e+FqND6X.net
>>776
void func(){} という関数があったとして、
&func, func の値はどちらも同じ関数へのポインタ。
printf(“%p %p", &func, func);

func(); このfuncは関数へのポインタ。
これでも呼べる。
(&func)();

780 :デフォルトの名無しさん:2016/02/12(金) 09:25:22.36 ID:OTNNkTev.net
関数も変数もメモリに割り当てられてて
その開始アドレスをポインタ変数に格納することで
ポインタ変数経由で変数の中身を読み書きしたり
関数を呼び出したりできるというだけのこおと

781 :デフォルトの名無しさん:2016/02/12(金) 09:28:38.34 ID:dKyYxY1Q.net
「関数呼び出し演算子()」とか言ってるからC++じゃねーの?

782 :デフォルトの名無しさん:2016/02/12(金) 13:05:19.83 ID:LK6Hhi/I.net
>>776
実際のところ >>778 の言う通り、細かいことを気にしないのが良い。
「ソースを書くときに直感的かつ楽チンに書けるように仕様を定めたら、
仕様書の方がえらく複雑になっちゃった」という、いかにもCらしいお話の結果だ。

あえて説明するなら下のような意味かな。
……これは自信がないので詳しい人の添削を求む。

#include <stdio.h>

static int func(int arg) {
 printf("関数 %s() が引数 %d で呼ばれた\n", __func__, arg);
 return arg;
}

int main()
{
 int (*pfunc)(int arg); /* pfunc: 関数へのポインタを格納する変数 */

 pfunc = func; /* (1) */
 pfunc = &func; /* (1') */

 pfunc(200); /* (2) */
 (*pfunc)(201); /* (2') */
 func(300); /* (3) */

 return 0;
}

(改行多過ぎエラーが出たのでつづく)

783 :780:2016/02/12(金) 13:05:58.13 ID:LK6Hhi/I.net
( >>782 のつづき )

「関数は、式の中では『関数へのポインタ』に自動的に変換される」
(1)のように書ける、ということ

「アドレス演算子&のオペランドであるときは例外」
(1')のように書いても(1)と同じ意味、ということ

「sizeof演算子のオペランドのときは例外」
これはどういう意味だろう?

「関数呼び出し演算子()は『関数』ではなく『関数へのポインタ』をオペランドとする」
(2)のように書いて関数を呼び出せること
(2')のような書き方をする必要はない(書いても同じように動作するけど)ということ

最後に、普通の関数の呼び出し(3)は「まずfuncが関数へのポインタに自動的に変換され、
次いで変換結果である関数へのポインタに対して関数呼び出し演算子()が作用する」
てな具合に動作しているのだ。理屈の上では。

784 :デフォルトの名無しさん:2016/02/12(金) 13:39:13.89 ID:nnsHRM/E.net
>>783
>「sizeof演算子のオペランドのときは例外」
>これはどういう意味だろう?

sizeof(func)
↑これがエラーになるというだけ
『関数へのポインタ』に自動的に変換されるならsizeof(pfunc)と同じになる

785 :774:2016/02/13(土) 13:53:58.42 ID:NQaIiq8o.net
みなさん、だいたい内容を掴めました。
とくに>>782さんのご説明でわかりました。
コピペして自分のPCに保存しています。

すみません、配列とポインタでもう一つ質問があります。
1 hoge[][]
2 **hoge
3 *hoge[]
4 (*hoge)[]

1と2は同じ中身ですよね?
3と4の違いは分かります。
それでは1,2,3,4の関係はどうなってるのでしょうか?
1と2が同じで、3と4はそれぞれ別物と考えてよいのでしょうか?

786 :デフォルトの名無しさん:2016/02/13(土) 13:59:40.77 ID:sJF7YOqD.net
自分からするとどうでもいいな。コンパイラで試せ。
確実に理解してない仕組みは不要に使わなくていい。
使うとき勉強、実験したらいい。

787 :デフォルトの名無しさん:2016/02/13(土) 15:09:54.02 ID:fIKntVXI.net
ややこしい時は struct 一回挟む
ポインタの配列 struct foo1 { type *pointer; } array[num];
配列のポインタ struct foo2 { type array[num]; } *pointer;

788 :デフォルトの名無しさん:2016/02/14(日) 03:42:01.75 ID:2H7lNMsF.net
ポインタの宣言の読み方はK&R本に行き届いた説明があった気がするが…

1. int hoge[1][2] は int (hoge[1])[2]の意味で、hoge[0]はint型の2要素の配列を表す(sizeof(hoge[0]) == 値はsizeof(int) * 2
hogeそのものはint型の2要素の配列の配列
2. int **hogeはint *(*hoge)の意味で、*hogeはint型へのポインタ(int*)へのポインタを表す(sizeof(*hoge) == sizeof(int*)
hogeそのものはint型を指すポインタ(int*)を指すポインタ
3. int *hoge[2]はint *(hoge[2])の意味で、hoge[0]はint型へのポインタ(int*)を表す(sizeof(hoge[0]) == sizeof(int*)
hogeそのものはint型を指すポインタ(int*)の配列
4. int (*hoge)[2]はこれ以外書き様が無く、*hogeはint型の2要素の配列を表す(sizeof(*hoge) == sizeof(int) * 2
hogeそのものはint型の2要素の配列を指すポインタ

1と4、2と3がそれぞれ同じような意味だが、1と3はhogeそのものが配列、2と4はhogeそのものはポインタという違いがあり、
hogeそのものの値の変更は(hogeがポインタである)2と4のみでできる、

789 :デフォルトの名無しさん:2016/02/14(日) 03:50:28.95 ID:2H7lNMsF.net
スマン訂正orz
誤: 2. int **hogeはint *(*hoge)の意味で、*hogeはint型へのポインタ(int*)へのポインタを表す(sizeof(*hoge) == sizeof(int*)
正: 2. int **hogeはint *(*hoge)の意味で、*hogeはint型を指すポインタ(int*)を表す(sizeof(*hoge) == sizeof(int*)

790 :デフォルトの名無しさん:2016/02/14(日) 21:37:48.99 ID:fEjJVis1.net
C言語とか完全にオワコン
未だにコンソールでmakeとか打ってんのか
世間はmakeとか卒業してant, maven, gradleと新しいツールに移行してんのに
オシロスコープと半田ごてでオナニーかよw
組込みとかネットワークもDBもGUIも使わない
バージョン管理システムはCVSですかwせいぜいSVNだろうなwww
世の中はgitに以降してるのにどうしようもねえよプルリとか分かんねえんだろうな
オブジェクト指向、アスペクト思考、依存性の注入とか新しい概念がいっぱい出て来てるのに
手続き型に引きこもってたらこれから日本のメーカーが衰退して組込みの仕事がなくなるのは確実なのにどうすんのよ
C言語なんか週末勉強会なんか全く開かれないし転職サイトでC言語で募集してる記事なんか皆無やぞ
教育関係者が時代の変化に付いていけてなくてC言語しか教えられないから残ってるだけ
オワコンにしがみつくゴミはパチンコ開発でもやってろ

791 :デフォルトの名無しさん:2016/02/14(日) 21:48:24.80 ID:kQeVlKcr.net
今って各種言語のメインのコンパイラ制作もC以外の言語に移ってるの?

792 :デフォルトの名無しさん:2016/02/14(日) 22:37:05.06 ID:7PLx3+xa.net
>>791
C#とVBは数年がかりで移した
VCから流用してたのが使えなくなるのと追加でいろんな機能をもたせようとしたのが辛いのかかなり苦戦した
やっと目的を達成して今後はC#でかけるから楽だし、構文木とか推論とかもAPIとして公開できて夢広がりんぐ

793 :デフォルトの名無しさん:2016/02/14(日) 23:32:26.49 ID:AznglxFt.net
【ワカヤマン】C言語プログラミング能力認定試験 [無断転載禁止](c)2ch.net
http://hanabi.2ch.net/test/read.cgi/lic/1454165737/

794 :デフォルトの名無しさん:2016/02/15(月) 09:06:12.56 ID:9ExsxeaN.net
話通じてない奴は無理に答えなくてもいいのに

795 :デフォルトの名無しさん:2016/02/15(月) 10:10:20.74 ID:E84Q1jzs.net
>>790
それ、大部分がC以外で書かれたOSから書いてるんだろうな?
なんていうOS?

796 :デフォルトの名無しさん:2016/02/15(月) 11:07:44.59 ID:FLuEFg6M.net
OSやドライバー必須な言語だけ残ってもねぇ。

797 :デフォルトの名無しさん:2016/02/15(月) 12:43:13.36 ID:9wbMWgsx.net
じゃあおまえはコンパイラやOSを開発する仕事についてんのかって
そんなのごく一部だろう

798 :デフォルトの名無しさん:2016/02/15(月) 13:18:03.18 ID:wecJul4I.net
Cすら知らないでプログラマを自称しちゃうとか笑える〜www

799 :デフォルトの名無しさん:2016/02/15(月) 13:19:42.26 ID:9ExsxeaN.net
道具なんてなに使ったっていいだろ
人様にケチつける前にスレ違い発言をどうにかしろよ

800 :デフォルトの名無しさん:2016/02/15(月) 13:24:14.87 ID:g+W5jzDi.net
スレチかもしれませんが、専スレがどこにもなさそうなのでここでお尋ねします。

clangでopeomp使おうとビルドしてみたんですが、実行すると
スレッド数がOMP_NUM_THREADSに関わらず常に1になってしまいます。
コードはGCC5.2では正常に動きます。
こういうとき何を調べたらいいでしょうか?
OSはCentOS6.7で、llvm、clang、openmpはすべて3.7です。

801 :デフォルトの名無しさん:2016/02/15(月) 15:32:38.96 ID:cEyJtxrN.net
>>800
コンパイルオプションや警告が出てれば全部貼ったほうがいいよ

802 :デフォルトの名無しさん:2016/02/15(月) 16:01:00.10 ID:g+W5jzDi.net
>>801
そうですね、失礼しました。
スマホからだと書くのがきついので、帰宅後にPCから書き込みます。

803 :デフォルトの名無しさん:2016/02/15(月) 17:31:04.58 ID:g+W5jzDi.net
解決しました。
clang -fopenmp a.c とすべきところを
clang -lomp a.c としたり
clang -openmp a.c としたりアホなことやっていたのが原因でした。
スレ汚しすみませんでした。

なお、llvm一式のビルドには
CentOS6.7標準のgcc 4.4.7は古すぎて
駄目だろうと思ったので、自前でビルドしたgcc 5.2を用いました。

804 :デフォルトの名無しさん:2016/02/15(月) 18:05:51.07 ID:2DOX1wmD.net
>797
なんだ、ただ多数派か少数派かだけで優劣語る判断能力の欠如した情弱か。

805 :デフォルトの名無しさん:2016/02/15(月) 18:15:13.82 ID:AZNjQN5i.net
組み込み系はC言語がつかわれているって聞きましたが
例えば電化製品の電源ONや、温度のボタンなどはscanf()関数が
担っているんでしょうか?

806 :デフォルトの名無しさん:2016/02/15(月) 19:32:21.14 ID:4oQTQyhg.net
そういうのに標準入出力の printf や scanf はまず使わないだろう
もしかしたら、コンパイラの都合でそもそも使えないかもしれない

807 :デフォルトの名無しさん:2016/02/15(月) 20:38:06.25 ID:DVDGKYNF.net
>>805
実務者でないので確かなことは言えないけど、
たぶんscanf()は担ってないだろうね。
どこかの固定番地のメモリを読むとスイッチの状態が取れる、
みたいな方式がもっとも単純な実現方法だったけど…。

#define SW_ADDRESS ((volatile char*)0xffff00) /* 番地は一例(実際の回路による) */
#define SW_BIT_POWER 0x1
#define SW_BIT_UP 0x2
#define SW_BIT_DOWN 0x4

void read_sw(void) {
 char sw_now = *SW_ADDRESS; /* 今のスイッチの状態をメモリの内容として読む */

 if (sw_now & SW_BIT_POWER) { /* 電源スイッチの処理 */ }
 if (sw_now & SW_BIT_UP) { /* 上矢印ボタンの処理 */ }
 if (sw_now & SW_BIT_DOWN) { /* 下矢印ボタンの処理 */ }
 ...
}


現代の家電制御だと操作部は外部デバイスの扱いで、
ボタンを押すと割り込みがかかる(イベントが発生する)感じなのかな。

808 :デフォルトの名無しさん:2016/02/15(月) 20:41:21.97 ID:z4NOVyYm.net
>>805
いいえ
IOポートをベンダーのライブラリによって変数または関数でアクセスできるようにされています

809 :805:2016/02/15(月) 21:01:32.89 ID:DVDGKYNF.net
>>807
ああ、IOポートを忘れてた。_asm_()でIN/OUT命令のラッピングとか。


…以下個人的な記録。"便所の落書き"レベルだが実はこちらが書きたかった。
ところで俺のIDを見てくれ、こいつをどう思う(全部が大文字)。
しかも先頭3文字がDVD、DVD!

810 :デフォルトの名無しさん:2016/02/15(月) 21:10:35.79 ID:MiqBdzVE.net
        lヽ ノ l        l l l ヽ   ヽ
  )'ーーノ(  | |  | 、      / l| l ハヽ  |ー‐''"l
 / D  | | |/| ハ  / / ,/ /|ノ /l / l l l| l  D ヽ
 l   ・  i´ | ヽ、| |r|| | //--‐'"   `'メ、_lノ| /  ・  /
 |  V  l  トー-トヽ| |ノ ''"´`   rー-/// |  V |
 |  ・   |/     | l ||、 ''"""  j ""''/ | |ヽl  ・ |
 |  D   |       | l | ヽ,   ―   / | | l  D  |
 |   !!  |     / | | |   ` ー-‐ ' ´|| ,ノ| | |  !! |
ノー‐---、,|    / │l、l         |レ' ,ノノ ノハ、_ノヽ
 /        / ノ⌒ヾ、  ヽ    ノハ,      |
,/      ,イーf'´ /´  \ | ,/´ |ヽl      |
     /-ト、| ┼―- 、_ヽメr' , -=l''"ハ    |  l
   ,/   | ヽ  \  _,ノーf' ´  ノノ  ヽ   | |
、_    _ ‐''l  `ー‐―''" ⌒'ー--‐'´`ヽ、_   _,ノ ノ
   ̄ ̄   |           /      

811 :デフォルトの名無しさん:2016/02/15(月) 21:55:30.62 ID:m+SXox7w.net
ここであえて割り込み信号を利用して(ry

812 :デフォルトの名無しさん:2016/02/15(月) 22:57:49.99 ID:8/hvPvbC.net
割り込み < ずっと俺のターン

813 :デフォルトの名無しさん:2016/02/15(月) 23:13:44.55 ID:VPv2PLWt.net
組み込みではstdio.hすらインクルードしないこともザラだからscanf()は使わないね

814 :デフォルトの名無しさん:2016/02/16(火) 00:30:12.02 ID:A8sxbaEi.net
>797
お隣の土人レベルで支離滅裂な反論だな。

815 :デフォルトの名無しさん:2016/02/16(火) 01:01:51.42 ID:QXrSBwPp.net
オシロスコープと半田ごてでデバッグする世界だからな
もはやソフトウェア技術者じゃないよ
C言語はソフトウェアじゃない

816 :デフォルトの名無しさん:2016/02/16(火) 01:15:50.67 ID:c8/hor6F.net
charってなんのためにいるの?
全部unsignedじゃ駄目なん??

817 :デフォルトの名無しさん:2016/02/16(火) 01:32:25.99 ID:MBCQ5F1N.net
char
unsigned char
int
unsigned int

818 :デフォルトの名無しさん:2016/02/16(火) 01:46:52.45 ID:leT4GxEl.net
>>815
オシロスコープは測定器、半田ごては工具。
デバッグに使うのはICE(インサーキットエミュレータ)。
最近はターゲットボードのCPUに直接プローブを接続する代わりに
マイコンのUART機能を利用した簡易ICEを使うことも多いけどな。

819 :デフォルトの名無しさん:2016/02/16(火) 01:59:42.70 ID:MBCQ5F1N.net
#define ARRAY_SIZE 128
#include <stdio.h>
#include <string.h>
int main(void)
{
    char a[] = "32-bit application";
    char c[ARRAY_SIZE];
    int k;
    int length = strlen(a);
    unsigned u[ARRAY_SIZE];

    printf("sizeof(c) = %d\n", sizeof(c) );
    printf("sizeof(u) = %d\n", sizeof(u) );

    memcpy(c, a, length);
    c[length] = '\0';
    printf("strlen(c) = %d\n", strlen(c) );
    for(k = 0; c[k] != 0; k++) {
        printf("%X ", c[k]);
    }

    putchar('\n');

    memset(u, 0, ARRAY_SIZE);
    memcpy(u, a, length);
    for(k = 0; u[k] != 0; k++) {
        printf("%4X ", u[k]);
    }
    return 0;
}

820 :デフォルトの名無しさん:2016/02/16(火) 05:24:10.84 ID:WAHfrhjM.net
>>816 の疑問は、
単に char と書くと signed char か unsigned char か確定しない。
signed と書かなくても符号付きになる他の整数型と異なる挙動は
不統一で見苦しいって話かな。

821 :デフォルトの名無しさん:2016/02/16(火) 08:51:09.83 ID:c8/hor6F.net
文字コードにマイナスはないんだから符号は必要あるの?って話です

822 :デフォルトの名無しさん:2016/02/16(火) 09:01:09.73 ID:rD0NYg0s.net
>>821
まず、符号付きとは限らない。処理系定義。
で、符号付きの利点は他の整数型と同じ仕様の方が分かりやすいからじゃないかな多分

823 :デフォルトの名無しさん:2016/02/16(火) 09:43:02.89 ID:pJeE/dKV.net
char は文字型じゃ無いぞ。
C言語自体には文字という概念も無い。

824 :デフォルトの名無しさん:2016/02/16(火) 10:35:19.71 ID:A8sxbaEi.net
>823
>C言語自体には文字という概念も無い。

あるよ。”abc"とか'a'とか。
文字型変数は無いけど。

825 :デフォルトの名無しさん:2016/02/16(火) 11:36:38.20 ID:d+4j8JFt.net
昔はデータに型なんて言うものは無かったからデータの列の一つを文字になぞらえてワードといっていたんだぞ。 コンピューターに理解できる文字は数字の数だったということだ。

826 :デフォルトの名無しさん:2016/02/16(火) 12:36:22.55 ID:Nv9Fnt/E.net
>>825
「ワード」というのは、昔のコンピュータは最小の記憶単位だったのではないでしょうか。
例えば、1960年代初頭の日立のパラメトロン計算機は、21ビットを短ワードと呼び41ビットを
長ワードと呼んでいて、磁気ドラムの記憶容量は、短ワードで8392ワード、長ワードで4192ワード
でした。
計算はワード単位で行いました。

827 :デフォルトの名無しさん:2016/02/16(火) 12:48:46.10 ID:JA04JtkX.net
>>826
∀と∃の違いわかるかな?

828 :デフォルトの名無しさん:2016/02/16(火) 15:37:30.09 ID:VEJFRQq2.net
>>827
顔文字とヨ

829 :デフォルトの名無しさん:2016/02/16(火) 15:44:14.92 ID:CTU8DF7H.net
>>824
そういう言い方が出来るなら、
無限多倍長整数や、分数、無理数、複素数も
あることになるな。

830 :デフォルトの名無しさん:2016/02/16(火) 16:02:53.66 ID:VEJFRQq2.net
>>824
文字型変数あるやん

831 :デフォルトの名無しさん:2016/02/16(火) 16:12:19.64 ID:Nv9Fnt/E.net
>>827
記号論理学の記号で、「全て」と「或る」と云うことは解っていますが、
これと「ワード」との関係がわかりません。
御教示ください。

832 :デフォルトの名無しさん:2016/02/16(火) 16:32:10.70 ID:jAB1ZrKH.net
あー、昔の上司に「char は文字型じゃない」と言われてそのまま覚えてたわ(8bit変数だと教わった)。
BASIC→アセンブラって来たから信じてた。

833 :デフォルトの名無しさん:2016/02/16(火) 17:35:24.24 ID:WAHfrhjM.net
今の議論は、charの変数や配列を「文字を格納する領域」と見るか、
「単に1byte長の整数を格納する領域」と見るか、どちらの立場をとるかで
混乱してると思われる。

そして ANSI C 以前のコンパイラ製作者にも両派があった。
charは「文字型」派 ... 単なるcharは符号なし
charは「小さい整数型」派 ... 単なるcharは符号付き

結局ANSI規格でcharは小さい整数と定め、
signed/unsignedの修飾で符号の有無を明示できるようにした。
しかしながら、単なるcharの符号の有無は「処理系定義」。
……たぶん同一商品シリーズのコンパイラ製品をANSI対応版に切り替えたとき、
それまでのソースを変更せずに再コンパイルして、同じ動作を保つため。


(個人的な疑問.1)
古いCコンパイラ処理系には
charにはsigned/unsignedの修飾ができないものが存在したのだろうか?

(個人的な疑問.2)
そもそもsignedという修飾子が新しく追加されたものなのか?

834 :デフォルトの名無しさん:2016/02/16(火) 17:52:00.63 ID:EwcJlFmr.net
C言語がB言語のころは型なんてものは無くて、コンピューターに小数点計算のユニットが出来てから型が2種類になって追加された。 Cにはunsignedもなくてコンピューターに非符号計算命令ができてから追加された。

835 :831:2016/02/16(火) 19:07:27.59 ID:WAHfrhjM.net
素早い回答ありがとう。でも、そこまで古い歴史は念頭になかった。
MS-DOSでLatticeとかTurboとか言ってた頃までしかさかのぼれないのだ。

K&R『プログラミング言語C』第1版の和訳を読んだ記憶で、
unsignedは確かに見たがsignedがどうだったか記憶があいまい。
デフォルトでsignedだから書く必要はないと印象が薄かったのか、
signedという修飾語が何かの独自拡張だったのかな、という話なのよ。

836 :デフォルトの名無しさん:2016/02/16(火) 19:12:10.48 ID:EwcJlFmr.net
signedはK&Rからansiに切り替わるときに付け加えられたキーワード。

837 :831:2016/02/16(火) 19:23:17.73 ID:WAHfrhjM.net
再びありがとう。IDを見るに同じ人のようだな。
やっぱりsignedはANSI以後だったか。

すると >>833 の疑問.1も自動的に解決というわけだ。
今でも単なるcharの符号の有無をコマンドラインオプションで
切り替えられる処理系が多い(全部か?)のはANSI以前の名残りかもな。

>>835
用語としては「修飾語」でなく「修飾子」と書くべきだったね。

838 :デフォルトの名無しさん:2016/02/16(火) 21:03:04.77 ID:fXbScveD.net
SJIS 漢字取り扱うときに
(SJIS 漢字は 最上位ビットがたった 8bit値のペア)
char が 符号無しのほうが都合が良くなるシーンがあって
コンパイラオプションで逃げれるようにしてあったとかなんとか

多分文字の比較周辺だろう

839 :デフォルトの名無しさん:2016/02/16(火) 23:01:02.06 ID:rhm6d/76.net
char(int8_t)を「1byteの整数」と思ってたら、C++のstream出力でトラップに引っかかってしまった。
char/signed char/unsigned char全部別の型なんだから文字として扱うのはcharだけでいいのに。

840 :デフォルトの名無しさん:2016/02/17(水) 09:39:51.28 ID:aScpC0wo.net
C++でもprintf()使用。

841 :デフォルトの名無しさん:2016/02/17(水) 12:33:04.22 ID:meWsqvoD.net
C++はスレ違い

842 :デフォルトの名無しさん:2016/02/17(水) 15:33:30.86 ID:/MXgbI0X.net
sizeof関数の必要性が分からないです
int x;
xはint型だから4byteって分かるから
一々sizeof調べる必要なくね?ってお思うんですが…
必要だからあるんでしょうね…

843 :デフォルトの名無しさん:2016/02/17(水) 15:34:35.10 ID:TSaSWJ2t.net
>>842
> xはint型だから4byteって分かるから
いいえちがいます

844 :デフォルトの名無しさん:2016/02/17(水) 15:47:24.17 ID:9Tg9xwfb.net
>>842
関数ではなく演算子

845 :デフォルトの名無しさん:2016/02/17(水) 15:53:20.97 ID:aScpC0wo.net
>842

struct {
.....
} st_data;

memset(&st_data,0,sizeof(st_data;));

構造体のサイズ、自分で計算するの?
仕様変更のたびに計算し直すの?

846 :デフォルトの名無しさん:2016/02/17(水) 17:11:39.31 ID:b9cN/SiC.net
みんながMS-DOS上で開発してた頃 >>842 と同趣旨の質問は
int x;
xはint型だから2byteって分かるから…
という具合に書かれてたね。20世紀も遠くなったものだ。

・intは4byteと限らない >>843
・構造体のメモリ配置には穴がある(各要素の大きさの単純な和にならない) >>845
・構造体の構成を変更した時にsizeofなら自動的に追従してくれる >>845
・ところで sizeof は関数ではなく演算子ですよ >>844

俺もひとつsizeofの効用を紹介したい。
int array[10];

 for (i = 0; i < sizeof(array) / sizeof(array[0]); i++) {
  ...
 }

上のような処理(arrayの要素数だけループ)の場合、
sizeofで書いておけばarrayの要素数を増減させたときや
arrayの型をintからlongに変えたときでもforの方は手直しする必要がない。
つまりあらかじめ修正忘れバグが生じる危険を除去しておける。

847 :844:2016/02/17(水) 17:20:46.04 ID:b9cN/SiC.net
そうそう、 sizeof は(関数じゃなくて)演算子だから
for (i = 0; i < sizeof(array) / sizeof(array[0]); i++) でなく
for (i = 0; i < sizeof array / sizeof array[0]; i++) と書ける。

ということは知ってるけどsizeofにカッコがついてないと落ち着かないわ。
上の2番目の例を見ても、何やら股間がスースーする感じ。

848 :デフォルトの名無しさん:2016/02/17(水) 19:51:30.81 ID:ZLMxZU9o.net
>>847
パンツ穿けよ

849 :デフォルトの名無しさん:2016/02/17(水) 21:27:16.78 ID:sobQnjjW.net
Visual C++だとsizeof(array)/sizeof(array[0])の同義語として_countof(array)というのが使える、
先頭にアンスコだがどっかのMSDNのサンプルで使われてた

850 :デフォルトの名無しさん:2016/02/17(水) 21:55:56.81 ID:FcItmVTS.net
>>842
intのサイズは実装依存だから

851 :デフォルトの名無しさん:2016/02/17(水) 21:56:11.63 ID:XCSGc6/k.net
実際には見たこと無いが
sizeof(型名[n])がsizeof(型名)*nを返す仕様であるため
sizeof(変数名[0])が0になる実装がないとかあるとか

852 :デフォルトの名無しさん:2016/02/17(水) 22:52:20.50 ID:kFTtiQmO.net
>>850
そう思ってたら、64bit の処理系で
int -> 4byte
long -> 4byte
longlong -> 8byte
とか言うのも結構謎だよな。int のサイズが変わる事ってあるのかしらん。

853 :デフォルトの名無しさん:2016/02/17(水) 23:32:27.84 ID:XCSGc6/k.net
x64でILP64にしても利点が無いからな
互換性大事にしてLLP64にするか
もしくはLP64で精一杯

854 :デフォルトの名無しさん:2016/02/17(水) 23:39:59.64 ID:hHciXnJ7.net
何の考えもなく作られたILP32のコードは、LP64に対応させるだけでもキツかったわ

855 :デフォルトの名無しさん:2016/02/17(水) 23:48:02.11 ID:mucHor6X.net
sizeof(array[0])とsizeof(*array)って同じ意味という認識で良いですか?
sizeof(*array)のほうがわかりやすいのでこちらを常用したいのですが、問題はありますか?

856 :デフォルトの名無しさん:2016/02/18(木) 07:39:27.06 ID:tgEJTGBi.net
arrayがポインタなら同じ

857 :デフォルトの名無しさん:2016/02/18(木) 08:09:04.90 ID:86RD4104.net
・sizeof(array[0]) と sizeof(*array) は同じ
たぶん正しい。
実際のarrayが配列であるかポインタであるかによらず正しい、と思う。

・sizeof(array[0]) の代わりに sizeof(*array) と書くことに問題は?
たぶん文法的には問題ない。

でも上に出た「配列の要素数を知るのに使う」場面では
sizeof(array) / sizeof(array[0]) という具合に
配列名[0] で書くのがイディオムになってる気がする。
少なくとも sizeof(array) / sizeof(*array) の書き方は見たことがない。

他の人にソースを見せたとき sizeof(*array) だと
「ここは何を計算してるんだ? ……ああ、配列の要素数ね」と
読解のリズムを軽く乱すという弊害はあるかも。


「たぶん」「…と思う」ばかりでアテにならんね。済まぬ。
間違ってたらツッコんでくれ。

858 :デフォルトの名無しさん:2016/02/18(木) 11:05:45.49 ID:dlsHUuTC.net
>>955
Cの省略記法が
*(address + index) = address[index]
ってなってるから
array[0], *(array + 0), *array
は常に同じ意味になる。

演算子オーバーロード?知らない子ですね。

859 :デフォルトの名無しさん:2016/02/18(木) 11:06:25.55 ID:dlsHUuTC.net
955じゃなくて>>857だった

860 :デフォルトの名無しさん:2016/02/18(木) 14:02:28.82 ID:OJ9pcQIt.net
>>855
ごく稀に違うことがある。GCCの拡張機能だしどうでもいいけど
http://melpon.org/wandbox/permlink/HHiSa06qnoFym74G
http://melpon.org/wandbox/permlink/MaLi9c5ZzaiFAqGK

861 :デフォルトの名無しさん:2016/02/18(木) 17:09:02.69 ID:+9j/40fE.net
質問なんですが特定の操作をしたらバグを起こすようなコードを
書いたらどうなるのか考えてみました。例えばCの組み込みで考えると
クーラーの温度を18°にした状態から26°にしてその後24°にしたら
表示が24°にも関わらず18°の風が出るようになる
こういう迷惑なコード書かれていた場合ってどうやって検出するんですか?
ブラックボックステストだと網羅できない気がします。
Cにそういうコードまで検出するような開発環境ってあるんでしょうか?

862 :デフォルトの名無しさん:2016/02/18(木) 17:09:39.99 ID:+9j/40fE.net
別に意図的じゃなくても
ある条件で誤動作をするようなコードを製品にした段階で
残したままにしてしまった事もあると思うんです。

863 :デフォルトの名無しさん:2016/02/18(木) 17:16:46.27 ID:lABVi1X/.net
それやってpentiumが全品回収になった

864 :デフォルトの名無しさん:2016/02/18(木) 17:47:00.02 ID:uosgYTqQ.net
イースターエッグのことですね
Excelのイースターエッグは有名ですね
95 → https://www.youtube.com/watch?v=nwg9eLHZZRo
97 → https://www.youtube.com/watch?v=-gYb5GUs0dM
2000 → https://www.youtube.com/watch?v=unkKO2BY9TU
自分はExcel97のイースターエッグが好きでした
マイクロソフトの職場って楽しそうで良いですね

865 :デフォルトの名無しさん:2016/02/18(木) 18:47:57.83 ID:hH2RoOce.net
違うだろ読解力無いのか
仕様外の動作を検出するテストについて聞いてんだろうが

866 :デフォルトの名無しさん:2016/02/18(木) 20:09:10.75 ID:qb28fXgB.net
>>861
ブラックボックステストだと基本無理
その操作を3回繰り返した時だけとか、特定の日時のみとか、いくらでも条件増やせるし
なのでまともな会社はコードレビューとか、ホワイトボックステストとかやってる
そう言うコードは通常のテストでは通らないのでコードカバレッジの計測も有効

867 :デフォルトの名無しさん:2016/02/18(木) 20:32:37.77 ID:csZ8WmW6.net
そういう動作をさせる人にやらせたのが・・・・

868 :デフォルトの名無しさん:2016/02/18(木) 20:52:35.95 ID:0fagojS5.net
作った人間の思い通りに動かないとしても、機械にするとコード通りの動作してるだけで
機械に自動検出できるわけない。

869 :デフォルトの名無しさん:2016/02/18(木) 21:39:07.98 ID:B5G89/jK.net
>>863
嫌な事件だったね・・・

870 :デフォルトの名無しさん:2016/02/18(木) 23:42:28.11 ID:pF8TduzO.net
http://postd.cc/how-to-c-in-2016-1/

こんなモダンなソース見たことないんですが
githubのこんな流儀のプロジェクトあったら紹介してください

871 :デフォルトの名無しさん:2016/02/18(木) 23:47:24.22 ID:pF8TduzO.net
自己解決

#include <stdint.h>

で検索したらいっぱい出ました

872 :デフォルトの名無しさん:2016/02/19(金) 06:12:54.61 ID:tDicO6hX.net
>>866 で指摘されてる、コードカバレッジを計測するための
ツールを紹介してくれないかな。手軽に使えるものが好ましい。

関数単位ならGNUのgprofが頭に浮かぶんだけど、
細かい部分ではデバッグライトを埋め込むしか思いつかない。

873 :デフォルトの名無しさん:2016/02/19(金) 07:13:26.78 ID:UoTVqCBs.net
>>872
GCC なら gcov でいいんじゃね?

874 :デフォルトの名無しさん:2016/02/19(金) 07:32:50.56 ID:SyHnFeOw.net
intのバイト数が違うマシーンに移植するときどうするんだよ

875 :870:2016/02/19(金) 07:36:03.71 ID:tDicO6hX.net
>>873
まさにgcovがそのためのプログラムみたいね。ありがとさん。
gccの付属ツールだったか。

ツール名が分かっていれば使い方を検索するのは容易だけど、
逆引き(こんな機能のツールはないかしら)を見つけるのは難しい。
自分の環境に適合しないものも出てくるしね。

876 :デフォルトの名無しさん:2016/02/19(金) 08:26:30.01 ID:UoTVqCBs.net
>>875
gcc コードカバレッジ
でググれば普通にでてくる

877 :デフォルトの名無しさん:2016/02/19(金) 08:53:19.63 ID:MJre7f67.net
上上下下左右左右…

878 :デフォルトの名無しさん:2016/02/19(金) 09:09:12.93 ID:oqk65wRo.net
最近思うんだが
何かトラブルが起こった時どうするの?みたいな考えは山のように浮かぶけど
プログラミングの細かい仕様のアイディアは全然思い浮かばない
こういう俺みたいなタイプってIT業界ではどんな場面で活躍できるんだろ?

879 :デフォルトの名無しさん:2016/02/19(金) 09:15:36.05 ID:mSn4rtqx.net
>>878
スレ違いの話題を振るような奴は活躍できない

880 :デフォルトの名無しさん:2016/02/19(金) 09:19:19.43 ID:i395RlVR.net
>>870
こいつ32bitから64bitへの移植とかやった事無い素人

881 :デフォルトの名無しさん:2016/02/19(金) 09:37:01.47 ID:oqk65wRo.net
>>879
まぁそう言わないでください
いっつもここでは答える側ですよ僕も

882 :デフォルトの名無しさん:2016/02/19(金) 10:38:34.04 ID:vBd4Joyl.net
読解力があるならいい方では
読めないから間違いを見つけられない人が多数

883 :デフォルトの名無しさん:2016/02/19(金) 11:26:02.90 ID:eREs2hdb.net
>>878
マ板でやれ

ふわっとした物事の発想が得意なら企画とか向いてるんじゃね?

884 :デフォルトの名無しさん:2016/02/19(金) 11:40:24.51 ID:cnIR4f5j.net
unsigned floatが存在しない理由ってなんですか?

885 :デフォルトの名無しさん:2016/02/19(金) 11:52:05.94 ID:WNehkofW.net
整数で正だけに限定して得られるのは取り扱える値の最大値が
同じ記憶容量でおおきくできることだけど (同時に最小値も大きくなってしまうが)

浮動小数点表現で取りえる上限下限の値を支配してるのは指数部だろうし
仮数部を符号なしにして得られるメリットは たいしたことないからなんじゃねーの?

886 :デフォルトの名無しさん:2016/02/19(金) 12:44:37.80 ID:c03fK/Bb.net
>>883
注意しつつアドバイスくれるとか
超良い人間ですねあなた

分かりました企画で就職します!
プログラミング好きだけど組むとなったらやたら時間かかって

887 :デフォルトの名無しさん:2016/02/19(金) 13:38:30.42 ID:vBd4Joyl.net
短期で作れ人って少ないんだから、普通より上では
就職前にやりこんでおいたほうが吉かも

888 :デフォルトの名無しさん:2016/02/19(金) 13:54:19.20 ID:unMO5CFj.net
>>878
SE/プログラマでいいんじゃね
仮の設計をたたき台にして具体的に検証して改善出来るなら有望

889 :870 == 873:2016/02/19(金) 17:17:20.04 ID:tDicO6hX.net
>>876
確かに「コードカバレッジ」だけをキーワードに検索して
Wikipediaの「コード網羅率」のページを開き、
外部リンクのツール(フリーなもの)の項を見ればgcovにたどり着けた。

「ちっとは自力で調べろや」と言われても仕方ない有様だったわ。
いや、お恥ずかしい。

890 :デフォルトの名無しさん:2016/02/19(金) 19:31:19.70 ID:unMO5CFj.net
言語組込みのDならもっと手軽に

891 :デフォルトの名無しさん:2016/02/19(金) 19:54:18.78 ID:xsNKFu6i.net
プロの人でも参考書見たりググったりしながら書くもん?

892 :デフォルトの名無しさん:2016/02/19(金) 20:03:00.04 ID:eREs2hdb.net
何をもってプロとするかにも依るけど
まっさらな所から何かコードを書くときはググりながら書くかな

893 :デフォルトの名無しさん:2016/02/19(金) 20:13:45.97 ID:unMO5CFj.net
コピペ継ぎ接ぎしないと書けませんという意味ならはっきりNO

894 :デフォルトの名無しさん:2016/02/19(金) 20:37:39.81 ID:YxSgZRHQ.net
コード補完機能(インテリセンス)がないともう書けましぇん…

895 :デフォルトの名無しさん:2016/02/19(金) 21:59:23.86 ID:O+q3yGey.net
>>891
日頃使ってる C/C++ は滅多にググったりしないけど、今日久々に Python 使ったのでググりまくった

896 :デフォルトの名無しさん:2016/02/19(金) 22:31:43.55 ID:xsNKFu6i.net
ほーん参考になりましたわ
おいおい覚えてこ。。

897 :デフォルトの名無しさん:2016/02/19(金) 22:39:52.84 ID:TH2A1UYk.net
この業界って、読みにくいコードとドキュメントを見て、即座にどの辺りか問題を切り分けられる超人的な理解能力と技術が備わってる人が仕切ってるのに、なぜ障害対応で明け暮れてるんですか?

898 :デフォルトの名無しさん:2016/02/19(金) 23:13:46.93 ID:jQ6CZKbb.net
>即座にどの辺りか問題を切り分けられる超人的な理解能力と技術が備わってる人が仕切ってるのに
ここの認識が間違ってるから。

899 :デフォルトの名無しさん:2016/02/20(土) 12:22:14.20 ID:7T2ACTsM.net
しょせん超人であって神ではないから

900 :デフォルトの名無しさん:2016/02/20(土) 12:33:55.27 ID:3sA1dT+g.net
ひとくちに超人と言っても個々の超人強度にバラつきがあるから。

つうか >>897 の質問はネタお題だよね。
本当に知りたいならこのスレッドは不適かと(どこが適当かは知らないけど)。

901 :デフォルトの名無しさん:2016/02/20(土) 16:10:02.64 ID:7iTe4rm9.net
>>899
日本で言う神は、超人も含む。

902 :デフォルトの名無しさん:2016/02/20(土) 18:39:44.13 ID:lYQ0UjNJ.net
c言語でデザインパターンってないですけど
それって開発上で困らないんですか?

903 :デフォルトの名無しさん:2016/02/20(土) 18:41:03.47 ID:WX8IzsC4.net
>>902
むしろC#にてデザパタ本がない七不思議

904 :デフォルトの名無しさん:2016/02/20(土) 19:02:22.14 ID:owoJYL1y.net
デザパタ理解できてたら Java でも C# でもたいして変わらんから特にいらんでしょ

905 :デフォルトの名無しさん:2016/02/20(土) 19:15:28.09 ID:OMpzR0PF.net
「D:\C言語」にある「test.exe」を起動するプログラムはどのようになるでしょうか

906 :片山博文MZ ◆T6xkBnTXz7B0 :2016/02/20(土) 19:18:11.12 ID:md57KSoZ.net
>>905
system("D:\\C言語\\test.exe");

907 :デフォルトの名無しさん:2016/02/20(土) 20:04:18.18 ID:OMpzR0PF.net
>>906
ありがとうございます!

908 :デフォルトの名無しさん:2016/02/20(土) 22:07:41.24 ID:lYQ0UjNJ.net
ホームページビルダーみたいなGUIでホームページ制作するツールはあるのに
GUIでプログラミングできる環境がないのは何故?

909 :デフォルトの名無しさん:2016/02/20(土) 22:27:14.42 ID:cc/ImfAV.net
アルゴリズムはWYSWYGと無関係だしな

910 :デフォルトの名無しさん:2016/02/20(土) 22:27:57.61 ID:cc/ImfAV.net
俺に愛がないせいでIが抜けてた

911 :デフォルトの名無しさん:2016/02/20(土) 22:33:21.65 ID:7rbbNzFw.net
ビジュアルプログラミング言語のことか?

912 :片山博文MZ ◆T6xkBnTXz7B0 :2016/02/20(土) 22:36:12.09 ID:md57KSoZ.net
>>908
スクラッチ
スクイーク

913 :デフォルトの名無しさん:2016/02/20(土) 22:37:22.70 ID:twWMzqJZ.net
【マウスだけで】C言語【プログラミング】
みたいな?

914 :デフォルトの名無しさん:2016/02/20(土) 23:17:07.65 ID:hK4Y+Ytp.net
ないんじゃない
あるが実用的ではないので有名にならない

最終的なものを見ながらホームページを視覚的に作れるのは大きな利点だけどプログラミングはそうじゃないから

915 :デフォルトの名無しさん:2016/02/20(土) 23:44:24.33 ID:y7w1zIcl.net
>>902
もしデザパタが無くて困ってるのなら、
デザパタを理解していない証拠だよ

916 :デフォルトの名無しさん:2016/02/21(日) 04:09:33.41 ID:AMz/IHJU.net
C言語だけの知識から読み解くのはちょっときついかもね

917 :デフォルトの名無しさん:2016/02/21(日) 09:40:51.73 ID:6FoMFdKR.net
>>908
ビジュアルプログラミング言語とかモデルベース開発とかでググってみれば?

918 :デフォルトの名無しさん:2016/02/21(日) 09:59:44.37 ID:UzPMPT/j.net
結局C++の知識は多少はあったほうが良いと思った。
しかし久しぶりにCでコンパイルしようとしたらエラーが出まくった。
structとかvoidとかを書き忘れてたり。

919 :デフォルトの名無しさん:2016/02/21(日) 11:20:13.18 ID:++cldRkk.net
c言語のプログラムが実行されるときってAdministrator権限フル活用してんの?
例えば7って入れないフォルダあるじゃん

920 :デフォルトの名無しさん:2016/02/21(日) 11:25:20.11 ID:X8k91nqv.net
プログラムに制限を与えるのはOSの仕事だろ

921 :デフォルトの名無しさん:2016/02/21(日) 11:55:35.08 ID:phEKpqeY.net
テストするときいつも管理者で
配布・運用後に一般ユーザーで動かすと動きまへんというのはよくやらかす

922 :デフォルトの名無しさん:2016/02/21(日) 12:57:38.35 ID:pzpae+MZ.net
何のためのAPIだよ

923 :859:2016/02/22(月) 10:34:37.72 ID:FsdI40u2.net
コードカバレッジ???
コードを一つ一つみてもどういう役割を果たすか分からないと
意味なくないですか?

例えばこれはいらないだろうとかいう数行のコードとか
見分けつくんですか?

924 :デフォルトの名無しさん:2016/02/22(月) 10:46:43.11 ID:jiaYaktK.net
いらないコードとかを判断して整理する行為はリファクタリング

925 :デフォルトの名無しさん:2016/02/22(月) 12:29:05.40 ID:FsdI40u2.net
コードカバレッジとの違いは?

926 :デフォルトの名無しさん:2016/02/22(月) 13:10:42.53 ID:JfDI0x9F.net
要るかどうかとコードカバレッジは関係ない
まずコードカバレッジの意味を辞書で調べろ

927 :デフォルトの名無しさん:2016/02/22(月) 15:25:01.69 ID:NgPLLMlb.net
>>915
Cにデザパタ?

それはGoFの23個のデザパタを言ってるの?
Design Patterns: Elements of Reusable Object-Oriented Software

まさかCでもOOPできるとかそういうレベルの話をしたいの?
非OOPLで適用できる実用的なデザパタなんて思いつかないんだが

928 :デフォルトの名無しさん:2016/02/22(月) 18:07:19.84 ID:y6o8tSrf.net
.hと.cのセットをオブジェクトとみなしてOOP。
externダメ絶対。

929 :デフォルトの名無しさん:2016/02/22(月) 18:42:37.43 ID:JfDI0x9F.net
>>927
本質的なところはオブジェクト指向に依存しないでしょ
「継承を使った場合の○○パターン」というような実装例しか理解できてないの?

930 :デフォルトの名無しさん:2016/02/22(月) 19:51:31.36 ID:WwV2mwuR.net
>>929
> 本質的なところはオブジェクト指向に依存しないでしょ

本質が何なのかは、俺にはわからないけど
GoFの23個は全部(?)オブジェクト指向を「前提」としてたハズでは?
手元の翻訳本にはでっかく
「オブジェクト指向における再利用のためのデザインパターン」
って書いてるよ

931 :デフォルトの名無しさん:2016/02/22(月) 20:00:09.18 ID:WwV2mwuR.net
ちな序文から数行引用
「本書では、読者が少なくとも1つのオブジェクト指向言語を知っていること、
そしてオブジェクト指向設計の経験があることを前提としている。
我々が型やポリモルフィズムについて、あるいは、
実装の継承と対比してインタフェースの継承について論じたからといって、
ただちに近くの解説本に手を伸ばすようなことではだめである。」

932 :デフォルトの名無しさん:2016/02/22(月) 20:16:30.07 ID:v4lNOwvr.net
>本質が何なのかは、俺にはわからないけど

ハイ撤収〜♪

933 :デフォルトの名無しさん:2016/02/22(月) 20:19:34.32 ID:WwV2mwuR.net
「Cでデザパタ」の例を一個でいいから教えてよw
イテレータ当たりを言い張られてもつまらないので
それ以外で

934 :デフォルトの名無しさん:2016/02/22(月) 20:22:36.65 ID:v4lNOwvr.net
デザパタの本質が何かわからない人には何言っても無駄

935 :デフォルトの名無しさん:2016/02/22(月) 20:23:48.76 ID:WwV2mwuR.net
そうすか(´・ω・`)

936 :デフォルトの名無しさん:2016/02/22(月) 20:34:27.59 ID:X9AMd52R.net
こういう議論って、結局のところ
「こうすればCにもGoFのデザインパターンを応用できる」
「それは○○の機能を使ってないからGoFのデザインパターンと呼べない」
みたいな言い争いになるんじゃないの?

煎じ詰めると「GoFのデザインパターンはオブジェクト指向に依存するか否か」という
元のお題に対するそれぞれの見解を、表現を変えて主張し合う水掛け論に至ると。


その過程でデザインパターンに関する理解が深まるなら歓迎するけど、
きっと俺は前提知識が足りないだろうな。

937 :デフォルトの名無しさん:2016/02/22(月) 20:52:26.37 ID:v4lNOwvr.net
ノイマン型の手続き型プログラミングは、究極的にはデータ構造とアルゴリズムしか無い
”デザパタも良く使うデータ構造とアルゴリズムをセットにしてOOP風に纏めたものにすぎない”
それ以上でもそれ以下でもない

ノイマン型コンピュータは、結局のところ、
・メモリにデータをどう配置するかというデータ構造、と
・CPU内部のプログラムカウンタをどう制御するか、という制御構造
しか無い
この二つをパズルのように組み合わせて色々する

これはノイマン型コンピュータの仕組み、ハードウェア由来だから
ノイマン型であれば、何処まで行っても、デザパタだろうが何だろうが
本質はデータ構造とアルゴリズム、色で言うところの三原色

オブジェクト指向だとか関数型だとかいろんな方言が有るが
データ構造とアルゴリズムをオブラートに包むときの表現方法の違いで色々あるだけ
一皮むいたらデータ構造とアルゴリズムが出てくる
当たり前、最終的には機械語なんだからな

938 :デフォルトの名無しさん:2016/02/22(月) 21:01:52.33 ID:7CRrT+ID.net
そもそも組み込みCプログラマって40歳以上が多いんだってね
そういう人達にとっては古くからのプログラム方法のほうがいいんじゃないかね
web業界はアジャイルだのオブジェクト指向だのデザパタだのどんどん新しい
概念が必要だと思うけど組み込みの場合は30年以上前のプログラミング手法だと思うんだけど違う?
俺は将来組み込みプログラマになりたい、伝統の技を継承したいと思ってる。
偉そうに書いてすいません。

939 :デフォルトの名無しさん:2016/02/22(月) 21:06:08.08 ID:y6o8tSrf.net
デザパタとは名前を付けて再利用を容易にした方法論。
OOPとは限らない。

940 :デフォルトの名無しさん:2016/02/22(月) 21:07:18.89 ID:7CRrT+ID.net
まさか組み込みは最先端とか関係ないよね?
組み込みは設計(電機電子計卒の仕事)がプログラミングみたいなもんでwebプログラマみたいに
SEを兼ねたりしないイメージなんですが…

941 :デフォルトの名無しさん:2016/02/22(月) 21:08:49.31 ID:v4lNOwvr.net
つまりお前らは普段、方言の違いでもめているに過ぎない
東京弁と関西弁と関西弁で、表現力について揉めているだけ
ケンミンショーを開催しているだけ

プログラミング言語がいっぱいあるのは、データ構造とアルゴリズムを
効率的に表現することにおいて、得手不得手や個人の趣味が有るからでしかない

何が何だか分からなくなったら何時でもデータ構造とアルゴリズムに分解して考えればよい
プログラミングの本質、原子であり、2大要素で、これ以上の分類は意味が無いし、それ以外の要素もない
データ構造は空間であり、制御構造は時間と考えても良いし
データ構造は名詞で物体的、制御構造は動詞で”間”、と考えても良い
ノイマン型においてはな!

942 :デフォルトの名無しさん:2016/02/22(月) 21:44:58.68 ID:HRZm6+Gd.net
メーカーとか将来性ないから辞めとけ
これからはソフトウェアの時代
日本のメーカーはハードウェアのことしか知らない
先細りは目に見えてる

943 :デフォルトの名無しさん:2016/02/22(月) 22:12:24.02 ID:v4lNOwvr.net
日本がハードウェアに力を入れるのは当たり前
定期的に壊れて買い替え需要が有るし
「物質」なのでリンゴやナスと同じで普通の商売ができるから
ソフトウェアではアメリカに勝てないのがもうよく分かったから
消去法でハードウェアに力を入れているだけ
仮に日本製ソフトが海外でバンバン売れまくるなら各社力を入れるだろうが
アメリカに勝てるわけないからハードとセットにして売っているだけ
あとはアメリカ製ソフトを組み合わせて、顧客の要望に合わせて
プログラムという名のカスタマイズして売っている状況
他は日本固有の土着性の強いパッケージソフトを作って売るとかな

944 :デフォルトの名無しさん:2016/02/23(火) 00:21:55.54 ID:Od+jz+2u.net
【ワカヤマン】C言語プログラミング能力認定試験 [無断転載禁止](c)2ch.net
http://hanabi.2ch.net/test/read.cgi/lic/1454165737/

945 :デフォルトの名無しさん:2016/02/23(火) 01:40:39.07 ID:c6FJPsMP.net
Cはハードに近い言語だけど、ソフトとハードが喧嘩してたら良い物は作れないよやっぱり

946 :デフォルトの名無しさん:2016/02/23(火) 02:10:47.83 ID:CsrYKjCu.net
>>940
組み込みはWebアプリより遥かに範囲が広いよ。
それだけに、トップレベルの必要スキルは高いから、大抵の者が就ける仕事は互いに似たような小型家電になりがち。

947 :デフォルトの名無しさん:2016/02/23(火) 08:39:46.36 ID:ODpICnBY.net
>>941
そのデータ構造と制御構造に、どうアプローチするかが高級言語の仕様。
アプローチの違いで揉めてるわけだよw

948 :デフォルトの名無しさん:2016/02/23(火) 09:28:15.21 ID:wLklzJNq.net
スマホは組み込みではないと?

949 :デフォルトの名無しさん:2016/02/23(火) 09:50:59.33 ID:sWvQpzuh.net
どこまで組み込み製品のプログラムか、というのも
近頃じゃ怪しくなってるよね。

昔ならそれこそ電気釜は電気釜の専用プログラム、
エアコンはエアコンの専用プログラムだったのに、
今はテレビでも録画機でも、試験用の外部装置をつければ
Linuxの汎用コンピュータ + 拡張デバイスになってたりするもんな。

電話機はもう、小型のPC(通話機能つき)じゃろ。

950 :デフォルトの名無しさん:2016/02/23(火) 12:19:34.35 ID:+453XExT.net
Cはオワコンもう誰も使ってへん

951 :デフォルトの名無しさん:2016/02/23(火) 12:26:32.18 ID:P5/V/4Is.net
それは引きこもってるお前の家の中での話か?

952 :デフォルトの名無しさん:2016/02/23(火) 12:34:29.25 ID:570jH2Wu.net
そもCはコンテンツじゃないからな

953 :デフォルトの名無しさん:2016/02/23(火) 12:37:50.18 ID:+453XExT.net
ハード屋の奴隷のCプログラマには何のクリエイティブ性もねえわ
仕様はハード屋が設計した時点でほぼ決まってしまっている
ハード屋の設計ミスで納期遅れ出ても後工程であるソフト開発にしわ寄せがくる
ハード屋がやりたくないデバッグ作業をソフト屋に押し付けられるだけ
オシロスコープと半田ごてなんか使ってて何がソフトウェア技術者なんや
俺は天才プログラマーになりたかったんや

954 :デフォルトの名無しさん:2016/02/23(火) 12:40:10.94 ID:570jH2Wu.net
Cできりゃ他の言語も作りやすいんだから天才ならそういう方向で頑張れば?

955 :デフォルトの名無しさん:2016/02/23(火) 12:41:17.93 ID:ODpICnBY.net
またオシロスコープと半田ごてに殺されそうになった人か。

956 :デフォルトの名無しさん:2016/02/23(火) 12:42:44.79 ID:ixoIfLlt.net
https://youtu.be/8uhgIJCFOQw

957 :デフォルトの名無しさん:2016/02/23(火) 12:43:25.81 ID:+BhKz6nj.net
クリエイティブとは何かね

958 :デフォルトの名無しさん:2016/02/23(火) 16:47:23.82 ID:ixoIfLlt.net
clockで2つの処理時間のあるループの実行速度を比べるとどちらのループを先に実行したかによってのほうが
実行速度の差が反対になるほどなんですけど原因はなんですか?

959 :デフォルトの名無しさん:2016/02/23(火) 16:54:43.86 ID:TTnQy7CB.net
実行した二つのループのソースをそれぞれ晒して

960 :デフォルトの名無しさん:2016/02/23(火) 16:59:41.96 ID:ixoIfLlt.net
gcd(int a , int b)
{


}

961 :デフォルトの名無しさん:2016/02/23(火) 17:03:49.26 ID:ixoIfLlt.net
gcd(int a , int b)
{
while(b!=0
{
a%=b;
if(a!=0)
b%=a;
else
return b;
}
return a;
}

gcd2(int a , int b)
{
int temp;
while(b!=0)
{
a%=b;
temp=a;
a=b;
b=temp;
}
return a;
}
晒しました。

962 :デフォルトの名無しさん:2016/02/23(火) 19:26:36.07 ID:I91l52v4.net
単純に誤差じゃね。タイマーの精度に対して実行時間が短すぎるとか
ループで何回も処理させて精度以上にちゃんとしてる?

963 :デフォルトの名無しさん:2016/02/23(火) 19:39:23.00 ID:ixoIfLlt.net
30秒回し続けたらわかりました

964 :デフォルトの名無しさん:2016/02/23(火) 20:04:25.54 ID:4yRoVbnK.net
リファクタリングについて質問します。
このコードは不要なコードとかってどうやってわかるんですか?
例えば使われてない変数x=funciton();があった場合でも実は
必要なケースもあるかもしれないしどうやって判断してるのかなと

965 :デフォルトの名無しさん:2016/02/23(火) 21:39:48.24 ID:9Kr7JMr6.net
Visual Studioみたいな統合開発環境ならビルド時に教えてくれる
不要なコードはコメントアウトしておくか、消して必要なときにまた書くか

966 :デフォルトの名無しさん:2016/02/23(火) 22:12:51.71 ID:I91l52v4.net
xがローカル変数でそれ以降代入の左辺以外に使われていなければx=は不要でしょ
ポインタを介して参照されてることもあるので注意は必要
C++だと代入もoperator=があるので不要かどうか判断しにくい
int x; int* p; p=&x; x=function();
foo(p);←こういう場合はx=を消しちゃダメ
return;
function();が不要かどうかは優秀なプログラムかプログラマにしかわからない
functionがグローバル変数や引数の書換、副作用のある処理をしていなければ不要だが
それをプログラムで検査するのは大変
だいたいはプログラマが目で追って確かめることになる

967 :デフォルトの名無しさん:2016/02/24(水) 08:31:59.00 ID:FlUhpr/T.net
「リファクタリング」を冠したスレッドもあるじゃないか、と
ちょっと読んでみたけど、あんまり活発じゃないのね。

968 :デフォルトの名無しさん:2016/02/24(水) 08:35:24.04 ID:X0nmP2Wx.net
オブジェクトファイルをリンクするときプログラムで一回も使わない関数はリンクのときに捨てさられてプログラムのサイズは縮小されますか??

969 :デフォルトの名無しさん:2016/02/24(水) 08:38:39.51 ID:fFFtJP7c.net
ネスト構造が
for()
{
for(){}
for(){}{}for()
}

みたいに改行せずに書いてあった場合
構造を読み取るのはプロでも至難の技ですか?
仮に他人が書いたコードがforが2一つの構造で20個以上
使われてるのにこういう改行無しの場合
まずプログラマはどうするんでしょうか?

970 :デフォルトの名無しさん:2016/02/24(水) 09:03:54.80 ID:TNtOGmLO.net
>>968
環境依存

>>969
読みやすいかどうかはちゃんと実際のコードを見ないとわからない
見映えを直したいなら、cb(1)とかindent(1)とか

971 :デフォルトの名無しさん:2016/02/24(水) 09:13:27.42 ID:fFFtJP7c.net
見映えを直すってよっぽど優秀なコンパイラじゃないと無理じゃないんですか?
あまりにも複雑なら勘違いしそう

972 :デフォルトの名無しさん:2016/02/24(水) 09:39:47.53 ID:mma8Yghl.net
コンパイルで見栄えとか何言ってんだ
フォーマッタ使えばいいだろ

973 :デフォルトの名無しさん:2016/02/24(水) 09:49:55.99 ID:TNtOGmLO.net
>>971
indentぐらい入ってないの?

974 :デフォルトの名無しさん:2016/02/24(水) 12:05:20.93 ID:8JHYf/gB.net
まさか手動??
手動でやるってことは構造を解いていくからできるのであって
自動でインデントやってくれる機能ってないんでしょうか?

975 :デフォルトの名無しさん:2016/02/24(水) 12:22:51.75 ID:JjoY/fea.net
構ってちゃんかよあまりにも低レベルすぎ
入門レベルの奴は書き込むなよ

976 :デフォルトの名無しさん:2016/02/24(水) 12:34:06.37 ID:9j05QFbc.net
(入門編なのに…)

977 :デフォルトの名無しさん:2016/02/24(水) 13:12:38.54 ID:FY1/e+a3.net
入門者でも2つ3つ前のレスくらい読めるしググれるだろうよ

978 :デフォルトの名無しさん:2016/02/24(水) 17:06:34.87 ID:FlUhpr/T.net
慌てているのか知れないが、このところ意図が分かりにくい
(要するに日本語が壊れたような)質問が多くないか。

「書き込む」の前に、入力した文章を読み直して、
疑問点が伝わる内容か確認した方が、より適切な回答を得られると思う。

979 :デフォルトの名無しさん:2016/02/24(水) 19:44:04.95 ID:T2ZiLr9a.net
俺が思うにindent(1)の(1)の意味が分かってないんだよ
初心者でLinux使いなんてあんまいないし
詳しくは知らないがManpageの種類の番号
で(1)はユーザーコマンドのことでようは普通のプログラムの名前って意味ね
Windows移植版もきっとどっかにあるよ

980 :デフォルトの名無しさん:2016/02/24(水) 19:51:35.91 ID:+rjhOBbM.net
>>971
いやいや,見栄えを直すのは実は思ったより簡単なんです

981 :デフォルトの名無しさん:2016/02/26(金) 06:56:03.56 ID:bmAp+C+z.net
https://www.youtube.com/watch?v=Na_oFweYBnc
こういうアーケードゲームも組み込みの範囲内ですか?
C/C++でしょうか?

982 :デフォルトの名無しさん:2016/02/26(金) 17:31:26.51 ID:9sT3sFGw.net
>>981
http://www.4gamer.net/games/116/G011678/20120828064/
この記事にアーケードを支えた組み込みエンジニアって書いてるから組み込みが多いのかも、言語は組み込みでならC言語が多くてアセンブリ言語もたまに使われるらしい

983 :デフォルトの名無しさん:2016/02/26(金) 19:16:21.24 ID:z3yCzaKQ.net
最近の筐体はOS入ってる。
そのOSはC/C++が使われていると思うが
ゲーム自体はDirectXやOpenGLが使える言語ならどれでもいい。

984 :デフォルトの名無しさん:2016/02/26(金) 21:00:44.28 ID:bmAp+C+z.net
一昔前はC主流たまにアセンブリで最近はOS入れてDirectX/OpenGLが主流ということですか
ということは組み込みの潮流と同じですね

985 :デフォルトの名無しさん:2016/02/26(金) 21:04:25.89 ID:3qM7nJI0.net
>>963
最適化がかかると結果がどうなるかは全く予想できん
逆アンブルを読んでみるしかない

986 :デフォルトの名無しさん:2016/02/26(金) 21:10:09.82 ID:5zWIUITe.net
>>984
全然違うだろ
DxはAPIなんだから言語えらばねーよ

987 :デフォルトの名無しさん:2016/02/26(金) 22:13:00.21 ID:bmAp+C+z.net
>>986
どう違うのか説明してよ

988 :デフォルトの名無しさん:2016/02/26(金) 22:51:16.87 ID:H4BtjcEZ.net
>>987
マジで言ってるなら、まず組み込みとは何かを調べた方がいいよ

989 :デフォルトの名無しさん:2016/02/26(金) 23:06:47.38 ID:bmAp+C+z.net
>>988
俺はC/AsmからOS+αの流れを把握して勝手に納得したわけだが
なんでAPIの話しになるんだ?

990 :デフォルトの名無しさん:2016/02/26(金) 23:11:06.91 ID:oP1C7qwm.net
wiki 組み込みシステム
ttps://goo.gl/X0z6DS

991 :デフォルトの名無しさん:2016/02/26(金) 23:16:45.43 ID:oP1C7qwm.net
そもそもDirectXやOpenGLが動く環境は汎用OSで組み込み系じゃないと思う。

992 :デフォルトの名無しさん:2016/02/26(金) 23:56:39.52 ID:Fu7p+6vG.net
Quadro突っ込んである意味不明なLinuxルータがあるかも知れんぜ?

993 :デフォルトの名無しさん:2016/02/27(土) 00:27:46.50 ID:oo0AZpTu.net
組み込みの仕事やってみたいお...
ハードとソフト両方使えるなんていいなぁあぁああぁ

994 :デフォルトの名無しさん:2016/02/27(土) 02:47:22.04 ID:vqfa5BWx.net
ほんとに理解したいなら電子回路からやらないと駄目だよ
ソフトから入った人間は大抵中途半端

995 :デフォルトの名無しさん:2016/02/27(土) 03:17:03.89 ID:oo0AZpTu.net
半田付けでさくらんぼ作ったことならあります

996 :デフォルトの名無しさん:2016/02/27(土) 03:41:56.38 ID:oo0AZpTu.net
いや、ブレッドボードとC使ってArduino動かしたことぐらいならあるけど
基盤作って組んだりしてる大学生とか見ると羨ましくなる
こっちは半田付けでさくらんぼ作ってたのにぃぃぃぃいいい

997 :デフォルトの名無しさん:2016/02/27(土) 09:48:59.83 ID:GGk6IaQQ.net
>>993
もし経験がPCのみなら、Raspberry Piくらいからトライすると良いと思う。

998 :デフォルトの名無しさん:2016/02/27(土) 09:55:21.70 ID:qE5vqaqG.net
Arduino使ったことあるのなら大丈夫だろ
ブレッドボードで何を組んだのか分からんけど…

999 :デフォルトの名無しさん:2016/02/27(土) 11:50:31.67 ID:fjoQxCAd.net
電子回路ってどの程度やるの?普通にTTL/C-MOS ロジックゲートが使えればいいレベルでいいの?

1000 :デフォルトの名無しさん:2016/02/27(土) 14:26:48.36 ID:gGvU6VKE.net
論理回路が読めることは必須かな

1001 :デフォルトの名無しさん:2016/02/27(土) 14:37:27.40 ID:fjoQxCAd.net
え,ラダー図やらんといかんの?

1002 :デフォルトの名無しさん:2016/02/27(土) 14:52:13.54 ID:tGnOxt/H.net
君は別にやらなくてもいいよ

1003 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1003
256 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★