[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 11:16 / Filesize : 192 KB / Number-of Response : 848
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

スレを勃てるまでもないC/C++の質問はここで 5



1 名前: ◆h6A7qfFFu6 mailto:sage [2008/12/29(月) 11:05:07 ]
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

過去ログ
スレを勃てるまでもないC/C++の質問はここで
pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
pc11.2ch.net/test/read.cgi/tech/1187521676/
スレを勃てるまでもないC/C++の質問はここで 4
pc11.2ch.net/test/read.cgi/tech/1221633708/

447 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:33:15 ]
>>443
何かを0で割ったんじゃね?

448 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:34:57 ]
代入式でも条件式でも「式」でありさえすればなんでもいいのがCの仕様。
バカが条件式限定だと思い込んで恥をさらしてファビョりまくってるのが現状。

449 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:35:13 ]
パディングって、詰め物だっけ
コンパイラの最適化って、害悪だと思う

450 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:36:00 ]
最適化がなかったら困ったことになると思うが。

451 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:36:44 ]
>>449
もう一度勉強しようね

452 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:37:19 ]
>>446-447さん
ありがとうございました。解決したみたいです。


453 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:37:28 ]
>>443
デバッグ開始してるなら、中断とか継続とか出ると思う。
中断すれば該当行にカーソルが行く。
その行で割り算してて、割る数が0なんだろう。

変数にマウスカーソルあてると数値見えたりもする。

454 名前:デフォルトの名無しさん [2009/01/03(土) 15:37:56 ]
>>443
visual stdioなんか使うからだろ。
gcc使え。
gccなら0除算OKだ。
いまどき0除算もできないコンパイラなんてM$製くらいだ。
これだからドザは駄目なんだよ。

455 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:38:37 ]
パディングってワード間隔でデータを区切って
実行速度を速める為の手法だっけ



456 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:38:42 ]
>>442
式は値を持つんだから、なんの問題も無いだろ。
警告がいやなら、while ((j=0-i++)) とでもすればいい。
なにも知らないド素人は黙ってろよw

457 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:38:50 ]
>>444
これって乱数で過去レスを切り貼りするスクリプトでしょ。

458 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:39:24 ]
やたらからんでくる愚かものがいるなw
さすが、言語スレ

いつまでも、こんな言語仕様のスレみてるのなんて学生ばっかだっつーの

459 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:39:52 ]
みんな親切だな。
英和辞書引け、でいいのに。

460 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:40:21 ]
>>455
そう

461 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:40:44 ]
>>455
基本的にはそうだが、
アラインメントされてないと
データを読めない CPU もある。

462 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:40:57 ]
ビットフィールドってので、
手動でやる場合もある

463 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:41:00 ]
>>454
0で割るってどういうことか知ってる?

464 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:41:49 ]
>>463
宇宙の法則が乱れる

465 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:42:15 ]
学生や初心者が見るスレだからこそ、間違った知識は叩かれねばならない。



466 名前:デフォルトの名無しさん [2009/01/03(土) 15:44:34 ]
>>463
visual stdioが破壊されるってことだろ。
素直にオープンソース使えって。
無理するな。

467 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:45:39 ]
>>460-462
アラインメントをキーワードにググってみた。
説明ありがとー

468 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 16:21:15 ]
>>458
おいっ、絡まれてまともにレス出来ないなら、お前がレスしなきゃ良くね?
だってここ、誰もお前個人を特定、指定してレスを求めているわけじゃないんだが
言うからには自分の発言に責任を持っているんだろうな?
ほれ、鏡を見ろよ。醜い酷い面が映っただろ?誰だよそれ?
そう、お・ま・え・だよ?分かる?それが現実。自分が見たものはどうこう言うくせに
自分で自分を見られる唯一の手段、何か姿を映し出すものを見た時
己の醜さを目の当たりにするのさ。今のあんたみたく。
あんたの発言、第三者から見れば、きんもぉ〜★だぜ?

469 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 16:22:56 ]
自身thisのアドレスをprintするメソッドを持つクラスを作成して
以下のようにvectorに追加する前のインスタンス
とvector内のインスタンスでprint()を実行したのですが、

