スレを勃てるまでもないC/C++の質問はここで 5
■ このスレッドは過去ログ倉庫に格納されています
過去ログ
スレを勃てるまでもないC/C++の質問はここで
http://pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
http://pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
http://pc11.2ch.net/test/read.cgi/tech/1187521676/
スレを勃てるまでもないC/C++の質問はここで 4
http://pc11.2ch.net/test/read.cgi/tech/1221633708/
0409デフォルトの名無しさん
2009/01/03(土) 14:03:49キモッ
0410デフォルトの名無しさん
2009/01/03(土) 14:12:17お前の発言が主観ではなくなんだと言うのだ
0411デフォルトの名無しさん
2009/01/03(土) 14:14:200412デフォルトの名無しさん
2009/01/03(土) 14:21:00>>408の日本語がよく分からんのだが、
"コードを客観的に考え"てるのが誰で
"主観ばかりで意見する"のが誰で
"罵詈雑言で返すだけの無能"が誰だって?
0413デフォルトの名無しさん
2009/01/03(土) 14:22:11間違いねぇ、クソ麻呂のクソースだぜ、ぷぷぷw
0414デフォルトの名無しさん
2009/01/03(土) 14:34:49警告: 真偽値として使われる代入のまわりでは、丸括弧の使用をお勧めします
だってさ
0415デフォルトの名無しさん
2009/01/03(土) 14:36:20j=10 i=1
j=9 i=2
j=8 i=3
j=7 i=4
j=6 i=5
j=5 i=6
j=4 i=7
j=3 i=8
j=2 i=9
j=1 i=10
0416デフォルトの名無しさん
2009/01/03(土) 14:36:49そりゃ、警告だ
コンパイルエラーじゃない
0417デフォルトの名無しさん
2009/01/03(土) 14:38:130418デフォルトの名無しさん
2009/01/03(土) 14:42:41・ソース
#include <windows.h>
#include <time.h>
#include <stdio.h>
typedef struct
{
time_t time;
WORD namesum;
BYTE name[254];
} HEADER1;
typedef struct
{
time_t time;
WORD namesum;
// BYTE name[254];
} HEADER2;
main() {
BYTE name[254];
printf("HEADER1 = %d\n", sizeof(HEADER1));
printf("HEADER2 = %d\n", sizeof(HEADER2));
printf("name[254] = %d\n", sizeof(name));
printf("HEADER2 + name[254] = %d\n", sizeof(HEADER2) + sizeof(name));
}
・実行結果
HEADER1 = 260
HEADER2 = 8
name[254] = 254
HEADER2 + name[254] = 262
HEADER2 + name[254]はなんで260にならずに262になったのでしょうか?
0419デフォルトの名無しさん
2009/01/03(土) 14:44:070420419
2009/01/03(土) 14:44:540421デフォルトの名無しさん
2009/01/03(土) 14:45:49どこが「関係ない部分」かわかるくらいなら自分で問題解決できるって。
0422デフォルトの名無しさん
2009/01/03(土) 14:46:18HEADER2 + name[254] = 8 + 254 = 262
ってそのまんだだと思うが
0423419
2009/01/03(土) 14:47:480424デフォルトの名無しさん
2009/01/03(土) 14:47:540426デフォルトの名無しさん
2009/01/03(土) 14:48:540427デフォルトの名無しさん
2009/01/03(土) 14:49:19消防からやりなおせってとこか
0428デフォルトの名無しさん
2009/01/03(土) 14:49:230429デフォルトの名無しさん
2009/01/03(土) 14:49:28HEADER2はHEADER1のname[254]をコメントアウトしているので
HEADER2 + name[254] = HEADER1に何でならないのかと思いまして.
0430デフォルトの名無しさん
2009/01/03(土) 14:51:060431デフォルトの名無しさん
2009/01/03(土) 14:51:140432デフォルトの名無しさん
2009/01/03(土) 14:52:31>>422>>423>>424>>426>>427>>430 あたりは無視してよろしい。
0433デフォルトの名無しさん
2009/01/03(土) 14:53:03printfで出力された値を見れば、ただ足し算するだけ。
定義のところに疑問があるなら、疑問を持つべきは最後のprintf文じゃないでしょ?
0434デフォルトの名無しさん
2009/01/03(土) 14:53:56だから分からん奴は黙っとけ。
0435418
2009/01/03(土) 14:54:25みなさんありがとう.
0436デフォルトの名無しさん
2009/01/03(土) 14:54:320437デフォルトの名無しさん
2009/01/03(土) 14:55:41クソワロタ
0438デフォルトの名無しさん
2009/01/03(土) 14:57:260439デフォルトの名無しさん
2009/01/03(土) 14:57:34結局日本語で理解できなかったよ
0440デフォルトの名無しさん
2009/01/03(土) 14:58:38まぁ解決したからいいいけど、2個目のprintfでHEADER2のサイズが HEADER1 - 256
になってない時点で疑問に思うべきだってことだよ
0441デフォルトの名無しさん
2009/01/03(土) 15:20:54きもいぃ〜〜〜〜はいっ、きっ、もっ、いっ、キモイ!きっ、もっ、いっ、キモイ!
キモイィ〜〜〜〜
0442デフォルトの名無しさん
2009/01/03(土) 15:25:47あのwhile文の中は、条件式が適切なのに、代入式で済ませているなんて、
プログラマー失格だろ。コンパイラが警告しているのに、アホ過ぎ。黙ってろよ、ド素人w
0443デフォルトの名無しさん
2009/01/03(土) 15:29:52visual stdio 2005 無償版でデバッグ開始してみたところ
「0x0040115d でハンドルされていない例外が発生しました: 0xC0000094: Integer division by zero」
というメッセージがでて実行中に強制終了してしまいました。
これってどうすればいいんでしょうか・・・?
0444デフォルトの名無しさん
2009/01/03(土) 15:30:39オープンソースも知らない素人は黙っとけよ。
恥ずかしい奴だな。
0445デフォルトの名無しさん
2009/01/03(土) 15:32:30アァ〜〜キモッキモッ、きっと鏡を見ると、キモイ面が映っているんでしょうね。
現実に目を向けようぜ、こんな文字列ばかりのスレじゃなくて、さ?
0446デフォルトの名無しさん
2009/01/03(土) 15:33:00ゼロで割ることはできない。
0447デフォルトの名無しさん
2009/01/03(土) 15:33:15何かを0で割ったんじゃね?
0448デフォルトの名無しさん
2009/01/03(土) 15:34:57バカが条件式限定だと思い込んで恥をさらしてファビョりまくってるのが現状。
0449デフォルトの名無しさん
2009/01/03(土) 15:35:13コンパイラの最適化って、害悪だと思う
0450デフォルトの名無しさん
2009/01/03(土) 15:36:000451デフォルトの名無しさん
2009/01/03(土) 15:36:44もう一度勉強しようね
0452デフォルトの名無しさん
2009/01/03(土) 15:37:19ありがとうございました。解決したみたいです。
0453デフォルトの名無しさん
2009/01/03(土) 15:37:28デバッグ開始してるなら、中断とか継続とか出ると思う。
中断すれば該当行にカーソルが行く。
その行で割り算してて、割る数が0なんだろう。
変数にマウスカーソルあてると数値見えたりもする。
0454デフォルトの名無しさん
2009/01/03(土) 15:37:56visual stdioなんか使うからだろ。
gcc使え。
gccなら0除算OKだ。
いまどき0除算もできないコンパイラなんてM$製くらいだ。
これだからドザは駄目なんだよ。
0455デフォルトの名無しさん
2009/01/03(土) 15:38:37実行速度を速める為の手法だっけ
0456デフォルトの名無しさん
2009/01/03(土) 15:38:42式は値を持つんだから、なんの問題も無いだろ。
警告がいやなら、while ((j=0-i++)) とでもすればいい。
なにも知らないド素人は黙ってろよw
0457デフォルトの名無しさん
2009/01/03(土) 15:38:50これって乱数で過去レスを切り貼りするスクリプトでしょ。
0458デフォルトの名無しさん
2009/01/03(土) 15:39:24さすが、言語スレ
いつまでも、こんな言語仕様のスレみてるのなんて学生ばっかだっつーの
0459デフォルトの名無しさん
2009/01/03(土) 15:39:52英和辞書引け、でいいのに。
0460デフォルトの名無しさん
2009/01/03(土) 15:40:21そう
0461デフォルトの名無しさん
2009/01/03(土) 15:40:44基本的にはそうだが、
アラインメントされてないと
データを読めない CPU もある。
0462デフォルトの名無しさん
2009/01/03(土) 15:40:57手動でやる場合もある
0463デフォルトの名無しさん
2009/01/03(土) 15:41:000で割るってどういうことか知ってる?
0464デフォルトの名無しさん
2009/01/03(土) 15:41:49宇宙の法則が乱れる
0465デフォルトの名無しさん
2009/01/03(土) 15:42:150466デフォルトの名無しさん
2009/01/03(土) 15:44:34visual stdioが破壊されるってことだろ。
素直にオープンソース使えって。
無理するな。
0467デフォルトの名無しさん
2009/01/03(土) 15:45:39アラインメントをキーワードにググってみた。
説明ありがとー
0468デフォルトの名無しさん
2009/01/03(土) 16:21:15おいっ、絡まれてまともにレス出来ないなら、お前がレスしなきゃ良くね?
だってここ、誰もお前個人を特定、指定してレスを求めているわけじゃないんだが
言うからには自分の発言に責任を持っているんだろうな?
ほれ、鏡を見ろよ。醜い酷い面が映っただろ?誰だよそれ?
そう、お・ま・え・だよ?分かる?それが現実。自分が見たものはどうこう言うくせに
自分で自分を見られる唯一の手段、何か姿を映し出すものを見た時
己の醜さを目の当たりにするのさ。今のあんたみたく。
あんたの発言、第三者から見れば、きんもぉ〜★だぜ?
0469デフォルトの名無しさん
2009/01/03(土) 16:22:56以下のようにvectorに追加する前のインスタンス
とvector内のインスタンスでprint()を実行したのですが、
addr=0x804b008
addr=0x804b018
と別のアドレスになります。
同じになると思っていたのですが、
これはvectorに登録する時点でインスタンスが
コピーされていると考えればいいのでしょうか?
またその場合オーバーヘ%8
0470デフォルトの名無しさん
2009/01/03(土) 16:23:26#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;
}
0471469
2009/01/03(土) 16:24:46以降の続き
またその場合オーバーヘッドが気になるんですが、
皆さんどう対処してらっしゃいますか?
お願いします。
0472デフォルトの名無しさん
2009/01/03(土) 16:27:46ただ、
vector<MyClass*> vec;
vec.push_back(my);
みたいにアドレスをコピーする分には
インスタンスのコピーは発生しない。
ただ、メモリ管理を自分でしないといけなくなってしまう。
boost::ptr_vector を使うという手もある。
0473デフォルトの名無しさん
2009/01/03(土) 16:29:50で初期化される (記憶があいまいなのでちょっと違うかも)
で、言うとおりコピーはされる。ポインタのコピーに比べれば
効率は悪いけど、実際そんな小さなことが問題になることはほとんどない。
よっぽどでかいデータ構造をソートしまくるとかでない限り。
0474デフォルトの名無しさん
2009/01/03(土) 16:31:56コピーコンストラクタの実装がマズくて
問題が発生しないかチェックする方が重要だったりするよね。
0475デフォルトの名無しさん
2009/01/03(土) 16:47:54それぞ、井の中の蛙、大海を知らずと言ったものだ。視野が狭いんだよ、
ファビョっている基地外は。もちっとグローバルに、客観的に物事を見な。
自分が思ったことが全て正しい、そんなことを思っているのは、お子ちゃままで。
大人の世界は、いくら自分がそう思っても、現実は、事実とは違っていることなんて
いくらでもあると気づく。実行して見て、コードが間違っていないと思っていても
もっと効率が良いものが存在するだの、自分で考えたのに、後でおかしいと気づくことなんて
いくらでもある。ただ・・・
while(代入式) は不適切だ。
0476デフォルトの名無しさん
2009/01/03(土) 16:50:59「いいよいいよー、そうやって自分を否定する者を否定し続けてなさい。
それぞ、井の中の蛙、大海を知らずと言ったものだ。視野が狭いんだよ、
ファビョっている基地外は。もちっとグローバルに、客観的に物事を見な。
自分が思ったことが全て正しい、そんなことを思っているのは、お子ちゃままで。
大人の世界は、いくら自分がそう思っても、現実は、事実とは違っていることなんて
いくらでもあると気づく。実行して見て、コードが間違っていないと思っていても
もっと効率が良いものが存在するだの、自分で考えたのに、後でおかしいと気づくことなんて
いくらでもある。」
ここまでそっくりそのままお前に返すよwww
0478デフォルトの名無しさん
2009/01/03(土) 16:59:49while(代入式)が不適切だろうがなんだろうが正しいんだから。
0479デフォルトの名無しさん
2009/01/03(土) 17:08:53コンパイルできて規格合致であることは誰も否定していない。
0480デフォルトの名無しさん
2009/01/03(土) 17:11:38まぁ確かに。
言いたかったのは、そこまで熱くならんでもいいんじゃね?ってこと。
0481デフォルトの名無しさん
2009/01/03(土) 17:13:34478みたいな書き方だとまた話を蒸し返されそうな雰囲気だから勘弁してくれ。
0482デフォルトの名無しさん
2009/01/03(土) 17:13:44いや、否定してる奴が約一名いるぞ
>>442 とか>>475 とか
0483デフォルトの名無しさん
2009/01/03(土) 17:15:22失礼した。
書き方に気をつける。
0484デフォルトの名無しさん
2009/01/03(土) 17:16:04linuxなんかでは値があるものは何でもってくらい条件にしちゃうので、
経験積んだらそういうソースにも慣れると良い
0485デフォルトの名無しさん
2009/01/03(土) 17:33:250486デフォルトの名無しさん
2009/01/03(土) 17:42:19呂布かいでし
0487デフォルトの名無しさん
2009/01/03(土) 17:44:550488デフォルトの名無しさん
2009/01/03(土) 19:17:030489デフォルトの名無しさん
2009/01/03(土) 19:59:08そゆこと言ってるから、論理値をリテラルと比較する莫迦が後を絶たない。
0490デフォルトの名無しさん
2009/01/03(土) 20:05:450491デフォルトの名無しさん
2009/01/03(土) 20:58:12if(hoge()!=0)...
とか?
あるいは、if((x<y)!=0)...
ということだろうか?
0492デフォルトの名無しさん
2009/01/03(土) 21:00:050493デフォルトの名無しさん
2009/01/03(土) 21:05:04真理値型の無い言語だぞ?
巣に帰れよ。
0494デフォルトの名無しさん
2009/01/03(土) 21:16:20前屈みになって腕を横に挙げるやつ
0495デフォルトの名無しさん
2009/01/03(土) 21:18:090496デフォルトの名無しさん
2009/01/03(土) 21:19:330497デフォルトの名無しさん
2009/01/03(土) 21:32:53処理できた件数を返す関数hogeの場合、#define TRUE -1に対して、
if(hoge()){・・・}
if(hoge()==TRUE){・・・}
とか。
0498デフォルトの名無しさん
2009/01/03(土) 22:01:46お前の頭はC89止まりか。
0499デフォルトの名無しさん
2009/01/03(土) 22:07:12と
左辺が右辺以上の時
って何が違うんでしょうか?
>これと>=を使い分けたりすることってあるのでしょうか?
0500デフォルトの名無しさん
2009/01/03(土) 22:09:23ちゅうがっこう から やりなおせば
わかると おもいます。
0501デフォルトの名無しさん
2009/01/03(土) 22:11:25それいぜんに にぽーんごの もんだいかと
おもわれまっしゅる
0502デフォルトの名無しさん
2009/01/03(土) 22:12:31\丶\\ ////
|・\ _____ /・> ///
/ ̄ ̄ ̄ ̄\,, ミ\.\ヽ|||liiiii||/ /./彡 ////
|・\ /_____/・> /\.\|||iii||l//彡 ノ(
ミ \.\ヽ|||liiiii||/ /./ノ( / / (,-、 ,:‐、 ) \ ⌒ヽ
\.\|||iii||l// | ⌒ .|/ ─////─ ヽ |
|(,-、 ,:‐、 ) 6 l |. ////── | .| \\\
. ////Vヽ ,-′ ////'VVVヽ | l
////ェ∧/_ /ヽ . //// γ l / /
//// |/\/ l ^ //// i∧ェェェ∧/ / /
//// | |//// l━━(t)━━━━┥
0503デフォルトの名無しさん
2009/01/03(土) 22:28:36左辺==右辺の時に真になるか偽になるかの違い。
必要に応じて>と>=のふさわしい方を使う。
0504デフォルトの名無しさん
2009/01/03(土) 22:30:48xが12以上の時
より・・以上・・そこにある違い・・それが問題ってことですよね?
0505デフォルトの名無しさん
2009/01/03(土) 22:30:520506デフォルトの名無しさん
2009/01/03(土) 22:32:36x >= 10 == x > 10
は偽になるってことでしょうか?
0507デフォルトの名無しさん
2009/01/03(土) 22:34:120508デフォルトの名無しさん
2009/01/03(土) 22:42:07x==10のときだけ偽、それ以外は真。
■ このスレッドは過去ログ倉庫に格納されています