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


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

【初心者歓迎】C/C++室 Ver.101【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 07:07:27.20 ID:vzMDiUgd.net]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。

【アップローダー】(質問が長い時はココ使うと便利)
codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)

前スレ
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
mevius.2ch.net/test/read.cgi/tech/1478440682/

554 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:20:08.57 ID:mWX/padL.net]
intをオーバーする心配をするなら
size_tをオーバーする心配も
メモリが足りない心配も
処理が遅すぎて使い物にならない心配も

555 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:20:36.17 ID:te52+8O3.net]
>>546
そうじゃなくてわざわざ型変換する理由は何?

556 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:21:19.25 ID:mWX/padL.net]
統一

557 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:25:11.29 ID:mWX/padL.net]
>>542の環境の場合、多くの場合ムダにデカい変数を扱うことになる

もちろん、巨大なデータを扱う可能性があるならムダではない
と同時に、>>546も心配する必要がある

558 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:26:03.20 ID:te52+8O3.net]
>>548
何と何を統一するの?

int n = static_cast<int>(v.size());
という面倒な表記?それとも
int n = v.size();
とかいう-Wall で死ぬ表記?

auto n = v.size();
って書かずにキャストをどうしてもしたいのはなぜなのか

559 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:30:18.05 ID:mWX/padL.net]
クラスを使う人が、内部的にvectorを意識する必要もないし、それようにわざわざ専用の型を使う必要もない

intは他の処理でも多く使われているので、使う側からすれば一番変換が少ない

巨大なデータを扱う処理に関する記述で、size_tで統一してるならそれでも
符号無しで統一してるのも考えにくいけど

560 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:35:08.21 ID:mWX/padL.net]
>>550
そういう面倒なことをクラスのユーザーにさせないため

561 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:48:22.24 ID:s9vD7wq8.net]
ID:mWX/padLみたいな前近代的なマが早くくたばりますように

562 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:08:25.29 ID:te52+8O3.net]
>巨大なデータを扱う処理に関する記述で、size_tで統一してるならそれでも
符号無しで統一してるのも考えにくいけど

STLのsizeはsize_tで統一されてんのにお前が乱してるんだろw



563 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:21:24.07 ID:g+9HiqWa.net]
>そういう面倒なことをクラスのユーザーにさせないため

どんな理屈だよ
vectorをラップしたクラスにat()やoperator[]を設けたらint指定でアクセスするのか
ユーザは負数に成り得る変数を注意しながら使えってか
何のための型だよ

564 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:27:33.63 ID:wHQvIY8a.net]
>vectorをラップしたクラスにat()やoperator[]を設けたらint指定でアクセスするのか
あたりめーだ
真人間ならラップは手段であって目的じゃねーから
>ユーザは負数に成り得る変数を注意しながら使えってか
バカ乙
計算をミスらないことと演算がオーバーフローしないことだけ注意すんだよ

565 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:38:23.61 ID:mWX/padL.net]
>>554
STLを意識させないためにクラスで包んでるんだろうに
意識させるならパッケージング失敗では?

566 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:38:41.32 ID:g+9HiqWa.net]
>>556
>あたりめーだ
>真人間ならラップは手段であって目的じゃねーから
ごめん、意味分からん

>計算をミスらないことと演算がオーバーフローしないことだけ注意すんだよ
だから、わざわざvector::size_typeなものをintに変換する必要がないじゃないの
0からmax_size()までの範囲なんだからさ

567 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:40:58.71 ID:g+9HiqWa.net]
>>557
だからtypedefやusingを使うって話だよ

568 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:41:24.55 ID:mWX/padL.net]
vectorから他の実装に変えたらクラスの仕様も変えるのか?

569 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:42:44.43 ID:mWX/padL.net]
>>559
いちいちメンバ関数ごとに型を定義する?
本気で言ってるの?

570 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:47:10.01 ID:mWX/padL.net]
クラスやメンバ関数ごとに型を定義したら、
それらの数値を複数用いて演算した結果はどうすんの?
まさかauto?

571 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:50:17.50 ID:mWX/padL.net]
クラスが値に関して責任を持つ
当たり前

クラスが値や型に対して責任を持たずにただ値をスルーパスするだけの糞クラスなんかは
ローカルで個人で使う物だけにとどめておきな

572 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:51:00.23 ID:mWX/padL.net]
ただメールを転送するだけの役に立たない糞上司と同じ



573 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:00:01.80 ID:g+9HiqWa.net]
>>561
?
クラス内に
typedef typename std::vector<T>::size_type size_type
でいいんじゃないの

574 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:14:31.61 ID:mWX/padL.net]
>>565
vector以外のデータは無いっていう前提?
または、クラスで扱うサイズをすべてそれで統一?

仮にそうだとして、
じゃあ別のクラスのsize_typeや他の型と演算した結果はどういう型にするつもり?

575 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:16:04.43 ID:mWX/padL.net]
使う側に考えさせる
使う側の手間を考えない実装

576 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:18:17.34 ID:mWX/padL.net]
vectorをそのまま継承した程度のクラスなら、
当然vectorのインターフェースを保つべきと思うよ
今回はvectorはただのデータのひとつ

577 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:19:47.38 ID:mWX/padL.net]
実装上、たまたまvectorを使っただけ
もしかしたら変えるかも

といった、ごく普通のクラス設計だと仮定した場合の話

578 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:26:53.78 ID:cjqQUnES.net]
てか普通コンテナのサイズはsize_typeでとるだろ
別のクラスのsize_typeもsize_typeで取れ

勝手にintにキャストしてwarningまみれにすんな死ね

579 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:29:55.07 ID:mWX/padL.net]
コンテナはただのクラス内のデータのひとつ
内部の設計事情を外部に出す必要はない

580 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:32:07.80 ID:mWX/padL.net]
>>562 >>566 に対して、何も回答がない

581 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:32:27.95 ID:g+9HiqWa.net]
>>566
>vector以外のデータは無いっていう前提?
実装を替える必要があるってのは後で作り変えるって意味?それって設計の問題で関係なくね?
静的動的問わずポリモーフィズムするって意味なら最初からそういった設計をするでしょ
今回の話はvectorをラップしているクラスの話でしょ、何で関係ない話を持ち込むの?

>または、クラスで扱うサイズをすべてそれで統一?
size_typeで統一されるならそれでイイんじゃないの?君の言うintに統一と何ら変わらない
それなら内包しているvectorと同じsize_typeを使った方

582 名前:のが余計な記述も減るしバグも減る

>じゃあ別のクラスのsize_typeや他の型と演算した結果はどういう型にするつもり?
それって君の言うint統一でも同じじゃね?

何か話がどんどんズレていない?
[]
[ここ壊れてます]



583 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:33:01.08 ID:cjqQUnES.net]
お前はそれでいいんじゃないか?
intで出せばいいじゃん
他のコンテナと整合取れないから使われないだけで、法に触れてるわけでもないし

584 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:37:36.90 ID:mWX/padL.net]
>>573
私の書き込みの前提は >>568 >>569

クラスの中にvectorやlistや他のコンテナのデータもあるかもしれない
それぞれが、コンテナ独自のサイズの型を定義してるかもしれない
コンテナが返すサイズを加工して返すかもしれない
比較的大きなクラスの話

ただvectorを包んだだけなら当然vectorのインターフェースを継承すべき

585 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:51:59.32 ID:g+9HiqWa.net]
>>575
何その後出しの仮定
取り敢えず、君が幾らでも解釈を広げていくなら話す意味ないわ

それにそのクラス使いたくないわ
絶対何もかも詰め込んだ糞クラスだと思うわ

586 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 21:41:43.35 ID:KodDhcxm.net]
stlが糞ならautoも糞。これだけ。

587 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 22:47:35.80 ID:Eu3G8mvr.net]
auto g() {
 // auto最高や
}

588 名前:片山博文MZ mailto:sage [2017/08/25(金) 22:49:29.48 ID:M7y+0IYN.net]
ご利用は計画的に

589 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 23:42:52.91 ID:Eu3G8mvr.net]
auto 計画通り() -> auto {}

590 名前:はちみつ餃子 mailto:sage [2017/08/26(土) 00:15:55.89 ID:pK4duJs2.net]
int でいーんと違うかな? (違う)

591 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 00:18:45.88 ID:m69mKCvs.net]
この強烈な加齢臭
昭和生まれはお帰りください

592 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 02:07:31.06 ID:YVaPdeR/.net]
平成もあと数年だが在位64年は無茶苦茶長いよな



593 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 02:50:01.47 ID:h4RGPr+8.net]
C++ Core Guidelines より
ES.106: Don't try to avoid negative values by using unsigned
https://github.com/isocpp/CppCoreGuidelines/blob/v0.8/CppCoreGuidelines.md#Res-nonnegative
ES.107: Don't use unsigned for subscripts
https://github.com/isocpp/CppCoreGuidelines/blob/v0.8/CppCoreGuidelines.md#Res-subscripts

594 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 11:13:16.50 ID:mPuoCwlf.net]
↑便所の落書き

595 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 18:00:34.61 ID:WfLpSPQA.net]
size_tって何だっけ?
最近c#脳なので忘れた

596 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 22:37:42.94 ID:XR3UemNV.net]
きっと何かのサイズだろう
rsize_tが出てきたあたりで規格を読むのがめんどくさくなった

597 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 23:05:29.50 ID:4huu8k7X.net]
unsigned int

598 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 23:27:40.18 ID:gTZoGI5S.net]
xmlだったかloggerだったかのヘッダオンリーライブラリでsize_t絡みのワーニングを
消そうとintをsize_tに変更すると別の場所にワーニングが出て、そこも直すとまた別
の場所にの繰り返しで使うのやめたことがあった。

599 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 10:50:45.03 ID:D1yS1ByC.net]
インクルードディレクトリの優先順位変えたらうまくいったり

600 名前:デフォルトの名無しさん [2017/09/02(土) 17:05:03.82 ID:Vkplowcj.net]
opencv.jp/cookbook/opencv_img.html#image-resize
ここのソースコードをコピペしてコンパイルしようとしたのですが
関数 `cv::Mat::release()' 内:
test.cpp:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x47): `cv::Mat::deallocate()' に対する定義されていない参照です
collect2: error: ld returned 1 exit status
このようなエラー文が出てしまいます
使っているOSはdebian stretchです
/usr

601 名前:/include/opencv2には必要なファイルはありました
コンパイルオプションを色々調べて試したのですがうまく行きませんでした
どのようにコンパイルすればいいのでしょうか
[]
[ここ壊れてます]

602 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 17:46:32.93 ID:Ti9M8tGK.net]
>>591
エラーメッセージの通り、定義されてない関数を呼んだんでしょ
必要なライブラリをリンクしてないんじゃないの?



603 名前:デフォルトの名無しさん [2017/09/02(土) 17:57:11.82 ID:Vkplowcj.net]
解決しました
すみませんでした
ライブラリのリンク方法をきちんと理解してなかったみたいです

604 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 01:01:10.24 ID:HP/Rq3By.net]
もちろん、具体的にどうやって解決したかは書きません

605 名前:デフォルトの名無しさん [2017/09/03(日) 02:48:50.72 ID:hOhj+ods.net]
>>594
-l のあとにopencv_必要なライブラリで解決しました
g++ test.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui

606 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 23:14:47.80 ID:SkKZ7pGs.net]
g++はソースでライブラリを指定できないの?

607 名前:デフォルトの名無しさん [2017/09/04(月) 09:53:17.44 ID:MN7/X5Lc.net]
ソースでリンクとかvisual studioかよ

608 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 17:26:13.07 ID:SopTNKp+.net]
質問です
DLLの中で宣言したvectorを呼び出し側のEXEから使うのにスマートな方法は
どんな方法がありますか?

609 名前:デフォルトの名無しさん [2017/09/05(火) 17:29:23.60 ID:b+ZxWLYj.net]
class CFirstClass {
public: virtual const char* GetString() const = 0;
};
class CNinja : public CFirstClass {
public: virtual ~CNinja();
virtual const char* GetString() const;
};
class CMaster : public CFirstClass {
public: virtual ~CMaster();
virtual const char* GetString() const;
};
class CJohnin : public CNinja, public CMaster {
public: virtual ~CJohnin();
};
CNinja::~CNinja(){ }
CMaster::~CMaster(){ }
CJohnin::~CJohnin(){ }
const char* CNinja::GetString() const { return "忍者"; }
const char* CMaster::GetString() const { return "マスター"; }
int main() {
CJohnin johnin;
cout << dynamic_cast<CNinja&>(johnin).GetString() << endl;
cout << johnin.CMaster::GetString() << endl;
return 0;
}

GetStringの戻り値charから*を消したらエラーになるんですが、
これがポインタじゃなければならない理由は何でしょうか?