addr=0x804b008
addr=0x804b018
と別のアドレスになります。
同じになると思っていたのですが、
これはvectorに登録する時点でインスタンスが
コピーされていると考えればいいのでしょうか?

またその場合オーバーヘ%8

470 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 16:23:26 ]
#include <iostream>
#include <vector>

using namespace std;

class MyClass {
public:
MyClass() {};
~MyClass() {};
void print() {
cout << "addr=" << this <<endl;
}
};

int main(int ac, char *av[])
{
vector<MyClass> vec;
MyClass *my = new MyClass();

vec.push_back(*my);
my->print();
vec.at(0).print();
delete my;

return 0;
}


471 名前:469 mailto:sage [2009/01/03(土) 16:24:46 ]
>またその場合オーバーヘ%8
以降の続き

またその場合オーバーヘッドが気になるんですが、
皆さんどう対処してらっしゃいますか?

お願いします。

472 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 16:27:46 ]
当然コピーが発生する。
ただ、
vector<MyClass*> vec;
vec.push_back(my);
みたいにアドレスをコピーする分には
インスタンスのコピーは発生しない。
ただ、メモリ管理を自分でしないといけなくなってしまう。
boost::ptr_vector を使うという手もある。

473 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 16:29:50 ]
vectorは、メモリを確保してplacement newという機構とコピーコンストラクタ
で初期化される (記憶があいまいなのでちょっと違うかも)

で、言うとおりコピーはされる。ポインタのコピーに比べれば
効率は悪いけど、実際そんな小さなことが問題になることはほとんどない。

よっぽどでかいデータ構造をソートしまくるとかでない限り。

474 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 16:31:56 ]
コピーのコストより、
コピーコンストラクタの実装がマズくて
問題が発生しないかチェックする方が重要だったりするよね。

475 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 16:47:54 ]
いいよいいよー、そうやって自分を否定する者を否定し続けてなさい。
それぞ、井の中の蛙、大海を知らずと言ったものだ。視野が狭いんだよ、
ファビョっている基地外は。もちっとグローバルに、客観的に物事を見な。
自分が思ったことが全て正しい、そんなことを思っているのは、お子ちゃままで。
大人の世界は、いくら自分がそう思っても、現実は、事実とは違っていることなんて
いくらでもあると気づく。実行して見て、コードが間違っていないと思っていても
もっと効率が良いものが存在するだの、自分で考えたのに、後でおかしいと気づくことなんて
いくらでもある。ただ・・・

while(代入式) は不適切だ。



476 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 16:50:59 ]
>>475
「いいよいいよー、そうやって自分を否定する者を否定し続けてなさい。
それぞ、井の中の蛙、大海を知らずと言ったものだ。視野が狭いんだよ、
ファビョっている基地外は。もちっとグローバルに、客観的に物事を見な。
自分が思ったことが全て正しい、そんなことを思っているのは、お子ちゃままで。
大人の世界は、いくら自分がそう思っても、現実は、事実とは違っていることなんて
いくらでもあると気づく。実行して見て、コードが間違っていないと思っていても
もっと効率が良いものが存在するだの、自分で考えたのに、後でおかしいと気づくことなんて
いくらでもある。」
ここまでそっくりそのままお前に返すよwww

477 名前:469 mailto:sage [2009/01/03(土) 16:59:01 ]
>>472,473,474
ありがとうございます。
ポインタを使うのがしっくり来そうです


478 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 16:59:49 ]
Cの規格に沿った構文解析器でも作ってみたら?
while(代入式)が不適切だろうがなんだろうが正しいんだから。

479 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:08:53 ]
>>478
コンパイルできて規格合致であることは誰も否定していない。

480 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:11:38 ]
>>479
まぁ確かに。
言いたかったのは、そこまで熱くならんでもいいんじゃね?ってこと。

481 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:13:34 ]
>>480
478みたいな書き方だとまた話を蒸し返されそうな雰囲気だから勘弁してくれ。

482 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:13:44 ]
>>479
いや、否定してる奴が約一名いるぞ
>>442 とか>>475 とか

483 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:15:22 ]
>>481
失礼した。
書き方に気をつける。

