C言語なら俺に聞け(入門篇) Part 51
レス数が1000を超えています。これ以上書き込みはできません。
初心者、初級者の方は他の質問スレのほうが良いかもしれません。
教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 129代目
http://pc12.2ch.net/test/read.cgi/tech/1247438792/
・C++言語はスレ違いですが、ある程度なら対応です。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
・開発環境や動作環境も晒すと答えが早いかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
前スレ
C言語なら俺に聞け(入門篇) Part 50
http://pc12.2ch.net/test/read.cgi/tech/1246342847/
過去スレ
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
0002デフォルトの名無しさん
2009/07/24(金) 23:23:300003デフォルトの名無しさん
2009/07/24(金) 23:26:17codepad
ttp://codepad.org/
に貼って実行してみてください。
個人情報が含まれないように気をつけて。
0004デフォルトの名無しさん
2009/07/25(土) 10:30:040005デフォルトの名無しさん
2009/07/25(土) 12:10:17例えば、
int hoge(int a, int b) { return a + b; }
int main() { hoge(10, 10); return 0; }
これは、hoge(10);みたいな呼び出しはできません。それはhogeが呼ばれた時点で、引数の数が違うと判断されるのですよね
でもボトムダウンの場合、
int main() { hoge(10); return 0; }
int hoge(int a. int b) { return a + b; }
こんな呼び出しができてしまいます。
この呼び出しがされた場合、関数が呼び出せてしまう挙動を見せます。引数の数が違うのに、です
こういう書きかたの場合、呼び出し時のhogeの()の中身は無視され、ただhoge番地に飛んでいくだけ、という理解で良いでしょうか
でも飛んで行くということは、用いられている引数の数がわかりますよね、ここで弾かれないのは、やむをえないCの仕様なんでしょうか
0006デフォルトの名無しさん
2009/07/25(土) 12:18:08それが通るという環境は?
あと警告とかの表示に関連するオプションは?
0007デフォルトの名無しさん
2009/07/25(土) 12:36:29暗黙のプロトタイプ宣言がなされる。
hogeが宣言されていないときに、hoge(10)を呼ぶと、
int hoge(int) というプロトタイプが宣言されたことになる。
そうすると、int hoge(int ,int) という定義と型が合わないので、そこでエラー。
00087
2009/07/25(土) 12:42:35ごめんちょっと呆けてた。>7は無視してくれ。正しくは以下の通り。
----
C89では宣言のされていない関数を呼ぶと、暗黙のプロトタイプ宣言がなされる。
hogeが宣言されていないときに、hoge(10) を呼ぶと、
int hoge() というプロトタイプが宣言されたことになる。
括弧の中に何もかかないのは「引数の型チェックをしない」というプロトタイプ。
しかしながら実際のところ、hoge(10) は int hoge(int ,int) という定義と型が合わないので、未定義動作になる。
00095
2009/07/25(土) 12:51:40なるほど、ありがとうございます
ちなみにbcc32をデフォルトでコンパイルさせてます -> bcc32 main.c みたいな感じです
引数の数が違っても、
hoge(10)
↓
int hoge(int a, int b)
この場合、aには10が入っていましたが、bには何かでらたらめな値が入っていました
hoge(10)が呼び出されるより前に、スタックに積まれていた値を4バイト分見てることになるんでしょうかね
引数も、型と個数が合う範囲では取って来れるということがわかったんですが、aは普通に使えそうです。こういう場合でも未定義動作とされるんですね
0010デフォルトの名無しさん
2009/07/25(土) 12:55:18たぶん
>aは普通に使えそうです。こういう場合でも未定義動作とされるんですね
未定義かどうか以前に意図しない情報を持ってきてる時点で駄目だし
こんなのを許容するようならバグがあちこちに入って後で死ぬよ
0011デフォルトの名無しさん
2009/07/25(土) 12:58:070012前スレ>>990
2009/07/25(土) 13:00:42cos()とsin()の戻り値マップを用意して高速化しようかとおもいまして。
ラジアン値が分からない友人用のライブラリも同じように作ろうかと思ってたので
0013デフォルトの名無しさん
2009/07/25(土) 13:00:46全然乱数じゃないよwww
0014デフォルトの名無しさん
2009/07/25(土) 13:20:21残念、私にはいい方法を思いつきませんね。
分割コンパイルですよね。少々面倒でも、マップを使うモジュールで 識別子にextern をつけるしかないでしょうね。
0015デフォルトの名無しさん
2009/07/25(土) 13:22:20なにに挑戦してるの?
たまたまうまく動くようなコードのコレクション?
0016デフォルトの名無しさん
2009/07/25(土) 14:25:39> aは普通に使えそうです。こういう場合でも未定義動作とされるんですね
1箇所でも未定義な動作があれば、そのプログラム全てが未定義の動作になります。
bの値を使わなくてもダメ(未定義の動作)です。
0017デフォルトの名無しさん
2009/07/25(土) 14:27:32>>11は分かってて冗談で言ってるだけだろ。たぶん。
0018デフォルトの名無しさん
2009/07/25(土) 15:20:14bccの挙動でCの仕様を推測するのはやめたほうがいいよ。
0019デフォルトの名無しさん
2009/07/25(土) 15:45:38そろそろ就職したいんで
0020デフォルトの名無しさん
2009/07/25(土) 15:48:44この業界35で定年だもん
0021デフォルトの名無しさん
2009/07/25(土) 15:50:44データベースの知識をちろっと加えれば
販売管理ソフトくらいはあっという間にかけるようになるけど
仕 事 は な い よ
0022デフォルトの名無しさん
2009/07/25(土) 15:51:410023デフォルトの名無しさん
2009/07/25(土) 15:59:130024デフォルトの名無しさん
2009/07/25(土) 16:03:22002519
2009/07/25(土) 16:10:35スレ汚しすいません。
0026デフォルトの名無しさん
2009/07/25(土) 16:45:140027デフォルトの名無しさん
2009/07/25(土) 18:23:54#include <stdlib.h>
int main(void)
{
char *p;
p=malloc(1);
gets(p);
printf("%s\n",p);
return 0;
}
1バイト割り当てたんだが。
16文字まで読み込めるのは何故?
2バイトになってるんだけど。
0028デフォルトの名無しさん
2009/07/25(土) 18:27:31使っていいのは1バイト
それを超えてはいけない
管理できないなら
そういうのを自動で面倒見てくれる
別の言語を使えばいい
0029デフォルトの名無しさん
2009/07/25(土) 18:28:04>16文字まで読み込めるのは何故?
>2バイトになってるんだけど。
意味がわかりません。
>2バイトになってるんだけど。
特にこっちは何をどう確認して2バイトなの?
>16文字まで読み込めるのは何故?
まあこっちはたまたまとか理由はあるんだろうけど
0030デフォルトの名無しさん
2009/07/25(土) 18:30:00そもそもgets()って何?
どういう動作か説明できr?
0031デフォルトの名無しさん
2009/07/25(土) 18:30:16と入力したら、1バイト割り当ててるから8文字までだろ?
だが
16文字
aaaaaaaaaaaaaaaa
とでるんだが。
0032デフォルトの名無しさん
2009/07/25(土) 18:32:430033デフォルトの名無しさん
2009/07/25(土) 18:33:1132bitPCだけど。
0034デフォルトの名無しさん
2009/07/25(土) 18:33:12> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> と入力したら、1バイト割り当ててるから8文字までだろ?
1バイト割り当ててるから0文字までだろ?
0035デフォルトの名無しさん
2009/07/25(土) 18:33:47何かものすごく勘違いされてるようで
0036デフォルトの名無しさん
2009/07/25(土) 18:33:52ふつー1バイト一文字だよ。
16文字で区切られるのは、変な現象だな。
メモリをぶっ壊してるにしても、どのタイミングで文字列終了の0が入ってるんだろ。
0037デフォルトの名無しさん
2009/07/25(土) 18:37:02だが16文字読み込まれるんだけど。
意味が分からない。
独習Cにバイトを割り当てるとか書いてあったので。
1バイト割り当てたら1文字だけ読み込めるかとおもったら全然違ったんだが・・・
0038デフォルトの名無しさん
2009/07/25(土) 18:37:020039デフォルトの名無しさん
2009/07/25(土) 18:37:441バイト割り当ててるから0文字までだろ?
1バイト割り当ててるから0文字までだろ?
1バイト割り当ててるから0文字までだろ?
ついでにgetsの仕様みてこいば
0040デフォルトの名無しさん
2009/07/25(土) 18:39:390041デフォルトの名無しさん
2009/07/25(土) 18:39:40gets()は、確保されているメモリのサイズは考慮しないで入力されただけ読み込む。
0042デフォルトの名無しさん
2009/07/25(土) 18:39:500043デフォルトの名無しさん
2009/07/25(土) 18:40:29scanf()も、サイズの指定を自分でしないと、どんどん読み込む。
0044デフォルトの名無しさん
2009/07/25(土) 18:42:030045デフォルトの名無しさん
2009/07/25(土) 18:43:22手動で割り当てたら。
p="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
今度は16文字以上読み込めた。全てaaaaaaaaaaaaaとでた。
狂ってる。
0046デフォルトの名無しさん
2009/07/25(土) 18:44:55本気で語ってるんならバカ
冗談にしてもキチガイさが足りない
0047デフォルトの名無しさん
2009/07/25(土) 18:45:21それは割り当てではない
リテラルを指してるだけ
0048デフォルトの名無しさん
2009/07/25(土) 18:46:19char y[] = "abcdef";
0049デフォルトの名無しさん
2009/07/25(土) 18:46:24> ただ違反だけでエラーがでないってやつ?
そう。
>手動で割り当てたら。
それは入力のバッファに使っちゃだめだ。
0050デフォルトの名無しさん
2009/07/25(土) 18:49:280051デフォルトの名無しさん
2009/07/25(土) 18:50:40char s[256];
fgets(s, sizeof s, stdin);
0052デフォルトの名無しさん
2009/07/25(土) 19:04:200053デフォルトの名無しさん
2009/07/25(土) 19:07:20回答者が入門篇なんだよ。
0054デフォルトの名無しさん
2009/07/25(土) 19:12:49思わせぶりなことしか書けないから、なんにも書かなくていいよ。
自信がないくせに、自己顕示欲だけは一人前。
0055デフォルトの名無しさん
2009/07/25(土) 19:16:12おちつけ
回答も質問もしてない人間はこのスレには不要だ
0056デフォルトの名無しさん
2009/07/25(土) 19:20:12はいはい、規格準拠スレに帰りますよっと。
0057デフォルトの名無しさん
2009/07/25(土) 19:24:07> 回答者が入門篇
よく言った!www
0058デフォルトの名無しさん
2009/07/25(土) 19:25:15諦めたwwwwwwwwwww
オワタ
0059デフォルトの名無しさん
2009/07/25(土) 19:29:29とか言い出すヤツいるじゃん。
まだ、具体的にどう日本語がおかしいって指摘できるやつならいいけど、
まえに「お前日本語おかしいよ。おれ文系ね」って、本当に頭悪そうな一行レス
してるやつ見たことあるんだよ。
「お前ら規格とかしらねえの? おれ規格スレ読んでるから」って。
0060デフォルトの名無しさん
2009/07/25(土) 19:30:24char *p = malloc(1);
fgets(p, sizeof p, stdin);
とかやってね?
0061デフォルトの名無しさん
2009/07/25(土) 19:31:320062デフォルトの名無しさん
2009/07/25(土) 19:33:150063デフォルトの名無しさん
2009/07/25(土) 19:34:57いや、別に揚げ足とりたくて 言ってるんじゃなくて。。。
うん
0064デフォルトの名無しさん
2009/07/25(土) 19:37:24そのコンプレックスの裏返しで国語力とかコミュニケーションとか日本語力を過大評価してるんだと思うよ。
mallocは捨てたwwwとりあえずうまくできないから諦めとく。
回答ありがとう。
0065デフォルトの名無しさん
2009/07/25(土) 19:39:210066デフォルトの名無しさん
2009/07/25(土) 19:39:270067デフォルトの名無しさん
2009/07/25(土) 19:39:32規格のどこそに書いてあるとかいちいち
書かないとダメって、いいがかりにだろ。
0068デフォルトの名無しさん
2009/07/25(土) 19:40:34文書とかになると 理工系の文書はすばらしいとか
人の文章に対して ケチ付けまくるんだよな
0069デフォルトの名無しさん
2009/07/25(土) 19:40:560070デフォルトの名無しさん
2009/07/25(土) 19:41:290071デフォルトの名無しさん
2009/07/25(土) 19:42:03Cなんて データ構造とか アルゴリズム云々の話とかが好きなやつしか残らない
0072デフォルトの名無しさん
2009/07/25(土) 19:46:13漢字ドリルとか辞書とか硬筆などなんか売れてるねww
もうITに頼れば良いのにwwオールラウンドを求めたがるよね。
コミュニケーションを売りにしてる企業宣伝HPあるけど、完ぺき必要なのは技術力だと思うよ。
だいたい面接にうけにくるやつなんて、普通に会話などできるとおもうがww
0073デフォルトの名無しさん
2009/07/25(土) 19:50:02リラックスしてる普段はすげぇできる学生とか普通にいたし
こういうやつが就職できなかったりしたらかわいそうだって思う
0074デフォルトの名無しさん
2009/07/25(土) 20:11:20思わないだろ。
例えば、
鍵屋に行って作ってもらった合い鍵がいい加減なできばえだったとして、
「作りは適当ですけど、
偶然でもとりあえず開いたから この合い鍵は有効です。
料金はお返しできません」
って言われたらこまるだろ?
ちゃんと作ってもらわなければ。
プロとして。
0075デフォルトの名無しさん
2009/07/25(土) 20:17:100076デフォルトの名無しさん
2009/07/25(土) 20:23:35質問に「gets()はオーバーフローするからww」みたいな答えがついて、それに、
「規格に基づいて回答してない。レベル低いね。プロじゃない」って言うのって、難癖つけてるだけだよな。
0077デフォルトの名無しさん
2009/07/25(土) 20:33:53ちゃんと読みなよ。
>>62はそんな鍵屋は実在しないんじゃね?と書いてる
0078デフォルトの名無しさん
2009/07/25(土) 20:35:10「gets()はどういう理由があっても使ってはならない」とちゃんと伝えるべき
0079デフォルトの名無しさん
2009/07/25(土) 20:37:43>>「gets()はどういう理由があっても使ってはならない」とちゃんと伝えるべき
は要らん。gets嫌いは宗教的だから困る。
0080デフォルトの名無しさん
2009/07/25(土) 20:40:19使っちゃ駄目なのを標準ライブラリに入れてんのかよって話になるしー
0081デフォルトの名無しさん
2009/07/25(土) 20:41:51互換性のために捨てられないだけだろ。
0082デフォルトの名無しさん
2009/07/25(土) 20:42:260083デフォルトの名無しさん
2009/07/25(土) 20:45:03そういうレベルじゃなくて、使っちゃダメなんだわ。禁止事項。
0084デフォルトの名無しさん
2009/07/25(土) 20:47:480085デフォルトの名無しさん
2009/07/25(土) 20:49:160086デフォルトの名無しさん
2009/07/25(土) 20:51:210087デフォルトの名無しさん
2009/07/25(土) 20:57:590088デフォルトの名無しさん
2009/07/25(土) 21:07:15セキュリティとか脆弱性とか、そんなことは初心者に要求するもんじゃない。
中級者以降になりゃ自然に使わなくなる。
0089デフォルトの名無しさん
2009/07/25(土) 21:10:170090デフォルトの名無しさん
2009/07/25(土) 21:12:28そろそろそれやめなよ
そろそろこれもあれもやめなよ
あ、これも実はやめといた方がいいんだよ言うの忘れてた
初心者から見れば教えられたことをどんどん否定されていく
テンションだだ下がりコースっすね
0091デフォルトの名無しさん
2009/07/25(土) 21:14:34何のマニュアル?
ヘルプには「絶対使うな」とは書いてないよね
0092デフォルトの名無しさん
2009/07/25(土) 21:16:530093デフォルトの名無しさん
2009/07/25(土) 21:17:43せめてこれ scanf("%99[^\n]", buf) 暗記しても同じ。
0094デフォルトの名無しさん
2009/07/25(土) 21:19:50二行目を読む前に \n を飛ばさないといけない
改行のみの行を読めない
0095デフォルトの名無しさん
2009/07/25(土) 21:23:54manページをコピペしただけだけど
0096デフォルトの名無しさん
2009/07/25(土) 21:25:44いずれもバグの項に記載されてる。
0097デフォルトの名無しさん
2009/07/25(土) 21:29:38お前の言う通りだと思う。
初心者なんだから良いんだって。
しばらくは危険性があっても動くコードを優先して書いていて、
危険性・安全性に気を配れるような余裕が出てきた頃に
そういった使うべきでないってのを学んでいけば。
0098デフォルトの名無しさん
2009/07/25(土) 21:31:11[まんこ まんど]
0099デフォルトの名無しさん
2009/07/25(土) 21:32:51それ linux あたりのマニュアルじゃないの?
そうじゃなきゃOSぐらい書け常識的に。
linuxのマニュアルは、宗教として強くそう信じてる人が書いたからでは?
Solarisのマニュアルみたら、特にそういう文章はなかった。
0100デフォルトの名無しさん
2009/07/25(土) 21:33:21しかし、初心者が初心者のまま終わる場合も多い。
getsは使わせないほうがよい。
どうしても初心者には教えていいというのなら、
自分の組織から、getsを当然に使うやつを外に出してはいけない。
社会の害悪になるので、転職させたり首にしたり、
卒業させたり中退させたりしてはいけない。
0101デフォルトの名無しさん
2009/07/25(土) 21:33:49ころあいを見て教えりゃいい
0102デフォルトの名無しさん
2009/07/25(土) 21:36:25バッファオーバーランの危険性を覚悟の上自己責任で
使うにはいいだろ
絶対使うなは言い過ぎ
010397
2009/07/25(土) 21:36:32うーん。
そう言われるとお前の言うことにも
正直 一理あるんだよな。
・・・ま、いっか。
プログラマにとって本当に大事なのは
納期と自由時間だし。
0104デフォルトの名無しさん
2009/07/25(土) 21:39:21こんなもんはな、コンパイルできて動けばいいんだよ。
勉強になったなあ、おっさん!
0105デフォルトの名無しさん
2009/07/25(土) 21:40:13Solarisでもこうかいてあるぞ。
For this reason, it is strongly recommended that gets() be avoided in favor of fgets().
Micorosft
gets で読み取る文字数を制限する方法がないため、信頼されない入力ではバッファ オーバーランが発生しやすくなります。代わりに、fgets を使用してください。
FreeBSD
It is strongly suggested that the fgets() function be used in all cases.
0106デフォルトの名無しさん
2009/07/25(土) 21:42:04素人ってのは入社したての奴も含まれるのか?
0107デフォルトの名無しさん
2009/07/25(土) 21:43:330108デフォルトの名無しさん
2009/07/25(土) 21:46:12このたびgetsもあぼんの仲間入りしました。
0109デフォルトの名無しさん
2009/07/25(土) 21:48:57そんなのいちいち宣言しなくてもいいよ。
0110デフォルトの名無しさん
2009/07/25(土) 21:59:34man 3 gets
バグ
gets() は絶対に使用してはならない。前もってデータを知ることなしに gets() が何文字読むかを知ることはできず、 gets() がバッファの終わりを越えて書き込み続けるため、 gets() を使うのは極めて危険である。これを 利
用してコンピュータのセキュリティが破られてきた。代わりに fgets() を使うこと。
入力ストリームのファイルディスクリプタに対して、 stdio ライブラリの入力関数と、低レベル呼び出しの read(2) を混ぜて呼び出す事は勧められない。結果がどうなるかは分からず、おそらくあなたの望んでいる結果にはなら
ないだろう。
0111デフォルトの名無しさん
2009/07/25(土) 22:12:49そこまで言われると腹立つよな
わかってて使う分にはお前にそこまで言われる筋合いはないよと
言いたい
0112デフォルトの名無しさん
2009/07/25(土) 22:15:24バグでも何でもないし
パンチカードの時代からgets()はある
キーボードから入力したり、後意図的にバッファオーバーランを
誘発させる馬鹿が増えただけ
0113デフォルトの名無しさん
2009/07/25(土) 22:22:25なんだやっぱり削除したほうがいいじゃないですか
0114デフォルトの名無しさん
2009/07/25(土) 22:27:01わかってたら使わないよな
0115デフォルトの名無しさん
2009/07/25(土) 22:27:04代わりに俺を叩いていいから!
0116デフォルトの名無しさん
2009/07/25(土) 22:37:19ケツを出せ
0117デフォルトの名無しさん
2009/07/25(土) 23:07:52削除したほうがいいけど、動いているプログラムが動かなくなるので削除しないほうがいい
というトレードオフがあってな
0118デフォルトの名無しさん
2009/07/25(土) 23:20:380119デフォルトの名無しさん
2009/07/25(土) 23:24:33オブジェクト指向でしかできない事とかあるの?
いまC言語をマスったからC++やろうとおもってんだけどww
0120デフォルトの名無しさん
2009/07/25(土) 23:26:150121デフォルトの名無しさん
2009/07/25(土) 23:31:37どこの情報だよ。
WG14 N1362 Committee Draft ― March 1, 2009 ISO/IEC 9899:201x
7.19.7.7 The gets function
とやっぱり残されている。
同規格
7.27.9 Input/output <stdio.h>
2 The gets function is obsolescent, and is deprecated.
とあり、標準化委員もあまり好意的ではないみたい。
ごめんスレチだったか。
0122デフォルトの名無しさん
2009/07/25(土) 23:37:49とりあえず
C++のオブジェクト指向は、
お前みたいなバカを追放することができる言語
だということだけでも覚えておくと良い。
0123デフォルトの名無しさん
2009/07/25(土) 23:43:42つまり難しいってことだろ?ww
0124デフォルトの名無しさん
2009/07/25(土) 23:59:440125デフォルトの名無しさん
2009/07/26(日) 00:00:51C++で何か嫌な思いでもしましたかwww
0126デフォルトの名無しさん
2009/07/26(日) 00:03:24C++の話がしたいのなら別のスレッドでお願いします。
0127デフォルトの名無しさん
2009/07/26(日) 00:05:42お前みたいなバカが俺の周りで…(ry
0128デフォルトの名無しさん
2009/07/26(日) 00:11:350129デフォルトの名無しさん
2009/07/26(日) 00:17:22> ん?悔しかったのかい?
> ん?悔しかったのかい?
> ん?悔しかったのかい?
何が ん? wwww
0130デフォルトの名無しさん
2009/07/26(日) 00:25:53よほど悔しかったんだねw涙拭けよw
0131デフォルトの名無しさん
2009/07/26(日) 00:26:300132デフォルトの名無しさん
2009/07/26(日) 00:28:440133デフォルトの名無しさん
2009/07/26(日) 00:31:310134デフォルトの名無しさん
2009/07/26(日) 00:31:59分割コンパイルとmakeのメンテができなかったという事はあった
0135デフォルトの名無しさん
2009/07/26(日) 00:35:33同意、せっかくこれからプログラミングの世界に入ってくる将来有望な若者に悪影響を与えかねない。
オブジェクト指向が学びたいのであれば、javaのほうが最適です。
0136デフォルトの名無しさん
2009/07/26(日) 00:38:48仕方がないよ
0137デフォルトの名無しさん
2009/07/26(日) 00:47:460138デフォルトの名無しさん
2009/07/26(日) 00:51:350139デフォルトの名無しさん
2009/07/26(日) 00:53:13どこが穴か分かっていること
0140デフォルトの名無しさん
2009/07/26(日) 01:29:44VariantChangeTypeでVT_BSTRを指定して確実に文字列にしておく。
その後、VARIANTのbstrValメンバを読み取る。
これはBSTR型だが、WCHAR*型として使用可能。
0142デフォルトの名無しさん
2009/07/26(日) 10:28:17フォルダ名を取得する関数名を教えてもらえないでしょうか。
0143デフォルトの名無しさん
2009/07/26(日) 10:30:52すみません、FindFirstFile はファイル名を取得する関数でしたね
gcc でファイル名、下層のフォルダ名を取得す関数を教えてもらえませんでしょうか。
0144デフォルトの名無しさん
2009/07/26(日) 10:35:56Windowsなら同じじゃねーの?
0145デフォルトの名無しさん
2009/07/26(日) 10:37:21linux です
0146デフォルトの名無しさん
2009/07/26(日) 10:44:46いまはもっと便利な関数あるかな。scandir()とか
0147デフォルトの名無しさん
2009/07/26(日) 10:48:28Thx です。
0148デフォルトの名無しさん
2009/07/26(日) 10:53:17先に書けアホ
0149デフォルトの名無しさん
2009/07/26(日) 14:17:170150デフォルトの名無しさん
2009/07/26(日) 14:32:320151デフォルトの名無しさん
2009/07/26(日) 14:34:49そんな「gccならnixにちげぇねぇwwww」なんて自己中な人はかわいそうだとおもう
0152デフォルトの名無しさん
2009/07/26(日) 14:44:00FindFirstFile に相応する関数名が分からないという流れで
少なくともWindowsではないことは分かるじゃん
0153デフォルトの名無しさん
2009/07/26(日) 14:45:10じゃあ何?ってことで>>144て書き込みされたと思うんだが
0154デフォルトの名無しさん
2009/07/26(日) 14:46:480155デフォルトの名無しさん
2009/07/26(日) 14:49:29>>150をみて「「gccならnixにちげぇねぇwwww」なんて自己中な人」と決めるのもかわいそうなもので
0156デフォルトの名無しさん
2009/07/26(日) 14:49:510157デフォルトの名無しさん
2009/07/26(日) 14:50:310158デフォルトの名無しさん
2009/07/26(日) 14:50:45オープンクエスチョンはしんでいい
0159デフォルトの名無しさん
2009/07/26(日) 14:51:43これからはクローズドクエスチョンで行きましょう!!
0160デフォルトの名無しさん
2009/07/26(日) 14:52:16自演が多分に含まれてそうな気配がするのもいつものこと
0161デフォルトの名無しさん
2009/07/26(日) 14:53:17俺はどうかしてるとは思わない
>>155
俺はかわいそうだと思わなかったwww
0162デフォルトの名無しさん
2009/07/26(日) 14:54:37IDがほしいお
IDチェンジで自演されてもいいからIDほしいお
0163デフォルトの名無しさん
2009/07/26(日) 14:55:560164162
2009/07/26(日) 14:58:20質問者の発言なんのかを見分けにくいときあるし質問が近い時期に重なった際はどっちのことなのかこれまた見分けにくいとかあるし
0165デフォルトの名無しさん
2009/07/26(日) 15:03:430166デフォルトの名無しさん
2009/07/26(日) 15:06:110167デフォルトの名無しさん
2009/07/26(日) 23:14:350168デフォルトの名無しさん
2009/07/26(日) 23:15:41read は無理
0169デフォルトの名無しさん
2009/07/26(日) 23:16:542回目のsprintfの部分でコンパイルエラーになるます
#define DBG_PRINT(...) { \
FILE* fp; \
char str[100]; \
fp = fopen("dbg.txt", "a+"); \
sprintf(str, "line: %d", __LINE__); \
fputs(str, fp); \
sprintf(str, __VA_ARGS__); \
fputs(str, fp); \
fclose(fp); \
}
0170デフォルトの名無しさん
2009/07/26(日) 23:17:29スクリーンバッファにreadで読み込めば表示は可能
0171デフォルトの名無しさん
2009/07/26(日) 23:26:53無理
話は変わるけど fprintf は使わないの?
0172デフォルトの名無しさん
2009/07/26(日) 23:30:47書式指定フォーマットが即値のリテラルの場合に限られる場合のみこれでおk
#define DBG_PRINT(...) { \
FILE* fp; \
fp = fopen("dbg.txt", "a+"); \
fprintf(fp, "line: %d ", __LINE__); \
fprintf(fp, "" __VA_ARGS__); \
fclose(fp); \
}
0173デフォルトの名無しさん
2009/07/26(日) 23:32:010174デフォルトの名無しさん
2009/07/26(日) 23:32:560175デフォルトの名無しさん
2009/07/26(日) 23:54:05ソースファイルを分割してる場合とかって、#defineをしてるソースファイル内だけが定義範囲になるの?
0176デフォルトの名無しさん
2009/07/26(日) 23:56:43.cに書いてて、それをincludeしているファイルが無ければそのファイルに閉じられるよ
0177デフォルトの名無しさん
2009/07/27(月) 00:09:480178デフォルトの名無しさん
2009/07/27(月) 00:11:50のようなリストがあるときに、a,b,c,dの出現回数を調べたいときは
どうやるといいですか?
0179デフォルトの名無しさん
2009/07/27(月) 00:13:590180デフォルトの名無しさん
2009/07/27(月) 00:14:070181デフォルトの名無しさん
2009/07/27(月) 00:15:09リストにぶら下がってる各情報の種別がわかるような識別情報を割り当てておいて先頭からチェック
0182デフォルトの名無しさん
2009/07/27(月) 00:24:55ありがとうございます。やってみます。
0183デフォルトの名無しさん
2009/07/27(月) 00:28:50char *p = list;
int count['z' % 'a' + 1] = {0}, i;
while(*p) if('a' <= *p && *p << 'z') ++count[*(p++) % 'a'];
0184デフォルトの名無しさん
2009/07/27(月) 00:32:33ありがとう。
0185デフォルトの名無しさん
2009/07/27(月) 00:33:17ほうっへ
こっちの方がよくね?
char list[] = "a→b→a→a→c→d→b→c→c→d";
printf("count(list(a))=%d\n", 3);
printf("count(list(b))=%d\n", 1);
printf("count(list(c))=%d\n", 3);
printf("count(list(d))=%d\n", 2);
存在するリスト全体に対して個別に定義すれば問題ない
0186デフォルトの名無しさん
2009/07/27(月) 04:04:580187デフォルトの名無しさん
2009/07/27(月) 10:25:50リストが1つで要素が10個なら自分で数えた方が早い
0188デフォルトの名無しさん
2009/07/27(月) 10:28:340189デフォルトの名無しさん
2009/07/27(月) 10:46:10・要求が明確ではない場合にこうなるという教え
・ヒマだから
0190デフォルトの名無しさん
2009/07/27(月) 10:48:32・IOCCCモドキの書き方をしたがる
0191デフォルトの名無しさん
2009/07/27(月) 10:51:32今回のはそれにあたらないけど、、、っていうか*p <= 'z'だろ
0192デフォルトの名無しさん
2009/07/27(月) 10:52:03明確になるように話を引き出せばいい
あ、できないからこんなところで初心者に嫌がらせして楽しんでるのか・・・
0193デフォルトの名無しさん
2009/07/27(月) 10:54:240194デフォルトの名無しさん
2009/07/27(月) 10:55:16今回のだってリストの実装が分からなければコードの示しようがないし
概略でいいならすでに回答者は満足を得られたようだし
0195デフォルトの名無しさん
2009/07/27(月) 10:55:18まずはテメーでな^^
0196デフォルトの名無しさん
2009/07/27(月) 10:55:54>>183>>185のようなアホな回答しなければ静かだよ>ここ
0197デフォルトの名無しさん
2009/07/27(月) 11:02:10マルチポストか。
http://ex24.2ch.net/test/read.cgi/pc2nanmin/1080308026/648
0198デフォルトの名無しさん
2009/07/27(月) 11:03:422文字目でpが++されないから無限ループ
0199デフォルトの名無しさん
2009/07/27(月) 11:07:17ほい
while(*p){if('a' <= *p && *p <= 'z')++count[*p % 'a'];p++;}
0200デフォルトの名無しさん
2009/07/27(月) 11:08:010201デフォルトの名無しさん
2009/07/27(月) 11:09:280202デフォルトの名無しさん
2009/07/27(月) 11:11:350203デフォルトの名無しさん
2009/07/27(月) 11:11:49アホみたいな回答をするな、その回答をネタに雑談するなと言ってる
0204デフォルトの名無しさん
2009/07/27(月) 11:12:01暇なCプログラマがじゃれ合うスレが一つぐらいあっても
ここが潰れたら皆他のスレに迷惑掛けに行くだろ?w
0205デフォルトの名無しさん
2009/07/27(月) 12:12:28よい回答の例をおながいします
0206デフォルトの名無しさん
2009/07/27(月) 12:19:340207デフォルトの名無しさん
2009/07/27(月) 13:10:51バグやインデントはともかく、>>183がアホみたいな回答と言われる理由がわからん
0208デフォルトの名無しさん
2009/07/27(月) 13:37:46それに説明するのはもっとアホらしいなぁ。
0209デフォルトの名無しさん
2009/07/27(月) 13:59:36178が調べたいのは配列じゃなくてリスト
179-182で解決済
0210デフォルトの名無しさん
2009/07/27(月) 16:00:08コンパイラが決めるの?それともソースファイルの文字コード?
0211デフォルトの名無しさん
2009/07/27(月) 16:06:070212デフォルトの名無しさん
2009/07/27(月) 16:13:22文字コードを決めるのはソースファイルを入力する人間。
コンパイラ、というかプリプロセッサはソースファイルの中に非アスキー文字が混じっていたら
16進の形式に変換するだけ。
で、ソースファイルの文字コードとコマンドラインの文字コードが一致していないと
プログラムがうまく動かなかったり文字化けしたり、たまにコンパイルできなかったりする。
0213デフォルトの名無しさん
2009/07/27(月) 16:27:05コンパイラ次第。例えばgccの場合、ソースとバイナリと入出力のエンコーディングを個別に指定できる。
0214デフォルトの名無しさん
2009/07/27(月) 19:30:14XPのVC++IDEだとソースもコマンドラインもshift_jisっぽいですね
0215デフォルトの名無しさん
2009/07/27(月) 20:03:31Shift JISの場合はコード変換されるので遅くなるって
msdnに書いてある。
0216デフォルトの名無しさん
2009/07/27(月) 22:07:120217デフォルトの名無しさん
2009/07/27(月) 23:25:32下のprintf(...............);に入る文を教えてください。
実行結果は下の通りです
要素x[0]は 7.526 y[0]は 2.474 z[0]は10.000
要素x[1]は 3.125 y[1]は 6.785 z]1]は10.000
#include <stdio.h>
double sum(double x,double y);
int main(void)
{
int i,n=2;
double x[2]={7.526,3.125};
double y[2]={2.474,6.785};
double z[2];
for(i=0;i<n;i++)
{
z[i]=sum(x[i],y[i]);
printf(.........................);
}
return 0;
}
double sum(double a,double b);
{
double c; c=a+b;return c;
}
0218デフォルトの名無しさん
2009/07/27(月) 23:27:15要素x[1]は 3.125 y[1]は 6.785 z]1]は10.000
こういう感じで表示されればいいの?
0219デフォルトの名無しさん
2009/07/27(月) 23:35:290220デフォルトの名無しさん
2009/07/27(月) 23:40:04なんか不安な点があったの?
0221デフォルトの名無しさん
2009/07/27(月) 23:41:41printf("要素x[%d]は%.3f y[%d]は%.3f z[%d]は%.3f\n", i, x[i], i, y[i], i, z[i]);
になるのか
0222デフォルトの名無しさん
2009/07/27(月) 23:43:543項演算子が放り込まれたコードが出てくるかね。
0223デフォルトの名無しさん
2009/07/27(月) 23:44:49あほな質問はやめろって言ってんだろ
0224デフォルトの名無しさん
2009/07/27(月) 23:48:500225デフォルトの名無しさん
2009/07/27(月) 23:54:380226デフォルトの名無しさん
2009/07/28(火) 07:07:070227デフォルトの名無しさん
2009/07/28(火) 08:51:200228デフォルトの名無しさん
2009/07/28(火) 09:03:010229デフォルトの名無しさん
2009/07/28(火) 09:33:21あほな回答はやめろって言ってんだろw
0230デフォルトの名無しさん
2009/07/28(火) 09:55:140231デフォルトの名無しさん
2009/07/28(火) 09:57:240232デフォルトの名無しさん
2009/07/28(火) 11:03:08それって最高だろw
0233デフォルトの名無しさん
2009/07/28(火) 14:20:39配列を0で埋めたい場合、
int a[100] = {0};
というサンプルを見たのですが、0xffffで埋めたい場合はどう書けばいいのでしょうか?
0234デフォルトの名無しさん
2009/07/28(火) 14:22:45それで埋まるんだっけ?
0235デフォルトの名無しさん
2009/07/28(火) 14:29:24初期化時に任意の値で足りない分を埋める仕様は無い
0236デフォルトの名無しさん
2009/07/28(火) 14:32:07int i;int a[100];for ( i=0; i<100; i++ ) { a[i] = 0xffff; }
0237デフォルトの名無しさん
2009/07/28(火) 14:32:35int main()
{
for (int ic = 0; ic < 100; ++ic) printf("0xffff, ");
return 0;
}
--
というプログラムを作って./a.out > foo.i とでもしてfoo.iを作ったら、
int a[100] = {
#include "foo.i"
};
--
でOK。
0238デフォルトの名無しさん
2009/07/28(火) 14:43:32C99なら、いや、やっぱり何でもない。オナニーは一人でするもんだ。
0239デフォルトの名無しさん
2009/07/28(火) 15:03:06memset(a, 0xff, sizeof(a));
0240デフォルトの名無しさん
2009/07/28(火) 15:11:070241デフォルトの名無しさん
2009/07/28(火) 15:12:370242デフォルトの名無しさん
2009/07/28(火) 15:20:340243デフォルトの名無しさん
2009/07/28(火) 15:21:21>>239でも問題ないよ。
0244デフォルトの名無しさん
2009/07/28(火) 15:23:380245デフォルトの名無しさん
2009/07/28(火) 15:25:070246デフォルトの名無しさん
2009/07/28(火) 15:26:160247243
2009/07/28(火) 15:27:44ごめん、俺が間違えてた。
0248デフォルトの名無しさん
2009/07/28(火) 15:34:20とか書いたらスタックメモリ(?)にプログラムの最初から最後までint 10個分のメモリは存在し続けるんでしょうか?
それともその配列のあるスコープに入ったら確保されるんでしょうか?
0249デフォルトの名無しさん
2009/07/28(火) 15:36:16スコープよりも少し広く、関数に入った時点で確保する実装もありそう。
0250デフォルトの名無しさん
2009/07/28(火) 16:03:230251デフォルトの名無しさん
2009/07/28(火) 16:04:11っていうだけで、いつから確保するか、いつ捨てるかは特に規定されていない。
0252239
2009/07/28(火) 16:18:56すまんかった><
0253デフォルトの名無しさん
2009/07/28(火) 17:22:47省略せずにきちんと0x0000ffffと書くべきでしたね。すみませんでした。
一発で埋める方法はなさそうなので、関数かマクロを作ることにします。
0254デフォルトの名無しさん
2009/07/28(火) 17:28:39そう言う君は
C++でコンストラクタを学ぶととても幸せになれるかもしれない。
0255デフォルトの名無しさん
2009/07/28(火) 17:35:080256デフォルトの名無しさん
2009/07/28(火) 19:54:510257デフォルトの名無しさん
2009/07/28(火) 19:58:170258デフォルトの名無しさん
2009/07/28(火) 20:02:19全然たいした技法ではないので
特に呼び名はありません。
・・・もしかしてキャストとカンチガイしている?
0259デフォルトの名無しさん
2009/07/28(火) 20:59:22下のような説明文の()に入る言葉です。
イント型変数で除算を行うと演算結果の少数部が切り捨てられて正しい値が得られない。これを避けるためにイント型の数値をdouble型に変換してから計算する。これを( )といい…
0260デフォルトの名無しさん
2009/07/28(火) 21:01:17初めて聞いた。
そんなクソ参考書 捨ててしまえ。
焼却処分しろ。
0261デフォルトの名無しさん
2009/07/28(火) 21:02:38市販の物?それとも学校の教員とかが作ったもの?
0262デフォルトの名無しさん
2009/07/28(火) 21:12:03「尻も拭けない紙」
ってヤツか?
0263デフォルトの名無しさん
2009/07/28(火) 21:13:210264デフォルトの名無しさん
2009/07/28(火) 21:23:42「型変換」で通じる。
0265デフォルトの名無しさん
2009/07/28(火) 21:26:440266デフォルトの名無しさん
2009/07/28(火) 21:26:44それが答えか!
もしかして高校生?
0267デフォルトの名無しさん
2009/07/28(火) 21:30:31ですかね
0268デフォルトの名無しさん
2009/07/28(火) 21:33:26double d,b;
i = 50;
b = 50.3;
d = b + (double)i;
みたいなことするってこと?
0269デフォルトの名無しさん
2009/07/28(火) 21:35:33なんかすごいトリッキーな計算してくれそうじゃね?
0270デフォルトの名無しさん
2009/07/28(火) 21:36:31そうです
0271デフォルトの名無しさん
2009/07/28(火) 21:40:06ビット演算でできるといわれたんですが
0272デフォルトの名無しさん
2009/07/28(火) 21:40:560273デフォルトの名無しさん
2009/07/28(火) 21:41:320x01でANDをとればいい
0274デフォルトの名無しさん
2009/07/28(火) 21:42:03ソースみたときに
わかりにくいからですか?
0275デフォルトの名無しさん
2009/07/28(火) 21:42:151でいいや
0276デフォルトの名無しさん
2009/07/28(火) 21:44:24>>268その例だとキャストの必要ないし
d = b + i;
0277デフォルトの名無しさん
2009/07/28(火) 21:46:12負の数で誤爆するから
0278デフォルトの名無しさん
2009/07/28(火) 21:46:540279>>273 >>275
2009/07/28(火) 21:54:42intの場合(整数ならどれも同じだけど)2進数として考えた場合の各ビットの重みは
・・・32 16 8 4 2 1
という感じになります
つまり0ビット目のみ奇数か偶数を取り残りのビットは常に偶数になります
0280デフォルトの名無しさん
2009/07/28(火) 22:04:130281デフォルトの名無しさん
2009/07/28(火) 22:05:400282デフォルトの名無しさん
2009/07/28(火) 22:07:240xFFFF・・・FFFで1は立つので問題ないか
0283271
2009/07/28(火) 22:12:57この循環バッファをCで実装したいんですが・・・
うまくできません。考え方だけでいいので教えてくださいませんか
0284デフォルトの名無しさん
2009/07/28(火) 22:14:26>うまくできません。
これではさっぱり分かりません
0285デフォルトの名無しさん
2009/07/28(火) 22:17:330286デフォルトの名無しさん
2009/07/28(火) 22:19:12#defien Free_NUM_MAX 16
int FreeNum = Free_NUM_MIN;
int FreeNumGet()
{
int ret = FreeNum;
FreeNum++;
if(FreeNum > Free_NUM_MAX) FreeNum = Free_NUM_MIN;
return ret;
}
こんな感じであいてるバッファの位置を管理する機能を作ってFreeNumGet関数が返した位置を元に
バッファにアクセスすればOK
0287デフォルトの名無しさん
2009/07/28(火) 22:25:590288デフォルトの名無しさん
2009/07/28(火) 22:27:38負数が2の補数で表現される保証はない
0289デフォルトの名無しさん
2009/07/28(火) 22:29:54正整数の 2 のべき乗の剰余に限り可能
x を正整数とする
x % 4 = x & 3
x % 16 = x & 0xf
x % 65536 = x & 0xffff
0290デフォルトの名無しさん
2009/07/28(火) 22:38:29・4で割ったあまりは2進数表記をした場合の下二桁と同じ
・下二桁を取るには、二進表記での11、つまり3とandを取ることで取得できる
どこから分からないのかな
0291デフォルトの名無しさん
2009/07/28(火) 22:40:51っておかしくないっすか?
0292デフォルトの名無しさん
2009/07/28(火) 22:44:113は二進数にすると0011
4は二進数にすると0100
4で割った余りだから2ビットを残せばいい
0293デフォルトの名無しさん
2009/07/28(火) 22:47:15右に2ビットシフトだろ?
つまり無くなるのは2ビット
これが余りになる
0294デフォルトの名無しさん
2009/07/28(火) 22:54:51代入するのはおかしいっていってる?
何がおかしいと思ってるか伝わらんよ
0295デフォルトの名無しさん
2009/07/28(火) 22:55:18↑
こういうのは何て言うんですか?
C言語 シャープでググルとC#が出てしまう。
0296デフォルトの名無しさん
2009/07/28(火) 22:57:120297デフォルトの名無しさん
2009/07/28(火) 23:01:47ISO/IEC 9899:1999 (E)
6.10 Preprocessing directives
0298デフォルトの名無しさん
2009/07/28(火) 23:02:07ありがとう。
0299デフォルトの名無しさん
2009/07/28(火) 23:08:16英語は>>297にあるようにpreprocessing directives
0300デフォルトの名無しさん
2009/07/28(火) 23:50:04どうなってるの? さわりとか すこしでいいから書いてみせて
0301デフォルトの名無しさん
2009/07/28(火) 23:53:31じゃあ少しだけだぞ
if
0302デフォルトの名無しさん
2009/07/28(火) 23:55:29入力すれば 適正馬力とか エンジンが回転して 出力を出すように シュミレートされる とか とにかく 数値を入力していくだけでいいとかかなあ
0303デフォルトの名無しさん
2009/07/28(火) 23:57:060304デフォルトの名無しさん
2009/07/28(火) 23:57:550305デフォルトの名無しさん
2009/07/29(水) 00:02:420306デフォルトの名無しさん
2009/07/29(水) 00:31:57さわりを教えるわけにはいかんだろ企業秘密的に
0307デフォルトの名無しさん
2009/07/29(水) 01:17:56http://pc12.2ch.net/test/read.cgi/tech/1184483810/141
0308デフォルトの名無しさん
2009/07/29(水) 02:24:51毎年なんだろうけど4月号か5月号が組み込みの基礎だったな
アセンブリから入ってC言語のポインタ辺りまでさらっと書いてあった
0309デフォルトの名無しさん
2009/07/29(水) 06:01:040310デフォルトの名無しさん
2009/07/29(水) 09:52:39メイン基板は面白味も何もなさそうだね。
0311デフォルトの名無しさん
2009/07/29(水) 10:04:060312デフォルトの名無しさん
2009/07/29(水) 10:06:50段階を踏めばいいからな
0313デフォルトの名無しさん
2009/07/29(水) 14:58:240314デフォルトの名無しさん
2009/07/29(水) 15:01:200315デフォルトの名無しさん
2009/07/29(水) 15:02:21そのva_listを関数Bに引数で渡し、
関数Bでva_argしても、強制終了し、
また、ポインタにして渡しても、
値が指定値になってくれないのですが、
使用できないやり方なんですかね。
0316デフォルトの名無しさん
2009/07/29(水) 15:13:550317デフォルトの名無しさん
2009/07/29(水) 15:15:24ありがとうございます。そうします。
0318デフォルトの名無しさん
2009/07/29(水) 15:26:08答えを0にしたい場合はどうすればいいですか?
0319デフォルトの名無しさん
2009/07/29(水) 15:28:56分母が0になることがあるならif文などでチェックしておくしかない
0321デフォルトの名無しさん
2009/07/29(水) 15:31:47if(a == 0.0 && b == 0.0)
return 0.0;
else
return a / b;
}
0322デフォルトの名無しさん
2009/07/29(水) 15:36:26a != 0.0 && b == 0.0のときは
0323デフォルトの名無しさん
2009/07/29(水) 15:36:48division(1.0, 0.0) であぼん
0324318
2009/07/29(水) 15:38:24ありがとうございます!
0で割れないのなら、割り算の過程を飛ばし、0を返すってことですね。
よく分かりました。ありがとうございました。
0326デフォルトの名無しさん
2009/07/29(水) 15:42:11それは悪かった
0327デフォルトの名無しさん
2009/07/29(水) 15:52:23その答えを0にしたいとか…、この人学校行ってないのかな?
0328デフォルトの名無しさん
2009/07/29(水) 15:54:57その辺はわかってるでしょ
コンピューターだから勝手に0にしてくれると思ってたとかそういうオチじゃないの?
0329デフォルトの名無しさん
2009/07/29(水) 15:55:42おまいは小・中・高どれだ?
0330デフォルトの名無しさん
2009/07/29(水) 16:09:59今年の夏はいちいちつっかかるのが流行りなのか?
0331328
2009/07/29(水) 16:12:330332デフォルトの名無しさん
2009/07/29(水) 17:01:00それはそうと0/0の値はNaNではなくて不定であるべきだという疑問を持つんだが
0333デフォルトの名無しさん
2009/07/29(水) 17:03:590334デフォルトの名無しさん
2009/07/29(水) 17:04:170335デフォルトの名無しさん
2009/07/29(水) 17:05:020336デフォルトの名無しさん
2009/07/29(水) 17:10:43標準規格では0で割った場合の動作は未定義。
NaNを返そうが例外を投げようが鼻から悪魔が出ようが構わない。
ところで、標準Cとは全く関係ない蛇足だけど
IEEE 754としては不定を表すことを意図した値がNaNだろ。
0337デフォルトの名無しさん
2009/07/29(水) 17:14:28それはなんか間違いをしているだけのはず。
vprintfなどva_listを引数に渡す実例はある。
0338デフォルトの名無しさん
2009/07/29(水) 17:32:120339デフォルトの名無しさん
2009/07/29(水) 17:34:22プロセッサが処理できないはず
0340デフォルトの名無しさん
2009/07/29(水) 17:36:44-1/0 => -Inf
0/0 => NaN
0341デフォルトの名無しさん
2009/07/29(水) 17:39:180342デフォルトの名無しさん
2009/07/29(水) 17:39:32_control87(0, _MCW_EM);
0343315
2009/07/29(水) 17:53:21ありがとうございます。
確かにvprintfとかありますもんね。
もう一度実験した所、ポインタで渡すやり方はうまくいきました。
そのまま渡すと、一つ目の内容のみが表示されます。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9858.txt
0344デフォルトの名無しさん
2009/07/29(水) 19:24:54printf("%d\n", marker++);
}
void Foo(int suu) {
int i, marker = 0;
for(i = 0; i < suu; i++)
FooFoo(marker);
}
みたいなのと同じで、
関数の中で値を変更しても呼び出し元に影響しないせいでは?
0345315
2009/07/29(水) 19:52:39ありがとうございます。
なるほど、確かにそうですね。
以下のでいけました。
>>315のも>>343のFooやBarみたいな感じでやりつつ、
さらに別の所にエラーがあり、落ちたのかもしれません。
//別の関数 + カウンタを別の関数で
void PiyoPiyo(va_list marker, int suu)
{
int i;
for(i = 0; i < suu; i++)
printf("%d\n", va_arg(marker, int));
}
void Piyo(int suu, ...)
{
va_list marker;
va_start(marker, suu);
PiyoPiyo(marker, suu);
va_end(marker);
}
0346デフォルトの名無しさん
2009/07/29(水) 20:30:170347デフォルトの名無しさん
2009/07/29(水) 20:39:17出来たものは前のライブラリのlibが無けりゃ動かないとんだ欠陥品だった。
自分が生成したlibファイル一個で動くようには出来ないの?
0348デフォルトの名無しさん
2009/07/29(水) 20:46:28そんな欠陥品使わずに自分で作ればおk
0349315
2009/07/29(水) 20:51:42すいません。
一時的に名前を使いたい時などに
hogeなどを使うといいらしいので使ってしまいました。
質問する時は、ちゃんと分かりやすい名前にした方がいいですね。
0350デフォルトの名無しさん
2009/07/29(水) 21:00:470351デフォルトの名無しさん
2009/07/29(水) 21:38:07パチンコ用ハードの流通ルートは面白いよ
原価100円もしないZ80互換チップが、なぜか何十倍もの値段で……
おっと誰か来たようだ
0352デフォルトの名無しさん
2009/07/30(木) 09:46:00気をつけろ組織の奴らかもしれないぞ
0353デフォルトの名無しさん
2009/07/30(木) 12:11:50いまはLETEC社製のCPU,ROM内蔵型のV4チップ
0354デフォルトの名無しさん
2009/07/30(木) 23:09:360355デフォルトの名無しさん
2009/07/30(木) 23:51:360356デフォルトの名無しさん
2009/07/30(木) 23:53:24シンプルだし
0357デフォルトの名無しさん
2009/07/31(金) 00:03:510358デフォルトの名無しさん
2009/07/31(金) 00:05:530359デフォルトの名無しさん
2009/07/31(金) 00:11:32アプリでも重要な部分はCで作ることが多い
0360デフォルトの名無しさん
2009/07/31(金) 00:18:280361デフォルトの名無しさん
2009/07/31(金) 00:39:13カリカリッと動くのがいいやね
0362デフォルトの名無しさん
2009/07/31(金) 00:48:340363デフォルトの名無しさん
2009/07/31(金) 00:54:510364デフォルトの名無しさん
2009/07/31(金) 00:56:440365デフォルトの名無しさん
2009/07/31(金) 00:59:000366デフォルトの名無しさん
2009/07/31(金) 07:04:48マイコン用とかASIC用とかそういう特殊な分野においては
0367デフォルトの名無しさん
2009/07/31(金) 09:24:32ってプログラムしか作らない人はなんでもいいんじゃね?
0368デフォルトの名無しさん
2009/07/31(金) 13:25:14文法がシンプルだから入門者向けとは必ずしもいえない。
0369名無しさん
2009/07/31(金) 18:36:020370デフォルトの名無しさん
2009/07/31(金) 18:42:500371デフォルトの名無しさん
2009/07/31(金) 18:43:100372デフォルトの名無しさん
2009/07/31(金) 18:43:290373デフォルトの名無しさん
2009/07/31(金) 18:51:45変数名まで書くと、それはポインタじゃなくてポインタ変数
0374デフォルトの名無しさん
2009/07/31(金) 18:53:330375デフォルトの名無しさん
2009/07/31(金) 21:57:18どういう意図かは知らんがウザいことこの上ない。
0376デフォルトの名無しさん
2009/07/31(金) 22:19:56昔みたときは、演算子の評価順序についてまで事細かに指摘されていたのですが。
ご存知の方はよろしくお願いいたします。
0377デフォルトの名無しさん
2009/07/31(金) 23:04:53http://www.6809.net/tenk/html/scrap/kr2rev.htm
0378デフォルトの名無しさん
2009/07/31(金) 23:59:57複雑な方が入門向けってことなの?
0379デフォルトの名無しさん
2009/08/01(土) 00:12:400380デフォルトの名無しさん
2009/08/01(土) 00:34:09ポインタという概念がシンプルかどうかで異論があると思います。
pascal にポインタってありましたっけ?
0381デフォルトの名無しさん
2009/08/01(土) 00:41:11a: ^integer;
とか
b: Pointer;
とかポインタ型はたしかあるよ
0382デフォルトの名無しさん
2009/08/01(土) 00:44:43むしろ表記に問題があるんじゃないかね?*やら&やら他にも意味を持つ記号を使うあたりが。
0383デフォルトの名無しさん
2009/08/01(土) 00:50:24しかし、恐らく、多くのプログラム初心者の夢や希望には応えられない。
いまどきの初心者はWindowsやMacといったリッチなコンピュータ環境が当たり前だから
真っ黒な背景にテキストを表示するのが精一杯のような言語を学ぶのを楽しいと思うだろうか?
0384デフォルトの名無しさん
2009/08/01(土) 00:51:59ポインタ自体はすぐに理解したが、ポインタを使っているコードは中々理解できなかった
0385デフォルトの名無しさん
2009/08/01(土) 00:58:210386デフォルトの名無しさん
2009/08/01(土) 00:59:13int a;
int *b;
b = &a;
これでbは&aを指しますので、*bへの代入結果はaへの代入結果となります^^
とかいう説明で終わってる。必要性を感じれないようなサンプルの本が多い気がするのだけど気のせいかしら?
0387デフォルトの名無しさん
2009/08/01(土) 01:01:40アセンブラレベルでみればポインタ使うなあという箇所もCだとそれっぽくならないからねえ
リストとか使い出してはじめてわかる
0388デフォルトの名無しさん
2009/08/01(土) 01:03:27casl 実装があるならまだしも。そういう教科書はみたことがあるが思い出せない、ポインタ求む。
0389デフォルトの名無しさん
2009/08/01(土) 01:04:28Cでは文字列を扱うといやおうなくポインタを使う羽目になる。
そして、文字列をまったく必要としないプログラムはそれほど多くない。
0390デフォルトの名無しさん
2009/08/01(土) 01:23:44ああ、こういう書き方するのか、ふーん、で書き方として納得して終わってしまう
ポインタで書くと便利だ!ということから便利さを感じる例ってのが意外と少ないよ
0391デフォルトの名無しさん
2009/08/01(土) 01:34:51規模が大きくなればポインタは使うようになるよ。
大きな配列を動的に確保して管理するために使うような簡単な物から
リストとかいった若干手の込んだ使い方まで
高度になってくると、状態遷移を切り替えるためにポインタ使うとかあるけど
0392デフォルトの名無しさん
2009/08/01(土) 01:46:500393デフォルトの名無しさん
2009/08/01(土) 02:07:150394デフォルトの名無しさん
2009/08/01(土) 02:07:41全ての変数をポインタとメモリ割り当てで作ってみてはどうか?
int a;
という処理が
int *a = malloc(sizeof(int) * 1);
という処理とほぼ同義とすぐ理解できると思うのだが。
0395デフォルトの名無しさん
2009/08/01(土) 02:18:27それって java?
0396デフォルトの名無しさん
2009/08/01(土) 02:32:22ありまに くなだらい ので そいうう わけの わかならい こと を いうの やめて くさだい。
0397デフォルトの名無しさん
2009/08/01(土) 02:36:58配列風に連続領域を確保すると都度コピーが必要なのに対し、リストだとデータ1つ分追加だけで済む。
で、目に見えて速度差が出てリストすげー!ポインタすげー!となったらいいなあ。
0398デフォルトの名無しさん
2009/08/01(土) 02:44:35言語がシンプルだと、複雑なことを全部自分で面倒見ないといけないからな。
0399デフォルトの名無しさん
2009/08/01(土) 05:52:310400デフォルトの名無しさん
2009/08/01(土) 08:30:47ヒープ領域の割り当てをするために必要な場合と
スタック領域の変数を示す場合に必要な場合で
前者を使わない限り特に利点がな
0401デフォルトの名無しさん
2009/08/01(土) 08:47:110402名無しさん
2009/08/01(土) 09:36:28なんでこんなに簡単なんだろうって思う。
0403デフォルトの名無しさん
2009/08/01(土) 10:13:070404394
2009/08/01(土) 10:19:50・変数や関数は全てメモリ内のどこかのアドレスに配置されること。
・アドレスが存在する以上ポインタと言えること。(実際ポインタで表現できること)
この2つを最初に学習して、後から「実は簡単な表現方法もあるんだよ」と教えればいい。
まあコンピュータの仕組みを覚えるにはアセンブラが一番なんだが。
0405デフォルトの名無しさん
2009/08/01(土) 10:25:11言い方を変えると「俺は頭が悪くてC++を理解できないや」と
自覚する時期の事だね
0406デフォルトの名無しさん
2009/08/01(土) 11:15:19こういう妄想に囚われていると、よりよいコードを書けなくなる訳で。
0407デフォルトの名無しさん
2009/08/01(土) 11:19:030408デフォルトの名無しさん
2009/08/01(土) 11:19:10でもCの場合そういうことも理解してないとだめだしなあ
double型の糞でかい配列を確保してエラーになりましたとか質問してくるのは最たる例だし
0409デフォルトの名無しさん
2009/08/01(土) 11:25:31変数はレジスタに割り当てられるかもしれないし、そもそも最適化で消えてなくなるかもしれない。
関数もまた然り。インライン展開で事実上存在しなくなることはよくある。
0410デフォルトの名無しさん
2009/08/01(土) 11:27:17最適化されないベタイメージを知っておくのは悪くない
0411デフォルトの名無しさん
2009/08/01(土) 12:16:490412394
2009/08/01(土) 12:27:33アホか。
コード上でポインタとして使われてる関数が最適化で無くなるわけねーだろ。
おまえコンパイラの最適化を何だと思ってるんだ?
0413デフォルトの名無しさん
2009/08/01(土) 12:50:32???
関数ポインタのことか?
関数ポインタ経由の関数呼び出しが、インライン展開されることもなくはない。
0414デフォルトの名無しさん
2009/08/01(土) 13:10:080415394
2009/08/01(土) 13:13:18あのさ、そもそもコーディング時の考え方と、最適化時の考え方は分けるべきだろ。
「極めて無駄な書き方をしたときだけ」という条件付きで「関数も消える」って?
それがコーディング時の「関数もメモリに存在する」という考え方と何の関係があるの?
0416デフォルトの名無しさん
2009/08/01(土) 13:13:320417デフォルトの名無しさん
2009/08/01(土) 13:35:54定数なら余裕でインライン展開される
0418デフォルトの名無しさん
2009/08/01(土) 14:20:37他の場所から(インライン展開されずに)呼ばれるかもしれないし。
0419デフォルトの名無しさん
2009/08/01(土) 14:27:040420デフォルトの名無しさん
2009/08/01(土) 14:29:150421デフォルトの名無しさん
2009/08/01(土) 14:38:44コーディング時に「この関数はインライン展開されるはずだからポインタは使えない」とか考えるの?
アフォだろどう考えても。
0422デフォルトの名無しさん
2009/08/01(土) 14:40:400423デフォルトの名無しさん
2009/08/01(土) 15:15:24>変数や関数は全てメモリ内のどこかのアドレスに配置される
なんてことは一言も書いてないんだよね。
0424デフォルトの名無しさん
2009/08/01(土) 15:21:480425デフォルトの名無しさん
2009/08/01(土) 15:36:52つーか考える順番が逆なんだよ。最適化が先じゃない。コードが先だ。
コード上で、どこかのメモリをアクセスするポインタが使われているなら、それはコード上はメモリにあるんだよ。
その後の最適化で実質消えても、コード上の考え方、使われ方が変わったわけじゃない。
0426デフォルトの名無しさん
2009/08/01(土) 15:43:09だから、そんなことは規格票のどこにも書いてないんだよね。
多くのコンピュータでポインタの実装にメモリアドレスを利用しているというだけで
別の原理で実装してもいい。
スタックやヒープのないコンピュータシステムだってあるのだから。
そもそもC言語ではポインタ変数やポインタ値に「型」があるけど
メモリ上のアドレスにはそんなものないし、
領域の確保なんてものも言語の都合であって、コンピュータの都合じゃない。
この辺りのことは確か、ポインタ完全制覇の著者も書いてたように思う。
なんのための抽象化なのか、ってことね。
事これがC++になると、ポインタの理解で
アドレスとかメモリとかの実装に縛られるのはいよいよ危険になる。
0427デフォルトの名無しさん
2009/08/01(土) 16:00:56多くのコンピュータでメモリアドレスを使用してるならそれが一般的な考えだろうが。
それともう一つ。
どんな原理で実装されていようとも、それがC規格に準拠しているのならコーディングには影響しない。
0428デフォルトの名無しさん
2009/08/01(土) 16:06:45「一般的」と思っているのは君だけで、標準規格がすべてだよ。
解釈が分かれたときの決定打こそが標準規格の存在価値なのだと
メイヤーズ先生もおっしゃってたでしょ?
僕は別のコーディングの話がどうとかいうのはしていない。
ポインタとアドレスは別物だから、同じとみなすのは危険だよと言ってるだけ。
0429デフォルトの名無しさん
2009/08/01(土) 16:16:390430デフォルトの名無しさん
2009/08/01(土) 16:25:31めんどくさいヤツだなw
最適化がどうのインライン展開がどうのと、最終的に出来るバイナリコードの話ばっかしてたのは誰だよ?
オレは最初っから初心者のコーディングの考え方の話をしてんだろうが。
0431デフォルトの名無しさん
2009/08/01(土) 16:39:110432デフォルトの名無しさん
2009/08/01(土) 16:50:07それでも >>428 の立場の人もいるんですね。
0433デフォルトの名無しさん
2009/08/01(土) 17:14:54>最適化がどうのインライン展開がどうのと、最終的に出来るバイナリコードの話ばっかしてたのは誰だよ
僕じゃないよ^^;;; 自分は423,426,428だけ。
IDないのとレス番をつけなかったからいろいろまじっちゃったかな。
K&R第2版ではmallocの実装を通して、
抽象(ポインタ)と実装(メモリ)との関連を理解できるようになるんだけど
そういう教科書は他にあんまりないんだよね…。
0434デフォルトの名無しさん
2009/08/01(土) 17:16:490435デフォルトの名無しさん
2009/08/01(土) 17:30:450436デフォルトの名無しさん
2009/08/01(土) 18:43:31規格スレはCの規格の文言をソースにして議論するためのスレなので、
ここで嬉々として規格規格言ってるような馬鹿には来ていただきたくないです。
0437デフォルトの名無しさん
2009/08/01(土) 20:02:030438デフォルトの名無しさん
2009/08/01(土) 20:20:570439デフォルトの名無しさん
2009/08/01(土) 20:22:09C言語の範疇では無理
0440デフォルトの名無しさん
2009/08/01(土) 20:26:09レスありがとうございます。
スレタイ見たらC言語だけ見たいですね・・・
スレ汚してすいませんでした。
0441デフォルトの名無しさん
2009/08/01(土) 20:54:470442デフォルトの名無しさん
2009/08/01(土) 21:55:232.sprintf → char配列 → std::string
3.
int a;
stringstream ss;
ss << a;
string s = ss.str();
0443デフォルトの名無しさん
2009/08/01(土) 23:04:11Ctrl+Zが改行の直後のみEOFを返し、それ以外ではEOFではなく制御文字SUBを返してるっぽいです。
これは普通の挙動ですか?
0444デフォルトの名無しさん
2009/08/01(土) 23:10:020445デフォルトの名無しさん
2009/08/01(土) 23:17:140446デフォルトの名無しさん
2009/08/01(土) 23:29:180447デフォルトの名無しさん
2009/08/01(土) 23:35:16てか、使っているターミナルの仕様を調べたほうがはやいんじゃね
0448デフォルトの名無しさん
2009/08/02(日) 02:11:590449デフォルトの名無しさん
2009/08/02(日) 02:30:06VisualStudioスレ辺りへどうぞ。
0450デフォルトの名無しさん
2009/08/02(日) 04:28:03Visual C++を始めWindows上のCコンパイラは、Linuxとかの
UNIX上でC開発をある程度やった人じゃなきゃ扱いは難しいよ。
(IDEもそれなりに難しいが、コマンドラインツール群を
使うのはもっと難しい)
C/C++(特にC)がUNIXと深い関わりがあるってことは
知ってるだろ?参考書とか教科書もどうしてもUNIXを
引きずることになる。
Windows上ではそれに加えてWindows上の色々な特殊事情が
差分として加わるんで。
0451デフォルトの名無しさん
2009/08/02(日) 05:43:570452デフォルトの名無しさん
2009/08/02(日) 12:03:35ありがとうございます。
450>>
授業で使う程度なので、UNIXとかは聞いたことがあるぐらいです。
普段なら、学校で使えるのですけど。
0453デフォルトの名無しさん
2009/08/02(日) 12:49:02何わけのわからん事言ってるんだボケが
0454デフォルトの名無しさん
2009/08/02(日) 13:07:490455デフォルトの名無しさん
2009/08/02(日) 13:34:08できあがるバイナリもかなり小さくて済む。
0456デフォルトの名無しさん
2009/08/02(日) 13:34:520457デフォルトの名無しさん
2009/08/02(日) 13:36:540458デフォルトの名無しさん
2009/08/02(日) 13:39:03上級者が事情わかって使うのならいいけど。
0459デフォルトの名無しさん
2009/08/02(日) 13:45:13Cの言語規格が実装と分かれてるのがおっぱい
メモリがシームレスかつシーケンシャルに存在するっていう一般的な実装に準拠してない環境なんてザラ
0460デフォルトの名無しさん
2009/08/02(日) 13:46:59簡単なソースのコンパイルくらいなら問題なさそうな問題?
0461デフォルトの名無しさん
2009/08/02(日) 13:48:39template周りが腐っとる
それにバグてんこもり
0462デフォルトの名無しさん
2009/08/02(日) 13:48:410463デフォルトの名無しさん
2009/08/02(日) 13:51:14> メモリがシームレスかつシーケンシャルに存在する
そんな主張してた人いたっけ?
0464デフォルトの名無しさん
2009/08/02(日) 13:54:10C++関連のバグはVCにもある。準拠度が一番高いのはgcc。
つーかCの学習する限りはbccでも何ら問題ない。リリースが古いというのは確かだけどね。
最適化のレベルが低いかわりにコンパイルが爆速というメリットがある。
0465デフォルトの名無しさん
2009/08/02(日) 13:57:49何が「何ら問題ない」だよカス
実際に使ってみて言ってんのか
0466デフォルトの名無しさん
2009/08/02(日) 14:00:59yes
0467デフォルトの名無しさん
2009/08/02(日) 14:03:56・学習するためだけに覚えないといけないことが多い
(その後、bccを実用コンパイラとして使うなら別だが)
・ユーザが少ないため問題がおきたときに情報が少ない
というのが初学者の学習用途には向いてない点。
0468デフォルトの名無しさん
2009/08/02(日) 14:04:380469デフォルトの名無しさん
2009/08/02(日) 14:08:40すごく興味深いです
コンパイラは絶対だと思ってたけど、コンパイラにもバグってあるんですね
知りませんでした。恥ずかしい
0470デフォルトの名無しさん
2009/08/02(日) 14:14:04だからCじゃなくてC++のバグだっての。
0471デフォルトの名無しさん
2009/08/02(日) 14:40:21Cの学習として、Cの機能だけ使うなら、Cが正しく動けば問題ない。
0472デフォルトの名無しさん
2009/08/02(日) 14:50:00bcc32.cfgにまつわる質問が絶えないから初心者に勧めるのはやめたほうがいいと思う。
0473デフォルトの名無しさん
2009/08/02(日) 15:51:59質問させてください。
C言語で定数を定義する場合、
#define MAX 999
のように記述しますよね。
でも調べてみるとconstという修飾子があり、これを使うと、
const int MAX = 99;
のように記述できます。
Java出身の自分にはこちらの方が自然に見えます。
定数の型も明瞭ですし。
しかし一般的に#defineの方が使われているのは何か理由があるのですか?
よろしくおねがいします。
0474デフォルトの名無しさん
2009/08/02(日) 15:57:23const int だと配列宣言するときにうまくいかないコンパイラが多いから
0475デフォルトの名無しさん
2009/08/02(日) 16:05:200476デフォルトの名無しさん
2009/08/02(日) 16:09:540477デフォルトの名無しさん
2009/08/02(日) 16:11:49const int TBL_SIZE = 100;
int tbl[TBL_SIZE];
みたいなことができない。
C++だとできる。
0478デフォルトの名無しさん
2009/08/02(日) 16:15:37Cは後の言語で可能になってることができないとか結構ある。
0479デフォルトの名無しさん
2009/08/02(日) 16:19:07そんでもってCは配列サイズに変数を指定できないから、>>474の言うように
配列サイズにconst intで定義された値を指定するとエラーになる
あと挙動が違うよ
#define MAX 999だと、コンパイル前にソース中からMAXという単語を探して、
そこを999に置き換えた後にソースのコンパイルが始まるという感じ
だからこの場合は、具体的に変数領域に値が確保されるというよりは、コードに値を直接書き込む感じ
constの
0480デフォルトの名無しさん
2009/08/02(日) 16:20:50constは型修飾子なのでスコープが存在する。
主に、ある関数で引数として受け取った値を、不用意に変更しないように「その関数内に限り変更不可」の印を押すためのもの。
一方プリプロセッサによる置き換えはコンパイルの時点で定数として固定される。
つまり、プログラムの初めから終わりまで変わらない値を定義するなら、プリプロセッサによる置き換えを使うべき。
0481デフォルトの名無しさん
2009/08/02(日) 16:33:070482473
2009/08/02(日) 16:43:09>>479
>Cは配列サイズに変数を指定できない
これは知りませんでした。。。
なるほど、constはJavaでいうfinal修飾子と同様に変数に属性を持たすだけ。
しかし#defineはプリプロセッサによって本当に定数になるので配列宣言時に使えるわけですね。
>>480
>constは型修飾子なのでスコープが存在する。
>主に、ある関数で引数として受け取った値を、不用意に変更しないように「その関数内に限り変更不可」の印を押すためのもの。
これはJavaのfinalとは違いますね。
char *strcpy(char *dest, const char *src);
のように関数定義の引数でconstが使われていたのもずっと謎でしたが(Javaのfinalをこのように使うのは不可)これも理解できました。
勉強になりました。ありがとうございました。
0483デフォルトの名無しさん
2009/08/02(日) 16:50:04if( hoge & 4 !=0)
この条件式はどういう意味でしょうか?4とANDをとっている部分がわかりません
0484デフォルトの名無しさん
2009/08/02(日) 16:52:260485デフォルトの名無しさん
2009/08/02(日) 16:53:470486デフォルトの名無しさん
2009/08/02(日) 16:56:10じゃ、バグだな。
0487デフォルトの名無しさん
2009/08/02(日) 16:59:180488デフォルトの名無しさん
2009/08/02(日) 17:00:55ビット演算の定数をは10進数でなく2進数にするとわかりやすい。
if( hoge & 0x0000000000000100 !=0)
0489デフォルトの名無しさん
2009/08/02(日) 17:01:270490488
2009/08/02(日) 17:02:13if( hoge & 0x0000000000000100)
でいい。
0491デフォルトの名無しさん
2009/08/02(日) 17:04:11hoge & 1 ⇒ hoge が奇数なら真。hogeが偶数なら偽。
0492488
2009/08/02(日) 17:05:470493デフォルトの名無しさん
2009/08/02(日) 17:06:36演算子の優先順位に従うと
hoge & (4 != 0)
となる。つまりhogeと1のANDだから、hogeの1ビット目が1ならば真。
0494デフォルトの名無しさん
2009/08/02(日) 17:10:260495デフォルトの名無しさん
2009/08/02(日) 17:12:520496デフォルトの名無しさん
2009/08/02(日) 17:13:43for(int i=0;i!=10;i++)
のように、条件判定のところに!=を使うコードは
今まで見たことがないのですが、なぜこれは書かないのでしょうか?
0497デフォルトの名無しさん
2009/08/02(日) 17:14:530498デフォルトの名無しさん
2009/08/02(日) 17:18:01iが11以上になって意図しない動作をする可能性があるから。
0499デフォルトの名無しさん
2009/08/02(日) 17:21:020500デフォルトの名無しさん
2009/08/02(日) 17:23:09・習慣による。
・例えばループ内でiに11を代入してもループを脱出できるように。
・iの型が整数型じゃなかったり初期値が外部からの引き数だったりしてもいいように。
0501デフォルトの名無しさん
2009/08/02(日) 17:23:21範囲として曖昧であるから
C99はもういいから
経験がまだないだけで使うときには使う
例えばリストなどをイテレータのように扱いたいときに
0503デフォルトの名無しさん
2009/08/02(日) 18:11:260504デフォルトの名無しさん
2009/08/02(日) 18:16:46ガチスレで聞いた方がいろいろな意見が出ると思うよ。
0505デフォルトの名無しさん
2009/08/02(日) 18:18:20異論はあるだろうが、あれはgotoと同じくらい危険だ
整数定数しか使えないこともよくない
if-elseでぶら下がらせまくるかテーブルを作った方が直感的である
また、switchを使うと関数が長くなる傾向にあるので作法的に良くなとされている
0506デフォルトの名無しさん
2009/08/02(日) 18:24:45見やすいときもあると思ってたんだけどな
0507デフォルトの名無しさん
2009/08/02(日) 18:51:370508デフォルトの名無しさん
2009/08/02(日) 18:52:130509デフォルトの名無しさん
2009/08/02(日) 18:55:23gccなんだかだと
{
}
で囲えばできるけど
swicth(hoge)
{
case 1:
{
int a;
a = ・・・・
}
break;
case 2:
・
・
・
}
0510デフォルトの名無しさん
2009/08/02(日) 19:05:160511デフォルトの名無しさん
2009/08/02(日) 19:06:050512デフォルトの名無しさん
2009/08/02(日) 19:11:39そうなんだ
あれこれ使ってるわけじゃないのでよそまでは知らんかった
0513デフォルトの名無しさん
2009/08/02(日) 19:12:54あまり深いif-elseは考えもの。
0514デフォルトの名無しさん
2009/08/02(日) 19:16:23int y, z;
case 0:
// 〜
}
でだめなの?
0515デフォルトの名無しさん
2009/08/02(日) 19:17:040516デフォルトの名無しさん
2009/08/02(日) 19:18:25それはないわw
まだcase単位でスコープ切った方がましだろ
0517デフォルトの名無しさん
2009/08/02(日) 19:21:39他の所も異論はあるけど。
>また、switchを使うと関数が長くなる傾向にあるので作法的に良くなとされている
初耳。
同じように書けばif-elseでも同様に長くなると思うんだが。
どういうケースでswitch-caseのが長くなるんだ?
0518デフォルトの名無しさん
2009/08/02(日) 19:35:310519デフォルトの名無しさん
2009/08/02(日) 19:55:11}
みたいにforの条件文の中で変数宣言って出来ないんですか?
手元の書籍では
int i;
for (i = 0; i < 10; i++){
}
のようになってます。
0520デフォルトの名無しさん
2009/08/02(日) 19:55:56C++は可能
0521デフォルトの名無しさん
2009/08/02(日) 20:03:060522デフォルトの名無しさん
2009/08/02(日) 20:10:11思い込みは捨てよう。今のコンパイラにとって、効率の差は(最適化を抑制しない限り)殆どない。
>>514
初期化できないので、コンパイラの警告を抑制しにくいと言う問題はある。
因みに、同じ理由でC++ではできない(筈)。
0523デフォルトの名無しさん
2009/08/02(日) 20:16:010524デフォルトの名無しさん
2009/08/02(日) 21:38:14文字列の最後に'\0'代入を忘れなければ他は別に問題ないですよね?
0525デフォルトの名無しさん
2009/08/02(日) 21:45:140526デフォルトの名無しさん
2009/08/02(日) 21:46:08void main(void)
{
int a;
for(a=0;a<1000000;a++){
printf("%d\n",a);
}
}
変数aの値が1ずつ増加するプログラムですが、これを実行するとパソコンの方は本気でこのプログラムを実行し、
幾つかコレと同じプログラムを実行するとCPU使用率がすぐ100%に到達してしまいます。
そこで
パソコンがこのプログラムを一秒間に10回程度処理するくらいに控えさせる。
ようにしたいと思います。時間稼ぎ用のfor文を作ってしましたが、それでは時間稼ぎを行うためにパソコンが無駄な処理をしてしまます。
つまり複数同時に実行した時にCPU使用率がすぐ100%に到達してしまいます。
どのようにすれば解決できますか?
0527デフォルトの名無しさん
2009/08/02(日) 21:46:590529デフォルトの名無しさん
2009/08/02(日) 23:42:23任意の自然数aと実数bを受け取り,方程式
x^a=b
の解を計算するプログラムを作成せよ(ここでx^aはxのa乗).
ただし,累乗根の計算には,ニュートン法などの数値解法を用いること.
また,解が無い場合はその旨を出力するよう例外処理をすること.
0530デフォルトの名無しさん
2009/08/02(日) 23:45:52プログラミングの為の数学と算数 vol.3
http://pc12.2ch.net/test/read.cgi/tech/1197063023/
こっちでもいいかもね。こっちだと人はいるし
C/C++の宿題片付けます 129代目
http://pc12.2ch.net/test/read.cgi/tech/1247438792/
0531デフォルトの名無しさん
2009/08/02(日) 23:54:000532デフォルトの名無しさん
2009/08/03(月) 00:00:350533デフォルトの名無しさん
2009/08/03(月) 01:41:170534デフォルトの名無しさん
2009/08/03(月) 05:29:55DLLから構造体を返すと値がおかしくなります!
LoadLibraryしたdllからint** suuzi_a;とか含む構造体(DLL側で2回mallocしてる)を返す関数を呼ぶと中身が意味不に。
同構造体内のint suuzi_b;とかはきちんと返されるんですが…
exe側からは
kouzoutai = (*dllFunc)();
みたいな呼び方で呼んでます。
dllはまんま
return kouzoutai;
で返してます。
これってもしかしてDLLからのリターンはコピー扱いになってるとかそういうオチですか…
0535デフォルトの名無しさん
2009/08/03(月) 05:41:22C言語自体にDLLなんて機能はありません。ドザは素直にAPIスレかVisualStudioスレ辺りに引っ込んでなさい。
0536534
2009/08/03(月) 05:49:36いかん寝ぼけてるなorz CじゃねぇWinAPIだ
この系列のスレは半年ROMるよ…
0537デフォルトの名無しさん
2009/08/03(月) 06:32:380538デフォルトの名無しさん
2009/08/03(月) 10:09:16こいつコールバック関数の意味もわかってなさそうだな
0539デフォルトの名無しさん
2009/08/03(月) 10:14:110540デフォルトの名無しさん
2009/08/03(月) 12:32:280541デフォルトの名無しさん
2009/08/03(月) 12:43:06そのOSが動作しているハードのアーキテクチャがIA-32なら、内部データはリトルエンディアンで扱われているはず。
0542デフォルトの名無しさん
2009/08/03(月) 13:52:55辺りがあやすい。
いずれにせよMS特有のC文法拡張問題があるから
Windows上でC/C++を学んでしまうと別言語を学んでしま
うのと同じになっちゃうって感じ
0543デフォルトの名無しさん
2009/08/03(月) 14:42:520544デフォルトの名無しさん
2009/08/03(月) 14:45:55動かない
ただし bochs みたいな CPUエミュレータを使えば動かすことも可能
0545デフォルトの名無しさん
2009/08/03(月) 14:47:47俺もやったことないから実験レポートよろ
0546デフォルトの名無しさん
2009/08/03(月) 15:17:35リトルエンディアンのバイナリをビッグエンディアンで動かしてみることすらできないのでは
0547デフォルトの名無しさん
2009/08/03(月) 15:27:420548デフォルトの名無しさん
2009/08/03(月) 18:07:39しばしばリトルエンディアンよりも優れているとされる
リトルエンディアン
しばしばビッグエンディアンよりも優れているとされる
0549デフォルトの名無しさん
2009/08/03(月) 18:12:320550デフォルトの名無しさん
2009/08/03(月) 18:13:410551デフォルトの名無しさん
2009/08/03(月) 18:15:010552デフォルトの名無しさん
2009/08/03(月) 18:15:09戦争を起こそうとも思わないレベルw
0553デフォルトの名無しさん
2009/08/03(月) 18:19:36リトルエンディアン → 0x78, 0x56, 0x34, 0x12
ビッグエンディアン → 0x12, 0x34, 0x56, 0x78
ミドルエンディアン → 0x34, 0x12, 0x78, 0x56
アメリカインディアン → バイト列?なにそれ。
0554デフォルトの名無しさん
2009/08/03(月) 18:32:05例えばfloat。8388608から小数を表わせなくなりますよね
これは2の23乗
floatの指数部は8ビットで+乗方向は2の127乗まで表せますよね
でも上のように2の23乗から小数すら表せなくなる
せっかくの小数型なのに小数点を表せなくなるくらいなら、
指数部ビット数を削って仮数部を増やせば良かったのになぁと思います
精度を大きく落としてまで大きな値(3.402823e+38)を格納できるようにしたのは、
何か理由があるんですかね
それとも、「これはこういうもの」なんですかね
0555デフォルトの名無しさん
2009/08/03(月) 18:33:51固定小数点でも使ってろよ
0556デフォルトの名無しさん
2009/08/03(月) 18:40:37指数部を 0 ビットまで削って仮数部を最大限に増やした int という型がありますよ
0557デフォルトの名無しさん
2009/08/03(月) 18:47:03気に入らないならIEEEに言った方がいいよ
0558デフォルトの名無しさん
2009/08/03(月) 18:50:330559デフォルトの名無しさん
2009/08/03(月) 18:53:24解釈して書き込んだ0x12345678は0x1E6A2C48になるんじゃ?
(その逆も同じ)
0560デフォルトの名無しさん
2009/08/03(月) 18:55:360561デフォルトの名無しさん
2009/08/03(月) 18:57:07メンドクサイので推測だがそれビットの並びまで上下変えてないか?
リトルエンディアン、ビッグエンディアンをぐぐってこい
0562デフォルトの名無しさん
2009/08/03(月) 19:53:18たとえばGDI+のインターフェース
座標はfloatだろ
単純に言えばバンド幅はdoubleの半分で済む
精度はfloatで十分
そういう場合に使われる
0563デフォルトの名無しさん
2009/08/03(月) 20:09:118bit なら8bit の中まで反転するようなシステムはみたことないですね。
0564デフォルトの名無しさん
2009/08/03(月) 20:22:20それはそのとおりですが、機械イプシロンの精度よりも表現できるレンジを優先するような用途はあると思います。
たしか 80x87 って double がデフォじゃなかったかと。
0565デフォルトの名無しさん
2009/08/03(月) 20:51:1780bitがデフォだよ
外部インターフェースとしてfloatとdoubleのフォーマットを
持っているだけで内部計算は全部80bitで行っている
0566デフォルトの名無しさん
2009/08/03(月) 20:52:500567デフォルトの名無しさん
2009/08/03(月) 21:19:090568デフォルトの名無しさん
2009/08/03(月) 22:53:320569デフォルトの名無しさん
2009/08/03(月) 22:58:05そんなあいまいな確認をしないで自分の環境でsizeof(long int)とかやってサイズを調べた方がいい
というかそういう癖をつけろ
0570デフォルトの名無しさん
2009/08/03(月) 22:58:380571デフォルトの名無しさん
2009/08/03(月) 23:02:440572デフォルトの名無しさん
2009/08/04(火) 00:19:330573デフォルトの名無しさん
2009/08/04(火) 00:21:330574デフォルトの名無しさん
2009/08/04(火) 03:38:22俺>>568じゃないんだ。
が、Windows以外のと前置きされてるから気になっただけなんだ。
実際その環境向けに作ることがあって、サイズが重要なら調べてるよ
0575デフォルトの名無しさん
2009/08/04(火) 06:35:02int = 4
long = 8
でいいんじゃね
0576デフォルトの名無しさん
2009/08/04(火) 07:58:41それとは別にint32とかint64とかの型も作ればよかったのに。
0577デフォルトの名無しさん
2009/08/04(火) 08:16:550578デフォルトの名無しさん
2009/08/04(火) 08:24:4510年前に作られたんだけど、MSが無視しているんだ
0579デフォルトの名無しさん
2009/08/04(火) 09:08:540580デフォルトの名無しさん
2009/08/04(火) 10:17:22これはいいステップアップの書籍だ!っていうCの本があれば
教えていただけますか?
ってこの内容だとスレチですかね…
0581デフォルトの名無しさん
2009/08/04(火) 10:19:300582デフォルトの名無しさん
2009/08/04(火) 10:28:50LLP64でググる
0583デフォルトの名無しさん
2009/08/04(火) 10:37:55VC++ 1.5 とか、もう忘れたい…
0584デフォルトの名無しさん
2009/08/04(火) 13:42:380585デフォルトの名無しさん
2009/08/04(火) 15:05:190586デフォルトの名無しさん
2009/08/04(火) 17:11:24%桁数d、と入力すれば桁数に入れた数字の分だけ空白が入りますが
実際に数字が入った時より空白が小さくなってるみたいです。
http://homepage3.nifty.com/mmgames/c_guide/05-04.html
ちょうどこのページの2回目の実行結果のように、微妙にズレてるのですが
これも調整して桁揃えさせる方法はありますか?
0587デフォルトの名無しさん
2009/08/04(火) 17:13:540588デフォルトの名無しさん
2009/08/04(火) 17:17:210589デフォルトの名無しさん
2009/08/04(火) 17:18:35身近なところに。
0590デフォルトの名無しさん
2009/08/04(火) 17:23:150591デフォルトの名無しさん
2009/08/04(火) 17:25:230592デフォルトの名無しさん
2009/08/04(火) 17:51:18それはさておき、そんな間違いだらけのサイトでわざわざ苦しんでまで覚えようとする理由を教えて欲しい。
0593デフォルトの名無しさん
2009/08/04(火) 17:54:01わざわざ全角スペース入れてるんだなw
0594デフォルトの名無しさん
2009/08/04(火) 17:55:27結果を見てもわかる通り、数字はそのまま表示されており、
他の数字との位置関係がズレてしまっています。
もっと桁数の多い数字をいくつも表示する場合は非常に読みにくくなります。
--
本当に桁数が多かったら桁ぞろえしたら却って読みにくくなるわけで。
結果ありきで、確認せずに文章を書いているのがばればれだよね。
0595デフォルトの名無しさん
2009/08/04(火) 17:56:41ttp://support.microsoft.com/kb/417434/ja
固定ピッチフォントでも
漢字混在で 全角文字が半角文字の2倍の幅にならないケース 有りと。 (XP以前)
0596デフォルトの名無しさん
2009/08/04(火) 17:56:42どんな質問するにしてもせめて環境くらい書け。
0597デフォルトの名無しさん
2009/08/04(火) 19:28:37誰か<TT>とか<PRE>タグとかスタイルシートの使い方教えてやれよ。
テーブルでもいいかもな。
0598デフォルトの名無しさん
2009/08/04(火) 23:58:57stdint.hならVC++2010にはあるぞ。C++0x対応の一環としてだけど。
0599デフォルトの名無しさん
2009/08/05(水) 00:26:370600デフォルトの名無しさん
2009/08/05(水) 01:23:210601デフォルトの名無しさん
2009/08/05(水) 01:29:09VC++2008ExpressのWin32コンソールアプリケーションで素因数分解プログラムを作っているのですが、大きい数(4ケタくらい)を入れるとこのようなエラーが出てしまいます。
---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!
Program: ...A\Documents\Visual Studio 2008\Projects\素因数分解\Debug\素因数分解.exe
File: f:\dd\vctools\crt_bld\self_x86\crt\src\isctype.c
Line: 56
Expression: (unsigned)(c + 1) <= 256
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
---------------------------
中止(A) 再試行(R) 無視(I)
---------------------------
Cはまだ始めたばかりなのでよくわからない点も多いのですがオーバーフローですかね?
長文失礼しました。
0602デフォルトの名無しさん
2009/08/05(水) 01:34:35変数cの型は何?
256と比較してる時点でなんとなく想像はつくけど
0603601
2009/08/05(水) 01:37:50(unsigned)(c + 1) <= 256 でググったりもしたんですけど英語のサイトばかりで…
0604デフォルトの名無しさん
2009/08/05(水) 01:37:55というかなんでメモリがアホみたいにある時代にそんな小さいエリアでやってるのやら
0605601
2009/08/05(水) 01:40:16何か改善策等ありますか?
0606デフォルトの名無しさん
2009/08/05(水) 01:43:140607デフォルトの名無しさん
2009/08/05(水) 01:43:190609デフォルトの名無しさん
2009/08/05(水) 01:49:180610601
2009/08/05(水) 01:56:47了解。
ファイル管理情報 6232
オリジナルファイル名 : source.txt [www.dotup.org6232.txt]
ファイル管理番号 : 6232
ダウンロードパスワード : C/C++
削除用パスワード : 非公開
0611デフォルトの名無しさん
2009/08/05(水) 02:01:500612デフォルトの名無しさん
2009/08/05(水) 02:02:100613デフォルトの名無しさん
2009/08/05(水) 02:02:250615デフォルトの名無しさん
2009/08/05(水) 02:03:370616デフォルトの名無しさん
2009/08/05(水) 02:04:49わけわからん。
人にみてほしいなら、クリック一つでみられる場所にあげてそのURLを貼るのが当然だろ。
0617デフォルトの名無しさん
2009/08/05(水) 02:05:23> inta = inta;
これなんなの?ふざけてるの?
0618601
2009/08/05(水) 02:06:25サーセン総当たり式です。
>>613
奴の指摘する56行目はただ}があるだけです。
問題は他のところにあるかと。
>>615
エラーのメッセージボックスそのままコピペしたんで長いかなと思っただけです。
0619デフォルトの名無しさん
2009/08/05(水) 02:09:28if (isdigit(inta)) { inta *= i; }
0620601
2009/08/05(水) 02:09:28どうもお手数をかけてすいません。
>>617
すいません消し忘れです。
最初は最後にintaをもう一回使う予定だったのでintbに代入していたんですが使わなかったので置換でintbをintaに変えた結果がそれです。
0621デフォルトの名無しさん
2009/08/05(水) 02:10:44おいおい
そういうのはコメントにしておけよ
0622601
2009/08/05(水) 02:11:46intaをiで割り過ぎて小数になることがあるのでその時割り過ぎた分を元に戻すための措置です。
>>620
どうもすいません。
もっとコメント増やした方がいいですね。
0624デフォルトの名無しさん
2009/08/05(水) 02:34:290626デフォルトの名無しさん
2009/08/05(水) 02:39:03isdigitの仕様を理解していない。
とりあえず
>if (isdigit(inta)) { inta *= i; }
こいつを消して実行してみたら?
0627601
2009/08/05(水) 02:43:26行けました。
よく考えたらまずisdigitには!をつけとかないと駄目でしたね。
!をつけても駄目でしたが。
とりあえず消してうまく行ったので良かったです。
ありがとうございました。
0628デフォルトの名無しさん
2009/08/05(水) 02:47:40isdigit(inta)が1を返すときにとんでもないことになるのが原因
0629デフォルトの名無しさん
2009/08/05(水) 02:50:42真を返すときだな。
0630デフォルトの名無しさん
2009/08/05(水) 02:51:49返すのは1だよ。
0631デフォルトの名無しさん
2009/08/05(水) 02:52:330633デフォルトの名無しさん
2009/08/05(水) 02:53:570635デフォルトの名無しさん
2009/08/05(水) 03:02:26#include <stdio.h>
int main(void)
{
int i, j, n;
scanf("%d", &n);
for(i=2; n>=i; i++) {
for(j=0; n%i==0; j++) n /= i;
if(j) printf("%d^%d\n", i, j);
}
return 0;
}
程度で十分だろ
0637デフォルトの名無しさん
2009/08/05(水) 07:27:17え?
そこでつっこむべきはisdigitのパラメータについてじゃないのか?
0639デフォルトの名無しさん
2009/08/05(水) 08:28:551じゃないって何が返るの?(真の時)
0640デフォルトの名無しさん
2009/08/05(水) 08:40:09そもそもおかしいのは、
>inta *= i;
これ。
intaは文字用の変数じゃないからisdigit(inta)はだいたい偽になって実行されないが、
'0'<=inta<='9'になったときに実行されてしまい無限ループになってしまうのが問題点。
0641デフォルトの名無しさん
2009/08/05(水) 08:59:34非0 であれば適合なのだから、その先は実装による。
グローバル変数で table[256] なテーブルが居て各文字の属性をビットパターンで保持
可視文字 (1<<0)
数値 (1<<1)
アルファベット小文字 (1<<2)
アルファベット大文字 (1<<3)
:
is〜 系は マスクの and で戻す ってな場合 そのマスク後の値が戻る (非0 なら適合してるからね
※ ASCII セットのみ限定の空間縛りをつければ、テーブル参照は都合よさそうだものなぁ
0643デフォルトの名無しさん
2009/08/05(水) 09:30:15素数かどうか確認するための除算の回数が数が大きくなるほどとんでもない回数に
膨れ上がっていくから。
0645デフォルトの名無しさん
2009/08/05(水) 10:38:58もう関係ないかもしれんが、仕様ではisdigitにはunsigned charの値(0〜255)およびEOFしか渡せない
その範囲外の値を渡した結果出たのがそのエラーと思われ
0646デフォルトの名無しさん
2009/08/05(水) 14:47:070647デフォルトの名無しさん
2009/08/05(水) 14:52:200648デフォルトの名無しさん
2009/08/05(水) 15:18:510650デフォルトの名無しさん
2009/08/05(水) 15:32:47Debug Assertionのメッセージが出ているじゃない。↓
Expression: (unsigned)(c + 1) <= 256
Releaseモードだとすっぽ抜けると思われる。
0652デフォルトの名無しさん
2009/08/05(水) 15:50:510653デフォルトの名無しさん
2009/08/05(水) 15:50:520654デフォルトの名無しさん
2009/08/05(水) 15:51:240を返すということ。
0655デフォルトの名無しさん
2009/08/05(水) 16:11:40windows VC6 で確認
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9883.c
0656デフォルトの名無しさん
2009/08/05(水) 16:26:23ちがうよ。
永久ループになるのは今回の主問題じゃない。
assertの直接の原因はisdigitのパラメータ不正。
0657601
2009/08/05(水) 16:32:23意味がわかりました。
とにかく今回の問題はisdigitの使い方だったんですね。
本屋で関数リファレンスかなんか買ってきて勉強しようと思います。
ありがとうございました。
0658655
2009/08/05(水) 16:46:48フルスクラッチで書いてみると意外に手間かかるな (所々 端折って0入れてるし…)
main だけで現張りきれなかったーよ
0659デフォルトの名無しさん
2009/08/05(水) 18:07:25を行いたいのですが、シリアルからのデータを取得する方法が分からずに困っています。
Visual Studio2005でコンパイル可能なサンプルなど有りませんでしょうか?
0660デフォルトの名無しさん
2009/08/05(水) 18:09:56VSといわれても
0661デフォルトの名無しさん
2009/08/05(水) 18:10:580662デフォルトの名無しさん
2009/08/05(水) 18:11:340663デフォルトの名無しさん
2009/08/05(水) 18:15:10VCで検索すれば良かったんですね。こんな事で質問してしまってお恥ずかしいです。
ありがとうございました。
0664デフォルトの名無しさん
2009/08/05(水) 18:41:37アルゴリズムの理解が苦しくてくじけそうです
0665デフォルトの名無しさん
2009/08/05(水) 18:42:380666デフォルトの名無しさん
2009/08/05(水) 19:08:030667デフォルトの名無しさん
2009/08/05(水) 22:37:55そのうち、任意の要素に書き込みをするときはどうすればいいのですか。
要素を定数で書けばアクセスは可能ですが柔軟性に欠けることと、
必ずそこに格納されるわけではないため、変数で制御しようとしたら今度は
「定数が必要」などとコンパイラに拒否されました。
どうすればいいのですか。
A[AI1][AI2][AI3][AI4][AI5][AI6]
こんな感じで変数をそれぞれ回してチェックし、
何も書かれず空いていればそこに書き込むようにしたいのですが
たとえば3要素目が空いているとして
scanf("10s", &A[AI1][AI2][AI3]);
などとしても入力を受け付けてくれません。
0668デフォルトの名無しさん
2009/08/05(水) 22:50:276次元配列の3次元目の配列が持つ要素の型は
型[AI4][AI5][AI6]となる。
もちろん、そんなものを書き込むのは無理であり
ゼロから勉強しなおしたほうがいいよ。
0669デフォルトの名無しさん
2009/08/05(水) 22:55:58char *A[6];
scanf("%s", A[2]);
でいいんじゃないの?
面倒だからメモリ確保すっぽかしたけれど…
0670デフォルトの名無しさん
2009/08/05(水) 23:05:48配列の宣言では要素数に変数を使えない。つまり以下はNGとなる。
int index = 6;
int array[index] = {0,};
配列の各要素にアクセスするときは変数で可。
int array[6] = {0,}, count, index = 6;
for(count=0; count < index; count++) {
if(array[index] == 0) {
scanf("%d", &array[index]);
}
}
つーか普通に要素が6個ある1次元配列だろ?多次元じゃなくて。
0672デフォルトの名無しさん
2009/08/06(木) 06:20:45どうしてもうまくいきません
BorlandとCPadを使ってます
#include <stdio.h>
int dtoi( double d );
void main(void)
{
double d ;
int bai ;
printf("小数の入力 ==> ");
scanf("%lf", &d);
bai = dtoi( d );
printf("%fを%d倍すれば小数点が消える\n", d, bai);
return ;
}
int dtoi( double d )
{
int bai ;
for( bai = 1 ; d * bai - (int)( d * bai ) > 0 ; bai *= 10 ){
printf("引かれる数 = %f\n", d * bai);
printf("引く数 = %d\n", (int)( d * bai ));
printf("差 = %f\n", d * bai - (int)( d * bai ));
}
return bai ;
}
お願いします
0673デフォルトの名無しさん
2009/08/06(木) 07:27:501/3は何桁ずらせば整数になるの?
0674デフォルトの名無しさん
2009/08/06(木) 07:52:150675デフォルトの名無しさん
2009/08/06(木) 09:45:410676デフォルトの名無しさん
2009/08/06(木) 09:46:37≒ 分数として戻せないの?
0677デフォルトの名無しさん
2009/08/06(木) 11:35:17コンピュータの内部では小数も2進数で扱われるから、
有限小数というのは 0.5、0.25、0.125 などに限られる
0.1 とか 1.3 とかは無限小数になる
2進数的に有限小数なら、そのプログラムのままで問題なく動作している
2進数的に無限小数の場合は対象外だから問題なし
でおk?
0678デフォルトの名無しさん
2009/08/06(木) 11:36:440679デフォルトの名無しさん
2009/08/06(木) 16:26:26どのプログラムで開くように変更すればいいか教えてください
0680デフォルトの名無しさん
2009/08/06(木) 16:28:28あなたが開きたいプログラムで開いてください><
0681デフォルトの名無しさん
2009/08/06(木) 16:31:45.cファイルを右クリックして、
プログラムから開くを選択。
XPの場合は、プログラムから開く
vistaの場合は、規定のプログラムを設定
をクリック。
そうするとプログラム一覧が現れるので、指定したいプログラムを選択。
この種類のファイルを開くときは、選択したプログラムをいつも使うっていう設定を有効にしたら、OKをクリック。
これでうまく行くと思うよ。
0682デフォルトの名無しさん
2009/08/06(木) 16:47:13>>681
とくに決まってないんですか?
開くプログラムを設定してから「.c」のファイルのプログラム実行がうまくいかなくなったんですが
0683デフォルトの名無しさん
2009/08/06(木) 16:50:090684デフォルトの名無しさん
2009/08/06(木) 16:55:37別に決まってないよ。
標準で設定されているものはいくつかあるけど、それは強制じゃないし、
さらに言うなら標準では.cを実行することはできない
0685デフォルトの名無しさん
2009/08/06(木) 16:56:55ありがとうございます
ほかの原因をさがしてみます
0686デフォルトの名無しさん
2009/08/06(木) 17:07:59>さらに言うなら標準では.cを実行することはできない
Cインタプリタに関連づければ、或いは…ッ!
0687672
2009/08/06(木) 17:32:03文字列として入力させ 小数点から¥0までの文字数を10の指数にしたいと思います
0688デフォルトの名無しさん
2009/08/06(木) 17:54:20んだから標準ではそうなってないからw
どうにか実行するならそうするもしくはバッチつくってそれに関連づけるかしかないよねww
0689デフォルトの名無しさん
2009/08/06(木) 18:06:44コンピュータに格納されている小数点数はすべて有限。
なのであるNに対して2^Nを掛ければ必ず整数になる
0690デフォルトの名無しさん
2009/08/06(木) 18:39:450691デフォルトの名無しさん
2009/08/06(木) 18:43:100692デフォルトの名無しさん
2009/08/06(木) 18:45:242進数で表現されてる限り大丈夫だろ?
分数表現なんかになったらあれだが・・・
0693デフォルトの名無しさん
2009/08/06(木) 18:47:18IEEE754では10進数の指数部を持つ表現も定義されているんだが。
0694デフォルトの名無しさん
2009/08/06(木) 18:51:24ぐふっ。それは失礼。お恥ずかしい限りで・・・
・・・でも指数部は関係なくね?
0695デフォルトの名無しさん
2009/08/06(木) 18:55:17浮動小数点演算に関して定義し直した新しい規格もある
0696691
2009/08/06(木) 19:10:17勉強不足でした
0697694
2009/08/06(木) 19:15:11俺が悪かった
0698デフォルトの名無しさん
2009/08/06(木) 19:42:102008年に改訂されたばかりなんだが……
0699デフォルトの名無しさん
2009/08/06(木) 21:59:53unsigned short int sib に2バイト文字列のデータを入れて
if(sib == 0x6f81) とすると判定できるけど
if(sib == '{') とキャラクタ判定だとすり抜けてしまいます。
人の目で理解しやすいキャラクタで判定するにはどうしたら
いいですか?
0700デフォルトの名無しさん
2009/08/06(木) 22:35:07if (sib == FULLWIDTH_LEFT_CURLY_BRACKET)
0701デフォルトの名無しさん
2009/08/06(木) 23:00:360702デフォルトの名無しさん
2009/08/06(木) 23:39:30このfor文の意味を教えてください
0703デフォルトの名無しさん
2009/08/06(木) 23:41:23そんなレベルの話をしてたらスレがいくつあっても足らん
0704デフォルトの名無しさん
2009/08/06(木) 23:46:400705デフォルトの名無しさん
2009/08/06(木) 23:47:38http://hooktail.org/computer/index.php?k-%BA%C7%B6%E1%CB%B5%B7%E8%C4%EA%C2%A7
ここのソースコードのfor文です
0706デフォルトの名無しさん
2009/08/06(木) 23:47:45while (i < k) {
/* 処理 */
i++;
}
と同じ意味。
0707デフォルトの名無しさん
2009/08/06(木) 23:47:52}
0708デフォルトの名無しさん
2009/08/07(金) 00:36:56dist[i] = -1.0;
indexcluster[i] = -1;
}
の、<についてだったらHTMLの実体参照について調べるといい
0709デフォルトの名無しさん
2009/08/07(金) 01:57:05if (sib == *(const unsigned short* const)"{")
{
}
0710デフォルトの名無しさん
2009/08/07(金) 02:29:320711デフォルトの名無しさん
2009/08/07(金) 02:31:440712デフォルトの名無しさん
2009/08/07(金) 09:06:260713デフォルトの名無しさん
2009/08/07(金) 10:17:07最初から1バイト単位で比較するべきだね
0714デフォルトの名無しさん
2009/08/07(金) 10:28:36unsigned short int なんかに入れるから…
0715デフォルトの名無しさん
2009/08/07(金) 10:58:31負の数が入ったらエラーを出すためっていう
意味合いも含まれてるんでしょうか?
また、intもlongも同じ4バイトの環境なんですが
これはどちらを使っても同じですよね?
0716デフォルトの名無しさん
2009/08/07(金) 11:02:50>負の数が入ったらエラーを出すためっていう
いいえ。
寧ろ、負の数が入っていないと言う前提として使うことはありますが。
0717デフォルトの名無しさん
2009/08/07(金) 11:17:280718デフォルトの名無しさん
2009/08/07(金) 11:22:030719デフォルトの名無しさん
2009/08/07(金) 11:25:170720デフォルトの名無しさん
2009/08/07(金) 11:41:59> unsigned intを使うのは
> 負の数が入ったらエラーを出すためっていう
聞く前に実験してみろ。
void foo(unsigned int num)
{numを出力}
でfooに1や10や-100を渡してどうなるか見てみれば?
エラーにはならないでしょう。
0721デフォルトの名無しさん
2009/08/07(金) 12:57:030722699
2009/08/08(土) 08:41:12出来ました。
特に709の人とエディアンの話振った人ありがとうございました。
0723デフォルトの名無しさん
2009/08/08(土) 13:23:20ただ単にbreakしただけではswitch文から抜けるだけで、ループを脱出できません。
このような場合、gotoを使うのが一般的なのでしょうか?
0724デフォルトの名無しさん
2009/08/08(土) 13:26:130725デフォルトの名無しさん
2009/08/08(土) 13:28:21その部分だけ別の関数にして、
returnで抜けるとか。
0726デフォルトの名無しさん
2009/08/08(土) 13:51:280727デフォルトの名無しさん
2009/08/08(土) 13:56:16マルチバイトの文字とそれぞれ比較するんだよな
それが「人の目で理解しやすいキャラクタで判定」に収まっただろうか
真っ当なのは、shortに格納することをやめて、strcmp(sid, "{")と書けるようにすることだと思うよ
0728デフォルトの名無しさん
2009/08/08(土) 15:31:420729デフォルトの名無しさん
2009/08/08(土) 15:39:010730723
2009/08/08(土) 15:39:080731デフォルトの名無しさん
2009/08/08(土) 21:14:06何かよくわかる例えみたいなもの教えていただけませんか?
0732デフォルトの名無しさん
2009/08/08(土) 21:16:140733デフォルトの名無しさん
2009/08/08(土) 21:24:23「*」の印で開封できる。
0734デフォルトの名無しさん
2009/08/08(土) 21:29:14意味不明なこと教えるな
>>731
まあプログラムや変数などはメモリのどこかに配置されるのでアドレスを持っています。
そのアドレスを格納する変数のことをポインタといいます。
0735デフォルトの名無しさん
2009/08/08(土) 21:29:27例えで学んでも結局は役立たないのだよ。
ポインタを理解出来ない人にプログラミングは無理なので、
どうか頑張って理解してください。
0737デフォルトの名無しさん
2009/08/08(土) 21:34:27%cだと1バイトだと扱われてしまいます。
2バイト文字の場合はどうすればいいのでしょうか?
0738デフォルトの名無しさん
2009/08/08(土) 21:39:53printf("%.2s", "こんにちは");
コピペしてね
0739699
2009/08/08(土) 23:32:29char buf[100]に1バイト文字と2バイト文字が混合している文字列から
ユニコードの文字をを判定(検索)する処理です。
判定するユニコードが何十種類もあるからキャラクタで判定希望。
(16進数は数値を調べたり意図しない結果の時数値をチェックする
手間がかかる)
unsigned はbuf[]から1バイト*2をコピーする時どちらか1つ
8ビット左シフトするからunsigned付けたら安心という判断です。
ただの横着でした。レスしてくれた方ありがとうございました。
0740デフォルトの名無しさん
2009/08/08(土) 23:41:01まず実体のファイルがあってそのショートカットを作ったらそれがポインタだと思えばいい。
ショートカットのショートカットはダブルポインタってことになる。
概念的にはこんな感じだけどプログラムに書くときにどう表現するかは参考書をひらいてくれ
0741デフォルトの名無しさん
2009/08/08(土) 23:46:44巨大ファイルはオープンするだけで時間かかる。
異常終了すると、ファイルにアクセスできなくなる。
wchar_tが使えない。
なんでなおさないのか?
0742デフォルトの名無しさん
2009/08/08(土) 23:47:38C言語標準じゃないよね?
0743デフォルトの名無しさん
2009/08/08(土) 23:49:01標準関数使おうとしたらオープンだけでしばらく待つ羽目に。
その上、鈍い。
0744デフォルトの名無しさん
2009/08/08(土) 23:51:200745デフォルトの名無しさん
2009/08/09(日) 00:06:241GBytes程度のファイルで試したけど、一瞬で開くし読み込みも時間かからなかったよ。
OSが足引っ張ってるんじゃない?
0746デフォルトの名無しさん
2009/08/09(日) 00:09:08言語を叩く前に環境とか書いてるコードを晒せよ
0747デフォルトの名無しさん
2009/08/09(日) 00:22:47BCC最新版を常用している。
基本性能で、VC2008、ICCに劣るのは認識しているが、使いやすいので使う。
0748デフォルトの名無しさん
2009/08/09(日) 00:24:59これはどう考えても、OSがアホだからだろ。
プロセス終了してるのに、使用してるリソース開放できないとか
どんだけ脆いOS使ってるんだよ。
0749デフォルトの名無しさん
2009/08/09(日) 02:37:260750デフォルトの名無しさん
2009/08/09(日) 03:18:210751デフォルトの名無しさん
2009/08/09(日) 06:42:13あとはしらん
0752デフォルトの名無しさん
2009/08/09(日) 15:37:18時間がかかるとかアクセスできないのは言語のせいじゃないだろ
そのコンパイラ作ったやつが無能なだけ
0753デフォルトの名無しさん
2009/08/09(日) 15:41:11は言語仕様とベンダーの実装の意味を
理解出来ていない物と考えられる。
0754デフォルトの名無しさん
2009/08/09(日) 15:48:510755デフォルトの名無しさん
2009/08/09(日) 15:51:390756デフォルトの名無しさん
2009/08/10(月) 09:51:29>fstreamなどC言語標準
こんだけでもう破綻してんだもの。
0757デフォルトの名無しさん
2009/08/10(月) 10:28:400758デフォルトの名無しさん
2009/08/10(月) 10:46:35>>1
0759デフォルトの名無しさん
2009/08/10(月) 11:05:54「ある程度」の範囲からは逸れてると思われ
成功事例もあれば失敗事例もまた多いし
0760デフォルトの名無しさん
2009/08/10(月) 11:12:08>・C++言語はスレ違いです。
だったのに、46スレ目を立てたアホが勝手に
>・C++言語はスレ違いですが、ある程度なら対応です。
に書き換えただけだからな。
スレを勃てるまでもないC/C++の質問はここで 12
http://pc12.2ch.net/test/read.cgi/tech/1248010352/
こんなスレもあるんだし、そろそろもとに戻したほうがいいな。
0761デフォルトの名無しさん
2009/08/10(月) 11:26:33Boostならまだしも
標準ライブラリはある程度に含まない
って、なんならある程度に含まれるんだ?
まあ次から元に戻すなら関係ないか。
0762デフォルトの名無しさん
2009/08/10(月) 11:33:19でいいんでね?
C99とC++とではどっちがC89に近いコードが書けるんだ?
0763デフォルトの名無しさん
2009/08/10(月) 11:34:45主題にするのはやめた方がいいでしょ。
0764デフォルトの名無しさん
2009/08/10(月) 11:36:42どっちが近いも何も、どっちもc89のコードは書けるよ。
まぁ、一部制限があるってだけのことで、その意味ではC++の方が制限が多い。
例えば、プロトタイプ宣言なしではC++ではエラーになるし、構造体タグの名前空間が独立していないし。
0765デフォルトの名無しさん
2009/08/10(月) 11:39:30Javaでは逆にそれが無い
0766デフォルトの名無しさん
2009/08/10(月) 11:42:35警告とエラーの区別はつけようね。
0767デフォルトの名無しさん
2009/08/10(月) 11:47:540768デフォルトの名無しさん
2009/08/10(月) 11:53:450769デフォルトの名無しさん
2009/08/10(月) 12:04:23Javaのばあいは、そのファイルで解決出来るか、カレントディレクトリ
に解決済みのclassファイルがある限り、未宣言項目の天下り的な
使用が出来るよね。太古のC処理系もそういうのは出来たらしいけど
最近はそれはタブーになってきてるみたい。
使用人口が増えて大規模なプログラムも書かれてコンパイラの処理
速度が早いことを要求されるようになったことが関係してるんじゃ
ないかと。
0770デフォルトの名無しさん
2009/08/10(月) 12:13:03理由は全く見当違いだよ。
c89以前のレガシーCでは仮引き数の宣言ができなかった。
だから、引き数の型は呼び出し側が保証する必要があった。
例えば、こんな感じ。
--
int main()
{
double sin();
printf("%g\n", sin((double)0));
return 0;
}
--
c89辺りからは仮引き数の宣言もできるようになったので提供側が保証できるようになった。
例えば、こんな感じ。
--
#include <math.h>
int main()
{
printf("%g\n", sin(0));
return 0;
}
--
でも相変わらずプロトタイプ宣言は必須ではないので、プロトタイプ宣言をうっかり忘れるとおかしなことになる。
従って、大抵のコンパイラは警告を出すことでプロトタイプ宣言を行なうことを示唆しているってこと。
0771デフォルトの名無しさん
2009/08/10(月) 12:26:36>c89以前のレガシーCでは仮引き数の宣言ができなかった。
んなアホなw
int func(x,y,z){
int x,y,z;
......
}
て感じのことが強制されてただけ
0772デフォルトの名無しさん
2009/08/10(月) 12:41:41それは定義。つーか、流れくらい読めよ。しかも、その例だと仮引き数の型がintだから省略可能だし。
0773デフォルトの名無しさん
2009/08/10(月) 13:17:01{
〜処理〜
}
{
}から抜け出す方法はありますか?break入れてもだめでした
0774デフォルトの名無しさん
2009/08/10(月) 13:18:03○から途中で抜け出す方法
0775デフォルトの名無しさん
2009/08/10(月) 13:19:56do{
〜処理〜
}while(0);
}
0776名無しさん
2009/08/10(月) 13:22:26int main(void)
{
int *u[3];
int a=3;
u[3]=&a;
u[0][0]=1;
return 0;
}
int *u[3];のポインタってどう使うんだ?
a は、intへのポインタの配列(要素数10)である。と書いてあるけど。
これだとエラーが出る。
0777デフォルトの名無しさん
2009/08/10(月) 13:25:16int *u[1];
なら使えるとでも言いたそうな口ぶりだな
0778デフォルトの名無しさん
2009/08/10(月) 13:25:33thx
0779デフォルトの名無しさん
2009/08/10(月) 13:25:55gotoで抜け出せる
0780デフォルトの名無しさん
2009/08/10(月) 13:28:02ロジックを見直す。
0781デフォルトの名無しさん
2009/08/10(月) 13:34:12u[3]に代入してるのにu[0]を参照してたらエラーも出るだろう
0782名無しさん
2009/08/10(月) 13:39:58#include <stdio.h>
int main(void)
{
int *u[2];
int a=3,i=4;
u[0]=&a;
printf("%d\n",**u);
u[1]=&i;
printf("%d\n",u[0][1]);
printf("%d\n",*u[1]);
return 0;
}
こうか、変数1個1個を入れられる 1個型へのポインタか
0783デフォルトの名無しさん
2009/08/10(月) 13:45:43>u[0]=&a;
単純変数を指してるだけのポインタで
>printf("%d\n",u[0][1]);
とか、もうね…
0784デフォルトの名無しさん
2009/08/10(月) 14:02:04*u[3]はu[0],u[1],u[2]までしかないぞ
u[3]に代入した時点で鼻から悪魔
0785デフォルトの名無しさん
2009/08/10(月) 14:07:03aとiは連続してメモリ上に並んでいるという保証はない
だからu[0][1]なんてやってはいけない
u[0][0]だけ許される
0786デフォルトの名無しさん
2009/08/10(月) 14:14:31void main() {
char *str[] = { "a", "b", "c", "d" };
test(str); ←格納されていない
}
どうしてだぁー;;
VC++ 無料版です。
0787デフォルトの名無しさん
2009/08/10(月) 14:17:08testの中身は?
0788デフォルトの名無しさん
2009/08/10(月) 14:17:16ほんとは格納されてるのにtest関数にバグがあって何も無い様に見えるに一票。
0789デフォルトの名無しさん
2009/08/10(月) 14:17:39意味が分かりません
ソースコードはそれで全てですか?
0790デフォルトの名無しさん
2009/08/10(月) 14:22:550791デフォルトの名無しさん
2009/08/10(月) 14:25:58で break してstrの中身を確認してみたのだが、中身がおかしいです。
デバッグモードです。
実はC++で、test の関数はクラスのコンストラクタでメンバに格納しているだけです。
オラに知識を分けてくれ。
0792デフォルトの名無しさん
2009/08/10(月) 14:27:49期待していないです。
クイックウォッチでstr[1]を見てみるとアドレスが確実におかしいです。
0793デフォルトの名無しさん
2009/08/10(月) 14:29:40スレ違い。
0794デフォルトの名無しさん
2009/08/10(月) 14:31:10まことに申し訳ありませんでした。
ちゃんと格納されていました。
リリースモードになっていました。
>>786 さんが正しかったです。
僕のレスを見た人ごめんなさい。
0795デフォルトの名無しさん
2009/08/10(月) 14:34:460796デフォルトの名無しさん
2009/08/10(月) 14:58:59全ては夏のせい
こういうカイキチが現れるのが夏
あらしのような夏
さっさと巣に帰れ夏厨
どこのコピペだよ
0797デフォルトの名無しさん
2009/08/10(月) 15:05:10あれ?u[3]に代入って鼻から悪魔なん?
u[4]なんかだとそうだろうけど、3は処理系定義じゃないの?
0798デフォルトの名無しさん
2009/08/10(月) 15:09:11u[3]のアドレスを得ることは許されるが、代入はできない。
0799デフォルトの名無しさん
2009/08/10(月) 15:17:190800デフォルトの名無しさん
2009/08/10(月) 15:17:33でも、悪魔は存在しません。
悪魔がいないことは証明できるが、ここでやるにはちょっとスペースが足りない。
0801デフォルトの名無しさん
2009/08/10(月) 15:29:54ありがとう。
0802デフォルトの名無しさん
2009/08/10(月) 16:17:280803このプログラム作ってください!( >_ < )
2009/08/11(火) 03:21:01(= 勝ち数 / ( 勝ち数 + 負け数) )を計算するプログラムである。
勝ち数、負け数に負の値が入力された場合は入力をやり直させ、
勝ち数+負け数が0 の場合は勝率計算が不能であることを表示する。
ただし、このプログラムはバグを含んでおり正しく動作しない。
デバックを行って正常動作するようにせよ。
修正したソースプログラムと実行結果を示すこと。
0804デフォルトの名無しさん
2009/08/11(火) 03:22:38C/C++の宿題片付けます 129代目
http://pc12.2ch.net/test/read.cgi/tech/1247438792/
0805デフォルトの名無しさん
2009/08/11(火) 12:36:35携帯からじゃコード書き込むのも一苦労だぜ
0806デフォルトの名無しさん
2009/08/11(火) 12:39:39携帯内でコピペって出来ないの?
0807デフォルトの名無しさん
2009/08/11(火) 13:04:36codepad
ttp://codepad.org/
に貼ってみれば?
0808デフォルトの名無しさん
2009/08/11(火) 14:28:140809デフォルトの名無しさん
2009/08/11(火) 20:59:30Cの話題の延長とも捉えられるし、大規模アプリ開発が絡むとオブジェクト指向の技法は必須になってくるし、ということで
今やC++まったく知らんって人は実はCも知らん、俺に聞けなんて
言えるレベルじゃない人だと思ってもおkだと思いまつ
0810デフォルトの名無しさん
2009/08/11(火) 21:07:53へー、そーなのかー
でも C++ スレがあるからそこへ誘導するといいよ
0811デフォルトの名無しさん
2009/08/11(火) 21:32:290812デフォルトの名無しさん
2009/08/11(火) 22:33:38C/C++として扱うか、C++/Javaとして扱うかに分かれてるんじゃ?
純粋にCだけ取り扱うというのはCしか許されない
カーネルコード扱う場合とかで、かなり特殊で専門的で
入門者向けの世界とは離れてるんじゃないかと
アプリケーションで使用される基本的なアルゴリズムや
プログラムフローの書き方とかを重視する場合はC/C++という
文脈で、
既存のライブラリと如何に巧く組み合わせて比較的大きな
アプリケーションを崩すことなく能率的に書いていけるか
という方向性を重視する場合はC++/Javaという文脈で
語られることが多い感じ
0813デフォルトの名無しさん
2009/08/11(火) 22:58:24C++の話題は初心者に優しいスレに誘導してあげればおk
0814デフォルトの名無しさん
2009/08/11(火) 23:34:510815デフォルトの名無しさん
2009/08/11(火) 23:47:030816デフォルトの名無しさん
2009/08/11(火) 23:56:460817デフォルトの名無しさん
2009/08/12(水) 07:32:20のかオレは間違いなく悩む。
●スレを勃てるまでもないC/C++の質問はここで 12
●C言語なら俺に聞け(入門篇) Part 51
●【初心者歓迎】C/C++室 Ver.67【環境依存OK】
●【初心者お断り】ガチ規格準拠C専用スレ Part134
0818デフォルトの名無しさん
2009/08/12(水) 07:46:01特にC/C++と分ける必要もない一般的な質問、C++の質問が多い
●C言語なら俺に聞け(入門篇)
C言語のありとあらゆる質問
●【初心者歓迎】C/C++室【環境依存OK】
環境依存と思われるバグが発生した場合、その環境に精通している人を必要とする質問
●【初心者お断り】ガチ規格準拠C専用スレ
規格書を引用して回答してほしい質問
0819デフォルトの名無しさん
2009/08/12(水) 10:41:23いう立場からは
【標準質問スレ】
☆スレを勃てるまでもないC/C++の質問はここで
一般的な質問スレ(C/C++使いでない人が使わざるを得ない
状況があり得ることを前提)
【本格質問スレ】
☆C言語なら俺に聞け(入門篇)
本格的にC/C++を勉強しようとしている人向けのスレ
【クイックヘルプスレ】
☆【初心者歓迎】C/C++室【環境依存OK】
具体的なコンパイル/テスト作業中のトラブル、問題、疑問、質問に
単刀直入に答えるスレ
【文法スレ】
☆【初心者お断り】ガチ規格準拠C専用スレ
C文法/C++文法の隠された問題点、矛盾点、あいまい点を色々
議論するスレ
こんな感じじゃないか?
0820デフォルトの名無しさん
2009/08/12(水) 11:01:210821デフォルトの名無しさん
2009/08/12(水) 13:49:43こんなスレがPart134まで行ったのか
0822デフォルトの名無しさん
2009/08/12(水) 13:52:55【丸投げスレ】
☆C/C++の宿題片付けます
0823デフォルトの名無しさん
2009/08/12(水) 14:03:32元々は、「C言語なら俺に聞け」だったと思う。要は、初心者スレや環境依存スレが分離していった残り。
0824デフォルトの名無しさん
2009/08/12(水) 16:28:28現在のスレ名に変更(基地外も反対しなかったはず)した。
無事、過疎化して質問者もろとも基地外消滅という流れだったと思っている。
全部俺のいい加減な記憶だから当てにするなよ。
0825デフォルトの名無しさん
2009/08/12(水) 16:30:15概ねそうなんだが
それをキチガイ呼ばわりするお前もどうかと思うな。
0826デフォルトの名無しさん
2009/08/12(水) 17:01:12ああ、気に障ったらすまない。
確かに、暴れていたと言えるのは最後のごく一時期だけだったしな。
0827デフォルトの名無しさん
2009/08/12(水) 17:13:37環境依存とかAPIの質問をして指摘されたヤツが逆切れしてたと見てるよ。
実際、言語仕様に含まれる質問にケチつけてるのを何回か見たし。
0828デフォルトの名無しさん
2009/08/12(水) 22:25:30一本化しないかなあと思っているんだけど。
0829デフォルトの名無しさん
2009/08/12(水) 22:31:51言語の人気的には当然のことだと思っているからいいんだけど。
ただマルチポスト野郎が出て来るのが許し難い。
0830デフォルトの名無しさん
2009/08/12(水) 23:23:54とりあえずテンプレから↑を消そうよ。C++専用スレがあることだし。
0831デフォルトの名無しさん
2009/08/12(水) 23:30:110832デフォルトの名無しさん
2009/08/12(水) 23:41:14C++固有の話題はC++スレで。このスレで聞かれても答えられるとは
限りません。(100%答えられないというわけでもありません)
↑こんなところだろ
0833デフォルトの名無しさん
2009/08/12(水) 23:41:28C++で許されてもCでは許されない書き方なんていっぱいあるじゃん。明確に別の処理系だよ。
0834デフォルトの名無しさん
2009/08/12(水) 23:51:350835デフォルトの名無しさん
2009/08/12(水) 23:51:59どうせ質問する人間はそんなのお構いなしにやって来るから、
どうせガチガチに縛っても守られない結果になる。
0836デフォルトの名無しさん
2009/08/13(木) 00:00:16完全じゃないよ
所々に非上位互換性がある
0837デフォルトの名無しさん
2009/08/13(木) 00:02:050838デフォルトの名無しさん
2009/08/13(木) 00:06:25C++スレに池というレスで埋め尽くされかねない件
0839デフォルトの名無しさん
2009/08/13(木) 00:13:08大抵.CPPでコンパイルしてるし
0840デフォルトの名無しさん
2009/08/13(木) 00:15:01何故ならばC規格ではC++だけに存在する書き方は当然許されないし、文法的に完全なエラーになるんだから。
C++の質問が来ても、ここがCスレである以上「そんな書き方はCに存在しない」としか答えられないだろう。
0841デフォルトの名無しさん
2009/08/13(木) 00:20:100842デフォルトの名無しさん
2009/08/13(木) 00:43:38苦境に陥っている人も多いと思われ。そういう人達を救ってあげられる
のならそれはそれなりに有意義かと。.cでコンパイル成功したソース
を.cppにリネームさせればC++コードになるからねw
0843デフォルトの名無しさん
2009/08/13(木) 00:44:240844デフォルトの名無しさん
2009/08/13(木) 00:50:050845デフォルトの名無しさん
2009/08/13(木) 00:51:09じゃあ何をすればいいのさw
0846デフォルトの名無しさん
2009/08/13(木) 12:01:21クロスポストができたらいいのですけれどもね。昔のfjの話でごめんなさい。
0847デフォルトの名無しさん
2009/08/13(木) 15:30:54速度必要なとこだけCで、あとはC#で楽しますw
0848デフォルトの名無しさん
2009/08/13(木) 15:33:480849デフォルトの名無しさん
2009/08/13(木) 15:52:370850デフォルトの名無しさん
2009/08/13(木) 15:54:13C++で速度出せない人はCでもダメ
0851名無しさん
2009/08/13(木) 16:33:390852デフォルトの名無しさん
2009/08/13(木) 16:35:29C++卒業じゃなくて逃げるだけだろw
一度C#の楽さを覚えると二度とC++に帰ってこれないぞ
0853デフォルトの名無しさん
2009/08/13(木) 16:48:520854デフォルトの名無しさん
2009/08/13(木) 16:54:11インタープリタ言語並に楽?
VC++とVBは状況によって使い分けてるけど
(VJ++があったころはそれも)
VC#だけは一度も起動してへんわ。
0855デフォルトの名無しさん
2009/08/13(木) 16:57:28超^2楽だよ
ライブラリがすごく充実している
GCが付属でメモリリークとは無縁
JITコンパイラでJavaよりも遥かに速い実行速度
GUIプログラムがポトペタで組める
などなどC++プログラマの夢が叶えられている
しかし贅沢な実行環境を必要とする(特にメモリ)なので
富豪的プログラミングと言えるかも
0856デフォルトの名無しさん
2009/08/13(木) 18:21:48D言語とどっちがいいのかな
0857デフォルトの名無しさん
2009/08/13(木) 18:25:37それにいつまで経ってもβなので所詮趣味にしか使えん
C#は案件あるぞ
0858デフォルトの名無しさん
2009/08/13(木) 18:32:300859デフォルトの名無しさん
2009/08/13(木) 18:34:160860デフォルトの名無しさん
2009/08/13(木) 18:34:20ひっしだな
0861デフォルトの名無しさん
2009/08/13(木) 18:42:21入力やテキストから固定フォーマットのバイナリデータ作成したり
データを可視化して修正したり
みたいなことをGUIでやりたい
0862デフォルトの名無しさん
2009/08/13(木) 18:45:44いいんじゃない
C#でもVB.NETでも割と楽に作れる
0863デフォルトの名無しさん
2009/08/13(木) 18:47:54このスレで聞くってことは、C言語で作ればいいじゃん。
0864デフォルトの名無しさん
2009/08/13(木) 18:49:27ちゃんと用意されている当たりがいいよな
0865デフォルトの名無しさん
2009/08/13(木) 18:51:460866デフォルトの名無しさん
2009/08/13(木) 19:08:510867デフォルトの名無しさん
2009/08/13(木) 19:19:11いろんな人が選びます
0868デフォルトの名無しさん
2009/08/13(木) 19:57:12//処理
}
このように書いた所、10回だけではなく、永遠に処理が行われてしまいます
どうも根本的に勘違いをしている気がするのですが、なぜでしょうか?
for分の中身は完全にこぴぺしました
0869デフォルトの名無しさん
2009/08/13(木) 19:58:15i に何か代入してるんじゃないの?
0870デフォルトの名無しさん
2009/08/13(木) 20:04:24お騒がせしました
>>869ありがとうございました
0871デフォルトの名無しさん
2009/08/13(木) 23:28:16char buf[64];
char *str = "data.txt";
sprintf(buf, "notepad.exe %s", str);
system(buf);
素人考えだけど、こんな感じでテキストファイルにデータを書き込んで保存。
その保存したデータをプログラムの中でバイナリデータに変換とかじゃダメなのかなあ。
0872デフォルトの名無しさん
2009/08/14(金) 00:09:23たとえばRPGのマップチップを並べるようなの
0873デフォルトの名無しさん
2009/08/14(金) 00:12:440874デフォルトの名無しさん
2009/08/14(金) 00:14:55エクセルでお手軽にできるならそれでいいと思う
0875デフォルトの名無しさん
2009/08/14(金) 06:28:49配列と文字列とポインタって章で、ポインタ+数字をすると型の容量分だけ変化するから数字を一つ足せば文字列が一つ動くと書いてあって
感覚的にいまいちつかめなかったから適当に一つ組んでみたのだが
コンパイルは通ったがどれもアスキーコードがずれて文字化けしてしまうみたいなんだ。多分エラーか初歩的ミスがあるんだろうが自分じゃいまいちよく分からない。何か解釈が間違っていたのだろうか
int i;
char *a="もみむめも";
for(i=0;i<5;i++)
printf("%c\n",*(a+i));
for(i=0;i<5;i++)
printf("%c\n",a[i]);
printf("%c\n",*(a+1));
printf("%c\n",*(a+2));
printf("%c\n",*(a+3));
printf("%c\n",*(a+4));
printf("%c\n",*(a+5));
return 0;
0876デフォルトの名無しさん
2009/08/14(金) 06:44:250877デフォルトの名無しさん
2009/08/14(金) 06:59:35まず
char *a="もみむめも";
これを
char *a="abcde";
とでもやってみろ
0878デフォルトの名無しさん
2009/08/14(金) 07:12:45ちょっと生き恥過ぎて泣きたくなってきました。何やってんの俺・・・
0879デフォルトの名無しさん
2009/08/14(金) 08:12:100880877
2009/08/14(金) 08:14:300881デフォルトの名無しさん
2009/08/14(金) 08:28:59こっちのほうが気になる。
0882デフォルトの名無しさん
2009/08/14(金) 08:33:34>printf("%c\n",*(a+2));
>printf("%c\n",*(a+3));
>printf("%c\n",*(a+4));
>printf("%c\n",*(a+5));
このコードだと
char *a="abcde";
にしたとしてもaが表示されないだろ
0883デフォルトの名無しさん
2009/08/14(金) 08:35:04それ以前に猫は古すぎるからなあ
0884デフォルトの名無しさん
2009/08/14(金) 08:47:44やつはなんとかしてほしい。
0885デフォルトの名無しさん
2009/08/14(金) 09:20:15昔必死で読んでたのが懐かしいぜ。
改訂とかしてないのけ?
0886デフォルトの名無しさん
2009/08/14(金) 09:27:58でも猫本のCなら普通なんじゃないの?読んでないけどさ。
Cなんて既にほとんど大きな変更は無いんだから。
0887デフォルトの名無しさん
2009/08/14(金) 09:29:33ないのは事実なんだけどアライメントの厳しいプロセッサが増えた環境で
それに対応してないコードが残ってた記憶があるんだが・・・
0888デフォルトの名無しさん
2009/08/14(金) 10:00:10よほど神経がずぶといのか、それともキ(ry
0889デフォルトの名無しさん
2009/08/14(金) 10:07:370890デフォルトの名無しさん
2009/08/14(金) 10:09:44その手はそんな内容で金取るのかよって内容だけどなw
0891デフォルトの名無しさん
2009/08/14(金) 11:25:290892デフォルトの名無しさん
2009/08/14(金) 12:08:05明瞭性と効率性と論理性が調和した良いコードが出来る
可能性があることが最近わかってきた。
C#で書くと、どうもVBで書き直したくなってくるのは
C#とJavaが似ていて本質的に異質な言語であることを
示しているのではないかと...
以上チラ裏
0893デフォルトの名無しさん
2009/08/14(金) 12:20:35に多いに参考になると思う
0894デフォルトの名無しさん
2009/08/14(金) 12:42:380895デフォルトの名無しさん
2009/08/14(金) 14:56:050896デフォルトの名無しさん
2009/08/14(金) 15:02:120897デフォルトの名無しさん
2009/08/14(金) 16:27:24のパラダイムの相違を知ることは重要
0898デフォルトの名無しさん
2009/08/14(金) 17:13:160899デフォルトの名無しさん
2009/08/14(金) 17:15:53俺に聞けスレでしたね。
0900デフォルトの名無しさん
2009/08/14(金) 20:13:12トップダウン・ボトムアップの両方向から書いていって、中間部分でぐだぐだになるのを防げますか?
0901デフォルトの名無しさん
2009/08/14(金) 21:30:10同じプログラムでも何度も書くうちに洗練されていくのはよくあること。
0902デフォルトの名無しさん
2009/08/14(金) 21:47:04最初にCで書いて何とか動かしたコード(とても新しい
機能拡張や仕様変更など出来る状態ではない)を
一旦Javaで書いてみるとすっきりとしたコードになっ
て(機能拡張や仕様変更の余裕すら出て)くる。
(但しデザパタとかの素養は多少居るかも。)
しかし実行速度はVM上のパフォーマンスであることを
差し引いてもやはり遅い。
その後C++で高速化を図り、最終的にC(出来る限りC++
の文法を使わない)でもう一度書いてみると不思議や不思
議、当初よりもずっとわかりやすく余裕があり安定してお
り、早いコードになっている。
更にコードに手を入れてから、もう一度同じプロセスを
実行する。以下繰り返し。
このプロセスは洗練ではなく多分進化プロセスに近い
ものだと思う。この方法に弊害もあるのかも知れないが
今となっては純粋にCだけで成長させていくのは
不可能ではないにしろ難しい割に迂遠で非効率であるこ
とは確か。
0903デフォルトの名無しさん
2009/08/14(金) 22:06:430904デフォルトの名無しさん
2009/08/14(金) 22:08:02>迂遠で非効率
お前が言うなwww
0905デフォルトの名無しさん
2009/08/14(金) 22:08:280906デフォルトの名無しさん
2009/08/14(金) 22:18:470907デフォルトの名無しさん
2009/08/14(金) 22:26:21JavaでGCまかせに書くとC/C++に直すとき辛い
0908デフォルトの名無しさん
2009/08/14(金) 22:50:14三行で。
しかもチラシの裏に書いてくれると助かる。
0909デフォルトの名無しさん
2009/08/14(金) 22:56:12情報量を落とさずに3行で>>902をまとめられる?
0910デフォルトの名無しさん
2009/08/14(金) 22:57:30なんか遅いから今度はC++で書いてみたけど、
やっぱりCが一番良い気がしたからCで書き直しちゃった。
0911デフォルトの名無しさん
2009/08/14(金) 22:57:53scrap
and
build
0912デフォルトの名無しさん
2009/08/14(金) 23:02:17つまり「書くな」って意味だろ。
0913デフォルトの名無しさん
2009/08/14(金) 23:04:21”Cは最強”
ってことだな。
0914デフォルトの名無しさん
2009/08/14(金) 23:27:380915デフォルトの名無しさん
2009/08/14(金) 23:39:57WINDOWSなんかもC言語で書かれてるらしいし
0916デフォルトの名無しさん
2009/08/15(土) 00:00:500917デフォルトの名無しさん
2009/08/15(土) 00:04:46わけでもないと思う(断定出来ないけど)
0918デフォルトの名無しさん
2009/08/15(土) 00:08:34とかあり得ると思うし、実際やると思う。逆コンパイル
防止やパフォーマンスチューニングの為に。
だから実際のところどんな言語で最初に書かれてたなん
て詮索するのは無意味じゃないかと
0919デフォルトの名無しさん
2009/08/15(土) 00:12:27知人の開発者が言ってたから間違いない
0920デフォルトの名無しさん
2009/08/15(土) 00:14:070921デフォルトの名無しさん
2009/08/15(土) 00:17:290922デフォルトの名無しさん
2009/08/15(土) 00:20:27何で?って聞いても理由は教えてくれなかった
0923デフォルトの名無しさん
2009/08/15(土) 00:24:59闘うプログラマーによれば、CとC++とアセンブラだったような。
0924デフォルトの名無しさん
2009/08/15(土) 00:25:520925デフォルトの名無しさん
2009/08/15(土) 00:27:080926デフォルトの名無しさん
2009/08/15(土) 00:29:130927デフォルトの名無しさん
2009/08/15(土) 00:29:35担当箇所について書かなければばれないだろ
関わってる人数多そうだし
開発言語が何かというのはメインじゃなくても知ることは可能だろうし
0928デフォルトの名無しさん
2009/08/15(土) 00:30:49寝ろよ
0929デフォルトの名無しさん
2009/08/15(土) 01:00:08自作したほうがいいでしょうか?
仕事で使えない場合があるので。
0930デフォルトの名無しさん
2009/08/15(土) 01:06:360931デフォルトの名無しさん
2009/08/15(土) 01:12:190932デフォルトの名無しさん
2009/08/15(土) 04:13:30仕事で使えない場合なら自作したほうがよいでしょう
0933デフォルトの名無しさん
2009/08/15(土) 05:33:390934デフォルトの名無しさん
2009/08/15(土) 20:58:58文はなんと呼べばいいでしょうか?
0935934
2009/08/15(土) 21:08:480936デフォルトの名無しさん
2009/08/15(土) 21:35:30char a1;
scanf("%c",&a1);
printf("a1+32=%c\n",a1+32);
と、まずは英字の大文字を小文字に変換するのを作ってみたんだが文字列にしようとして配列にすると +32 がアスキーコードじゃなく配列をいじってしまうんだ
""でくくってみたり色々試してみたがどうにもよく分からない。変数を別途に32個くらい用意してswitch文で制御するようにすれば出来ない事も無いと思うんだがもう少しスマートなやり方は無いんだろうか
0937デフォルトの名無しさん
2009/08/15(土) 21:40:59> 文字列にしようとして配列にすると
そのソースを書きなさいよ
0938デフォルトの名無しさん
2009/08/15(土) 21:46:56codepad
ttp://codepad.org/
に貼って実行してみてください。
個人情報が含まれないように気をつけて。
0939デフォルトの名無しさん
2009/08/15(土) 21:52:390940デフォルトの名無しさん
2009/08/15(土) 22:10:010941デフォルトの名無しさん
2009/08/15(土) 22:44:14#include<stdio.h>
#include<string.h>
int main(){
int i,a1;
char a2[32];
printf("英字を入力してください。\n");
gets(a2);
a1=strlen(a2);
printf("それを小文字にすると\n");
for(i=0;i<a1;i++)
printf("%c",a2[i]+32);
printf("です。");
return 0;
}
・・・・・>>937様ありがとうございます
0942デフォルトの名無しさん
2009/08/15(土) 22:48:540943デフォルトの名無しさん
2009/08/15(土) 22:55:42printf("%c",a2[i]+32);
が必ず小文字になる保障はないからね。
C++ならちゃんとロケールを設定して
ctype::tolowerを呼び出すべき。
0944デフォルトの名無しさん
2009/08/16(日) 00:01:330945デフォルトの名無しさん
2009/08/16(日) 01:21:03その条件にintで定義された変数を使っている場合
scanfで数値を読み込ませたいのに、アルファベットなどの文字が入力されてしまうと
無限ループしてしまいます
次のループがきても文字が入った物は文字が入ったままになっていて
何故かscanfをすり抜けてしまうのです
デバッグをしてみても分かりませんでした・・
どなたか解決策を教えていただけないでしょうか
0946デフォルトの名無しさん
2009/08/16(日) 01:31:00ゴミが入っている場合は読み捨てる
0947デフォルトの名無しさん
2009/08/16(日) 01:31:04文字が入力されると、scanfはそれを読もうとしないから、入力に残ったまま
文字が入力に残ったままなので、次のときもscanfはそれを読み込めない
永遠に文字が入力に残ったまま、永遠にscanfはそれを読み込めない
scanfは読み込みに成功した値の個数を戻り値として返すから、
scanfの戻り値を調べれば読み込めたか読み込めなかったか判る
0948デフォルトの名無しさん
2009/08/16(日) 08:05:210949デフォルトの名無しさん
2009/08/16(日) 08:22:460950デフォルトの名無しさん
2009/08/16(日) 08:47:050951デフォルトの名無しさん
2009/08/16(日) 09:01:040952デフォルトの名無しさん
2009/08/16(日) 09:39:34GUI主流で、コマンドラインツールはパイプ等での使用を考慮したものが一般的な現状では
コマンドラインからユーザー入力を受け取るという機会自体、滅多に無い。
sscanfなら結構使う/使われているだろうし
fscanfもそれなりには使われていると思うけど。
0953デフォルトの名無しさん
2009/08/16(日) 11:13:28自作ライブラリのデバッグ用くらいやね。
そんなツールにいちいち面倒なエラー処理のコーディングなんてせんよ。
0954デフォルトの名無しさん
2009/08/16(日) 11:38:250955デフォルトの名無しさん
2009/08/16(日) 16:28:42画処理とか使い捨てだけど計算量がデカイやつぐらい?
0956デフォルトの名無しさん
2009/08/16(日) 16:30:16windowsでGUIが関係するとC/C++は今となっては使いにくいな
C#ならVB6.0の代わりに使える気軽さがある
0957デフォルトの名無しさん
2009/08/16(日) 16:36:43使い捨てはLL使っちゃうよな
GUIだと確かにC#は抜群に使いやすいな
なんかネイティブコードとかややこしいけど、ちょっとしたツールなら関係ない品
0958デフォルトの名無しさん
2009/08/16(日) 16:42:09C#を出すまでもない。C#は中途半端。
早くするのか便利にするのかどっちかにしろって感じ。
Javaみたいに可搬性があるならいいけど
C#はほとんどWindows限定で、覚えるだけ無意味だし。
0959デフォルトの名無しさん
2009/08/16(日) 16:43:22いやいやVB6.0は持ってない人もいるし開発ツールその物が古いところもあるしね
0960953
2009/08/16(日) 16:44:09それだけのためにC#覚えるならVBA使うわな。
>>955
VB系だとバイナリファイル弄りとかが滅茶苦茶
めんどくさそうなイメージがある。文字列の扱いとか。
0961デフォルトの名無しさん
2009/08/16(日) 16:52:580962デフォルトの名無しさん
2009/08/16(日) 16:57:460963デフォルトの名無しさん
2009/08/16(日) 17:17:41ちょっとしたツールのためにVB勉強するのは面倒だし。
0964デフォルトの名無しさん
2009/08/16(日) 17:22:35C#を新しく勉強するくらいならJava勉強しといたほうがまだ未来がある。
0965デフォルトの名無しさん
2009/08/16(日) 17:31:16Java厨もC++厨もC厨も、
なぜかそこは意見が一致する。
0966デフォルトの名無しさん
2009/08/16(日) 17:33:19C++とかJavaやってれば、C#なんて勘で使える。
0967デフォルトの名無しさん
2009/08/16(日) 17:34:220968デフォルトの名無しさん
2009/08/16(日) 17:34:32それは君の周辺だけだと思われ。
0969デフォルトの名無しさん
2009/08/16(日) 17:35:18C++は複雑すぎる
Cは古すぎて時代に合わない
Javaはコンシューマで動かない
Dはいつまでたってもベータバージョン
PHP、Perl、rubyは所詮スクリプト
flashはオナニーしすぎで枯れはじめてる
VBはいつまでたっても負んぶに抱っこで成長しない
0970デフォルトの名無しさん
2009/08/16(日) 17:37:12flashだけ異質じゃねーか
0971デフォルトの名無しさん
2009/08/16(日) 17:39:04天才しかまともに活用できないという恐ろしい怪物である。
0972デフォルトの名無しさん
2009/08/16(日) 17:39:40ただのECMAスクリプトじゃん。
0973デフォルトの名無しさん
2009/08/16(日) 17:43:38例えば、Javaの構文でポリモーフィズムさせようとすると
C++ではスライシング起きちゃうぞ?
C++で許される派生クラスでの冗長なvirtualキーワードは
C#ではメソッドを隠蔽しちゃうぞ?
細かい文法の違いがえらい大きな落とし穴になっている例でしゅる。
0974デフォルトの名無しさん
2009/08/16(日) 17:46:090975デフォルトの名無しさん
2009/08/16(日) 17:50:49現在、複数の韓国IPより2chが攻撃を受けています。
その為、下記スレにて作戦本部を設営しています。
数多くの人たちの力が必要です。
今こそ2chの力を結集しましょう!!
http://yutori.2ch.net/test/read.cgi/news4viptasu/1250405690/
(避難所)http://ex14.vip2ch.com/test/read.cgi/news4vip/1250388917/
★只今避難所乱立で混乱しております★
一応正規のVIP避難所なんでこちらでお願いします。
■作戦隊長
自動保守 ◆AOIMAD.NZM
(現在酉割れで偽者が発生しています。注意。)
■攻撃方法
・Apache砲またはハイピン砲(当スレで入手)
※田代砲の使用は厳禁!!
(田代砲よりもApache砲の方が高威力です)
■現状
反撃してみたものの小規模すぎて重くなっただけ
コミケと帰省で慢性的な人員不足
現在は砲弾作成中。各員アパッチの準備中
開始時刻は人が集まり&指揮官が帰り次第決定
■□■□■□■□■□■□■□■□
0976デフォルトの名無しさん
2009/08/16(日) 17:50:58なんで言語を引き合いに出すとどっちが優れてるか
っていう話に持っていく馬鹿が多いんだろな。
0977デフォルトの名無しさん
2009/08/16(日) 17:53:57C#はWindows限定で速度も遅くもメモリもバカぐいする上に
VBよりも学ぶのは面倒、Javaの劣化コピーだから
学ぶだけ無意味
って言ってるだけで。
0978デフォルトの名無しさん
2009/08/16(日) 17:58:190979デフォルトの名無しさん
2009/08/16(日) 17:58:56そういう話に持っていくんだよ、って話。
0980デフォルトの名無しさん
2009/08/16(日) 18:03:130981デフォルトの名無しさん
2009/08/16(日) 18:06:04何の意味があるんだ?
0982デフォルトの名無しさん
2009/08/16(日) 18:06:38もっぱらExcelVBAとかJScriptです
0983デフォルトの名無しさん
2009/08/16(日) 18:20:23スレが埋まってきたな。
次スレは立てる必要はないよな、不要だろ?このスレ。
0984デフォルトの名無しさん
2009/08/16(日) 18:22:560985デフォルトの名無しさん
2009/08/16(日) 18:34:160986デフォルトの名無しさん
2009/08/16(日) 18:35:25今は後悔している。
0987デフォルトの名無しさん
2009/08/16(日) 18:51:03C言語で変数宣言する場合、
グローバル変数の宣言は、全ての関数定義の前
ローカル変数の宣言は、関数定義中の一番最初
でなければならない、という認識で合っているでしょうか?
もしそうだとすれば、グローバル変数はともかくとして、ローカル変数が途中で定義できないのはソースがとても見辛くなってしまいそうです。
0988デフォルトの名無しさん
2009/08/16(日) 18:53:57イメージがつかめないけど・・・
ちなみに
関数の外に書けばソースのどこに配置されていうようがグローバル扱いですよ
ただ最初に利用する関数の前にないとあれですが
0989デフォルトの名無しさん
2009/08/16(日) 18:57:05C言語自体もバージョンアップしてて、C99という規格ならローカル変数を関数の途中で宣言してもおk。
実際に試してみて、駄目だったらC99に対応してないコンパイラってことで。
0990デフォルトの名無しさん
2009/08/16(日) 18:57:32int g_int; //ここでも
void hoge_a(int nanika)
{
}
int g_int; //ここでも
void hoge_b(int nanika)
{
if(g_int ....) .... //g_intをはじめて使う
}
void main()
{
}
0991デフォルトの名無しさん
2009/08/16(日) 19:03:25scanf("%d", &ch);
これで初めてブルーバック体験したお/(^O^)\ナンテコッタイ
scanfこわすぎだおw
0992デフォルトの名無しさん
2009/08/16(日) 19:03:46現在、複数の韓国IPより2chが攻撃を受けています。
その為、下記スレにて作戦本部を設営しています。
数多くの人たちの力が必要です。
今こそ2chの力を結集しましょう!!
http://yutori.2ch.net/test/read.cgi/news4viptasu/1250405690/
(避難所)http://ex14.vip2ch.com/test/read.cgi/news4vip/1250388917/
★只今避難所乱立で混乱しております★
一応正規のVIP避難所なんでこちらでお願いします。
■作戦隊長
自動保守 ◆AOIMAD.NZM
(今回はネトラジで指示するらしい)
■攻撃方法
・Apache砲またはハイピン砲(当スレで入手)
※田代砲の使用は厳禁!!
(田代砲よりもApache砲の方が高威力です)
■現状
反撃してみたものの小規模すぎて重くなっただけ
コミケと帰省で慢性的な人員不足
現在は砲弾作成中。各員アパッチの準備中
開始時刻は人が集まり&指揮官が帰り次第決定
■□■□■□■□■□■□■□■□
0993デフォルトの名無しさん
2009/08/16(日) 19:04:32ちがw
お前が悪いんだろw
0994デフォルトの名無しさん
2009/08/16(日) 19:05:41ありがとうございます。曖昧な質問ですいません。
C99という規格ははじめて知りました。C言語はANCI-Cからフリーズしてるって職場の先輩に聞いたけど違ったんですね。。
ANSI-Cでは、グローバル変数はどこでも宣言可能、ローカル変数は関数定義の途中では宣言不可能。
C99になって仕様変更されて、グローバル変数もローカル変数もどこでも宣言可能になった。
ということでしょうか?
0995デフォルトの名無しさん
2009/08/16(日) 19:13:400996デフォルトの名無しさん
2009/08/16(日) 19:13:40int i;
char ch;
scanf("%d", &i);
ch = i;
整数拡張ってのが固定観念になってて>>991みたいな
アホな間違いしてしまった
めでたしめでたし
0997デフォルトの名無しさん
2009/08/16(日) 19:34:170998デフォルトの名無しさん
2009/08/16(日) 19:35:440999デフォルトの名無しさん
2009/08/16(日) 19:36:16C99なんて幻想だよ
対応してないコンパイラの方が多いし現場でも普及してない
ってことで忘れていい
1000デフォルトの名無しさん
2009/08/16(日) 19:40:3410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。