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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
エスケープシーケンスや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デフォルトの名無しさん:2013/02/04(月) 08:07:50.75
>>1
80代からテンプレートが変、次代にはちゃんともとどおりにしておくように。
3デフォルトの名無しさん:2013/02/04(月) 15:32:11.13
>>2
どうおかしいのか書けよ臆病者
4デフォルトの名無しさん:2013/02/04(月) 17:51:35.52
モルピグの開発とかやろうと思ったらCとかC++をやったほうがいいですか?
5デフォルトの名無しさん:2013/02/04(月) 18:04:06.04
まずモルピグとは何かの定義からどうぞ。
6デフォルトの名無しさん:2013/02/04(月) 18:12:29.10
>>4
仕様が分からんから何とも言えんが、蔵ならまだしも鯖側の処理は莫大になる可能性があるからCで作ったほうがいいだろうね
全プレイヤーの処理が集中するわけだからね

まずは作ろうと思ってるモルピグの設計からやれ
7デフォルトの名無しさん:2013/02/04(月) 18:20:31.63
C必須だろ。
サーバ処理をPerlとかRubyでやってたら遅すぎて話にならない。
CGIと違って常時接続なうえに、恐らくマルチスレッドも必須。
8デフォルトの名無しさん:2013/02/04(月) 20:00:46.39
Win32API質問箱はなんでキチガイの巣窟(スクツ)なんですか?
なんかwinでC/C++を使うとキチになるじゃと心配です
あとC/C++使っている人にはキチが多いんですか?
9デフォルトの名無しさん:2013/02/04(月) 20:09:31.19
このスレでんなこと書いてるお前もキチ
こんな風に反応してる俺もキチ
10デフォルトの名無しさん:2013/02/04(月) 20:27:11.01
便乗質問
今動いてるモルピグ鯖はCで書いたんだけど、これC++にしたら遅くなる?
クラス使いたいからC++に少しずつ書き換えていきたいんだけども、C++にすると遅くなるともかいた
モルピグ鯖として致命的なほど遅くならないならC++にしたい
11デフォルトの名無しさん:2013/02/04(月) 21:16:28.92
ゲーム系やろうとしてる割にはガキみたいな質問してるな
12デフォルトの名無しさん:2013/02/04(月) 21:17:50.34
「C++にしたら遅くなる」とか言ってるのは
殆どの場合お前みたいな伝聞での思い込みか設計が糞
まともなコード書ける自信があるならC++でいい
13デフォルトの名無しさん:2013/02/04(月) 21:26:19.93
>>8
あのスレに対して強烈な悪意を持って執着している変質者が
継続的に荒らしているからスレが機能していない。
14デフォルトの名無しさん:2013/02/04(月) 21:31:45.43
たまにAPIスレに限らずこの板全体でたまにレス改変があるけど
あれはどうやってるんですか?
15デフォルトの名無しさん:2013/02/04(月) 21:41:56.35
>>10
アホみたいな質問だなおい
C++にしたら遅くなる?とか、例えばCのソースをまんまC++のコンパイラでコンパイルしただけじゃ何も変わらないし
少しずつ書き換えていきたいって思ってるのなら、書き換えないと実際に速度は変わらないからそれで実践しろよ

ま、俺の勘と経験と、あとどこかの記事の情報によると、継承を用いた多態をほぼすべての個所でガンガンに使ったり
した上で、遅くなるとして(Cが100%として)96%くらいだがな
この言葉を信じるも信じないも自由だが、たった4%の為にびくびくするくらいなら、自分で実際に元のコードを残しつつ試してみたらいいと思うよ

ちなみに一番重要なのは「CのコードをC++のコンパイラでコンパイルしたところで速度は変わらない」ってとこな。ベンダによっては違うかもしれないがw
1610:2013/02/04(月) 22:50:05.80
サンクス
ちょっと書き換える方向でチャレンジしてみるわ
17デフォルトの名無しさん:2013/02/04(月) 22:55:17.51
もるぴぐ作ってる奴ってサーバはやっぱリナックスなのかな。

ウィンドウズは確か同時接続数に限界があったはず。
18デフォルトの名無しさん:2013/02/04(月) 23:15:29.66
#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デフォルトの名無しさん:2013/02/04(月) 23:50:47.27
>>17
俺は鯖はLinuxだよ
Linuxはなぜかwinsock使えないし
Segmentation Faultとか出て落ちまくるから
かなりきつい
20デフォルトの名無しさん:2013/02/05(火) 00:40:18.20
>>13
片山とかいうゴミコテだろ?
あいつ荒らししかしてないだろw
21デフォルトの名無しさん:2013/02/05(火) 00:42:12.11
>>19
>Linuxはなぜかwinsock使えないし
普通にBerkeley/POSIX socketが使えるでしょう、というか、winsock は erkeley/POSIX socket を windows に移植したもの

>Segmentation Faultとか出て落ちまくるから
そりゃプログラムのバグでしょう
22デフォルトの名無しさん:2013/02/05(火) 00:48:47.15
>>19がひどすぎるw
23デフォルトの名無しさん:2013/02/05(火) 01:14:21.26
でもWindows環境(BCC)で問題ないコードをLinux環境(GCC)でコンパイルするとセグメンテーションなんたらよく出るよな
24デフォルトの名無しさん:2013/02/05(火) 01:19:21.06
はあ?
25デフォルトの名無しさん:2013/02/05(火) 01:36:33.15
それはwindowsで顕在化しなかったバグが出ただけだろ
26デフォルトの名無しさん:2013/02/05(火) 01:50:13.12
逆にコードに興味が出てきた
27デフォルトの名無しさん:2013/02/05(火) 01:52:40.36
変数のサイズを覚えるコツってありますか?

longって何バイトだっけ?8バイト?
shortが2バイトだから4バイトくらいか?
いや、そもそもshortって2バイトだっけ?4バイト?
booleanは1バイトだよな?1バイトか?1ビットあれば十分なのに1バイトか?
intって環境によって変わるんだっけ?

という状況に頻繁に陥ります
以前はポストイットに書いてディスプレイの端に貼っていたのですが
ヲタっぽさに耐えきれず剥がしました
そんな今では分からなくなるたびに検索している始末です
覚えるコツがあればお願いします
化学の元素記号を覚えるために「すいへーりーべ・・・」というのがありますが
ああいう語呂合わせみたいなのがあると最高です
28デフォルトの名無しさん:2013/02/05(火) 01:55:17.90
サイズなんて覚えねーよアホか
覚えるにしてもこれくらいだろ
short≦int≦long
29デフォルトの名無しさん:2013/02/05(火) 01:58:30.05
#include <stdint.h>
30デフォルトの名無しさん:2013/02/05(火) 02:06:28.90
booleanとか規格に無いもん持ってくんなよ
3127:2013/02/05(火) 02:12:09.86
>>28
コーディングしながらざっくり計算したいときとか困らないですか?
malloc( sizeof( long ) * 100 * 100 )
だと、

ああ、だいたい40キロバイトか・・・
ちょっと多いような気がするな、
半分くらいにしとくか

ってな具合にコーディングしながらだいたい見当をつけられるじゃないですか
32デフォルトの名無しさん:2013/02/05(火) 02:28:22.88
必要な時に必要な量しか取らないので気にしない
そんなメモリの確保の仕方はしない
33デフォルトの名無しさん:2013/02/05(火) 02:29:59.85
サイズは環境に依るし、本当に頻繁に陥るなら勝手に覚えてしまうものだと思うが。
いっそのこと毎回毎回 sizeof 表示するプログラムでも書きゃ覚えるんじゃね?
34デフォルトの名無しさん:2013/02/05(火) 02:41:12.70
茶碗 (char 1) と
ショーツ (short 2) は
長いよん (long 4) 、

不老死 (float 4)
ダブルへ伊藤 (double 8)。
35デフォルトの名無しさん:2013/02/05(火) 02:45:41.37
茶碗とショーツは長いよ〜ん♪
不老死のダブルへ伊藤〜♪
36デフォルトの名無しさん:2013/02/05(火) 04:07:52.98
>>32
アプリケーションによっては新規作成するとき等にとりあえず適当な量を確保するだろ
他にはストリーミングのときのバッファサイズとか
37デフォルトの名無しさん:2013/02/05(火) 04:26:40.33
多いような気がする、なんて決め方はしねえよ
値を決めるんなら根拠を持て
38デフォルトの名無しさん:2013/02/05(火) 04:57:27.56
そのうち嫌でも覚えてしまうわ
39デフォルトの名無しさん:2013/02/05(火) 07:09:51.35
バイト数を決めて確保するなら要素数は不定
要素数を決めて確保するならバイト数は不定
40デフォルトの名無しさん:2013/02/05(火) 08:30:15.26
>>27
依存するのなら面倒がらずに sizeof で記述する、でも
書き捨てならとりあえずほとんどの環境で
32bit: sizeof(int)=sizeof(long)=32 と覚えておくとよい
ほとんどの環境で 64bit: sizeof(int)=32, sizeof(long)=64 なのには違和観を覚えてしまうが、なぜこうなってしまったのだろう?

boolean が 1bit なのは自明、short はそのつど sizeof している
41デフォルトの名無しさん:2013/02/05(火) 08:51:24.04
釣りはよそでやってね
42デフォルトの名無しさん:2013/02/05(火) 09:48:41.91
だいたいで量を決めるって根拠が薄いんだけどな。演習だからとかそういうことではなく、自分が決めなくちゃ
いかんことを決められないって話。
43デフォルトの名無しさん:2013/02/05(火) 11:15:49.38
booleanとか無いし、boolのことなら「最低限真偽値を表現できるサイズ以上」でしかない
VC++でもバージョンによって4Byteだったり1Byteだったりするし、そんな○型だから○Byteとか覚えるものではない

どうしてもサイズを完全に指定したいなら、処理系に依存したビットサイズ指定の型でも使えば楽なんじゃないか?
44デフォルトの名無しさん:2013/02/05(火) 12:28:33.22
typedef して word, dword, とかね。
45デフォルトの名無しさん:2013/02/05(火) 13:17:44.22
http://codepad.org/BoeeHL03

このコードって何をやっているのでしょうか?
頭が悪すぎて、この関数がどういう処理をしているのか理解できません。
どなたか、コメントつけて解説してくれませんか?
46デフォルトの名無しさん:2013/02/05(火) 13:18:37.17
WORDとかDWORDとか使うぐらいならshortとかlongとか使うわ
47デフォルトの名無しさん:2013/02/05(火) 13:51:38.71
>>45
機械語なら俺に質問しろ!その2
http://toro.2ch.net/test/read.cgi/tech/1356735624/
アセンブラ 13
http://toro.2ch.net/test/read.cgi/tech/1314512680/

辺りで聞いたほうがいいと思う
48デフォルトの名無しさん:2013/02/05(火) 14:03:11.38
まず何の機種のものなのかを書かないとね〜
機種関係なく、コードの流れとして結果何をやっているかだったら応えられるが
49デフォルトの名無しさん:2013/02/05(火) 15:11:17.65
>>47
ありがとうございます。
ひょっとして、スレチでしょうか?
ソースコードがないので逆アセンブルした物を元にCで書き直しました。

http://codepad.org/Mwek5qUR

出力が110C8531C00・・・となっています。
110C8531D00 = 123456780 (32進数)に近いので、32進数的な何かだと思うのですが。
50デフォルトの名無しさん:2013/02/05(火) 16:36:42.48
ただ、逆汗しても、何もわからないでしょう
それが、何するものなのか、わからないと...
51デフォルトの名無しさん:2013/02/05(火) 18:35:41.82
>>46
いや、その short とか long が環境によって違うので、ラップして好きにかえられるように、と。
52デフォルトの名無しさん:2013/02/05(火) 18:59:47.49
>>51
手抜きのつもりが#ifのネストですごいことになるんだよな
53デフォルトの名無しさん:2013/02/05(火) 20:02:45.52
>>40
釣りすぎる
54デフォルトの名無しさん:2013/02/05(火) 20:34:44.48
>>53
し、しまった、8で割るのをわすれてしまった‥‥
55デフォルトの名無しさん:2013/02/05(火) 21:17:08.51
>>54
そういうレベルの問題ではないんだが・・・
56デフォルトの名無しさん:2013/02/05(火) 21:25:52.25
そうそう、もっと根本的な日本語のレベルの問題

>違和観

なんだこれ
57デフォルトの名無しさん:2013/02/05(火) 21:40:27.32
そういう低レベルな話じゃないから
58デフォルトの名無しさん:2013/02/05(火) 21:43:17.67
>>55
http://ideone.com/UlZ9uF
sizeof(bool) は 1 でしたね。
あとなにを間違えているのでしょうか?
59デフォルトの名無しさん:2013/02/05(火) 21:51:43.84
64-bit 環境では
VCは sizeof(long) == 4 で
gccは sizeof(long) == 8

ほとんどの環境でlongが64-bitとか噴飯もの
60デフォルトの名無しさん:2013/02/05(火) 23:13:46.65
longでも環境によって違うってマジかよwwwww
俺のソフトがやばい
あ、それってコンパイル環境のこと?実行環境のこと?
61デフォルトの名無しさん:2013/02/05(火) 23:20:38.87
実行環境で変わるわけないだろ
62デフォルトの名無しさん:2013/02/05(火) 23:24:39.91
だからbit数保証したいならtypedef使えと・・・

stdint.h があるならそれ使うといいが
ない環境を考えるなら自前で定義だな
63デフォルトの名無しさん:2013/02/05(火) 23:41:33.21
C言語でintが64bitでないのは64bit環境ではない
64デフォルトの名無しさん:2013/02/05(火) 23:48:59.40
マヌケはレスする資格無し
65デフォルトの名無しさん:2013/02/06(水) 02:50:48.25
long long と勘違いしているのに 100 ペリカ
66デフォルトの名無しさん:2013/02/06(水) 07:54:49.94
solarisだよ。ううん知らないけど
67デフォルトの名無しさん:2013/02/06(水) 13:11:05.92
unsigned int 同士の足し算で桁あふれ検知したいんだけど
キャストなしで先に検知する方法あるかな
68デフォルトの名無しさん:2013/02/06(水) 13:13:03.69
レジスタ見ればいいんじゃね
69デフォルトの名無しさん:2013/02/06(水) 13:29:17.54
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デフォルトの名無しさん:2013/02/06(水) 13:30:18.96
>>61
サンクス
じゃあ安心だ
71デフォルトの名無しさん:2013/02/06(水) 13:34:46.37
int8_t, int16_t, int32_t, int_32_t とか使えばいいんじゃ
72デフォルトの名無しさん:2013/02/06(水) 14:22:03.12
>>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デフォルトの名無しさん:2013/02/06(水) 14:25:16.18
>>67
ttp://ideone.com/UypVGL

あまり美しくないけど
74デフォルトの名無しさん:2013/02/06(水) 15:04:10.77
2で割って足して、先頭bitを確認するとか?
余った分を足すのを忘れないように
75デフォルトの名無しさん:2013/02/06(水) 15:06:27.48
#define isOverflow(x, y) (((x) + (y)) < (x) || ((x) + (y)) < (x))
76デフォルトの名無しさん:2013/02/06(水) 15:07:51.80
>>75
間違った
×> #define isOverflow(x, y) (((x) + (y)) < (x) || ((x) + (y)) < (x))
○> #define isOverflow(x, y) (((x) + (y)) < (x) || ((x) + (y)) < (y))
77デフォルトの名無しさん:2013/02/06(水) 15:20:07.55
>>76
片方だけでいいんちゃう?
78デフォルトの名無しさん:2013/02/06(水) 15:27:34.92
#define isOverflow(x, y) (~(x) < (y) )
これでいいか
79デフォルトの名無しさん:2013/02/06(水) 15:29:41.18
>>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デフォルトの名無しさん:2013/02/06(水) 15:37:39.60
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;
}
8179:2013/02/06(水) 15:52:30.85
>>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デフォルトの名無しさん:2013/02/06(水) 20:13:44.65
いっそのこと64bitで計算して判定すれば?
83デフォルトの名無しさん:2013/02/07(木) 19:01:14.51
今日もWinAPIスレは楽しいな。ここもapiスレ同様に楽しいスレになると良いね
84デフォルトの名無しさん:2013/02/07(木) 19:03:17.88
お断りします
85デフォルトの名無しさん:2013/02/07(木) 23:38:59.53
hogeを禁止しない限りいずれそうなるだろ
今のWin32APIスレと同じで一回糞スレ化してしまったら元に戻すのは容易ではない
86デフォルトの名無しさん:2013/02/07(木) 23:39:42.78
お前が死ねば平和になるよ
87デフォルトの名無しさん:2013/02/07(木) 23:44:08.17
他人に向かってそういう風に言うように教育さるたんだね。

素晴らしいご両親だ。

あなたのご両親はまさに社会の財産。
88デフォルトの名無しさん:2013/02/07(木) 23:51:41.39
他人に向かってそういう風に言うように教育さるたんだね。

素晴らしいご両親だ。

あなたのご両親はまさに社会の財産。
89デフォルトの名無しさん:2013/02/08(金) 00:33:57.47
他人に向かってそういう風に言うように教育さるたんだね。

素晴らしいご両親だ。

あなたのご両親はまさに社会の財産。
90デフォルトの名無しさん:2013/02/08(金) 02:33:31.51
Sultanだね。
91デフォルトの名無しさん:2013/02/08(金) 05:05:20.12
hogeの話が出るとすぐ荒れるな
92デフォルトの名無しさん:2013/02/08(金) 06:43:02.32
過剰反応する荒らしがいるからな
しょうがない
93デフォルトの名無しさん:2013/02/08(金) 13:37:22.08
ホゲはホゲサイトへ
94デフォルトの名無しさん:2013/02/08(金) 18:09:49.11
C++でshared_ptr常用するようになってしまったんだけど
もうこれJavaに移行したほうがいいのかな
95デフォルトの名無しさん:2013/02/08(金) 18:14:56.51
shared_ptrとjavaに一体何の関係があるんだろう…
96デフォルトの名無しさん:2013/02/08(金) 20:18:55.67
hogeと片山がこないとスレに活気がでないね
>>94
生ポ使わなくなったらもうC/C++は止めれ。Javaに移行せよ
C/C++はhogeと生ポが命
97デフォルトの名無しさん:2013/02/08(金) 21:16:46.51
んなわけねーが、
C/C++ を使うべき所と
そうでもない所は見極めるべきではある
98デフォルトの名無しさん:2013/02/08(金) 21:22:27.30
言語の区別じゃなくてランタイムで区別すべき。
.NETフレームワークはパフォーマンスの点でどうしても
ネイティブバイナリに劣る。そこがわかってれば、何を
使うべきかはおのずと判断がつくはず。
.NETが悪いわけでもネイティブがいいわけでもなく、
適材適所。
99デフォルトの名無しさん:2013/02/08(金) 21:26:18.82
.NETはJITがうまく決まったり、
C++版だとサポートの弱いライブラリだと良いこともある。
スレッド周りの便利さは.NETならではだよな。
100デフォルトの名無しさん:2013/02/08(金) 21:27:52.84
スレッドの Abort が便利すぎるな
C/C++ でスレッド強制終了したら
リソースリークが怖いし
101デフォルトの名無しさん:2013/02/08(金) 21:37:00.31
いやでももう生ポインタほとんど使いどころないし
ポインタのtypedef時の命名規則と、扱い(*を付けるか付けないか)が面倒臭くなってきたんだ
テンプレートクラスでラップしてポインタとして扱わなくても機能するように
工夫し始めてたら、もうJavaもしくはC#で良いかなと・・・
102デフォルトの名無しさん:2013/02/08(金) 21:39:53.59
そんなの遺産が無けりゃ好きにすりゃいいがな
103デフォルトの名無しさん:2013/02/08(金) 21:40:18.55
配列を受け取る関数は
引数をナマポ+サイズにしておくと
配列でも配列クラスでも受け取れるので
104デフォルトの名無しさん:2013/02/08(金) 23:39:37.53
組み込み系だとCくらいしか選択肢ないよな…
特に省メモリ環境だとアセンブラがメインに…
105デフォルトの名無しさん:2013/02/09(土) 18:36:03.93
>>104
いやC++でいいだろ。
・・・あ、コンパイラが無いとかか。
106デフォルトの名無しさん:2013/02/09(土) 18:40:19.17
組み込みでも10年以上前からC++コンパイラはある。
ただ開発をCにするかC++にするかはプロジェクトの
方針による。ヒューマンな理由から物理的な理由まで
その理由は様々。
107デフォルトの名無しさん:2013/02/09(土) 20:15:08.87
今Cが一番使われいる分野は組み込みなんだろ
それ以外の分野でCが1番使われているってあるのか
108デフォルトの名無しさん:2013/02/09(土) 20:33:57.64
言語の開発(コンパイラ、インタプリタの開発)
OSの開発
109デフォルトの名無しさん:2013/02/09(土) 21:29:15.57
どんなコンパイラやOS開発しているの?
110デフォルトの名無しさん:2013/02/09(土) 21:32:21.06
gccもC++に移行したし、VCは元からだし
111デフォルトの名無しさん:2013/02/09(土) 21:41:15.37
C++コンパイラがあっても規格準拠率がボロボロだったり
112デフォルトの名無しさん:2013/02/09(土) 21:51:28.22
C++のOS、というのはきかないなあ、WindowsNT系の基幹系はどうなっているのだろう?
113デフォルトの名無しさん:2013/02/09(土) 22:50:12.70
109だけど、ごめん聞き方悪かったみたい

ここスレ住人は実際にCでどんなコンパイラやOS開発しているの?
って聞きたかった
114デフォルトの名無しさん:2013/02/09(土) 23:58:42.65
>>105
PICってマイコンだとマジでないね。
古い16F系統はともかく最近のアーキテクチャを高級言語に合わせたりMIPSのIPを使った製品でも
コンパイラがgccベースだってのに無い。
115デフォルトの名無しさん:2013/02/10(日) 00:09:58.25
コンパイラがGCCって一点だけでPICをやめてAVRにしたわ。
ハード的な利点も多いんだけど。
116デフォルトの名無しさん:2013/02/10(日) 01:08:23.28
>>115
えっと…言いにくいんだけどwinAVRもgccベースだよ?
117デフォルトの名無しさん:2013/02/10(日) 01:08:53.75
って、すまん。
gccだからavrに乗り換えたって意味か。
118デフォルトの名無しさん:2013/02/10(日) 12:49:09.88
ちょっと↑で出てたけどスマートポインタ類をtypedefするときの命名規則ってどうしてる?

shared_ptr<Type const> の時も相まってすごく悩むんだけど
119デフォルトの名無しさん:2013/02/10(日) 15:15:38.54
typedef std::shared_ptr<Type> Type_p;
typedef std::shared_ptr<Type const> Type_const_p;
120デフォルトの名無しさん:2013/02/10(日) 15:31:30.48
>>118
typedef の用途による。中身に応じた名前付けするぐらいならそんな typedef 要らないんじゃないの?
121デフォルトの名無しさん:2013/02/10(日) 16:08:33.44
template<typename T>using S=shared_ptr<T>;
122デフォルトの名無しさん:2013/02/10(日) 16:16:24.69
それよりmake_sharedに別名付けたい
123デフォルトの名無しさん:2013/02/10(日) 16:57:17.46
それより unique_ptr<auto> p=f(); 出来て欲しい
124デフォルトの名無しさん:2013/02/10(日) 17:24:27.67
むしろunique_ptrの使いどころ
125デフォルトの名無しさん:2013/02/10(日) 19:37:31.41
>>124
ファンクタを定義せずにカスタムデリータを使えれば、ぐっと用途が広がるんだけどな。
126デフォルトの名無しさん:2013/02/10(日) 21:01:14.54
unique_ptrあるならラムダ使えるんでないの
127デフォルトの名無しさん:2013/02/10(日) 21:03:19.95
default_deleteの特殊化でいいんじゃね
128デフォルトの名無しさん:2013/02/10(日) 22:14:58.51
インテリセンスの発音ってインテリジェンスと同じでええのん?
129デフォルトの名無しさん:2013/02/10(日) 22:42:05.71
なんでやねん
130デフォルトの名無しさん:2013/02/10(日) 22:53:36.63
インテリメガネみたいなアクセントじゃダメやろ?
131デフォルトの名無しさん:2013/02/10(日) 23:28:10.59
https://www.youtube.com/watch?v=mk3G8xfmxlw
これを聞く限りアクセントはintelligenceと同じだな。
132デフォルトの名無しさん:2013/02/11(月) 21:49:10.66
長文ですが質問させてください。

インタフェースクラスはポリモルフィズムが行われる上で重要で
主に、概念(会社には社員がいるが部署ごとに仕事が違う)や
可能な操作(飛べる・描画できる)などをクラスに付加するために継承を行うようですが、

単純な差分プログラミングを行いたい場合に、
インタフェースクラスを継承してあらたなインタフェースクラスを作るというのは
オブジェクト指向の考えとして間違っているのでしょうか?

例を挙げます。
ゲームを作る場合、プレイヤーの入力操作を扱えるクラスが欲しいとします。

操作にはキーボード操作、マウス操作、ゲームパッド操作などがあると思いますが、
環境に依存したくないので、それぞれのインタフェースクラスを作成しようと思います。

そこでまず、キーボード用に「あるキーが押されているかどうかを判定するメソッド」を考えました。
しかしこのメソッドは、キーボード用に作ったつもりでも見方によっては、
マウスは「左右クリック」が、ゲームパッドは「ボタン」が、それぞれキーに相当できると考えると
上記の用意したい3つのインタフェース全てに共通する操作なのでは?と思い至りました。

しかしながらマウスにはマウスホイールやマウスポインタが、
ゲームパッドには左右スティックが存在します。

つまりマウスとゲームパッドは、キーボードと同様に「キー入力を判定できる」クラスとして扱うことはできるが、
加えて、それぞれに必要なメソッドを追加しなければなりません。

このとき、「インタフェースを継承してあらたなインタフェースを作っても良いのでしょうか?」という疑問なのです。
長文失礼しました。
133132:2013/02/11(月) 21:53:30.33
すみません、長文で質問しておいて申し訳ないですが
質問用の長文を推敲する上でなんとなく答えのようなものが見えてきたかもしれません。

>>132の例の場合だと
「ある識別子に対応したON/OFF的な情報を扱えるクラス」
「ある識別子に対応した1次元(正方向と負方向)の尺度を扱えるクラス」
「ある識別子に対応した2次元(x軸とy軸)の尺度を扱えるクラス」
でインターフェースを分ければ良さそうですね
134デフォルトの名無しさん:2013/02/11(月) 22:04:54.12
全く別のデバイスを同じインタフェースで扱える利点はあるのか?
キーとパッドくらいなら割と共通の感覚で操作すると思うけど
マウスは完全に別判定なのだから共通化する必要性は無いと思うぞ
135デフォルトの名無しさん:2013/02/11(月) 22:12:48.93
>>134
私の説明が下手ですみません。>>132の例は

もともと3つは同じインタフェースにするつもりはなく、別々のインタフェースを作るつもりだったが、
それぞれのインターフェースを作る過程で共通の操作が浮かび上がってきました。
インターフェースなのに共通する操作を抽出して差分プログラミングをしちゃってもいいのでしょうか?

ということ言いたかったのです。

実際は私の中でインタフェースと、差分プログラミング用の基底クラスが
ごちゃ混ぜになってるのが原因のようですね
136デフォルトの名無しさん:2013/02/11(月) 22:15:20.27
まあ共通化するメリットがあればすればいいんじゃない?
137デフォルトの名無しさん:2013/02/11(月) 22:19:33.79
>環境に依存したくないので、それぞれのインタフェースクラスを作成しようと思います
これは実装を隠蔽するためのインターフェイスだが
>>133では機能を持たせるためのインターフェイスに摩り替わってるのが混乱の元じゃね
138デフォルトの名無しさん:2013/02/11(月) 22:29:11.11
ゲームでは往々にしてキーコンフィグがあるので、
キーやパッドのボタンをダイレクトには扱わない方がいい

ゲーム内で使用する仮想キーコードを用意して
それに対してマウスのボタンやキーやパッドのボタンを割り当てる
そして、入力に対する処理はこの仮想キーコードを使って行う

マウスとかキーボードとかパッドとか
そういうのは設定画面以外では隠蔽してしまうべきだな
139デフォルトの名無しさん:2013/02/11(月) 22:39:30.63
>>136>>137
確かに、理論よりもメリットを優先すべきですね

>>138
参考になります。
特に多数のボタンを1つに割り当てたりする場合も考慮して
アプリ側の仮想コードと対応テーブルは重要そうですね
140デフォルトの名無しさん:2013/02/11(月) 22:51:59.08
決定はマウス左クリックとEnterキーとZキーとAボタンとスタートボタンで行える、とかね

キー・ボタン系は仮想キーコードを使用した入力で統一
十字キーとアナログスティックも共通化できると思う
マウス移動は移動量でなく絶対位置で扱う事が多いので
十字キー/スティック操作は別個に扱った方がいいと思う
141デフォルトの名無しさん:2013/02/12(火) 01:13:54.82
タイトル画面ではキーマッピング固定、キーコンフィグでの指定は実際のプレイ中のみ反映、ってパターンもあったね。
142デフォルトの名無しさん:2013/02/12(火) 13:45:35.86
だんだんスレ違いになってきたな
143デフォルトの名無しさん:2013/02/12(火) 18:14:16.34
>>69-81
ありがとう
もらった回答をもとに試行錯誤してみる
144デフォルトの名無しさん:2013/02/13(水) 10:52:06.22
すいません、Objective-cからc++をやり始めたのですが、メモリ管理で若干つまづきました…

std::shared_ptrを使ってインスタンス変数を宣言していたのですが、
その変数に代入して{}を抜けると、代入したものがdelateされてしまいました。

Objective-Cのretain/releaseのように参照カウントの上げ下げ?を自分でしたいのですが、どうすればいいですか?
145デフォルトの名無しさん:2013/02/13(水) 11:01:09.67
>>144
外のスコープにある shared_ptr 変数にコピーすればいい。
146デフォルトの名無しさん:2013/02/14(木) 00:19:19.42
あるBaseクラスを継承したSubクラスがある場合

Base* base_p = new Sub;
base_p->DoVirtualMethod();

DoVirtualMethodがオーバーライドされていればSub側の処理が行われますが、

void Test(Base* pt)
{
 pt->DoVirtualMethod();
}

このような関数に上記のbase_ptを渡した場合でも
Sub側の処理が行われることが保証されるのでしょうか?

また、std::iostream郡で試したところ

void Test(const Base &ref)
{
 ref.DoVirtualMethod();
}

このような関数にSubの変数を渡しても正常に動作することがわかったのですが
これは上記でいう*base_ptを渡した場合でも同じことになるのでしょうか?
147デフォルトの名無しさん:2013/02/14(木) 00:46:00.34
当たり前だろ
148デフォルトの名無しさん:2013/02/14(木) 01:50:43.13
virtualならそうかな?
149デフォルトの名無しさん:2013/02/14(木) 10:19:30.47
派生クラスと呼ばずに子クラスやサブクラスって呼ぶの日本だけ?
150デフォルトの名無しさん:2013/02/14(木) 10:20:48.17
151デフォルトの名無しさん:2013/02/14(木) 21:20:07.88
vector<int> a = {1,2,3,5,9,1000};
みたいな感じで整数のベクタを配列みたいに初期化したいのですが、できますか?
push_back()とか使って1個ずつやらないとダメですか?
152デフォルトの名無しさん:2013/02/14(木) 21:37:13.31
C++11対応コンパイラ、STLを使えば可能
153デフォルトの名無しさん:2013/02/14(木) 21:53:29.75
VC2010でもarrayなら初期化子リストつかえるよん
154デフォルトの名無しさん:2013/02/14(木) 22:26:10.13
GCC 4.6.3で-std=c++0xオプションでコンパイル通りました。
155デフォルトの名無しさん:2013/02/14(木) 22:55:35.06
C++11が使えないなら
一旦配列を用意してからそれで初期化だな

const int a_init[] = {1,2,3,5,9,1000};
vector<int> a(a_init, a_init + _countof(a_init));
156デフォルトの名無しさん:2013/02/14(木) 23:20:01.69
initializer_listは確かに地味に便利
157デフォルトの名無しさん:2013/02/14(木) 23:24:07.67
地味にというかあって当たり前というかなんで今までなかったのかという
Vector(コンテナではない)を複数渡したい時にいちいちVector(a,b,c)ってするのめんどくさすぎだった
158デフォルトの名無しさん:2013/02/15(金) 23:29:07.93
>>151
それは何でか知らんが駄目なんだよ
普通はvector<int> a({1,2,3,5,9,1000});
159デフォルトの名無しさん:2013/02/16(土) 00:25:56.88
コンパイラによる
160デフォルトの名無しさん:2013/02/16(土) 00:50:07.37
scanfをC++のiostreamに移行してるんですが、
例えば scanf("%[^abc]", str); は、std::cin で書くとどうなりますか?
161デフォルトの名無しさん:2013/02/16(土) 02:00:40.24
書式指定じゃできない
peekで読んでチェックしてマッチしてたらignoreで進めるとかする
162デフォルトの名無しさん:2013/02/16(土) 13:40:43.04
fgets()+sscanf()ならsscanf()をそのまま使えばいいと思うのだけどね。
163デフォルトの名無しさん:2013/02/16(土) 13:48:02.39
clibを組み込まないC++コンパイラってあるのかね?
164デフォルトの名無しさん:2013/02/16(土) 15:13:37.58
↓みたいな感じでラムダ引数の関数を持ったクラスを定義したいのですが、
jni/Hoge.h:3:30: error: 'void Hoge::test(Func) [with Func = main()::<lambda()>]', declared using local type 'main()::<lambda()>', is used but never defined [-fpermissive]
というエラーでコンパイルが通りません。
どのように書けばよいのでしょうか?

//Hoge.h
class Hoge {
public:
template<typename Func> void test(Func func);
};

//Hoge.cpp
#include "Hoge.h"
template<typename Func> void Hoge::test(Func func) {
func();
}

//main.cpp
#include <stdio.h>
#include "Hoge.h"

int main(void) {
Hoge *hoge = new Hoge();
const char* str = "hogegohe";
hoge->test([&]{
printf(str);
});
return 0;
}
165デフォルトの名無しさん:2013/02/16(土) 15:27:48.35
×hoge->test([&]{
○hoge->test([&](){
166デフォルトの名無しさん:2013/02/16(土) 16:33:05.52
>>164
hoge厨はプログラムやる資格なし
167デフォルトの名無しさん:2013/02/16(土) 16:34:09.41
将来3DCGを使ったインタラクティブな体験型アート(インスタレーション)を
制作したいと思って、プログラムの勉強でもしようかと思っているものです。
この場合、CかC++のどちらを勉強するのが良いですかね?

普段は仕事で科学計算とかしたりするんでFortran使いですが、
その点Cも勉強すれば一石二鳥な感じはするのだけど、ググってみると
C++を使ってる人が多いみたいで。CでできなくないならCがいいのだけど、
何分初心者なもんで、さっぱりわかりません
168デフォルトの名無しさん:2013/02/16(土) 16:38:07.63
>>164
荒らすためにネタ質問を投下するのはやめてもらえませんか?
結構本気で迷惑です。
169デフォルトの名無しさん:2013/02/16(土) 17:15:55.05
>>164-165
ウザい
170デフォルトの名無しさん:2013/02/16(土) 17:55:48.35
>>167
C++はCを内包しているし、取り敢えずCからはじめればいいんでない?
つーか、最終的には使いたいライブラリ次第だと思う。
Cしか勉強しないと決めてしまうと、C++で使うライブラリを使えないことになってしまう。
171デフォルトの名無しさん:2013/02/16(土) 18:37:23.86
3DCGとか、C系でゼロから作るのはかなり大変じゃね?
結局ライブラリ使うならC#とかJavaとかの方が、全然楽な気が。
以外とHTML5 + JavaScriptってのもありかも。
172デフォルトの名無しさん:2013/02/16(土) 18:47:12.84
>>164
ヘッダとソースに別けずにHoge::testの定義もヘッダ(Hoge.h)に書く
173デフォルトの名無しさん:2013/02/16(土) 18:47:42.92
>>164
Hoge.cpp の内容を Hoge.h に持っていけば?
174デフォルトの名無しさん:2013/02/16(土) 19:21:46.21
プログラミングスキルは身に付いてないけどHogeは記憶してる>>164がクズすぎるw
人生諦めればいいのにw
175デフォルトの名無しさん:2013/02/16(土) 19:27:27.79
まぁいいんじゃない?

>164は歩く恥さらしとして我々を楽しませてくれている。

楽しませるといっても嘲笑の対象になってるだけだがwww
176デフォルトの名無しさん:2013/02/16(土) 19:43:54.08
hogeが出ると基地が集まって来て楽しくなるよな
177デフォルトの名無しさん:2013/02/16(土) 19:45:25.00
ここもapiスレみたいになると楽しくて良いよな
178デフォルトの名無しさん:2013/02/16(土) 19:48:07.67
>>171
3D関連ならC/C++が一番情報が多いから、結局C/C++でやった方が楽だと思うよ
unityみたいなゲームエンジンを利用するのもアリかもしれないけど
179デフォルトの名無しさん:2013/02/16(土) 19:50:37.71
GCで一瞬画面が固まるのが問題なんだよな
JavaではパラレルGCで止まらなくなったけど
180デフォルトの名無しさん:2013/02/16(土) 19:51:17.48
いるよね、どうでもいいことばかり覚えて仕事は覚えられない池沼
マジで迷惑だから社会に出てこないで欲しい




















お前のことだよ>>164
181デフォルトの名無しさん:2013/02/16(土) 20:04:00.16
hogew
大学の先輩で使ってる人いたけど卒業してから速攻縁切ったわw
メールも電話も着拒したw関わりたくないもんw
182デフォルトの名無しさん:2013/02/16(土) 20:09:10.00
今日はwin32apiがさびしいから、ここなのか
Hoge降臨だからしょうがないか
183デフォルトの名無しさん:2013/02/16(土) 20:09:38.39
hogeとか使う人って困った人が多いよね。
プログラムが楽しくて何か発散せずにはいられない、
なんていうのかな、、奇をてらっているというか、
ノリが不自然というか、キョロ充というか、
白々しいというか、、要するにくだらない人が多い気がする。
184デフォルトの名無しさん:2013/02/16(土) 20:33:23.61
hogeごときで騒ぎ立ててるのもどうかとおもう
185デフォルトの名無しさん:2013/02/16(土) 20:33:57.95
縁を切ったと思っているが、
それ向こうから縁を切られてるよ
186デフォルトの名無しさん:2013/02/16(土) 20:51:22.00
何もしらないヴァカが妄想したかw哀れw
自分がhoge使ってるからそういうことにしとかないと耐えられないんだねw
縁を切られたトラウマでもあるのかねwかわいそうw

飲みに誘うメールが来たからその場で着拒してるのに向こうから切られてるとかwウケルw
187デフォルトの名無しさん:2013/02/16(土) 21:00:16.23
>>185は縁を切られるたび、振られるたびに、「俺のほうから切った」「俺のほうが振った」って思い込むことで自己を保ってる可哀想な人間なんだよ。それじゃあ何も解決しないのにね。
188デフォルトの名無しさん:2013/02/16(土) 21:03:46.85
ホゲ ← 馬鹿じゃねえの
189デフォルトの名無しさん:2013/02/16(土) 21:42:28.18
ho守あge
190デフォルトの名無しさん:2013/02/16(土) 23:18:23.61
>>170
ありがとです。
ここに書き込む前に少しググってみましたが、OpenGLやDirectXといった
ライブラリを利用する、というページをいくつも見ました。
特に、CよりもC++の方が圧倒的にネットの遺産はあるようで、
観念してC++から勉強始めたいと思います。


>>171
0からというわけじゃなく、たぶんライブラリーを使うのかと。
調べたらC++とかでもありそうです。自分はCはどうなのか、というのが
凄く気になっていて。

>>178
仰る通り。特にC++の情報が多いみたいですね。
191デフォルトの名無しさん:2013/02/17(日) 00:31:13.87
>>164,>>165
hoge使っても平気な神経はどうかと思うよ
192デフォルトの名無しさん:2013/02/17(日) 00:49:59.71
hodgepodge ごたまぜ,寄せ集め
193デフォルトの名無しさん:2013/02/17(日) 02:16:08.96
純粋に気になったんですが、なんでhogeが嫌われてるんですか?
194デフォルトの名無しさん:2013/02/17(日) 02:28:55.89
hogeというキーワードに対して強烈に反応する人がいるから。
幼年期の生育環境や親のしつけに強い問題があったと推測される。
195デフォルトの名無しさん:2013/02/17(日) 02:36:48.11
ああなるほど… 言っちゃいけないワードなんですね…
puyoにします。
196デフォルトの名無しさん:2013/02/17(日) 02:42:26.65
>>193
プログラマは合理的でなければならない
hogeには使用すべき合理的な理由がない

加えて、hogeは日本独特のものである
hogeを使うということはhogeに慣れ親しんでいる可能性が非常に高い
世界のプログラマ人口の中でも日本語を使用する人口はごくわずかであり、そのわずかな言語圏にしか存在しないhogeに慣れ親しんでいるということは
普段のプログラミングに関する調査や学習で利用するウェブサイトにおいて、日本語のウェブサイトを見ている率がかなり高い
情報量はその言語の利用者数に比例するため、例えば日本語の情報は英語の情報に比べると極めて少数であり
わざわざ情報量の少ない言語に絞って学習や調査を行うという自らハンディキャップを課す奇行を行たうえで
他人に質問するという異常な行為を行う者はプログラマの中から排除すべきだから
197デフォルトの名無しさん:2013/02/17(日) 04:27:57.22
メタ構文変数が2系統ある分には便利なんだけどね
198デフォルトの名無しさん:2013/02/17(日) 05:01:15.50
なぜ日本語で書かれている2ちゃんねるのプログラム板に来ているんだろう
199デフォルトの名無しさん:2013/02/17(日) 05:11:35.03
夫がhogeに殺されてから1年が過ぎました
200デフォルトの名無しさん:2013/02/17(日) 05:29:34.16
このスレで英語の情報を期待する馬鹿がいるってこと?
201デフォルトの名無しさん:2013/02/17(日) 05:43:11.65
>>196という馬鹿でキチガイが住み着いている
ム板にIDがないのをいい事に
こいつ一人だけが必死でhogeを叩いているだけ
202デフォルトの名無しさん:2013/02/17(日) 07:04:47.43
>>201
そうやって仮想敵を一本化するのって流行ってるの?
マイノリティ化して心の安定保ってるみたいだけど妄想垂れ流しで阿呆っぽい。
本当にただのアフォなのかもしれんが。




・・・と思ったら馬鹿でキチガイって自己紹介してた。
203デフォルトの名無しさん:2013/02/17(日) 07:26:42.84
まだ基地害hoge厨>>164いるのかw
204デフォルトの名無しさん:2013/02/17(日) 07:50:30.40
>>177
Hogeが禁止にならない限りいずれはああなるような気がする
てかすでになり始めてるか
205デフォルトの名無しさん:2013/02/17(日) 08:54:43.10
>>204
hogeを禁止するのではなくてhoge発狂馬鹿を出入り禁止にするべきだろう。
hoge発狂馬鹿を徹底的にたたけばいい
206デフォルトの名無しさん:2013/02/17(日) 09:06:25.62
宿題スレで幇助幇助って騒いでる奴もこっちのhageと同じ感じがするな
207デフォルトの名無しさん:2013/02/17(日) 09:54:11.30
>>205に賛成!
そうすればwin32apiスレみたいに炎上して楽しくなる!
まともな質問者&回答者はそれで去っていくし面白そう!

次からhoge発狂厨がきたら叩きまくろう!
208デフォルトの名無しさん:2013/02/17(日) 10:15:29.98
老兵「もうじきここは戦場になる」
209デフォルトの名無しさん:2013/02/17(日) 10:16:57.28
んだよ、hogeって嫌われてるのかと思っちまったじゃ無いか…
210デフォルトの名無しさん:2013/02/17(日) 10:30:52.65
hoge使ってる奴はキチ
211デフォルトの名無しさん:2013/02/17(日) 10:43:09.24
>>208
ごめん、引用元はなんだったっけ
212デフォルトの名無しさん:2013/02/17(日) 10:43:32.64
>>210
お前が基地
213デフォルトの名無しさん:2013/02/17(日) 11:54:37.25
>>208
「オネアミスの翼」だっけ?
214デフォルトの名無しさん:2013/02/17(日) 12:38:01.68
そうだ、予約語にhogeが来ればいいんだ
215デフォルトの名無しさん:2013/02/17(日) 13:35:25.04
ホウヂ
216デフォルトの名無しさん:2013/02/17(日) 15:50:30.02
>>212




見事に釣れたキチ
身に覚えがあるんだろうな
217デフォルトの名無しさん:2013/02/17(日) 15:52:03.46
プログラムにhogeを使っている奴には真性キチが多いからな
そのキチに激しく叩かれて、hogeアンチキチなってしまった奴が非常に多いから
hogeが出ると激荒れになるにはしょうがない。
hogeアンチキチは真性じゃないからhogeが出ない限りあまり発狂しない
218デフォルトの名無しさん:2013/02/17(日) 15:58:19.89
単にプログラマーにキチが多いだけだろ
219デフォルトの名無しさん:2013/02/17(日) 16:13:59.81
>>218
プログラマーはあの猫激ラブ片山見たいなのが極普通って感じだからな
それ以前には、江東区で女をばらばらにしてトイレに流した奴がいたよな
キチだからプログラマーになるのか、プログラマーの職業病がキチなのか...
220デフォルトの名無しさん:2013/02/17(日) 16:33:55.13
>>216
> 見事に釣れたキチ

すごいなぁ、まだ後釣りとかしてる奴がいるんだ…
221デフォルトの名無しさん:2013/02/17(日) 18:16:40.96
hogeが来る度に荒れるのにはうんざり
222201:2013/02/17(日) 19:23:38.25
頭が悪くて全く反論できないので馬鹿キチ自演乙と罵ってみました^^
223デフォルトの名無しさん:2013/02/17(日) 21:25:49.10
>>221
これからはhoge厨がアンチhoge厨を叩くらしいから叩き合いになってさらに大荒れになるよw
224デフォルトの名無しさん:2013/02/17(日) 22:05:32.07
225デフォルトの名無しさん:2013/02/18(月) 04:46:40.96
HOGE厨マジでウザいな

スレを荒らしたくてHOGE使ってるだけの可能性もある
特に質問に対してHOGE叩きとマジレスの両方が来てる場合に、マジレスのほうにすらレス返さずに消えてる奴とかな

まあ無意識にHOGEを使う奴もわざとHOGE使ってスレを荒らすことを生き甲斐にしてる奴も同程度に頭おかしいけど
226デフォルトの名無しさん:2013/02/18(月) 05:04:28.59
おまえがhogeに過剰反応しなければいいだけ。
227デフォルトの名無しさん:2013/02/18(月) 06:12:26.78
foo, bar, bazがいいよ > 初心者のみなさん
228デフォルトの名無しさん:2013/02/18(月) 06:53:43.39
hoge, hage, fuga, piyo、どれもお勧めです、馬鹿が沢山釣れますよ > 初心者のみなさん
229デフォルトの名無しさん:2013/02/18(月) 08:31:09.43
なんでそこまで反応するのか分からんけど、相手に求めても応えてくれるか分からんのだから
反応しなきゃいいのにな

簡単なこと
230デフォルトの名無しさん:2013/02/18(月) 09:35:21.49
単なる構ってちゃんでしょ
231デフォルトの名無しさん:2013/02/18(月) 10:53:42.23
hoge使ってるプログラムの解説サイトってロクなのがないw
本も買えない乞食が見るだけだからそれでいいのかもしれんがww
232デフォルトの名無しさん:2013/02/18(月) 11:30:00.58
はいはい、金のある富豪さんはこんな掃き溜めにいないで、家で一人大量の本に囲まれて2828しといてください
233デフォルトの名無しさん:2013/02/18(月) 11:55:27.59
>>219
そういえばあれ、頭はどうしたんだろ
頭蓋骨をトイレに流すまで細かくするとか難しくね?
白骨化したやつならまだしも生の状態からだろ
234デフォルトの名無しさん:2013/02/18(月) 20:09:15.04
hogeの総本山のapiスレがいつものキチスレになれば、ここは平穏になる
apiスレをいつもほげスレにしてあげないと、このスレは死ぬな
235デフォルトの名無しさん:2013/02/18(月) 22:09:40.13
あそこでhoge見たことないけどな
236デフォルトの名無しさん:2013/02/18(月) 23:35:13.51
>>233
肉は腐敗すると膨張する。よって冷蔵庫を一つ用意し、ばらばらにしたのを冷蔵して少しずつ捨てる
237デフォルトの名無しさん:2013/02/18(月) 23:46:31.36
殺したときは勢いとかでやっちゃったのかもしれんが、そんなに長時間興奮(?)状態が続くわけもなく、冷静になった状態でバラしたと考えられる。
しかも頭までトイレに流せるくらい小さくって言ったら4センチ四方以下くらいにしなきゃならない。
あの事件で逮捕された奴って被害者に好意を持ってたらしいけど、好意を持ってた相手の頭をバラすとか普通無理。
そんな作業するくらいなら自首するほうがマシな気がする。
238デフォルトの名無しさん:2013/02/19(火) 00:47:00.75
すいません。
こんな感じのヘッダファイルを作って
hogehoge.h
#define MY_INCLUDE
typedef unsigned int uint32_t;
typedef unsigned short uint16_t;
さらにこのヘッダファイルをインクルードするヘッダファイルを作って
foo.h
"include "hogehoge.h"
でコンパイルをかけたところ、
hogehoge.h:warning: useless keyword or type name in empty declaration
hogehoge.h:warning: empty declaration
hogehoge.h:warning: useless keyword or type name in empty declaration
hogehoge.h:warning: empty declaration
と言うエラーが出たので、ソースをプリプロセスしたところ、
たしかに
# 1 "hogehoge.h" 1

と空白でした。
初めて見たワーニングなのですが、
このエラーはどういうときに起きる物なのでしょうか?
239デフォルトの名無しさん:2013/02/19(火) 00:50:03.06
#include "hogehoge.h"
^?
240デフォルトの名無しさん:2013/02/19(火) 01:02:33.20
STLのvectorって複数スレッドからアクセスしても大丈夫でしょうか。
241デフォルトの名無しさん:2013/02/19(火) 01:28:55.36
読み取りだけならな
242デフォルトの名無しさん:2013/02/19(火) 01:29:09.46
warningをワーニングと言うのは田舎臭いからやめたほうがいいよ
243デフォルトの名無しさん:2013/02/19(火) 01:45:56.22
hoge使ってるようなキチガイに田舎臭いとかそんな感覚ないだろ
まともな感覚してたらそもそもhogeなんて使わないわけだし
hoge使ってる時点で精神異常















みたいな感じのアンチレスで満足ですか?>荒らしの>>238
244デフォルトの名無しさん:2013/02/19(火) 01:53:27.71
>>242
ワォーニング

で良かった?
245デフォルトの名無しさん:2013/02/19(火) 02:49:57.83
スターワォーズ
でよかった?
246デフォルトの名無しさん:2013/02/19(火) 02:58:28.54
♪今だ! 必殺! 戦刃旋風斬り! ワォー!
247デフォルトの名無しさん:2013/02/19(火) 07:00:52.52
war ウォー
warm ウォーム
warn ウォーン
warning ウォーニング
worm ワーム
通常のar, orと、war, worのar, orは発音が違う。
warm wormと覚えよ。と教わった。
248デフォルトの名無しさん:2013/02/19(火) 09:26:57.20
>>247
言語の発音と日本語表記になんか関係でもあるのか?
249デフォルトの名無しさん:2013/02/19(火) 09:47:23.27
これが日本人プログラマーの現状だ
世界に発信できるソフトウェアを作れない
250デフォルトの名無しさん:2013/02/19(火) 10:17:22.28
アワード
ホントは、award(アウォード、賞)
251デフォルトの名無しさん:2013/02/19(火) 13:06:52.10
カタカナで書いてもぉ〜
252デフォルトの名無しさん:2013/02/19(火) 13:12:52.55
カタカナで表記するのがムリ
253デフォルトの名無しさん:2013/02/19(火) 13:16:58.54
warningを「ワーニング」ってナイツのヤホーと同レベルだよな
254デフォルトの名無しさん:2013/02/19(火) 13:20:22.86
ちがうよ
255デフォルトの名無しさん:2013/02/19(火) 13:38:48.80
だから辞書見て発音記号調べろって。
256デフォルトの名無しさん:2013/02/19(火) 15:01:02.49
カタカナにない発音を持つ言語をカタカナで表記しようとしてる馬鹿がいるのはこのスレですか?
257デフォルトの名無しさん:2013/02/19(火) 15:05:53.73
無理やりカタカナにすれば
ゥォァーニンじゃね?
258デフォルトの名無しさん:2013/02/19(火) 15:18:31.56
日本語に発音できない音声などない
あってはならんのだ、この世に存在してはならんのだァー!
259デフォルトの名無しさん:2013/02/19(火) 17:52:10.51
単に`Warning'の日本語訳の一つが「ワーニング」ってだけで、
発音とか関係ねえよ
260デフォルトの名無しさん:2013/02/19(火) 18:59:24.71
>>259
その通り
warningは英語、ワーニングは日本語
お前らが使っているイギリスって英語なのか?
イギリスって言っている奴っては恥ずかしい奴だよな 
イギリスでイギリスって言って通じるのか
日本語のワーニングの元が英語のwarningってだけ
さすがhogeスレだけあってキチで低脳が多いな
261デフォルトの名無しさん:2013/02/19(火) 19:33:14.59
warning, working, walking,
262デフォルトの名無しさん:2013/02/19(火) 19:54:51.05
ウォーク、何をしていると思う?
263デフォルトの名無しさん:2013/02/19(火) 20:18:09.08
歩け
264デフォルトの名無しさん:2013/02/19(火) 21:04:16.20
ほげ〜
265デフォルトの名無しさん:2013/02/19(火) 21:11:09.74
次に現れる位置が確率的に無作為(ランダム)に決定される運動

ランダムウォーク(英語: random walk)
- Wikipedia
266デフォルトの名無しさん:2013/02/19(火) 22:25:08.64
ワーク、何をしていると思う?&nbsp;
267デフォルトの名無しさん:2013/02/19(火) 23:07:40.35
キャッチ キャッチト キャッチト
268デフォルトの名無しさん:2013/02/19(火) 23:13:34.03
if (NULL == ptr) って書く人間が社内にいるんですが、
せめて if (ptr == NULL) と書いてほしいですし、
一番分かりやすいのは if (!ptr) だと思います。
みなさんはどう書きますか?
269デフォルトの名無しさん:2013/02/19(火) 23:37:42.89
if(ptr)
{
;
}
else
270デフォルトの名無しさん:2013/02/19(火) 23:38:32.84
変数と定数を==で比較するときは、意識して定数を先に書くようにしてるわ。
直感的に書きづらいこともあるけど、万が一「変数 = 定数」と誤記した場合のことを考えると書き直したほうが安心できる。
!=とか<=とか代入にならない場合だと意味的に見やすい方で、というかそのときの気分で書く糞pgですが。
271デフォルトの名無しさん:2013/02/19(火) 23:39:47.97
NULL==ptrはNULL=ptrと間違って書いた場合コンパイラがエラーだしてくれるからそう書くんだそうだ
でも俺もptr == NULLって書いちゃうけどね
!ptrは一瞬首をかしげるから視認性重視でptr == NULlかな
272デフォルトの名無しさん:2013/02/19(火) 23:47:45.85
bool isNULL(void*);作って
if (!isNULL(ptr)) する。
273デフォルトの名無しさん:2013/02/19(火) 23:49:26.58
ウォーニング(発音おっけ?)レベルを -W -Wallにしとけば
コンパイラが教えてくれるしね。

むか〜しのCマガジンで
if(fp) と書くより if(fp!=NULL) の方がいいってのはあったなぁ。
まぁ結局慣れなんだけど。
274デフォルトの名無しさん:2013/02/19(火) 23:59:30.54
ptr=NULLでも大抵のコンパイラは警告出すけどね
275デフォルトの名無しさん:2013/02/20(水) 00:32:36.42
if ()←ここをブーリアン型として統一的に扱ってる人とそうでない人じゃないの
276デフォルトの名無しさん:2013/02/20(水) 00:42:50.71
ま〜だ if(定数 == 変数) とか言ってる奴がいるのか…
習性ってなかなか直らないモンなんだな。
277デフォルトの名無しさん:2013/02/20(水) 01:54:54.04
>>276
まあ、別に問題は無いしな。
278デフォルトの名無しさん:2013/02/20(水) 09:57:57.93
=と==の視認性の悪さが問題なんだよな
A=Bなら代入で
A=B?ならbool値を返す、とかなら・・・(でもこれはこれでBが長くなるとまた問題になりそうだが)
279デフォルトの名無しさん:2013/02/20(水) 10:12:24.32
条件判断をする場所で代入もするという横着をやめてしまえば
頭が条件判断のカッコの中では=を2連打するように切り替わる。
280デフォルトの名無しさん:2013/02/20(水) 10:25:44.77
if(shared_ptr<foo> ptr = flag ? a.lock() : b.lock())
281デフォルトの名無しさん:2013/02/20(水) 11:53:52.90
>>279
俺は最初から横着したことなかったから>>278が何を言ってるのか分からなかったがそういうことか
282デフォルトの名無しさん:2013/02/20(水) 12:01:56.36
>>278
A=B?でなくて
A?=Bとか
283デフォルトの名無しさん:2013/02/20(水) 12:59:30.55
Wirthさん「代入は := って書けばいいじゃない」
284デフォルトの名無しさん:2013/02/20(水) 13:03:20.69
>>279
俺も横着したことは殆ど無いけど、それでも入力ミスは発生するんじゃないかな。
285デフォルトの名無しさん:2013/02/20(水) 13:32:11.58
>>279
条件式の中で代入する時は俺は必ずカッコで囲んでいる
実際そうすると警告も消える
286デフォルトの名無しさん:2013/02/20(水) 14:41:22.69
それは代入の優先順位が低いからじゃね?w
287デフォルトの名無しさん:2013/02/20(水) 15:35:22.34
>>286
コンパイラに「ここはわざと代入してんだよ」と教えることも出来る
288デフォルトの名無しさん:2013/02/20(水) 16:39:45.91
if (!!(a = 1)) { ... }
289デフォルトの名無しさん:2013/02/20(水) 17:47:25.15
>>288
!演算子に副作用がある型だと死ねるな。
290デフォルトの名無しさん:2013/02/20(水) 17:55:20.71
いやboolを返さん限りはオーバートードできないだろ
291デフォルトの名無しさん:2013/02/20(水) 19:03:58.49
>>286
お前は何を言ってるんだ
292デフォルトの名無しさん:2013/02/20(水) 20:15:23.05
>>290
関数がboolを返すことと副作用があることは矛盾しないだろ
293デフォルトの名無しさん:2013/02/20(水) 22:08:31.51
>>290
蛙かよ。
294デフォルトの名無しさん:2013/02/21(木) 19:28:53.07
相談室にいましたが初心者スレのほうがいいと思ったのでこっちで質問します。

#include <iostream>
using namespace std;

class Parent {
private: class Child {
private: string name;
public: void setName(string name) { this->name = name; }
public: string getName() { return this->name; }
};
private: Child child;
public: Child getChild() { return this->child; }
};
int main() {
Parent parent;
parent.getChild().setName("ko");
cout <<parent.getChild().getName()<< endl;
}

これで子の名前が帰ってこないのはなぜなのですかね?
295デフォルトの名無しさん:2013/02/21(木) 19:59:53.19
>>294
C#使ってたんだろうけど
parent.getChild().setName("ko"); このgetChildが返すインスタンスと
cout <<parent.getChild().getName()<< endl; ここでのgetChildが返すインスタンスは別物です
296デフォルトの名無しさん:2013/02/21(木) 20:05:19.31
classの中にclassを入れるのはproxy classでしか使った事がない・・・
297デフォルトの名無しさん:2013/02/21(木) 20:06:41.46
>>294
C++ で、クラスを返す関数を書くと、その関数が返すクラスは「一時変数」。
return this->child
とかいたときに関数の外にかえってくる Child は、this->child そのものではなく、「this->childと「値が同じ」」別物だ。
298297:2013/02/21(木) 20:17:19.35
299297:2013/02/21(木) 20:22:20.29
return this->child;
とかいたとき、this->child とは別のインスタンスだが「「内容」は同じ」という点に着目すると、こうともかけるね
http://ideone.com/iCG9Mi
300デフォルトの名無しさん:2013/02/21(木) 20:27:01.69
>>294
C++の基本からやり直した方がいいよ
301デフォルトの名無しさん:2013/02/21(木) 20:51:02.11
newしていなくてもインスタンス化されてるんですか?
302デフォルトの名無しさん:2013/02/21(木) 20:51:35.62
>>300
すみません、やり直すどころか昨日はじめました
303デフォルトの名無しさん:2013/02/21(木) 20:52:41.98
>>302
じゃあ基本からやった方がいいよってことでw
304デフォルトの名無しさん:2013/02/21(木) 20:57:26.62
>>296
Childクラスを内部クラスにしない書き方も練習しようと思ったのですけど、その場合たとえば条件として

・ChildクラスのメソッドはParentクラスからしか呼び出せない。
・Childクラスは独立してインスタンス化したくない。

のとき、うまくかけるんですかね
Parentクラスを通してしか操作する気がないChildクラスであるならば、他から参照できないほうがいいですよね?
305デフォルトの名無しさん:2013/02/21(木) 21:01:55.29
>Parentクラスを通してしか操作する気がないChildクラスであるならば、他から参照できないほうがいいですよね?
うん
そういう時は普通に内部クラスにするよ
306デフォルトの名無しさん:2013/02/21(木) 21:11:20.31
>>305
ですよね、ありがとうございます。
あれ、なんでインスタンス化の話になってんだろと思ったら設計を勘違いしてました。入れ子にしたんだからこうするべきでしたね

#include <iostream>
#include <windows.h>
using namespace std;

class Parent {
private: class Child {
private: string name;
public: void setName(string name) { this->name = name; }
public: string getName() { return this->name; }
};
private: Child child;
public: void setChildName(string name) { this->child.setName(name); }
public: string getChildName() { return this->child.getName(); }
};
int main() {
Parent parent;
parent.setChildName("ko");

cout <<parent.getChildName()<< endl;
}
307デフォルトの名無しさん:2013/02/21(木) 21:15:09.91
Childを隠すならまあそうだよね

でもコピーコンストラクタや
テンポラリオブジェクトについては
別途調べておいた方がいいよ
308デフォルトの名無しさん:2013/02/21(木) 22:02:15.16
#include <iostream>
using namespace std;

class Animal {
public: enum AnimalType { DOG, TIGER, TANASIN };
private: AnimalType animalType;
public: Animal() {}
public: Animal(AnimalType animalType) { this->animalType = animalType; }
public: AnimalType getAnimalType() { return this->animalType; }
public: void noise() {
switch(animalType) {
case DOG:
cout <<"Ruff Ruff"<< endl;
break;
case TIGER:
cout <<"Glug Glug"<< endl;
break;
}
}
};

int main() {
Animal *pappy = new Animal(Animal.AnimalType.DOG);
}

これができないのはどうして?
309デフォルトの名無しさん:2013/02/21(木) 22:10:51.76
Animal::DOGだよ
だから基本からやれってwww
文法分かってねーだろw
310デフォルトの名無しさん:2013/02/21(木) 22:16:27.12
>>309
いや、コミュニケーションしましょうよ。あなたも復習。私も勉強。
Animal *pappy = new Animal(Animal.AnimalType.DOG);
ここは通りましたが、
pappy.noise();
で泣いてくれません;;
311デフォルトの名無しさん:2013/02/21(木) 22:17:26.54
Animal *pappy = new Animal(Animal::DOG);
pappy.noise();

でパピーが鳴いてくれない
312デフォルトの名無しさん:2013/02/21(木) 22:18:08.80
->使えよw
基本的すぎて何も勉強にならねえよwww
ていうかエラーメッセージくらい嫁
313デフォルトの名無しさん:2013/02/21(木) 22:25:20.14
>>312
this.name = name;
はダメで、
this->name = name;
は習ったけど次は->をどこに使うのよ?
314デフォルトの名無しさん:2013/02/21(木) 22:27:40.80
いいから本読め
315デフォルトの名無しさん:2013/02/21(木) 22:37:33.35
Java脳かC#脳過ぎてワロタww
316デフォルトの名無しさん:2013/02/21(木) 22:40:45.05
public public pblic wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
317デフォルトの名無しさん:2013/02/21(木) 22:51:17.83
これだから専門は
318デフォルトの名無しさん:2013/02/21(木) 23:02:42.29
319デフォルトの名無しさん:2013/02/21(木) 23:08:30.04
DOG = 0 の = 0 は別に不要じゃ
320デフォルトの名無しさん:2013/02/21(木) 23:09:28.11
>>313
Animal *pappy = new Animal(Animal::DOG);
として pappy には Animal へのポインタが入っているのだから、
pappy が指すAnimal 型オブジェクトのメソッド=メンバ関数を呼びだすには、
pappy->noise();
とするしかない。

この辺を間違えたらこんな風に炎上しちゃいます。でもこの人、当時は全然わけがわからなかったんだろうな‥‥
http://builder.japan.zdnet.com/script/sp_c-programming-language/20370255/
321デフォルトの名無しさん:2013/02/21(木) 23:09:52.82
>>319
なんとなくやってしまった‥
322デフォルトの名無しさん:2013/02/21(木) 23:10:56.42
懐かしい記事だなw
そんな事もあった
323デフォルトの名無しさん:2013/02/21(木) 23:11:35.23
= 0 書きたがる人っているよね
よく分からんが糞コンパイラでハマったのか?
324デフォルトの名無しさん:2013/02/21(木) 23:18:49.85
>>315
逆にJava/C#から入ってきた人のコードがすごくみえてしまうのですけど最初からこんな風におもいつくのかと by K&R1C脳
325デフォルトの名無しさん:2013/02/21(木) 23:30:46.61
アロー演算子が何を意味するかが理解できてないのか。
326デフォルトの名無しさん:2013/02/21(木) 23:34:57.42
>>323
C++は「出来るだけ新しいキーワードは増やさない」という標準化委員会の意向があるので
同じキーワードや同じ書き方にいろんな意味を持たせる傾向があって、最初は「なにこれ?」と
思うかも知れんね
327デフォルトの名無しさん:2013/02/21(木) 23:48:43.18
>>326
純粋仮想関数の = 0; は許せたけど、C++11ではclassに = 0; を付けると sealed、
つまりこれ以上継承出来ない意味になったんだっけ

boostにnonderivableというのがあったけど
328デフォルトの名無しさん:2013/02/21(木) 23:52:03.29
うわっ気持ち悪い
= delete; と = default; なんだね
こういう変態的な文法だからいろいろ言われるのか
まあ仕方ない
329デフォルトの名無しさん:2013/02/21(木) 23:57:13.60
>>306
ああ移譲の話か
それコンポジションでも良く使うテクニックなので覚えておこうね
330デフォルトの名無しさん:2013/02/22(金) 00:06:50.36
まぁどんぐりの背比べだな
ポインタ使えるところからJavaやC#きたらそれはそれで恥ずかしいコード書く
331デフォルトの名無しさん:2013/02/22(金) 00:09:40.36
おい、C++のポインタ廃止にしろ。初学者に邪魔。
あと、this.nameができるようにしろ。アスタリスクはなくせ。
332デフォルトの名無しさん:2013/02/22(金) 00:12:45.61
ていうか、自分はpappyていうインスタンス名をつけたいのに何で頭に汚いマークつけないといけないわけ?
だからといって
*pappy.noise();
はダメなんでしょ?
うちのpappyをなめてるとしかいえない。
333デフォルトの名無しさん:2013/02/22(金) 00:23:14.49
(*pappy).noise();
ならよい。基本的にa->bは(*a).bと同じ
334デフォルトの名無しさん:2013/02/22(金) 00:33:08.05
>>333
ホントだ。

だけど、
Animal *pappy = new Animal(Animal.AnimalType.DOG);
がダメなのが許せない。

だってさ、Animalクラスの中で「AnimalType」っていう名前でenumを定義したんだよ?
何故に
Animal::DOG
で呼び出せちゃうわけ??

つまり、Animalクラス内にAnimalTypeとは別のenum、
public: enum AnimalMoveType { WAIT, MOVE, WALK }
があったとして、

Animal::WAIT
で呼び出せちゃうとAnimalTypeとAnimalMoveTypeはまるで同じenum内にあるみたいじゃん。
これは正直どうなの!?

javaなら
new Animal(Animal.AnimalType.DOG);
で安全に呼び出せるんだけど。
335デフォルトの名無しさん:2013/02/22(金) 00:36:01.70
>>334
どうでもいいけど、なんでいちいちnewするの?
336デフォルトの名無しさん:2013/02/22(金) 00:42:04.84
>>335
pappyのほかにpotiが飼いたい場合どうするのよ
337デフォルトの名無しさん:2013/02/22(金) 00:43:11.13
「何故いちいちnewするの?」って質問はご法度じゃないかい?
逆に聞きたい。「何故わざわざ部品として将来利用し辛い形に設計するの?」
338デフォルトの名無しさん:2013/02/22(金) 00:44:53.15
>>308
TANASHINってどんな生き物だ…と思ったら
ttp://ja.uncyclopedia.info/wiki/Tanasinn
のことなのね
339デフォルトの名無しさん:2013/02/22(金) 00:55:22.71
普通継承して仮想関数を使うけどね
caseやif文で分岐させるようにしてると悪い癖が付くよ
340デフォルトの名無しさん:2013/02/22(金) 00:57:09.95
>>339
え!
C++ってenum switch非推奨なの?Javaじゃありえないんだけど。
341デフォルトの名無しさん:2013/02/22(金) 00:59:32.02
>>340
じゃあJavaでも使ってろよ
342デフォルトの名無しさん:2013/02/22(金) 01:05:29.06
>>341
なになにっ!?
C++はそんなに他からの学習者を寄せ付けない方針なの!?

確かに心当たりある。
javaはCから来た人にも導入しやすいように
int[] a = new int[3]; も
int a[] = new int[3]; もおkにしてる。

だけど!C++は前者を許してくれない。ひどい。もっと互いに仲良くするべき。
343デフォルトの名無しさん:2013/02/22(金) 01:07:35.71
上がOKで有り難みが感じられない(´・ω・`)
344デフォルトの名無しさん:2013/02/22(金) 01:08:23.58
加えて
this.name = name;
も許してほしい。
あと、ポインタは難しいのでなくす方針でおながいしますね。
345デフォルトの名無しさん:2013/02/22(金) 01:08:44.57
Qは無職の老害の癖に偉そうだな

>>343
相手にすんな
346デフォルトの名無しさん:2013/02/22(金) 01:11:26.42
町内の皆さん、聞いてください。これが恩をあざに返す です>>343 ひどいよ。
仲良くしようや。
347デフォルトの名無しさん:2013/02/22(金) 01:12:42.64
誰が恩を提供いつどこで提供したのか言ってもらおうか
348デフォルトの名無しさん:2013/02/22(金) 01:13:32.90
だいたいJavaはC++の真似してる癖に
349デフォルトの名無しさん:2013/02/22(金) 01:14:45.26
350デフォルトの名無しさん:2013/02/22(金) 01:15:29.42
>>346
日本語おかしいですよ?
日本人ですか?
言うなら「恩を仇で返す」でしょ?
351デフォルトの名無しさん:2013/02/22(金) 01:16:09.56
>>349
それお前が書いたんだろ
自作自演みっともないからやめろ
352デフォルトの名無しさん:2013/02/22(金) 01:18:56.00
言語が人に合わせるんじゃない
人が言語に合わせるんだ
353デフォルトの名無しさん:2013/02/22(金) 01:19:40.35
それが嫌なら自分で自分専用の言語でも作れってこった
354デフォルトの名無しさん:2013/02/22(金) 01:28:42.61
>>340
http://ideone.com/ZdF5qV
http://ideone.com/6nYLTB
java でも enum switch はためらわれるんじゃないかなあ‥‥
355デフォルトの名無しさん:2013/02/22(金) 01:30:08.22
もうちょっとJava使いにもわかりやすくしてほしい。言いたいことはそれだけ。
使いにくいことを売りにして、そういう趣味の人を囲い込んでるのだろうか・・・。
356デフォルトの名無しさん:2013/02/22(金) 01:34:22.10
>>342
C++ のほうが古いし泥臭いし仕方がないっす。たしかに後発のjavaの方が合理的だから許してね
C/C++はオブジェクト型(参照型)に対してもプリミティブ(単純型)と同じように名前で実体全部を表現することを含ませているんです
357デフォルトの名無しさん:2013/02/22(金) 01:34:40.05
>>355
だから世界はお前中心に回っているわけではない

嫌なら無理して使わなくていいから
358デフォルトの名無しさん:2013/02/22(金) 01:37:32.69
>>354
えっ!?それはどうしてなの?

public static final int DOG = 0;
public static final int TIGER = 1;

としてたなら、直接変数に3や4を入れちゃうと・・・ってことでenumは便利だと。
だけど、implementsですむならimplementsしろってこと?

ちょっとわからない。
「extendsするより可能ならimplementsにしろ」ってのは聞いたことあるけど、enum switchがためらわれるなんてきいたことがないよ!どうなってるの
359デフォルトの名無しさん:2013/02/22(金) 01:38:27.48
>>358
もうお前うざいからJavaスレに逝って帰ってくんな
360デフォルトの名無しさん:2013/02/22(金) 01:39:10.05
>>356
C++とC/C++って別なの?

C かつ C++ イコール C/C++と表現してるわけじゃなくて?
361デフォルトの名無しさん:2013/02/22(金) 01:42:10.25
正直俺にとってC++は難しすぎるよ。ポインタは難しいと聞いていたがここまでだとは思わなかった。
ここで学習をやめるべきかな?それとも続けたらわかるかなぁ。
362デフォルトの名無しさん:2013/02/22(金) 01:43:14.90
>>344
>>356
java のオブジェクト型/参照型は new 以外の生成法がないから、a->b() と a.b() を区別する必要がない。
C/C++ はオブジェクト型に対して new を書かないオブジェクト生成がありうるのです。
そして、this はポインタと決まっているので。

java にほしいのは参照渡しだなあ‥‥C# にはあるのに。
363デフォルトの名無しさん:2013/02/22(金) 01:45:46.09
>>362
いい加減にスレ違いです
364デフォルトの名無しさん:2013/02/22(金) 01:51:10.97
>>362
>new を書かないオブジェクト生成がありうるのです。

これって例えばどういう利点があるの?確かにはじめC++で悩んだのが、

Test test;
test.method();

でちゃんとインスタンス化?されているらしく、動いたこと。

故にnewはなくてもいいんだなと単純に解釈したが、newはnewで存在していた。そしてポインタにぶちあたった。

>a->b() と a.b() を区別する必要

ここが知りたいです。教えてください。
365デフォルトの名無しさん:2013/02/22(金) 01:53:28.51
>>358
animal を分類区分けして dog と tiger という種別をつくるんですよね
new するときに dog にするか tiger にするかを決めて new し、それを animal で持つんだったら、これは継承で表現するのがOO的じゃないかな

animal のサブクラスが100個のメソッドを持つとき、そこに新たに cat というサブクラス=種別を導入した場面を考えると、
各メソッドが種別ごとに enum switch でごちゃごちゃかいてあったら、ちらばっている100個のメソッドすべてに switch のエントリーを追加しなくちゃならないじゃない?
いや、継承でも cat 用のメソッドを書かなければならないのは同じだけれども、一箇所にまとまるので、すくなくとも書きやすいし把握しやすいと思う

abstract/interface 、C++ 用語での virtual って、そういう enum switch を隠蔽してくれるためのものだと思うのです
C++ のコード生成結果に enum switch が入っています。java も同じことだと思うけど
366デフォルトの名無しさん:2013/02/22(金) 01:54:41.24
>>360
C と C++ は別ですが、重なる部分はとても大きいので、重なる部分を意識して C/C++ とかきました、今の場合は「ポインタ」
367デフォルトの名無しさん:2013/02/22(金) 01:55:57.53
全部->にすればいいんじゃね
近くにいたらぶっ飛ばすけど
template <typename T>
class arrow
{
public:
T* operator ->(void) { return static_cast<T*>(this); }
const T* operator ->(void) const { return static_cast<T*>(this); }
};

class foo :public arrow<foo>
{
368デフォルトの名無しさん:2013/02/22(金) 01:56:50.44
>>361
http://cruel.org/freeware/hacker.html
>本気でプログラミングをするなら、C を勉強するしかありません。
369デフォルトの名無しさん:2013/02/22(金) 02:05:13.91
ところでみんなして子犬じゃなくておっさんを鳴かせているようだがいいのか?w
370デフォルトの名無しさん:2013/02/22(金) 02:06:50.14
>>364
Test test; test.method();
静的/スタティックにインスタンスを確保することを指します。確保の仕方としてはコストが非常に低いのです。
java でもプリミティブ型(int とかね)はほぼこれに近いのですが、C/C++ ではクラスも静的に確保できます。

一方、C/C++ で動的/ダイナミックに確保するのなら
Test *test = new Test(); とやるしかない。これはコストが余計にかかります。
C/C++ は動的と静的でインスタンスを表現する方法も区別します。静的と動的とは別だから当然です

静的:Test test; test.method()
動的:Test *test = newvTest(); test->method(); delete test;

java では参照型の場合には動的な確保しかないのです。だから -> とか . とか分ける必要はなく、ドットだけで代表させてしまったのですね
あえて静的・動的を使い分けてがんがんやる用途でもなければ、java の方が単純でわかりやすいでしょうね
371デフォルトの名無しさん:2013/02/22(金) 02:09:22.35
>>364
第一義的にnewは遅い。動的メモリ割り当てを行うので、ランタイムやOSに呼び出しを掛けないといけない。
自動GCのないC++で全てのオブジェクトをnewするととんでもなく遅くなる。
一方newを使わないスタック割り当ては恐ろしく速い。というのも(スタックポインタの)数値を加算するだけだから。
加えてスタック上の(newしていない)オブジェクトはスコープを外れると自動的に解体される。
GCがないC++にとってこれは非常に重要な特性となる。
なぜならnewしたオブジェクトは(GCがないので)勝手に破棄される事がなく、放置するとメモリリークというバグになるからだ。
ポインタはまた少し違う。C/C++では「オブジェクトがどこにあるか」についてプログラマが掌握できる。
ということは、プログラム上でオブジェクトのある場所を表現する必要がある。それがポインタ。
オブジェクトがスタック上にあるならそれは目の前にあるのでアドレスを持っている必要はない。
従ってポインタを通す必要もない。
一方「別の場所」からオブジェクトを持ってくる場合もある。そういうときは(場所を表現している)ポインタで渡される。
372デフォルトの名無しさん:2013/02/22(金) 02:09:52.53
>>369
驚愕の真実w
373デフォルトの名無しさん:2013/02/22(金) 02:13:10.28
>>371
だってさあ、C++では仮想関数の呼び出しってポインタかリファレンスを通すしかないじゃん
374デフォルトの名無しさん:2013/02/22(金) 02:13:50.92
あー確かに最近の言語と比べてC++はオブジェクト生成の扱いが
若干違うよね。そこらへんはCをやってないとピンとこないかも。
375デフォルトの名無しさん:2013/02/22(金) 02:14:54.54
>>363
きょうび、java もある程度語ることができなければc++erとしてどうかと思うのです
376デフォルトの名無しさん:2013/02/22(金) 02:16:06.16
>>375
スレ違いの荒らしがなに偉そうに語ってんの?
377デフォルトの名無しさん:2013/02/22(金) 02:21:13.27
>>375
JavaもC#も分かるわい馬鹿。このスレで敢えてしないだけだ
KYは去れ
378デフォルトの名無しさん:2013/02/22(金) 02:22:37.17
C++というかC系統の言語を扱う時は、コンパイルタイムとランタイムの
区別をきちんとつけられるようにするべき。さらにはコンパイラが宣言を
どう解釈し、どういうコンパイルを行うのか想像できるべき。
379デフォルトの名無しさん:2013/02/22(金) 02:26:34.90
>>365
うーんっと、なんとなく言ってる意味はわかったのだけれど、
Animalから枝分かれしたDOGやTIGERクラスからインスタンス化することに違和感を感じてしまう。
確かに継承したほうが見やすいし、個としてはまとまる気もする。
あくまでAnimalという次元の中からDOGやTIGERは生成されてほしいという思いがある。

というのも、「犬やトラがAnimalを道具として装備してる状態」が自分には新鮮だった。

「鳴かない動物がある」とすれば、Animalをimplementsしたくないですよね?
だけど、鳴かない動物は紛れも鳴く動物であり、Animalであると思うんですよ。
380デフォルトの名無しさん:2013/02/22(金) 02:26:51.30
>>376-377
できるというのならば、java から c++ に移行しようとしている初学者を適切に導いてスレが荒れるのを防止してくださいな
「敢えてしない」のではなくて、「できない」のではないの?
381デフォルトの名無しさん:2013/02/22(金) 02:31:50.05
>>379
んー、ちょっとよくわからないけれども、思想をインプリに反映させたい場合もあるんですね
java の人としゃべっているとこういう話がメインになるからわりと新鮮、c/c++er だと >>371 に軸足が移りがちなんですね
382デフォルトの名無しさん:2013/02/22(金) 02:36:55.08
ちなみに上のほうに出ていた例を解説すると

C++
class_a a;
a.member();

これをJavaで書くと

class_a a = new class_a();
または
static class_a a;

a.member();

でほぼ等価になるかな。厳密には等価じゃないけど。
C++はポインタでなく実体宣言すると、コンパイル時点で
コンストラクタこみの動作になる。
383デフォルトの名無しさん:2013/02/22(金) 02:40:02.93
>>381
>思想をインプリに反映させたい場合もあるんですね
むしろそうでないと自分の場合設計できないんですよね・・・。
可能な限り自然界と近い形にしないと自分の頭の中で処理がまわらないというか融通がきかなくなる。
「確かに自然界とは違うが、処理的にはこっちのほうが得だし、便利だし」っていう発想でコードを書き上げる自身がない。
何か遠回りな書き方してる気はしながらも安心感に負けちゃうというか。
384デフォルトの名無しさん:2013/02/22(金) 04:13:13.89
女にもてないタイプだな
385デフォルトの名無しさん:2013/02/22(金) 07:26:59.71
Javaどっぷりなのは分かったから
とにかくC++を最初からやれ
基礎の基礎の基礎から
386デフォルトの名無しさん:2013/02/22(金) 08:40:07.55
>>380
ほら出たこういう攻撃
自分が悪いのを棚に上げて他人ばかり悪いように言うあなたの性格が荒れる原因に
なっていると分からない時点で立派な荒らしですよ

俺も元はJava使いだからね
しかしあんたと違ってスレを荒らさずにC++も使えるようになったから
387デフォルトの名無しさん:2013/02/22(金) 08:41:50.07
>>381
だからそう思うならJavaスレでC++の話を聞けよ
どうせ同じスレ違いならそっちの方が新鮮な話が聞けていいんでしょ、
あんたの理屈から言えば

C++スレに粘着する理由がわからん
388デフォルトの名無しさん:2013/02/22(金) 09:16:33.54
なんでC++やってるのに彼女できないかなぁ…
389デフォルトの名無しさん:2013/02/22(金) 09:17:16.75
今時はjavaからc++に入る人ってのもいるんだな。
隔世の感があるな。
390デフォルトの名無しさん:2013/02/22(金) 09:18:06.43
>>388
いきなりC++要求してもな・・・
まずはAからだろ
391デフォルトの名無しさん:2013/02/22(金) 10:16:56.91
javaを要求したら出てくるのはお茶かカレーか
392デフォルトの名無しさん:2013/02/22(金) 11:20:56.91
りんごとはちみつが恋をしてるのはjavaじゃなくてjawa
393デフォルトの名無しさん:2013/02/22(金) 12:24:31.94
C#にもstructがあるだろ。
C++でclassをnewしないで確保したら、C#のstructと同じ。
そのときメンバには.でアクセスする。
C++でclassをnewで確保したら、C#のclassと同じ。
ただし、そのときメンバには->でアクセスする。
394デフォルトの名無しさん:2013/02/22(金) 12:36:24.99
>>387
>JavaスレでC++の話を
スレチといわれる、どっちみち

>そっちの方が新鮮な話が聞けて
え?JavaスレでC++の話を機構が、C++スレでjavaの話を気候がどっちもどっちですけど
395デフォルトの名無しさん:2013/02/22(金) 12:40:23.77
>>386
java から c++ に移行しようとしている初学者を適切に導いてね、これを荒れるとはいわないとおもうよ
>>317 とか >>342
> C++はそんなに他からの学習者を寄せ付けない方針なの!?
とかいわれてしまう事実をお忘れなく
396デフォルトの名無しさん:2013/02/22(金) 12:48:42.30
自演もほどほどにな
397デフォルトの名無しさん:2013/02/22(金) 13:01:37.10
C++/Java/C#で開発経験あるけど、
正直言語が変わると頭の中も切り替わるなぁ
相互でどういう機能とか考えたことがない。

C++/CLIだけは、ごっちゃになっているが・・・
398デフォルトの名無しさん:2013/02/22(金) 13:09:20.77
逆に私は言語を替えてもそんなに変らないな。
399デフォルトの名無しさん:2013/02/22(金) 13:16:21.07
>>394
前言撤回ですか、言い訳としては幼稚過ぎますね
400デフォルトの名無しさん:2013/02/22(金) 13:25:37.53
>>342
> C++はそんなに他からの学習者を寄せ付けない方針なの!?
そのとおりです
あなたのような姿勢の人は寄せ付けません(というよりあなたのほうが寄り付くことをこばんでいます)

C++に限りませんが
 私はプログラミング言語○○ができるからプログラミングの素人ではないんだ。
 素人じゃないから今の知識を生かして新しいプログラミング言語でも簡単に習得できるはずだ
という姿勢ではその言語を正しく習得できません

新しいプログラミング言語に対しては自分は素人以下の何の知識もない初心者なんだという意識で過去の知識にとらわれず
新たな知識として基礎から全てを受け入れる姿勢で学習に臨むべきです
401デフォルトの名無しさん:2013/02/22(金) 13:46:21.18
逆にjavaに文句言うのもおかしいよね。
ただ一応初心者歓迎 なので。
402デフォルトの名無しさん:2013/02/22(金) 15:01:44.83
初心者は歓迎だけど池沼とhoge厨はお断り
403デフォルトの名無しさん:2013/02/22(金) 15:12:01.15
>>400
> 素人じゃないから今の知識を生かして新しいプログラミング言語でも簡単に習得できるはずだ
>という姿勢ではその言語を正しく習得できません

その言語の是非はともかく、今回はそれらとは全く別の何かだと思う。
404デフォルトの名無しさん:2013/02/22(金) 15:31:52.58
初心者用のサイトも見ずにjavaではどうのとか言って、
アホなことしてたらやる気ないと思われても仕方ない
405デフォルトの名無しさん:2013/02/22(金) 15:47:15.45
池沼はお断り、これで十分
書き込みから池沼具合がにじみ出ている
406デフォルトの名無しさん:2013/02/22(金) 15:51:48.07
>>403
いやまったくその姿勢だと思うよ
「俺はjava使えるしプログラミングの初心者じゃない」みたいな要らんプライドが透けて見える
407デフォルトの名無しさん:2013/02/22(金) 16:12:19.25
だな
java使えてもC++はズブの初心者である事をまず認めろ
そうでないとここでは誰も相手にしない
408デフォルトの名無しさん:2013/02/22(金) 17:16:59.34
>>383
> 可能な限り自然界と近い形にしないと自分の頭の中で処理がまわらないというか融通がきかなくなる。
> 「確かに自然界とは違うが、処理的にはこっちのほうが得だし、便利だし」っていう発想でコードを書き上げる自身がない。

アスペじゃないの?
409デフォルトの名無しさん:2013/02/22(金) 17:27:43.25
>>408
ああ、何かuyっぽい言い回しだよな
410デフォルトの名無しさん:2013/02/22(金) 17:35:44.92
自分に酔ってるタイプの人間だな
初学者でこれは厄介w
411デフォルトの名無しさん:2013/02/22(金) 18:25:25.60
人格攻撃ごっこしたいなら他でやってくれませんか
412デフォルトの名無しさん:2013/02/22(金) 18:28:09.05
皆さん、今日もよろしくお願いしますね
413デフォルトの名無しさん:2013/02/22(金) 19:51:53.12
つまらない煽り合いは専用のスレッドでお願いします
http://toro.2ch.net/test/read.cgi/tech/1353308523/
414デフォルトの名無しさん:2013/02/22(金) 21:36:56.71
すみません。guiを作りたいのですが、win32Apiのように外部のものじゃなくて、JFrameのようなものはありますか?
標準のAPIで作りたいです
415デフォルトの名無しさん:2013/02/22(金) 21:39:37.89
C/C++にそんなものあるわけないだろ
416デフォルトの名無しさん:2013/02/22(金) 21:42:10.80
C/C++にとってのAPIってほぼ外部のものじゃないの

Qtとか
417デフォルトの名無しさん:2013/02/22(金) 21:49:22.87
じゃあ一体全体、スタンドアロンのプログラムっていったいどの言語で一番書かれているわけ?
418デフォルトの名無しさん:2013/02/22(金) 21:51:46.89
ホットスーププロセッサ
419デフォルトの名無しさん:2013/02/22(金) 21:53:33.56
AdobeとかSkypeはDelphiだったなあ(笑)

最近はJavaとかC#もこっそり使ってるようだけど
他のは大抵VS C++かICLだな
420デフォルトの名無しさん:2013/02/23(土) 01:47:20.61
何か見かけはJavaじゃないように作ってJVMで動かしてるようなのが多いな最近
421デフォルトの名無しさん:2013/02/23(土) 01:52:23.50
Adobe Readerは妙にもっさりしてるけどどうもJavaっぽい動き
422デフォルトの名無しさん:2013/02/23(土) 12:31:56.12
スマホ向けC/C++コンパイラを教えてくれ
423デフォルトの名無しさん:2013/02/23(土) 12:33:24.16
まだか?
424デフォルトの名無しさん:2013/02/23(土) 12:34:36.06
はやく教えろ
425デフォルトの名無しさん:2013/02/23(土) 12:35:33.11
おいまだか早くしろ
426デフォルトの名無しさん:2013/02/23(土) 12:38:27.65
質問スレ名乗っといて質問きたら無視か?
427デフォルトの名無しさん:2013/02/23(土) 12:41:31.40
答えられないのか
428デフォルトの名無しさん:2013/02/23(土) 13:14:44.11
class MY {
string mykey;
int myval;
//...and other member
public:
MY(string key) : mykey(key) {};
setval(int x) { myval=x };
};

void func() {
map<string,MY> xxx;
vector<MY *> yyy;

while() {
data* = getdata(); //ランダムにデータ取得
string key = data->getkey(); //上記のデータよりキー生成
MY my(key);
int val = data->getvalue();
my.setval(val);

it = xxx.insert(it, pair<string,MY>(key,my));
if(val==0) yyy.push_back(&it->second)
}
}

みたいな事をやりたいのですが、
コンストラクタ、コピーコンストラクタを減らすにはどうすればいいかな?
そんな事考えずにガンガン生成するもの?(ループ内のkey,my,pair辺り)

あとyyyに追加するmap内のMYのアドレスはmapから明示的に消さない限り安全なのでしょうか?
(xxx内のMY.myvalが0のMYの一覧を後で知りたい)
429デフォルトの名無しさん:2013/02/23(土) 13:53:57.68
質問内容が難しすぎてjavaしかできない僕には答えられないよ。次。
430デフォルトの名無しさん:2013/02/23(土) 14:22:50.38
>>428
時期尚早な最適化はやめたほうがいい
>あとyyyに追加するmap内のMYのアドレスはmapから明示的に消さない限り安全なのでしょうか?
ダメ拡張時に消える可能性がある
431デフォルトの名無しさん:2013/02/23(土) 14:40:51.90
いいからスマホ向けコンパイラ教えろ
432デフォルトの名無しさん:2013/02/23(土) 14:44:36.25
いつまで待たせる?
433デフォルトの名無しさん:2013/02/23(土) 14:45:03.38
>>430
> >あとyyyに追加するmap内のMYのアドレスはmapから明示的に消さない限り安全なのでしょうか?
> ダメ拡張時に消える可能性がある

そんなわけない。というかvectorの要素への参照と勘違いしてるだろ

mapの要素への参照(ポインタ)はその要素を削除したときだけ無効になる
よってmapからその要素を削除しない限り安全にアクセスできる
434デフォルトの名無しさん:2013/02/23(土) 14:52:41.32
>時期尚早な最適化はやめたほうがいい

これは定石だな
作ってる最中は、その目的をそのクラスでシンプルに達せいしろ。最適化は後だ。みたいな格言あったよな。誰だっけ
435デフォルトの名無しさん:2013/02/23(土) 14:53:50.45
>>431
「スマホ」って範囲が広すぎて誰も答えられないんだよ
436デフォルトの名無しさん:2013/02/23(土) 14:54:28.33
>>433
ttp://ideone.com/t0IVpQ
本当だ
枝変わるときにコピーされて消えると思ってたわ
437デフォルトの名無しさん:2013/02/23(土) 14:55:55.10
>>430
>>あとyyyに追加するmap内のMYのアドレスはmapから明示的に消さない限り安全なのでしょうか?
>ダメ拡張時に消える可能性がある
ありがとうございます。

拡張時も危ないのですか。
やるとすればmapを作り終わって変更しない状態になってから一覧を取り出す、か、
map内のMYをポインタ管理にしてそれを保存しておく感じになるのかな?

C++を使い始めて間もないのですが、
ちょっとしたコードでこんなにたくさんオブジェクト生成とかが呼び出されるのは
なんか気持ち悪いってのがあって。。。
まあ確かに細かい所の最適化は早いですかね。
438デフォルトの名無しさん:2013/02/23(土) 15:03:57.08
439デフォルトの名無しさん:2013/02/23(土) 15:07:47.23
アンドロイド
440デフォルトの名無しさん:2013/02/23(土) 15:10:58.39
ほら答えたぞ早くしろ
441デフォルトの名無しさん:2013/02/23(土) 15:14:13.50
まだかリロードしてる俺の気持ちも考えろ
442デフォルトの名無しさん:2013/02/23(土) 15:15:46.38
C++11ならmoveが行われて
コピーは行われないだろうけどね
443デフォルトの名無しさん:2013/02/23(土) 15:17:12.80
>>433,436
あら?大丈夫なのかな?

逆にvectorは連続した配列で確保されてるから、
再確保で先頭アドレスが変わるとダメになるってことでいいのかな?
444デフォルトの名無しさん:2013/02/23(土) 15:20:22.00
どうしてもmapを使いたいのか
vectorに入れてsortしてからlower_boundで取り出しても十分速いぞ
445デフォルトの名無しさん:2013/02/23(土) 15:20:23.32
さっさとアンドロイド向けコンピラ教えろ
446デフォルトの名無しさん:2013/02/23(土) 15:21:45.45
return 問題は
早い段階でc/c++言語仕様に scope(exit) 導入されてればそれほど忌避されることも無かったろうに
もう今更だけど
447デフォルトの名無しさん:2013/02/23(土) 15:26:32.34
コンパイラはよ
448デフォルトの名無しさん:2013/02/23(土) 15:38:10.02
まだなのか
449デフォルトの名無しさん:2013/02/23(土) 15:40:05.95
好きなコンパイラ使ってプログラムだけスマホに送るか首吊るかしたら良くね
450デフォルトの名無しさん:2013/02/23(土) 15:41:57.56
451デフォルトの名無しさん:2013/02/23(土) 15:50:36.93
>>449
それ今やってるわボケ
今はうぇぶIFでコード組んで家のリナックス鯖のGCCでコンパイル実行だけどセキュリティ的にアレだろうが
だからスマホ向けコンピラ探してんだよハゲ
お前の薄い脳で考えるようなことは6年前からやってる
452デフォルトの名無しさん:2013/02/23(土) 15:56:31.46
何でAndroidスレで聞かないのか
453デフォルトの名無しさん:2013/02/23(土) 15:59:04.95
>>444
keyが被る数が少ないなら無駄も少なくてそれでもいいですね。
今はkeyが被った瞬間に検出したいってのもあるし、
とりあえず基本的なmapを使っています。
454デフォルトの名無しさん:2013/02/23(土) 16:49:43.60
>>451
じゃあここで質問してたら意味なくね(´・ω・`)
455デフォルトの名無しさん:2013/02/23(土) 16:58:26.98
>>451
お前の脳内なんか知らねーよwww
毛生やしてから出直してこいよハゲ
456デフォルトの名無しさん:2013/02/23(土) 17:19:13.11
スマホ用のCコンパイラ
・製品を製造する側の人が使うプロ用のコンパイラはあるが超高い
・一般向けの安価または無料のコンパイラはない。
457デフォルトの名無しさん:2013/02/23(土) 19:34:01.76
>>434
ハーブサッターさんかな?
458片山博文MZパンク ◆0lBZNi.Q7evd :2013/02/23(土) 22:05:03.56
スマホで動くエミュレータなんてあるのかな
459デフォルトの名無しさん:2013/02/23(土) 22:08:40.62
>>458のゴミもテンプレのNG推奨に入れといて
460デフォルトの名無しさん:2013/02/23(土) 22:44:51.22
>>450
うおおおおおおおおおおおおおおおおおおおおおおおおおおお
ありがとううううううううううううううううう
ちょっと高いけどこれはいい1!!11!!!!!1
461デフォルトの名無しさん:2013/02/24(日) 00:59:05.66
261円で高いとかどんな金銭感覚だよ
まぁ中には外れアプリもあるだろうけどさ
462デフォルトの名無しさん:2013/02/24(日) 01:09:06.11
261ドルじゃなかった?
463デフォルトの名無しさん:2013/02/24(日) 06:47:45.11
円だねぇ。
464デフォルトの名無しさん:2013/02/24(日) 08:11:08.84
高いわっ
465デフォルトの名無しさん:2013/02/24(日) 08:29:48.56
C++で、a.hというヘッダーにclassを作って、int aというpublic変数を作りました。
当然a.cppという同名ファイルでは変数aが使えるのですが、
b.cppなどの他のファイルでは、変数aが使えないみたいです…
publicだけでは他のファイルでは使えないのでしょうか?
466デフォルトの名無しさん:2013/02/24(日) 08:32:46.56
a.cppからa.hの変数が使えるのは、a.hをインクルードしているから。
b.cppからa.hの変数が使えないのは、a.hをインクルードしてないから。
467デフォルトの名無しさん:2013/02/24(日) 09:00:18.60
>>466
ありがとうございます、出来るようになりました!
468デフォルトの名無しさん:2013/02/24(日) 09:39:42.75
すみませんどうしても分からないのでもう一つお願いします。
Main、Key、Funcというclassをそれぞれ作って宣言をhとcppに書いたのですが、複数で使うために定義しようとするとエラーが出てしまいます。例えば

*a.cpp*
Main main;
Key key;
Func func;
*b.cpp*
Main main;
Key key;
Func func;

a.cppでもb.cppでもmain、func、keyのクラスを使いたいのでこう書いています。
しかし多重定義エラーだそうです…かと言ってa.cppだけで定義するとb.cppでは使えません…
調べてもこういうところが出てこないのでお願いします。
469デフォルトの名無しさん:2013/02/24(日) 09:53:41.06
externを使いましょう
470デフォルトの名無しさん:2013/02/24(日) 10:01:24.93
//a.h
extern Main main;
//etc...

//a.cpp
#include "a.h"
Main main;

//b.cpp
#include "a.h"
//Don't define "main" here
471デフォルトの名無しさん:2013/02/24(日) 10:01:55.90
しかしmainて変数名気持ち悪いことこの上ないなw
472デフォルトの名無しさん:2013/02/24(日) 10:03:49.51
関数名とかぶっても大丈夫なんだっけ
473デフォルトの名無しさん:2013/02/24(日) 10:14:54.51
ありがとうございました上手くいきました、externをそれぞれのcppで定義するんですね。
474デフォルトの名無しさん:2013/02/24(日) 10:25:20.26
凄い、mainって変数名使えるんだw
ただし関数内スコープに限る?
宣言前後でmainのアドレスが変わるっぽい?

でもグローバル空間だとさすがにダメだ

using namespace std;
class Main {};
Main main;
int main() {
return 0;
}
mainname.cpp: In function ‘int main()’:
mainname.cpp:6:10: error: ‘int main()’ redeclared as different kind of symbol
mainname.cpp:4:6: error: previous declaration of ‘Main main’
475デフォルトの名無しさん:2013/02/24(日) 10:31:28.51
すみませんmain変数は仮の名前なので気にしないでくださいw
476デフォルトの名無しさん:2013/02/24(日) 11:27:56.61
はいw
477デフォルトの名無しさん:2013/02/24(日) 12:27:45.17
#define private public でよい
478デフォルトの名無しさん:2013/02/24(日) 14:18:50.11
なんか他のスレでもあまりhogeを見かけなくなった
hoge使ったほうが盛り上がって面白くなるんだからもっと使えよ
479デフォルトの名無しさん:2013/02/24(日) 16:09:25.58
そりゃ、書いたらキチガイが暴れるからみんな避けるだろうよ。
480デフォルトの名無しさん:2013/02/24(日) 16:23:40.80
ヤクザがターゲットの店内で暴れるためイチャモンつけるようなもんだよ
481デフォルトの名無しさん:2013/02/24(日) 17:18:05.21
このクラスを書いたら「仮想デストラクタがない」とか言って怒られるのですが
なぜですか?

class Hoge {
public:
virtual void func() = 0;
};
482デフォルトの名無しさん:2013/02/24(日) 17:24:04.40
vs2012だけど別に怒られないが
483デフォルトの名無しさん:2013/02/24(日) 17:24:44.77
仮想関数を持つクラスは仮想デストラクタを定義するべきだから

デストラクタが仮想関数じゃないと

class Derived : Hoge { }

Hoge* p = new Derived();
delete p;

の delete p; で ~Derived() でなく ~Hoge() が呼ばれてしまう
484デフォルトの名無しさん:2013/02/24(日) 17:25:31.20
>>481
ウザい
485デフォルトの名無しさん:2013/02/24(日) 18:35:50.35
>>483
いい加減にしとけよ。
486デフォルトの名無しさん:2013/02/24(日) 18:45:12.36
>>481
怒られるんなら書けば?

class Hoge {
public:
virtual ~Hoge() {}
virtual void func() = 0;
};
487デフォルトの名無しさん:2013/02/24(日) 18:56:58.87
foo, bar, baz
488デフォルトの名無しさん:2013/02/24(日) 19:38:43.32
>>486
そうやってアンチhoge厨を呼び込むのはやめてもらえませんか?
489デフォルトの名無しさん:2013/02/25(月) 00:15:49.14
>>488 スルーしろ
490デフォルトの名無しさん:2013/02/25(月) 02:42:58.79
class Hoge {
public:
virtual ~Hoge() = 0;
virtual void func() = 0;
};
491デフォルトの名無しさん:2013/02/25(月) 02:48:27.90
>>490
お前マジで頭おかしいんじゃね
492デフォルトの名無しさん:2013/02/25(月) 07:19:45.83
>>490
死ぬでっ!
493デフォルトの名無しさん:2013/02/25(月) 12:45:21.26
ざわ…ざわ…
494デフォルトの名無しさん:2013/02/25(月) 22:46:49.68
ざわわ、ざわわ、ざわわ
広いサトウキビ畑が
495デフォルトの名無しさん:2013/02/25(月) 23:05:31.92
>>494
鉄の暴風が来るけど大丈夫か?
496デフォルトの名無しさん:2013/02/25(月) 23:22:54.07
一番いい柵を頼む
497デフォルトの名無しさん:2013/02/25(月) 23:24:59.14
大丈夫じゃない、問題だ
498デフォルトの名無しさん:2013/02/25(月) 23:31:31.66
Hoge大颶風接近中
499デフォルトの名無しさん:2013/02/26(火) 00:25:07.56
仮想デストラクタてVテーブルの要領の無駄じゃね?
みんなどうせスマポに包むんだろ?
500デフォルトの名無しさん:2013/02/26(火) 00:49:59.41
削除子の容量無駄じゃね?
501デフォルトの名無しさん:2013/02/26(火) 00:52:59.85
削除子+Vテーブルの要領って無だじゃん
デリータだけでいいやん
502デフォルトの名無しさん:2013/02/26(火) 06:31:42.03
1クラスに付きポインタ一つ分の容量が無駄とかどんだけパラノイアだ
503デフォルトの名無しさん:2013/02/26(火) 13:01:51.93
>>502
ちりつも

そういう気の緩みがアホみたいにメモリを食うアプリを作る
504デフォルトの名無しさん:2013/02/26(火) 13:27:30.97
>>503
そういうのは、アホみたいにインスタンスを作りまくる奴が気にすればいいことであって、
普通の奴だと、塵は積もらんよ。
505デフォルトの名無しさん:2013/02/26(火) 14:46:17.21
>>504
お前は何を言ってるんだ?
メモリの乱れは心の乱れ。
明鏡止水のような波紋一つない平穏な心でないとそこに自分の魂を映すことはできない。
つまりメモリが乱れていると自分の魂を捉えられないということだ。
捉えられなければ魂の色も向いている方向も分からない。
そんなことでまともなソフトウェア開発ができるものか。
506デフォルトの名無しさん:2013/02/26(火) 17:25:55.16
>>505
病院行った方が良くない?
507デフォルトの名無しさん:2013/02/26(火) 17:28:49.93
コードの乱れをどうにかしてください!
508デフォルトの名無しさん:2013/02/26(火) 17:46:00.26
4byte * 10K個 = 40KB
全然たいしたことないは
509デフォルトの名無しさん:2013/02/26(火) 18:25:20.60
実データ集合にポインタ変数の混在が許されるのはライブラリまでだよね―
510デフォルトの名無しさん:2013/02/26(火) 19:05:22.71
CoW ってどういういみ?
511デフォルトの名無しさん:2013/02/26(火) 19:15:24.10
512デフォルトの名無しさん:2013/02/26(火) 21:34:51.21
Copy on Wright
513デフォルトの名無しさん:2013/02/26(火) 21:54:18.56
writeェ・・・
514デフォルトの名無しさん:2013/02/27(水) 00:24:11.00
メモリ容量より実行速度のが問題だから
スマポのデリーター+仮想デストラクタでオーバーヘッド爆上げで
これが場合にっては大量死につながる
515デフォルトの名無しさん:2013/02/27(水) 02:05:45.33
仮想デストラクタはクラスごとに1個だが削除子はインスタンスごとに1個だ
516デフォルトの名無しさん:2013/02/28(木) 17:05:26.48
内部クラスの1つから別の内部クラスにアクセスする方法について
codepad.org/cOb1xlVc
InnerBでは一応出来ているのですが無理矢理な感があるので
InnerCのような感じで簡単に出来たら嬉しいのですが、出来ないでしょうか?
出来なければInnerBの方法でもう少しましな書き方を教えて欲しいです。
testB2の最初に毎回xを作ってるのが気持ち悪いのでparent.a.testA()
のような感じで書けるとすっきりして嬉しいです。よろしくお願いします。
517デフォルトの名無しさん:2013/02/28(木) 17:19:12.75
演算子オーバーロードの勉強をしています
ttp://codepad.org/ZL7OJMrQ
このコードでNumberクラスの演算子オーバーロードが呼ばれないのですが、
どこが問題でしょうか

期待している出力は
eq: true
です
よろしくお願い致します
518デフォルトの名無しさん:2013/02/28(木) 17:36:22.23
519デフォルトの名無しさん:2013/02/28(木) 17:38:41.89
>>517
ポインタで受けたらだめだろ
リファレンスで受けないとアドレスの比較になってしまう

virtual bool operator==<Type>(const Number<Type>& number) { // 実体でないため呼ばれない
return getNumber() == number.getNumber();
}

...

bool eq = (*num1 == *num2);
520デフォルトの名無しさん:2013/02/28(木) 17:49:18.87
どうしてもポインタで受けたければoperator==()をfriend関数にすることだな
521デフォルトの名無しさん:2013/02/28(木) 18:07:45.48
いちいちCodePad使って質問回答するなよ
522デフォルトの名無しさん:2013/02/28(木) 18:08:09.42
>>519
>>520
ありがとうございます
参照での受け渡しはうまく行ったのですが、
friend関数で定義すると、2つの引数が両方ポインタだとエラーが出ます

調べると
An operator function shall either be a non-static member function or be a non-member function and have at least one parameter whose type is a class, a reference to a class, an enumeration, or a reference to an enumeration.
とあるので、両方がポインタの==演算子オーバーロードは不可能ということなのでしょうか
523デフォルトの名無しさん:2013/02/28(木) 18:13:58.88
>>516
>//staticにするとエラー
とか
>//myclass parentは不完全な型?で宣言できない
とか、いろいろ基礎がわかってないのにInner Classとか使おうとするなよ
524デフォルトの名無しさん:2013/02/28(木) 18:16:47.57
>>522
演算子オーバーロードとか使おうとせずに、素直にequalsTo()とかその手のメソッド定義しろハゲ
525516:2013/02/28(木) 19:54:59.70
>>518
ありがとうございました!

>>523
すいません、どうしても内部クラスでないとダメだったので。
もう1度基礎から勉強します。
526デフォルトの名無しさん:2013/02/28(木) 20:10:51.39
>>522
virtual bool operator==<Type>(const Number<Type>* number) {
return getNumber() == number->getNumber();
}

bool eq = (*num1 == num2);
std::cout << "eq: " << std::boolalpha << eq << std::endl;

引数しかポインタに出来ないな

friendを宣言or定義しようとするとコンパイルエラー
527デフォルトの名無しさん:2013/02/28(木) 22:07:32.85
クラスのポインタをstd::sortとかstd::binary_searchとかにに突っ込みたい時って
無理にオペレーターオーバーロードするんじゃなくて
比較関数を作ってやるべきなんですかね?

オペレーターオーバーロードでやろうとしてて、
今日どうしてもテンプレートのエラーが解決できなかった(´・ω・`)

クラスのポインタのvectorを上記を使って、
中身に沿ってポインタをソートしたかったんですが。
528デフォルトの名無しさん:2013/02/28(木) 22:08:40.23
第三引数にラムダなり関数オブジェクトなり突っ込めばいい
529デフォルトの名無しさん:2013/03/01(金) 14:15:42.19
VC++で、テンプレート使ってるとコンパイル時のエラーメッセージがやたらと長くなるのはどうにかならないですかね?
530デフォルトの名無しさん:2013/03/01(金) 14:22:19.11
あと5年ほどしたら入るであろうコンセプトさんに期待してください
531デフォルトの名無しさん:2013/03/01(金) 14:52:16.05
>>529
http://www.bdsoft.com/tools/stlfilt.html

更新止まってるので何とかしてくれ
532デフォルトの名無しさん:2013/03/01(金) 20:09:22.13
そこの赤い字読んで
なんか悲しい気分になったわ
533デフォルトの名無しさん:2013/03/01(金) 20:47:39.26
赤い文字って「C++にコンセプトが入るからアップデート中止するよー」ってやつ?
そして間に合わなくて入らなかったのに中止したまま・・・
534デフォルトの名無しさん:2013/03/01(金) 22:09:48.99
「C++標準化委員会が、あの採用を見送られてしまったコンセプトをいずれの日にか、いやできれば早くに採用し、それよってこのSTLFiltのようなエラー抽出翻訳ツールがもはや必要でなくなることを、作者は請い願うばかりである。」
535デフォルトの名無しさん:2013/03/01(金) 22:32:21.91
>>534
>>533と大分違う内容に激ワラ
>>533ってどう解釈して
>C++にコンセプトが入るからアップデート中止するよー
って約したのか
536デフォルトの名無しさん:2013/03/01(金) 22:45:58.56
ヘッダファイルだけプログラムってあるんですか
マクロとか書くときに使うのか?
537デフォルトの名無しさん:2013/03/01(金) 23:04:31.18
日本語でおk
538デフォルトの名無しさん:2013/03/01(金) 23:24:46.75
>>537
*.hだけあればC言語って文法的に問題ないの?
539デフォルトの名無しさん:2013/03/01(金) 23:29:09.25
>>538
コンパイル通るようにしてあったら問題ないだろ
540デフォルトの名無しさん:2013/03/01(金) 23:32:11.32
main関数もヘッダーにあるんすか?
541デフォルトの名無しさん:2013/03/01(金) 23:38:05.66
ヘッダに書けばヘッダにあるだろ
542デフォルトの名無しさん:2013/03/02(土) 01:06:45.31
ヘッダとかインクルードされるファイル(ヘッダとしての役割)であることを分かりやすく示すためのもんじゃねーの
543デフォルトの名無しさん:2013/03/02(土) 01:32:05.90
コンパイル速度を上げるためじゃね
544デフォルトの名無しさん:2013/03/02(土) 02:52:01.56
翻訳単位が複数にまたがるときに、共用/共通部分を抜き出してヘッダとするんじゃないの?
545デフォルトの名無しさん:2013/03/02(土) 21:06:50.17
11年前に始めたベテランですが報告させてください。

256桁までの整数を保持して加算/減算できるクラスを作ってやったぜぇ〜
ワイルドだろぉ〜
546デフォルトの名無しさん:2013/03/02(土) 21:08:54.26
たったそんだけ?
547デフォルトの名無しさん:2013/03/02(土) 21:09:53.79
>>543
そりゃプリプロセッサでインクルード二重読みしないようにすれば速度は上がるだろうけど限定的なのでは?
548デフォルトの名無しさん:2013/03/02(土) 21:45:03.82
>>547
二重読みしないようにすればも何も二重読みしたらダメじゃね

>>545
Boost.Multiprecision
549デフォルトの名無しさん:2013/03/02(土) 23:12:59.66
>>547
何言ってんの
550デフォルトの名無しさん:2013/03/03(日) 01:28:46.20
C言語から、C++に移行しようと考えている者です。

C++の本で、メモリ上の動作も意識させてくれるような、教科書はありますでしょうか?

C言語の本を見ていると、メモリ上ではこのように確保されます、とか書いてあって
はじめは苦労しましたが、そのおかげで、ポインタとか、メモリの確保とか、よくわかるようになりました。

C++の教科書を見ると、こういう風に書いておくと、こういう風に動きますといった説明が多いように思います。
C++の教科書でも、メモリ上の挙動を説明している本はありますでしょうか?
(たとえば、new 演算子にクラス型をつかうと、このようにメモリが確保されて、
各メモリ領域にコンストラクタで返された値が云々。ポインタを進めると、ほら、こういう値が返ってきますね、、みたいな感じです。)

よろしくお願いします。
551デフォルトの名無しさん:2013/03/03(日) 01:36:49.49
C++はメモリイメージより概念的な理解のほうが重要だよ。
あとクラスオブジェクトのメモリ上での展開は実装依存だし、
そんなものを気にしてもしょうがない。
552デフォルトの名無しさん:2013/03/03(日) 01:51:32.92
いきなりvtableとかまで言及するような本だとたぶん挫折するだろうな
553デフォルトの名無しさん:2013/03/03(日) 01:52:55.51
>>550
http://www.amazon.co.jp/dp/4874085202/ C++をCで解説するもの古い
http://www.amazon.co.jp/dp/4774138959/ OOなマイ言語をつくるもの
>>551
ここやhttp://toro.2ch.net/test/read.cgi/tech/1361435828/
では実装上の話もでてくる
C++を理解するのに実装の一つを知っておくのも悪くない
554デフォルトの名無しさん:2013/03/03(日) 01:53:58.27
基本C言語と一緒じゃね
ただせっかくC++使うんなら低級な操作は可能な限り避けたほうがいいと思う
ポインタを進めるとかまずしないし
555デフォルトの名無しさん:2013/03/03(日) 02:11:19.49
>>550
新言語やLL言語は、抽象化がポイントとなる。
マシン依存する言語は良くないという思想。
アセンブラよりもC、CよりC++、C++よりC#、Javaはマシン依存は減る。
556デフォルトの名無しさん:2013/03/03(日) 10:11:44.09
>>550
知りたいならアセンブリ吐かせてみればいいのに。
557550:2013/03/03(日) 11:36:15.95
みなさん、どうもありがとうございます。
まずは、メモリ操作ということは考えずに、クラスを記述してみるのがよさそうですね。

せっかく苦労して覚えたC言語の知識が、あまり使われないのは残念なのと、
Cでメモリ回りの操作ができて、面白かったので
しばらくそういうことをしなくなるのは残念ですが、
C++ やってみようと思います。

本の紹介もありがとうございました。

どのオブジェクト指向言語もそうなのかもしれんませんが、
(クラスの数だけ)型がどんどん増えて、メモリ云々言ってる場合ではない気がしてきました。。。
558デフォルトの名無しさん:2013/03/03(日) 12:06:16.67
>>557
まぁアレだ。
メモリ操作が面白いとかそういうプログラミングそのものの楽しさを味わうことが目的なのか、
何かアプリケーションを効率よく完成させることが目的なのか、
そこらへんの区別をつけるとその辺りのモヤモヤから解放されるよ。

ただ解放されすぎて悟りを開いて解脱までしてしまうと、
学習コストが何たらってある意味人生の効率化まで始めるようになる。
559デフォルトの名無しさん:2013/03/03(日) 13:39:23.58
メモリレイアウトだの気にすると思考がベターCから抜けられなくなる
560デフォルトの名無しさん:2013/03/03(日) 13:42:20.38
C++でもコアな計算部分でSIMD使うとメモリ意識する必要出てくる
561デフォルトの名無しさん:2013/03/03(日) 14:24:45.44
>>557
C++の言語設計思想の重要な一項目として、Cとの互換性の維持があるので、全然無駄ではないよ。
混乱して学習の壁に当たる可能性は高いけど、その壁を越えた先で、Cの知識が役に立つ時が絶対に来る。
それはC++の深淵に触れ始めることを意味する。

…でも、仕事の役に立つかどうかは本人次第だし、知らなくても何とかなっちゃう事の方が多いんだけどね。
562デフォルトの名無しさん:2013/03/03(日) 14:43:12.84
C言語勉強中・・。
char *ptr = "TEST CODE";
↑ptr変数は文字列のアドレスを格納してるんですよね
では文字列の中身はどこに置かれてるの・・?
563デフォルトの名無しさん:2013/03/03(日) 14:48:00.48
メモリ上のどっか
564デフォルトの名無しさん:2013/03/03(日) 14:48:25.56
静的などこか
565デフォルトの名無しさん:2013/03/03(日) 15:01:18.98
なるほど・・?

char *ptr = "TEST CODE";
printf("%c -> %08x\n",*ptr,ptr);
--------------------------------
T -> 00420f8d

char str[]="TEST CODE";
これだとわかるんですが、strの配列に直接文字列を代入してるから
中身は当然str[]内にある。

char *ptr = "TEST CODE";
これだと、文字列のアドレスただをptrに入れてる?
566デフォルトの名無しさん:2013/03/03(日) 15:01:47.38
>>562
ざっくり言えば実行ファイル自体。
567デフォルトの名無しさん:2013/03/03(日) 15:11:07.03
char str[]="TEST CODE";もchar *ptr = "TEST CODE";もやってることは一緒
メモリのどっかに文字列を置いてその位置を返してるだけ
568デフォルトの名無しさん:2013/03/03(日) 15:12:01.76
>>567
有り難うございます。
理解いたしました。
569デフォルトの名無しさん:2013/03/03(日) 15:35:10.95
>>567
その表現は誤解を招くぞ。
570デフォルトの名無しさん:2013/03/03(日) 15:41:18.68
p[5] = {0,0,0,0,0};
とやったらエラー出るんですが、配列に変数入れるのってどうやるんでしたっけ?
571デフォルトの名無しさん:2013/03/03(日) 15:46:20.68
>>569
違うの?
572デフォルトの名無しさん:2013/03/03(日) 15:46:44.03
>>570
ttp://ideone.com/ewqf3q
型を宣言してないせいじゃないでしょうか
573デフォルトの名無しさん:2013/03/03(日) 15:47:00.74
>>567
それはさすがに一緒じゃないだろ。
574デフォルトの名無しさん:2013/03/03(日) 15:49:31.35
>>570
int p[5] = {0,0,0,0,0};

エラーにならないけど?
575デフォルトの名無しさん:2013/03/03(日) 15:52:11.87
char *str ="ABC";
char str[]="ABC";
ってやっぱり違うのですか
576デフォルトの名無しさん:2013/03/03(日) 15:53:21.95
>>575
下は
str[0] = 'D';とか書き換えられる
577デフォルトの名無しさん:2013/03/03(日) 15:54:51.21
あれおかしいな、VC2008++の設定とかがおかしいのかな
int p[5];
p[5] = {0,0,0,0,0};

構文エラー : '{'
構文エラー : ';' が '{' の前にありません。
構文エラー : ';' が '}' の前にありません。
と出るんですが普通なら合ってるみたいですね…
578デフォルトの名無しさん:2013/03/03(日) 15:55:57.99
>>577
それは無理です
宣言と同時にしかその構文は使えません
579デフォルトの名無しさん:2013/03/03(日) 15:56:51.34
p[5]だとただのintになっちゃう
しかも配列の範囲外だし
580デフォルトの名無しさん:2013/03/03(日) 15:58:17.84
そうなんですか、同時宣言とか…ありがとうございあした
581デフォルトの名無しさん:2013/03/03(日) 15:59:37.66
VC9でライブラリA.libをリンクして作ったライブラリB.libをアプリから使おうとすると
ライブラリAのリンクも求められるんですが、どうすればライブラリBだけで済みますか?
ライブラリAのヘッダはライブラリBの.cppでしか読んでません
582デフォルトの名無しさん:2013/03/03(日) 16:01:38.67
>>577
> int p[5] = {0,0,0,0,0};



> int p[5];
> p[5] = {0,0,0,0,0};

は違うぞ。

あと p[5] の宣言に対して、p[5] に何か代入しちゃダメだろ。
583デフォルトの名無しさん:2013/03/03(日) 16:03:44.39
>>576
ということは、

char str[]="ABC"; は 用意されたchar型の入れ物、strの配列に
文字列の文字を一つ一つ格納。 中身そのものはstrの中にある。

char *str ="ABC"; は、ポインタstrに、文字列のアドレスを
いれただけ。 中身はstrの指すどっかにある

??
584デフォルトの名無しさん:2013/03/03(日) 16:04:42.76
>>581
ライブラリB.lib に ライブラリA.lib の使ってるオブジェクトファイルを含めちゃえばいいと思うが、
ライセンス的にどうよの問題がある可能性ももあるし、そもそもライブラリAのリンクが求められ
てるんだから、素直にリンクさせればいいと思うが。
585デフォルトの名無しさん:2013/03/03(日) 16:11:19.89
メモリのどっかに文字列を置くって言っても置く場所が違うんだけど
586デフォルトの名無しさん:2013/03/03(日) 16:13:45.55
char str[]="ABC"; は char str[]={'A','B','C'};

char *str ="ABC"; は char *str=&"ABC"[0];
587デフォルトの名無しさん:2013/03/03(日) 16:14:03.11
>>584
両方自作なんでライセンス的には問題ないです
ただ気持ち悪かったんで、、、
lib.exeで結合するしか無いんですかね
588デフォルトの名無しさん:2013/03/03(日) 16:17:15.16
char str[]="ABC"; は char str[]={'A','B','C',0};
だぬ。
589デフォルトの名無しさん:2013/03/03(日) 16:18:49.56
=&"ABC"[0];

難しいです。
何ですこれ?
590デフォルトの名無しさん:2013/03/03(日) 16:21:08.56
char *str=&"ABC"[0]; は char *str=&["ABC"]0; です。
591デフォルトの名無しさん:2013/03/03(日) 16:21:24.39
>>585
それは実装次第だよ。

>>587
なら、
> ライブラリB.lib に ライブラリA.lib の使ってるオブジェクトファイルを含めちゃえばいい
をやればいいだけだろ。
592デフォルトの名無しさん:2013/03/03(日) 16:23:45.45
>>585
プログラム領域、静的領域、スタック領域、ヒープ領域

char *str ="ABC"; は、静的猟奇で

char str[]="ABCだと、スタック領域
なので、さっき 
char *str ="ABC"; こうして

*str = 'K';ってやったら、コンパイラにシバかれました。
593デフォルトの名無しさん:2013/03/03(日) 16:24:38.68
str[]でもconst付ければ同じ? 少なくとも実用レベルでは。
594デフォルトの名無しさん:2013/03/03(日) 16:37:19.75
>>593
環境と実装による。
595デフォルトの名無しさん:2013/03/03(日) 16:39:58.12
>>590
>char *str=&"ABC"[0]; は char *str=&["ABC"]0; です。

の書式の説明、ネットでさがしてるんですが見つかりません。
(持ってるC言語の本にもかいてなかた。独習Cとか)

説明してるサイトとか知りませんか?
596デフォルトの名無しさん:2013/03/03(日) 16:43:57.85
>>592
静的猟奇

…何か変態っぽいな…
597デフォルトの名無しさん:2013/03/03(日) 16:45:37.92
>>595
K&Rに、それと似たようなことは書いてあった気がする。
598デフォルトの名無しさん:2013/03/03(日) 16:45:43.63
>>591
すみません、それってlib.exeを使わずにやるにはどうすればいいんでしょう
599デフォルトの名無しさん:2013/03/03(日) 16:48:34.55
>>598
ソースコードを持ってるんだよね?
600デフォルトの名無しさん:2013/03/03(日) 16:50:34.96
>>599
はい、待ってます
601デフォルトの名無しさん:2013/03/03(日) 16:58:31.87
そもそも lib.exe なしで、どうやって A.lib とか B.lib を作ったんだよ…
602デフォルトの名無しさん:2013/03/03(日) 17:00:35.09
>>601
ですよね
603デフォルトの名無しさん:2013/03/03(日) 17:09:32.49
>>587
気持ち悪くねーよw
普通だよw
604デフォルトの名無しさん:2013/03/03(日) 18:01:59.64
>>567
全然ちげーよ! アホは回答するな!
605デフォルトの名無しさん:2013/03/03(日) 18:20:37.29
>>600
そしたら、足りないオブジェクトのソースコードも含めてB.lib作り直せば?って話だよね?
機能的に必要なものなんだから、何処かには入れておかなきゃダメだよね?
606デフォルトの名無しさん:2013/03/03(日) 18:49:32.17
>>567
それらは、同じことを違う表記法で表しただけだしな
607デフォルトの名無しさん:2013/03/03(日) 18:54:50.13
>>606
それは完全に違うぞ。
608デフォルトの名無しさん:2013/03/03(日) 18:55:56.66
>>606
全く違うっつってんだろw
アホは回答するなと何度言えば
609デフォルトの名無しさん:2013/03/03(日) 18:57:00.83
何が違うのか説明できないと
610デフォルトの名無しさん:2013/03/03(日) 19:04:45.40
>>609
俺が書いたわけではないが、 >>586で全てだぞ。
文字列リテラルに対する扱いの説明はいらないよね?
611デフォルトの名無しさん:2013/03/03(日) 19:16:56.29
char *str=&"ABC"[0];
↑ 誰か説明してくらはい。

文字列 "ABC"の[0]番アドレス(戦闘番地)を*strに入れてる?
(・ω・)?

ネットでC言語の説明してるのを探してるけど、見つからない

K&Rの本を買わないといけないかしら。
(手持ちのC言語の本、4冊あるんで・・・。)
612デフォルトの名無しさん:2013/03/03(日) 19:17:52.31
static char ABC[] = "ABC";
char *str = ABC;

と説明した方がいいだろ
613デフォルトの名無しさん:2013/03/03(日) 19:18:45.31
staticは別にいらなくね?
614デフォルトの名無しさん:2013/03/03(日) 19:21:50.10
>>586
char str[]="ABC"; は char str[]={'A','B','C'};
char *str ="ABC"; は char *str=&"ABC"[0];
これらは絶対に正しい覚えとけ
615デフォルトの名無しさん:2013/03/03(日) 19:22:23.32
>>613
いるだろw
だからアホは回答すんなと

本当はさらにconstつけた方が正解なんだが、説明が面倒になるので省いた

static const char ABC[] = "ABC";
char *str = (char *)ABC;
616デフォルトの名無しさん:2013/03/03(日) 19:24:05.40
>>615
ABCが"ABC"に見えたんだよ
怒るなハゲ
617611:2013/03/03(日) 19:25:51.70
すみません、誤りますんでケンカしないでください
m(_ _)m
618デフォルトの名無しさん:2013/03/03(日) 19:25:53.61
俺、アホだから
今まで
char str[]="ABC"; は char str[]={'A','B','C','\0'};
char *str ="ABC"はダメポでconst char* str ="ABC"
って信じていた
619デフォルトの名無しさん:2013/03/03(日) 19:25:53.76
>>614
null終端してないから絶対に正しくない
620デフォルトの名無しさん:2013/03/03(日) 19:28:22.00
おお・・・ここはなんて役に立つスレなんだ
621デフォルトの名無しさん:2013/03/03(日) 19:29:24.42
まさに
画竜点睛を欠く
622デフォルトの名無しさん:2013/03/03(日) 19:32:05.12
もう収拾がつかないのでここで完全な正解をまとめる

char str[] = "ABC"; は char str[] = { 'A', 'B', 'C', '\0' }; と同じ
strの書き換えは自由

char *str = "ABC"; は
static const char[] ABC = "ABC";
char *str = (char *)ABC;
と同じ

ABCにconstがついていることから分かるように
char *で受けるのは推奨はされるものではないが、
互換性のためにconstなしでも受けられるようになっている
でもABCの書き換えは禁止

char *str = "ABC"; でなく
const char *str = "ABC"; が望ましい
623デフォルトの名無しさん:2013/03/03(日) 19:33:18.91
バカはでてくんな
624デフォルトの名無しさん:2013/03/03(日) 19:33:48.42
>>623
自己紹介乙
625デフォルトの名無しさん:2013/03/03(日) 19:33:53.19
配列を文字列で初期化するときは必ず、constつけるように
char ABC[10] = "ABC"
は駄目ですよ
const char ABC[10] = "ABC"
必ずこうしなさい
626デフォルトの名無しさん:2013/03/03(日) 19:39:35.41
>>625
書き換えない場合はその方が望ましいが
書き換えたい場合はそれじゃ困る
「必ず」は言い過ぎ

あと、constなのになぜ要素数を指定する?
constでなければ後の書き換えを意図している場合に必要だが
constの場合は完全に無駄どころか、後の変更に弱いダメなコードだ
constなのに要素数を指定するのは
文字列の配列を要素固定長で確保したい場合くらいだが、
これも文字列へのポインタの配列にできるならそうした方が良い
627デフォルトの名無しさん:2013/03/03(日) 19:40:46.70
>>625
バカでてくんなつってんだろw
628デフォルトの名無しさん:2013/03/03(日) 19:51:29.04
初心者歓迎ってのは回答者の事じゃなくて質問者の事だからな
勘違いすんなよ
629デフォルトの名無しさん:2013/03/03(日) 19:56:23.89
char *str = "ABC";
const char str[]= "ABC";
ポインタと配列の違いだけ
*strはrvalueの"ABC"オブジェクトが消えてなくならないように、ポインタでlvalue的扱いできるようにした
str[]はrvalueの"ABC"オブジェクトが消えてなくならないように、配列でlvalue的扱いできるようにした
覚えとけよ
"ABC"を代入演算子=で左のlvalueに結びつけたってだけ
でも、C++には=でコンストラクタ呼ぶのあるがな
630デフォルトの名無しさん:2013/03/03(日) 20:01:06.56
>>629
だーかーらー、アホは回答すんなって何度言えばいいんだよ!

上はstrに"ABC"のアドレスを入れているが、
下はstrと"ABC"が別個にあるわけじゃなく、str自体が"ABC"になっている
下では"ABC"オブジェクトなんて存在しない
単なる const char str[] = { 'A', 'B', 'C', '\0' }; のシンタックスシュガーだ
=は代入演算子じゃねえし、もう無茶苦茶だ
631デフォルトの名無しさん:2013/03/03(日) 20:02:02.09
ここは質問・回答ともに初心者歓迎大歓迎スレです
632デフォルトの名無しさん:2013/03/03(日) 20:03:54.79
初心者は何が正解か分かんないから
アホが回答しようが真に受けちゃうだろ
勘弁してくれ
633デフォルトの名無しさん:2013/03/03(日) 20:04:51.33
よくぞまあこれだけ自信満々にデタラメ言うアホがいるもんだと逆に感心するわ!
634デフォルトの名無しさん:2013/03/03(日) 20:07:04.98
て言うか、本気でそう信じてそうで怖い。
635デフォルトの名無しさん:2013/03/03(日) 20:07:43.70
>>630
ここは初心者解答者スレじゃないんだぞ
Cについては知っていても、初心者解答者は答えるなよ
初心者解答者じゃないなら、普通2つの"ABC"とは何か説明するぞ
質問内容から質問者のレベルが解らないような初心者解答者は駄目だな
636デフォルトの名無しさん:2013/03/03(日) 20:09:10.69
>>635
安価間違えてないか?
さもなくば日本語でおk
637デフォルトの名無しさん:2013/03/03(日) 20:10:56.23
>>633
それは言っちゃダメ、絶対。
荒れちゃう。
638デフォルトの名無しさん:2013/03/03(日) 20:12:26.03
もう>>622で全てだってのに、
何で見当違いの糞回答を後から後から出してくるのか
そんなに恥かきたいのか
639デフォルトの名無しさん:2013/03/03(日) 20:12:29.75
この流れには沖林正紀先生もついていけないだろう
640デフォルトの名無しさん:2013/03/03(日) 20:13:39.30
>>639
そろそろ許してやろうぜw
641デフォルトの名無しさん:2013/03/03(日) 20:15:27.59
>>636
合っているが>>635だけじゃなく他の解答者へでもある
"ABC"が色々出ているのに、初心者が"ABC"を理解していると思っているって
さすが初心者解答者と思った
生徒としては優秀なのかもしれんが、先生としては駄目だな
最初の質問者は2つの"ABC"の違いすらわかってないだろな
642デフォルトの名無しさん:2013/03/03(日) 20:16:35.20
へえ
643デフォルトの名無しさん:2013/03/03(日) 20:18:07.18
>>611
*str じゃなくて str ね。

そこ以外の解釈はあってるよん。
文字列リテラルはそのまま配列オブジェクトとして使えるの。
644デフォルトの名無しさん:2013/03/03(日) 20:21:05.69
>>641
質問者に向けたレスじゃないし
645デフォルトの名無しさん:2013/03/03(日) 20:23:28.24
おちつけ
646デフォルトの名無しさん:2013/03/03(日) 20:26:00.51
>>641
恥ずかしい回答したことを誤摩化すために
難癖付けてるだけにしか見えない
647デフォルトの名無しさん:2013/03/03(日) 20:30:09.95
いいから落ち着けバカチン共
648デフォルトの名無しさん:2013/03/03(日) 20:37:31.08
char *str=&"ABC"[0]なんかが出た時点で、祭りモードだよな
祭りは楽しまないとだめだよな
649デフォルトの名無しさん:2013/03/03(日) 20:40:43.66
Javaかよって思うよなww
あいつらリテラルのメンバ呼び出すからな
650デフォルトの名無しさん:2013/03/03(日) 20:41:54.93
だね。
楽しんだもの勝ち。
651デフォルトの名無しさん:2013/03/03(日) 20:47:08.59
実際に動かすのがわかりやすいかな。
test2は書き換えちゃいけない領域を書き換えてるので、
コンパイルオプションによっては異常終了したり、
妙な動きをするけど気にするな。

#include <stdio.h>
void test1(int pos, char c) {
 char str[] = "abcdefg";
 if (pos) str[pos-1] = c;
 puts(str);
}
void test2(int pos, char c) {
 char *str = "abcdefg";
 if (pos) str[pos-1] = c;
 puts(str);
}
int main() {
 test1(0, '.'); test1(3, 'X'); test1(0, '.');
 test2(0, '.'); test2(3, 'D'); test2(0, '.');
}
652デフォルトの名無しさん:2013/03/03(日) 20:48:11.44
>>648
&"ABC"[0]はconst char *になるからコンパイルエラー出るけど
その点以外に問題があるコードではないと思う
が、初心者への説明として分かりやすい説明か?と言われるとどうだろう
653デフォルトの名無しさん:2013/03/03(日) 21:09:19.65
ならないよ
C言語では文字列リテラルの型はstatic char[]
constが付く規定は無い
付くと思ってるやつはC++と混同している
書き換えは未定義ってだけ
654デフォルトの名無しさん:2013/03/03(日) 21:18:07.21
禿げてるくせに経験の少ない奴は char *str と書いた時点でマイルールの皮に閉じこもってしまうから嫌われるんだよ
char *ptr なんだよハゲ。
655デフォルトの名無しさん:2013/03/03(日) 21:25:04.29
燃料投下?
656デフォルトの名無しさん:2013/03/03(日) 21:47:49.36
>>654
名称の付け方だけでもレベル分るからな
657デフォルトの名無しさん:2013/03/03(日) 21:56:41.38
>>653
本当だ
Cはconstつかないんだな
658デフォルトの名無しさん:2013/03/03(日) 21:59:10.63
ここはC/C++スレだから別にC++でいいと思うが
CかC++かの注釈は必要だな
659デフォルトの名無しさん:2013/03/03(日) 22:12:16.78
すごく初歩的な質問ですが
int max=10000;
for(cnt=0;cnt<max;cnt++){
if(cnt==100){
cnt=max;
}
}
これでループ抜けるのってヤバイんでしょうか?
VC++ですがこれをやると強制終了したり、何回もビルドしてると強制終了しなくなったりでかなり不安です。
660デフォルトの名無しさん:2013/03/03(日) 22:18:02.86
それだけだと動作的には問題ない(breakしろよとは思うが)
if(cnt==100){cnt=max;}より後ろにcntを使うコードがあって、
そこがおかしくなってんじゃね
661デフォルトの名無しさん:2013/03/03(日) 22:25:30.24
>>659
問題はあんたが書いてないところにある
662デフォルトの名無しさん:2013/03/03(日) 22:27:55.43
>>660
>>661
それがわかっただけでも一応安心しました感謝です。
663デフォルトの名無しさん:2013/03/03(日) 22:39:21.52
C言語の書籍をみてたら、hoge ホゲー 変数を
たまにみかけるんですが、由来はなんでしょうか
664デフォルトの名無しさん:2013/03/03(日) 22:40:04.92
ジャイアン
665デフォルトの名無しさん:2013/03/03(日) 22:40:52.43
文字列がconstだったとしてもC言語ではconst T*からT*への暗黙変換は違反ではないという悲しみを知った。
666デフォルトの名無しさん:2013/03/03(日) 22:40:57.82
hogehogeの略だが
hogehogeの由来は謎
667デフォルトの名無しさん:2013/03/03(日) 22:41:49.35
>>659
素晴らしいコードだね
見習いましょう
668デフォルトの名無しさん:2013/03/03(日) 22:42:22.99
hogehogeロック
669デフォルトの名無しさん:2013/03/03(日) 22:42:31.01
>>665
gccでエラーになったけど
670デフォルトの名無しさん:2013/03/03(日) 22:43:31.38
>>666 (オーメン)
マジかよ糞箱売ってくる
671デフォルトの名無しさん:2013/03/03(日) 22:45:45.41
>>614
末尾の \0 は無視するのか?
672デフォルトの名無しさん:2013/03/03(日) 22:47:46.77
何で既に指摘済みの事項を?
673デフォルトの名無しさん:2013/03/03(日) 22:54:36.35
674デフォルトの名無しさん:2013/03/03(日) 23:09:11.21
>>622
>static const char[] ABC = "ABC";
コンパイルとおりませんけど?
http://ideone.com/KyWtr8

>const char *str = "ABC"; が望ましい
このconst の置き方は馬鹿がするやりかた。
char const *str = "ABC";
と書け

java/C# から入った馬鹿はこれだから困る、これでも読んで勉強しろ
http://builder.japan.zdnet.com/script/sp_c-programming-language/20370255/
675デフォルトの名無しさん:2013/03/03(日) 23:10:27.14
おう、今世紀最大の糞記事やめろや
676デフォルトの名無しさん:2013/03/03(日) 23:10:41.36
最近C#ばっか書いてるからミスったわ
すまんね

constの位置はただの趣味
677デフォルトの名無しさん:2013/03/03(日) 23:19:21.32
ところでおまえら、char const * と char * const どっち?
俺は char * const だわ。
678デフォルトの名無しさん:2013/03/03(日) 23:21:54.17
そういう釣りは他所でやってください
679デフォルトの名無しさん:2013/03/03(日) 23:25:53.53
>>677
char const * と char * const
は意味が違う。
const char * と char const *
は一緒だがねC#馬鹿は出てくるな
680デフォルトの名無しさん:2013/03/03(日) 23:27:27.44
春休みにはまだ早いな
681デフォルトの名無しさん:2013/03/03(日) 23:31:23.19
const char * と char const *は中身の書き換えが不可で、
char * constはアドレス値の変更が不可ってこと?
682デフォルトの名無しさん:2013/03/03(日) 23:31:58.63
そう
683デフォルトの名無しさん:2013/03/03(日) 23:34:19.12
>>679
ほんと>>677はワロチだよな
char const * と char * const
何がconstなのか解りません><
684デフォルトの名無しさん:2013/03/03(日) 23:37:42.00
どう考えても釣りだろ
685デフォルトの名無しさん:2013/03/03(日) 23:44:52.24
ごほ、ごほ、その昔は、ふぁ、ふぁ、far とか に、near とかいう、し、修飾子を、ごほ、く、駆使したものじゃがのう、ごほごほ、ごほ
686デフォルトの名無しさん:2013/03/03(日) 23:46:24.40
おじいちゃん昨日ご飯食べたでしょ
687デフォルトの名無しさん:2013/03/03(日) 23:53:20.70
near/farはどうかと思うが
言語仕様にsegmentを持ったポインタ型の用意が有ってもいいと思う
688デフォルトの名無しさん:2013/03/04(月) 00:01:33.34
MS-Cv6にはあったようなきがする
689デフォルトの名無しさん:2013/03/04(月) 00:47:59.03
ポインタのポインタ

char ch = 'a';
char *ptr1;
char **ptr2;

ptr1 = &ch;
ptr2 = &ptr1;
printf("ptr1_address -> %08x\n",ptr1);
printf("ptr2_address -> %08x\n",ptr2);

わかりにくいですが、実用・実務ではどういった時に使うのでしょうか?

基本情報の午後の問題でもポインタのポインタが使われてましたね
690デフォルトの名無しさん:2013/03/04(月) 00:49:53.49
実務は知らんが、char *ならどの文字列を使うか動的に選択したい場合はchar **を使うんじゃないの
まあ俺はstring使うから使ったこと無いけど
691デフォルトの名無しさん:2013/03/04(月) 00:53:34.88
char* を引数から返したい場合に char** を使ったり、あとは

void foo(const char *const *table, int size);

static const char *const table[] = {
 "abc", "def", "ghijk", "lmnopq", "rstuvwxyz"
};

foo(table, 5);

みたいな使い方もなくはないかもしれない
692デフォルトの名無しさん:2013/03/04(月) 00:54:32.70
ポインタのポインタはmain関数のargsとかでよく見てるじゃないか
693デフォルトの名無しさん:2013/03/04(月) 00:57:01.55
ソレダ!
694デフォルトの名無しさん:2013/03/04(月) 00:57:56.13
>>690-692
有り難うございます!
695デフォルトの名無しさん:2013/03/04(月) 00:58:48.20
char *str[] = {"I","am","Japanese"};
char **ptr2;
ptr2 = str;
printf("%s \n",*ptr2)
----------------------------------------
>I
こうですね
696デフォルトの名無しさん:2013/03/04(月) 01:02:38.40
ポポンタは2次元配列でが多いんじゃないか
697デフォルトの名無しさん:2013/03/04(月) 01:03:50.83
"static"と"const"はつけた方がいいですか?
char* table[]
だとやっぱり、第三者に書き換えられる恐れあり?
698デフォルトの名無しさん:2013/03/04(月) 01:04:39.61
static付けないと消えそうな気がする
なんとなくね
699デフォルトの名無しさん:2013/03/04(月) 01:06:06.75
ポポンタって業界用語?
(まほうのことばで〜♪たのしいなかまが〜♪)
700デフォルトの名無しさん:2013/03/04(月) 01:06:55.00
>>698
なるほど
701デフォルトの名無しさん:2013/03/04(月) 01:08:28.31
>>697
つけないとなんとなくセキュリティ的に危ない気がする
702デフォルトの名無しさん:2013/03/04(月) 01:35:37.53
>>689
char*や構造体へのポインタ配列をソートする時、実体をコピーしていると
多大なコストが掛かるので、ポインタをソートする
703デフォルトの名無しさん:2013/03/04(月) 11:00:25.02
このCのコードが動作しません。
何が問題なのでしょうか。

int value;
sscanf("8F5AFC8", "%X", value);
704デフォルトの名無しさん:2013/03/04(月) 11:32:10.32
sscanf("8F5AFC8", "%X", &value);
705デフォルトの名無しさん:2013/03/04(月) 12:31:52.71
これは釣りではなく、教育的な質題な気がするぞ
706デフォルトの名無しさん:2013/03/04(月) 12:34:10.34
これは教育やろなぁ
707デフォルトの名無しさん:2013/03/04(月) 20:09:14.12
質題?
708デフォルトの名無しさん:2013/03/04(月) 20:52:12.08
そういえばCで初めてprintf使ってから長らく勘違いしてたんだが
不思議と「関数を使っている」という実感が沸かないんだよな。決まり文句・構文のように感じてしまう

引数とはなんぞ、返り値とはなんぞと理解してから関数として認識すると
自ずとprintfは値で、scanfは参照が必要だということが理解できるんだが
709デフォルトの名無しさん:2013/03/04(月) 20:57:55.57
スクリプト言語に慣れちまったかつての俺のようだ・・・
710デフォルトの名無しさん:2013/03/04(月) 22:22:37.36
>>708
それはあなたが精神を解き放ってコスモと融合させてないだけだ。
迷路のような現世の構造の中をさ迷っていてはいつまでたっても答えは見つからない。
精神を解き放つにはまず全てのリンクを無へと還すことから始まる。
そのリンクは全て人間に内在するものだから、解脱することによってそれを断ち切れる。
人間に内在するということは、人間が死ねばそのリンクも同時に消えることになる。
例えば誰かが死んだら、その人の持ち物のいくつかは生きている人間によって価値を見いだされるが、いくつかは誰にも価値を見いだされない。
この価値を見いだされない状態こそがリンクを無へと還した状態であり、これが本来の物の価値となる。
ただ、その状態を作り出すために死んでいてはその状態を手にできないため、
修行を行うことによって解脱し、生きながらにして万物のリンクを無へと還す。
さて、無へと還しただけではその物があなたにとって意味を持たないためどうすることもできず、
もちろん再定義することもできない。
そこで精神を解放してコスモと融合させ、コスモの意志によってその物に定義を与える。
コスモの意志はあなたが想像しているよりはるかにニュートラルであり、物の本質を問う。
それによって正しい道へと導かれるわけだ。

printfはあなたにとって何だろうか?
文字を表示するもの、何かよく使うもの、一番最初に習ったもの、打ち慣れたもの、デバッグにも使えるもの、色々あるだろう。
まずは解脱してそういったあなたとprintfをつなぐリンクを無へと還すのだ。
そして精神を解放し、コスモと融合することによってprintfの本質を問うのだ。
そうすればコスモの意志によって関数であるという答えが導かれる。

あなたにコスモの導きがあらんことを。
711デフォルトの名無しさん:2013/03/04(月) 22:27:27.57
>>708
わたしは、大学のプログラム講習で余興みたいなので可変引数の
関数を作ったりデバッガでスタックを見たりいじったりして理解を深めて、
printf();もれっきとした関数なんだなと思えるようになりました。
712デフォルトの名無しさん:2013/03/04(月) 22:29:00.37
やっぱセブンセンシズに目覚めないとな
713デフォルトの名無しさん:2013/03/04(月) 22:30:18.77
解脱と精神解放はプログラマの基本
714デフォルトの名無しさん:2013/03/04(月) 22:35:31.72
プログラムと精神世界の間にサーキットを構築するだけじゃないの?
そうすればプログラムと精神世界が同じレイヤで同期をとることになるからprintfが関数だってのも一意に定まるでしょ
715デフォルトの名無しさん:2013/03/04(月) 23:11:17.05
write(stdout, msg, msglen);
これでおk?
716デフォルトの名無しさん:2013/03/05(火) 00:25:04.78
無名名前空間について質問です。
スコープ解決演算子などを用い、無名名前空間の変数を明示的に指定する方法はあるでしょうか。
例えば、以下のようなコードで Namespace を表示させるにはどうしたら良いでしょうか。

#include <iostream>

char *str   = "Global";     //グローバル
namespace{
  char *str = "Namespace"; //無名名前空間
}

int main( )
{
  char *str = "Local";     //ローカル

  //ここで無名名前空間のstrを表示させたい
  std::cout << ●● << std::endl;
  return 0;
}
717デフォルトの名無しさん:2013/03/05(火) 00:30:28.51
ないよ
718デフォルトの名無しさん:2013/03/05(火) 00:36:08.71
ありがとう。
719デフォルトの名無しさん:2013/03/05(火) 00:44:25.53
釣りもたいがいにしてくれ
720デフォルトの名無しさん:2013/03/05(火) 07:09:17.89
普段hogeとかつかってんだろうな
そんなんだからこんなアホな質問するんだよ
721デフォルトの名無しさん:2013/03/05(火) 08:09:37.04
ついにhoge使ってないコードにまで無理矢理絡み始めたぞ
722デフォルトの名無しさん:2013/03/05(火) 15:10:25.07
キューの実装についての質問です。
キューに積まれる内容は、独自のフォーマットで以下のような構造をしています。

long 4byte・・・メッセージの種類を表す整数
long 4byte・・・メッセージの内容そのもののバイト数
char 可変byte・・・メッセージの内容、char型で宣言しているが1byte単位で扱えるようにするためであって文字とは限らない

これが区切り文字なしで連続してメモリ領域に追加されていきます

[メッセージ1の種類][メッセージ1のbyte数][メッセージ1の内容][メッセージ2の種類][メッセージ2のbyte数][メッセージ2の内容][メッセージ3の種類][メッセージ3のbyte数][メッセージ3の内容]・・・

キューへのメッセージ追加と読み出しは非同期であり、読み出しが来ないままどんどん積まれていく場合もあれば
読み出すべきメッセージがないにも関わらず読み出しに行く場合もあります。
読み出す位置、追加する位置はそれぞれアドレスで、管理してあり、
読み出し/追加が行われた際に、それぞれ次に読み出し/追加を行う位置までアドレスを進めます。
723デフォルトの名無しさん:2013/03/05(火) 15:22:48.78
そうか
724デフォルトの名無しさん:2013/03/05(火) 15:31:22.36
>>722
で、質問は?
725デフォルトの名無しさん:2013/03/05(火) 16:44:45.93
スタックにデータを入れることを「積む」とは言うが、キューにデータを投入することは「積む」とは言わない。
726デフォルトの名無しさん:2013/03/05(火) 16:48:04.52
キューとオバQは全然違う。
727デフォルトの名無しさん:2013/03/05(火) 16:57:46.76
"Q"は"que"と綴って発音は"キュー"。
「キュー」は"queue"と綴って発音は"キュー"。
従って、"ue"は無音であると考えられる。
実際、"q"も"キュー"と発音する。
以上から、"queueueueueueueue"のように綴っても
発音は"キュー"であると推測される。
728デフォルトの名無しさん:2013/03/05(火) 17:47:47.46
おまえら deque のことデキュー(核爆)とか言ってそうだな
729デフォルトの名無しさん:2013/03/05(火) 17:55:03.52
俺は大学でフランス語やってたせいかqueがクとしか読めなくなった
だからdequeもでくーって呼んでる
730デフォルトの名無しさん:2013/03/05(火) 19:38:05.55
dequeの棒だからあってる
731デフォルトの名無しさん:2013/03/05(火) 19:48:31.17
フランス語だったらdeは「デュ」か「ドゥ」じゃないか?
732デフォルトの名無しさん:2013/03/05(火) 19:48:59.28
hogeはなんて読むんですか
733デフォルトの名無しさん:2013/03/05(火) 19:52:59.46
734デフォルトの名無しさん:2013/03/05(火) 19:56:56.01
double-ended queueの略だからデキューでもいい気がするが、
本家dequeueがキューから要素を取り出す操作なので
かぶらないようにdequeにしたらしい。
charはキャラかチャーかとか、最後のeのないcreatは
どう発音するかとか昔からこの手の論争ははてしなくある。
735デフォルトの名無しさん:2013/03/05(火) 20:03:11.84
doubleをwにして、wequeueにしとけば良かったのになw
736デフォルトの名無しさん:2013/03/05(火) 20:13:30.55
最後のueは冗長不安定
737デフォルトの名無しさん:2013/03/05(火) 20:23:20.83
>>735
何でwe?
738デフォルトの名無しさん:2013/03/05(火) 20:24:26.23
質問は発音についてだったのか?
739デフォルトの名無しさん:2013/03/05(火) 20:29:38.72
正しく発音できない奴は言語なんて使えないから
先ずは発音からですよ
740デフォルトの名無しさん:2013/03/05(火) 21:20:16.72
printf("%d\n",sizeof((char*)malloc(100)));

100 Byte 用意したつもりが、結果は4Byte・・
なぜでしょうか・・
741デフォルトの名無しさん:2013/03/05(火) 21:26:22.97
>>740
mallocは確保したアドレスを返す
喪前の使ってるコンピュータのアドレス幅が4倍と(43bit)
sizeof(void *)と一緒
742デフォルトの名無しさん:2013/03/05(火) 21:27:06.99
>>740
sizeofはコンパイル時定数だから
それはsizeof(char*)が返ってる
実行時に動的に確保したやつはsizeofじゃ分からないよ
743片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/05(火) 21:28:21.52
配列にsizeofを使うと配列のサイズが返るが、ポインタに使うとポインタそのもののサイズを返す。
_msizeで検索
744740:2013/03/05(火) 21:33:57.04
ご回答して下さった皆様、有り難うございます。

と、なりますとmallocで確保した容量を確認したい時は
ムリなんでしょうか?
745デフォルトの名無しさん:2013/03/05(火) 21:34:02.07
>>742
sizeofはコンパイル時定数とはかぎらない。
嘘おしえないように。
746デフォルトの名無しさん:2013/03/05(火) 21:35:30.00
>>744_msizeで検索
747740:2013/03/05(火) 21:43:06.92
>>743
>>746

有り難うございます

printf("%d\n",_msize((char*)malloc(100)));

でちゃんと、100(Byte)が表示されました。
748デフォルトの名無しさん:2013/03/05(火) 21:49:33.13
>>745
マジで?
どういった場合コンパイル定数じゃなくなるの?
749デフォルトの名無しさん:2013/03/05(火) 22:05:03.95
int a;
char b[sizeof(a)];
750デフォルトの名無しさん:2013/03/05(火) 22:07:41.76
http://mna.net/blog/sfs4_diary.cgi?action=article&year=2009&month=08&day=03&mynum=2575
を少し改変したところ、コールバックで呼び出された関数内でのメンバ変数の値がおかしくなってしまいました。

http://codepad.org/TgCWvcDx

原因と対処方法をお願いします。
751デフォルトの名無しさん:2013/03/05(火) 22:07:46.89
752デフォルトの名無しさん:2013/03/05(火) 22:10:01.52
>>751
可変長配列ね
サンクス
753デフォルトの名無しさん:2013/03/05(火) 22:14:28.26
片山うざい
754デフォルトの名無しさん:2013/03/05(火) 22:16:06.14
>>750
CTestはCCallBack型じゃないんだからそんなキャストして使っちゃダメ
std::functionなり使ってください
755デフォルトの名無しさん:2013/03/05(火) 23:09:19.82
printf ("関数funcのアドレスは %p \n", func);
printf ("関数funcのアドレスは %x \n", &func);
どっちも同じですよね?
756片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/05(火) 23:12:25.36
>>755
64ビット環境のことを考えたら%pの方がいい
757デフォルトの名無しさん:2013/03/05(火) 23:13:27.92
>>755
どちらも未定義
758デフォルトの名無しさん:2013/03/05(火) 23:15:43.40
>>756
結果は
関数funcのアドレスは0040100A
関数funcのアドレスは40100a

になりました。 %pの方がいいんですね
759デフォルトの名無しさん:2013/03/05(火) 23:47:35.24
>>758
基本的に片山は嘘をつくから相手にしないほうがいい
それに片山の相手をしていると他の回答者に無視されるよ
760デフォルトの名無しさん:2013/03/06(水) 00:07:59.08
>>758
とりあえず片山をNGに入れるべき。
761758:2013/03/06(水) 00:10:41.18
>>759
>>760

そうなんですか? 了解しました。
762デフォルトの名無しさん:2013/03/06(水) 00:23:10.55
ここで聞くことじゃないんだろうけど、
Toppers とかカーネル使ったC言語のプログラムの
質問できるスレはどこにあるんでしょうか・・。

それか此方でも質問はOK?
763デフォルトの名無しさん:2013/03/06(水) 00:32:09.00
此方でも
764デフォルトの名無しさん:2013/03/06(水) 00:33:16.34
>>763
ありがとうございます。 助かります
765デフォルトの名無しさん:2013/03/06(水) 12:42:49.35
記念カキコ
766デフォルトの名無しさん:2013/03/06(水) 14:48:38.73
関数ポインタってのを初めて
知りました
でも用途がわからん。
767デフォルトの名無しさん:2013/03/06(水) 14:54:30.21
qsort()をしらべてみよう。かならずつかいますよ!
768デフォルトの名無しさん:2013/03/06(水) 14:57:04.72
関数オブジェクトに適した接頭辞とかないかね
769デフォルトの名無しさん:2013/03/06(水) 14:59:42.69
>>767
クイックソートで使うんですか
アルゴリズムの勉強しようっと
770デフォルトの名無しさん:2013/03/06(水) 14:59:51.63
ifやswitchより高速に分岐できるように、関数へのポインタの配列を利用します
771デフォルトの名無しさん:2013/03/06(水) 15:28:52.47
>>769
クイックソート(アルゴリズム)に使うのではなく、qsort(Cの標準関数)に使うの。
772デフォルトの名無しさん:2013/03/06(水) 15:47:19.78
>>771

了解しました。
773デフォルトの名無しさん:2013/03/06(水) 16:17:34.99
実際に使わないとピンと来ないよね、こういうのって。
自分がそうだったってだけかもしれんけど。
774デフォルトの名無しさん:2013/03/06(水) 16:50:11.68
std::sortがあるんだからqsortなんて使わんだろ
関数ポインタは配列にして動的に使う関数を決めるときによく使うが
775デフォルトの名無しさん:2013/03/06(水) 17:06:22.89
C++ onlyスレではない
776デフォルトの名無しさん:2013/03/06(水) 17:36:53.93
>>774
確かにC++ではstd::sortを使った場合qsort()より優れたコードが生成される可能性
があり(保証はない)、優先的に使うべきだが、Cの場合仕方がない
777デフォルトの名無しさん:2013/03/06(水) 18:15:24.35
qsortよりよく使う(※)例としてはシグナルハンドラというのもある
(※)個人差があります
778デフォルトの名無しさん:2013/03/06(水) 18:41:18.32
C++11非対応の環境で、ラムダ式で表現できる程度の処理なら、
関数オブジェクトより関数ポインタのほうがすっきり記述できるかもしれない
779デフォルトの名無しさん:2013/03/06(水) 18:43:57.56
関数オブジェクトの方がインライン展開できる分早いとか聞いたような
780778:2013/03/06(水) 18:45:17.84
>>779
クリティカルな部分だと変わるのかもしれないけど、自分は実感したことないなあ
781デフォルトの名無しさん:2013/03/06(水) 19:09:52.91
プラプラでコールバックとイテレーションはマブダチだからな
最適化できる出来ないは地味に効いてくるよ
782デフォルトの名無しさん:2013/03/06(水) 22:46:25.61
一応、ローカルクラスとしてその場で書けるというメリットもあるな。
非常にカッコ悪いけど。
783デフォルトの名無しさん:2013/03/06(水) 23:02:28.62
>>779
qsortはプリミティブ型の場合、
比較処理のインライン展開より
要素の交換が汎用処理(memcpy)を使って行われるのが
一番の遅くなる要因だと思う

std::sortなら代入演算子がそのまま使われるので、
プリミティブ型なら高速にコピーできる

ただ、プリミティブ型以外の場合、
代入演算子が複雑だと逆に遅くなる場合もあると思う
C++11ならムーブのおかげで大分ましだろうけど
784デフォルトの名無しさん:2013/03/06(水) 23:32:37.62
そんなクラスをqsortかけてstd::sortより高速とか言い出すバカはいないだろうから気にしなくていい
785デフォルトの名無しさん:2013/03/06(水) 23:38:19.84
コピーにコストのかかる自前のクラスを要素に持つ配列をソートする時は、vector<MyClass*> arrみたいにポインタの配列にすると思うのですが、
これをsortした後にuniqueしたい場合、要素をdeleteするタイミングが分かりません
以下のコードだとメモリリークが発生しますが、それを防ぐためにdeleteするコードはどのように書けばよいでしょうか?

sort(arr.begin(), arr.end(), MyClassSmaller());
vector<MyClass*>::iterator it = unique(arr.begin(), arr.end(), MyClassEquals());
arr.erase(it, arr.end());
786デフォルトの名無しさん:2013/03/06(水) 23:39:18.21
std::vector<std::unique_ptr<MyClass>> arr;
787デフォルトの名無しさん:2013/03/06(水) 23:40:28.95
なるほど、このような時はスマートポインタというのが便利なのですか
788デフォルトの名無しさん:2013/03/07(木) 01:22:35.54
便乗質問ごめんなさい

std::sort(std::begin(arr), std::end(arr), [](std::unique_ptr<MyClass>& p1, std::unique_ptr<MyClass>& p2) { return *p1 < *p2; });

ここがコンパイルが通りません

auto it = std::unique(std::begin(arr), std::end(arr), [](std::unique_ptr<MyClass>& p1, std::unique_ptr<MyClass>& p2) { return *p1 == *p2; });

これは行けるのですが

ちなみにクラスは

class MyClass {
int* ip;
int siz;
public:
MyClass(int i) : ip(new int[i]), siz(i) {}
~MyClass() { delete[] ip; siz = 0; }
bool operator<(const MyClass& m) {
return siz < m.siz;
}
bool operator==(const MyClass& m) {
return siz == m.siz;
}
void print() const {
std::cout << siz << std::endl;
}
};

です
789デフォルトの名無しさん:2013/03/07(木) 01:27:20.43
>>788
エラーメッセージ読め。
読んで分からないから相談ってことならエラーメッセージ貼れ。

比較関数の引数に const が抜けてるような気がするよ。
790デフォルトの名無しさん:2013/03/07(木) 01:46:19.53
>>789
ありがとうございます
エラーメッセージが滝のように出てくるので

std::sort(std::begin(arr), std::end(arr), [](const std::unique_ptr<MyClass>& p1, const std::unique_ptr<MyClass>& p2) { return *p1 < *p2; });

これで行けました
791デフォルトの名無しさん:2013/03/07(木) 01:55:08.41
「滝のように出てくるので、どんなエラーが起きたかは想像して答えてください^^」
792デフォルトの名無しさん:2013/03/07(木) 01:58:37.74
いえ、貼ってもいいですよ
もう解決しましたけど
gccのエラーメッセージは読んでも理解出来ない・・・
793デフォルトの名無しさん:2013/03/07(木) 02:02:17.58
質問者様がエラーメッセージを恵んでくださるそうだ
794デフォルトの名無しさん:2013/03/07(木) 02:04:35.11
そんな態度じゃ先が心配だ
795デフォルトの名無しさん:2013/03/07(木) 02:07:32.63
>>793
あのさあ・・・お前頭おかしくない?精神科逝けよ
796デフォルトの名無しさん:2013/03/07(木) 02:09:12.61
あのさぁ・・・(呆れ)
797デフォルトの名無しさん:2013/03/07(木) 02:10:07.47
初心者スレに質問しに来てる彼が理解できないんだ
我々回答者に理解できるはずもなかろう?
798デフォルトの名無しさん:2013/03/07(木) 02:31:47.64
hoge厨が湧いたわけでもないんだから落ち着けお前ら
あと夜中は神経が過敏になってるから投稿前に一回深呼吸でもして落ち着いてみろ
799デフォルトの名無しさん:2013/03/07(木) 03:12:15.99
>>790
エラーメッセージが長すぎると思うのなら、 codepad や ideone で
エラーの出るコードをコンパイルさせて URL を貼っておけばよい。

>>792
エラーメッセージが理解できないということのほうが根本的な問題であって
そこさえ解決できれば今後多くの問題を自分で解決できるようになるのだから、
読んでも理解できないというメッセージを示して相談したほうがいいだろう。
800デフォルトの名無しさん:2013/03/07(木) 03:26:40.95
この読み出し開始位置のアドレスが追加開始位置のアドレスを越えることは基本的にありません。

キューのメモリブロックのイメージ
△・・・読み出し開始位置
▲・・・追加開始位置
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
            △              ▲

但し、キューが確保したメモリ領域の末端に達した場合、先頭から再利用します。
その際には追加開始位置のアドレスが読み出し開始位置のアドレスよりも大きくなります。
このとき、このキューのサイズは何バイトに設定しておくべきか?
また、読み出し速度が追加速度よりも極端に速い場合に、再利用によってまだ読み出していない
メッセージを上書きしようとする可能性があるが、その際にメッセージは破棄してもよいか?
といった疑問が生じました。
しかし、それはアプリケーションの仕様から決定されるものであり、ここで質問して回答の得られる性質ものではないため
このことに関してはここでは質問しません。

その他に以下の条件があります。

 I. 読み込み開始位置のアドレスと追加開始位置のアドレスの差(▲-△)が8未満の場合は読み込みを行わない
 II. ▲-△が、「メッセージ内容のバイト数+8byte」未満の場合も読み込みを行わない
801デフォルトの名無しさん:2013/03/07(木) 04:48:52.76
>>800
イラッ
802デフォルトの名無しさん:2013/03/07(木) 05:22:09.81
>読み出し速度が追加速度よりも極端に速い場合に、再利用によってまだ読み出していないメッセージを上書きしようとする可能性がある
なんでだよ。
つーか、質問じゃないし何がしたいんだ。
803デフォルトの名無しさん:2013/03/07(木) 07:21:53.42
>>800
残りサイズが0なら読み出すなよ
804デフォルトの名無しさん:2013/03/07(木) 10:32:12.69
MacOSXのゲームを作りたいのですが
Windows+CPP+DirectXみたいな鉄板の組み合わせはMacではどういったものになりますか?
805デフォルトの名無しさん:2013/03/07(木) 11:16:54.11
MacOSX+Objective-C+OpenGL
806デフォルトの名無しさん:2013/03/07(木) 11:17:44.23
マカーって音はどうしてんの?
807デフォルトの名無しさん:2013/03/07(木) 11:36:38.15
ギターと洗濯機とガスコンロを使う
808デフォルトの名無しさん:2013/03/07(木) 12:58:21.62
>>804
QtOpenGLならWindows/Linux/MacOSどれでも同じソースでいけるぞ。
809デフォルトの名無しさん:2013/03/07(木) 13:48:27.73
でも、お高いんでしょう?
810デフォルトの名無しさん:2013/03/07(木) 13:53:32.63
なんとただ。
811デフォルトの名無しさん:2013/03/07(木) 13:56:36.90
さらに今ご注文いただけると
812デフォルトの名無しさん:2013/03/07(木) 14:07:05.96
プリンタ付けちゃう
813デフォルトの名無しさん:2013/03/07(木) 15:56:05.45
質問を先にして情報を後から書くと情報の後出しになってお互いに効率が悪いので、
まず問題となっている箇所でどのような処理を行っているのか説明しています。
質問はしばらくお待ちください。
814デフォルトの名無しさん:2013/03/07(木) 16:19:34.05
C言語でGoto文を使ってはダメと言われたので
今まで使った事ないですが、とある案件のソース
を見たら、あっちこっちに見かけた件。
815デフォルトの名無しさん:2013/03/07(木) 16:26:44.93
ぬるぽ
816デフォルトの名無しさん:2013/03/07(木) 16:28:44.11
C++/CLIへC#から直接ImageかBitmapを渡すにはどの型を使えばいいでしょうか
817デフォルトの名無しさん:2013/03/07(木) 16:52:17.16
http://web.archive.org/web/20071030182951/http://www.cmagazine.jp/src/kinjite/c/null.html#index4
にある
void f()
{
static char *theTxt;

strcpy(theTxt,"TEST\n");
printf("%s",theTxt);
}
これのNULL領域の破壊とはどういうことなのでしょうか
818デフォルトの名無しさん:2013/03/07(木) 17:17:06.17
>>817
その、theTXTが指す領域はどこだい?
819デフォルトの名無しさん:2013/03/07(木) 17:29:19.65
リテラル?
820デフォルトの名無しさん:2013/03/07(木) 18:13:07.88
ポインタに、メモリ上の何処かにある文字列の先頭アドレスを格納するのか、
それともメモリ上の何処かにあるポインタに、文字列そのものを突っ込むのかっていう。
821デフォルトの名無しさん:2013/03/07(木) 18:15:41.11
初期化されてないからNULL領域にあるっちゅうことなんちゃうんかな
822デフォルトの名無しさん:2013/03/07(木) 18:24:53.55
それをNULL領域と呼ぶのはおかしい。
823デフォルトの名無しさん:2013/03/07(木) 18:30:49.06
NULLポインタが指す領域をNULL領域っていうんだよ。
static宣言されたポインタは0を初期値に持つから
それが指す領域はNULL領域。
824デフォルトの名無しさん:2013/03/07(木) 18:33:18.53
0ってNULLなん?
825デフォルトの名無しさん:2013/03/07(木) 18:38:40.60
ポインタと共に使われたときのみNULLポインタとして扱われます
826デフォルトの名無しさん:2013/03/07(木) 18:46:50.54
0をNULLにする時は、ちゃんとキャストしないと駄目 
(T*)((void*)0)、こんな感じ
827デフォルトの名無しさん:2013/03/07(木) 18:49:46.44
嘘を着くな
828デフォルトの名無しさん:2013/03/07(木) 18:52:33.77
>>826
そんなことしなくても
char* c = 0;
この0はヌルポインタとして扱われる
829デフォルトの名無しさん:2013/03/07(木) 19:18:00.79
>>826
(T*)0 で十分ぬるぽ
830デフォルトの名無しさん:2013/03/07(木) 19:18:47.69
>>823
ヌルポインタはどこも「指さない」したがってNULL領域なぞ存在しない
831デフォルトの名無しさん:2013/03/07(木) 19:26:13.63
存在しない領域をNULL領域と呼んでいるとしたらどうだろうか?
832デフォルトの名無しさん:2013/03/07(木) 19:27:20.79
名前をつけた時点で存在を認めたも等しい
833デフォルトの名無しさん:2013/03/07(木) 19:30:16.94
まあNULLの概念を教えようと思ったら本一冊になってしまうのでな
834デフォルトの名無しさん:2013/03/07(木) 20:38:44.08
NULLとは
#define NULL (void*)0
const T NULL = 0; Tはsizeof(ポインタ)が格納できる型
型、長さ調べたければ typeid(NULL).名前() sizeof(NULL)
ぬルポとは、しいて言うなら自動で型変換できるてテンプレートのNULLで
nullptrとかく
信じてくださいね
835デフォルトの名無しさん:2013/03/07(木) 21:02:50.96
ウソばっか
836デフォルトの名無しさん:2013/03/07(木) 22:15:15.32
>>830
実際にはどこも指していなくても
コンピューターの世界では便宜的にどこかを指しているとした方が
統一的に扱えて便利なことがあるんだよ。
listのendとかね。
NULL領域もそういった類の用語。
キミがどう思おうが一般的に使われてるから。
837デフォルトの名無しさん:2013/03/07(木) 23:31:00.64
>>815
ガッ
838デフォルトの名無しさん:2013/03/07(木) 23:32:43.27
>>836
"NULL領域" 約 504 件
"ヌル領域" 約 506 件

一般的・・・?
839デフォルトの名無しさん:2013/03/07(木) 23:34:12.18
>>830
nowhere みたいなものだと思えば別に呼んでもいいとは思うが
聞いたことは無いな
840デフォルトの名無しさん:2013/03/07(木) 23:34:32.91
>>838
脳内ソースなんだから突っ込んじゃダメだよ
841デフォルトの名無しさん:2013/03/07(木) 23:34:46.26
ナルじゃなかったの?
842デフォルトの名無しさん:2013/03/07(木) 23:56:23.81
goto hell;

hell:
printf("お前も蝋人形にしてやろうか!");
843デフォルトの名無しさん:2013/03/08(金) 03:48:06.54
概念と実装は別だから、どっちで話してるかによる
実装としては「便宜的に何処かを指す必要がある」というのは、逆にいえば概念を表現できないから
だね
844デフォルトの名無しさん:2013/03/08(金) 06:35:19.93
>>842
つまりみな地獄行きなのですね。
845デフォルトの名無しさん:2013/03/08(金) 07:54:10.84
>>841
ナルですよ!
ヴァジャイナとかバイラスみたいなもんだよ
846デフォルトの名無しさん:2013/03/08(金) 11:32:02.19
C++より、今後はC♯とJavaを勉強した方がいい?

Windows環境で動くアプリケーションで
制御系やデータ管理アプリを作るなら
847デフォルトの名無しさん:2013/03/08(金) 11:49:34.71
Windowsは廃れるからやめといた方がいい
848デフォルトの名無しさん:2013/03/08(金) 12:03:23.69
C++
849デフォルトの名無しさん:2013/03/08(金) 12:06:30.74
>>847

時代はLinuxですか?

まさかMac
850デフォルトの名無しさん:2013/03/08(金) 12:07:03.44
Macが支配者になります
851デフォルトの名無しさん:2013/03/08(金) 12:10:50.95
appleはジョブズ死後はなんかパッとしないんだが
852デフォルトの名無しさん:2013/03/08(金) 12:15:05.85
ハードと相性いいUNIXノートを継続して出してくれればそれでいい
細かいことには文句言わないよ
853デフォルトの名無しさん:2013/03/08(金) 12:20:27.45
ジョブズなき後のリンゴは衰退するだけだよ
消滅はしないだろうけど市場規模は限りなく小さくなるから投資するのは馬鹿
854デフォルトの名無しさん:2013/03/08(金) 12:25:11.02
なら早くUNIXかLinuxノートだせよくそ$
855デフォルトの名無しさん:2013/03/08(金) 12:32:55.53
Linuxノートてなんで無いのかな
856デフォルトの名無しさん:2013/03/08(金) 12:39:40.83
android-Java でしょうね。objective-C とかマニアックすぎる‥‥
今着目しているのはC#、でもhttp://toro.2ch.net/test/read.cgi/tech/1359861574/とかまださびしいなあ‥‥
857デフォルトの名無しさん:2013/03/08(金) 12:53:30.51
普通のノートPCにLinuxぶっこめばいいだけじゃね
858デフォルトの名無しさん:2013/03/08(金) 13:00:29.33
このスレで言語相談とか何しに来たって感じだな
859デフォルトの名無しさん:2013/03/08(金) 13:00:41.63
ハード対応調べるの面倒だろ
窓みたいに適当でもしっかり動くLinuxノートが求められてるんだよ
860デフォルトの名無しさん:2013/03/08(金) 13:04:52.25
ジョブズがappleを立ち上げる
↓ 会社は急成長
役員に追い出される
↓ ジョブズはピクサーを立ち上げ
apple急降下

ジョブズにまた戻ってくれとお願い
↓ ipod,iphone,ipadを発売
apple復活

ジョブズ死去


appleはその後・・?
861デフォルトの名無しさん:2013/03/08(金) 13:09:35.46
>>860
ジョブズが戻ったからというよりiPodやiPhoneを売り出したから復活てのが正解に見える
iPodやiPhone実際に作って売ったのはすごい事だがアイデア自体はずっと前からある平凡なものだった
ジョブズが居なくても遅くとも二年位内の誤差で誰かがやってたよ間違いなくね
862デフォルトの名無しさん:2013/03/08(金) 13:11:11.82
>>855
プレインストール買ってLinuxにしてしまえばいい。
快適だぞ
863デフォルトの名無しさん:2013/03/08(金) 13:14:42.03
コロンブスの卵…

まぁあれでしょ
appleだってバカじゃないから同じ道はたどらんよ
今度はジョブズの遺したものを小出しにして生き延びる
864デフォルトの名無しさん:2013/03/08(金) 13:14:46.18
>>861
そんなに遅れてやっても意味ないんだよ
ジョブズは他人のアイデアをさも自分のアイデアのように
主張して迅速にリードしていったからこそ今のアップルがある
865デフォルトの名無しさん:2013/03/08(金) 13:19:34.86
>>864
ジョブズが居なければ一年遅れても一番だろ
くだらないちっぽけな誤差の範囲でしかないのにジョブズが評価されすぎなんだよ
ジョブズ一人がいなくなっただけじゃAppleは倒れないよ
866デフォルトの名無しさん:2013/03/08(金) 13:23:08.36
>>861

ジョブズがいなかったら、いまの形、機能とは違う
ものになってたんじゃ?

ジョブズは無駄なものを嫌い、また妥協も許さなか
ったからね

ボタンの少なさや今の操作も、ジョブズのこだわり
があったこそだけど

出来上がった試作をいきなりコップの水の中にしずめ
、出てきた空気をみて「空気の入る隙間があるなら
もっと薄くしろ」とか言ったとか言わないとか
867デフォルトの名無しさん:2013/03/08(金) 13:24:54.67
>>865

現にジョブズ追い出し後、appleの経営が
傾いたような
868デフォルトの名無しさん:2013/03/08(金) 13:27:25.85
>>866
シンプルイズベストなんてよくある価値観だろ
それをジョブズの専売特許みたいに言うのはマジキチだよ
ジョブズがいなけりゃ他の誰かが少し遅れてやってたのは確定的なんだよ
869デフォルトの名無しさん:2013/03/08(金) 13:28:16.95
ジョブズが居なくなったのは本当に残念だよ
ご冥福をお祈りします
870デフォルトの名無しさん:2013/03/08(金) 13:28:35.83
>>867
雑魚しかいなかったんだろ

その当時はな

今のAppleなら人材も充実してるからジョブズ一人の穴はいくらでも埋めれる
871デフォルトの名無しさん:2013/03/08(金) 13:30:28.65
>>868

なんでジョブズがいなかったら、遅れてでも

今と同じものが出来上がってたと、確定的に

話してるんだよw

あんたがapple好きなのはわかったがw
872デフォルトの名無しさん:2013/03/08(金) 13:31:37.56
てか、今は何か新しいもの出してるか?
873デフォルトの名無しさん:2013/03/08(金) 13:33:28.28
> シンプルイズベストなんてよくある価値観だろ

いや、ジョブズがいなかったら、
いまのAndroidのスマートフォンみたくなってたよw
874デフォルトの名無しさん:2013/03/08(金) 13:39:22.02
>>871
人間てのは不思議なんだが科学水準や文化水準が同程度なら
必ず似たような発想するやつがいるもんなんだよ
微分の発明の話とか有名だろ?
全く同じとは言わんが大差ない(もしかしたらより優れた)デザインの商品が発明されて
Googleが乗っかってAndroidみたいなもの作って、という時代の流れは必ず再現されていたよ
875デフォルトの名無しさん:2013/03/08(金) 13:44:29.28
>>868
アップルが出した後、そっくりなものが少し遅れてやってきた。
たしかに
876デフォルトの名無しさん:2013/03/08(金) 14:04:58.92
サムチョンやシナがパッケージだけを
パクっただけだろw
金型つくるだけなら、一週間でできるよw

アップルがだして売れなかったら、
止めてたろうし
877デフォルトの名無しさん:2013/03/08(金) 14:07:00.88
はあ
だめだこいつら
878デフォルトの名無しさん:2013/03/08(金) 14:09:01.59
>>874
> 必ず似たような発想するやつがいるもんなんだよ

よしんば発想はあったとしても、量産化に至るまで

責任をもって世に出せるかは別。


まあ、アップル見てなよ。
倒産はしないが、段階的に規模は小さくなっていくよ
879デフォルトの名無しさん:2013/03/08(金) 14:20:39.56
iphone5失速してないか?
次期iPadもこれっていう、価格に見合った感じないし
新しさはないし。
880デフォルトの名無しさん:2013/03/08(金) 14:23:32.37
真新しさなんていらないよな
安定して不快感ないデバイス出してくれればおけ
881デフォルトの名無しさん:2013/03/08(金) 14:25:22.57
スレチ
882デフォルトの名無しさん:2013/03/08(金) 14:28:12.40
>>879
時流に流されて方向を見失っている感はあるな
883デフォルトの名無しさん:2013/03/08(金) 14:32:45.74
今のスマホ、タブレット市場は安さが第一の愚盲な底辺の数には対抗できずに先細りだろうな。
ジョブズ無きappleには次のフロンティアは拓けないだろう。
884デフォルトの名無しさん:2013/03/08(金) 14:33:37.45
>>880

安定は大事だけど、新しさ、ユニークを失った
appleって終わりだろ
885デフォルトの名無しさん:2013/03/08(金) 14:34:57.64
無理してひねり出した新しさには何の価値もない
886デフォルトの名無しさん:2013/03/08(金) 14:36:09.71
一瞬板間違ったかと思った
887デフォルトの名無しさん:2013/03/08(金) 14:39:30.50
>>885

極端だね、あんた

まあ、他の企業みたいな事やってたら、appleは
落ちぶれるわw
888デフォルトの名無しさん:2013/03/08(金) 14:42:21.05
無理を実現することがイノベーション
889デフォルトの名無しさん:2013/03/08(金) 14:47:03.20
> 今のAppleなら人材も充実してるからジョブズ一人の穴はいくらでも埋めれる

この根拠がさっぱり語られないのはどうかと思いました
890デフォルトの名無しさん:2013/03/08(金) 14:50:44.79
確かに、エンジニアが新しい事(エンジニアに限らないが)止めたら、終わりだよな。
891デフォルトの名無しさん:2013/03/08(金) 14:53:03.58
>>889

apple好き過ぎて盲目になった人に、聞いても
ムダ
892デフォルトの名無しさん:2013/03/08(金) 15:04:07.83
おまえらせめてプログラム絡めて雑談しろよ
893デフォルトの名無しさん:2013/03/08(金) 15:18:21.47
y談しろよ
894デフォルトの名無しさん:2013/03/08(金) 15:19:17.42
C++0y
895デフォルトの名無しさん:2013/03/08(金) 15:27:28.18
char *pbuf ← 何らかの文字列の先頭アドレスが
既に入ってると仮定

while(pbuf !=NULL){
pbuf++;}

↑だと暴走する
896デフォルトの名無しさん:2013/03/08(金) 15:30:46.84
(時間がかかるだけで)
ぐるっとまわってきて pbuf == NULL と等価な値に来る環境もあるんじゃない?
897デフォルトの名無しさん:2013/03/08(金) 15:31:54.03
ptrの条件式はNULLじゃなく

’\0’の方がいいのかなあ
898デフォルトの名無しさん:2013/03/08(金) 15:32:20.21
*pbuf != '\0'
899デフォルトの名無しさん:2013/03/08(金) 15:34:56.16
>>897
”ポインタの” 比較判定なら NULL
”ポインタの指してる先” が文字列の終端かを判定するなら \0

意図が違うので使い分けしてる
900デフォルトの名無しさん:2013/03/08(金) 15:35:49.77
ポインタをインクリメントして
ぬると比較する例はありましたっけ?
901デフォルトの名無しさん:2013/03/08(金) 15:37:19.80
>>899さん
が答えてくれますたw

ありがとうございます
902デフォルトの名無しさん:2013/03/08(金) 15:40:22.64
>>896
宇宙を一周し、ロープの片端を返してくれる
903デフォルトの名無しさん:2013/03/08(金) 17:08:37.68
オーバーフローして初期アドレス次第で終了するが、
初期アドレスとポインタサイズによって異なるのか

オーバーフローってどうやって判定するの?
904デフォルトの名無しさん:2013/03/08(金) 17:15:21.34
最初の2行が意味わかんね
905デフォルトの名無しさん:2013/03/08(金) 17:32:58.64
string型って値変わる度に長さ変わってるの?
906デフォルトの名無しさん:2013/03/08(金) 17:34:21.30
ソースコードでおk
907デフォルトの名無しさん:2013/03/08(金) 18:20:51.59
str系のthread-safeってどうやってんのかね
strcpyしてる隣でstrcatやsprintf(&ptr[x]..やptr[x]=... かまされるとどうしようもないと思うんだが
908デフォルトの名無しさん:2013/03/08(金) 18:22:29.35
スレッドセーフなの?
909デフォルトの名無しさん:2013/03/08(金) 18:28:25.17
・馬鹿が別々のスレッドで同じアドレスを渡した
・strerror()
・strtok()
以外のstr系でどうやったらunsafeになるんだよ
910デフォルトの名無しさん:2013/03/08(金) 18:32:34.52
strtok() の類似で errorno とかやっかいそう
911デフォルトの名無しさん:2013/03/08(金) 18:35:48.39
ライブラリ提供側からしてreentrantとthread-safeをゴッチャにしてるのあるからねぇ
909みたいなのが声大きくても仕方ないとも言えるけど
912デフォルトの名無しさん:2013/03/08(金) 18:37:41.65
str系に限らないがライブラリ関数に渡すデータの
排他制御は呼出し側の責任でおこなう。
913デフォルトの名無しさん:2013/03/08(金) 18:54:17.32
『スティーブ・ジョブズ』が漫画化……
『テルマエ・ロマエ』のヤマザキマリ

http://topics.jp.msn.com/digital/general/article.aspx?articleid=1713932
914デフォルトの名無しさん:2013/03/08(金) 19:47:36.29
>>866
そうそう、iphone と android を並べればわかる。正直 android 陣営はどれもこれもでかすぎ
でもジョブズ亡き後 iphone もでかくなりつつあるなあ‥‥大丈夫か?
915デフォルトの名無しさん:2013/03/08(金) 19:48:30.29
>>870
apple なんかよりも人材豊かなはずの Microsoft であのざまだ。大企業病というのは恐ろしいね
916 ◆QZaw55cn4c :2013/03/08(金) 19:50:11.82
>>913
そんな暇があるんだったらロマエの続きを早く!くだらん鯉の終わりだったらゆるさない!
917デフォルトの名無しさん:2013/03/08(金) 20:18:25.94
>>902
ポアンカレ予想か
918デフォルトの名無しさん:2013/03/08(金) 21:52:53.20
Appleはゆっくり死んでいくのだ
ゆるやかに、だが確実に
919デフォルトの名無しさん:2013/03/09(土) 03:24:26.26
>>866
そこでジョブスに向かって「お前だって水に沈めれば空気が出るじゃないか」と
返すよう部下がいればアップルは安泰だったかもな。
920デフォルトの名無しさん:2013/03/09(土) 03:40:54.44
返しになってない
921デフォルトの名無しさん:2013/03/09(土) 03:59:50.24
そんなこと宣う部下はジョブズに一言申す前にクビになってたろうな
922デフォルトの名無しさん:2013/03/09(土) 09:15:13.72
>>866
無駄や妥協を許さないっていっても、なにが無駄でなにが妥協かっていう
価値判断は人それぞれだしな。
最初のNeXTcubeを雑誌か何かで紹介するとき、ジョブズはcubeの上で
ジャンプして、ドヤ顔で「こんなことができるコンピュータはNeXTだけだ!」
と言ったとか。
水槽に沈める話は他に元ネタあったよなぁ。と思ったらWalkmanだな。
https://twitter.com/a_ono/status/298356578803924993
923デフォルトの名無しさん:2013/03/09(土) 09:18:51.94
WM_RBUTTONDBLCLKである動作をさせてたのですが
WM_RBUTTONUPの時にポップアップメニューが出るようにしたら
そっちのせいで消されるのかダブルクリックの方の動作をしなくなりました
なんとかなりませんか?
924デフォルトの名無しさん:2013/03/09(土) 10:22:41.47
なりませんね
925デフォルトの名無しさん:2013/03/09(土) 13:39:05.45
右ボタンのダブルクリックとか操作が奇妙すぎる
926デフォルトの名無しさん:2013/03/09(土) 16:48:54.64
>>919

そんな事マジメに言うバカがいたら、
現時点でappleはなくなってるかもなw
927デフォルトの名無しさん:2013/03/09(土) 18:07:38.81
GetDoubleClickTime()を使います
928デフォルトの名無しさん:2013/03/09(土) 23:37:59.85
GCCのC++でatoull使おうと思ったらcstdlibをIncludeしても
error: ‘atoull’ was not declared in this scope
と言われます。strtoullは使えるしatollも使えるのですが、atoullは使えないのでしょうか?
UbuntuのGCC 4.6.3です。
929デフォルトの名無しさん:2013/03/09(土) 23:38:20.33
林檎は衰退の一途
知り合いが林檎使ってたから試しに触らせてもらったら使いにくいだけの産廃だった
930デフォルトの名無しさん:2013/03/09(土) 23:40:30.38
>>929
大抵借りただけだと嫉妬からくる批判をしてしまう
半日耐えたら新世界見えたのになぁ
まじ使いやすいよ
これが無いともう仕事やるのだるいって感じ
931デフォルトの名無しさん:2013/03/09(土) 23:42:09.17
>>928
もしかして: strtoull
932デフォルトの名無しさん:2013/03/09(土) 23:46:48.32
使えないのでしょうか、もくそもどっから出てきたそれ
933デフォルトの名無しさん:2013/03/09(土) 23:55:41.35
林檎使いだけど使ってる理由なんてターミナル周りが窓よりマシってくらいだ
934デフォルトの名無しさん:2013/03/09(土) 23:57:34.77
それ重要だろ
Cygwinはうんこコマンドプロンプトベースで使い辛い
935デフォルトの名無しさん:2013/03/09(土) 23:58:36.43
かと言ってlinuxに行くほどの度胸はなかったけど
936デフォルトの名無しさん:2013/03/09(土) 23:59:10.99
>>928
C++98の規格にはサフィックスがllの変換関数はない
C++11の規格にはatollやstrtoullはあるけどatoullはない

なのでコンパイラが独自拡張してなければatoullは存在せず使えない
937デフォルトの名無しさん:2013/03/10(日) 00:01:11.61
>>935
度胸と言うか、ソフトのラインナップの差だな
938デフォルトの名無しさん:2013/03/10(日) 00:03:19.93
ああ、そうだね
939デフォルトの名無しさん:2013/03/10(日) 00:04:22.74
CUI環境が充実してるのはMacもLinuxも同じだが付加価値として
目に優しい美しいディスプレイ、洗練されたGUI設計、ハードへの対応の良さ、高品質なアプリケーションなど
Linuxに無いモノが沢山ある
940デフォルトの名無しさん:2013/03/10(日) 00:07:18.81
まあGUI設計にも不満点もあるので何とも言えないところ
特に、ファイルダイアログ上で直接ファイル操作できないのが面倒くさい
その代わり、ファイルダイアログにファイルをドロップすればそこが開くというのは結構使えるけど
941デフォルトの名無しさん:2013/03/10(日) 00:14:37.90
というかMacじゃないと恥ずかしくて外でノート開けないじゃん
ダサい国産やシナのマシンに窓やLinuxなんて乗っけて公共の場で開いたら指さして笑われるよ
942デフォルトの名無しさん:2013/03/10(日) 00:15:59.11
>>941
そんな浮浪者みたいな恰好してるから指刺されて笑われるんだよ…
943デフォルトの名無しさん:2013/03/10(日) 00:20:44.84
それノート関係ないんじゃ
944デフォルトの名無しさん:2013/03/10(日) 00:30:33.94
>>941
今度から笑われないように気をつけようね
945デフォルトの名無しさん:2013/03/11(月) 13:51:03.71
>>750
cb->Regist(this,&CTest::print);
じゃなくて
cb->Regist(*this,&CTest::print);
にしないとダメだよ

あとあれはただのテストコードなんで使用は自己責任でお願いします。
946デフォルトの名無しさん:2013/03/11(月) 19:30:10.24
俺は趣味マでWin7+VC2010使ってるんだけど
仕事でC/C++を使っている奴は、PC/OSとC/C++開発環境は何を使ってるんだ?
Mac(開発環境なんというのか知らないが)とか使ってるのか
947デフォルトの名無しさん:2013/03/11(月) 19:50:42.92
VC++6.0です(震え声)
948デフォルトの名無しさん:2013/03/11(月) 23:56:46.86
VC++6.0は去年まで(震え声)
949デフォルトの名無しさん:2013/03/12(火) 00:19:10.28
去年までRedHatEnterprise+gcc
今はWinXP+VC6

てかWinでXPより新しいOS見た事も触った事も無いんだが(震え声)
950デフォルトの名無しさん:2013/03/12(火) 07:44:10.74
この間ようやくWin7+VC2010になったよ
まぁ裏で動いてるコンパイラは別物だけど…
951デフォルトの名無しさん:2013/03/12(火) 11:35:12.61
↓すみません。これ実行すると、
 1文字目でループ抜けるんですが、なぜでしょうか?

#define MAX_BUF 20
char str; char ptr[MAX_BUF];
unsigned int cnt=0;
char Comstr(char ch);

int main(void){

char code;
str=getchar();
do{ code=Comstr(str); }
while(code !='y');

return 0;

}
char Comstr(char ch){

if(cnt >= MAX_BUF){ printf("Buffer OverFlow ! \n"); return 'y';
}
else{ ptr[cnt] = ch; cnt++; }
}
952デフォルトの名無しさん:2013/03/12(火) 11:41:31.44
unsigned int cnt=0;
で初期化してるはずが、文字入力したとたん
値が20になってますた
953デフォルトの名無しさん:2013/03/12(火) 11:48:03.80
str=getchar();

をdoループ内に入れたら解決しました
954デフォルトの名無しさん:2013/03/12(火) 13:05:40.88
char str; というセンスが君の本質だ。
955デフォルトの名無しさん:2013/03/12(火) 13:53:00.01
仕事じゃねーんだから、どうでもいい。
956デフォルトの名無しさん:2013/03/12(火) 14:29:49.04
>>954
そういう余計なチャチャ入れるのがお前の本質だろ
957デフォルトの名無しさん:2013/03/12(火) 14:51:21.75
心底どうでもいいケチをつけてくる奴って
必ずいるよね。

>>954
みたいなのが
958デフォルトの名無しさん:2013/03/12(火) 15:46:47.48
strの意味知らずに使ってるのは馬鹿な証拠だろ
959デフォルトの名無しさん:2013/03/12(火) 16:02:48.08
倉庫?
960デフォルトの名無しさん:2013/03/12(火) 16:08:45.30
ひも
C/C++では、文字列
コンピューターでは…
ストリング,記号列:単位として取り扱われる記号,語,文字,ビットを一列に並べたもの.
ランダムハウス英語辞典
961デフォルトの名無しさん:2013/03/12(火) 16:11:00.70
int getchar ( void );
962デフォルトの名無しさん:2013/03/12(火) 17:34:49.05
>>954=958

必死になんなよ、おっさん。

スレタイ読めよ
963デフォルトの名無しさん:2013/03/12(火) 18:16:44.20
エネルギーコスト・収支は重要。これが赤字では日本の燃料が減るだけ。バイオ燃料の例。



アルコール燃料 - Wikipedia
正味の燃料エネルギー収支
存続し続けるには、アルコール・ベースの燃料経済は燃料エネルギー収支の正味が黒字になっているべきである。
すなわち、アルコールを生産するのに費やした全ての燃料エネルギー、これには原料植物を耕作、収穫、輸送、発酵、蒸留、配送に費やされた燃料はもちろん、
同様に農場を建設したり農業機具を製作するのに費やした燃料が含まれるのだが、その総計に対しては生産された燃料が内蔵しているエネルギー量を超えるべきではない。
たとえば、「1ガロンの燃料を作り利用するまでに、2ガロンの燃料を消費する」のでは意味が無いと言うことである。
アメリカ合衆国において農業アルコールは一般に穀物から得られるが正味の燃料収支は道はいまだに険しいといった状態である。
964デフォルトの名無しさん:2013/03/12(火) 18:58:38.60
>>961
名前を信じたからchar受けしたんろ。勘違いを起こす名前にするなだよな
965デフォルトの名無しさん:2013/03/12(火) 19:01:31.08
>>964
getintだったらもっと勘違いするだろ
966デフォルトの名無しさん:2013/03/12(火) 19:15:39.76
>>964
プロトタイプは見ることなく関数名だけ見るってどんな状況だよもん
967デフォルトの名無しさん:2013/03/12(火) 19:53:39.92
>>966
俺に言うなよ。それやったのが>>951だろ。情況は>>951に聞け
ともかく名前が行き当たりばったりだと、プログラムのつくりも行き当たりばったり
の奴が多いよな。コーディングしながらプログラムをどうするか考えてるんだうが
968デフォルトの名無しさん:2013/03/12(火) 19:55:30.20
パッケージ分割のコツってなんですか?
おすすめの資料とか気をつけていることとかあったら教えてください
969デフォルトの名無しさん:2013/03/12(火) 19:58:09.17
>>967
getcharに対して勘違いするような名前にするなっていったのはお前だろ。
>>951はそんなこと言ってないし、他の誰もそんなこと思ってねーよ。
970デフォルトの名無しさん:2013/03/12(火) 20:01:08.72
>>1 【初心者歓迎】
971デフォルトの名無しさん:2013/03/12(火) 20:08:08.41
>>967
わかったから、そういう教育はお前の部下にしろよ。
972デフォルトの名無しさん:2013/03/12(火) 20:11:36.06
>>967

その前に、お前は日本語勉強したら?
973デフォルトの名無しさん:2013/03/12(火) 20:12:13.46
標準入力て一つしか無いんですか?
二つのプログラムの標準出力を同じ行数の行を繋げてパイプでもう一つのプログラムに渡したいのですがやり方がわかりません
974デフォルトの名無しさん:2013/03/12(火) 20:14:32.69
>>969
>勘違いするような名前
それstrって名前を皮肉ってるんだよ
975デフォルトの名無しさん:2013/03/12(火) 20:16:42.88
>>973
streambufのこと?
それともそこに流し込むためにプールされる標準入力だろうか
しかし後者なら2つ以上あるハズがないか
976デフォルトの名無しさん:2013/03/12(火) 20:19:44.96
ぐだぐだと、しつけえ野郎がいるw

プログラム組めても、人間として失格w
977デフォルトの名無しさん:2013/03/12(火) 20:19:45.30
>>975
うまく説明出来ないんですが
プログラム1の出力が
1
2
3
プログラム2の出力が
a
b
c
だとして
プログラム3の標準入力に
1 a
2 b
3 c
を渡したいんです
978デフォルトの名無しさん:2013/03/12(火) 20:20:52.56
>>976
人格もプログラムし直したらいいのにねw
979デフォルトの名無しさん:2013/03/12(火) 20:27:27.27
可能なのかわからんけど

プログラム1の出力をファイルにリダイレクトしつつ -(A)
プログラム2の出力を(パイプ経由で) stdin にもらって
-(A) のファイルを読みながら処理する?
980デフォルトの名無しさん:2013/03/12(火) 20:50:08.45
>>977
それぞれの出力をnlでナンバリングして名前付パイプに流してjoinでくっつけろ
981デフォルトの名無しさん:2013/03/13(水) 01:07:13.40
join?
982デフォルトの名無しさん:2013/03/13(水) 01:22:40.75
char str;
かぁ。
命名が
int set_data(void);
void get_data(int d);
並みにズレている。
名前を軽んずるのはいくない。
983デフォルトの名無しさん:2013/03/13(水) 02:25:54.96
>>982
そんなこと書くと噛みつかれるぞ
DQN名前の人が話題になるぐらいのご時勢だしな
名前を軽んずる奴が多いよ
984デフォルトの名無しさん:2013/03/13(水) 02:42:31.55
キラキラ変数名の時代が来たか・・・
985デフォルトの名無しさん:2013/03/13(水) 03:05:57.72
>>977
paste -d' ' <(プログラム1) <(プログラム2) | プログラム3
でいけるかと。

でも、プログラム1の出力が"1 1 1"などのように
プログラム3の標準入力のデリミタと被るケース(プログラム3の入力は行処理は諦めcsvやjsonなどで受け付けるなど)
プログラム1と2の出力行数が異なるケース(お好み)
などと問題点はあるので
仕様が固まるまでは
bash,awk含めた各種コマンド群やらそれらと相性のいい
PerlやRubyなどのLLで試行錯誤するのがいいんじゃないかな。
986デフォルトの名無しさん:2013/03/13(水) 05:33:40.94
987デフォルトの名無しさん:2013/03/13(水) 08:01:18.56
>>982 = 983

自演・自己擁護ワロタwww
988デフォルトの名無しさん:2013/03/13(水) 08:30:02.96
>>987
お前の書き込み分りすぎ。
ざっと見て
849 866 871 884 887 891 926 976 972 962
はお前の書き込みじゃないか
で、951もお前
989デフォルトの名無しさん:2013/03/13(水) 09:46:01.92
Macや林檎貶されて腹立った奴が、ずーっと書き込みしてたんか とにかく、誰かに難癖つけたかったワケだ
990デフォルトの名無しさん:2013/03/13(水) 09:55:02.17
>>988

間違いもあるがw

じゃあ、お前はappleマンセーの下りから

strのいちゃもん、

そして

自己擁護の >>982 = 983まで

ほとんどお前じゃないかw
991デフォルトの名無しさん:2013/03/13(水) 10:41:14.44
あのさぁ・・・(棒読み)
992デフォルトの名無しさん:2013/03/13(水) 10:57:45.96
ここは相変わらずC/C++の情報が満載だな
993デフォルトの名無しさん:2013/03/13(水) 11:21:41.77
appleマンセーバカw
994デフォルトの名無しさん:2013/03/13(水) 12:00:11.48
マンセーはしたくないが
Windowsは文句無しに残念すぎるし
Linuxは実用性重視で見た目がダサい(ハードもソフトも)し遊びが少ないしハード対応よくないし
実施、消去法でMac一択にならざるを得ない
他のドマイナーな選択しもあるが大抵はゴミだし機能は良くてもLinuxと同じ理由でアウトなんだよね
995デフォルトの名無しさん:2013/03/13(水) 12:30:11.84
>>994
神聖どあほうだな
996デフォルトの名無しさん:2013/03/13(水) 12:47:51.82
初心者はお断りだな 次スレは【初心者歓迎】はずすべき 変数名とか基本的なお作法はしっかり学んでから来い 基本的なアルゴリズムもある程度勉強しとけよ
いちいち教える身にもなれよ
997デフォルトの名無しさん:2013/03/13(水) 12:52:10.62
>>996
お前が自分用に上級者用スレでも立てれば良いだろ
998デフォルトの名無しさん:2013/03/13(水) 12:55:56.75
じゃあ、少なくとも 変数名とか基本的なお作法はしっかり学んでから来い マジでムカつくから
999デフォルトの名無しさん:2013/03/13(水) 13:10:00.97
わーい、叩かれてたオレの書き込みが
マンセーくんのせいになったw
1000デフォルトの名無しさん:2013/03/13(水) 13:13:43.56
だいべん
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。