484 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:16:04 ]
while文の条件は条件式にするってのは良い心がけだと思うよ。
linuxなんかでは値があるものは何でもってくらい条件にしちゃうので、
経験積んだらそういうソースにも慣れると良い

485 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:33:25 ]
条件式ではなく比較式と言ってくれ。



486 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:42:19 ]
>>485
呂布かいでし

487 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:44:55 ]
比較するとは限らんぜ

488 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 19:17:03 ]
式・・・それは愛・・・・・・

489 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 19:59:08 ]
>>485
そゆこと言ってるから、論理値をリテラルと比較する莫迦が後を絶たない。

490 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 20:05:45 ]
お前、リテラルの意味分かってないだろ

491 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 20:58:12 ]
>>489
if(hoge()!=0)...
とか?

あるいは、if((x<y)!=0)...
ということだろうか?


492 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:00:05 ]
(is_hoge() == true) == trueのことだろ。

493 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:05:04 ]
>>492
真理値型の無い言語だぞ?
巣に帰れよ。

494 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:16:20 ]
リテラルってほらあれだ
前屈みになって腕を横に挙げるやつ

495 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:18:09 ]
ボケがわかりにくい上につまんねーよw



496 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:19:33 ]
どどんまい?

497 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:32:53 ]
>>493
処理できた件数を返す関数hogeの場合、#define TRUE -1に対して、
if(hoge()){・・・}
if(hoge()==TRUE){・・・}
とか。

498 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:01:46 ]
>>493
お前の頭はC89止まりか。

499 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:07:12 ]
左辺が右辺より大きいとき

左辺が右辺以上の時
って何が違うんでしょうか?
>これと>=を使い分けたりすることってあるのでしょうか?

500 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:09:23 ]
>>499
ちゅうがっこう から やりなおせば
わかると おもいます。

501 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:11:25 ]
>>500
それいぜんに にぽーんごの もんだいかと
おもわれまっしゅる

502 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:12:31 ]
  ヾヽ\ヾ\                           ////  //
 \丶\\                               ////
                 |・\  _____ /・>      ///
     / ̄ ̄ ̄ ̄\,,   ミ\.\ヽ|||liiiii||/ /./彡   ////
 |・\ /_____/・>     /\.\|||iii||l//彡  ノ(
ミ \.\ヽ|||liiiii||/ /./ノ(   / / (,-、 ,:‐、 ) \ ⌒ヽ
   \.\|||iii||l// | ⌒  .|/ ─////─   ヽ   |
    |(,-、 ,:‐、 )   6 l   |. ////──    |  .|    \\\
.   ////Vヽ  ,-′  ////'VVVヽ     |   l
  ////ェ∧/_ /ヽ . ////  γ    l    / /
 //// |/\/ l ^ ////  i∧ェェェ∧/  / /
//// |       |//// l━━(t)━━━━┥

503 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:28:36 ]
>>499
左辺==右辺の時に真になるか偽になるかの違い。
必要に応じて>と>=のふさわしい方を使う。

504 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:30:48 ]
xが12より大きいとき
xが12以上の時

より・・以上・・そこにある違い・・それが問題ってことですよね?

505 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:30:52 ]
面白い釣りだなあ。



506 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:32:36 ]
>>503

x >= 10 == x > 10
は偽になるってことでしょうか?

507 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:34:12 ]
さんすうのきょうかしょをよんでね

508 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:42:07 ]
>>506
x==10のときだけ偽、それ以外は真。

509 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:42:37 ]
優先順位は大丈夫か?

510 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:44:32 ]
>>509
優先順位知らないんなら口出すなw

511 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:47:21 ]
申し訳ございません

512 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:59:32 ]
>>508
そ・・そうか!!
やっと理解できました!!!!

x < 10は10もは含まれないってことですよね!?
だから
int a;
cin>>a;
if("x < 10"){
cout<<”真"<<endl;
はxが10より小さいってことで
つまり10と入力しても偽になるわけだ!!!!!!!!!

513 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:16:33 ]
while ("テュルー")

はどうなりますか?

514 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:17:47 ]
無限ループ

515 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:17:50 ]
突っ込みどころ満載w



516 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:18:13 ]
・・・??

517 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:25:24 ]
while("forever") ってしない?

518 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:27:07 ]
しない