610 名前:片山博文MZ mailto:sage [2017/09/05(火) 18:18:30.94 ID:HWiXORhG.net]
>>599
文字と文字列は違う。C文字列は、ヌル文字で終わる文字配列、または文字の並びへのポインタ。

611 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 18:37:05.61 ID:WkIFt9xI.net]
* は、ポインタ

まさか君は、ポインタを知らないのか?w

612 名前:デフォルトの名無しさん [2017/09/05(火) 18:37:39.05 ID:b+ZxWLYj.net]
>>600
>または文字の並びへのポインタ。

これはきちんと理解できてませんでした。大変勉強になりました。ありがとうございます。



613 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 18:43:08.96 ID:2NcRAW/h.net]
>>600
> または文字の並びへのポインタ
お前がポインタを勉強しなおしてこい

614 名前: mailto:sage [2017/09/05(火) 18:44:45.37 ID:fgaIXgJY.net]
>>599
>return "忍者"
だから char * で受けないといけない

615 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 18:50:39.70 ID:6fI5wuGG.net]
そして リテラルの "文字列" って static で保持しなくていいの? までテンプレ

616 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:50:20.12 ID:duOUbFWD.net]
>>603
>文字の並びへのポインタ
をchar**と解釈したのか?
ちょっと気になった

文字の並びの先頭アドレス
でどうだろう

617 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:01:40.54 ID:D99g/mXF.net]
>>603
片山先生になんて失礼な態度なんだ

618 名前:片山博文MZ mailto:sage [2017/09/05(火) 20:08:04.50 ID:HWiXORhG.net]
>>607
先頭アドレスと言う方が正確だよね。先生と呼ぶのはやめようね。個人崇拝禁止ってルールだから。

619 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 22:30:28.03 ID:NIuXE25q.net]
片山先生www

620 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 22:59:11.90 ID:nPfvfHCk.net]
文字列リテラルがchar*に勝手に変換されてるのかよ。糞言語だな。

621 名前:片山博文MZ mailto:sage [2017/09/05(火) 23:20:23.43 ID:HWiXORhG.net]
戦国武将を崇拝する事は人●しを崇拝する事になるし、ハッカーを崇拝する事はハッキングを崇拝する事になる

622 名前:
個人崇拝にとらわれず、正しい道を歩まねばならない。
[]
[ここ壊れてます]



623 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 23:28:12.79 ID:j8EMa+Cj.net]
>文字列リテラルがchar*に勝手に変換
そんなクソ言語はCだけ

624 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 23:58:54.60 ID:duOUbFWD.net]
>>612
char const*なりconst char*ならおk?

625 名前:612 mailto:sage [2017/09/06(水) 00:03:55.15 ID:Ta85KmCo.net]
>>613
それなら別にええやろ

626 名前:613 mailto:sage [2017/09/06(水) 00:06:53.44 ID:lX1AC/o9.net]
日が変わったのね

領海いや了解です
まぁ歴史的理由とは言えクソではある
ROM化するときもどっちだよ?ってな話にはなるね

627 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 00:18:48.47 ID:6Ek+YiOk.net]
>>613
char[] = "samurai";

はどうなるんだよ。欠陥だらけの言語だな。

628 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 06:42:27.45 ID:lz1Lh31S.net]
それのどの辺が欠陥?

629 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 09:50:26.00 ID:3N8FGDgc.net]
char hoge[] = "samurai";
const char hage[] = "harakiri";
無問題

630 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 22:47:37.15 ID:jsOYkjhe.net]
↑どうしようもないバカ

631 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 00:52:21.25 ID:vi4Hog1L.net]
これから勉強しようと調べたら、C#やってたのに、見慣れない文法が俺的に意味不明過ぎて草
取り敢えず書かないとわかんねーなw

632 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 00:55:11.66 ID:z9zmzhsM.net]
https://ideone.com/y8mZJo
初心者です
クラスのメンバ変数に別のクラスを持つ場合、
実体かポインタのどちらで持った方が良いのでしょうか?

Data1(別のクラス)、Class1(実体で持つ)、Class2(ポインタで持つ)がその部分です
Class2の方がサイズが小さかったのでこちらの方が良いのですか?
それとも、使う側がメモリ使用量を削減したければ、
使う側がmain関数の変数dやeのような使い方をしてくれるだろう、
ということを期待して、余計なことはせずにClass1のようにするべきですか?

また、ポインタで持つ場合、Data2とClass3のような極端な場合
(実体で持った場合とポインタで持った場合の違いが4バイトしかない)
でもポインタで持つべきですか?



633 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 01:42:32.16 ID:T0c8eZQl.net]
この場合は実体で持ったほうがいいと思う

ポインタのほうがサイズが小さいって言ってるけど、あくまでも型のサイズであって使ってるメモリはポインタのほうが多くなってるよ

データがデータを持つクラスと同時に生成され同時に消えるものなら実体のほうが楽だし

634 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 01:54:33.88 ID:3vC4jpKo.net]
既に回答があるけど
実体で持つべきかポインタで持つべきかはもっと複雑な要因で決まる

C++は他の言語と違ってクラスのインスタンスを実体で持てる変わった言語で
それはそれで便利だから基本的には実体で持って構わない
理由はトラブルが無いから

ポインタで持つ場合は、他所から与えられたり、動的に差し変わったり、他所と共有したり
ややこしいことがしたい場合はポインタで持つ
一応「ややこしいこと」の中に君が求めている「サイズを減らしたい」も含まれる
例えば巨大な画像データなどを複数のクラスで共有してメモリ使用量を削減したい場合など
そのようなつもりがないのであれば、実体で持って構わない

635 名前:はちみつ餃子 mailto:sage [2017/09/08(金) 04:08:54.89 ID:lqryTDOd.net]
まあ、まずは意味的な妥当性を考えるべきかな。
よほど大量にオブジェクトを作るのでなければ
少々のメモリ使用量の差なんてどうってことない。
そのクラスで定義したい概念に一致してるかが重要だろう。

636 名前:デフォルトの名無しさん [2017/09/08(金) 22:03:27.48 ID:TiXktDhC.net]
>>621
ケースバイケース

実体で持つ利点:
開放漏れやコピーし損ないがない

ポインタで持つ利点:
他の言語と同じ感覚で使える
大きなプロジェクトで再コンパイルの無駄な時間を減らせる

637 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 00:41:38.80 ID:hNauHrr/.net]
みなさんありがとうございます
これからは状況に合わせてどれが適切かどうか考えて実装します
今回(621のコードではない)は、621のコードのようにサイズも小さく、
他のクラスと共有するようなデータを持っているクラスでもなく、
そのメンバを所有しているような概念だったので、
メンバ変数は実体で持つことにしました

638 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 04:29:22.24 ID:gq9mYezw.net]
ポインタで持つと、プログラミングが難しい

ただし、後でインスタンスが作られる場合は、ポインタで持つ。
外側・内側のインスタンスの、寿命が異なる場合

639 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 04:30:46.35 ID:iRgkNuJM.net]
アドレスの演算しないなら参照でいいじゃん。

640 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 08:33:28.36 ID:DK1wXlQ9.net]
生き死にのタイミングが別・ちょっとずれて欲しい
そういう場合はポインタしかやりよがない?かな?

641 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 09:57:17.57 ID:IRAdfO5M.net]
寿命のタイミングが違うときポインタで持たせるって、
ポインタをnullで初期化してsetterつけるってこと?
そんな糞クラス絶対使わないわ…

642 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 11:41:44.39 ID:bRNSjth4.net]
↑バカ
>ポインタをnullで初期化してsetterつけるってこと?



643 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 11:43:16.35 ID:3oRTPGwk.net]
寝起きで意味不明ですた

644 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 11:43:45.11 ID:3oRTPGwk.net]
誤爆

645 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 12:06:21.98 ID:arXtWn5o.net]
ボインター使わなくてもC++が組めるのに安堵した

646 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 12:15:47.61 ID:OV/mK/gQ.net]
C/C++の場合、初心者の方がポインタが好きで、多用する傾向があるよね

647 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 12:36:18.85 ID:arXtWn5o.net]
書店やネットで調べたらポインタの話題が必ず出るし、メモリリークになるから、ポインタ使わないと言語が使えません的な雰囲気があった

648 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 12:57:49.50 ID:X7OoIJoK.net]
そこでメモリポインタですよ

649 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 12:58:17.28 ID:D8z5xRC+.net]
低レベルな処理はポインタ必須
上しか書かないなら生で使わないことも可能

650 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 13:07:28.29 ID:4g0rauvm.net]
>>638
いつも考えるんですけれども低レイヤーでもポインタを使わないことは可能なんでしょうか?ポインタを使わないけれども低レイヤまで対応している言語はなんでしょうか

651 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 13:34:55.85 ID:ayit12uD.net]
いつも思うのだがポインタ恐怖症って何なのか?

652 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 13:55:13.28 ID:xEPuJyU1.net]
低レベルな処理でポインタが便利と言われるのはなぜか
言葉で語るのは大変なのでコードで語ろう
hoge *p = (hoge)nanika_no_memory_block;
p->piyo = 100;
これが出来る言語は、あまりない



653 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 14:50:04.88 ID:4g0rauvm.net]
>>641
うわさの rust ではどうでしょうか?

654 名前:はちみつ餃子 mailto:sage [2017/09/09(土) 15:46:41.32 ID:yY9TM3ez.net]
低水準に寄り過ぎると「アドレスを表す整数」だったりして、
(ポインタ相当の操作は可能なものの、)
言語としてのサポートが全然なかったりするので、
ポインタってのは妥当な落としどころだよなー

655 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 18:56:49.96 ID:SQs0JGyk.net]
>>641
Ada もできたはず

656 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 19:48:57.56 ID:xEPuJyU1.net]
>>641はちょっとコードをミスってしまった
訂正するほどでもないと思うが一応直しておく

hoge *p = (hoge *)nanika_no_memory_block;
p->piyo = 100;

C形式のAPIとの互換性のためにアドレス値が扱える言語は多いが
>>643の言う通り、アドレスを表す整数、ってだけの場合も多い
他の高級言語はオブジェクトに色々な機能を持たせるために
複雑なメモリレイアウトをしているものなので
適当なメモリブロックのアドレスを適当にキャストして
まるで、ネイディブオブジェクトであるかのように扱う、ということが出来

657 名前:ノくい
(C++ですら仮想関数テーブルを持っているとアウト)
なので、素のメモリブロックを扱う場合はC/C++のポインタが便利
C言語はナカナカにツボを押さえた設計になっている
[]
[ここ壊れてます]

658 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 03:56:34.58 ID:gLmtVUjO.net]
int main(void) {
int a, b, c;
char x[100] = { NULL };
while (1) {
〜処理〜
printf("終了します。何かボタンを押してください\n");
scanf("%s", x);
if (x != NULL)
break;
else if("\n")
break;
}
return 0;
}

ループを抜ける処理でこんな感じで書いてるんですが
これだと何らかの文字列+エンターキーを押さないと抜けれないんですよね・・・
printf("終了します。何かボタンを押してください\n");
のあとエンターキーを押すだけでもループ終了して終わる方法はないですか?

659 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 04:09:14.61 ID:w2UiNhNS.net]
getchar();

660 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 13:06:33.76 ID:3KJHgwTr.net]
fgetsで1行読んで、余分な入力ごと読み捨て。

661 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 13:24:31.62 ID:tCo7CGq4.net]
> char x[100] = { NULL };

> if (x != NULL)

Qの炎上学習法か何か?

662 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 13:50:18.25 ID:rGvjr77j.net]
Q は C++ メインでやってるよ
mevius.2ch.net/test/read.cgi/tech/1434079972/



663 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 14:16:47.62 ID:tCo7CGq4.net]
>Q は C++ メインでやってるよ
自分のことQっていうの、キモいぞ

664 名前:デフォルトの名無しさん [2017/09/14(木) 18:48:11.80 ID:aF7eMqZx.net]
c言語で書かれた稼働しているプログラムの中のある変数のアドレスを取得したいです
プログラムを一切変更しないでこれを実現させることはできるのでしょうか?

665 名前:片山博文MZ mailto:sage [2017/09/14(木) 18:49:32.29 ID:qDyTdV0Q.net]
>>652
Windowsなら「プロセスメモリー」で検索。

666 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 18:51:23.24 ID:QiPMm0Hr.net]
最適化でレジスタに割りあたっちゃった変数はアドレスとれない

667 名前:デフォルトの名無しさん [2017/09/14(木) 18:59:38.50 ID:aF7eMqZx.net]
>>653
すみません
環境はlinux2.6です

668 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 19:24:54.84 ID:N62cmPAo.net]
アドレスを取る理由は?
ほんとはなにしたいの?

669 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 19:27:33.65 ID:T7H5P+6p.net]
そもそも自動変数なら>>654の話もあるし複数回呼ばれる関数なら呼ばれる度に異なるかもしれない
更に再帰とかマルチスレッドなら同時に複数存在してるかもしれない

