1read 100read
2013年03月プログラム16: 【初心者歓迎】C/C++室 Ver.82【環境依存OK】 (962) TOP カテ一覧 スレ一覧 2ch元 削除依頼
pythonがこの先生きのこるには (747)
36歳のオッサンがC言語を始めたいのだが・・・ (969)
Microsoft Silverlight その9 (428)
C++でXML(主にxerces)やろう! (675)
Excel VBA 質問スレ Part28 (408)
iモード携帯電話用Java(iアプリ) Part22 (893)

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


1 :2013/02/04 〜 最終レス :2013/03/12
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.81【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1354116880/
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
NG推奨:半角にして登録してくだい
◆QZaw55cn4c
/tech/1313183984/

2 :
>>1
80代からテンプレートが変、次代にはちゃんともとどおりにしておくように。

3 :
>>2
どうおかしいのか書けよ臆病者

4 :
モルピグの開発とかやろうと思ったらCとかC++をやったほうがいいですか?

5 :
まずモルピグとは何かの定義からどうぞ。

6 :
>>4
仕様が分からんから何とも言えんが、蔵ならまだしも鯖側の処理は莫大になる可能性があるからCで作ったほうがいいだろうね
全プレイヤーの処理が集中するわけだからね
まずは作ろうと思ってるモルピグの設計からやれ

7 :
C必須だろ。
サーバ処理をPerlとかRubyでやってたら遅すぎて話にならない。
CGIと違って常時接続なうえに、恐らくマルチスレッドも必須。

8 :
Win32API質問箱はなんでキチガイの巣窟(スクツ)なんですか?
なんかwinでC/C++を使うとキチになるじゃと心配です
あとC/C++使っている人にはキチが多いんですか?

9 :
このスレでんなこと書いてるお前もキチ
こんな風に反応してる俺もキチ

10 :
便乗質問
今動いてるモルピグ鯖はCで書いたんだけど、これC++にしたら遅くなる?
クラス使いたいからC++に少しずつ書き換えていきたいんだけども、C++にすると遅くなるともかいた
モルピグ鯖として致命的なほど遅くならないならC++にしたい

11 :
ゲーム系やろうとしてる割にはガキみたいな質問してるな

12 :
「C++にしたら遅くなる」とか言ってるのは
殆どの場合お前みたいな伝聞での思い込みか設計が糞
まともなコード書ける自信があるならC++でいい

13 :
>>8
あのスレに対して強烈な悪意を持って執着している変質者が
継続的に荒らしているからスレが機能していない。

14 :
たまにAPIスレに限らずこの板全体でたまにレス改変があるけど
あれはどうやってるんですか?

15 :
>>10
アホみたいな質問だなおい
C++にしたら遅くなる?とか、例えばCのソースをまんまC++のコンパイラでコンパイルしただけじゃ何も変わらないし
少しずつ書き換えていきたいって思ってるのなら、書き換えないと実際に速度は変わらないからそれで実践しろよ
ま、俺の勘と経験と、あとどこかの記事の情報によると、継承を用いた多態をほぼすべての個所でガンガンに使ったり
した上で、遅くなるとして(Cが100%として)96%くらいだがな
この言葉を信じるも信じないも自由だが、たった4%の為にびくびくするくらいなら、自分で実際に元のコードを残しつつ試してみたらいいと思うよ
ちなみに一番重要なのは「CのコードをC++のコンパイラでコンパイルしたところで速度は変わらない」ってとこな。ベンダによっては違うかもしれないがw

16 :
サンクス
ちょっと書き換える方向でチャレンジしてみるわ

17 :
もるぴぐ作ってる奴ってサーバはやっぱリナックスなのかな。
ウィンドウズは確か同時接続数に限界があったはず。

18 :
#include <stdio.h>
int main(){
int a;
a = 3 + 5;
printf( "3+5は%dです" , a );
return 0;
}
>bcc test.c
>test.exe
>3+5は8です
なにこれ、8って表示したいだけなのに随分面倒だな。
真っ暗な画面に8ですとか出ても退屈で面白くないし。
つーかこんなことやっててゲームなんか作れるの?
数当てゲームとかじゃなくてファイナルファンタジーみたいなやつ作りたいんだよ。
こんなことやってて作れるようになるの?
って最初思ってたけど作れるようになったわw
基礎は重要。
ゲーム作ろうと思い立ってまず書店にC言語の入門書を買いに行ったのは正解だった。

19 :
>>17
俺は鯖はLinuxだよ
Linuxはなぜかwinsock使えないし
Segmentation Faultとか出て落ちまくるから
かなりきつい

20 :
>>13
片山とかいうゴミコテだろ?
あいつ荒らししかしてないだろw

21 :
>>19
>Linuxはなぜかwinsock使えないし
普通にBerkeley/POSIX socketが使えるでしょう、というか、winsock は erkeley/POSIX socket を windows に移植したもの
>Segmentation Faultとか出て落ちまくるから
そりゃプログラムのバグでしょう

22 :
>>19がひどすぎるw

23 :
でもWindows環境(BCC)で問題ないコードをLinux環境(GCC)でコンパイルするとセグメンテーションなんたらよく出るよな

24 :
はあ?

25 :
それはwindowsで顕在化しなかったバグが出ただけだろ

26 :
逆にコードに興味が出てきた

27 :
変数のサイズを覚えるコツってありますか?
longって何バイトだっけ?8バイト?
shortが2バイトだから4バイトくらいか?
いや、そもそもshortって2バイトだっけ?4バイト?
booleanは1バイトだよな?1バイトか?1ビットあれば十分なのに1バイトか?
intって環境によって変わるんだっけ?
という状況に頻繁に陥ります
以前はポストイットに書いてディスプレイの端に貼っていたのですが
ヲタっぽさに耐えきれず剥がしました
そんな今では分からなくなるたびに検索している始末です
覚えるコツがあればお願いします
化学の元素記号を覚えるために「すいへーりーべ・・・」というのがありますが
ああいう語呂合わせみたいなのがあると最高です

28 :
サイズなんて覚えねーよアホか
覚えるにしてもこれくらいだろ
short≦int≦long

29 :
#include <stdint.h>

30 :
booleanとか規格に無いもん持ってくんなよ

31 :
>>28
コーディングしながらざっくり計算したいときとか困らないですか?
malloc( sizeof( long ) * 100 * 100 )
だと、
ああ、だいたい40キロバイトか・・・
ちょっと多いような気がするな、
半分くらいにしとくか
ってな具合にコーディングしながらだいたい見当をつけられるじゃないですか

32 :
必要な時に必要な量しか取らないので気にしない
そんなメモリの確保の仕方はしない

33 :
サイズは環境に依るし、本当に頻繁に陥るなら勝手に覚えてしまうものだと思うが。
いっそのこと毎回毎回 sizeof 表示するプログラムでも書きゃ覚えるんじゃね?

34 :
茶碗 (char 1) と
ショーツ (short 2) は
長いよん (long 4) 、
不老死 (float 4)
ダブルへ伊藤 (double 8)。

35 :
茶碗とショーツは長いよ〜ん♪
不老死のダブルへ伊藤〜♪

36 :
>>32
アプリケーションによっては新規作成するとき等にとりあえず適当な量を確保するだろ
他にはストリーミングのときのバッファサイズとか

37 :
多いような気がする、なんて決め方はしねえよ
値を決めるんなら根拠を持て

38 :
そのうち嫌でも覚えてしまうわ

39 :
バイト数を決めて確保するなら要素数は不定
要素数を決めて確保するならバイト数は不定

40 :
>>27
依存するのなら面倒がらずに sizeof で記述する、でも
書き捨てならとりあえずほとんどの環境で
32bit: sizeof(int)=sizeof(long)=32 と覚えておくとよい
ほとんどの環境で 64bit: sizeof(int)=32, sizeof(long)=64 なのには違和観を覚えてしまうが、なぜこうなってしまったのだろう?
boolean が 1bit なのは自明、short はそのつど sizeof している

41 :
釣りはよそでやってね

42 :
だいたいで量を決めるって根拠が薄いんだけどな。演習だからとかそういうことではなく、自分が決めなくちゃ
いかんことを決められないって話。

43 :
booleanとか無いし、boolのことなら「最低限真偽値を表現できるサイズ以上」でしかない
VC++でもバージョンによって4Byteだったり1Byteだったりするし、そんな○型だから○Byteとか覚えるものではない
どうしてもサイズを完全に指定したいなら、処理系に依存したビットサイズ指定の型でも使えば楽なんじゃないか?

44 :
typedef して word, dword, とかね。

45 :
http://codepad.org/BoeeHL03
このコードって何をやっているのでしょうか?
頭が悪すぎて、この関数がどういう処理をしているのか理解できません。
どなたか、コメントつけて解説してくれませんか?