519 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:30:13 ]
>>517
条件式じゃないと暴れだす奴がくるぞw

520 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:34:54 ]
>>517
そのアイデア貰った

521 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:43:25 ]
ちょ、それ古典w

522 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:43:49 ]
俺も面白いと思った。

while("無限ループ")
{
  /* なんか */
}

まあ、しないけど

523 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:44:49 ]
>>519
さすがにお前の粘着ぶりがキモイ

524 名前:デフォルトの名無しさん [2009/01/03(土) 23:46:13 ]
while(j=10-i++) を書いた奴が指摘されて、まだファビョってるのか?
基地外だろ、こいつ。指摘した方が言ってもいないことを思っているとか言い出すし。

525 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:49:41 ]
whileの括弧の中が条件式でなければ駄目とは言っていないし、変数を用いて
0か否かで繰り返し条件を指定することもかのうだが、あの式は紛れもなく
代入式で、jの値を使うにしては、不適切だとコンパイラも指摘しているのだが・・・



526 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:51:04 ]
プw

527 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:53:39 ]
いやぁがんばってるね

528 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:55:30 ]
while(*dst++=*src++);

529 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:00:53 ]
>>525
>while文の括弧の中は、
>本来は条件式が入るんだが、それは代入だろ。例え括弧で代入式を括っても、
>それに対して条件式にあう措置をとるべき。

530 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:03:01 ]
>>524
ファビョってるのは「while文の中は、条件式が適切なのに、代入式で…」うんぬん
いってる>>442だろ
ながれ読めよ

>>525
>>456 で結論出てるのにいつまでやってんの?

531 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:04:48 ]
>>530
>>524=>>442で本人だからしょうがないんだよw

532 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:15:46 ]
最近よく喧嘩するね

533 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:29:14 ]
テュルー

534 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:29:51 ]
冬休みだからしかたない

535 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:30:16 ]
出た、「冬休み」



536 名前:デフォルトの名無しさん [2009/01/04(日) 00:37:35 ]
connect(sock,( struct sockaddr * ) &echoservaddr, sizeof(echoservadr))

この文の * が意味することがまったくわかりません
*の後に文字もないのですが、ポインタとしてありえなくないでしょうか?

537 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:38:30 ]
ポインタ型でキャストしてるだけ

538 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:51:54 ]
人はなぜ>>534のような発言をするのか。
それは「私は子供ではない」と誇示したいからである。

では、「私は大人だ」と主張する人間が「大人」なのだろうか。
答えは否、断じて否である。

539 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:56:57 ]
で?

540 名前:536 [2009/01/04(日) 00:57:57 ]
つまり&echoservaddr構造体のポインタを
sockaddr構造体のポインタとしてあつかうってことでしょうか?

まったく何をしているか理解できないのですが

541 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:58:58 ]
>>539

542 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:00:57 ]
>>540
その通りの事をやっている。
sockaddr_in 構造体を sockaddr 構造体であるかのように
無理矢理見なして渡している。
sockaddr_in 構造体と sockaddr 構造体はサイズが同じで、
かつ、こうやってキャストしてもいいと問題ないとされている。

543 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:02:07 ]
connect()の第2引数はstruct sockddr *型(struct sockddr型へのポインタ)を取る。
そこで、&echoservaddr(echoservaddrのアドレス)をstruct sockddr *型(struct sockddr型へのポインタ)へキャストしている。

544 名前:536 [2009/01/04(日) 01:03:51 ]
>>542
見なす理由がわからないのです。
sockaddr_inのほうが入ってる情報というか入力する情報は多いし
その情報はconnectする際に必要だと思います。
なのに、何故必要な情報がすべてあひってないsockaddr構造体とみなすのかがよくわかりません

545 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:07:27 ]
www.linux.or.jp/JM/html/LDP_man-pages/man2/connect.2.html

int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

2番目の引数の型には、const struct sockaddr *が”必要”



546 名前:536 [2009/01/04(日) 01:08:58 ]
必要な理由がわからないのです。
ていうか、入れてしまっては前述した疑問がわいてしまって

547 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:10:08 ]
理由は、connect()がそういう仕様だから。
connect()を作った人間がそういう風に作ったから。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<192KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef