C言語なら俺に聞け(入門編)Part 62
レス数が1000を超えています。これ以上書き込みはできません。
★前スレ
C言語なら俺に聞け(入門編)Part 61
http://pc12.2ch.net/test/read.cgi/tech/1267799238/
★過去スレ
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++室 Ver.72【環境依存OK】
http://pc12.2ch.net/test/read.cgi/tech/1267775473/
とか
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 135代目
http://pc12.2ch.net/test/read.cgi/tech/1269438098/
★C++言語についてはなるべく聞かないでください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0002デフォルトの名無しさん
2010/03/25(木) 20:51:200003デフォルトの名無しさん
2010/03/25(木) 20:55:43void main() (爆笑)
0004デフォルトの名無しさん
2010/03/25(木) 21:28:530005デフォルトの名無しさん
2010/03/25(木) 21:29:550006デフォルトの名無しさん
2010/03/25(木) 21:34:190007デフォルトの名無しさん
2010/03/26(金) 01:31:010008デフォルトの名無しさん
2010/03/26(金) 01:43:100009デフォルトの名無しさん
2010/03/26(金) 01:48:13レガシーな慣習だって理由ってわかる人居る?
0010デフォルトの名無しさん
2010/03/26(金) 02:38:390011デフォルトの名無しさん
2010/03/26(金) 03:05:500012デフォルトの名無しさん
2010/03/26(金) 03:27:30わかりませんね。
0013デフォルトの名無しさん
2010/03/26(金) 03:55:050014デフォルトの名無しさん
2010/03/26(金) 04:53:010015デフォルトの名無しさん
2010/03/26(金) 07:50:500016デフォルトの名無しさん
2010/03/26(金) 10:43:070017デフォルトの名無しさん
2010/03/26(金) 11:04:330018デフォルトの名無しさん
2010/03/26(金) 17:23:560019デフォルトの名無しさん
2010/03/26(金) 17:30:55Cはint main
但し親プロセスに返したexit codeは殆どの場合無視される。
数多くの子プロセス達が大量に製造された際に
exit codeの意味がプロセス毎に勝手に定められてしまった
ので、親プロセスがそれを記憶、管理して処理することなど
最早不可能(そのロジックのほうが子プロセスのロジックよ
り遥かに大きくなってしまうだろうから)
0020デフォルトの名無しさん
2010/03/26(金) 17:36:27基本的に正常終了は 0 を返し
それ以外は 1〜255 のいずれかを返す
ってのが作法
make だってプロセスの戻り値によって
途中で止まったりしてるんだよ
0021デフォルトの名無しさん
2010/03/26(金) 17:43:48アプリではそれも良いかもしれないが、そうとも限らな
い領域までカバーせざるを得なくなって久しいじゃね?
0022デフォルトの名無しさん
2010/03/26(金) 17:46:080023デフォルトの名無しさん
2010/03/26(金) 17:48:180024デフォルトの名無しさん
2010/03/26(金) 17:49:43そんときは別の手段でやればいい。
重要なのは、成功は0異常は0以外という大前提があるから
そこから逸脱すんなよという話。
0025デフォルトの名無しさん
2010/03/26(金) 17:54:26仕様だけが硬直化し時代の要請とズレて
いったそのバッチはやがて使われなくな
りソースもろともrm -fな運命に....
0026デフォルトの名無しさん
2010/03/26(金) 18:08:37だから255通りも返せるようにしてるんじゃん
つかむかしから単純に正否だけ返せば言い時代なんてないって
むりから昔の仕様としたいらしいけど
(かなり昔からあるコマンドだっていろいろ返すじゃん)
0027デフォルトの名無しさん
2010/03/26(金) 18:09:38いつの時代だよ、そんなことしてたら並列してコンパイルできないじゃん。
0028デフォルトの名無しさん
2010/03/26(金) 18:10:362010年の話だよばか
0029デフォルトの名無しさん
2010/03/26(金) 18:14:26レガシーな環境が好きなんだな。
今の開発環境では、コンパイルとかリンクごとに main の戻り値なんかみてないからw
0030デフォルトの名無しさん
2010/03/26(金) 18:14:49良いと思ってるならなんでそういう使い方をしないんだ?
0031デフォルトの名無しさん
2010/03/26(金) 18:15:02ほとんどの場合は0または非0で判断している。
意味不明なマジック埋め込まないでくれよまったく。
0032デフォルトの名無しさん
2010/03/26(金) 18:15:29確認したいが、そのmainの戻り値というのはどのmainを指している?
0033デフォルトの名無しさん
2010/03/26(金) 18:15:410034デフォルトの名無しさん
2010/03/26(金) 18:17:12レガシーな環境で、例えばOSがDOSだったら cc.exe とか link.exe とかのリターンコードでしょ。
0035デフォルトの名無しさん
2010/03/26(金) 18:18:430036http://pc12.2ch.net/test/read.cgi/tech/1267799238/816
2010/03/26(金) 18:29:040037デフォルトの名無しさん
2010/03/26(金) 18:30:18cc.exe(爆笑)
0038デフォルトの名無しさん
2010/03/26(金) 18:32:25(もちろん一人でがんばってる彼も含めて)
おまえもさ、あきらめたら?一言ごめんって言えばいいじゃん らくになるぞ
もしくは、もうこないとか
なんでそんな不利な戦いを続けるの?
こんどは無理から古いやり方ってことに持っていく作戦らしいけど
使い方が明確に決まってないの当たり前じゃん
個々のアプリで自由に決めて使えなくてどうすんの?
Windowsで言うところのWM_USERみたいなもんなんだけど
アプリによって返したいものは違うじゃん
な、お前の努力は評価するから、もう謝っちゃえよ
0039デフォルトの名無しさん
2010/03/26(金) 18:32:41OSがDOSの場合なら昔は.exe しかなかったが、
Windows 環境では .dll で実行モジュールを提供することもできる。
そのモジュールからの戻りが1バイトの数値に制限されることはない。
.exe でもメッセージでやり取りできる。他にも方法が色々ある。
そもそも終了時にのみにしかデータが得られないとか制限ありすぎる。
今は実行中も通信する。昔はそういう要求はなかっただろうけど、今では当たり前のこと。
だから今は終了ステータスなど意味のないことの方が多い。
0040デフォルトの名無しさん
2010/03/26(金) 18:33:43できますよ?
0041デフォルトの名無しさん
2010/03/26(金) 18:33:56呼び出し側は何通りの状態を判別して管理しなければな
らないでしょうか?
A:
(2^8)^8=2^64=18446744073709551616通り
で〜すw
0042デフォルトの名無しさん
2010/03/26(金) 18:39:09何が言いたいの?
0043デフォルトの名無しさん
2010/03/26(金) 18:39:360044デフォルトの名無しさん
2010/03/26(金) 18:42:130045デフォルトの名無しさん
2010/03/26(金) 18:42:16もしそれが>>22に対するレスなら、お前は馬鹿ってことになる
0046デフォルトの名無しさん
2010/03/26(金) 18:42:32そもそも make のルールに表現できないんだよ。
make ファイルに記述できないことが make できるはずがないだろ。
0047デフォルトの名無しさん
2010/03/26(金) 18:42:36あなたにとっては無駄に見えるかも知れないけど
私にとってはとても大切な物なの
0048デフォルトの名無しさん
2010/03/26(金) 18:44:09-j オプション知ってる
互いに依存していなければ同時にコンパイルできるんだよ
makefile を適切に書ければの話だがw
0049デフォルトの名無しさん
2010/03/26(金) 18:44:410050http://pc12.2ch.net/test/read.cgi/tech/1267799238/816
2010/03/26(金) 18:47:11お説のとおりではあるが、だからといって void main() が許されるわけではない。
main() のプロトタイプは、main() を呼ぶスタートアップがどういう前提でつくられるのかに依存する。
void main() を前提としているスタートアップであれば、そう書くべきだが、そんな処理系は寡聞にして知らない。
もう一度繰り返すが、main()の返り値が実際に利用されているかどうかは、void main() が許容されるかどうかとなんら関係がない。
0051デフォルトの名無しさん
2010/03/26(金) 18:49:15終了時にしか値を取れないわけじゃないんだけどな、パイプとかいろいろあるし
終了時に値をとるものについての話なんだけどな
dll的なものもあるしね(こいつぜんぜん何も知らんのな)
そういうことと別にして、終了時のステータスをとる場合もあるんだからintにしようぜって話なのにな
0052デフォルトの名無しさん
2010/03/26(金) 18:50:21dll
0053デフォルトの名無しさん
2010/03/26(金) 18:56:14このせりふからもわかるように、こいつ年齢が若いか無知だ、もしかしたら学生とかだろうから
もうほっておこうぜ
彼自身すごい勉強になったろうし
0054デフォルトの名無しさん
2010/03/26(金) 18:59:43>終了時に値をとるものについての話なんだけどな
だから、取れる場合もあるってことでしかない。取れる場合はとったらいいんだよ。
caller と calleeで仕様を決めてる場合には成り立つんだからやればいいじゃん。
けど今の世の中にはそうでない caller も callee が溢れかえってる。
そんな状況で int にしたところで何の意味もない。
両者で仕様の打ち合わせもしてないような callee のプログラムで int にする意味はない。
それ以前に callee として稼働するプログラムだと決めつけるのもおかしい。
0055デフォルトの名無しさん
2010/03/26(金) 19:00:27コマンドラインから打ち込もうなら問答無用で即時実行
してしまい大抵は暴走(要リセットボタン)
0056デフォルトの名無しさん
2010/03/26(金) 19:02:44最初にCのプログラを組んだのはCP/Mですよ。これは趣味だけどね。
その後は商用で Unix で DOS、今は Win がメインで Linux もたまに。
0057デフォルトの名無しさん
2010/03/26(金) 19:04:21もちろんプログラムによっては、使わないのなら意味がないさ
だからといって、わざわざvoidにして良いということではないって話じゃん
どんな場合でもvoidは意味がないのだから、
intにして0でも返すって習慣が正しい
0058デフォルトの名無しさん
2010/03/26(金) 19:06:02callee
0059デフォルトの名無しさん
2010/03/26(金) 19:12:52値を返すという意思があって、そのコードを書くのは当然。
けど、その意志もないのに、値を返すコードを書くのはおかしい。
戻り値でなく main の引数はどうなの?
void で受けたら引数の処理をしないという明確な意思表示なるだろ。
どういう意味で省略してるの?矛盾してないか?
0060デフォルトの名無しさん
2010/03/26(金) 19:13:29趣味の人は普通
98でN88BASICやアセンブラ、そしてDOS
このころからやっとCって流れだよな
大学でCやったにしてもBSDとかだろうし
あるいはAPPLEでThinkCとか
きっとIBMのXTを趣味でもってたとかだろうなぁ
理由はわからんけど
0061デフォルトの名無しさん
2010/03/26(金) 19:14:04そうだろな、これはプログラマにしか通じないからwwwwww
0062デフォルトの名無しさん
2010/03/26(金) 19:14:45その意味での通信ってそれこそ昔からあるだろ
0063デフォルトの名無しさん
2010/03/26(金) 19:15:33頭が腐ってるのか目が腐ってるのかどっちだ?
0064デフォルトの名無しさん
2010/03/26(金) 19:16:26その意味でのcalleeの使い方はおかしいっていってる?
0065デフォルトの名無しさん
2010/03/26(金) 19:16:30値を返す意思が無ければ常に 0 を返せばいいんだよ
途中終了でも exit(0); で抜ければいい
不定値を返すようなマネはすべきではない
0066デフォルトの名無しさん
2010/03/26(金) 19:17:10目が悪いんだな
0067デフォルトの名無しさん
2010/03/26(金) 19:17:24そこはぜひともEXIT_SUCCESSでお願いしたいが、0でいいです。
0068デフォルトの名無しさん
2010/03/26(金) 19:17:44してないよ戻り値にvoidにして値を返さないと意思表示することは意味のないことだから
だってOSが親になんか返すし
引数とは違う引数でvoidにするのはプログラムないぶで使わないという意思表示でしょ
引数と同じように戻り値を使わないと明示的に言いたいなら、親プログラムのほうで戻り値を見ないという動作が等価でしょ
0069デフォルトの名無しさん
2010/03/26(金) 19:18:48callerのtypoだと思うのは今までの流れでありえないと思うし、、
何がいいたいか分からんのではっきり書いてくれないか?
0070デフォルトの名無しさん
2010/03/26(金) 19:19:15>けど、その意志もないのに、値を返すコードを書くのはおかしい。
これは修正する。
けど、その意志もないのに、値を返すコードを書くのはおかしい。という考え方もありだろ。
0071http://pc12.2ch.net/test/read.cgi/tech/1267799238/816
2010/03/26(金) 19:19:50値を返す必要があるかどうかと、void main()が許容されるかどうかとは、関係がない。
void main() が許容されるかどうかは、main() を呼び出すスタートアップがどのような前提でつくられているかにかかっている。
値を返す必要がないからといって、main() リンクされるスタートアップの前提とことなる宣言をするのはおかしいのではないか。
そして void main() を前提とするスタートアップをもつ処理系は寡聞にしてしらない。
0072デフォルトの名無しさん
2010/03/26(金) 19:19:58makeで困るからやめて欲しいんだけど
0073デフォルトの名無しさん
2010/03/26(金) 19:20:13よく見ろよ
見るだけでいい
0074デフォルトの名無しさん
2010/03/26(金) 19:21:10彼の教育?ディベートの練習?
0075デフォルトの名無しさん
2010/03/26(金) 19:22:010076デフォルトの名無しさん
2010/03/26(金) 19:22:07お前一人だぞ世界中で 本当に本当にそうなんだぞ
0077デフォルトの名無しさん
2010/03/26(金) 19:22:52そういう人にとってはそもそもmain()を使ってる時点でレガシーだろ
Windowsだと基本的にWinMainが使われるからmainを使うケース自体がレガシー
0078デフォルトの名無しさん
2010/03/26(金) 19:22:53caller と callee だよ。
直訳すると呼び出し側と呼び出され側。
これは流石に俺でもわかる。一応プログラマだからw
0079デフォルトの名無しさん
2010/03/26(金) 19:23:400080デフォルトの名無しさん
2010/03/26(金) 19:26:04cc.exe
>>51
dll
>>54
callee
お前ら本当にプログラマなのか?
信じらんねぇくらいのヘボだな
0081デフォルトの名無しさん
2010/03/26(金) 19:28:05絶対にいけなくはない、ただ笑われたり馬鹿にされることがある
そもそも意味がない行為なので、あえてvoidを選ぶ理由はないので
呪文だと思って盲目的にintにしておくほうが人生ではベター
>>80
つまんねこと文句つけんなよ、携帯の人とかもいるんだろ
議論で、あきらかな言い間違いを指摘しても議論は進まない
0082デフォルトの名無しさん
2010/03/26(金) 19:29:160083デフォルトの名無しさん
2010/03/26(金) 19:29:30引数も戻り値も void と宣言すれば、その関数の意思表示ができるんだよ。
仮に常に戻り値が void でいいものを全部 int で宣言して、return 0; してる奴がいたらどう思う?
値を返す必要があるときにだけ、返せ!て言いたくなるだろ。それと同じ。
0084デフォルトの名無しさん
2010/03/26(金) 19:29:53単語単位ならギリギリ許せるけど文字単位で混在するなんて
プログラマとしてダサすぎるだろ(笑)
0085デフォルトの名無しさん
2010/03/26(金) 19:32:02すまん、calleeだけは区別ができなかった。2ch見る時はAAのためにプロポーショナル使うんだ。。。
0086デフォルトの名無しさん
2010/03/26(金) 19:32:04引数は受け取り側での意思表示だろ
だから親プログラムで意思表示すべき
>仮に常に戻り値が void でいいものを全部 int で宣言して、return 0; してる奴がいたらどう思う?
関数と違うのはプロセスは
返すつもりはないという意思表示はOSが勝手に返すので意味がない
0087デフォルトの名無しさん
2010/03/26(金) 19:32:10当初は0(正常系)1(異常系)で単純に作れると信じられた←古き良き時代
「そうでもないぜ」というので戻り状態数を中途半端に増やしたら、カオスになって
管理アプリが逃げ出して、管理者が居ないままアプリが通信しあうこと
によって動作する協調動作なアプリの構築になった←昨今
0088デフォルトの名無しさん
2010/03/26(金) 19:34:46なにいってんの?Cの最初からそういうことはできる
フォートランでもできる
そんな古きよき時代はない
>戻り状態数を中途半端に増やしたら、カオスになって
みんな設計書作ってちゃんとやってる、カオスになんかなるかいな
0089デフォルトの名無しさん
2010/03/26(金) 19:37:520090デフォルトの名無しさん
2010/03/26(金) 19:38:52議論が意味不明なので初心者の洩れはここ読んできた
0091デフォルトの名無しさん
2010/03/26(金) 19:39:55カオスになるかどうかとvoid intと関係ないじゃん
0092デフォルトの名無しさん
2010/03/26(金) 19:51:25ANSI-C の規定に従う(そいう仕様が条件なら)当然 int とすべき。
けど、そうでない場合、処理系、C言語が void を認めているのであれば、
void もありだということ。 DOS では当然認められている。
そもも ANSI に準拠する必要があるのであればMS系のコンパイラは使えないことになる。
lattice や borland もそのはず。(こっちは最近のことは知らんが)
0093デフォルトの名無しさん
2010/03/26(金) 19:52:53読み辛い
0094デフォルトの名無しさん
2010/03/26(金) 19:54:05ごめんなさい、見直す前にクリックしてしまった。
0095デフォルトの名無しさん
2010/03/26(金) 19:55:59認められてなくね?明確にダメとはなっていないってだけで
この両者は違うよ
0096デフォルトの名無しさん
2010/03/26(金) 19:56:48レスthx。実際にいろいろやってみた。gcc
/* void main (void), void main() */
hello.c: In function 'main':
hello.c:3: warning: return type of 'main' is not 'int'
/* main (), main (void), int main(), int main(void) */
警告無し
0097デフォルトの名無しさん
2010/03/26(金) 19:58:220098デフォルトの名無しさん
2010/03/26(金) 20:02:560099デフォルトの名無しさん
2010/03/26(金) 20:03:59だねー
0100デフォルトの名無しさん
2010/03/26(金) 20:04:310101デフォルトの名無しさん
2010/03/26(金) 20:05:30コンパイルオプションきつくしたらエラーになる
0102デフォルトの名無しさん
2010/03/26(金) 20:06:14そうそう
それを「単なる警告にすぎない」とか言うのは馬鹿のすること
おまえは湾岸戦争前のサダムフセインかいって思う
0103デフォルトの名無しさん
2010/03/26(金) 20:07:49警告の出るプログラム、書いた覚えはないかい?そのとき必ず間違ったプログラム書いてたかい?
0104デフォルトの名無しさん
2010/03/26(金) 20:10:02thx
>>103
>>96のhello.cが初めて書いたプログラムっす、先輩!
0105デフォルトの名無しさん
2010/03/26(金) 20:11:20しかるところに値が書いてあれば、リターンコードとして取得されるといことが決まっているだけ。
その値の規定はないし、値をセットしなければいけないという規定もない。
>>96
警告出すコンパイラならウザイから int で宣言すればいいと思うけど。
そうじゃない環境のところで void で宣言するのが「あり」か「ない」かだから。
0106デフォルトの名無しさん
2010/03/26(金) 20:11:38-ansi -pedantic -Wall にした上で警告は全て潰してるぜ
警告だから大丈夫って姿勢は罪
0107デフォルトの名無しさん
2010/03/26(金) 20:12:50間違っていないで警告が出ることがあるからといって
この警告もそうと言う事にはならないじゃん
こいつ本当にプログラマーか?
条件分岐とかで穴とか作りやすい人だろうな
0108デフォルトの名無しさん
2010/03/26(金) 20:13:060109デフォルトの名無しさん
2010/03/26(金) 20:13:23なるほど、これが議論の争点だったわけっすね。
0110デフォルトの名無しさん
2010/03/26(金) 20:14:09そうじゃないとメッセージログがいくらあっても足りないからね
intじゃないよと表示されていたとして、間違っているとはかぎらない
実際間違ってないのだしね
0111デフォルトの名無しさん
2010/03/26(金) 20:14:180112デフォルトの名無しさん
2010/03/26(金) 20:15:32それなら、
main(void) と定義しても、argc と argv がスタックに積まれた上で、
main 関数が呼び出されてる。
それを引数で受けないのもおかしいということになる。
0113デフォルトの名無しさん
2010/03/26(金) 20:16:38って事
0114デフォルトの名無しさん
2010/03/26(金) 20:17:58もともとはcodepadだっけ?あれgccだよな
じゃあやっぱintが正解、笑われて当然ってことでFA?
0115デフォルトの名無しさん
2010/03/26(金) 20:19:41ちがーよ、省略した戻り値はintってC言語的に決まってんだよ
引数とは違う、VCもそうだからやってみろ
0116デフォルトの名無しさん
2010/03/26(金) 20:20:29値を返す必要があるかどうかと、void main()が許容されるかどうかとは、関係がない。
void main() が許容されるかどうかは、main() を呼び出すスタートアップがどのような前提でつくられているかにかかっている。
値を返す必要がないからといって、main() リンクされるスタートアップの前提とことなる宣言をするのはおかしいのではないか。
そして void main() を前提とするスタートアップをもつ処理系は寡聞にしてしらない。
0117デフォルトの名無しさん
2010/03/26(金) 20:21:320118デフォルトの名無しさん
2010/03/26(金) 20:23:32intかvoidかのいずれかって仕様できまってるんじゃなかったっけ?
0119デフォルトの名無しさん
2010/03/26(金) 20:24:14あ、そう考えるんだったら。
警告のでない環境ならOKということだね。その言語が認めてるんだから。
そういう環境なら void main() は問題ない。MS系はOK。Unix系もOK。
環境によっては OK 何だから、何が何でも int しないといけないと言うのは間違い。
そういうこと。
はい、終了。さいなら。
0120デフォルトの名無しさん
2010/03/26(金) 20:27:39void main() は問題もないけど
あえてvoidをつかう理由はないし
馬鹿っぽいからintにしましょうって話じゃん
0121デフォルトの名無しさん
2010/03/26(金) 20:29:210122デフォルトの名無しさん
2010/03/26(金) 20:29:45voidは問題だと言う
0123デフォルトの名無しさん
2010/03/26(金) 20:29:55void main() が許容されるかどうかは、main() を呼び出すスタートアップがどのような前提でつくられているかにかかっている。
値を返す必要がないからといって、main() とリンクされるスタートアップの前提とことなる宣言をするのはおかしいのではないか。
関数をコールする場合に呼び出し側と呼び出され側で返り値の型はあわせないといけないというのに、main() だけ別扱いにするのも変な話
0124デフォルトの名無しさん
2010/03/26(金) 20:30:38intかvoidかのいずれかって仕様できまってるんじゃなかったっけ?
0125デフォルトの名無しさん
2010/03/26(金) 20:32:47チンポ出して歩くほど悪いことではない
でもシャツを裏返しくらいのかっこ悪さはある
(もしかしたらそういうファッションの国もあるかも 知らないけど)
別に違法ではないし使い方も間違っている、が本人がきにしないなら、すれば
って事だよね
int信者だってww
絶対許さないとか誰も言ってないじゃん 使い道あるよとか、仕様ではダメななんよとかその程度で
0126デフォルトの名無しさん
2010/03/26(金) 20:34:150127デフォルトの名無しさん
2010/03/26(金) 20:34:21事実上レジスター渡しであるのでどっちでも呼び出し時点でのスタックの状態はかわらない、ということはある。
ただし、値を返すから int main(), 値を返さないから void main() とするのは、筋としてとおらず、c 言語のセンスのない発言だと思う。
0128デフォルトの名無しさん
2010/03/26(金) 20:35:050129デフォルトの名無しさん
2010/03/26(金) 20:35:51たとえが意味不明。呼び出し側の仮定と異なる宣言を呼び出され側でしていいのか?というところを問うているだけ。
0130デフォルトの名無しさん
2010/03/26(金) 20:36:09俺もそうだった
>>108
-ansi と -std=c89 は同じ意味では?
0131デフォルトの名無しさん
2010/03/26(金) 20:39:12そもそも規格 JIS X3010:2003 5.1.2.2.1 ではどうなっているのか、それを踏まえたうえでの発言のつもりではあるが、なにか?
0132デフォルトの名無しさん
2010/03/26(金) 20:41:010133デフォルトの名無しさん
2010/03/26(金) 20:41:49わかれよ、シャツのメーカーや社会通念での仮定と異なる着方をしていいのかって比喩だよ
0134デフォルトの名無しさん
2010/03/26(金) 20:42:180135デフォルトの名無しさん
2010/03/26(金) 20:47:33main() 以外の extern な関数呼び出しでは呼び出し側と呼び出され側で返り値の型をあわせるというのに 「main() のときだけあわせなくてもよい」と主張するのは首尾一貫性がない。
規格があってもそれを理解できないのは、コンピュータ言語に対するセンスがないとしかいいようがない。
0136デフォルトの名無しさん
2010/03/26(金) 20:50:20フリースタンディングではvoid main()と書け、とマニュアルにあったりするんだよ。少ないけどな。
処理系に依存っていう超簡単な結論がわかってるのに、何で無限ループさせんの?
0137デフォルトの名無しさん
2010/03/26(金) 20:52:09>規格があってもそれを理解できないのは、コンピュータ言語に対するセンスがないとしかいいようがない。
自問自答www
0138デフォルトの名無しさん
2010/03/26(金) 20:53:19ほう、そんな環境はなにか後学のために知りたいもの。
で、http://pc12.2ch.net/test/read.cgi/tech/1267799238/815 がその上で走るんですかね?
0139デフォルトの名無しさん
2010/03/26(金) 21:01:51おいおいバグだらけじゃねーか
コンパイルできないぞCでもC++でも
0140デフォルトの名無しさん
2010/03/26(金) 21:05:05入門スレなんだから、別にいいだろ。
前スレの815をディスるのはやめよう。
0141デフォルトの名無しさん
2010/03/26(金) 21:05:22その環境はつまりANSI-Cに準拠していないというだけだよな?
それは今相手にしていないと思う
0142デフォルトの名無しさん
2010/03/26(金) 21:06:030143デフォルトの名無しさん
2010/03/26(金) 21:07:300144デフォルトの名無しさん
2010/03/26(金) 21:09:19intが仕様である証拠もってこいや
プロセスの戻り値は使わないほうが(精神衛生上)良い
0か1に決まってるからOK
Windowsでは意味なし
戻り値は使えたり使えなかったりする
古い人のやりかた
そんなのを使ったらプログラムがカオスになる
値を返さない場合の明示としてあり
警告だけだからOK
俺の知ってる環境ではマニュアルでvoidって書けって言ってる
全部否定されて、だいぶ戦線が後退してるじゃん
最後のは脳内環境ではvoid推奨って事でしょ 泣き入ってるじゃん
もうゆるしてやれば?
0145デフォルトの名無しさん
2010/03/26(金) 21:14:49ダメだったら違反、じゃないんだけど?
いずれか、なんだから。
0146デフォルトの名無しさん
2010/03/26(金) 21:15:07「処理系依存のmain()」はC規格に含まれている。ただしC99から。
それ以前はvoid main()は未定義とされている。
0147デフォルトの名無しさん
2010/03/26(金) 21:15:170148デフォルトの名無しさん
2010/03/26(金) 21:18:17あるいは日本語を正しく解釈できないか。
0149デフォルトの名無しさん
2010/03/26(金) 21:20:450150デフォルトの名無しさん
2010/03/26(金) 21:20:47どっちの味方だよ!
0151デフォルトの名無しさん
2010/03/26(金) 21:22:11こんどはオカルト持ち出すか?voidが出たらレンズ豆とキャベツと豚のスープでも食うのか?
0152デフォルトの名無しさん
2010/03/26(金) 21:26:33codepadでvoid mainを書くやつを擁護できないってのは両軍ともOK?
0153デフォルトの名無しさん
2010/03/26(金) 21:27:25熱いスープは欲しいな
0154デフォルトの名無しさん
2010/03/26(金) 21:28:130155デフォルトの名無しさん
2010/03/26(金) 21:30:33mainを呼ぶ側のことなんて気にせず、戻り値の必要がなければvoid mainで問題ないというのがvoid派の意見かと
0156デフォルトの名無しさん
2010/03/26(金) 21:32:130157デフォルトの名無しさん
2010/03/26(金) 21:33:290158デフォルトの名無しさん
2010/03/26(金) 21:34:430159デフォルトの名無しさん
2010/03/26(金) 21:36:51void派一人(いても2人)
int派はいっぱいいると思う 一回だけ書いてもう見てるだけどか
0160デフォルトの名無しさん
2010/03/26(金) 21:37:46そもそも初心者向けの解説本とかWebサイトで
void mainが書かれるようになったのは何でなの?
ざっと流れを読むと
int mainが(基本)正しくて、void mainは環境に依存した極めて特殊な場合なんでしょ
0161デフォルトの名無しさん
2010/03/26(金) 21:38:380162結論
2010/03/26(金) 21:38:41void mainは別に間違いというわけではない
0163デフォルトの名無しさん
2010/03/26(金) 21:39:590164デフォルトの名無しさん
2010/03/26(金) 21:40:51おれint派だけど、俺が書いてる間に結構スレが進む
俺外に4,5人はいると思う
0165デフォルトの名無しさん
2010/03/26(金) 21:41:00今いそがしいからよそで聞け
0166デフォルトの名無しさん
2010/03/26(金) 21:41:57悪い本がでまわったようですね。
0167デフォルトの名無しさん
2010/03/26(金) 21:42:25fopenしてwhileでfgetが簡単だと思う
0168デフォルトの名無しさん
2010/03/26(金) 21:42:56ということにしたいのですね。
0169デフォルトの名無しさん
2010/03/26(金) 21:44:240170デフォルトの名無しさん
2010/03/26(金) 21:45:16fopenしてfseekして最後まで行って差を調べてサイズ計算して
fseekで先頭まで戻って
サイズ分mallocして、それを配列にキャストして
freadでそのポインタにサイズ分読む
ファイルが小さいならmallocしないでもいいかも配列のサイズ分読むだけで
0171デフォルトの名無しさん
2010/03/26(金) 21:45:36fopen ファイルを開く
fseek ファイルの末尾に移動する
ftell 現在位置が何バイト目か調べる => ファイルサイズ
malloc 領域を確保する
fseek ファイルの先頭に移動する
fread 読み込む
fclose ファイルを閉じる
free 使い終わった領域を解放する
0172デフォルトの名無しさん
2010/03/26(金) 21:46:30void mainが正しい という環境はきわめて特殊だけど
void mainでも困らない という状況はそこそこ多い。
今は大丈夫でもあとで困る ってのもよくあるけどな。
0173デフォルトの名無しさん
2010/03/26(金) 21:47:40mainなんかどうでもいいだろ
0174デフォルトの名無しさん
2010/03/26(金) 21:48:390175デフォルトの名無しさん
2010/03/26(金) 21:49:23int をレジスタ渡しとしていたのなら、int を返り値にしようが、void だろうが呼び出し時点のスタック構造はかわらないし。
0176デフォルトの名無しさん
2010/03/26(金) 21:51:53PHPのfileの動作を知らんのであった
0177デフォルトの名無しさん
2010/03/26(金) 21:52:420178デフォルトの名無しさん
2010/03/26(金) 21:52:540179デフォルトの名無しさん
2010/03/26(金) 21:53:56テキストモードだと違う
0180デフォルトの名無しさん
2010/03/26(金) 21:54:460181デフォルトの名無しさん
2010/03/26(金) 21:55:10おちつけ
0182デフォルトの名無しさん
2010/03/26(金) 21:56:050183デフォルトの名無しさん
2010/03/26(金) 21:58:46何で頑なにvoid mainを肯定しようとするのか?
流れを見てると別にvoid mainを使いたきゃ使ってもいいが
公然と肯定しようとする姿勢がダメだって言われてるんじゃねぇの?
初心者にも悪影響を及ぼしかねないし。
0184デフォルトの名無しさん
2010/03/26(金) 21:59:51whileで回してfgetsでバッファに取り込んで
改行コードしだいで
buf[strlen(buf)-1]='\0+; みたいな事やって改行つぶして
文字列ならstrcpy 数字なら直で配列に代入とかやらないと
0185デフォルトの名無しさん
2010/03/26(金) 22:00:52AAか俺に嫌われてるワードがあるに違いない!
0186デフォルトの名無しさん
2010/03/26(金) 22:00:58↓
buf[strlen(buf)-1]='\0;
なんか+がくっついた 意味はないよ
0187デフォルトの名無しさん
2010/03/26(金) 22:03:59それに、int派の言い分も、void mainを使いたきゃ使ってもいいというのは違う。
void mainが仕様として許されている環境であれば別に使ってもいいよ?程度かなー。
0188デフォルトの名無しさん
2010/03/26(金) 22:05:55くっついたんじゃなくて'が変身したんじゃないの?あと、セミコロンが全角だから誰かが怒るかもしれない
0189デフォルトの名無しさん
2010/03/26(金) 22:07:00あとvoidの人が、ああいえばこういうでゴネまくったのも原因じゃね
0190デフォルトの名無しさん
2010/03/26(金) 22:08:24あとintの人が、ああいえばこういうでゴネまくったのも原因じゃね
0191デフォルトの名無しさん
2010/03/26(金) 22:09:42あ、本当だね
こういうのC++で書くとCよりラクチンだよな、とか言うとまた揉めるから具体的には言わないけど
PHPしかしらない人かもしれないから言うけど、C++でも良いなら、そっちのスレに行って聞いたほうが良いと思うよ
0192デフォルトの名無しさん
2010/03/26(金) 22:11:22ってどういう用途がありますか?
0193デフォルトの名無しさん
2010/03/26(金) 22:11:37int mainの方がより汎用的なコードである、というのがint派の理想系だろうか
0194デフォルトの名無しさん
2010/03/26(金) 22:15:49と卵から孵った雛が最初に見た物を親と思うように
生涯それだけを盲信してしまうのは如何なものかと思いますが。
0195デフォルトの名無しさん
2010/03/26(金) 22:16:35ポインタのポインタのポインタのポインタをいじりたいとか
「どうだ俺ってすげえだろ」って言って
「はいはい」って言われたいときとか
0196デフォルトの名無しさん
2010/03/26(金) 22:18:310197デフォルトの名無しさん
2010/03/26(金) 22:21:040198デフォルトの名無しさん
2010/03/26(金) 22:23:08そういう場合も仲にはありますよって事でしょ
Unix、Windowsではintなんだし
妄信してたほうがたぶん正解だよなぁ
0199デフォルトの名無しさん
2010/03/26(金) 22:23:290200デフォルトの名無しさん
2010/03/26(金) 22:26:12そうするのならvoid mainはなにがあってもだめだと言わないと。
0201デフォルトの名無しさん
2010/03/26(金) 22:26:240202デフォルトの名無しさん
2010/03/26(金) 22:28:38たとえば人に教えるときに
「いいからintって書いとけ」って言うのありでしょ
英単語でもさ、すんげえ細かい外人も知らないような意味まで覚えようとしてる人っているじゃん
それみたいにならないように
0203デフォルトの名無しさん
2010/03/26(金) 22:29:07擬似的に3次元の配列を動的に確保してその変数を間接参照したいとき
例えば関数に渡すときなど
foo_t
foo(fooo_t fooo)
{
foooo_t ***foooo;
foo_t foo;
foooo = allocate(fooo);
foo = something(&foooo);
return foo;
}
foo_t
something(foooo_t ***const*foooo)
{
(void)*foooo;
return something0();
}
3つまでは、しばしば使うけど、さすがに4つは使ったことが無いわ
本当はconst修飾したいから、できれば1次元で扱いたいことがしばしばある
0204デフォルトの名無しさん
2010/03/26(金) 22:31:09intリターンを認めない環境ってあるの?
0205815
2010/03/26(金) 22:31:28すみません。なんか荒れてるみたいなんでビックリしました…(・_;こ、こわい…
void main() ですが、書いた理由は「めんどくさかったから」です… あ、モノ投げないで(つ_<
すみません。深い意味なんて何一つないです。むしろ、なにも考えて無いです。ばかなので。
単に「10進から16進に変換する関数がちゃんと計算してくれるかな〜?」って確認する程度の軽い気持ちで、
ソースの一番下に適当に
void main(){printf("%s", 10sin_kara_16sin("65535"));}
っと書いてコンパイルして確認したのを、
「ついでだから16進から10進も…」とか「2進から10進も…」とか「あれ?これ全部同じ式ぢゃない?」とか、
「入力めんどくせぇなぁ〜…」って思ったので「こうすれば入力ラクだなぁ〜」って思いついた書き方を適当に足して…
ってやってったら、いつのまにかちょっとしたおもちゃが出来たので、
「(^_^;あ、こりゃおもしろいかな…?」くらいの軽い気持ちでUPしたんですが、
おもしろがられるどころか、怒られるとわ…(・_; …いや、別の意味でオモシロがられてますがorz …し、しにたいw
すみません、こんどから int main(){return 0;} って書きますから許してください。ごめんなさいでした。
0206デフォルトの名無しさん
2010/03/26(金) 22:33:22あなたのせいでもめてるんじゃない。
void mainを馬鹿にしたint派のせいだよ
0207デフォルトの名無しさん
2010/03/26(金) 22:33:36危なそうな非武装地域には近づかず
地雷の心配の無いところでフラフラするのが一番いいよね
0208デフォルトの名無しさん
2010/03/26(金) 22:34:18とかつこんじゃいけないんだろうな
収束させたいみたいだし
0209デフォルトの名無しさん
2010/03/26(金) 22:35:31int mainに対して、戻り値どうでもいいからvoid mainにしろよwのようなレスはつかない。
0210デフォルトの名無しさん
2010/03/26(金) 22:38:100211デフォルトの名無しさん
2010/03/26(金) 22:41:54戻り値をどうするかは呼出側の問題でしょ。
0212デフォルトの名無しさん
2010/03/26(金) 22:43:48だからお前は分かっていないといわれるんだ
0213デフォルトの名無しさん
2010/03/26(金) 22:44:25なぜ?
0214デフォルトの名無しさん
2010/03/26(金) 22:45:240215815
2010/03/26(金) 22:45:26こんどから int main() って書きますから〜〜… もぅ、それでいいじゃないですか…(^_^/ぽんぽん
0216デフォルトの名無しさん
2010/03/26(金) 22:45:34それを使うのはちょっと意味合いが・・・
0217デフォルトの名無しさん
2010/03/26(金) 22:47:180218デフォルトの名無しさん
2010/03/26(金) 22:47:23基数変換なんていう基本的なものに目を通す人は
例外なく初心者だから注意した方がいいね
脱したての方達に絡まれる可能性大
void main()の他に
goto、scanf、fscanf、rand()%N
誰の目に触れるか分からないソースは避けた方が無難
0219デフォルトの名無しさん
2010/03/26(金) 22:48:100220デフォルトの名無しさん
2010/03/26(金) 22:48:130221デフォルトの名無しさん
2010/03/26(金) 22:49:34後学のために教えて
0222デフォルトの名無しさん
2010/03/26(金) 22:50:190223デフォルトの名無しさん
2010/03/26(金) 22:51:22getsはバッファオーバーランの危険性をはらんでおり、この関数を常に悪とする派もある
0224デフォルトの名無しさん
2010/03/26(金) 22:52:24スクリプトとかで呼ばれて、戻り値でエラー処理するなら必要かも
そんな高度なことするのがここに何人いるやら
0225デフォルトの名無しさん
2010/03/26(金) 22:53:19まだ繰り返したいの?馬鹿なの?
0226デフォルトの名無しさん
2010/03/26(金) 22:54:31char ***v;
までなら実用的に使用したことがあります。シェルを作っていて、execv() に渡す引数を準備する場合でした。
さすがに4重のポインタは思い当たりません。
0227デフォルトの名無しさん
2010/03/26(金) 22:54:52なるほど そうだね
乱数の偏りは、あれはあれで便利なんだけどね
ある程度決まった乱数(ってへんな言い方だけど)が欲しいときとか
世の中の事象ってわり偏ってるし
0228デフォルトの名無しさん
2010/03/26(金) 22:55:40上から下まで激しいと言うが、このスレはもう下ばっかりじゃねぇか。
これならP言語スレのがマシだろ。
0229デフォルトの名無しさん
2010/03/26(金) 22:55:59false && ls
true && ls
をやってみるといいたいことが分かるかもしれない
0230デフォルトの名無しさん
2010/03/26(金) 22:56:51偏りではなく、規則性なんだ。この差は大きいよね?
0231デフォルトの名無しさん
2010/03/26(金) 22:57:540232デフォルトの名無しさん
2010/03/26(金) 22:58:11お前らも俺俺malloc/freeって作ったことあるよね
0233デフォルトの名無しさん
2010/03/26(金) 22:59:090234http://pc12.2ch.net/test/read.cgi/tech/1267799238/816
2010/03/26(金) 22:59:36ごめんなさいね。つい void main() てのをみると反応してしまったわけでして。
まあネタです、ネタ、ネタ。それが証拠に、こんなに荒れてしまったでしょ。釣り人としては大成果でした。
これにこりずにばんばんコードを書いて腕を上げてください。void main() なんてこだわることじゃあない。
(って私がいうか。)宿題スレでお待ちしております。
void main() (爆笑) はもうおしまい。
0235デフォルトの名無しさん
2010/03/26(金) 23:00:17やるな
けど、わずか10分足らずでサンプルまでかけるとはやるな!
>>195
のポインタのポインタのポインタのポインタを云々と言ってる奴とは
一線を画してるな
0236デフォルトの名無しさん
2010/03/26(金) 23:00:510237デフォルトの名無しさん
2010/03/26(金) 23:00:57偏りのある乱数を作りたいときは、大抵は思惑があるから
ライブラリ任せにせずに自分で思い通りに偏らせないか?
0238デフォルトの名無しさん
2010/03/26(金) 23:03:45小さい種さえ覚えとけば大きい規則的なデータが手に入るわけだから
最近はディスクスペースもでかいから、今ではあんまり役に立たないだろうけど
0239デフォルトの名無しさん
2010/03/26(金) 23:06:150240デフォルトの名無しさん
2010/03/26(金) 23:07:19あるあるwww
なんか一生懸命考えて作ってもK&Rに全然勝てないのなwww
0241デフォルトの名無しさん
2010/03/26(金) 23:08:42ないわ。
0242デフォルトの名無しさん
2010/03/26(金) 23:08:53もちろん自分でも偏らせるんだけど人為的にやりすぎるじゃん
偏りの思惑のわからない偏ったデータが欲しいときがあったんで
0243デフォルトの名無しさん
2010/03/26(金) 23:10:06だから偏りじゃなくて規則性が問題なんだって
0244デフォルトの名無しさん
2010/03/26(金) 23:12:31おまえプログラム禁止でいいわ。
0245デフォルトの名無しさん
2010/03/26(金) 23:15:49どんな用途?
0246デフォルトの名無しさん
2010/03/26(金) 23:16:05まあ機能的に豪華にするみたいなことはよくやったな。
malloc()とcalloc()とrealloc()をひとまとめにして引数で自動的に処理振り分けるラッパーとかね。
0247デフォルトの名無しさん
2010/03/26(金) 23:18:37このマクロって何をやっているのでしょうか。
0248デフォルトの名無しさん
2010/03/26(金) 23:20:080249デフォルトの名無しさん
2010/03/26(金) 23:25:45なんでそんなこと聞くの?
統計とった結果から自動で傾向を調べるんだけど
実際にうまく行くかどうかを調べる時にデバック用データとして
人為的に作ったデータだと人間が思いつくことの範囲を超えられない
つまりうまく行くことがわかってることしか確認できないから
適当な統計データがわんさかあればそんな事必要ないんだろうけど
0250デフォルトの名無しさん
2010/03/26(金) 23:26:57http://www001.upp.so-net.ne.jp/isaku/rand.html
とりあえずここのLSBについて言及してるとこ見てみたら?
0251デフォルトの名無しさん
2010/03/26(金) 23:38:29ポートピア連続殺人事件とかも容量の節約のために規則的な乱数(w)をそのまま音楽として流してて
単純に移植すると曲が変わっちゃうとかあったはず
あれはプログラムのバイナリの適当なところだったかな
0252デフォルトの名無しさん
2010/03/26(金) 23:39:58あとはドラクエなんかもそんな感じだったなたしか
0253デフォルトの名無しさん
2010/03/26(金) 23:41:27意味不明だな。
0254デフォルトの名無しさん
2010/03/26(金) 23:43:480255デフォルトの名無しさん
2010/03/26(金) 23:44:45こういうの思い出した
0256デフォルトの名無しさん
2010/03/26(金) 23:44:59だって詳しく言いたくねーもの
でも意味不明ってことはないだろ
推測できるだろプログラマなら
行があいてるところはつなげてよんじゃダメだよ
0257デフォルトの名無しさん
2010/03/26(金) 23:45:39認識せずに使っているのが問題なんだよ。
だから偏りだの規則性だのは些末なことです。
0258デフォルトの名無しさん
2010/03/26(金) 23:53:46君のママじゃないんだから
独自の書き込み規約を押し付けられても分からんよw
>>251-252の言うようなゲーム用途ならいいんだ。
逆にメリットになりえるからね。
249の用途はやはり意味不明だよ。
0259デフォルトの名無しさん
2010/03/26(金) 23:55:02エミュレータがrandのライブラリも真似てれば良いのか
0260デフォルトの名無しさん
2010/03/26(金) 23:58:53いや、乱数の規則性を使ってる。
>>259
うん。逆に移植は面倒になっちゃう。というか、移植する時にはそのロジックを放棄してマップデータ持っちゃうだろうねw
0261デフォルトの名無しさん
2010/03/26(金) 23:59:07>独自の書き込み規約を押し付けられても分からんよw
別に押し付けたんじゃなくてさ、なんで意味不明なのかな?
あ、こいつ俺の文章を空行のtころをつなげて読んでるのかなって思っただけ
だから書き込み規約ではないよ
詳しくは言いたくないから意味不明でも良いよ
そもそもなんでそんなこと訊くんだ?言いたくねーよって思ってるし
それでぼんやりしてる部分はあったかもね
0263デフォルトの名無しさん
2010/03/27(土) 00:03:00配列aの要素サイズが1である場合、配列の要素を注意深く取得するマクロ
0264デフォルトの名無しさん
2010/03/27(土) 00:05:40突っ込み待ちをしているマクロと言いたいところだが、
実際は範囲オーバーを検出しつつ配列に値を代入するのに使うんだろうな。
0266デフォルトの名無しさん
2010/03/27(土) 00:08:12ちなみに
#define A(index) if(index>sizeof(a)/sizeof(a[0]))printf("aerror(%d,%d)",index,__LINE__);a[index]
とすることで発生しているかもしれない問題を解決できるかもしれない
0267デフォルトの名無しさん
2010/03/27(土) 00:11:32か。連投すまん。
0268デフォルトの名無しさん
2010/03/27(土) 00:16:00なんちゃってmalloc書いてみたw
0269デフォルトの名無しさん
2010/03/27(土) 00:16:380270デフォルトの名無しさん
2010/03/27(土) 00:17:46char hoge;
hoge = A(3);
A(5) = 'a';
0271268
2010/03/27(土) 00:22:37あと全体の大きさは0x1000までです。
一番最初の大元のメモリー領域はmallocで得てます。
mallocが使えない環境なら static P* pl; を static P[MPM*BBS]ってすれば、たぶんだいじょぶかもしれません。よくわかりませんがw
0272デフォルトの名無しさん
2010/03/27(土) 00:24:59あの言葉を言って欲しくてワクテカしてるだろうから俺は言わない
0273デフォルトの名無しさん
2010/03/27(土) 00:27:49それがvoid mainだとしたら見当違いだな
0274デフォルトの名無しさん
2010/03/27(土) 00:40:49#include <time.h>
#include <time.h>
void main(void){
char *(res[])={"void main(void)(藁)","int main(int argc,char **argv)はレガシー",
"int派は糞","void派は高度なアプリ組んだ事ないだろ","void mainを馬鹿にするな",
"プロセスの戻り値なんて使わねーよ","GetExitCodeって知ってる?","Windowsでは意味ねぇよ","古い人のやり方","0か1に決まってるからOK","カオスになるぞ","警告だけだからOK",
"マニュアルでvoidって書けっていわれてる","警告だけだからOK","2^64もの状態どうやって管理するんだよ","intが仕様である証拠もってこいや","規格票ではint main",NULL};
NULL};
int index=-1;
srand(time(NULL));
for(;;){
index++;
if(res[index]==NULL)index=0;
if( rand() & 32==0) printf("%s¥n",res[index]);
}
return;//0;
}
0275デフォルトの名無しさん
2010/03/27(土) 00:44:180276デフォルトの名無しさん
2010/03/27(土) 00:51:04俺、int派だったけど、さすがに夜中にこんなの作ってるパワーないわwww
0277デフォルトの名無しさん
2010/03/27(土) 00:56:150278デフォルトの名無しさん
2010/03/27(土) 00:56:42char main(void)、char* main(void)、 void* main(void)....
これらってコンパイルできるのか知らんが
0279デフォルトの名無しさん
2010/03/27(土) 00:59:10使うCコンパイラのマニュアル読めってだけの話だろ。
0280デフォルトの名無しさん
2010/03/27(土) 00:59:290281デフォルトの名無しさん
2010/03/27(土) 01:10:040282デフォルトの名無しさん
2010/03/27(土) 01:22:29そういうのは規則性じゃなくて再現性っていうんだ
覚えとけドアホ
0283デフォルトの名無しさん
2010/03/27(土) 01:26:30そういう態度がいけないんだよ。
戻り値を使わせる気が無いならとりあえず0返しとけ。
0284デフォルトの名無しさん
2010/03/27(土) 01:32:540285デフォルトの名無しさん
2010/03/27(土) 02:49:05規則性と偏りを一緒くたにしてるやつを叩けよwww
0286デフォルトの名無しさん
2010/03/27(土) 03:03:02その中で↓の書き込みを見つけました。constは定数であるのにもかかわらず、デバッカで見る値とはなんでしょうか?
52 名前: デフォルトの名無しさん [sage] 投稿日: 2010/03/07(日) 10:55:25
defineはコンパイル時に置き換えてくれるだけ
だからマクロとして使えるし、関数丸ごとdefineしてみるとか変なこともできる
__LINE___や__TIME___みたいなコンパイル時に決まるやつもある
事項時はもうすでに置き換わっているのでaaaaとかって名前でdfineしてデバッカでaaaa探してもない
constはメモリ上に固定でそいつがずっといるだけ
つまりデバッカで値も見れる
0287デフォルトの名無しさん
2010/03/27(土) 03:25:59変更できない変数
0288デフォルトの名無しさん
2010/03/27(土) 09:09:18白黒2値画像で、MMR符号化(圧縮)されています。
MMR符号化を解読するソースなど教えてください。
0289デフォルトの名無しさん
2010/03/27(土) 09:25:310290デフォルトの名無しさん
2010/03/27(土) 09:39:56ほれ
ttp://www.libtiff.org/
0291デフォルトの名無しさん
2010/03/27(土) 09:41:40ttp://q.hatena.ne.jp/1081477823
0293デフォルトの名無しさん
2010/03/27(土) 10:47:510294デフォルトの名無しさん
2010/03/27(土) 10:51:24↓
0295デフォルトの名無しさん
2010/03/27(土) 11:00:540296デフォルトの名無しさん
2010/03/27(土) 11:04:09普通の人なら、キーワードだけ教えてもらえば
あとはなんとかなるんだよ。
1から10まで教えてクンだとこうはいかないが。
0297デフォルトの名無しさん
2010/03/27(土) 11:05:58B:「△△」
A:「クスコ」
2chのあるべき姿ってこうじゃね?
0298デフォルトの名無しさん
2010/03/27(土) 11:16:41間違ったキーワードを渡された事に関してはどう思ってる?
0299デフォルトの名無しさん
2010/03/27(土) 11:20:390300デフォルトの名無しさん
2010/03/27(土) 11:20:520301デフォルトの名無しさん
2010/03/27(土) 11:23:430302デフォルトの名無しさん
2010/03/27(土) 11:23:530303デフォルトの名無しさん
2010/03/27(土) 11:25:490304デフォルトの名無しさん
2010/03/27(土) 11:29:44たとえキーワードが間違っていても、そこから
正解に続くキーワードへのとっかかりになる。
たぶん、
0305デフォルトの名無しさん
2010/03/27(土) 11:29:510306デフォルトの名無しさん
2010/03/27(土) 11:32:24よく言うだろ?お前がそう思うんならそうなんだろお前ん中ではなと
0307デフォルトの名無しさん
2010/03/27(土) 11:39:30間違ってりゃ再度質問しにくるか誰かが横槍入れるだろ
1対1でチャットしてんじゃないんだから
お前はゆとりか
0308デフォルトの名無しさん
2010/03/27(土) 11:40:56お前は文盲か
0309デフォルトの名無しさん
2010/03/27(土) 12:13:21お前は俺かっ!
0310デフォルトの名無しさん
2010/03/27(土) 12:27:40間違ってるぜ(ニヤニヤ)
って態度にむかつくんだよ
0311デフォルトの名無しさん
2010/03/27(土) 12:30:02なぜ誰も正解を出さずこんな結果になってるか、わかってないからむかつくんだろ
0312デフォルトの名無しさん
2010/03/27(土) 12:32:070313デフォルトの名無しさん
2010/03/27(土) 12:34:56そんな世の中じゃ
0314デフォルトの名無しさん
2010/03/27(土) 13:09:04横槍は大三者が入れる者で当事者が入れたら横槍とは言わんのだよ君
0315デフォルトの名無しさん
2010/03/27(土) 13:14:18質問者、間違った解答をした人、そしてつっこみをした俺
へえ。俺は当事者なのか。どんな状態なら横槍を入れることができるんだろう。
0316デフォルトの名無しさん
2010/03/27(土) 13:15:510317デフォルトの名無しさん
2010/03/27(土) 13:17:18お互いに暇だよねぇ
何して遊ぼうか?
0318デフォルトの名無しさん
2010/03/27(土) 13:18:200319デフォルトの名無しさん
2010/03/27(土) 13:19:280320デフォルトの名無しさん
2010/03/27(土) 13:20:140321デフォルトの名無しさん
2010/03/27(土) 13:30:52聞きたいことあるんだけど、質問していいの??
0322デフォルトの名無しさん
2010/03/27(土) 13:33:240323デフォルトの名無しさん
2010/03/27(土) 13:35:170324デフォルトの名無しさん
2010/03/27(土) 13:55:19質問したければ黙って書けばいい
質問が無いから雑談やってる
雰囲気が嫌なら教えてgooでもどこでも行けばいい
いちいち聞くな
0325デフォルトの名無しさん
2010/03/27(土) 13:58:130326デフォルトの名無しさん
2010/03/27(土) 14:07:08横槍入れんなボケ
0327デフォルトの名無しさん
2010/03/27(土) 14:07:400328デフォルトの名無しさん
2010/03/27(土) 14:10:36ホリエ豚が居たとこ
0329デフォルトの名無しさん
2010/03/27(土) 14:13:09質問なんて横槍入れるなよ
0330デフォルトの名無しさん
2010/03/27(土) 14:33:06ついに出来ました!!
ポケコン使用ですが
http://beebee2see.appspot.com/i/agpiZWViZWUyc2VlchQLEgxJbWFnZUFuZFRleHQY_aNkDA.jpg
0331デフォルトの名無しさん
2010/03/27(土) 15:21:14world
と印字されてるだけじゃんw
0332デフォルトの名無しさん
2010/03/27(土) 15:30:540333デフォルトの名無しさん
2010/03/27(土) 15:45:31だいぶ前からCの動くポケコンあるね。
0334デフォルトの名無しさん
2010/03/27(土) 16:02:02俺はエッチしてえんだよ!
0335デフォルトの名無しさん
2010/03/27(土) 16:31:28http://site.icu-project.org/
これって何するもの?
ウニコードコンバータって……意味わからなす
0336デフォルトの名無しさん
2010/03/27(土) 16:40:490337デフォルトの名無しさん
2010/03/27(土) 16:45:45まだまだですがこれから頑張って勉強して
まずはテトリスぐらい作れるようなりたいです!
0338デフォルトの名無しさん
2010/03/27(土) 16:46:28ちゃんとC言語つかってコンパイルしました
0339デフォルトの名無しさん
2010/03/27(土) 17:00:12http://www.google.co.jp/search?hl=ja&q=icu
ICU 国際基督教大学
icuに関連する検索キーワード
icu 偏差値 icu w3 ICU症候群 ICUとCCU ICU教会
ICU 対策 ICUシンドローム hcu icu 違い ICU祭 icu ibm
0340デフォルトの名無しさん
2010/03/27(土) 17:01:15いちいち相手にすんな
0341デフォルトの名無しさん
2010/03/27(土) 17:07:14何処か間違っていますか?
最後の括弧は消しました
0342デフォルトの名無しさん
2010/03/27(土) 17:10:330343デフォルトの名無しさん
2010/03/27(土) 17:11:18×%dテス
○%dデス
ギャグはさておき、エラーが出るの?
0344デフォルトの名無しさん
2010/03/27(土) 17:11:220345デフォルトの名無しさん
2010/03/27(土) 17:12:250346デフォルトの名無しさん
2010/03/27(土) 17:15:58そこは直しました笑
エラーは30行にあるとでます。
構文規則の途中でソースプログラムが終了していると言う意味のエラーはがでます
10,20,30,40などの行番号はポケコン特有で必要らしいです
0347デフォルトの名無しさん
2010/03/27(土) 17:16:57インタプリタといいますと?
初心者ですのでまったくわかりません
0348デフォルトの名無しさん
2010/03/27(土) 17:19:200349デフォルトの名無しさん
2010/03/27(土) 17:22:45俺の知ってる範囲だとBASICとかは行番号込みのコードらった。
0350デフォルトの名無しさん
2010/03/27(土) 17:26:480351デフォルトの名無しさん
2010/03/27(土) 17:28:58そうでした笑
でもはじめ書き込んでコンパイルしたらエラーがでて、みてみたら消えてました
0352デフォルトの名無しさん
2010/03/27(土) 18:23:54free(tibet);
これで、このソースは中国政府自らの手により検索規制され、
ソースのコピーをしばらくの間防ぐことが出来る。
0353デフォルトの名無しさん
2010/03/27(土) 21:49:14中国政府の検閲恐るべし
0354デフォルトの名無しさん
2010/03/27(土) 22:34:210355デフォルトの名無しさん
2010/03/27(土) 22:39:300356デフォルトの名無しさん
2010/03/27(土) 22:45:386個できたけど これはgccが拡張されてるだけ?
それとも範囲外アクセスしたときみたくたまたまラッキーなだけ?
0357デフォルトの名無しさん
2010/03/27(土) 22:56:200358デフォルトの名無しさん
2010/03/27(土) 23:00:320359デフォルトの名無しさん
2010/03/27(土) 23:05:02そのキーワードでは釣れないですよ。せめて最近はやったやつくらいのパワーがないと、 void ma(略)
0360デフォルトの名無しさん
2010/03/27(土) 23:09:49現実を見るようになれば去るよ
0361デフォルトの名無しさん
2010/03/27(土) 23:43:380362デフォルトの名無しさん
2010/03/27(土) 23:46:27規格票に何か書いてあったか?
0363デフォルトの名無しさん
2010/03/27(土) 23:47:30書いてあっても「最低nまでは保証する事」としか書かれないよ
0364デフォルトの名無しさん
2010/03/27(土) 23:51:261024次元はビルドが異常終了した。
0365デフォルトの名無しさん
2010/03/27(土) 23:51:26サブスレッド内で malloc() した領域を pthread_exit() -> pthread_join() 経由で親スレッドでうけとった場合には
free() は必要でしょうか。
会員制(無料)でごめんなさい、http://codezine.jp/article/detail/1892?p=3 の最後のコードです。これには free() はありません。
私の環境(cygwin/gcc) では、printf("%p")の値をみるかぎりpthread_exit() 前と pthread_join() 後では変化しておりません。
malloc() はスレッドセーフである、とのことですが、私はスレッドセーフの意味がよくわかっていません。
よろしくお願いいたします。
0366デフォルトの名無しさん
2010/03/27(土) 23:51:390367デフォルトの名無しさん
2010/03/27(土) 23:53:10制限時間 今から10分
できた奴はPGG
0368デフォルトの名無しさん
2010/03/27(土) 23:54:53n がなにかきちんと定義してください。
0369デフォルトの名無しさん
2010/03/27(土) 23:59:35int i;
for i=1 to 1000
malloc(i)
next
0370デフォルトの名無しさん
2010/03/28(日) 00:03:47しかも1と1000を含んでるし
0371デフォルトの名無しさん
2010/03/28(日) 00:06:18このようなアバウトなコードも解釈するコンパイラ希望
0372デフォルトの名無しさん
2010/03/28(日) 00:12:08(2) 浮動小数点型はfloat、double、long doubleの三つのサイズをもち、ANSI規格により、それぞれのサイズは規定されている。
(3) ポインタ変数をconst宣言することはできない。
(4) typedefはコンパイラで解釈され、#defineはプリプロセッサで解釈される。
(5) キャストは明示的に型変換することであり、ポインタをキャストすることも可能である。
(6) グローバル変数とローカル変数に同一の名前が使われたとき、両者のスコープがおよぶ箇所では、グローバル変数が優先される。
(7) 複数の論理演算子を使用した条件式において、真偽の判定は右から左の順に行われる。
(8) float型やdouble型に対して、ビット演算子を使うことはできない。
解答群 ア 正しい イ 誤り
0373デフォルトの名無しさん
2010/03/28(日) 00:14:160374デフォルトの名無しさん
2010/03/28(日) 00:15:21コードは見てないけど、malloc()した領域はfree()する必要がある。ス
レッドの生死は関係ない。
プログラムが終了する直前であれば、OSにまかせてあえてfree()しない
という手もある。それはスレッドとは関係がない。
0376デフォルトの名無しさん
2010/03/28(日) 00:24:23n=999
ならできるかな?w
0377デフォルトの名無しさん
2010/03/28(日) 00:37:05test.c: In function ‘main’:
test.c:4: warning: incompatible implicit declaration of built-in function ‘malloc’
test.c:4: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘void *’
$ ./test
140308488
$ cat test.c
#include <stdio.h>
int main()
{
printf("%d\n",malloc(1));
}
0378デフォルトの名無しさん
2010/03/28(日) 00:39:47見栄張ってググらないで、試さないで、記憶だけで正直に回答します。
(1)知らない
(2)long double って使ったことない。はじめて聞いた。知らない。
(3)興味ない
(4)そんなきがする。#ついてるのはプリプロセッサな気がするだけ
(5)キャストって言葉がどこからどこまでなのかしらないけど P* p; int i=(int)p; なんてのは出来たきがする。警告が出たような出ないようなうろおぼえ。
(6)読みづらいので、かぶらないように注意してるので知らない。
たぶんローカルが優先されそうなきがする。わざわざ後に作るんだから優先させるだろうと。デニスリッチーもそう考えた気がする。なんとなく。
(7)知らない
(8)IEEE754(うろおぼえ)のdouble d; unsigned long long s=(d>>63)&0x01, q=(d>>52)&0x07FF, n=d&0x0000FFF...;
みたいに昔書いたような記憶がうっすらある。たぶんできるとおもう。(型変換したかもしれないし、しなかったかもしれないし、うろおぼえ)
全体的にうろおぼえですw
0379デフォルトの名無しさん
2010/03/28(日) 00:44:35じゃあ俺もぐぐらずに
1はい
2規定されているのはcharが1バイトということだけ
3できる
4#で始まる行でコンパイラに影響を与えるのはpragmaぐらいしか知らない
5はい
6ローカルが優先
7左から右
8期待する動作をするかどうかは別にして、ビット演算子を使うことができない型はないと思う
0380デフォルトの名無しさん
2010/03/28(日) 00:45:2912345
6
$ cat test1.c
#include <stdio.h>
int main()
{
printf("%d\n",printf("12345\n"));
}
0381デフォルトの名無しさん
2010/03/28(日) 01:13:55ほれ
(1) イ:出力したバイト数を返す
(2) イ:サイズは大小関係 float <= double <= long double しか規定されていない
(3) イ:int * const p; のようにする
(4) ア
(5) ア:Cでは暗黙なものは全て「変換」。C++ではアップキャストという暗黙なキャストも存在する
(6) イ:ローカル変数が優先される
(7) イ:左から右
(8) ア
0382デフォルトの名無しさん
2010/03/28(日) 01:21:17{
double d = 1.0;
d << 1;
printf("%f\n", d);
return 0;
}
コンパイルエラーが出ます
残念でした
0383デフォルトの名無しさん
2010/03/28(日) 01:24:12これはイってことはできないの? それとも↑のようにするとできるの?ならアじゃねーの
つかできたところで何に使うか俺にはさっぱり見当もつかないけど
0384デフォルトの名無しさん
2010/03/28(日) 01:24:51(3) ポインタ変数をconst宣言することはできない。
~~~~~~~~~~
問題文ちゃんと読めよ
0385デフォルトの名無しさん
2010/03/28(日) 01:26:510386デフォルトの名無しさん
2010/03/28(日) 01:40:31int main(void)
{
double d = 1.0;
*((long long int *)&d) << 1;
printf("%f\n", d);
*((long long int *)&d) <<= 1;
printf("%f\n", d);
*((long long int *)&d) >>= 1;
printf("%f\n", d);
return 0;
}
0387372
2010/03/28(日) 01:53:02(2) イ
(3) イ
(4) ア
(5) ア
(6) イ
(7) イ
(8) ア
でした
0388デフォルトの名無しさん
2010/03/28(日) 02:09:26ダウト
(1) イ 文字数じゃなくてバイト数を返す
0389デフォルトの名無しさん
2010/03/28(日) 03:21:23もしくはできないんでしょうか
型はsigned intです
0390デフォルトの名無しさん
2010/03/28(日) 03:49:56Cじゃムリ。十分な大きさの型を用意するしかない。
0391デフォルトの名無しさん
2010/03/28(日) 03:51:05a * b > INT_MAX とは書けないので、
a > INT_MAX / b と書けばいい。
0392デフォルトの名無しさん
2010/03/28(日) 03:51:06割り算して元に戻ればオーバーフローしていない
ような気がする。
0393デフォルトの名無しさん
2010/03/28(日) 05:01:16Cの規格上では、符号付き整数のオーバーフロー時の挙動について
何も規定されていない。プログラムが停止する可能性すら否定できない
だからオーバーフローさせた時点で失敗
0394デフォルトの名無しさん
2010/03/28(日) 05:34:340395デフォルトの名無しさん
2010/03/28(日) 05:43:16#include<stdio.h>
int main()
{
signed int i,j,k;
scanf("%d",&i);
scanf("%d",&j);
_asm {
mov k,0
mov eax,i
imul j
jnc add1
mov k,1
add1:
};
puts((k==0)?"not OF":"OF");
return 0;
}
0396デフォルトの名無しさん
2010/03/28(日) 08:25:590398デフォルトの名無しさん
2010/03/28(日) 11:00:08http://codepad.org/ghJZjTMS
0399デフォルトの名無しさん
2010/03/28(日) 11:04:580400デフォルトの名無しさん
2010/03/28(日) 11:56:23WindowsでUnicodeビルドだと、最初にsetlocale(LC_CTYPE,"")しておかないと文字化け
してしまうのですが、Unicodeビルドでなくてもする必要があるのかなと思ったのです。
0401デフォルトの名無しさん
2010/03/28(日) 12:38:33ばか丸出し
0402デフォルトの名無しさん
2010/03/28(日) 13:09:23それはキャリーフラグ。今はオーバーフローが話題。
0403デフォルトの名無しさん
2010/03/28(日) 13:30:280404デフォルトの名無しさん
2010/03/28(日) 13:46:08問題は無い。というか、問題にされても困る。
ただし、SJIS てめーはダメだ
0405デフォルトの名無しさん
2010/03/28(日) 13:57:45何かチガウノ?初めて asm ブロック使って喜んでいる俺に正解を優しく教えれヽ( ´ー`)ノ
0406デフォルトの名無しさん
2010/03/28(日) 13:59:37字面通りでは?
出来たことがあるとか、出来るべきとか思ってるならそれを書け
0407デフォルトの名無しさん
2010/03/28(日) 14:11:10できたからって何に使えるかは知らんけど
0408デフォルトの名無しさん
2010/03/28(日) 14:19:13浮動小数点数で計算に代用可能なビット操作はないから
あっても意味がないかと
0409デフォルトの名無しさん
2010/03/28(日) 14:23:02そもそもFPUにビット演算命令が実装されておらず、大した用途も無いのだから、
わざわざC処理系にそれをサポートさせるのは無駄なコストなのです。
0410デフォルトの名無しさん
2010/03/28(日) 14:34:52あえてそんなチェック無駄じゃんと思ったけど
あえて止めてるんじゃなくてコプロレベルまで行く話なのか、なるほどねぇ
最近、ここは揉め事が多いけど勉強になることも多いなぁ
(まったく仕事には役立たないけど)
0411デフォルトの名無しさん
2010/03/28(日) 14:39:49unionでlonglongとかとくっつけて操作するといいよ。
ttp://codepad.org/z7ywTWVm
0412デフォルトの名無しさん
2010/03/28(日) 15:30:49最上位ビットを見てみるとか、できても別にいいんじゃないの?
0413デフォルトの名無しさん
2010/03/28(日) 15:38:470414デフォルトの名無しさん
2010/03/28(日) 15:41:51FPUを持ち出す時点で……
というのはさておき、ビット操作できるとfabs()の実装が超簡単になるよ。
0415デフォルトの名無しさん
2010/03/28(日) 15:43:01最上位ビットを見るだけで、負の値かそれ以外かが判る。
正、NaNと0と正の値の区別はできない。
0416デフォルトの名無しさん
2010/03/28(日) 15:43:14内部表現に依存し、かつコードから内部表現を知ることができないため、
そのようなコードを許していないとかなんかそういうのないの?
0417デフォルトの名無しさん
2010/03/28(日) 15:47:24例えば、>414->415はIEEE754限定だ。しかも、double値を整数値とは違う方法で管理する環境だと
ビット演算を仕様に入れると非常に厄介な実装をする羽目になる。
0418デフォルトの名無しさん
2010/03/28(日) 15:52:11その結果はどう使っていいのか分からないけど、できなくしてるのは何でだろ。
意味がないから制限をかけたのなら、コード中の意味を成さないステートメントは
すべてコンパイルエラーとなるべきだろうし。
0419デフォルトの名無しさん
2010/03/28(日) 15:56:30だから浮動小数点レジスタの中身をシフトする回路が実装されていないという話。
もちろん、いったんメモリへ書き出してから汎用レジスタを介してシフトすれば可能だが、
それは *(unsigned long long*)&d <<= 1 などと書けば済む。
0420デフォルトの名無しさん
2010/03/28(日) 15:58:04コンパイラメーカーの事も考えてあげてください
0421デフォルトの名無しさん
2010/03/28(日) 16:14:13よくわかんなかった
http://codepad.org/ckbFUsCa
0422デフォルトの名無しさん
2010/03/28(日) 16:21:14なるほど。&ができないのも回路が実装されていないから?
キャストすると汎用レジスタを経由するというのも勉強になった。
0423デフォルトの名無しさん
2010/03/28(日) 16:22:41こういうの思い出しちゃって、「え〜〜と…どこまでをdoubleと捉えていいんだ?」ってなって迷う…orz
http://codepad.org/1iYkGYJD
0424デフォルトの名無しさん
2010/03/28(日) 16:31:29符号ビット、指数部、仮数部に分解したい、
各ビットがどうなってるか走査したいなど
どうしてもビット演算したいようなレアケースでも
一旦整数型を経由すれば可能だし、
わざわざそんなケースを考慮して実装する理由も無い
コンパイラ製作において実装の手間が増える、
小数のビット演算はまず使われず、大抵はミス(バグ)であるが、
そのコードがコンパイルエラーにならなくなってしまう、
など、デメリットの方が遥かに大きい。
0425デフォルトの名無しさん
2010/03/28(日) 16:35:07勘違いをしているらしい点を補足。
キャストすると汎用レジスタを経由するのではない。
>419のキャストは見做し整数としてビット演算している。
>419のコードを模式的に書けばこうなる。
・dのポインタからアドレスを取得
・そのアドレスのポイント先をunsigned long longと見做す。
・対象メモリ空間に対して直接ビットシフトできるMPUならそうする。
・そうでないMPUなら一旦汎用レジスタにロードし、ビットシフトした後にストアする。
コンパイラの最適化能力が高ければ、前後のコードに問題がない限り
メモリを一切介さずに汎用レジスタのみで処理するかもしれない。
# x86でもSSEを使えればそうできる。
0426デフォルトの名無しさん
2010/03/28(日) 16:56:46丁寧にありがとうございました。
0427デフォルトの名無しさん
2010/03/28(日) 17:06:09もっと応用ができるようになるためには入門書が終わったらどんな勉強をするべきでしょうか。
0428デフォルトの名無しさん
2010/03/28(日) 17:08:24http://itpro.nikkeibp.co.jp/article/COLUMN/20060127/228096/?ST=develop
0429デフォルトの名無しさん
2010/03/28(日) 17:08:37愚直でいいから
その後何か応用向けの本を読んでみる
そして自分のコードと比較してどこが優れてるか理解する
0430デフォルトの名無しさん
2010/03/28(日) 17:39:07VBなりVC#でおもちゃをつくるなら1,2ヶ月でできるようになるからそっちにしとけ。
0431デフォルトの名無しさん
2010/03/28(日) 17:40:09Linuxカーネルのソースを読む
0432デフォルトの名無しさん
2010/03/28(日) 17:55:5810年かかるってのは分かるなあ
初心者のうちは作ることだけで精一杯なんだけど、
プログラムってバグが無いだけじゃなく、性能とかメンテ性とか、
環境依存が少ないとか、コードが見やすいとか、セキュリティとか
色んなベクトルがあって、それらを踏まえて作らなければならないんだよね
VBやC#でも同じだとは思うけど
0433デフォルトの名無しさん
2010/03/28(日) 17:58:26BYTE a[128];
BYTE n;
n = _mbslen(a);
a[n-1] = '\0';
とやってもうまく行きませんでした。
nが日本語でも英語でも1文字は1としてカウントしてないっぽいです。
どうかご教示を。
0434デフォルトの名無しさん
2010/03/28(日) 18:04:22宿題スレで待っています。
0435デフォルトの名無しさん
2010/03/28(日) 18:04:35nには文字数が入るが、a[n-1]はn-1文字目ではなく、n-1バイト目を指す。
nにバイト数を入れるため、n=strlen(a)にすべきでは。
0436デフォルトの名無しさん
2010/03/28(日) 18:16:040437デフォルトの名無しさん
2010/03/28(日) 18:19:13文字コードはなんなのさ
0438デフォルトの名無しさん
2010/03/28(日) 18:24:160439デフォルトの名無しさん
2010/03/28(日) 18:25:170440デフォルトの名無しさん
2010/03/28(日) 18:25:59お前は勘違いしている
0441デフォルトの名無しさん
2010/03/28(日) 18:28:441文字=1byteではない
0442デフォルトの名無しさん
2010/03/28(日) 18:30:55こんな初歩的な質問するやつがUTF-16使うわけがないだろ ってこと?
0443デフォルトの名無しさん
2010/03/28(日) 18:37:28「最後の改行を削除したい」のなら、最後の文字と決め打ちにしちゃ拙いんじゃないか?
例えば、テキストファイルをfgets()で読み込んでいるのなら最後の行には改行文字はない場合もあるぞ。
0444デフォルトの名無しさん
2010/03/28(日) 18:40:332バイト文字も1として数えてるからずれるのであって
0が含まれてるからずれてるのではない
0445デフォルトの名無しさん
2010/03/28(日) 18:45:470446デフォルトの名無しさん
2010/03/28(日) 18:46:55unsigned charだから型の不一致でコンパイルエラーになっただけだろ
0447デフォルトの名無しさん
2010/03/28(日) 18:48:270448デフォルトの名無しさん
2010/03/28(日) 18:50:150449デフォルトの名無しさん
2010/03/28(日) 18:53:020450デフォルトの名無しさん
2010/03/28(日) 19:12:160451デフォルトの名無しさん
2010/03/28(日) 19:18:250452デフォルトの名無しさん
2010/03/28(日) 19:19:42a[n-1] = '\0';
となるよ
0453デフォルトの名無しさん
2010/03/28(日) 19:22:470454デフォルトの名無しさん
2010/03/28(日) 19:23:53問題は文字コードだ、という流れだろ
0455デフォルトの名無しさん
2010/03/28(日) 19:24:500456デフォルトの名無しさん
2010/03/28(日) 19:25:48ああ、そういうことね
0457デフォルトの名無しさん
2010/03/28(日) 19:29:250458デフォルトの名無しさん
2010/03/28(日) 19:51:54下線部はなぜ必要なんですか?
0459デフォルトの名無しさん
2010/03/28(日) 19:55:18それの有りと無しで試してみれば良いだろう
0460デフォルトの名無しさん
2010/03/28(日) 19:58:30それを消すと画面に出力されない環境もある
0461デフォルトの名無しさん
2010/03/28(日) 19:59:47終了時にはフラッシュされるだろう
0462デフォルトの名無しさん
2010/03/28(日) 20:01:33mainが終わるんだから出るよ
0463デフォルトの名無しさん
2010/03/28(日) 20:02:440464デフォルトの名無しさん
2010/03/28(日) 20:04:45出力先が連続紙のプリンタなら>>460の言うとおり印字はしたものの改行しないとそれが見えないとかあるかも
0465デフォルトの名無しさん
2010/03/28(日) 20:04:480466デフォルトの名無しさん
2010/03/28(日) 20:05:06printf() の行を後ろにもうひとつ足してみろ。
0467デフォルトの名無しさん
2010/03/28(日) 20:06:12ネット教材の方がマシじゃね?
0468デフォルトの名無しさん
2010/03/28(日) 20:06:34とかやってみればわかる
0469デフォルトの名無しさん
2010/03/28(日) 20:07:36コンソールで実行して、プログラムが文字を出力して終了すると
次のコマンドの入力待ちになるけど、\nなしだと、コマンドを入力する
カーソルが次の行に行かずに、出力した文字の後ろで点滅してたり
することがある。
0470デフォルトの名無しさん
2010/03/28(日) 20:08:22たぶん、宿題とかでいやでいやでしょうがなくて、ネットで時間かけて調べるとかしたくないんだよ
だれしもが、君みたいに暇さえあればプログラムの事を考えていられるわけではない
0471デフォルトの名無しさん
2010/03/28(日) 20:09:34そうかもしれんけど、そのワリには\nの意味とか、
細かいことを気にするんだな。
0472デフォルトの名無しさん
2010/03/28(日) 20:12:21なぜ例のあそこに\nを入れたのかがわからないのです
0473デフォルトの名無しさん
2010/03/28(日) 20:13:04おまじない
0474デフォルトの名無しさん
2010/03/28(日) 20:14:03くっついてもコマンド入力には問題ないんだけど
たんなる習慣だと思う
0475デフォルトの名無しさん
2010/03/28(日) 20:15:54結果をプリンタに印字してた頃からの習慣だと思う
0476デフォルトの名無しさん
2010/03/28(日) 20:20:47unix系は、ないとキモイことになるな。
0477デフォルトの名無しさん
2010/03/28(日) 20:23:170478デフォルトの名無しさん
2010/03/28(日) 20:26:11地味に笑いますた
0479デフォルトの名無しさん
2010/03/28(日) 20:32:54実際、タイプライターみたいなもんつかってますww
0480デフォルトの名無しさん
2010/03/28(日) 20:45:50unsigned char *ptr, cr = '\n';
ptr = _mbsrchr(a, cr);
a[ptr-a] = '\0';
0481デフォルトの名無しさん
2010/03/28(日) 20:56:12if(ptr) *ptr='\0';
にすればいいのに
0482デフォルトの名無しさん
2010/03/28(日) 21:10:080483デフォルトの名無しさん
2010/03/28(日) 22:01:05フラッシュされるかではなくて。
zshでやってみたらいいたいことが分かると思う。
で、それはバグとかじゃなくてunix系における行の扱いを厳密にした結果。
0484デフォルトの名無しさん
2010/03/28(日) 23:21:35昔は思い込んでたもんだ
0485デフォルトの名無しさん
2010/03/29(月) 00:05:06少なくともC言語の範囲内では exit() の呼び出しおよびそれと同じ効果である
main() の終了時には全部のストリームがフラッシュされることになってるんだけど、
「unix系における行の扱い」とか何のこと言ってるの?
0486デフォルトの名無しさん
2010/03/29(月) 00:05:400487デフォルトの名無しさん
2010/03/29(月) 00:14:040488デフォルトの名無しさん
2010/03/29(月) 00:20:18そうそう
0489デフォルトの名無しさん
2010/03/29(月) 00:22:060490デフォルトの名無しさん
2010/03/29(月) 00:26:35環境限定って最初に書いてるから問題ないでしょ
それに、フラッシュされるかどうかは関係ないって>>483が書いてるのにフラッシュされることをアピールしてもしょうがない
0491デフォルトの名無しさん
2010/03/29(月) 00:29:43このことだろうか。それなら意図的に出力をクリアしているように見えるが。。。
0492デフォルトの名無しさん
2010/03/29(月) 00:30:04フラッシュされるかどうかと画面に表示されるかどうかが関係ないの?なんで?
0493491
2010/03/29(月) 00:32:05それがunix的にどうとかいうのはわかんない
0494491
2010/03/29(月) 00:35:37何かであったのを思い出したけど今回のと関係あるかな?
0495デフォルトの名無しさん
2010/03/29(月) 00:38:220496デフォルトの名無しさん
2010/03/29(月) 00:40:300497デフォルトの名無しさん
2010/03/29(月) 00:54:42getchって環境依存であってる?
0498デフォルトの名無しさん
2010/03/29(月) 00:59:41ハッカー?
誰がそんな話してんだよw
論点すり替えんなよ
0499デフォルトの名無しさん
2010/03/29(月) 01:24:500500デフォルトの名無しさん
2010/03/29(月) 02:03:19じゃあ標準でzshの環境がどれだけあるんだ。
くだらないことぐだぐだぬかすな。
0501デフォルトの名無しさん
2010/03/29(月) 02:11:17決して押しつけの標準であってはならない。
0502デフォルトの名無しさん
2010/03/29(月) 02:35:05それは反論になってないだろ。。。
0503デフォルトの名無しさん
2010/03/29(月) 02:51:25「zsh みたいにプロンプトに CR が入ってると見えなくなることもあるよ」
といわずにあんな言い方をしたんだろうか?
0504デフォルトの名無しさん
2010/03/29(月) 07:10:47formal parameter 3 different from declarationです。
しかし、そこの行を見ると宣言どおりの仮引数のとおりに実引数を渡しています。
関数が仮引数2つで宣言されており、そこに渡す型も間違えずにちゃんと実引数を渡しているのですが、
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
なぜか、上記のように「3番目の引数が違う!」とエラーがでます。
仮引数がもともと2つしかないのに、なぜ存在しない3番目の引数についてエラーがでるのでしょうか?
原因わかるかたよろしくお願いします。
0505デフォルトの名無しさん
2010/03/29(月) 07:17:11その関数は引数2つをもつのですが、1つ目の引数にはコールバック関数を指定します。
自作したコールバック関数をセットしたのですが、そのコールバック関数は引数を3つもっており、
なぜかそこでエラーがでている感じです。コールバック関数の引数を無理やり4つにすると、エラーがでずに正常にコンパイルできます。
いったいどういう現象なんでしょうか?これ
0506デフォルトの名無しさん
2010/03/29(月) 07:24:34なんだろう…、まあ解決したんで放置でいいです
0507デフォルトの名無しさん
2010/03/29(月) 07:41:46そういう、人いるじゃん、質問とかしてもダイレクトに答えずに
逆説的な質問でかえすとか
ミスを指摘するときでもはっきり言えばいいのに質問で言ってくる人とか
0508デフォルトの名無しさん
2010/03/29(月) 07:45:580509デフォルトの名無しさん
2010/03/29(月) 08:13:33コードを示してくれないとアドバイスのしようがないぞ。
0510デフォルトの名無しさん
2010/03/29(月) 08:13:43EOFという文字はありません、今は。
0511デフォルトの名無しさん
2010/03/29(月) 09:00:56昔からですが。
0512デフォルトの名無しさん
2010/03/29(月) 09:03:280513デフォルトの名無しさん
2010/03/29(月) 09:16:220514デフォルトの名無しさん
2010/03/29(月) 12:29:03昔はありました。
0515デフォルトの名無しさん
2010/03/29(月) 12:53:24ありません。
0516デフォルトの名無しさん
2010/03/29(月) 13:04:58パソコン通信の頃。
通信中に途切れたら途中で終わったのか解らないし
EOFを見て通信を切断するなんて事ができなくなるじゃん。
0517デフォルトの名無しさん
2010/03/29(月) 13:09:160518デフォルトの名無しさん
2010/03/29(月) 13:20:44それはEOFコードだろ。それなら昔からあるし、今もある。
0519デフォルトの名無しさん
2010/03/29(月) 13:25:19EOF文字は無いがEOFコードはあると、そうおっしゃるのですか?
http://www.google.co.jp/search?q=%22EOF%E6%96%87%E5%AD%97%22
"EOF文字" の検索結果 約 1,910 件
http://www.google.co.jp/search?q=%22EOF%E3%82%B3%E3%83%BC%E3%83%89%22
"EOFコード" の検索結果 約 1,800 件
http://www.google.co.jp/search?q=%22EOF+character%22
"EOF character" の検索結果 約 10,400 件
http://www.google.co.jp/search?q=%22EOF+code%22
"EOF code" の検索結果 約 18,300 件
くだらない。
0520デフォルトの名無しさん
2010/03/29(月) 13:29:10EOF文字>>513じゃね?
EOFコードは0x1a
0521デフォルトの名無しさん
2010/03/29(月) 13:30:430522デフォルトの名無しさん
2010/03/29(月) 14:06:360523デフォルトの名無しさん
2010/03/29(月) 14:18:370524デフォルトの名無しさん
2010/03/29(月) 14:42:470525デフォルトの名無しさん
2010/03/29(月) 15:12:080526デフォルトの名無しさん
2010/03/29(月) 15:26:270527デフォルトの名無しさん
2010/03/29(月) 15:30:320528デフォルトの名無しさん
2010/03/29(月) 15:55:16じゃなくて「今は」とか言い出した奴がアホなだけだろ。
昔あったらんなら今もあるし。昔ないんだったら今もない。
で、そういうやり取りもわってないお前もアホだわ。
0529デフォルトの名無しさん
2010/03/29(月) 15:58:06その理論はおかしいw
0530デフォルトの名無しさん
2010/03/29(月) 16:12:42理論でなく、現実のことを言ってるんだ。
そもそも >>510 がアホなこと言ってるから、それを否定しただけ。
これが正しいかどうかなんだよ。
0531デフォルトの名無しさん
2010/03/29(月) 16:20:25昔ないなら今もない→さすがにそれはちょっと
0532デフォルトの名無しさん
2010/03/29(月) 16:35:01>昔あったが今はない→幸か不幸か絶滅した
だとしたら何が全滅したの?^Zなら今もあるだろ。
>昔ないなら今もない→さすがにそれはちょっと
意味不明。
具体的に昔あって今ない物って何なの?
そんな物ないだろってこと。あるなら具体的に言えばいいのに。
0533デフォルトの名無しさん
2010/03/29(月) 16:41:22おいおい
0534デフォルトの名無しさん
2010/03/29(月) 16:47:57ほほう
0535デフォルトの名無しさん
2010/03/29(月) 16:54:51ふがっふふん
0536デフォルトの名無しさん
2010/03/29(月) 16:58:48オツムがあまり良くないという自覚が少しでもあるなら
下手な喩えは金輪際やめたほうがいい
そういう前提でしか見てもらえなくなるので
つまらん事でバカにされるのも辛いだろ
0537デフォルトの名無しさん
2010/03/29(月) 17:02:20ideだとvimのキーバインドが無いのが痛い
0538デフォルトの名無しさん
2010/03/29(月) 17:03:18たりらりらー
0539デフォルトの名無しさん
2010/03/29(月) 17:11:33>>510 「EOFという文字はありません、今は。」
ということに対して、
EOF という文字(0x1a や ^Zで表現される終了コードとしての文字)は今もあるし、
そういう意味でなく、EOF は文字でないというのなら、それは昔も今も同じこと。
どっちの主張かわからんが、いずれにしても >>510 の認識は間違っている。
と言ってるだけだろ。どうしてこんな簡単な理屈がわからないんだ。
ちょっと頭悪すぎない?
0540デフォルトの名無しさん
2010/03/29(月) 17:13:260541デフォルトの名無しさん
2010/03/29(月) 17:20:180542デフォルトの名無しさん
2010/03/29(月) 17:33:36お前頭悪いだろw
変な想像働かせないで素直に読めよw
0543デフォルトの名無しさん
2010/03/29(月) 17:40:36そういう言い方では厨房には通じないよ。
ちょっとじゃなく相当悪いんだよ。
今はゆとり教育なんだからね。
0544デフォルトの名無しさん
2010/03/29(月) 17:44:130545デフォルトの名無しさん
2010/03/29(月) 17:48:18わかんないよ
> 昔あったらんなら今もあるし。昔ないんだったら今もない。
こんな喩えをする人の脳内構造は分からないからね
0546デフォルトの名無しさん
2010/03/29(月) 17:57:06内容も理解せずトンチンカンなレスばっかりつけるのやめようね。
見苦しいだけだから。
0547デフォルトの名無しさん
2010/03/29(月) 18:00:31そりゃ他人の脳内はわからんだろうけど、
簡単な日本語ぐらいは理解しようや。
0548デフォルトの名無しさん
2010/03/29(月) 18:02:57プテラノドンとか今はいないよ
その時代に人間はいなかったから今もいないというのはちょっと
0549デフォルトの名無しさん
2010/03/29(月) 18:04:230550デフォルトの名無しさん
2010/03/29(月) 18:05:22君は何の話してるの?EOFと関係ないじゃん。
0551デフォルトの名無しさん
2010/03/29(月) 18:06:460552デフォルトの名無しさん
2010/03/29(月) 18:10:42ってのの主語を省略したんだよな
それで、話の流れを見ない人たちが
>昔ないなら今もない
の文だけ読んで
なんだそれプゲラwの大合唱が始まった
それにたいしてプテラノドンとか人間とか、もう馬鹿すぎ
ちなみにEOFに関しては俺はわからんから上記の発言の人を肯定してるわけではない
まぬけなレスだって指摘なだけ
0553デフォルトの名無しさん
2010/03/29(月) 18:13:10EOFに限らず
> 昔あったらんなら今もあるし。昔ないんだったら今もない。
こんなものは存在しません。
その存在しないものを喩えるバカがいたら
デカルトからも突っ込み入るw
0554デフォルトの名無しさん
2010/03/29(月) 18:16:23「EOF」が昔ないなら今もない
という主語があったとしてもこれほど間の抜けた理論はなかろ
0555デフォルトの名無しさん
2010/03/29(月) 18:22:22名言だな
0556デフォルトの名無しさん
2010/03/29(月) 18:25:030557デフォルトの名無しさん
2010/03/29(月) 18:26:040558デフォルトの名無しさん
2010/03/29(月) 18:26:420559デフォルトの名無しさん
2010/03/29(月) 18:28:52全部書いてやっても理解できないのか、引込みがつかなくてなってるのか、
どっちにしても情け無いやつだな。
0560デフォルトの名無しさん
2010/03/29(月) 18:30:03君、本当に大丈夫か?
0561デフォルトの名無しさん
2010/03/29(月) 18:31:450562デフォルトの名無しさん
2010/03/29(月) 18:32:140563デフォルトの名無しさん
2010/03/29(月) 18:37:28>>562
被ってるから^^;
0564デフォルトの名無しさん
2010/03/29(月) 18:37:590565デフォルトの名無しさん
2010/03/29(月) 18:39:150566デフォルトの名無しさん
2010/03/29(月) 18:40:350567デフォルトの名無しさん
2010/03/29(月) 18:41:04人が想像可能な事象はすべて実現可能である、というのは誰の言葉だっけ?
0568デフォルトの名無しさん
2010/03/29(月) 18:41:47ジュール・ヴェルヌ
0569デフォルトの名無しさん
2010/03/29(月) 18:42:35即答トン
0570デフォルトの名無しさん
2010/03/29(月) 20:34:26ちなみにANSIスレは昔あったが今はない。
0571デフォルトの名無しさん
2010/03/29(月) 20:41:440572デフォルトの名無しさん
2010/03/29(月) 20:59:333階4階とか階数が増えてもどこでもON/OFFするにはどうするんでしょうか?
マイコンとか使ってプログラムを書かないとだめですかね
どんな感じのプログラムになるのでしょうか?
0573デフォルトの名無しさん
2010/03/29(月) 21:12:27スイッチが入るたびにON/OFFを切り替えればいい。スイッチの数が何個あっても同じ。
0574デフォルトの名無しさん
2010/03/29(月) 21:21:00このスレで聞いてるのだから実際に線をひっぱってるわけじゃないとおもうが
0575デフォルトの名無しさん
2010/03/29(月) 21:22:040576デフォルトの名無しさん
2010/03/29(月) 21:24:172階の上下でってのは知ってたしすぐ思い出せたけど、4路すげええ!!!
0577デフォルトの名無しさん
2010/03/29(月) 21:26:270578デフォルトの名無しさん
2010/03/29(月) 21:35:38Cの規格に関係するような話、あったっけ?
ASCIIのEOFが云々、とか話したら出直せ言われると思う。
0579デフォルトの名無しさん
2010/03/29(月) 21:39:16自演乙
0580デフォルトの名無しさん
2010/03/29(月) 21:41:36ASCIIはANSI規格だボケ
おまえは出直さなくていいから戻ってくんな
0581デフォルトの名無しさん
2010/03/29(月) 21:44:130582デフォルトの名無しさん
2010/03/29(月) 22:03:080583デフォルトの名無しさん
2010/03/29(月) 22:09:05どういう意味で自演と?
0584510
2010/03/29(月) 23:37:18>>517 に加えて。
CP/M に影響された MS-DOS のクックドモードでは ^Z があると、その後は読み込まない仕様です。^Z がすなわちEOFにあたります。
一方、^Z があるからといって読み込みをやめることはないモードもあります。
昔話ですけれどもね。
最近の若いもんは昔話には興味がないとみえますね。
0585デフォルトの名無しさん
2010/03/29(月) 23:38:27仕組みは簡単、両端に3極スイッチをおき、間に6極の入れ替えスイッチをおけばいいのです。
0586デフォルトの名無しさん
2010/03/29(月) 23:52:20ましてや家庭にあるようなより線なんかじゃスイッチに繋げられないだろうから知識を持った人じゃないと危険
0587デフォルトの名無しさん
2010/03/29(月) 23:53:500588デフォルトの名無しさん
2010/03/29(月) 23:56:290589デフォルトの名無しさん
2010/03/29(月) 23:59:06知識だけじゃなく資格を持ってないと駄目だよ
0590デフォルトの名無しさん
2010/03/30(火) 00:02:40c = a / b と d = a % b の計算を、
A : div_mul100M() ← 普通に直接 c=a/b; d=a%b; を1億回計算
B : _sid100M() ← インラインアセンブラによる c=a/b; d=a%b を、インライン関数 _sid() として、それを1億回呼び出す
C : sid100M() ← _sid() の#define関数版 sid() を、1億回呼び出す
http://codepad.org/R2wb4QpQ
これを gcc -o xxx xxx.c -pg として作った ./xxx を実行した後、gprof xxx で各関数の処理時間を見ると
div_mul100M() は 0.48秒、_sid100M()は1秒、sid100M()は0.29秒でした。
せっかくインラインアセンブラで組んでも、それを関数でパックしたら、直接c=a/b;d=a%b;と書くよりも遅くなってしまうようです。
だからインラインアセンブラは#define関数として定義したいのですが、以下のように
http://codepad.org/RZ4XjyNu
たとえば #define関数 sid() は、定義内で __SID_LOOP_END__: などのラベルを定義してるので、
一つのソースファイル中で一ヶ所からしか呼べなくなってしまうので困ってます。 (インライン関数版の _sid() なら複数箇所で呼べる)
インライン関数で組めば、ラベルの問題にそれほど悩まされずにすみますが、遅いです。(本末転倒
#define関数によるインラインアセンブラ内で、定義したラベルを局所的(#define関数内だけで通用するラベル)にする方法って
Cの文法に用意されてませんか? たとえば #undef を #define関数の定義中には書けませんが、それに近いニュアンスの方法など…
なにか#define関数でインラインアセンブラを書く上での、ウルテク的なものをご教授くだされば高栄です。
0591デフォルトの名無しさん
2010/03/30(火) 00:05:480592デフォルトの名無しさん
2010/03/30(火) 00:28:24各極の階間短絡を上手く選ぶ(ある一つの状態の個数が奇数個)
電力線はこれらを合流させたものを改めて各階に並列分配した
ものになる。
0593デフォルトの名無しさん
2010/03/30(火) 00:44:420594590
2010/03/30(火) 00:52:15ありがとうございました。#define中で#undef できました。
http://codepad.org/oJln8V0J
ただ、どうやら#undef しても思ったような動きはしてくれないみたいでした。
もしかしたら goto文のラベル的なものだと思うのですが、Cのソースファイル中に書いたラベルを、解除する方法ってありますか?
たとえば、
A:
goto A;
のラベルA:を、どこか別の場所で del A:; って書くことで、ソース中の以前のラベルA: が消えて、delA:;した場所が新たなA:になるようなことをしたいです。
0595デフォルトの名無しさん
2010/03/30(火) 01:23:55del X:; はラベルX:の置き換え、del0 X:;はラベルX:を「以前に定義されてたXを解除したので、ここ以降からX:を検索してください」という意味。
main(){
int i,j;
A:
B:
i=0;
del0 B:; // 現在定義されてるB:を"再"未定義にする
del A:; // A:の場所をここ再設定する
if(i++>10) goto B; // B:は"再"未定義されてるので、直近の"del0 B:;以降"からB:を検索する
goto A;
B: // 新たにB:を定義
i=0; del0 B:; del A:; if(i++>10)goto B; goto A; B:
i=0; del0 B:; del A:; if(i++>10)goto B; goto A; B:
i=0; del0 B:; del A:; if(i++>10)goto B; goto A; B:
//並べられる
}
無さそうですね…
0596デフォルトの名無しさん
2010/03/30(火) 01:26:30for(;;){
while( !SwitchStateChanged) sleep(100);//100ms毎にスイッチ状態をチェック
MasterState=(getParityOfSwitchState() % 2 ==0)?POWER_OFF:POWER_ON;
}
0597デフォルトの名無しさん
2010/03/30(火) 01:30:130598デフォルトの名無しさん
2010/03/30(火) 01:47:28「無限ループの中で変数を宣言する場合、staticを付けた方が良い」と書かれていました。
なぜでしょうか?
0599デフォルトの名無しさん
2010/03/30(火) 01:51:510600デフォルトの名無しさん
2010/03/30(火) 01:54:33そんな質問する奴が、ゲーム作り?
どんなゲームか興味津々灘
0601595
2010/03/30(火) 01:57:03もしもプログラム中で複数のラベルAが許可されてて、 goto A;によって、処理が複数並列化して、さまざまなラベル A:に飛んで実行をつづける。
ラベル Aは、ラベル A 自身で、自分をラベル B などに設定しなおせる。 del A:toB:;みたいな感じで。
つまり、”呼ばれる側”が、自分自身の”ラベルを自分で自由にできる”ならば、”呼ぶ呼ばない”の決定権は、通常のプログラムだと呼び出しがわのみにあるけど、
呼ばれ側が勝手に自由に決めることもできる。 ので、たとえばラベルAの他に、全然関係ないラベル Z: をポンと自分自身の中に設定して、
まったく予想もしないようなところから呼び出される、ってことが起こりうるので思いしろそうだと思いました。
とくに何がしたいってわけじゃなくて、単に「予想外のことがおこりそうでおもしろそうだ」ってだけですw
個々の演算単位が、それぞれ自分勝手に外とのインターフェース(ラベル)を変化させて、
プログラマーがまったく予想もしないようなところ同士が繋がって、予想外の演算結果をいくつも出すような、そんなイメージです。
function f0(){ A: } function f1(){ A: } function f2(){ A:} .....
function x(){ goto A: } main(){ x(); }
すると、複数の f() が並列で呼び出されて、個々のプロセスを勝手にはじめます。 で、もしも function f1(){ del A:toB:; } として、
もしくはラベルAを残したまま 新たにラベルB:を作るなどして、
f1() がラベルをBを持った瞬間、まったく別のプロセスとして実行されてた、たとえば function g(){ goto B; }などの新たなプロセス分岐先の
候補として f1() がポッと実行されるようになる。
こういうことで、予想外の、なにかおもしろい偶然がおこらないだろうか…と、漠然と思いつきました。 すぐ無限ループになりそうですが…w
すみませんCと関係なくて。失礼しました。
0602デフォルトの名無しさん
2010/03/30(火) 02:05:17C++ならばループするしないに関わらず任意のブロックで変数を
宣言できる。ループの場合でも変数がautoの場合は、作成/廃棄
がループの回数分繰り返されるのでパフォーマンスに影響を与える
ことがある(いつもではない)
staticにするとマルチスレッドにしたくなった時とか再帰呼び出し
をしたくなった時とかに困るかも
0603デフォルトの名無しさん
2010/03/30(火) 02:44:310604デフォルトの名無しさん
2010/03/30(火) 02:56:520605デフォルトの名無しさん
2010/03/30(火) 03:24:230606デフォルトの名無しさん
2010/03/30(火) 03:35:00整数より浮動小数点を使ったほうが演算が早かったりするのかな
0607デフォルトの名無しさん
2010/03/30(火) 03:37:49入門編だから、というのが大抵の言い訳
0608デフォルトの名無しさん
2010/03/30(火) 03:49:39Cプログラマがアセンブラを書くような感覚。
0609デフォルトの名無しさん
2010/03/30(火) 04:33:47最適化をするコンパイラが多いが、ゲーム等では
最適化をされると迷惑な場合も多いので
(ゲームの場合、高速化を追求する部分も多いが
タイミングコントロールの為の時間つぶしの部分
も結構多く、強い最適化をされると困ることもあ
る)
最適化機能を外してコンパイルする場合も多い。
>>604
最後のループを出た時点で
0610デフォルトの名無しさん
2010/03/30(火) 04:47:420611デフォルトの名無しさん
2010/03/30(火) 05:00:080612デフォルトの名無しさん
2010/03/30(火) 05:19:12C言語の勉強はできるでしょうか?
まず起動のし方すら分からないですが・・・。
0613デフォルトの名無しさん
2010/03/30(火) 05:26:14それvolatileでどうにかならんの?
あれは省略を防止するだけ?
0614デフォルトの名無しさん
2010/03/30(火) 05:32:570615デフォルトの名無しさん
2010/03/30(火) 05:46:36disp() に特に特別の意味はないような気がします。
ソース中に disp() を定義しているようなところはありませんか?
0616デフォルトの名無しさん
2010/03/30(火) 06:39:56CELLの画像デコード処理はとんでもなく高速だったぞ
0617デフォルトの名無しさん
2010/03/30(火) 06:41:21Cはもちろんコンパイルできるし、的確なエラーや警告を出してくれる
ただそれを使って勉強というのはおかしい。C言語の勉強はC言語の良書やHPを使ってするもの。
0618デフォルトの名無しさん
2010/03/30(火) 06:58:54教科書や教師だけでなく、ノートや鉛筆だって勉強に使うという表現はただしい
0619デフォルトの名無しさん
2010/03/30(火) 07:02:530620デフォルトの名無しさん
2010/03/30(火) 07:05:15Tcl/tk見たいな感じで
0621620
2010/03/30(火) 07:06:350622デフォルトの名無しさん
2010/03/30(火) 07:16:49本など見なくてもインターネットに腐るほど資料が満載
0623デフォルトの名無しさん
2010/03/30(火) 07:18:070624デフォルトの名無しさん
2010/03/30(火) 07:35:14すべての言語はインタプリタもコンパイラでもどっちもある。
でも、名前はしらん
0625デフォルトの名無しさん
2010/03/30(火) 07:41:550626デフォルトの名無しさん
2010/03/30(火) 07:46:45Hpなんてどこも、同じような程度のところまでしか書いていない。
Cだと、精精、構造体の配列なりリストなりを作成するくらいまで?
そのあとのCらしい、LinuxカーネルハックやWinDDKでのドライバ作成なんてのは
ほとんどない
0627デフォルトの名無しさん
2010/03/30(火) 07:52:22論点がずれている。>608は「処理は早く」なるとした上で「面倒」だとしている。
# それには私も同意。
>>612
今ならVisualStudioの2005だか2008だから無料で入手できるからそちらを使えば?
VC++6なんて制約多すぎるよ。
>>609
最適化を切るなんて信じられない。
最適化が迷惑なら、その部分だけ最適化なしでコンパイルすればいいので、
「コンパイルする場合も多い」とは思えない。
>>590
inline指定は最適化しない限り無視するコンパイラが多いと思う。
そもそも、プロファイラを使う時点で正しい処理時間は得られない。
最適化した状態できちんと処理時間を測るべき。
測る手段は、処理の前後でgettimeofday()でも使えばいい。
より厳密にはrdtscを使うべきだが、そこまでは要らないと思う。
0628デフォルトの名無しさん
2010/03/30(火) 09:03:42http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10565.txt
このようなプログラムです
0629デフォルトの名無しさん
2010/03/30(火) 09:07:43w
0630デフォルトの名無しさん
2010/03/30(火) 09:10:181〜9行目で disp() という関数が定義されており、
その関数を呼び出している。
disp(a) の a はその引数。
関数と引数の意味ぐらいは自分で勉強しよう。
0631デフォルトの名無しさん
2010/03/30(火) 09:14:45ありがとうございます
0632デフォルトの名無しさん
2010/03/30(火) 11:44:17最適化で消えるようなコードでタイミングコントロールとかダメすぎる。
0633デフォルトの名無しさん
2010/03/30(火) 12:16:48自分の開発機以外で実行するとタイミングが合わなくなるプログラムだよ、笑えるじゃないか。
まぁどうせ春休みの連中だからw
0634デフォルトの名無しさん
2010/03/30(火) 12:31:05#include <stdio.h>
void disp(int num){
int i=8; while(i-->0){ putchar( ((num>>i)&1) + '0' ); }
putchar('\n');
}
void main(){
int a=0x56;
disp(a);
{
int s=a, n; a=0;
int i=8; while(i-->0){ n=(s>>i)&1; a=(a>>n)|(n<<7);}
}
disp(a);
}
if文消すパズル遊び〜(^_^ うごかないかも…
0635デフォルトの名無しさん
2010/03/30(火) 13:13:21(そこで待つから)
次のやつが来るまでに処理が終わっているのが前提であって
処理をあわせるために最適化をしないとかないよ
たとえばガチガチの最適化はなんかバグるからしないでおくべ、とかはあるけど
0636デフォルトの名無しさん
2010/03/30(火) 13:31:02新規で書くならいいかげんにそんなもん付けずに動くコードを書けと思うが。
0637デフォルトの名無しさん
2010/03/30(火) 13:59:590638デフォルトの名無しさん
2010/03/30(火) 14:04:50画面書き換えだけならば、確かにタイミングなんてハードウェアと
ドライバ(DirectX)が合わせてくれるから、画面情報を描くことに
専念すれば良い。そこではコンパイラの最適化はありがたい存在
で、コードの美しさ(最適化とは引き換えになる)を少しでも
損なわなくて済む。
しかしキーボード応答の部分はそうとも限らないね
0639デフォルトの名無しさん
2010/03/30(火) 14:09:10> しかしキーボード応答の部分はそうとも限らないね
え?なんで?
0640デフォルトの名無しさん
2010/03/30(火) 14:16:070641デフォルトの名無しさん
2010/03/30(火) 16:50:14シビアなゲームならイベント使わないでキーは自分でスキャンしに行く
コンパイラで最適化を止めるとなんでキーボード応答が良くなる?
そもそも実行速度にばらつきの多いWindowsで最適化だとタイミングがずれるとか話が変すぎ
サターンとかスーファミでタイミング取らないとキーが取れないとかあったけど
それでもキー見るときに待ち時間は明示してタイミングとるんであって
最適化とかしても待ち時間(最適化されちゃって)が消えたりはしない
0642デフォルトの名無しさん
2010/03/30(火) 16:58:44こいつは最適化するとコードが変化すると思ってるのか?
ま、出てくるバイナリのことだと思うけど
コンパイラが出したバイナリが最適化しなければ人間が見ても美しいものだと思ってるのか?
みてみりゃわかるけど(今時のコンパイラだとワケワカランから古いの探してきて)
コンパイラが機械的に出すものに美しさなんてないよな
0643デフォルトの名無しさん
2010/03/30(火) 17:05:29> こいつは最適化するとコードが変化すると思ってるのか?
そんな妙な解釈してるのお前だけだよ
0644デフォルトの名無しさん
2010/03/30(火) 17:22:12お前、頭悪すぎ
0645デフォルトの名無しさん
2010/03/30(火) 17:24:25ソースコード上で人が最適化をしなければ
ならない(出てくるバイナリコードダンプを
見ながら試行錯誤でやる徒労な作業)ことがある
ソースコードの可読性は下がるは、バグを
誘発するわでとてもじゃないが勧められる作業じゃ
ないがハードウェア周辺のコードでは
どちらみちコードの可読性など高が知れてるんで
(暗号的なマジックナンバーが多いし雑多な個性の
調停が多く論理的ではなく妥協的なだけなので
奇麗に書いても理解など容易ではない)
やると効果がある場合がある(った)。
そういう作業経験者はコードジェネレータは最適化
などせず機械的に翻訳してくれれば良いという人(だった)
つまりCを高級アセンブラとして使う人々
0646デフォルトの名無しさん
2010/03/30(火) 17:28:280647デフォルトの名無しさん
2010/03/30(火) 17:29:10>>642 以外はそういう意味に取ってるつーの
0648デフォルトの名無しさん
2010/03/30(火) 17:29:450649デフォルトの名無しさん
2010/03/30(火) 17:32:52>つまりCを高級アセンブラとして使う人々
昔は普通に __asm を使ってインラインですからね。
0650デフォルトの名無しさん
2010/03/30(火) 17:33:26つかアレにキーなくね?
0651デフォルトの名無しさん
2010/03/30(火) 17:39:430652デフォルトの名無しさん
2010/03/30(火) 17:41:57「ゲームとかで」って言っちゃったけどそれはふかしで
でも仕事によっては(特定の機械の制御とか)で人間が最適化やタイミング調整する必要があったりするから
へんにコンパイラに最適化されると出てきたバイナリの可読性も落ちるし、タイミングも狂う
だからコンパイラの最適化やらない場合もあるよ
ってことで良い?
0653デフォルトの名無しさん
2010/03/30(火) 17:49:26コンパイラの最適化で動かなくなるようなプログラムしか書けないやつはバカ。
0654デフォルトの名無しさん
2010/03/30(火) 17:51:440655デフォルトの名無しさん
2010/03/30(火) 17:53:06常に何らかのタイマーが利用可能なわけじゃないぞ
バカっていうやつがry
0656デフォルトの名無しさん
2010/03/30(火) 17:53:130657デフォルトの名無しさん
2010/03/30(火) 18:19:40具体的に言うと何?
0658デフォルトの名無しさん
2010/03/30(火) 18:21:24Windows95 の起動シーケンス
0659デフォルトの名無しさん
2010/03/30(火) 18:23:010660デフォルトの名無しさん
2010/03/30(火) 18:40:10ディレイポートへの書き込みとループでマイクロ秒単位の時間調節ができたりする。
volatileをきちんと使えば最適化は関係ないし。
0661デフォルトの名無しさん
2010/03/30(火) 18:41:36そうじゃなくて、上記の例に当てはまるものは何?ってはなしだよ
0662デフォルトの名無しさん
2010/03/30(火) 18:42:32>>658-659へのレスね
0663デフォルトの名無しさん
2010/03/30(火) 18:43:460664デフォルトの名無しさん
2010/03/30(火) 18:47:20>>658 では電源投入後周辺機器のが起動するまでの時間待ちにビジーループを使ってる
高速なCPUだと待ち時間が短すぎて起動に失敗する
0665デフォルトの名無しさん
2010/03/30(火) 18:50:530666デフォルトの名無しさん
2010/03/30(火) 18:56:24あなたの主張は何なのさ
1.最適化で消えるような書き方をするな
2.プログラムの実行速度に依存してる制御を知りたい
3.その他
0667デフォルトの名無しさん
2010/03/30(火) 19:02:13実行速度が変わって困るならタイマーなりsleep入れるなり
つまり最適化で消えない方法をとるだろうし
それを最適化しないことによって保つってなんだろうなって思って
95の例だと最適化しようが止めようがCPUが早くなれば問題出るとおもうんだけど
0668デフォルトの名無しさん
2010/03/30(火) 19:14:30レスありがとうございます。
エラーが多くて困ってました。
ホームページでも調べてみます。
0669デフォルトの名無しさん
2010/03/30(火) 19:14:55問題の根本は時間待ちにビジーループを使うかどうかだよね
タイマーがあるならタイマーを使えばいいけど
タイマーがないならビジーループを使うしかないでしょ
でも、ビジーループは最適化の有無で待ち時間が変わってしまう
それだけの話
0670デフォルトの名無しさん
2010/03/30(火) 19:23:04タイマーを使うべきだった
どんな早いCPUでもこれだけ待てば大丈夫だろうって推測を技術の進歩が覆してしまったw
0671デフォルトの名無しさん
2010/03/30(火) 19:26:380672デフォルトの名無しさん
2010/03/30(火) 19:33:260673デフォルトの名無しさん
2010/03/30(火) 19:44:27むしろ質問を書き直すべき
0674デフォルトの名無しさん
2010/03/30(火) 19:51:12CINT で WindowsAPI を直で呼び出せばできるかも?
と思ったがコールバック関数をうまく渡せない気がする
#include <win32api.dll>
int main()
{ MessageBox(NULL, "Hello, World!", "", MB_OK); return 0; }
0675デフォルトの名無しさん
2010/03/30(火) 19:57:31Windows環境で
CのインタプリタでGUIが作成できるやつはありますか?
独自仕様なGUIたとえばTcl/tk見たいな感じで平気です
CINTも考えたんですが、そんな事やってるやつ見つけられなくてどうしてよいやらでした
0676デフォルトの名無しさん
2010/03/30(火) 22:02:19ふーむ
わからんぽ
0677デフォルトの名無しさん
2010/03/30(火) 22:59:120678デフォルトの名無しさん
2010/03/30(火) 23:05:370679デフォルトの名無しさん
2010/03/30(火) 23:08:06DispatchMessage だった
0680デフォルトの名無しさん
2010/03/31(水) 00:00:24つかTkからコマンドみたいにしてここの機能を呼べるんじゃねーの
0681デフォルトの名無しさん
2010/03/31(水) 00:43:59ありがとうございます。勉強になりました。これからなるべく rdtsc で時間を見るようにします。
sseのベクトル演算器を使って、長さ1024個のfloatの配列2本の、各要素同士を乗算する関数を書いて、(1024回の乗算)
その関数を1億回繰り返すのを、
2本のスレッドでそれぞれ並列処理させて、
合計で (1024 * 2 * 1億)回のfloar乗算を処理するのに、当方のCPU(pentium dual-core E6300 2.6GHz)で2.1秒でした。
1秒あたりの回数に直すと 2048億 / 2.1秒 で、約97.5ギガ回になります。 が、wikiでFLOPSを見たら、core2 quad ですら 52GFlOPSなので、
格下のCPUなのに97GFLOPS?なのは不可解です…もしかしてFLOPSとは、コア単体あたりの性能って意味なのでしょうか?(それでも47Gも出ちゃうのは変な気がする…)
コンパイルオプションは
gcc -o xxx xxx.c -lpthread -msse3 -march=core2 -O0
として、とくに-O2 などの最適化は切ってあるつもりなのですが… orz
もしかして、元データもちゃんと 2048 * 1億個のユニークなデータを用意しないと、キャッシュで演算省略とかされちゃうのでしょうか…はて
http://codepad.org/lDVCdTLL
0682デフォルトの名無しさん
2010/03/31(水) 01:00:16値が0に近いとか結果が0になるような
場合乗算を省略したりするとか...
0683デフォルトの名無しさん
2010/03/31(水) 01:04:050684デフォルトの名無しさん
2010/03/31(水) 01:20:080685デフォルトの名無しさん
2010/03/31(水) 01:40:180686デフォルトの名無しさん
2010/03/31(水) 02:03:15少なくとも片方がNANとかだったら実質演算しないってことは
聞いたことがある。Intelコアの話かは忘れたが...
0687デフォルトの名無しさん
2010/03/31(水) 02:05:02逆
0688デフォルトの名無しさん
2010/03/31(水) 02:08:12私のパソコンはのCPUはAthlon64 X2で BCC5.5でCを勉強しているのですが
この環境でコンパイルされたEXEはIntelのCPUでは動かないのですか?
0689デフォルトの名無しさん
2010/03/31(水) 02:16:32NANだってー!
0690デフォルトの名無しさん
2010/03/31(水) 02:29:160691681
2010/03/31(水) 02:37:07スレッドAとスレッドBで、どちらもXMM1とXMM2レジスタを使ってると、処理がごっちゃになっちゃうような気がした。
いや、よく知らないんですけど、SSEって、各コアに一個フルセットが用意されてるのですか? それとも複数コアで共有だったりするのですか?
もしもSSEが各コアに専用に1機づつ用意されてるとしても、(いや、実際そうだと思う…)しかし、pthreadで作ったスレッドが、
スレッドAはCPU1、スレッドBはCPU2と、ちゃんと分けられる保証も無いような気がします。どうなんでしょう?(それとも必ず分けられるのですか?)
もしもスレッドAとスレッドBが同じ側のコアを使ってしまったばあい、MMX1,MMX2を決め打ちして共有してるのは、なにかと危険な気がしました…
(もしかしてC言語が自動で調整してくれる?、いや、たぶんアセンブラに関しては放置される予感)
検算してないので計算結果がどうなってるか考えてなかったのですが、(とにかく掛け算機が回ればいいとだけ思って書いてたのでw)
スレッドA用と、スレッドB用とで、別のレジスタを使って専用に書いてやった方が安全なような気がしました。
つまりスレッドA用はXMM1 XMM2レジスタを使い、スレッドBはXMM3 XMM4を使う…みたいに専用に関数をべつべつに用意する方が良いような気がしました。
もしかしたら、ぜんぶ取り越し苦労かもしれませんが…はて。
(もしかすると、レジスタ退避などの調整はコンパイラが自動でやってくれるのかもしれませんが…??? いや、たぶん調整してはくれない予感)
0692デフォルトの名無しさん
2010/03/31(水) 02:59:35普通は動く。というか動かないEXEを作る方が難しい
0693デフォルトの名無しさん
2010/03/31(水) 03:07:08ところで、getchar()などでC言語でファイル開いた場合、終端の次を読むとEOFが帰ってくるのでしょうか?
0694デフォルトの名無しさん
2010/03/31(水) 03:08:50今BCC5.5でググって、上のほうに出たサイトを2,3見てみたら、
変なところに誘導されて、ダウソするところさえ見つからないのな。
俺なんか、この時点ですでにめんどくさい。
0695デフォルトの名無しさん
2010/03/31(水) 03:08:59HALのおかげでWindowsでコンパイルしたものはどんなCPUであれWindows上で実行できます。
0696デフォルトの名無しさん
2010/03/31(水) 03:09:58えっw
0697デフォルトの名無しさん
2010/03/31(水) 03:12:01面倒くさいよな
0698デフォルトの名無しさん
2010/03/31(水) 03:12:26BCC以外だったら基本的にVC++ぐらいしか選択肢がなくて、そのVC++が初心者には難解に見えるからじゃない?
Unix系と違ってWinのGNU使いづらそうだし…
0699デフォルトの名無しさん
2010/03/31(水) 03:13:450700デフォルトの名無しさん
2010/03/31(水) 03:22:26コンテキスト切り替え(スレッドが非アクティブになる時にレジスタの値を退避したり、
スレッドがアクティブになるときにレジスタの値を復元する)のはOSの役目。
Win98、2000以降はXMMレジスタも対象になっているが、Linuxは知らん
以下のスレの方が詳しいと思うので、そっちで聞いてみれ
マルチスレッドプログラミング相談室 その8
http://pc12.2ch.net/test/read.cgi/tech/1253521167/
MMX SSE 3D NOW!のプログラミング
http://pc12.2ch.net/test/read.cgi/tech/1085749218/
0701デフォルトの名無しさん
2010/03/31(水) 03:38:56unix系でもEOFってのはファイルに書いてあるものではない。
既に終わりに達しているのになお読もうとした時に読む関数が返すもの。
>>694
VC6ってのもよくみる(例:>612)けど、不思議でしかたない。なんで6??
0702デフォルトの名無しさん
2010/03/31(水) 04:02:06書いてあるものもあるんですよね?
もちろん書いてあるとは見える形ではなく、バイナリのときにちょこっと
0703681
2010/03/31(水) 05:57:04http://codepad.org/1R5dzauu
修正したら23秒かかりました。8.9GFlopsです。妥当な数字です。安心したというか、がっかりしたというか…w
>>700
出力される数字をみたら、たしかに混ざっては無い感じでした。ちゃんとOSがやってくれてるみたいでした。余計な心配だったみたいです。
0704デフォルトの名無しさん
2010/03/31(水) 06:09:06LinuxもちゃんとMMXレジスタを退避するよ。
寧ろインテルコンパイラのお蔭でWindowsよりも一足早く最新CPUのアーキテクチャの恩恵を受けやすいし。
0705デフォルトの名無しさん
2010/03/31(水) 07:21:026の後のやつからmfcすぐ使えなからじゃね
.netだと古いPCですぐ動かんし
プロジェクトファイルとかも変わるし
cygwinはcygwin入れた人にしか見せられないし
とりあえずコマンドラインとかWinMainから始まるような物作るなら
bccとかvc6のほうが手っ取り早く見えるのは、わかる
bccは期限なしでフリーだし
あと学校でコレで間に合うって理由でBCCなりVC6なりを使い続けてるのもあるかも
0706デフォルトの名無しさん
2010/03/31(水) 09:22:11>cygwinはcygwin入れた人にしか見せられないし
人に見せられるようなプログラムをかけるようになるまでどれくらいかかるの?
0707デフォルトの名無しさん
2010/03/31(水) 09:29:400708デフォルトの名無しさん
2010/03/31(水) 09:32:57だいたいさ、よく読めば
cygwinを避ける人が理由として、そう思うんじゃないかなって言う話だくらいわかるだろ
0709デフォルトの名無しさん
2010/03/31(水) 09:33:440710デフォルトの名無しさん
2010/03/31(水) 10:03:43getchar() の戻りは int でファイル終端を意味する値は マクロで定義された EOF
ASCIIコード 0x1a とは別物として区別できるぜ
0711デフォルトの名無しさん
2010/03/31(水) 13:18:21ちょっと複雑みたいだからこれを読んで
ttp://www.sixnine.net/cygwin/translation/devel/mno-cygwin-howto.html
0712デフォルトの名無しさん
2010/03/31(水) 13:20:45自宅に送信して代理書き込みさせるアプリを作りたいんだけどCだけでできますか?
0713デフォルトの名無しさん
2010/03/31(水) 13:22:230714デフォルトの名無しさん
2010/03/31(水) 14:30:000715デフォルトの名無しさん
2010/03/31(水) 15:04:04SFU(Service for UNIX)が一応MSが正規に対応している
UNIX On WInodows (SFUで検索すれば今でもDL可能だと
思うが未確認)
0716デフォルトの名無しさん
2010/03/31(水) 15:22:05シェルの動作とか、名前パイプとかforkのところとか
0717デフォルトの名無しさん
2010/03/31(水) 15:26:22その中のターミナルでやるのが吉か..
結構めんどいからな...
うNIX系だとテキストエディターの選択枝が
限られるし...
sshdでも動かしてターミナル経由とかFTP経由で
やるのが良いんじゃないかと
0718デフォルトの名無しさん
2010/03/31(水) 15:30:010719デフォルトの名無しさん
2010/03/31(水) 15:40:55C言語C++言語での開発はあらかた役割を終えているんじゃ
ないかと...
0720デフォルトの名無しさん
2010/03/31(水) 16:11:050721デフォルトの名無しさん
2010/03/31(水) 16:15:200722デフォルトの名無しさん
2010/03/31(水) 16:21:57Vista以降、SFUはSUAとして標準搭載されたよ
0723デフォルトの名無しさん
2010/03/31(水) 19:06:10今はまず使わないよな
0724デフォルトの名無しさん
2010/03/31(水) 19:12:090725デフォルトの名無しさん
2010/03/31(水) 19:15:02何か根本的な勘違いしてないか?
0726デフォルトの名無しさん
2010/03/31(水) 19:27:40さすがに0x1aが読まれることは無かった気がするけど、どうだったっけか。
0727デフォルトの名無しさん
2010/03/31(水) 19:43:130728デフォルトの名無しさん
2010/03/31(水) 21:57:30'A',"A"の違いがわかりません
教えてください
0729デフォルトの名無しさん
2010/03/31(水) 21:58:560730デフォルトの名無しさん
2010/03/31(水) 21:58:57'A'は文字、"A"は文字列
はい、次
0731デフォルトの名無しさん
2010/03/31(水) 22:02:520732デフォルトの名無しさん
2010/03/31(水) 22:02:530733デフォルトの名無しさん
2010/03/31(水) 22:02:59'A'は文字, その文字に割り当てられた値を持つ. 10進数で65
"A"は文字列, その文字列の格納先のアドレスの値を持つ.
0734デフォルトの名無しさん
2010/03/31(水) 22:46:25この文書はもう古い。最近でたcygwin では -mno-cygwin のオプションはない。
0735デフォルトの名無しさん
2010/03/31(水) 22:47:40バイナリモードで open すれば関係ない。
0736デフォルトの名無しさん
2010/03/31(水) 23:09:46つまり、テキストモードでopenすると0x1a拾うってことか
はー未だにあるんだな
0737デフォルトの名無しさん
2010/03/31(水) 23:16:20詳しく有難うございます。
0738デフォルトの名無しさん
2010/03/31(水) 23:22:28伝説だけが流布してはいけないと思い、今作ってためしてみた。
bcc32 は ^Z を EOF と認識する。
gcc/cygwin は ^Z をみていない。(インストール時のオプションによるかもしれないが。)
http://ideone.com/k466Oe2D
0739デフォルトの名無しさん
2010/04/01(木) 00:44:31cygwin上だとlibc互換ていうかLinux環境のエミュレートだから
バイナリモードとテキストモードには、もともと違いが無いんじゃないか?
0740デフォルトの名無しさん
2010/04/01(木) 00:49:130741デフォルトの名無しさん
2010/04/01(木) 00:59:490742デフォルトの名無しさん
2010/04/01(木) 01:35:59O/Rマッパーを作るとことは言語上不可能である
0743デフォルトの名無しさん
2010/04/01(木) 01:42:560744デフォルトの名無しさん
2010/04/01(木) 01:43:530745デフォルトの名無しさん
2010/04/01(木) 01:48:43データマッパーの美しい作り方ってどんなのがありますか?
0746デフォルトの名無しさん
2010/04/01(木) 01:54:420747デフォルトの名無しさん
2010/04/01(木) 01:55:540748デフォルトの名無しさん
2010/04/01(木) 01:59:310749デフォルトの名無しさん
2010/04/01(木) 03:11:560750デフォルトの名無しさん
2010/04/01(木) 04:17:15まともに動いたので紹介しておく。
http://hp.vector.co.jp/authors/VA050396/tech_10.html
0751デフォルトの名無しさん
2010/04/01(木) 10:27:22cygwinなら仕方ない
0752デフォルトの名無しさん
2010/04/01(木) 12:38:150753デフォルトの名無しさん
2010/04/01(木) 12:45:11かわいそうにw
つか板違い。
0754デフォルトの名無しさん
2010/04/01(木) 13:05:26たぶん更新が早くて新しいハードへの対応がよいから
fedoraやDebian GNU/Linuxもあるが
僕は、断然せんとくんだけどね
安定、サポートが長い、2038
赤帽なめんなよ
つか板違い
0755デフォルトの名無しさん
2010/04/01(木) 13:29:55つか板違い
0756デフォルトの名無しさん
2010/04/01(木) 14:26:23つか勘違い
0757デフォルトの名無しさん
2010/04/01(木) 14:58:200758デフォルトの名無しさん
2010/04/01(木) 15:20:22write って fwrite のことか?
そうでないならその write 関数を作った奴に聞け!
fwrite のことなら、どっちの関数もリファレンス見ればすぐに分かるだろ。
それでわからない部分があるならそれを具体的に書いて質問しろ。
0759デフォルトの名無しさん
2010/04/01(木) 15:49:49unix互換ライブラリにあるwrite()ならfputs()とはレイヤーが違うので要注意。
0760デフォルトの名無しさん
2010/04/01(木) 16:33:16ワロタ
0761デフォルトの名無しさん
2010/04/01(木) 22:01:25式を入力してください
x+3
5
という結果がでるコードを書きたいのですが
思うような結果がでません。ご指導お願いします。
#include "stdafx.h"
#include "stdio.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int y=0,x=2;;
char s[256];
printf("式を入力してください\n",s);
scanf("%s",&s);
y=(int)s;
printf("%d\n",y);
return 0;
}
0762デフォルトの名無しさん
2010/04/01(木) 22:13:020763デフォルトの名無しさん
2010/04/01(木) 22:15:17y = strtol(s, 0, 10);
とかかな
0764デフォルトの名無しさん
2010/04/01(木) 22:24:21初心者にはかなり難しいよ、それ。
事前に変数名と変数へのマップを作って、
入力文字列をパーズしながら木を作って評価して…
0765デフォルトの名無しさん
2010/04/01(木) 22:35:080766デフォルトの名無しさん
2010/04/01(木) 22:56:15perlでやれ
0767デフォルトの名無しさん
2010/04/02(金) 02:07:430768デフォルトの名無しさん
2010/04/02(金) 03:17:03その他できるかぎり適当に書いたはずが、それでも結構な分量になるなあ
http://codepad.org/jpQuf9W7
0769デフォルトの名無しさん
2010/04/02(金) 03:23:39$data = "入力された文字";
print eval $data;
二行でできた。
0770デフォルトの名無しさん
2010/04/02(金) 03:33:02i=87291
ではなくて
i[0]=8
i[1]=7
i[2]=2
i[3]=9
i[4]=1
というように1桁ずつ別々に配列に代入していくには
どうしたらいいでしょうか?
0771デフォルトの名無しさん
2010/04/02(金) 03:33:18ソフト詳細説明
「文字列の式」を計算する機能を提供する DLL です。
文字列で記述されている計算式を計算したり、文字列の連結を行う事ができます。
http://www.vector.co.jp/soft/win95/prog/se476820.html
0772デフォルトの名無しさん
2010/04/02(金) 04:39:44どこまでできて何がわからないのか、もっと絞って質問して。
自分でプログラムを書く気は無いなら、宿題スレへ。
自分が紙の上でどうやるかを分解していって、プログラムコードに置き換えるんだ。
この作業を自分でやらないのではいつまで経ってもプログラムを書けるようにならない。
0773デフォルトの名無しさん
2010/04/02(金) 04:41:53sprintf()かなにかで一旦文字列にしてから一文字ずつ加工するか、
10で割った余りを取り出してから10で割るロジックを繰り返すか。
0774770
2010/04/02(金) 04:50:57char str[1001]="1000桁の数字";
for(i=0;i<=999;i++){
num[i]=(int)str[i];
}
これでやってみたら
num[i]に2ケタの数字が入ってうまくいかなかったんですよ
0775デフォルトの名無しさん
2010/04/02(金) 04:53:140777デフォルトの名無しさん
2010/04/02(金) 05:26:07Cには純粋な文字型がないので、文字コードを整数値に変換しないといけない。
文字コードは大抵、'0'から'9'まで連続しているので、'0'との差を取ることで変換している。
従って、厳密には一対一対応させるべき。
switch (str[i]) {
case '0': num[i] = 0; break;
case '1': num[i] = 1; break;
:
:
case '9': num[i] = 9; break;
}
0779デフォルトの名無しさん
2010/04/02(金) 08:12:040780デフォルトの名無しさん
2010/04/02(金) 10:45:060781デフォルトの名無しさん
2010/04/02(金) 10:47:220782デフォルトの名無しさん
2010/04/02(金) 23:14:31X = a;
とした時のXは何になるの?
何になるか決まりあるの?
決まりあるなら、その決まりにした理由は何?
0783デフォルトの名無しさん
2010/04/03(土) 00:48:25型は異なるが値としては
X==a==a[0]==a[0][0]==a[0][0][0]==a[0][0]...[0]==&a[0][0][]...[]
理由は知らない
0784デフォルトの名無しさん
2010/04/03(土) 01:13:03へーーー、値はそうなんだ。
で、型はどの型になるの? その型にする理由はなんですか?
0785デフォルトの名無しさん
2010/04/03(土) 01:14:53型はつじつまがあうようになってる
0786デフォルトの名無しさん
2010/04/03(土) 02:49:44細かい部分の挙動や、普段使わないような記号の仕組み(たとえばaqや*)などの具体的な仕様が分からなくて困ってるんだ。
printfに関する一般的な仕様(posixなど?)を具体的な使用例ソースと共にまとめてあるページって、どこかに無いかな?
(英語は読めないので、できれば日本語のページが望ましい)
0787デフォルトの名無しさん
2010/04/03(土) 10:43:35manpage printf でググるとか
0788デフォルトの名無しさん
2010/04/03(土) 15:21:16glibc の printf() のソースを見て自分で仕様書を書く。
。。。なんてことはしなくても
JIS X 3010:2003 でぐぐって
JISC のページの PDF 見れば。
7.19.6.1 fprintf 関数。
0789デフォルトの名無しさん
2010/04/03(土) 15:42:110790デフォルトの名無しさん
2010/04/03(土) 17:33:11さっそくググってみたよ。
わおー、とてもクールなページでprintfのアウトラインをつかめた気がしたよ。ありがとう : )
>>788
やっほー、C99の仕様書らしきPDFが出てきやがったぜ。こいつはクールなPDFだね。
まだ読んでないけど、さっそくダウンロードしてみるよ。
それにしても書籍で買うと140ドル(!)もするのかい? わおー、やつら俺らの白髪を増やす気かい!
>>glibc の printf() のソースを見て自分で仕様書を書く。
glibcの挙動をマネるというアイディアには賛成さ。ボクにとってGNUのlibcはスタンダードlibcと言える存在だからね。
だけど、ソースを直接閲覧するというアイディアはノーグッド。なぜならglibcのソースはLGPLだからね。
LGPLコードから、たった一行コピペするだけで、そのコードはもぅ法的観点からGPLコード以外とはマージ不可能になってしまうのだろう?
恐ろしくてGPLのコードなんて見る気にならないよ
それにもともと、コーディングに関しては他を参考にせずに、自力でprintfをフルスクラッチするのが目的だしね : )
0791デフォルトの名無しさん
2010/04/03(土) 18:02:28ハイスクールで背中に蹴ってくださいって紙張られてみんなにけられるタイプ
好きなおさななじみの女の子の前でしどろもどろ
声出して自分に話しかけるタイプ
「いいか、落ち着くんだ、そして言うんだ、デートしてくださいって」
「ああ、もうなんてお前は意気地なしなんだ、彼女行っちゃったじゃないか」
0792デフォルトの名無しさん
2010/04/03(土) 18:21:46コピペしなきゃいいじゃん。
無理やり違う実装で書くのも勉強になるぜw
0793デフォルトの名無しさん
2010/04/04(日) 20:30:350794デフォルトの名無しさん
2010/04/04(日) 20:33:00そうだよ。
アスキーコードでググればアスキーコード表くらい出てくると思う。
0795デフォルトの名無しさん
2010/04/04(日) 21:07:16アスキーコードですね。
ありがとうございます。
0796デフォルトの名無しさん
2010/04/05(月) 12:20:590797デフォルトの名無しさん
2010/04/05(月) 21:58:35環境はWinで文字列操作が簡単なやつがいいです。
0798デフォルトの名無しさん
2010/04/05(月) 22:01:19Roadsend PHP
0799デフォルトの名無しさん
2010/04/05(月) 22:01:51おいおいw
0800デフォルトの名無しさん
2010/04/05(月) 22:03:53a="はじめまして";
b="こんにちは";
a+b
と足し算できるが。
0801デフォルトの名無しさん
2010/04/05(月) 22:25:400802デフォルトの名無しさん
2010/04/05(月) 22:26:16STLとは切り離して考えてるぞ
0803デフォルトの名無しさん
2010/04/05(月) 22:30:07方法ありますか?
0804デフォルトの名無しさん
2010/04/05(月) 22:37:390805デフォルトの名無しさん
2010/04/05(月) 23:16:07awkかrubyだろ
0806デフォルトの名無しさん
2010/04/06(火) 00:41:530807デフォルトの名無しさん
2010/04/06(火) 00:45:56ガタガタ言わずに実測しろ
0808デフォルトの名無しさん
2010/04/06(火) 00:47:430809デフォルトの名無しさん
2010/04/06(火) 01:35:41ステップ数から見れば速くなる実装は可能。
ただし、引数に何ならかの法則性があるなら
それに最適化した実装の方が速い可能性はある。
0810デフォルトの名無しさん
2010/04/06(火) 01:39:27アラインメントがズレると遅いかもしれない
実測するっきゃねー
0811デフォルトの名無しさん
2010/04/06(火) 07:38:57試してみた 同じなら0、違うなら0以外
http://codepad.org/V24NL75t
x_strncmp() : 1文字づつ比較する場合。19個 * 1千万回 = 0.68sec
xx_strncmp4() : 4文字づつ比較する場合。19個 * 1千万回 = 0.28sec
遅くなるかと思ったら速かった。頭がどうにかなりそうだった。
0812デフォルトの名無しさん
2010/04/06(火) 10:02:00strncmp とも比較してみてくれないか。 単純にx_strncmpをstrncmpにおきかえたら、 0.00secになっちまった。
0813デフォルトの名無しさん
2010/04/06(火) 10:05:43けど、x_strncmpとxx_strncmp4で機能に差があるのは良くない。
http://codepad.org/jWk8nqgg
0814デフォルトの名無しさん
2010/04/06(火) 10:27:1432bitCPUなら32bitごとが速い。
>>810
先頭から始めてるんだから、アライメントがずれることはないよ。
0815デフォルトの名無しさん
2010/04/06(火) 10:35:300816デフォルトの名無しさん
2010/04/06(火) 18:14:26charの配列の頭がアライメント取れてるとは限らないんじゃね?
コンパイラとその設定によるとしか言えない。
0817デフォルトの名無しさん
2010/04/06(火) 18:43:13そんなことはない。配列の先頭や、構造体の先頭はきっちりしたアドレスなっている。
そうでないと、構造体でアライメント対策でパディングしても何の意味もないことになるだろ。
これは全てのC言語共通であり、設定で変えることも不可能。
(設定で変更できるのは構造体のメンバの先頭位置だけ。)
0818デフォルトの名無しさん
2010/04/06(火) 19:23:47http://codepad.org/cNxZ3VtM
きっちりしてる?
0819デフォルトの名無しさん
2010/04/06(火) 19:35:57きっちりしてるから必要最低限のサイズしかメモリを消費しない
0820デフォルトの名無しさん
2010/04/06(火) 21:59:42つか、アーキテクチャ依存に最適化されたbuilt-in関数が速い。
0821デフォルトの名無しさん
2010/04/06(火) 23:20:29windowsで
├や└を文字列配列に入れたいけどやっぱ入りません
0822デフォルトの名無しさん
2010/04/06(火) 23:21:390823デフォルトの名無しさん
2010/04/06(火) 23:28:460824デフォルトの名無しさん
2010/04/06(火) 23:38:33っ「ワイド文字」
0825デフォルトの名無しさん
2010/04/06(火) 23:41:23「きっちり」とはどういう意味で言ってるんだ?
今の関心事は32bit-alignedであるかどうかだが、
>>818ではchar配列は32bit-alignedにはなっていない。
0826デフォルトの名無しさん
2010/04/07(水) 00:55:21そんなおまいさんたちには glibc の memcmp を進呈。
0827770
2010/04/07(水) 01:00:560828デフォルトの名無しさん
2010/04/07(水) 01:28:10きっちりしているじゃないか
隙間があったら無駄じゃね
>>818はスタックだからそうなるんじゃね
0829デフォルトの名無しさん
2010/04/07(水) 01:40:26ネタにマジレス
0830デフォルトの名無しさん
2010/04/07(水) 04:37:49文字列はCが一番めんどくさい。それ以外ならなんでも簡単
JavaScriptなら何もインスコしなくてもWindowsだけで始められるぞ
0831デフォルトの名無しさん
2010/04/07(水) 15:49:40以下のようなコーディングってありでしょうか?
前提条件として、char* strの指すアドレスが他で利用されていない事前提での話ですが、
なんというかEffectiveC++みたいな常套手段のような知識としてアリなのか知りたいのです。
typedef struct {
int value;
char* str;
} Data;
Data* CreateData(const char* c) {
Data* d = (Data*)malloc(sizeof(Data));
d->value = 100;
d->str = c;
return d;
}
void ReleaseData(Data* d) {
free(d);
}
void main(void) {
Data* d = CreateData("This is Data.");
// dを使ってシコシコする
ReleaseData(d);
}
0832>>831 修正
2010/04/07(水) 15:51:01free(d);
d = 0; // ←ココ追加
}
よろしくお願いします。
0833デフォルトの名無しさん
2010/04/07(水) 15:59:55Data 定義で str を書き換える気まんまんだし
c がリテラル文字列へのポインタだから、実際の書き換えを行って鼻から悪魔出しても文句は言えない
代入時のスコープから抜けた時に不安 とか 色々余計な心配事増やすぐらいなら
素直に複写するかな… ( d->str = malloc(strlen(c)+1); 〜 memcpy() )
0834デフォルトの名無しさん
2010/04/07(水) 16:04:51Data* d = CreateData("This is Data.");
printf("%p\n", d);
ReleaseData(d);
printf("%p\n", d);
-----
ReleaseData() 内部で d = 0 とやっても、呼び出し側のポインタが変るわけじゃーない
ReleaseData(Data** d) { free(*d); *d = 0; } とし ReleaseData(&d); と呼び出すか
マクロで NULL 代入する式を追加するかだな
0835>>831
2010/04/07(水) 16:10:32>>833
リテラル文字を保持するつもりなのでおっしゃる通り const char* str; にしないとまずいですね。
ReleaseData()で開放という約束事があるので、ここは素直に複写するのがよさそうです。
>>834
うはぁw おっしゃるとおりです。ポインタの理解がまだまだですねorz
ReleaseData(Data* d) の Data* d はアドレスのコピーでしたね…
あーあー欝だ。
凄く勉強になりました! ありがとうございました!
0836デフォルトの名無しさん
2010/04/07(水) 19:03:32書いてて気づいたんですが、
DATA型全体をmallocする設計だと、DATA p を関数に渡すときに DATA* とするか DATA** として渡すか?などで、余計な思考を一段はさむ
必要があって、わずらわしいと感じました。
strだけでいいのではないでしょうか? mallocするのは。
たとえば、freeDATA(DATA* d); d=0; とするか freeDATA( DATA** d);とするべきか? 他のwriteDATAなどは(DATA*)なのに、freeDATAだけ(DATA**)なのは
設計として歪な気がする。だから freeDATA(d);のあとに手動でd=0としています。
これは、freeDATAで開放するのが DATA型全体だから、こういう煩わしい問題が起こるのだとおもいます。
もしも freeDATAで開放する対象がメンバの str のみならば、DATA** を渡す必要はないし、freeDATA(d)内で d->str=0;として有効になります。
(これなら freeDATA() にだけ、DATA** という変則的な引数にする必要がなく、他のメソッドと同じく DATA* であつかえて、簡単だと思います。)
おそらく、strを可変長にしたいという目的なのだから、mallocは strのみに行うような設計にすればどうか?と思いました。
そうすれば、DATA* か DATA** か?という煩わしい問題から解法されるので、余計な思考を一段はさむ必要がなくなって簡単になると思いました。)
0837デフォルトの名無しさん
2010/04/07(水) 19:27:05あーあCかわいそう
C++だとクラスに入れてデストラクタ書けばなーんも考えずに済むのに・・・・
生成パターンも使えるし
0838デフォルトの名無しさん
2010/04/07(水) 19:42:12構造体を階層的に定義するのと大差ないしなぁ
とか、あえて言ってみる
0839デフォルトの名無しさん
2010/04/07(水) 19:42:52アホかいな
0840デフォルトの名無しさん
2010/04/07(水) 19:50:52大差ないだと?
じゃあ死ぬまでCだけで頑張ってね
0841デフォルトの名無しさん
2010/04/07(水) 20:17:19論点が分かってないようだが、C++の実行ロジックは、Cで組めるってことよ。
C++はコンパイラがより多くのコードを自動的に出力してくれる、ゆとり仕様の
高級言語(笑)ってこと
>>840
おう、おまいはC++で頑張れよ。腐ったコードのメンテナンスはCよりも
C++の方が100倍つらいわ
0842デフォルトの名無しさん
2010/04/07(水) 20:20:570843デフォルトの名無しさん
2010/04/07(水) 20:21:49便利ならゆとり仕様と罵られようが俺はそっちを選ぶぜ
0844デフォルトの名無しさん
2010/04/07(水) 20:24:21論点が分かってないようだが、Cの実行ロジックは、アセンブリで組めるってことよ。
Cはコンパイラがより多くのコードを自動的に出力してくれる、ゆとり仕様の
高級言語(笑)ってこと
0845デフォルトの名無しさん
2010/04/07(水) 20:25:16>腐ったコードのメンテナンスはCよりもC++の方が100倍つらいわ
あーあジジイの頭ではこうなるのか
オブジェクト指向がなぜ開発されたかその経緯もしらないで
0846デフォルトの名無しさん
2010/04/07(水) 20:25:38論点が分かってないようだが、アセンブリの実行ロジックは、バイナリコードで組めるってことよ。
アセンブリはアセンブラがより多くのコードを自動的に出力してくれる、ゆとり仕様の
高級言語(笑)ってこと
0847デフォルトの名無しさん
2010/04/07(水) 20:27:27それからもう一つな
例外機構はCだけでは真似できない
だからC->C++トランスレータは今は開発不能
0848841
2010/04/07(水) 20:29:580849デフォルトの名無しさん
2010/04/07(水) 20:35:12同じ関数名で引数違いで動作変えるとか
Cで無理なこといくらでもあるよな
同じようにアセンブラでも無理
CでC++をつくって自分を再解釈して再コンパイルとかするなら別だけど
出来上がった結果同じ動作をするものは作れるけど
どういうロジックで動いているかを真似るのは無理
0850デフォルトの名無しさん
2010/04/07(水) 20:45:16どっちかというと、コンパイラレベルの話だね。
同様の動作をする実行コードをつくるのは比較的簡単
0851デフォルトの名無しさん
2010/04/07(水) 20:47:27真似ならできるんじゃないか?
>>849
それは同じ記述ができないだけであって、同じ動作ができないというのとはまるで違う話では?
0852デフォルトの名無しさん
2010/04/07(水) 20:48:23でも例えばカプセル化は出来る?
全部publicになっちゃうでしょ?
プログラマが意識してpublicとprivateを見分けるなんてそりゃ基地外沙汰だぜ
0853デフォルトの名無しさん
2010/04/07(水) 20:49:07longjmp()とsetjmp()を使って似たような事は出来るが、C++の
例外機構を完全に真似る事は不可能です
0854デフォルトの名無しさん
2010/04/07(水) 20:50:370855デフォルトの名無しさん
2010/04/07(水) 20:51:15それも大変な思いをしてな
0856デフォルトの名無しさん
2010/04/07(水) 20:51:55CとC++は別物だろ
専用スレもあるんだからほどほどに
0857デフォルトの名無しさん
2010/04/07(水) 20:53:57ソースをコンパイルして、オブジェクトファイルになった時点で
CとかC++とかアセンブラとか、あまり関係無い話になるってことよ
0858デフォルトの名無しさん
2010/04/07(水) 20:56:29ほらC言語だけでC++に出来ること全部できるぞ
0859デフォルトの名無しさん
2010/04/07(水) 20:59:02ビルド時にLNK2005エラーが発生してしまいます。
どこがいけないのでしょうか?
--- test.cpp ---
#include "test.h"
void main(){
#ifdef ATEST
Atest();
#endif
}
--- test.h ---
#ifndef TEST_H
#define TEST_H
#define ATEST
class A{}; //テストで使用するクラス
void Atest();
#endif //TEST_H
--- Atest.cpp ---
#include "test.h"
void Atest(){
・・・
}
0860デフォルトの名無しさん
2010/04/07(水) 21:02:060861デフォルトの名無しさん
2010/04/07(水) 21:10:09実行ロジックが組める事と綺麗で安全に組める事は別問題だぜ
デストラクタをまともにCで書こうと思ったらgotoの嵐だし
ミスっててもコンパイラは何も言わない
安全性なんて気にしない!とか頭の湧いたこと言うならもう知らんが
0862デフォルトの名無しさん
2010/04/07(水) 21:14:20あまり関係ないだと?
そこまで持ってくまでがあまり関係あるでしょ
開発効率が全然違うんだけど
0863デフォルトの名無しさん
2010/04/07(水) 21:19:33>>837の、C++で得られる利便性について話している人と
>>838の、同じ動作の実行ファイルはCでもC++でもできることについて話している人がいて
見てておもしろいからもっとやれ
0864デフォルトの名無しさん
2010/04/07(水) 21:20:31まず、コンパイラの話をしたいのか、実行コードの話をしたいのか
そこを明確にしてから話してくれると助かる
0865デフォルトの名無しさん
2010/04/07(水) 21:25:33たしかに構造体と、その操作という組み合わせで組むのなら、C++の方が素直に書けるので簡単に読めて良いと思います。
個人的には、C++は単なる良いCとして扱う程度にとどめた方が分かりやすいと思ってます。
カプセル化と単一継承とテンプレート程度にとどめた素朴な使い方がいいと思います。
Cの「構造体とその操作」という方法の、単なる別記法としてのC++なら、それなら単なる良いCとしても読めますし。
あまり多態性を多用したコードは、個人的には、あれは苦手です…読みやすいとは思わないです…(頭が良さそうにはみえますがw)
プログラム中のあらゆる型をポリモフィズムで扱われると、あまりに抽象的になりすぎて具体的なコードが見え難くて、読むのがすごく大変だと感じます。
0866デフォルトの名無しさん
2010/04/07(水) 21:31:40誰もオブジェクトコードの話はしてないだろアホかww
ソースレベルの話をしてるんだが
0867デフォルトの名無しさん
2010/04/07(水) 21:32:370868デフォルトの名無しさん
2010/04/07(水) 21:33:34なぜこうではないの?
int DATA::write( const char* s ){
const char* src=s; int l=0; while(*src++!=0){l++;}
if(!str) delete[] str;
str=new char[l+1];
char* dst=str; src=s; while(l-->0){*dst++=*src++;} *dst=0;
return(0);
}
0869デフォルトの名無しさん
2010/04/07(水) 21:35:17クラス名が嫌。Dataじゃないのが嫌。
初期化リストで初期化しないのが嫌。
メソッド名が嫌。DATA::writeの実装が嫌。
strlenを使ってないのが嫌。strcpyやstrdupを使ってないのが嫌。
!strで先にdelete[]すればreturnスッキリするのに。
mainでreturn 0してないのが嫌。
ポリモってるつもりでDATA *d = new DPと書かないのが嫌。
同じくvoid f1(DP* d)としてvoid f1(DATA* d)としていないのが嫌。
0870デフォルトの名無しさん
2010/04/07(水) 21:35:32その程度しかC++を使いこなす能力がないのなら確かに無理は
しない方がいいわな
0871869
2010/04/07(水) 21:36:110872デフォルトの名無しさん
2010/04/07(水) 21:36:440873デフォルトの名無しさん
2010/04/07(水) 21:41:53これはひどい
0874デフォルトの名無しさん
2010/04/07(水) 21:47:37おーい一つだけ
C++ではmain()でreturn 0;は省略してもいいんだぞ
0875デフォルトの名無しさん
2010/04/07(水) 21:53:540876デフォルトの名無しさん
2010/04/07(水) 21:55:040877デフォルトの名無しさん
2010/04/07(水) 21:59:060878デフォルトの名無しさん
2010/04/07(水) 21:59:45そんなに多態性をぶっこわしたいの
0879デフォルトの名無しさん
2010/04/07(水) 22:10:22http://codepad.org/WMMosOPl
むしゃくしゃしてやった。今はスレ違いを反省している。
0880デフォルトの名無しさん
2010/04/07(水) 22:11:140881デフォルトの名無しさん
2010/04/07(水) 22:21:40本当にそのコード?VC++2008では通ったぞ。
これじゃないの?
http://support.microsoft.com/default.aspx?scid=kb;ja;148652
それかここに全文貼ってみるか。
http://codepad.org/
0883デフォルトの名無しさん
2010/04/08(木) 08:39:11お前こそ誰だよ
0884デフォルトの名無しさん
2010/04/08(木) 19:23:020885デフォルトの名無しさん
2010/04/08(木) 19:23:510886デフォルトの名無しさん
2010/04/08(木) 20:44:14C原理主義者が顔真っ赤になっちまうんだろ
しまいにはCとC++が同じときたもんだ
0887デフォルトの名無しさん
2010/04/08(木) 21:02:350888デフォルトの名無しさん
2010/04/08(木) 21:23:15C++の話題を出したらC厨が顔を真っ赤にして反論するよなw
しかも言っている事が支離滅裂
いやー楽しませてもらいました
0889デフォルトの名無しさん
2010/04/08(木) 21:31:190890デフォルトの名無しさん
2010/04/08(木) 21:59:55おやおや今回はC++のやつらも来てるなw
0891デフォルトの名無しさん
2010/04/08(木) 22:24:390892デフォルトの名無しさん
2010/04/08(木) 22:36:21C++(゚�听)イラネじゃなくてC++ワカラネだろw
0893デフォルトの名無しさん
2010/04/08(木) 22:39:050894デフォルトの名無しさん
2010/04/08(木) 22:40:520895デフォルトの名無しさん
2010/04/08(木) 22:41:590896デフォルトの名無しさん
2010/04/08(木) 22:46:02これから新しくプログラミングを覚えようとしているのですが
CとC++のどちらを勉強すべきでしょうか?
こうですか?わかりません><
0897デフォルトの名無しさん
2010/04/08(木) 22:47:330898デフォルトの名無しさん
2010/04/08(木) 22:51:560899デフォルトの名無しさん
2010/04/08(木) 22:53:11C++から学べ
Cなんて時代遅れの糞言語から入るとポインタの考え方が
身に染みついてC++が学習不能になる
0900デフォルトの名無しさん
2010/04/08(木) 23:03:160901デフォルトの名無しさん
2010/04/08(木) 23:09:51一度はまると極度の怠慢さが身に付き二度とC/C++に復帰できなくなる
0902デフォルトの名無しさん
2010/04/08(木) 23:11:20C# > Java = C++ > C >> VB = PHP > Perl
的な感じで給料が違うように見える(あくまで主観だから、違う意見もあるだろうし、反論のための証拠も腐るほどあるだろうけど)
C#をすすめる
0903デフォルトの名無しさん
2010/04/08(木) 23:14:14VB辺りと同じで書いてる最中は面白くも何ともねぇ上に
自コードが車輪再発明と判った時の脱力感と他人の冷たい評価が辛すぎる。
0904デフォルトの名無しさん
2010/04/08(木) 23:16:14Windowsでしか仕事がないじゃないか
0905デフォルトの名無しさん
2010/04/08(木) 23:17:01ドイツ語とフランスぐらい違いがあるんだが
言語ごとに思考プロセスを切り替えられない奴は屑
0906デフォルトの名無しさん
2010/04/08(木) 23:20:410907デフォルトの名無しさん
2010/04/08(木) 23:22:020908デフォルトの名無しさん
2010/04/08(木) 23:22:450909デフォルトの名無しさん
2010/04/08(木) 23:26:120910デフォルトの名無しさん
2010/04/08(木) 23:26:570911デフォルトの名無しさん
2010/04/09(金) 00:03:55なんせ++が偉いとか新しいとか勘違いしてる中学生だからな
0912デフォルトの名無しさん
2010/04/09(金) 00:10:360913デフォルトの名無しさん
2010/04/09(金) 00:15:09C厨は被害妄想がいささかお強いようですね(笑)
0914デフォルトの名無しさん
2010/04/09(金) 00:29:42C++の負け組=クラスライブラリを利用する側
0915デフォルトの名無しさん
2010/04/09(金) 00:33:55Cの負け組=ライブラリを利用する側
0916デフォルトの名無しさん
2010/04/09(金) 00:35:540917デフォルトの名無しさん
2010/04/09(金) 00:40:48図星かw
0918デフォルトの名無しさん
2010/04/09(金) 00:47:51スレチだが、さすがにそれはないwと思ったのでレス
0919デフォルトの名無しさん
2010/04/09(金) 00:48:400920デフォルトの名無しさん
2010/04/09(金) 00:53:56実行速度遅くなるわで効率が悪くなるだけだしなぁ
JavaもC#も同じことだが
0921デフォルトの名無しさん
2010/04/09(金) 00:55:080922デフォルトの名無しさん
2010/04/09(金) 00:56:070923デフォルトの名無しさん
2010/04/09(金) 04:05:510924デフォルトの名無しさん
2010/04/09(金) 11:37:48C++で書くとどうしても大げさになってしまう
でも今は勉強中なのでCで書いたものを必ずC++流に
書き直しています
0925デフォルトの名無しさん
2010/04/09(金) 11:47:06> C++で書くとどうしても大げさになってしまう
んなこたーない。
ほぼ C のコードのままコンパイルもできるだろうし、書き直すとしても
コードが簡単になるところだけにとどめておけばいい。
わざわざ「大げさ」になるように書き直してるところがあるなら、それは
そのプログラマが悪いだけのこと。言語のせいにするのは筋違い。
0926デフォルトの名無しさん
2010/04/09(金) 11:53:44いやね、char[]を全部std::stringに直して書いてるんだけど
とにかく簡潔に書けていた所がゴチャゴチャして
あとsprintf()はstd::ostringstreamになるわけでしょ
無理にそういうライブラリは使わなくても確かにいいけど、これも
勉強だと思って使ってます
0927デフォルトの名無しさん
2010/04/09(金) 12:10:440928デフォルトの名無しさん
2010/04/09(金) 12:45:08× C++で書くとどうしても大げさになってしまう
○ 勉強だと思ってC++固有の機能を最大限使うように書くと大げさになってしまう
あたりまえだろ。
0929デフォルトの名無しさん
2010/04/09(金) 13:09:48float *data, *data0;
data = data0 = (float *)malloc (sizeof (float) * 100);
なるものがありました。えっと2行目の意味がよくわかりません!
data0 = (float *)...
は、単精度浮動小数100個分のメモリを確保してその先頭アドレスをdata0に教えてあげました、
とおもうのですが、
data=data0
の部分がなにを意味するのかちっともわかりません。教えてえらい人!
0930デフォルトの名無しさん
2010/04/09(金) 13:25:35data = data0 = ... で data と data0 に同じ値を代入することになる。
0931デフォルトの名無しさん
2010/04/09(金) 14:13:12速い
なかなか速いじゃないか
つーかWindowsがC++で書かれているから、C++が遅かったら
Windowsも遅いという事になる
0932デフォルトの名無しさん
2010/04/09(金) 16:05:50CでもC++でもどっちでもいいじゃん
どっちがいいかは人それぞれだし
って俺はどっちでも書くけど
0933デフォルトの名無しさん
2010/04/09(金) 17:18:28C++にもいいところはあるんだからさ
頭から否定しちゃだめだってば
0934デフォルトの名無しさん
2010/04/09(金) 17:20:31GDI周りとかファイル周りとかタスクの部分とかキモになるところはCだよ
もちろんWindowsは速いとはいえないけどね
つかさ君が作るツールって呼ぶようなくらいのプログラムでCでもC++でも今時差がでるかいな
0935デフォルトの名無しさん
2010/04/09(金) 18:56:27これで荒れない方がおかしいわ。言語の問題じゃない
0936デフォルトの名無しさん
2010/04/09(金) 19:11:060937デフォルトの名無しさん
2010/04/09(金) 20:27:38Linuxより圧倒的に速いし、OSの中じゃWindowsは最速だと思うよ。
0938デフォルトの名無しさん
2010/04/09(金) 20:28:500939デフォルトの名無しさん
2010/04/09(金) 20:31:37WindowsNT以降は部分的にもマイクロカーネルの技術を取り入れて
いるので各プロセス間通信が多く、結構オーバーヘッドになっている
そのため2000とXPではGDIを特権モードからユーザーモードに移したんだ
その後CPUの性能が上がって性能余り気味になったので、その余剰パワー
を活かしてVistaと7では先祖返りを起こしている
GDIに起因する脆弱性を減らすためだ
0940デフォルトの名無しさん
2010/04/09(金) 21:38:040941デフォルトの名無しさん
2010/04/09(金) 21:43:04いみふ
0942デフォルトの名無しさん
2010/04/09(金) 21:54:42おk
そして全体の値は最後の値になる
0943デフォルトの名無しさん
2010/04/09(金) 21:56:56ありがとうございます!
0944デフォルトの名無しさん
2010/04/09(金) 22:04:00Windowsの大部分はCだ
Windows Internalsにちゃんと書いてある
てきとうなデマを流すなよ
0945デフォルトの名無しさん
2010/04/09(金) 22:19:25このスレでそこまで間抜けなら無理して書かなければいいのに。
0946デフォルトの名無しさん
2010/04/10(土) 03:03:300947デフォルトの名無しさん
2010/04/10(土) 09:51:17あるいは、マシンの構成に合わせて全部コンパイルしなおしてみるとか
びっくりするくらい速くなるよ
1個の商品として売ってるWindowsと、いくらでも個個の部分を変えれる物とくらべて
圧倒的に速いって言っちゃダメだよ
0948デフォルトの名無しさん
2010/04/10(土) 12:48:390949デフォルトの名無しさん
2010/04/10(土) 12:56:150950デフォルトの名無しさん
2010/04/10(土) 13:10:58http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
0951デフォルトの名無しさん
2010/04/10(土) 13:14:430952デフォルトの名無しさん
2010/04/10(土) 13:16:27Vistaには勝ってるかも
X立ち上げないでコマンドラインで計算とかさせるとDos窓に勝つよ
どこで戦うかじゃないかな
いまどきCPUやつながってるデバイスに合わせてOS再コンパイルしたりとか
すべてのモジュールやデーモン、アプリをスピード重視で再コンパイルとか
いらないの消しちゃうとかしないよね
やればそりゃ鬼のように速くなるだろうけど
新しく買って来たデバイスとかも自動認識してくれなくなるし
デーモンとかドライバーとかどれが何なのかかなり勉強しないとわからなくなってるし
そもそもそういうことしたくない人のためのubntuだしね
っていうかtwmにするだけでずいぶんちがうw
0953デフォルトの名無しさん
2010/04/10(土) 13:17:550954デフォルトの名無しさん
2010/04/10(土) 15:44:44二言目には「コンパイルしなおせ」だろお前ら。
聞き飽きたわそんな台詞。
0955デフォルトの名無しさん
2010/04/10(土) 15:46:090956デフォルトの名無しさん
2010/04/10(土) 16:38:21return 0;
ので解釈が違うコンパイラがあったと思うのですが、ご存じの方いますか?
上は関数で、下がifなどと同じ予約語だったと思います。
処理時間が違い、関数(return (0))の方が時間がかかったと記憶しています。
0957デフォルトの名無しさん
2010/04/10(土) 16:42:26そんな聞き飽きるほど出てきたかぁ?Linuxの話題すらたまにだと思うのに
そもそも今時、二言目に出てくるほどLinuxコンパイルしなおしてるやついないぞ
みんな普通にインストールしたまま使ってると思う
0958デフォルトの名無しさん
2010/04/10(土) 16:54:04片方はCのコンパイラではありません。
0959デフォルトの名無しさん
2010/04/10(土) 16:56:20なんか変。
0960デフォルトの名無しさん
2010/04/10(土) 16:58:100961デフォルトの名無しさん
2010/04/10(土) 17:10:57今そんなコンパイラがあるのかは疑問
0962デフォルトの名無しさん
2010/04/10(土) 17:30:200963デフォルトの名無しさん
2010/04/10(土) 18:08:350964デフォルトの名無しさん
2010/04/10(土) 18:17:40最近仲間内でそういう話題があったんで。
H8とかマイコンのコンパイラだったかもしれませんが、
returnの書き方によって処理落ちして、戻り値に異常が出たような…
0965デフォルトの名無しさん
2010/04/10(土) 19:24:10括弧のついたreturnのparseにバグがあったんじゃないのかな
0966デフォルトの名無しさん
2010/04/10(土) 19:33:440967デフォルトの名無しさん
2010/04/10(土) 20:37:02オープンソースのプログラムがtar.gzで多く配布されているのが関係してたりするんですか?
0968デフォルトの名無しさん
2010/04/10(土) 20:48:11Linux をターゲットとして書かれたオープンソースのソフトウェアが多いのも
もちろん理由の一つだよ
0969デフォルトの名無しさん
2010/04/10(土) 20:48:360970デフォルトの名無しさん
2010/04/10(土) 21:11:470971デフォルトの名無しさん
2010/04/10(土) 21:17:29ipadも
0972デフォルトの名無しさん
2010/04/10(土) 21:21:090973デフォルトの名無しさん
2010/04/10(土) 21:23:43安価に手に入るunix環境だからな。
0974デフォルトの名無しさん
2010/04/10(土) 21:25:36絵が必要ない大きな組み込み系とかもじんわり来てる気がする 家電にまでってわけにはまだまだ行かないけど
でもただ単におもしろいからってのもあるよな
Lnux動かしてそこでコンパイルしてみるだけで面白いじゃん
せっかく無料でいろいろあそべるものがあるのに、使う理由がないってだけで使いもしない人と
特に使う目的ないけど動かしてますって人と人種的にどっちがプログラマ向きかといったら後者だろうし
0975デフォルトの名無しさん
2010/04/10(土) 21:26:17・エロゲー
・PCゲー
・p2p(ポエムの交換)
・jane
linux
・計算機科学
・論文作成
・アプリ開発
0976967
2010/04/10(土) 21:42:32ありがとう。参考になった!
0977デフォルトの名無しさん
2010/04/10(土) 21:47:120978デフォルトの名無しさん
2010/04/10(土) 21:48:360979デフォルトの名無しさん
2010/04/10(土) 21:49:180980デフォルトの名無しさん
2010/04/10(土) 21:49:580981デフォルトの名無しさん
2010/04/10(土) 22:00:040982デフォルトの名無しさん
2010/04/10(土) 22:05:54マトモじゃないと自覚してマトモじゃない行動する奴もいるんだから説得力無いわ
0983デフォルトの名無しさん
2010/04/10(土) 22:16:290984デフォルトの名無しさん
2010/04/10(土) 22:23:550985デフォルトの名無しさん
2010/04/10(土) 23:06:22うそこけ、数社と取引があったけどVBばっかだったぞ
ちょっとした紙芝居みたいな所ばっかだったけど
0986デフォルトの名無しさん
2010/04/10(土) 23:12:340987デフォルトの名無しさん
2010/04/10(土) 23:15:51エロゲってVBなのか?
すげー。
よく作れるな。
0988デフォルトの名無しさん
2010/04/10(土) 23:22:450989デフォルトの名無しさん
2010/04/10(土) 23:27:190990デフォルトの名無しさん
2010/04/10(土) 23:28:50C言語なら俺に聞け(入門編)Part 63
http://pc12.2ch.net/test/read.cgi/tech/1270909823/
0992デフォルトの名無しさん
2010/04/11(日) 00:07:01乙
0993デフォルトの名無しさん
2010/04/11(日) 00:20:170994デフォルトの名無しさん
2010/04/11(日) 00:46:580995デフォルトの名無しさん
2010/04/11(日) 10:13:58HSP辺りで粗製濫造してるモノとばかり想像してた
0996デフォルトの名無しさん
2010/04/11(日) 11:06:37だからといって、がんばるんだったらめんどくさくてVBで書いたほうが早いなってなるし
0997デフォルトの名無しさん
2010/04/11(日) 11:49:38C++でスクリプトエンジンくらい作るだろ?
0998デフォルトの名無しさん
2010/04/11(日) 11:57:480999デフォルトの名無しさん
2010/04/11(日) 12:30:551000デフォルトの名無しさん
2010/04/11(日) 12:33:23___ ‖ヾ ハ
/ ヽ ‖::::|l ‖:||.
/ 聞 え | ||:::::::|| ||:::||
| こ ? | |{:::::‖. . .||:::||
| え | _」ゝ/'--―- 、|{::ノ!
| な 何 | / __ `'〈
| い ? ! /´ /´ ● __ ヽ
ヽ / / ゝ....ノ /´● i
` ー―< { ゝ- ′ |
厶-― r l> |
∠ヽ ゝ-― `r-ト、_,) |
レ^ヾ ヽ>' ̄ LL/ 、 /
.l ヾ:ヽ ` 、_ \\ '
l ヾ:ヽ ト`ー-r-;;y‐T^
| ヾ `ニニ「〈〉フ /‖. j
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。