46 :
WORDとかDWORDとか使うぐらいならshortとかlongとか使うわ

47 :
>>45
機械語なら俺に質問しろ!その2
http://toro.2ch.net/test/read.cgi/tech/1356735624/
アセンブラ 13
http://toro.2ch.net/test/read.cgi/tech/1314512680/
辺りで聞いたほうがいいと思う

48 :
まず何の機種のものなのかを書かないとね〜
機種関係なく、コードの流れとして結果何をやっているかだったら応えられるが

49 :
>>47
ありがとうございます。
ひょっとして、スレチでしょうか?
ソースコードがないので逆アセンブルした物を元にCで書き直しました。
http://codepad.org/Mwek5qUR
出力が110C8531C00・・・となっています。
110C8531D00 = 123456780 (32進数)に近いので、32進数的な何かだと思うのですが。

50 :
ただ、逆汗しても、何もわからないでしょう
それが、何するものなのか、わからないと...

51 :
>>46
いや、その short とか long が環境によって違うので、ラップして好きにかえられるように、と。

52 :
>>51
手抜きのつもりが#ifのネストですごいことになるんだよな

53 :
>>40
釣りすぎる

54 :
>>53
し、しまった、8で割るのをわすれてしまった‥‥

55 :
>>54
そういうレベルの問題ではないんだが・・・

56 :
そうそう、もっと根本的な日本語のレベルの問題
>違和観
なんだこれ

57 :
そういう低レベルな話じゃないから

58 :
>>55
http://ideone.com/UlZ9uF
sizeof(bool) は 1 でしたね。
あとなにを間違えているのでしょうか?

59 :
64-bit 環境では
VCは sizeof(long) == 4 で
gccは sizeof(long) == 8
ほとんどの環境でlongが64-bitとか噴飯もの

60 :
longでも環境によって違うってマジかよwwwww
俺のソフトがやばい
あ、それってコンパイル環境のこと?実行環境のこと?

61 :
実行環境で変わるわけないだろ

62 :
だからbit数保証したいならtypedef使えと・・・
stdint.h があるならそれ使うといいが
ない環境を考えるなら自前で定義だな

63 :
C言語でintが64bitでないのは64bit環境ではない

64 :
マヌケはレスする資格無し

65 :
long long と勘違いしているのに 100 ペリカ

66 :
solarisだよ。ううん知らないけど

67 :
unsigned int 同士の足し算で桁あふれ検知したいんだけど
キャストなしで先に検知する方法あるかな

68 :
レジスタ見ればいいんじゃね