670 名前:デフォルトの名無しさん [2017/09/14(木) 20:49:36.03 ID:aF7eMqZx.net]
ある関数ポインタに任意の関数を代入して実行させたいのですが
プログラム内の変数同士の相対的なアドレスを調べるというのも難しいのでしょうか?

671 名前:片山博文MZ mailto:sage [2017/09/14(木) 20:52:51.63 ID:qDyTdV0Q.net]
>>658
ソースもデバッグ情報もなければ、逆コンパイラを使ってアドレスを調べるくらいしか思い付かない。

672 名前:デフォルトの名無しさん [2017/09/14(木) 21:10:46.05 ID:aF7eMqZx.net]
自己解決しました
お騒がせしてすみません



673 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 22:09:02.75 ID:eKK5ja5H.net]
関数内にあるクラス定義の型だけ違う関数ってどう作れば良いんですか?

void Command::add()
{
Command cm;->これをCommand2 cm;にしたい
以降処理を記載

}
初歩的な質問ですいません。
同じ関数を何個も作る必要があり手間です><
ロベールとかを見ても仮想関数とかアップキャストとか継承とかオーバーライドとかひと通り見ましたがわかりません。

674 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 22:17:41.81 ID:vjSz//mI.net]
関数テンプレート
マクロ
defineして#include

675 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 23:51:59.63 ID:eKK5ja5H.net]
問題解決しました。
ありがとうございます。

676 名前:デフォルトの名無しさん [2017/09/15(金) 02:25:25.95 ID:z+aMp6by.net]
>変数同士の相対的なアドレス
引き算してはならない。ただし、同一の配列の要素どうしなら、引き算は、意味ある

677 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 02:39:59.15 ID:NePdqYQx.net]
何かをハッキングしようとしてますね。

678 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 05:27:31.76 ID:qOhstmGW.net]
staticなメンバしかないクラスがあるんですけど
これもうnamespaceでいいですよね?

679 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 09:53:35.90 ID:Rd6409Qg.net]
いいよ

680 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 12:08:47.50 ID:LbVH6Dx6.net]
ADLとかとの兼ね合い

681 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 17:45:57.17 ID:s+L1DjZB.net]
>>667
>>668
なるほど参考になりました。

682 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 23:02:46.17 ID:JcByp9p4.net]
>>664
>>変数同士の相対的なアドレス
>引き算してはならない
んなこたーない



683 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 23:11:51.68 ID:F2zb0zkw.net]
C/C++的にはダメ

684 名前:はちみつ餃子 mailto:sage [2017/09/17(日) 01:58:27.90 ID:jnHDU3kL.net]
まあ動いちゃうときも多いと思うけど、やっちゃ駄目だよー

685 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 02:12:21.90 ID:2kxiy1Rb.net]
ダメな例出して

686 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 05:58:54.94 ID:lvKagVu8.net]
>>673
int a;
int b;
auto c = &b - &a;

687 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 06:01:41.65 ID:2kxiy1Rb.net]
auto使いはやっぱり馬鹿だった。

688 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 06:19:33.65 ID:lvKagVu8.net]
バカとしか書けないのかよ w

689 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 12:32:24.59 ID:/dX18QMc.net]
>>671
だめなこんきょ出して

690 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 12:49:17.96 ID:lvKagVu8.net]
>>677
規格嫁

691 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 12:51:42.31 ID:/dX18QMc.net]
出せねーんだろププ
auto使いはやっぱり馬鹿

692 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 13:02:11.76 ID:ZH0tEj4R.net]
自分だけはバカじゃないという前提



693 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 13:31:56.70 ID:/dX18QMc.net]
お、自分のばかを自覚したんだね
はいよくできました

694 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 14:23:53.26 ID:dpOLvFr5.net]
性格超悪そう

695 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 18:01:33.39 ID:dpEZdIyz.net]
ここで問題です。
 struct A { int x1, x2; } a;
 auto d = &a.x1 - &a.x2;
これは規格違反でしょうか

696 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 19:10:18.83 ID:iyMogwhx.net]
#include <stddef.h>
offsetof(type, member-designator);

697 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 20:31:22.48 ID:e7NF75Gx.net]
変数内のレイアウトと 異なる変数のギャップと同じに取り扱っていいものなのかな

698 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 20:47:23.92 ID:7AbJQaK5.net]
現行規格の5.7/p6では未定義動作となっていて
他に許可する記述は見つけられなかった

699 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 22:50:49.91 ID:lvKagVu8.net]
規格も読めないアホにつける薬はないってことかな w

700 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 04:40:38.13 ID:v1M3pcaa.net]
こういうアホな話になるのはauto使いはscript kiddie脳だから。
処理系に対する理解が皆無。

701 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 05:41:38.61 ID:eqWC6Q8G.net]
具体的な指摘もできないアホ乙

702 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 22:38:10.49 ID:NO4WPNQ6.net]
>>675
ちなみに聞くけど
cが何型なのか知ってるよな?



703 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 01:28:21.18 ID:31UnpjJ8.net]
な? auto使いは馬鹿だろ。

704 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 01:34:34.23 ID:piJXswiP.net]
>>671 >>686
で終了なのに
なにか文句を付けなきゃ気がすまない人がいるみたい

705 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 07:25:15.69 ID:mhsU1MGa.net]
> ダメな例出して
って啖呵きったらさくっと出されて発狂中

706 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 06:34:18.36 ID:OnyIuiaa.net]
頭が悪すぎて相手にされないauto使いかわいそう。

707 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 09:28:21.53 ID:asC30w7v.net]
>>692
アドレスの話をしていたのにポインターの例にすり替えられた
と言われる恐れがあるので5/p4も加えておかないと
但し符号有り整数で減算した場合には未定義動作にならない

708 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 09:29:48.92 ID:asC30w7v.net]
○ 符号無し
× 符号有り

709 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 11:48:00.61 ID:OnyIuiaa.net]
どうやらauto使いというのはCにおける未定義の意味を勘違いしてるようだ。
まだほとんどコードを書いたことがない初心者なのだろう。

710 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 11:53:50.86 ID:OnyIuiaa.net]
> 他に許可する記述は見つけられなかった

面白い発想だな。Cを高級言語だと思ってんだろうな。これは笑える。

711 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 12:00:13.05 ID:hAn/VwKR.net]
>>671 >>686 で終了
納得できない人がいるみたいだけど

実質問題無いのはその通り
問題がある事例を私は知らない

ただ言語の規格上は未定義

712 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 12:36:06.37 ID:OnyIuiaa.net]
メモリがリニアでないバンク方式やセグメント方式の処理系を知らないとは無知だな。
far、near知らないとか最近勉強し始めたのだろう。

Cは低級言語。処理系依存を書く言語。
コンパイラが勝手に処理系に依存した定義をしろってこと。



713 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 14:25:01.86 ID:hAn/VwKR.net]
nearだろうがfarもセグメント方式だろうが
a-b+b=a+b-b=aになるけど
ほとんどの環境で

なんてことは知らないか

714 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 14:29:11.52 ID:hAn/VwKR.net]
> 処理系依存を書く言語。
わざわざ依存した書き方をしなくていい
依存しないでデメリットなくかけるなら依存しない方法をとるのが普通

ていうか、
言語的に保証されてないアドレスの減算の処理などコンパイラの説明書に普通書いてないが、
誰が責任を取るつもり?

715 名前:はちみつ餃子 mailto:sage [2017/09/27(水) 16:20:12.02 ID:yRzprl02.net]
強力な最適化コンパイラはプログラマが未定義を踏んでいないことをあてにした最適化をすることがある。
「ほとんどの環境で大丈夫」なんていうのは現代では思い込みだよ。 全然大丈夫じゃない。

716 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 17:12:16.04 ID:7dA/9JOQ.net]
未定義の動作だからその文丸ごと消しちゃっても構わないよね
って最適化がかかってバグった話は、どこかで読んだな

717 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 18:35:30.13 ID:Ep3hxvTm.net]
>>703
offsetofとかいうマクロの中身を見てみようか

718 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 18:37:06.64 ID:Ep3hxvTm.net]
いずれにしろ、
言語上未定義なコードをわざわざ書くのはアホ
>>700とか

719 名前:はちみつ餃子 mailto:sage [2017/09/27(水) 20:20:25.41 ID:yRzprl02.net]
>>705
何を言いたいんだ?
offsetof の中身が何を意味してるって?

720 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 20:32:56.04 ID:r7aVrRwL.net]
バカにマジレスみっともない

721 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 21:11:03.19 ID:hAn/VwKR.net]
>>707
中身見た?

722 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 21:14:39.99 ID:7dA/9JOQ.net]
offsetofはコンパイラメーカーが用意するものだから
意味合いが違ってくるのでは?



723 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 21:15:50.58 ID:hAn/VwKR.net]
なにも考えずに互換性を減らすコードを書くのはアホ

使う環境が限られているのに、互換性を理由に明確なメリットがあるコードを避けるのもアホ

724 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 21:17:57.15 ID:m77m4D83.net]
また未定義、未規定、処理系定義の違いもわかってない>>700が暴れてるのか
autoに粘着してるところを見ると新しいものについていけなくなった老害なんだろうな w

725 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 21:18:58.16 ID:7dA/9JOQ.net]
それとoffsetofに何の関係が?
offsetofはコンパイラメーカーが用意したんだろうから
少なくともそのコンパイラでは動くようになってる
だからといってどうこうという話は一切ない

726 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 21:22:31.36 ID:hAn/VwKR.net]
offsetofは>>703への反論

727 名前:デフォルトの名無しさん [2017/09/27(水) 21:26:08.14 ID:7dA/9JOQ.net]
>>714
>>703とoffsetofに何の関係が?
offsetofはコンパイラメーカーが用意したんだから
少なくともそのコンパイラで動くようになってる
これをもってして、どうこうという話はない

728 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 21:38:58.24 ID:hAn/VwKR.net]
offsetofがどうやって出来たかも知らんとは
じゃあ逆にうまく動かない具体例を知ってる?
たいてい内部は

729 名前:スだの整数演算だぞ []
[ここ壊れてます]

730 名前:はちみつ餃子 mailto:sage [2017/09/27(水) 21:51:01.70 ID:yRzprl02.net]
>>716
いいえ。 たとえば GCC は __builtin_offsetof を持っていて、 offsetof マクロはこれに展開されます。

731 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 22:05:03.95 ID:7dA/9JOQ.net]
だからoffsetofはコンパイラメーカーが用意したもので
自分たちが自分たちの製品用に用意したんだから動くのは当たり前だろ?
offsetofは動くが(そりゃコンパイラメーカーが用意したんだから当たり前)
だから何なんだ?

nullptrが好きみたいだから
https://cpplover.blogspot.jp/2015/12/blog-post_21.html
↑を読んでみると良い
それもじっくり読んだほうが良い
こういった不慮の事故があるから未定義動作は避けるべきというのは当たり前では?
↑のプログラムが未定義動作で最適化でコンパイラで削除されるのに
offsetofは最適化されずに残るってのは非常に興味深い微妙な部分なんだよ
やってることはヌルポインターの参照で同じことなんだがな
こんなのさじ加減なんで、何が起こるか分からない

732 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 22:44:20.00 ID:Ep3hxvTm.net]
>>717
具体例は?



733 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 23:48:58.08 ID:/q7ePKPV.net]
具体例が無いと>>702-704,718の懸念は認められない。
などと思っているならこいつはとんだアホウだ

734 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 06:23:37.76 ID:kmv+HSxh.net]
具体例が出ないことは>>701の証拠となる

735 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 06:28:56.63 ID:kmv+HSxh.net]
つまり>>700の否定だ

736 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 06:46:37.21 ID:0QfR7+Yk.net]
そもそも>>717は具体的な例だし>>719の考える具体例ってなに?

737 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 07:37:45.60 ID:kmv+HSxh.net]
元は>>652だな
それに続く>>658の1部だけを抜き出して>>664の書き込み
目的がこの時点でそれて、これ以降アドレスの減算の話になる

ダメな例ってのはアドレスの減算を行って実際にうまく動かない例
オフセット分を戻すことで有効アドレスで使うことになるので、>>701で実際に元に戻らない環境を多く示せばいい

言語規格上保証されてないことは>>670>>677以外は知っている

738 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 10:53:55.67 ID:Ktm1uHRp.net]
それとoffsetofが何の関係があるのか、と聞いているわけだが

739 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 11:32:16.87 ID:Q/eIhlb2.net]
offsetofは未定義とされるコードが処理系のライブラリ内で使用されていた例。
「具体例」は単に実際に問題となる例を出せと言っているだけ。
両者は無関係だが>>705>>715を理解する知能が無かったのが残念。