69 :
unsigned x,y;
unsigned msk=0xffff; // 32bit
unsigned w=(x&msk)+(y&msk);
unsigned u=(x>> 16)+(y>> 16)+(w>> 16);
if (u>> 16){ ・・・// OF
やっぱフラグレジスタ見れ

70 :
>>61
サンクス
じゃあ安心だ

71 :
int8_t, int16_t, int32_t, int_32_t とか使えばいいんじゃ

72 :
>>67
x86でVC++ならこんな風にできるけど、ちょっとなあ・・・
unsigned int a = 0x80000001;
unsigned int b = 0x80000002;
unsigned int sum;
bool overflow;
sum = a + b;
__asm
{
  jc OF
  mov [overflow], 0
  jmp END_OF
OF:
  mov [overflow], 1
END_OF:
}
// sum == 3, overflow = true

73 :
>>67
ttp://ideone.com/UypVGL
あまり美しくないけど

74 :
2で割って足して、先頭bitを確認するとか?
余った分を足すのを忘れないように

75 :
#define isOverflow(x, y) (((x) + (y)) < (x) || ((x) + (y)) < (x))

76 :
>>75
間違った
×> #define isOverflow(x, y) (((x) + (y)) < (x) || ((x) + (y)) < (x))
○> #define isOverflow(x, y) (((x) + (y)) < (x) || ((x) + (y)) < (y))

77 :
>>76
片方だけでいいんちゃう?

78 :
#define isOverflow(x, y) (~(x) < (y) )
これでいいか

79 :
>>77
#define isOverflow(x, y) (((x) + (y)) < (x))
だけでいいね
>>74
#define isOverflow(x, y) (((x) >> 1) + ((y) >> 1) + ((((x) & 1) + ((y) & 1)) >> 1) >= (1 << (sizeof(unsigned int) * 8 - 1)))
かな

80 :
uint32_t
isOverfloow(uint32_t x,uint32_t y)
{
uint32_t z;
uint32_t a;
a=x%2+y%2;
a/=2;
z=x/2+y/2;
z+=a;
return z&0x80000000;
}

81 :
>>80
ああ、そうだった。
ということで>>79
×> #define isOverflow(x, y) (((x) >> 1) + ((y) >> 1) + ((((x) & 1) + ((y) & 1)) >> 1) >= (1 << (sizeof(unsigned int) * 8 - 1)))
○> #define isOverflow(x, y) (((x) >> 1) + ((y) >> 1) + ((((x) & 1) + ((y) & 1)) >> 1)) & (1 << (sizeof(unsigned int) * 8 - 1))

82 :
いっそのこと64bitで計算して判定すれば?

83 :
今日もWinAPIスレは楽しいな。ここもapiスレ同様に楽しいスレになると良いね

84 :
お断りします

85 :
hogeを禁止しない限りいずれそうなるだろ
今のWin32APIスレと同じで一回糞スレ化してしまったら元に戻すのは容易ではない

86 :
お前がRば平和になるよ

87 :
他人に向かってそういう風に言うように教育さるたんだね。
素晴らしいご両親だ。
あなたのご両親はまさに社会の財産。

88 :
他人に向かってそういう風に言うように教育さるたんだね。
素晴らしいご両親だ。
あなたのご両親はまさに社会の財産。

89 :
他人に向かってそういう風に言うように教育さるたんだね。

素晴らしいご両親だ。

あなたのご両親はまさに社会の財産。

90 :
Sultanだね。

91 :
hogeの話が出るとすぐ荒れるな

92 :
過剰反応する荒らしがいるからな
しょうがない

93 :
ホゲはホゲサイトへ

94 :
C++でshared_ptr常用するようになってしまったんだけど
もうこれJavaに移行したほうがいいのかな

95 :
shared_ptrとjavaに一体何の関係があるんだろう…

96 :
hogeと片山がこないとスレに活気がでないね
>>94
生ポ使わなくなったらもうC/C++は止めれ。Javaに移行せよ
C/C++はhogeと生ポが命

97 :
んなわけねーが、
C/C++ を使うべき所と
そうでもない所は見極めるべきではある

98 :
言語の区別じゃなくてランタイムで区別すべき。
.NETフレームワークはパフォーマンスの点でどうしても
ネイティブバイナリに劣る。そこがわかってれば、何を
使うべきかはおのずと判断がつくはず。
.NETが悪いわけでもネイティブがいいわけでもなく、
適材適所。

99 :
.NETはJITがうまく決まったり、
C++版だとサポートの弱いライブラリだと良いこともある。
スレッド周りの便利さは.NETならではだよな。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
エスパーが質問に答えるスレ (309)
【StarSuite Basic/OpenOffice.org Basic】 (465)
Tapestryについて語ろうよ! (808)
「OS自作入門」 (325)
Ruby で GUI するスレ (395)
フリーソフトなどに使われる言語は? (237)
--log9.info------------------
DSブラウザー向けのページを作ってみようぜ (304)
6hot Navigator登録者サイト評価雑談スレ その2 (228)
   相互リンクの切り方    (937)
モバイルスペースで携帯サイトを作ってる人 (708)
芸能事務所から損害賠償のメールが来て (427)
別サイトへの target="_blank" は利用価値があるか (355)
【target="_blank"】外部リンクは別窓? (478)
【アドウェイズ】Adconmatch専用スレ【ジャネット】 (284)
IE7.0が出たら付けて欲しい機能 (444)
どんなCGIの掲示板をつかっているかスレ (393)
1日1000hitだけどアクセス解析入れました。 (828)
■へぼ制作会社のくせに!!■ (202)
皆で2ちゃんねる系テンプレートを作ってみないか? (459)
【帰ってきた】今日何食べた?@web制作板 (367)
壁紙のダウンロード方法って・・・? (253)
マターリ雑談スレ(女、同人、イラスト立入禁止) (700)
--log55.com------------------
旧帝や神戸って本当にMARCHに勝ってる?
定員絞って偏差値つり上げるワタクさあ・・・
東大蹴りがあり得る私大って創価大学しかないよな
チラ裏part3
そろそろ私文の国立煽りうぜえわ
【急募】日大経済行くか東洋経済いくか
マーカン括りやめにしないか。実際はMARCH >>>関関同立よな
理系って大学院行くならどこの大学でも同じじゃね?