740 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 11:35:32.70 ID:mxHsq9Is.net]
offsetofと同様の自作マクロがたくさん使われてる
ということを知らないとは

ていうか、順番が逆だ

色々な所で使われてるから標準化された

741 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 11:37:25.53 ID:mxHsq9Is.net]
>>725
offsetofの中身を見れば関連がわかる

742 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 11:46:41.60 ID:cnz4JX/W.net]
きっと>728の使ってるコンパイラでのoffsetofの定義には我々の想像も付かない何かが書いてあるんだよ。
他の人の使ってるコンパイラでも同じことが書いてあるはずだと思ってる理由はわかんないんだけど。
>728はその「offsetofの中身」を明示して話すといいんじゃないかな。知らんけど。



743 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 12:01:16.61 ID:Q/eIhlb2.net]
>>727
>色々な所で使われてるから標準化された
お前のパソコンに保存されてる自作マクロには興味ないけど、
offsetofは機能性を規格化しただけで実装は規格化されてないぞ

744 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 12:44:17.37 ID:mxHsq9Is.net]
0番地を構造体のアドレスにキャストして、メンバのアドレスに変換して、それをそのまま整数にキャストする

ってマクロ、昔は一般的に使われてたんだけど
知らないか

>>701の根拠のひとつ

いずれにしろ、
反例がひとつも出て来ないようじゃそんな根拠もいらないね

745 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 12:45:47.97 ID:mxHsq9Is.net]
>>700はトンチンカンで、
>>703も説得力ゼロ

ってことで

746 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 14:59:31.87 ID:RoqMj8TI.net]
ぬるぽ使った自作offsetofがすべての処理系で正常動作するとは限らない
って話じゃないのけ?

747 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 16:36:34.69 ID:P9MlpSyZ.net]
ぬるぬるぽっぽっぽ

748 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:14:43.67 ID:Ktm1uHRp.net]
>>726
offsetofはコンパイラベンダーが用意したのだから動くのは当たり前では
俺らからしたら、未定義動作、処理系依存、実装依存、であっても
コンパイラベンダーからしたら、仕様なのでは?
特にコンパイラベンダーは究極的にはコンパイラの仕様を変更することも
出来る立場なので

749 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:44:25.04 ID:kmv+HSxh.net]
>>733
ほとんどの環境でうまくいく
だから良く使われている

そうじゃないっていうなら
うまくいかない例を出して

っていう話

750 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:45:14.20 ID:kmv+HSxh.net]
>>735
壊れたレコードプレーヤーか?

751 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:47:54.52 ID:Ktm1uHRp.net]
壊れたレコードでも何でもいいけど
説明求む

752 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:52:01.14 ID:kmv+HSxh.net]
日本語が通じない人に説明は不可能
おれは>>726じゃないし



753 名前:はちみつ餃子 mailto:sage [2017/09/28(木) 18:52:29.72 ID:pSALrJPI.net]
なんでそんなに仕様に違反したいんだ?
仕様に違反すべきではないってことにそんなに根拠が必要か?

754 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:52:32.31 ID:kmv+HSxh.net]
とりあえず落ち着いてスレを読み返しな

755 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:54:33.80 ID:kmv+HSxh.net]
>>740
違反したいなんて思ってるのは>>700くらい

メリットがあれば違反することもある
簡単な代替手段があれば違反しない

756 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:57:08.19 ID:kmv+HSxh.net]
そもそも、どの環境でも正しく動く保証がある意味のあるコードなんてないから
どのコードもある程度環境を前提としてる

757 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:09:22.17 ID:Ktm1uHRp.net]
そんな唐突な、そもそも論は、要らないだろ
程度問題だろ
C/C++の仕様的にはNGでも、コンパイラの仕様書にOKって書いてあればOKなんじゃね?
例えば int は 32bit 整数ですって書いてあれば、そういう製品仕様として納得するし
ただ、offsetofをもってしてOKと言えるのかどうか

758 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:14:42.61 ID:kmv+HSxh.net]
だからダメな例を出せって
>>699に対して反論したいなら

759 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:16:02.07 ID:kmv+HSxh.net]
コンパイラの仕様書に書いてないよ普通
ポインタのビット数が書いてあるだけで

760 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:19:48.44 ID:Ktm1uHRp.net]
>だからダメな例を出せって
そしたら逆にコンパイラの仕様書でOKって書いてある例を出せ
って話になるでしょ
無ければグレーゾーンになるわけだ
まさに未定義

761 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:30:52.46 ID:kmv+HSxh.net]
日本語が通じない人が多いなあ

とおもったら同じ人か

762 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:38:01.58 ID:DuCN1h4Q.net]
>>745
だから>>717で反例でてるだろ
C++で&演算子を定義されたら簡単に破綻する
https://stackoverflow.com/questions/400116/what-is-the-purpose-and-return-type-of-the-builtin-offsetof-operator/406941#406941



763 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:41:37.10 ID:kmv+HSxh.net]
またトンチンカンな例を
話の流れくらい理解してから書け

764 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:50:55.33 ID:Ktm1uHRp.net]
そりゃ誰もお前の中だけの勝手な話の流れなど知ったことではないだろ

765 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 20:20:35.35 ID:N5fP/7zq.net]
>>750
トンチンカンとしか言えないなら黙ってろよw

766 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 21:45:26.80 ID:kaEtfd73.net]


767 名前:純な話、ベンダー提供のマクロで言語仕様上保証されないような使い方がされていたとして、
そのマクロ自体の動作はベンダーが保証しても同じコードがそのマクロ外で保証されるわけじゃないよね。
実際には動くかもしらんけど。
[]
[ここ壊れてます]

768 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 22:24:40.88 ID:1QGPZBPb.net]
最近また片山老人が暴れてんの?

769 名前:片山博文MZ mailto:sage [2017/09/28(木) 23:35:41.44 ID:Msp1dHAD.net]
昔は学生運動が一大イベントだった。鉄砲の音が聞こえたら、学生たちが一斉に走り回る。それは軍隊のように団結力のある集団だった。

770 名前:片山博文MZ mailto:sage [2017/09/29(金) 00:24:14.89 ID:BT8GgIQb.net]
って昔話でもさせるのか?

771 名前:はちみつ餃子 mailto:sage [2017/09/29(金) 00:55:18.83 ID:qoI7k83w.net]
>>753
「こんな最適化するのか!」って思うようなピンポイントな最適化は有るから、
逆にピンポイントな例外だってありそうよね。

772 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 06:49:45.56 ID:hLpF+zSQ.net]
>>753
マクロとそれを展開したソースで動きが異なるってこと?
さすがにそれは考えにくいと思うけど



773 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 10:16:34.25 ID:xgACZlxS.net]
>>736
すべての環境で動作する保証が無い=環境依存

774 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 11:32:53.08 ID:7lA4sLJU.net]
お前らが何を話しているのかわからん
相手に何を伝えたいのか
お前らは何を訴えたいのか
何も見えてこない
俺がないならもうやめろ

775 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 12:45:07.45 ID:tIQyCYwJ.net]
俺の主張は>699

776 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 12:46:04.43 ID:tIQyCYwJ.net]
主張内容に興味無いけど

777 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 21:46:50.94 ID:1R/L2hD7.net]
>>761
またおバカループかよ w

778 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 22:31:02.23 ID:+VZzhu5A.net]
>>761>>671の『C/C++的』の意味が共有できているといつから思っていた

779 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 01:55:47.47 ID:+yH9ha/d.net]
ちょっと不可解な部分があったから質問させてくれ

string型のデータをサーバに送信したくてOSSの関数に渡しているんだが、
データが一部壊れてしまう
問題のコードは、

string str = "{id:abc, ... , }"
void* payload = (void*) str.c_str();
send(payload, str.length());

これをやると、先頭の5バイトがうまく入らない
いくら考えても全然理由がわからず、意味のないことだと思いつつも以下のコードを書いてみたら何故かうまくいった

string str = "{id:abc, ... , }"
char* tmp = (char*)malloc(str.length() * sizeof(char) + 1);
strcpy(tmp, str.c_str());
payload = (void*)tmp;
send(payload, str.length());

下のコードを使えばうまく動いてるから問題ないんだけど、上のコードがダメな理由がわからずすごく気持ち悪い。
何か上の例だとまずい部分があるのかな?

送信関数は以下
send(void* payload, size_t length);

環境はVC++ 2012
Windows 7 64bit

ちなみに、同じコードを別環境(gcc 4.4.7 Cent OS 32bit)で動かすと、両方うまくいった

780 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 02:12:16.55 ID:/jgYbdHq.net]
>>765
c_str()ってどんな関数?

781 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 02:45:21.56 ID:mQbjCOfm.net]
非同期やbufferedの関数を正しく使えてないんだろ
たしか以前にboost.asioかなんかの同じような質問をきいたことがあったような

782 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 06:20:03.02 ID:BNa/frNM.net]
ASIOといえば
Audio Stream input output



783 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 07:12:02.93 ID:7qICbiUO.net]
そのインターフェースで非同期なのに 内部で実体のコピーをとってない場合とかだと
実際に送信完了するまで 渡した引数の実体が生きて

784 名前:髟K要があるね []
[ここ壊れてます]

785 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 09:19:09.47 ID:fdjE74yE.net]
void *型を使う意図について

786 名前:765 mailto:sage [2017/09/30(土) 10:38:13.12 ID:+yH9ha/d.net]
みんな回答ありがとう。

>>766
string型のメソッドで、文字列をconst char*にするやつ

>>767,769
非同期送信にはなってるんだけど、sendの後に送信結果を受け取る関数を呼んでる。
そのあとでpayloadは解放されるようになってるから、送信完了までは実体は生きてると思う

>>770
OSSの関数がそう定義されてるから変換したんだ


{id:abc. ... , }
のうち先頭5文字の{id:aがおかしくなってるんだよね・・
Wiresharkでみると、バイトコード88ってなってたけどなんでそうなったのかが全然わかんない

787 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 10:53:58.34 ID:V/gsXwon.net]
>sendの後に送信結果を受け取る関数を呼んでる。
>そのあとでpayloadは解放されるようになってる

ならそのsendのバグか他でのメモリ破壊だろ
そのコード自体には問題はない

788 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 11:13:57.36 ID:8c7P82E8.net]
>>771
まず
> send(payload, str.length());
を実行する時にpayloadの指す先が正しいか切り分けしなよ

789 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 11:28:17.88 ID:tI4TVI1o.net]
問題点の切り分けは大事だな
元のソースを問題が再現する最小限のところまで切り詰めてみるとか
その過程で問題が起きなくなったら関係ないと思って切り詰めたところが原因だろうし

790 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 13:47:25.00 ID:jk0Saihc.net]
どうおかしくなってるのか分からない
"{id:abc, ・・・"が"XXXXXbc, ・・・"となる(ascii 88 = 'X')ってことなのか

791 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 23:34:44.40 ID:WG2DMprw.net]
すいません
メモ帳ソフトのTextTreeみたいに
タブを並べられて、そのタブごとに個別のツリーを格納するには
どうしたらいいんでしょうか?
ttp://www.vector.co.jp/magazine/softnews/080129/images/n08012931b.gif

なんでここで聞くかというと
TextTreeの開発者のコメントに
「wxWidgets」をいじっていたので、これを使って作ってみようと思った、というのがあって
そのwxWidgetsのHPに
wxWidgets is a C++ library〜
と表記されていたからです。

普通のメモやテキストエディタは
ツリー>タブ>メモという構成ですが
Texttreeのような
タブ>ツリー>メモという構成が希望ということです。

またTextTreeは、リッチテキストが扱えるものの
文字が65535バイト以上入力できず、それ以上は入力しても消えてしまうバグを抱えていて
どうしてそのような不具合になるのかも知りたいのですが…

792 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 23:53:50.61 ID:xUuIbR05.net]
>>771
> そのあとでpayloadは解放されるようになってるから、送信完了までは実体は生きてると思う

str.c_str() 渡した場合は str の寿命や変更で解放されることになる。
他のどこかで解放されるようになってるとしたら、そんなところに渡してはいけないと思う。

どこかで free されることになってるなら、 malloc したポインタを渡さないと
正しく動かないということで >>765 の結果で当然に思う。

「OSSの関数」というなら具体的な関数を明示すればもっと状況がわかるのに。



793 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 00:34:39.70 ID:QEgiuasJ.net]
>>776
wxWidgets固有のことは知らないけど
タブごとにツリーを用意して各タブに対応する子ウィンドウに配置するだけでしょ
もしくはツリーを一つだけ用意してタブ切り替えのたびに中身を書き換えればいいんじゃない

794 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 02:46:34.57 ID:CsBQRyQX.net]
>str.c_str() 渡した場合は str の寿命や変更で解放されることになる。

いやだから、payload==str は送信結果を受けてから
開放してるって本人は言ってるのでは?

795 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 08:09:58.98 ID:a+6SxdIf.net]
明示的に解放しないstringの方はそこを意識してなかった可能性もあるんじゃね?
非同期ってことは>>765でsendした関数からは一旦抜けてるでしょ?

796 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 09:03:15.51 ID:XhBoqkon.net]
>>776
1つの方法としては
タブが切り替えられる毎にイベント発生するから
タブAが押されたらダイアログAを表示してそれまでに表示されてたダイアログは非表示にする
ダイアログ毎にツリーとリッチエディットを用意したらいい

あとWin32APIスレの方がいいよ

797 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 09:35:07.78 ID:JA+cHEn5.net]
>string str = "{id:abc, ... , }"
>void* payload = (void*) str.c_str();

>>780はpayloadを明示的に解放すんのかよ

798 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 09:52:09.27 ID:a+6SxdIf.net]
してない可能性を挙げたのに「すんのかよ」って俺に言われてもなw

799 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 10:26:50.12 ID:7TdPvZgo.net]
>>780
>>771
>> 非同期送信にはなってるんだけど、sendの後に送信結果を受け取る関数を呼んでる。
>> そのあとでpayloadは解放されるようになってるから、送信完了までは実体は生きてると思う
ってあるからその可能性は低いと思う

800 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 10:32:30.15 ID:qINK5MH4.net]
vc2012だとC++11への準拠はどうなんだろ
c++11以降はc_strも実体を指す保証があるようだけど、
以前は関数内のstatic変数みたいな実装してた気がする・・

801 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 11:40:53.20 ID:Q5nZisR/.net]
>>784
初心者歓迎スレだし可能性は少なくない
GC言語で育ったならポインタをスマポのような何かと勘違いしてるかもしれない
さらにその文章から思い込みだけで検証していないのは明らかだし

802 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 11:49:29.48 ID:o4fxg+Ov.net]
可能性を言い出したらなんでもあり
不毛なレスは止めようよ



803 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 17:35:19.79 ID:ZgS0QfuG.net]
>>785
>関数内のstatic変数みたいな実装してた気が
んなわきゃない

804 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 18:51:26.51 ID:kBDRpd1G.net]
>>788
どういう実装だった?

805 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 19:50:33.30 ID:VzAuCmWc.net]
shared_ptrを戻すメンバ関数があるんですが
引数の条件に一致する物が無い場合、空というのが分かるshared_ptrを返したいんです。
どう書けばいいですか?

806 名前:片山博文MZ mailto:sage [2017/10/03(火) 19:52:37.35 ID:TFSQFt7Y.net]
ヌルポインター返してgetメソッドで確認。

807 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 19:59:11.57 ID:VzAuCmWc.net]
ありがとうございました!

808 名前:はちみつ餃子 mailto:sage [2017/10/03(火) 22:45:38.84 ID:7OuP8h6T.net]
std::optional を使った方がよくない?

809 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 15:03:07.29 ID:B6Js2yoS.net]
>>788
いちいち古いVC入れ直すのめんどいから覚えてるんなら書いてほしいんだが

あと>>765が解決したのかどうかも知りたい

810 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 21:20:20.65 ID:eGyO5ooe.net]
初心者的質問で申し訳ないですが、libファイルの検索仕方を教えて下さい。
includeファイルはgrepかければ見つかりますが、リンクするとき、静的ライブラリ、libファイルの検索はどうすればいいか分かりません。
とりあえず、怪しい奴を片っ端からリンクしますが、それもどうかと思います。
マニュアルに書いてある訳でもないので皆さまどうされてるのか気になります。

811 名前:片山博文MZ mailto:sage [2017/10/04(水) 21:27:51.47 ID:HMkkIXOi.net]
>>795
bgrep使え。リンク方法が書かれているマニュアルを買え。

812 名前:775 mailto:sage [2017/10/05(木) 07:26:13.70 ID:/WMFst6h.net]
ありがとうございます。
ネットで調べるのがメインなので、つい、本はケチってしまいました
bgrepは入れられないので-aでなんとかしてみます



813 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 21:03:39.22 ID:MEVeuXK3.net]
>>794
string s1, s2;のc_str()が共用なわけあるかドアホ
VC++6の時からインスタンス

814 名前:のメモリ返すわ []
[ここ壊れてます]

815 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 21:31:37.51 ID:Px1fI0/v.net]
いちいちけなさんと会話も出来んのかゴミクズが
へー、じゃあ寿命は保証されてるわけか、そんなことはなかったはずだが
>>765の問題は寿命の問題だと思うが、ケチつけるなら正確に書いてくれる?
混乱を招くだけのイチャモンとか何の役にも立たんわ

816 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 23:47:16.81 ID:7Cw6eX8p.net]
c_strは実態をさすけど変更するなって書いてなかったっけ?

817 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 00:14:51.51 ID:M5Ph95zK.net]
03以前は変更された後にc_str()を使うのも、そもそも内部で連続してる保証も無かったはず
今調べたけどdata(), c_str()の呼び出しでも変更される可能性があるらしい(11は大丈夫

818 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 00:46:39.10 ID:AU7JWIym.net]
ポインターを覚えたけど、使いどころが思い付かない
誰か教えて……

819 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 02:11:18.12 ID:El+Xr4aF.net]
>>802
一個のサイズが10KBほどある構造体のソートにでも使えよ

820 名前:デフォルトの名無しさん [2017/10/07(土) 15:35:22.92 ID:cqowZFEs.net]
それポインタじゃなくて整数でよくない

821 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 16:29:02.76 ID:jvf7kHO4.net]
ポインタと整数じゃ概念が違う
整数をアドレスを指し示す用途で使いますよってのがポインタだし

822 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 17:29:30.12 ID:jg4p8iD7.net]
変数とポインターでメモリをずっと使うか取り除くかの違い?



823 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 17:49:35.28 ID:vj+NLXIf.net]
>>802
mallocの戻り値とかsprintfの引数とかで使えばええねん

824 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 19:03:08.66 ID:AU7JWIym.net]
みなさんありがとうございます
規模の大きいデータで使うみたいですね
後は他の関数を飛び越えてアクセスしたい時とか

825 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 11:15:35.68 ID:2tobGFFt.net]
>>805
配列のソートだったらアドレスよりインデックスの方が概念的に適切だろ?

826 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 15:59:13.06 ID:3nxFazlM.net]
p==p_rgh + rho*gh;
とあるのですが意味がわかりません。
p=p_rgh+rho*gh;であるべきと思うのですが、==と=が使い分けされているので
タイプミスではなさそうです。どなたかよろしくお願いします。

827 名前:片山博文MZ mailto:sage [2017/10/10(火) 16:10:57.64 ID:RmsAElXw.net]
>>810
「p==p_rgh」は、pとp_rghが等しいとき1 (true)になり、等しくないときゼロ (false)になる。

828 名前:片山博文MZ mailto:sage [2017/10/10(火) 16:14:41.98 ID:RmsAElXw.net]
>>810
演算子「==」より演算子「+」の方が結合が強いんだった。
「p==p_rgh + rho*gh」は、pとp_rgh + rho*ghが等しいときtrueになる。

829 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 19:02:14.11 ID:z98emhq8.net]
>>810
問題のその式が、if文のカッコの中ではなく、普通に式文としてセミコロンで終わる1行として書かれているなら、ただの誤記の可能性が高いと思うよ。

830 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 19:04:42.99 ID:3nxFazlM.net]
>>812
ご回答ありがとうございます。が、やはりわかりません。
たとえば、
if (p==p_rgh + rho*gh)
{

}
や、q=p==p_rgh + rho*gh;とかならわかるのですが、


p==p_rgh + rho*gh;

と独立しているのでどんな処理をしているのか・・・

831 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 19:11:07.30 ID:+PpsJNG1.net]
>>814
その本をさらせ、話はそれからだ

832 名前:片山博文MZ mailto:sage [2017/10/10(火) 19:12:17.54 ID:RmsAElXw.net]
>>814
そのように独立していれば何もしない。何もしない文をわざわざ複雑に書くことは意味がないので、代入を間違って書かれたと考えられる。



833 名前:はちみつ餃子 mailto:sage [2017/10/10(火) 20:29:28.41 ID:ISsQMV5w.net]
operator== をオーバーロードしてたらなんかすることもあるのでは。

834 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 20:44:10.61 ID:9u7+xOBM.net]
そのコードでググったら流体シミュレーション系のライブラリが出てきたけど
=の誤植っぽいな

835 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 22:40:42.03 ID:0CEF1oXw.net]
>>817
あるかもしれんが、それを書いた奴は底意地が悪いにもほどがあるなw

836 名前:デフォルトの名無しさん mailto:sage [2017/10/11(水) 23:12:25.71 ID:0+NB42kW.net]
糞オーバーロードは死刑で

837 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 08:00:09.14 ID:sPruOUUO.net]
パズルとか頭の体操みたいな意味では
キチガイじみた演算子オーバーロードも面白いんだけどね。

これを業界用語で
"Proving Grounds of the Mad Overload" と呼んだりする。

838 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 08:59:40.90 ID:ILNtvg14.net]
>>817
#define p if(0
#define gh 1) printf("あるわけねーだろ、ぼけ\n")
って定義されてるかもね

839 名前:デフォルトの名無しさん [2017/10/13(金) 01:27:13.01 ID:DZqiVJRN.net]
p ghってなに

840 名前:はちみつ餃子 mailto:sage [2017/10/13(金) 01:31:48.78 ID:cp+QXhjx.net]
>>823
常識的にはやるはずのないことを可能ではあると指摘した私への皮肉だよ

841 名前:デフォルトの名無しさん [2017/10/13(金) 01:43:21.69 ID:DZqiVJRN.net]
で、p ghってなに?

842 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 02:20:13.79 ID:vXJvgE+6.net]
少し遡れよ



843 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 06:55:33.00 ID:kwktlkZb.net]
>>414 の最後のコード部分からの文脈なんだけど…。

この式が何を計算するプログラムか情報が欲しいってことかな。
あるいは "pgr" や "ggrks" みたいなネットスラングと思ったのかも。

844 名前:デフォルトの名無しさん [2017/10/13(金) 07:59:25.08 ID:IEqvHxzW.net]
ぷげはー

845 名前:827 mailto:sage [2017/10/13(金) 11:29:02.31 ID:kwktlkZb.net]
いかんいかん、重要なアンカーを間違えたわ。
もちろん 414 は誤りで 814 と書くつもりだった。

「一連の流れでの p や gh は >>814 に出てる識別子」ってことね。

846 名前:デフォルトの名無しさん [2017/10/13(金) 11:34:16.38 ID:qDJA92iZ.net]
>>829
なるほど
前を見てなかったわ

847 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 13:55:38.78 ID:c4RRY+Fs.net]
webings.net/c/cal/
ここのソースコードをバーチャルスタジオにコピペしてビルドして実行してもHTML形式で表示してくれないんですが
HTML形式で表示するには何が必要なんですか?

848 名前:片山博文MZ mailto:sage [2017/10/14(土) 13:59:57.61 ID:WLIJLkzn.net]
>>831
拡張子が.htmlまたは.htmのテキストファイルとウェブブラウザー。

849 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 13:59:58.35 ID:c4RRY+Fs.net]
ヴィジュアルスタジオでしたすみません

850 名前:片山博文MZ mailto:sage [2017/10/14(土) 14:02:26.81 ID:WLIJLkzn.net]
>>831
そのプログラムは、ウェブサーバー側で実行されることを想定している。

851 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 14:03:11.84 ID:c4RRY+Fs.net]
自分のPCでは無理ですか?

852 名前:片山博文MZ mailto:sage [2017/10/14(土) 14:04:07.85 ID:WLIJLkzn.net]
>>835
ローカルでウェブサーバーを動かせばいい。



853 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 14:04:57.37 ID:c4RRY+Fs.net]
難しいですね・・・

854 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 14:27:50.51 ID:c4RRY+Fs.net]
苦Cまでは勉強したんですがどういう本読めばそういうの勉強できますか?

855 名前:片山博文MZ mailto:sage [2017/10/14(土) 14:33:48.58 ID:WLIJLkzn.net]
ウェブサーバーのインストールくらいは本を読まずに小学生でもできる。
ウェブサーバーについて知りたいなら「ウェブサーバーとは」で検索。
ウェブサーバー側のプログラムは、標準出力にHTMLを出力するただのコンソールプログラムか、スクリプトプログラムだ。
ブラウザーでウェブサーバーにアクセスすると、ウェブサーバー経由で出力されたHTMLが見れる。

856 名前:片山博文MZ mailto:sage [2017/10/14(土) 14:43:24.68 ID:WLIJLkzn.net]
"Content-type: text/html\n\n"
これは、httpヘッダーというものだ。これはHTMLテキスト以外にブラウザーと対話するためのデータだ。
httpヘッダーは、二つの改行コード("\n\n")で終わる決まりになっている。

857 名前:片山博文MZ mailto:sage [2017/10/14(土) 14:56:36.99 ID:WLIJLkzn.net]
ウェブについてはウェブ技術関連だから、C/C++とは別の話になる。スレ違いだから、ウェブ技術板へ行った方がいいかも知れない。

858 名前:片山博文MZ mailto:sage [2017/10/14(土) 15:03:37.69 ID:WLIJLkzn.net]
スレ違いのため、誘導します。

インターネット質問スレ64 [無断転載禁止]2ch.net
mevius.2ch.net/test/read.cgi/internet/1500505753/
ここのスレでウェブサーバーとHTTPの仕組みについて質問するといいよ。

859 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 15:10:51.07 ID:jjVQLoTb.net]
いい加減に書き込みで文字化けするブラウザなんて捨てろよ

860 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 17:42:42.94 ID:3MCmUjcj.net]
>>839
>>840
>>841
>>842
ありがとうございます
web関連の知識になるんですね
他の分野とC言語を結ぶ知識の仕入れ方って難しいですね・・・
最近DBの本を読んでますがこれと何らかの言語を結びつけるような知識の仕入れ方もよく解りません
苦C読んでさぁつぎ何読めばいいのって感じになります

861 名前:片山博文MZ mailto:sage [2017/10/14(土) 17:50:52.07 ID:WLIJLkzn.net]
>>844
Web関係をやりたいのかい? WebではCはあまり使わないよ。使うなら、JavaScript, Java, PHP, Python, RoR, SQLぐらいかな。

862 名前:片山博文MZ mailto:sage [2017/10/14(土) 18:09:28.74 ID:WLIJLkzn.net]
C/C++でWebやるなら、Win32API直接叩くか、cURLのような汎用のライブラリーを使うか、SQLiteかMySQLでデータベースにアクセスするくらいかな。



863 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 18:41:27.96 ID:3MCmUjcj.net]
>>845
webやりたいって言うか上のサイト見たいな事をC言語でもできることにびっくりしたんです

864 名前:片山博文MZ mailto:sage [2017/10/14(土) 19:05:03.99 ID:WLIJLkzn.net]
Cはバッファオーバーフローが起こりやすく基本的に安全じゃない言語であり、バイナリーは、ロックの問題があり、またポータブルじゃないから、サーバー側のアプリではあまり使わない。

865 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 20:01:26.45 ID:kY4tNrcH.net]
安全安全って、お前らバグ仕込みの達人かよ…

866 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 20:17:34.14 ID:q9IpA67V.net]
int c=0;
for(;;) c++;

これだけでバッファオーバーフローって起きるんですか?

867 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 20:23:02.85 ID:4H9yAKfY.net]
無限ループだけどバッファーの確保領域を突破してアクセスするようなコードを吐き出すことは無い
と思う

868 名前:片山博文MZ mailto:sage [2017/10/14(土) 20:43:46.00 ID:WLIJLkzn.net]
>>850
簡単に分かりやすい例を挙げると、外側から来た任意の長さの文字列でstrcatやsprintfなどを使うと危険。
危険な関数は使用禁止してセキュリティの強化された関数に置き換えないといけない。

869 名前:片山博文MZ mailto:sage [2017/10/14(土) 20:59:09.10 ID:WLIJLkzn.net]
だが、残念ながら、教育現場ではバッファの長さを考慮しないsprintfやstrcatを教えているところが今でもある。
標準のC言語ではセキュリティは低いと考えた方がいい。

870 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 20:59:25.10 ID:MqT/JM+M.net]
>>850
アクセスして良いメモリ範囲を越えてしまうバッファオーバーフローと、数値型の変数で表現可能な範囲を超えるオーバーフローは別の話。
そのソースで問題になるのは後者。

871 名前:片山博文MZ mailto:sage [2017/10/14(土) 21:16:55.49 ID:WLIJLkzn.net]
ちっ、俺がstrsafeを移植しないといけないか。

872 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 23:37:16.03 ID:q9IpA67V.net]
>>851-854
ということは、255サイズのリングバッファ作りたいときって

unsigned char buffer[255] = {0};
unsigned char head=0, tail=0;

unsigned char pop(){
if(head==255) head = 0;
return buffer[++head];
}

void push(unsigned char data){
if(tail==255) tail = 0;
buffer[++tail]=data;
}

このサイズチェックのif文なくても大丈夫ってことですか?



873 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 23:48: ]
[ここ壊れてます]

874 名前:06.29 ID:oz/gRrlj.net mailto: お前の例だと255でゼロになるけど
オーバーフローの場合は256でゼロになる
よって必要
[]
[ここ壊れてます]

875 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 00:30:38.33 ID:9R+c2v2L.net]
ひでーコードだ。

876 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 00:40:58.16 ID:4m9/y95n.net]
headがぶっ壊れそう

877 名前:片山博文MZ mailto:sage [2017/10/15(日) 05:20:33.19 ID:3VVV/TO4.net]
>>856
#define BUFSIZE 255
unsigned char buf[BUFSIZE] = {0};
size_t head = 0, tail = 0;

void push(unsigned char data)
{
assert(head < BUFSIZE);
buffer[head] = data;
++head;
if (head >= BUFSIZE) head = 0;
}

unsigned char pop()
{
unsigned char ret;
assert(tail < BUFSIZE);
ret = buf[tail];
++tail;
if (tail >= BUFSIZE) tail = 0;
return ret;
}

878 名前:デフォルトの名無しさん mailto:sage釣 [2017/10/15(日) 09:46:01.53 ID:TMBfPksM.net]
>>856
head &= 255; でチェック不要

879 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 10:09:16.14 ID:IWZc9Obf.net]
単なる例なんだろうけど、バッファサイズ=255って中途半端だな。
buffer[255]にセンチネル置くんならわかるが。

880 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 11:47:13.03 ID:uX83yxiA.net]
>>860
片山センセイ!
unsigned char buf[BUFSIZE] = {0};
て書いてある本と
unsigned char buf[BUFSIZE] = {};
て書いてある本があるんですけど同じでしょうか!?

881 名前:片山博文MZ mailto:sage [2017/10/15(日) 11:57:22.80 ID:3VVV/TO4.net]
>>863
https://cpplover.blogspot.jp/2010/09/blog-post_18.html?m=1

882 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 12:04:53.73 ID:t/hnbV6s.net]
>>861
というポカをするからif分で書いとけよ。
アンド演算子が使えるならコンパイラが
勝手にやってくれる。



883 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 13:58:06.01 ID:Mr2SylDC.net]
すこし譲って % 演算子で

884 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 02:26:41.08 ID:0Qezg1+a.net]
除算より条件分岐の方が速い定期

885 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 06:49:20.44 ID:IzFutT5/.net]
>>856
リングバッファの容量を256バイトにして、
バッファ領域を unsigned char buffer[256] = {0}; と
ちゃんと256バイト分確保すればサイズチェックは不要になるな。

ただし unsigned char の値範囲が 0 - 255 っていう「普通」の環境であること。
char が9ビットとか16ビットの機械/コンパイラもあるんだよね。

886 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 07:00:03.02 ID:IzFutT5/.net]
それにしても >>856 は何やらモヤモヤするコードだと思ったら…

バッファサイズが 255 と半端な値
リングバッファのアクセス関数が push() / pop() て名前
インデクス操作が前置++
tail と head が互いを追い越す可能性(バッファあふれの可能性)

まだあるかな。

887 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 08:04:32.95 ID:iBTaJQF1.net]
>char が9ビットとか16ビットの機械/コンパイラもあるんだよね。
え゛?まじで

888 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 08:18:16.95 ID:ipy+DI/z.net]
>>869
buffer[1] 〜 buffer[255] を使う
っていう大きな問題がある

889 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 08:49:21.72 ID:IzFutT5/.net]
先に == 255 の判定をして 0 に戻すから
範囲外の buffer[255] にアクセスする危険があるのか。

インデクスに前置++は見慣れなくて気色悪い、じゃ済まない問題だな。

890 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 12:53:13.92 ID:TeGVYWUh.net]
>>871
buffer[1] 〜 buffer[254] までじゃね?
まあそれはそれでもやもやするけど w

891 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 12:59:13.25 ID:TeGVYWUh.net]
>>870
俺も実機は見たことないけど

パーソナルコンピューターでは一般に8ビット長だが、DEC PDP-10、IBM 7090、ACOS-6の動作するNECのメインフレームなど、36ビットワードマシンでは1バイトが9ビットであり、charも9ビット長となっている。
www.wdic.org/w/TECH/char

892 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 16:13:16.23 ID:mLqrsWtl.net]
>>872
危険ていうか
一周すれば確実にアクセスする

>>873
え?



893 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 16:14:16.39 ID:mLqrsWtl.net]
>>874
char16bitならもうちょっと身近に

894 名前:デフォルトの名無しさん mailto:sage釣 [2017/10/16(月) 20:14:57.67 ID:e0xkLpP0.net]
>>870
DSPとかだと40bitなんてのもあるよ

895 名前:デフォルトの名無しさん [2017/10/16(月) 21:01:51.62 ID:JAGwlDmF.net]
>>877
ほんとに?

896 名前:はちみつ餃子 mailto:sage [2017/10/16(月) 21:19:32.17 ID:8llzdgRf.net]
>>870
ISO などでは 2008 年に 1 バイトは 8 ビットという定義を決めた。
diode.matrix.jp/LEGEND/BYTE.htm
1 バイトが 8 ビットではない (それなりに広く使われている) アーキテクチャが事実上消えたのは決め手のひとつだと思う。

C でこの定義を採用すると明記されているわけではないので、
C の言語仕様としては依然として処理系定義という扱いのはずだし、
何かの用途に特化したプロセッサでは変則的なものはいくらでもありうるんだけど、
自分で書くプログラムでそこまで想定することはまず無いわな。

897 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 22:10:25.19 ID:7CHwAcHs.net]
処理系を言わないならx86と勝手に解釈していい。charは8bitじゃない処理系もあるとかナンセンス。

898 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 00:03:46.71 ID:gPfxTVwW.net]
vector<string> a;
for(auto i=0; i<20; ++i) a.push_back(" ");
// vector<string> b;
// b.push_back(" ");
て、なんかおかしな所ある?デバッガで size がやたら大きな値になる…
下2行コメント外すと想定どおりになる…もう、わからん

899 名前:はちみつ餃子 mailto:sage [2017/10/17(火) 01:11:42.94 ID:xlsZVRp9.net]
>>881
実際いくつになって、
自分はどういうのを想定してるのか書けよ。
俺らはお前が何を想定してるのか知らんがな

900 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 01:15:35.02 ID:hVetZd8l.net]
そういうときはな。デバッガで調べるんだよ。

901 名前:デフォルトの名無しさん [2017/10/17(火) 04:44:35.63 ID:AOvKqYYR.net]
PICはcharが6ビット。

902 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 07:19:31.01 ID:nwT4mK5H.net]
>>881
size関数のアドレスを表示しているとエスパーしてみる



903 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 08:33:10.47 ID:HbTCC5+E.net]
>>879
えっ?
まだまだ存在してるよ

904 名前:デフォルトの名無しさん [2017/10/17(火) 09:15:45.07 ID:EtZfCwzt.net]
>>879
いや、組み込みの仕事してれば普通にあるから。
してなければ、普通に無いってのも間違いでは無いが、言い切るものでもない。

905 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 09:48:13.45 ID:s7U5ZpjM.net]
だな

906 名前:はちみつ餃子 mailto:sage [2017/10/17(火) 10:10:10.17 ID:xlsZVRp9.net]
>>887
それは「用途を特化したアーキテクチャ」ではなくて汎用的で広く使われているコンピュータなの?
組込み系って普通は何か用途を特化してるものと思うんだけど。

907 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 12:07:40.67 ID:XkjDmgw/.net]
VC で Release ビルドでデバッグトレースしてたりして
あれ、ソースレースできちゃうけど、あまりあてになんねーし

908 名前:デフォルトの名無しさん mailto:sage釣 [2017/10/17(火) 12:09:50.70 ID:kRPJAKch.net]
コンピューターの定義次第やな

株や証券取引に広く使われているFPGAはどういう扱いなの?
CUDAはどうなの?これらもC言語と称している言語で書くが?

この先は宗教戦争になるから止めれ

909 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 13:01:09.70 ID:qd6dTZ1I.net]
「コンピューター」に限定する必要もない
スレタイ見よう

910 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 18:28:45.12 ID:hVetZd8l.net]
verilogやHLSLのどこがC言語なんだよ。

911 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 18:47:35.04 ID:HbTCC5+E.net]
>>893
そんなことを書いてるのはお前だけ

912 名前:デフォルトの名無しさん [2017/10/17(火) 21:42:56.86 ID:0HMqhgUO.net]
>>889
汎用とか特化に食いついてるのではなくて、「事実上消えた」ってところと、「自分で書くプログラムでそこまで想定することはまず無いわな」の部分に食いついているんだけどね。



913 名前:デフォルトの名無しさん [2017/10/17(火) 21:46:38.99 ID:0HMqhgUO.net]
組み込みの世界が特化という点は反論しないし、ぶっちゃけどうでもいい。
でも、特化してるからって、別に消えてないし、仕事で普通に気にしてるし。

914 名前:はちみつ餃子 mailto:sage [2017/10/18(水) 02:21:26.88 ID:8euWiZGY.net]
>>895-896
「それなりに広く使われているアーキテクチャとしては」と限定して書いているのは、
そうでないアーキテクチャでは残っていることは承知しているという意味だよ。
自分ってのはまさに「私」のことなので実際気にする場面に遭遇したことがないし、
それをどうこう言われても俺に組込み系の仕事をして欲しいというのでもなけりゃ何の意味があるのかわからん。

915 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 04:12:20.13 ID:aws8n6lY.net]
C/C++てもう組込用途しか需要無いんですか?

916 名前:はちみつ餃子 mailto:sage [2017/10/18(水) 04:51:52.35 ID:8euWiZGY.net]
んなこたーない。

917 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 05:22:14.83 ID:Wqkl1Wvb.net]
JavaやC#、その他の高級言語、スクリプト言語で済むならそこにはC/C++の出番はない。
組み込み、OS、ドライバ、ハード寄り専用言語と思っていい。

918 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 06:54:18.33 ID:lHCL+31V.net]
>>897
日記のつもりならチラ裏にでも書いとけ
お前が遭遇するかどうかなんてどうでもいい

919 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 07:45:33.63 ID:AKs1AZwU.net]
個人的な主観をさも一般論かのように書かれるのは迷惑だな

920 名前:デフォルトの名無しさん [2017/10/18(水) 08:56:09.82 ID:at3yxigr.net]
>>897
特化してることと、広く使われてるって事は、互いに背反しないんだけど?
君の中では、特化=狭い、と言う定義なのなら、この話はこれでおしまいでいいよ。

921 名前:デフォルトの名無しさん [2017/10/18(水) 09:00:16.16 ID:at3yxigr.net]
>>897
あともう一つ、君の今いる世界が、世間一般とは限らないから。

922 名前:デフォルトの名無しさん [2017/10/18(水) 10:03:33.10 ID:NAca40Iu.net]
並行世界か。



923 名前:はちみつ餃子 mailto:sage [2017/10/18(水) 11:38:55.90 ID:8euWiZGY.net]
>>902
「思う」とか書いてるの、感想以外の何物でもないじゃん。
書いてないことを勝手に読み取るなよ。

924 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 11:55:04.11 ID:LfPioRS3.net]
8bitでない処理系とかの話になるとすぐ荒れるよな
客観的に見ると、噛み付いてる組み込みの連中の方が支離滅裂だよ
脊髄反射する前に一連のレス読み直した方がいい

925 名前:デフォルトの名無しさん [2017/10/18(水) 12:15:35.97 ID:NAca40Iu.net]
VSはよく出来てるからMSから取り上げて国連で管理するべき。

926 名前:デフォルトの名無しさん [2017/10/18(水) 12:16:43.65 ID:NAca40Iu.net]
国連移管後のVSは戦略物資として利用者を追跡するべき。

927 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 12:54:25.64 ID:lHCL+31V.net]
>>907
> 脊髄反射する前に一連のレス読み直した方がいい
ブーメラン乙 w

928 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 13:11:40.64 ID:oy9jxwBz.net]
907だが、本気でそう思うなら頭沸いてるぞ

929 名前:デフォルトの名無しさん [2017/10/18(水) 15:39:35.53 ID:NAca40Iu.net]
病院に連れて行ったほうが良い。

930 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 20:02:41.54 ID:3bYwz/rX.net]
armとインテルだけで世界が回ってると思ってるのかな

931 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 21:03:18.48 ID:lHCL+31V.net]
本気でそう思うからお前らがまず受診してこいよ w
お前らの世間狭すぎるだろ

932 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 23:53:45.00 ID:oy9jxwBz.net]
>>879
>アーキテクチャが事実上消えた
組み込み系じゃない俺でもさすがに消えてないとは思うが、
まず基本的に1バイトの定義がはっきりして、さらにコンピュータの性能進化とともに
特殊な処理系が減っていくならそれ自体は良いことじゃねーの?
>>868辺りからの流れに対して無意味な罵倒してるのはお前らだろ
特殊な処理系を知ってるのがお前らのアイデンティティなの?ww

あと
>>895
>「自分で書くプログラムでそこまで想定することはまず無いわな」
俺もまず想定しないよ、リトルエンディアンですら気にしたことない
気にするのは必要になってからだ、まず必要にならないのに想定してコスト増やすのはただの給料泥棒



933 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 23:59:19.56 ID:oy9jxwBz.net]
間違えた、ビッグエンディアンだった
リトルエンディアンの環境でしか書いたことないし、俺の場合は多分今後も無いので。

934 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 00:31:08.38 ID:4jS9VIw9.net]
Cが使われるような用途ではバイナリレベルの話は必須のはずだが。IF仕様で必ず指定あるだろ。

935 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 08:27:23.91 ID:hylRky7G.net]
引っ込みつかなくなった井の中の ID:oy9jxwBz 乙 w

936 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 09:17:54.41 ID:Guom/JOK.net]
さすがに>>880は乱暴過ぎると思うぞ

937 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 11:09:01.22 ID:Ka5Awqhg.net]
>>ID:lHCL+31V=ID:hylRky7G
>>901
>>910
>>914
>>918
いや、全部ブーメランしてんのお前だから

938 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 12:45:12.45 ID:hylRky7G.net]
>>919
まあcharが8bitはまだわかるけどx86決め打ちとかあり得んよな
よほど井の中の蛙扱いされたのが悔しかったみたいだ w

939 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 13:08:04.36 ID:Ka5Awqhg.net]
俺は>>880じゃないし
他人のレス(>>919)を自分の煽りに利用するなクズが

ハードの制約や特殊な環境というのがCPUにしか無いと思ってる辺り、井の中の蛙はお前
手加減してやってるうちに黙るか謝れ
とっくに論破されてるだろ?

940 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 14:15:39.49 ID:qgTZ/C3n.net]
普通に自信あるなら論点のみ論破して後スルーでよくね?

941 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 21:51:19.20 ID:AKvCLhcx.net]
> ハードの制約や特殊な環境というのがCPUにしか無いと思ってる
引っ込みつかなくなって話をそらそうと必死だな w

942 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 23:46:58.92 ID:6TDKNKTM.net]
ハネウェルの9ビットは汎用コンピュータだけどな



943 名前:はちみつ餃子 mailto:sage [2017/10/21(土) 00:01:02.62 ID:piER3a9b.net]
多くの職をなるべく均等に育成する方針でいたんだけど、
まずはどれでもいいからレベル上げして高レベルの宝の地図をゲットしたら育成なんていくらでも出来るな。
完全に失敗だわ。
仕方がないのでウォルロ北東の高台ではぐれメタル相手にレベル上げしてる。

944 名前:はちみつ餃子 mailto:sage [2017/10/21(土) 00:01:29.50 ID:piER3a9b.net]
>>926
すまん。 誤爆した。

945 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 01:26:13.78 ID:01QdRZD5.net]
どのスレか特定してやる

946 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 08:05:22.19 ID:RIH/f2PJ.net]
ドラクエ9かな

947 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 09:07:27.71 ID:FoEY9rcC.net]
ウォルロ
確定ですね

948 名前:デフォルトの名無しさん [2017/10/27(金) 15:14:51.06 ID:BaiBMwP3.net]
typedef size_t size_type;
こういうコードを良く見るんですが、これは何のためにやってるんでしょうか?

949 名前:片山博文MZ mailto:sage [2017/10/27(金) 15:26:11.40 ID:xRxq9X9w.net]
>>931
型を抽象化して、型の切り替えを楽にするためさ。

950 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 15:47:51.76 ID:C4KpdBNl.net]
conanのようなパッケージマネージャってどうなの?
使ってる人ー?

951 名前:デフォルトの名無しさん [2017/10/27(金) 16:29:53.23 ID:8v9HsLU9.net]
驚きの柔軟剤ふわふわファーファ。

952 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 20:57:21.79 ID:qcblY/zy.net]
クラスの静的メンバー変数って何に使うんですあk?



953 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 21:06:52.03 ID:/LUCvRWS.net]
オブジェクトを横断して共有したい情報の保持
何個実体作ったっけ?ってカウントしたり

954 名前:デフォルトの名無しさん [2017/10/27(金) 21:23:23.67 ID:BaiBMwP3.net]
型を抽象化とはsize_tをsize_typeでオーバーライドすると言う意味で
型の切り替えとはsize_tとsize_typeを使い分けるということでしょうか?
型の切り替えの意味が合っているとしたら、中身が同じものを使い分ける事なんてあるんですか?

955 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 21:44:14 ]
[ここ壊れてます]

956 名前:.01 ID:M7vRAAca.net mailto: 例えば何かの都合でsize_typeをssize_tにした方がよいとなった場合にtypedefを一行変更するだけで済む
他の部分はsize_typeという型で抽象化されているから簡単に切り替えられるということ
[]
[ここ壊れてます]

957 名前:デフォルトの名無しさん [2017/10/27(金) 23:53:57.84 ID:BaiBMwP3.net]
>>938 >>932
やろうとしてることはある程度理解できました。ありがとうございます。
でもsize_typeをssize_tにするようなことはしてないスクリプトにも、このコードは書かれています。
そういうケースに備えて念のために書いておいたほうがいいということなんでしょうか。

958 名前:デフォルトの名無しさん mailto:sage [2017/10/28(土) 00:20:18.16 ID:n4Ie7UZ/.net]
>>939
いや、べつに

959 名前:デフォルトの名無しさん mailto:sage [2017/10/28(土) 05:57:50.48 ID:KtZXeElz.net]
typedef unsigned int Uint;
typedef unsigned int MyResID;
typedef unsigned int MyID;

例えば、Uint だと意味が分からないから、
リソース番号なら、MyResID
自分のID なら、MyID
などと再定義して、用途を分けておくと、見た目にも分かりやすい

「c typedef」で検索!

960 名前:デフォルトの名無しさん mailto:sage [2017/10/28(土) 11:30:31.16 ID:aIwzbvt/.net]
変数名でわかるじゃん

961 名前:デフォルトの名無しさん mailto:sage [2017/10/28(土) 11:45:42.58 ID:UQLb/21G.net]
見た目が分かりやすいからsize_tをsize_typeにすると>>941は思ったのだろうか

962 名前:デフォルトの名無しさん mailto:sage [2017/10/28(土) 12:16:56.59 ID:5IbYoyZ3.net]
>>941
それは見た目で用途が分かりやすいというだけでなく、ある用途の場合だけ型を変更し易いという利点が主じゃないかな?
例えばMyResIDは当初は整数で良かったけど後で文字列に変更したくなったとか。



963 名前:デフォルトの名無しさん mailto:sage [2017/10/28(土) 12:33:49.13 ID:MyIroYJQ.net]
MyResIDは8桁の数字を取り扱うんだけど、
intが16bitの環境に移植することになった…なんて時に便利

964 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 12:46:46.26 ID:KJARTkQB.net]
>>931
よく見るってどこでよく見るの?

965 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 13:08:37.17 ID:0cbtiG+h.net]
テンプレートなんかでよく見るvalue_typeみたいなもんかね

966 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 18:04:33.78 ID:vd1YUsZz.net]
>>900
>組み込み、OS、ドライバ、ハード寄り専用言語と思っていい。
言語系自体(C#/Java) は C/C++ で書かれているんじゃない?C/C++ 以外で記述されたエディター、というのも思い当たらないね

967 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 18:23:56.52 ID:TOtCAKzB.net]
>>948
Atom, Visual Studio Code

968 名前:デフォルトの名無しさん mailto:sage釣 [2017/10/31(火) 18:52:57.69 ID:QkT+8axj.net]
>>948
Vz

969 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 19:10:34.72 ID:xyLQL02T.net]
>>950
あれのマクロは色々参考になった
printf に似たものの実装とかもやってたし



アセンブラで

970 名前:デフォルトの名無しさん [2017/10/31(火) 20:51:58.22 ID:3JCeBBQH.net]
>>949
Electronに使われてるV8がC++だがな

971 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 07:12:46.61 ID:UcxIkq8e.net]
クラス定義でサンプル見るとprivate:が書いてあるのばかりだけど
クラスはデフォルトでpraivateだから書く必要ないよね
可読性のために書いてるの?

972 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 07:32:02.47 ID:qOYb+y+r.net]
>>952
それは英語で書いてるよねって見方と一緒



973 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 08:05:04.65 ID:1pZzHGIc.net]
>>953 俺は書く派。
public や protected と統一されて座りがいいと感じる。
流石に「デフォルトでprivate」を覚えられないわけではない。

974 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 09:32:55.92 ID:hOs9b/I4.net]
>>953
class aaa
{
public:
//メンバ関数−上の方が目立つ?
private:
//メンバ変数−下の方にこそっと?
}
みたいな書き方が一部で流行してるからってだけでは?
実際、流行してるのか否かも知らんが

975 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 19:35:21.85 ID:nkaKR7E8.net]
>>953
綴りも覚えられないようなボンクラは書かないで済むなら

976 名前:書きたくないって思うんだろうな w []
[ここ壊れてます]

977 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 20:04:14.14 ID:qg2RuF/n.net]
こういうクラスメソッドがあれば便利だな〜
一番上にpublicで追加したろ
ってなった時に巻き添えでpublicにしないように

978 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 20:23:43.72 ID:GUg4tmKS.net]
unordered_mapの時間オーダーはランダムアクセスがo(N)で検索がo(1)ですよね?
以下を見ると逆になってるのだすが間違いですよね?

https://qiita.com/h_hiro_/items/a83a8fd2391d4a3f0e1c#all_table

979 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 20:59:34.54 ID:M3kcqSwB.net]
>>959
間違ってない
そのページで使ってる『ランダムアクセス』『検索』の意味(処理の内容)に対しては一覧表の計算量であってる

980 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 21:01:07.22 ID:4wUVM0HB.net]
画像処理についての質問です
下記コードのループ1のframeTestとループ2のframeTest2で出来上がる画像が違うのは何故なんでしょうか?
(frameTestは緑一色、frameTest2は緑赤青の3色)
使っているのはvisual studio2017です

コード codepad.org/IHZhOf8h

981 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 21:20:00.76 ID:xoMVkOKP.net]
TestIm[] が想定してる並びになってない
1回目のループ中に 実は書き壊してるw
なので 2回目のループの時は 参照だけしてるはずなのに同じにならない

インデックスの式 Testwidth*y + x*3 + 0〜2(色)
1行あたりのバイト数が Testwidth で見積もってる式になってるからね

982 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 21:36:50.34 ID:xoMVkOKP.net]
Testwidth * 3 * y + x * 3 + 0〜2
これで望みの形になると思うよ

W * H 次元の空間を 1次元で並べるなら W * y + x
W * H * C 次元の並びは (W * y + x) * C + color → W * C * y + C * x + color
こんな感じ



983 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 21:41:14.25 ID:4wUVM0HB.net]
>>962, >>963
ありがとうございます!!
TestIm[]の添え字がいけなかったのですね…そのようにして実行してみます

984 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 21:56:38.47 ID:GUg4tmKS.net]
>>960
すみません、ランダムアクセスと検索を逆に指してました。
前者がoperator []、後者がfindですよね。

unordered_setは検索がo(1)なのでunordered_mapも同じかと思ってました。
ハッシュテーブル系はo(1)になると思っていたのですが、そうでもないのでしょうか?

985 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 22:44:25.89 ID:M3kcqSwB.net]
>>965
> 前者がoperator []、後者がfindですよね。
これが違う

あのページでいうunordered_mapに対する『検索』は
(key, value)ペアのvalueが指定した値と等しい要素を探す処理(要するに逆引き)のこと
となるとkeyとは無関係な処理なため全要素を順次走査することになるからO(n)になる

986 名前:デフォルトの名無しさん [2017/11/01(水) 23:27:07.64 ID:kBuKLW51.net]
>>965
O(1)になる検索のアルゴリズムなんてねえよ

987 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 23:32:44.98 ID:Oby+I+5u.net]
Hash は、O(1)

HTree とか、衝突(シノニム)時に2分探索になるが、それもまれ

988 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 07:12:51.03 ID:BfnVxeM2.net]
>>967
Hashも知らんのかよ...

989 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 07:23:18.79 ID:b+wcFKOg.net]
検索っていうか、辞書引きだな

990 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 08:18:33.66 ID:KKkRrWi/.net]
本筋と関係ないけど、O(n)とo(n)は意味が全然違うので注意

991 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 09:09:16.73 ID:rFzi+Leg.net]
wacomのサンプルコードについて質問です
wdnet.jp/library/windows
ここのMFCデモのdemobiew.cpp内にある
codepad.org/hUs8JI4t
このlc.lcInExtXはなんの値を指しているのでしょうか
自分の環境ではこの値を適当な定数にしなければペンとカーソルの位置が一致しません

992 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 11:24:52.00 ID:+ai7GGRX.net]
>>966
ありがとうございます。そういう意味でしたか。
unordered_setはkey自体がvalueなので検索もO(1)だという単純な話ですね。



993 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 13:25:09.29 ID:fgcqUQ//.net]
>>972
公式にドキュメントがあるなら一通りは目をとおしな
wdnet.jp/library/windows/wintab#2.3

> 2.3 Wintabの初期化
...
> 2.スケーリングの初期化について
>  以下のように、LOGCONTEXT の値を初期化する事でスケールの設定を行います。
...
> A lcInExtX,lcInExtY にタブレットの入力最大座標

994 名前:sage [2017/11/02(木) 19:37:23.87 ID:Vcb2n/8t.net]
以下,かっこよくなりませんか?
while文の条件がダサすぎるので何とかしたい.
std::array は使わず,2次元の生配列でお願い.

以下,ソース.

#include <iostream>
#include <cstdlib>
#include <fstream>

int main(){
std::ifstream fin( "xxx.txt", std::ios::in );

double data[6][4];
int i = 0;
while( fin >> data[i][0] >> data[i][1] >> data[i][2] >> data[i][3] ){
for( int j=0; j<4; ++j )
std::cout << data[i][j] << " ";
std::cout << std::endl;
++i;
}

return EXIT_SUCCESS;
}

995 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 20:37:36.68 ID:j119FHt+.net]
はい。なります。

996 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 20:43:01.12 ID:RVlmQZC9.net]
十分格好いいです

997 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 20:49:14.23 ID:QvGPm7pP.net]
読むのと書くのを関数に分けるべきかな

998 名前:はちみつ餃子 mailto:sage [2017/11/02(木) 23:14:01.04 ID:4tfXXWiS.net]
>>975

個人的にはこんな感じにするかな……。

#include <iostream>
#include <fstream>

std::istream& operator>>(std::istream& in, double (&data)[4]) {
for(auto& e: data) in >> e;
return in;
}

std::ostream& operator<<(std::ostream& out, double (&data)[4]) {
for(auto e: data) out << e << " ";
return out;
}

int main(void) {
std::ifstream fin( "xxx.txt", std::ios::in );

double data[6][4];
int i = 0;
for(auto& data_line: data) {
if((fin>>data_line).fail()) break;
std::cout << data_line << std::endl;
}

return EXIT_SUCCESS;
}

配列のままがお望みらしいのでこう書いたけど、専用の型を用意した方が綺麗っちゃ綺麗

999 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 00:03:21.41 ID:4eJ/7N9T.net]
>>975
while( [&]{ for(auto& e: data[i]) fin >> e; }(), fin.good() ){
for( auto& e: data[i] )
std::cout << e << " ";

1000 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 00:49:56.36 ID:LOXVFC/o.net]
975です,sage方法すら忘れててすまぬ.
>>976
そのソースを示してくれると嬉しい
>>977
いや,これだと生理的にダメなんすよ
>>978, 979
大層なことするわけじゃないからなるべく短く行きたいんや
>>980
つか,whileの条件式に登場する , は何ぞや,なレベル.
以下のソースだと,ラムダ式部分に警告 expression result unused が出る.
バイナリは吐くが,実行すると大量のコンソール出力があり,
しかも全く読めていないっぽいうえ,Segmentation faultしやがる.

以下,試したソース
#include <iostream>
#include <cstdlib>
#include <fstream>

int main(){
std::ifstream fin( "xxx.txt", std::ios::in );

double data[6][4];

int i = 0;
while( [&]{ for( auto& e

1001 名前:: data[i] ) fin >> e; }, fin.good() ) {
for( auto& e : data[i] ) std::cout << e << " ";
std::cout << std::endl;
++i;
}

return EXIT_SUCCESS;
}
[]
[ここ壊れてます]

1002 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 01:05:35.02 ID:4eJ/7N9T.net]
>>981 https://www.google.com/search?q=カンマ演算子



1003 名前:デフォルトの名無しさん mailto:saga [2017/11/03(金) 01:56:10.83 ID:LOXVFC/o.net]
>>982
カンマ演算子か.なるほど.
whileの条件式に与えたラムダ式を評価してその成否は破棄しつつ
カンマ演算子の右にあるfinがまだ使えるかどうか,
で処理継続の可否を判断している,という理解でいいのかな.

でも,981のソースだと,while文が終わらずに,無限ループに突入しているもよう.
この現象を説明しつつ,問題を解決するソースをくれると喜びます.

1004 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 04:19:30.63 ID:4eJ/7N9T.net]
>>983 >>980

1005 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 06:53:03.34 ID:LOXVFC/o.net]
975です,

>>981 のソースでいう
while( [&]{ for( auto& e : data[i] ) fin >> e; }, fin.good() ) {

while( [&]{ for( auto& e : data[i] ) fin >> e; }(), fin.good() ) {
にしたら正常に動作しました.
まずはありがとうでした.

1006 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 16:37:14.49 ID:t+2N1bPb.net]
c++初心者向けの名著コードない?

1007 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 20:48:45.38 ID:fZH3r81G.net]
お前の頭は既にしてバーコードだろ?

1008 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 20:59:39.93 ID:t+2N1bPb.net]
坊主頭なんだが、ストレスで10円ハゲがたくさんできてQRコードだ。安心しろ。

1009 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 09:57:38.12 ID:io7R91TU.net]
char a[8]="12 34 56";
と言うのがあったとして
これを数値の123456にしたい時、一番速い書き方ってどんなだろうか

1010 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 10:21:35.26 ID:KEPGzX0z.net]
>>989
aの内容は書き換えても良い?
数値は必ず2桁の空白区切り?

1011 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 10:58:19.72 ID:OnkwfBEU.net]
普通に文字列の先頭から、数字が表れたら'0'との差を加算して桁上げして、ってのを繰り返すのが速いと思うが。

1012 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 11:09:08.10 ID:XesRBOxx.net]
>>989 スレッド終盤に面白い問題を出してくれるなぁ。

a[8] と要素数を明示して "12 34 56" を代入する部分に罠の臭いを感じる。
'\0' 終端の一般的なCの文字列ではない、8byte専用のトリックが存在するのかも。



1013 名前:はちみつ餃子 mailto:sage [2017/11/04(土) 11:29:59.70 ID:oNhsu9lL.net]
条件次第ではあるけど、
平均的には標準で用意されている関数を使うのがまともな速さになると思う。
↓こんなの

*std::remove(std::begin(a), std::end(a), ' ') = '\0';

1014 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 11:47:30.29 ID:zGy4Oklk.net]
速さってコーディンクの速さ?
実行速度?

1015 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 11:51:36.02 ID:zGy4Oklk.net]
a[0]*100000+a[1]*10000+a[3]*1000+a[4]*100+a[6]*10+a[7]-'0'*(111111)

1016 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 11:59:30.61 ID:zGy4Oklk.net]
int v = 0;
for (int i = 0 ; a[i] != '0' ; i++){
if (a[i] == ' ')
continue;
v = v*10+(a[i]-'0');
}

1017 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 12:28:06.26 ID:io7R91TU.net]
みんなありがとう
>>991を参考にこんな感じでやってみたけど、どうなんだろうか。
#include <stdio.h>
#include<time.h>
int main(){
char a[8]="12 34 56";
int b;
clock_t c c;
c=clock();
for(int d=1000000000;d;d--){
b=10*(10*(10*(10*(10*(a[0])+a[1])+a[3])+a[4])+a[6])+a[7]-5333328;
}
printf("%d\n%.3f\n",b,(double)(clock()-c)/CLOCKS_PER_SEC);
}
スマホで書いたからミスってるかもw

1018 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 16:35:05.69 ID:NYxCuvMY.net]
次スレ
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1509780815/

1019 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 20:16:28.54 ID:wPtyVAZ4.net]
文字化けしてる奴がMZくさい

1020 名前:はちみつ餃子 mailto:sage [2017/11/04(土) 20:57:59.73 ID:oNhsu9lL.net]
結果を整数で得たいならこういうのでもいいかな。

std::accumulate(std::begin(a), std::end(a), 0, [](int acc, int e) { return std::isdigit(e) ? acc*10+e-'0' : acc;})

1021 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 109日 13時間 50分 32秒

1022 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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