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


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

C/C++小心者スレッドPart1



1 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 06:18:18 ]
プログラミング言語C/C++についての、小心者向けスレです。質問・要望・雑談などどうぞ。
関連スレやURLは>>2以降。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・ぐぐる
 ・マニュアルで探す 
 ・FAQを読む 例えば www.bohyoh.com/CandCPP/FAQ/index.html
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(なるべくそのままで)
 ・実行環境(OS名、コンパイラ名)
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ 
相手は小心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって小心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。


宗教的な話題は禁止します。


266 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 09:35:35 ]
ちょっと質問したいんだが
コンストラクタで例外投げるのってどういう時に使うんだ?
分岐にでも使うのか?

267 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 14:08:45 ]
>>266
エラー通知に決まってるだろ。コンストラクタでも普通の関数でも同じ。

268 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 21:19:49 ]
コンストラクタだとエラーを返せないから例外を使う。

269 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 18:39:30 ]
ttp://gimpo.2ch.net/test/read.cgi/bobby/1233164250/l50

168 名前:よしよし ◆2U93Cmvv1o [sage] 投稿日:2009/02/10(火) 07:02:42 ID:???
おいハゲどもポインタの質問だ

------
p は指し示す先のアドレス
&p はポインタ変数pそのもののアドレス
*p は指し示す先の値
------
だよな?なのにポインタ配列の解説のところで
------
data+i がそのもののアドレス
data[i] が指し示す先の値
*(data+i) が指し示す先のアドレス
------
ってことになってんだよ
俺は本の書き間違えだと思って実際にプログラム打ち込んで
コンパイル、実行してみたらあってるんだよ
どういうことだ説明しろ
「*」はポインタが指し示す先の値を出力するんじゃねーのかよ

270 名前:デフォルトの名無しさん [2009/02/10(火) 18:43:21 ]
169 :おいら名無しさんヽ(´ー`)ノ:2009/02/10(火) 09:02:32 ID:???
3番目の"*(data+i)が指し示す先のアドレス"は間違ってるな。
ハゲの理解が正しい。どこの糞入門書だ。さらせ。

171 :よしよし ◆2U93Cmvv1o :2009/02/10(火) 11:50:38 ID:???
>>169ありがとう。ハゲじゃないが言ったようにコンパイルすると
結果は入門書どおりになるんだよ。俺が何か間違っているはず。
#include <stdio.h>
int main (void){
char* data[4]={"par","birdie","eagle","albatross"};

int i;
printf("data[i]    値    アドレス :ポイント先の値\n");
for(i=0;i<4;i++){
printf("data[%d] %10d %10d %10s\n",i,*(data+i),data+i,data[i]);
}
return 0;
}
-------------------------------------
C:\Source>point.exe
data[i]    値    アドレス :ポイント先の値
data[0] 4235576 1245052 par
data[1] 4235580 1245056 birdie
data[2] 4235587 1245060 eagle
data[3] 4235593 1245064 albatross
-------------------------------------

271 名前:デフォルトの名無しさん [2009/02/10(火) 18:44:48 ]
ttp://gimpo.2ch.net/test/read.cgi/bobby/1233164250/

177 名前:よしよし ◆2U93Cmvv1o [sage] 投稿日:2009/02/10(火) 14:48:08 ID:???

要するに
int i=5;
int *p;
とかと
char* data[4]はそもそも違うっちゅーことだな?

*pってのは「指し示す先の値」のことだけど、
* data[4] ってのは「指し示す先のポインタ」のことなんだな?
* data[4]様はポインタ様*(data + i )やdata[i]のさらに違う場所
(メモリの)にいる奴なんだな?


メモ-----------
*(data + i )とdata[i]はまだポインタなの。

「ポインタの配列」→「ポインタ」→「指し示す先の値」

* data[4]→ *(data + i )とdata[i]→ *(*(data+i))または*data[i]

char* data[4]=
--------------


272 名前:デフォルトの名無しさん [2009/02/11(水) 08:43:54 ]
小心者スレということなので投下してみます。
VC++ Expressでウインドウアプリを作っています。

(ファイル A.h)
class A{
public:
A();
vertial ~A();
};

(ファイル B.h)
#include ゙A.h゙
class B:public A{
public:
B();
~B();
};

(ファイル C.h)
#include ゙A.h゙
class C:public A{
public:
C();
~C();
};

この時、Aが再宣言されたとか、Aが未定義だとかでコンパイラに怒られます。なぜ

273 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 08:56:55 ]
vertial ~A();

274 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 09:47:54 ]
if文をやっと覚えたところでニコニコ動画のビットレート計算
というのがあったのでこれを参考に簡単なプログラムを作っていたのですが
コンパイルエラーはでないのですが、最後の部分を入力するとエラーで落ちます
何がいけないのでしょうか?

Source PW:c
www1.axfc.net/uploader/He/so/193956



275 名前:274 mailto:sage [2009/02/11(水) 10:01:04 ]
最後のif文で演算子が抜けていますが
ここは >= にしていました

276 名前:274 mailto:sage [2009/02/11(水) 10:02:21 ]
補足
>最後の部分を入力
プログラムを実行して順番に進んでいって最後の部分を入力

277 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 10:41:14 ]
>>274
scanf("%d", movieb);

278 名前:デフォルトの名無しさん [2009/02/11(水) 13:03:11 ]
>>273
virtual A();の間違うぃ
スマネm(_ _)m


279 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 13:25:47 ]
そういうくだらない間違いをする奴がレスに何を書こうとも、
実際のコードをきちんと再現できているとはとても思えない。
従って、再現するソースとエラーメッセージを貼るか、帰れ。

280 名前:デフォルトの名無しさん [2009/02/11(水) 13:41:40 ]
何を偉そうに

そっから推測できる間違いが指摘できねーんならそれこそカエレだ

281 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 13:48:51 ]
>>280
別にあなたが指摘なさっても宜しくってよ。それとも、あなたご自身が指摘もできないで書いてらっしゃるとでも仰るのかしら?

282 名前:デフォルトの名無しさん [2009/02/11(水) 14:15:15 ]
はいそうです

283 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 14:17:36 ]
知らレス

284 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 14:40:16 ]
>>272
こうじゃね?

#ifndef _A_
#define _A_

class A{
public:
A();
virtual ~A();
};

#endif



285 名前:デフォルトの名無しさん [2009/02/11(水) 15:15:46 ]
>>284
神!


正直、#include ゙A.h゙してれば逝けるとおもてました。
(BCCでは#includeしてれば逝けてたから)
ありがとうございますた。


286 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 16:30:16 ]
インクルードガードぐらい常識として知っておけ

287 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 18:54:22 ]
>>284 予約識別子死ね。

288 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 20:22:41 ]
>>277
scanf("%d", movieb);
という箇所が間違っているということでしょうか?
または、ある部分を上のように書き直せということでしょうか?

289 名前:288 mailto:sage [2009/02/11(水) 20:28:46 ]
解決しました
&が抜けているということですね
スレ汚しすみませんでした

また、回答ありがとうございました

290 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 20:31:43 ]
>>287
_A_ はプリプロセッサの識別子。C/C++の予約識別子には該当しないよ

291 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 20:40:50 ]
>>290
ライブラリの実装に _A_ 使ってるところがあったらぶっ壊れるだろうが。

292 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 20:45:53 ]
あたま悪いの?

293 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 20:54:32 ]
>>290
何を根拠にそんなことを言うのかね。

ISO C (draft n1336)
7.1.3 Reserved identifiers p2 にはマクロ定義についても明示的に禁止されてる。
> If the program declares or defines an identifier in a
> context in which it is reserved (other than as allowed by 7.1.4), or defines a reserved
> identifier as a macro name, the behavior is undefined.

ISO C++ にはマクロ定義について明示的な記述は無いようだけど、 >291 があるから
やっぱりダメだろう。

294 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 22:11:00 ]
どうせ、VCかgccしかつかわないもん。



295 名前:デフォルトの名無しさん [2009/02/12(木) 05:49:25 ]
#ifndef _A_
#define _A_
  :
#endifと、
#pragma onceは同じ意味じゃないの?

296 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 05:55:30 ]
いいえ、後者は一部の処理系でしか使えません。

297 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 05:57:16 ]
>>295
VC厨はこれだから・・・

298 名前:デフォルトの名無しさん [2009/02/12(木) 07:53:33 ]
VC厨扱いしていただけるなんて光栄でごぜえます。

299 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 09:08:54 ]
>>297
gccでもCodeWarriorでも使えるし
PC向けのメジャーなコンパイル環境で使えないのはbccくらいなんだが
ポータビリティ意識して書くのは当然としても、
>VC厨はこれだから…
ってどういうこと?


300 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 22:48:59 ]
>>299
CodeWarriorってタダで使えるの?
wikipediaで見たらかなりのプラットホームをサポートしてるみたいだから
使ってみたいのだが

301 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 00:16:57 ]
>>300
コンシューマゲームの開発やってると、無料でダウンロードできる場合もある
俺が使ったのはこのパターン。
すまんが小売してるかどうかは知らん。
とりあえず使いにくいことは確か。

302 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 00:18:57 ]
>>299
#pragma onceがおそらくVC発祥だからでしょ。
#ifdef _MSC_VER >= 1020で囲むコードを良く見かけるし、
まだまだVC限定のイメージが拭いきれていないと思う。

303 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 09:03:50 ]
>>302

> #ifdef _MSC_VER >= 1020で囲むコードを良く見かけるし、
すまんが意味がわからない。
コンパイラによってifdefとpragma onceを切り替えるコードがあるって話?(なわけないか)
VC限定のイメージとの関係は?


304 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 09:08:11 ]
つーか、ifdefで比較演算ってなんだよw
とは思った。

>>303
pragma onceは厳密には全く違う意味に解釈される可能性もあるから、
使えるコンパイラを限定することに意味はないわけでもない。



305 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 14:55:58 ]
>>304
意味ないだろ
それならifdefだけで十分なんだから。

306 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 15:26:48 ]
>>305
古い MSC には #pragma once がなかったんじゃないの?そのための比較だと思うけど。

307 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 15:59:56 ]
>>303
ごめん間違えた。正しくはこんな感じ。見ない?
#if _MSC_VER >= 1020
#pragma once
#endif

308 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 18:14:42 ]
>>307
全く答えになってないんだがww

309 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 22:15:10 ]
素直にインクルードガードしとけってことだ!!

310 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 22:50:41 ]
#ifndef _strcpy
#define _strcpy
int _strcpy(){return 0;}
#endif

311 名前:赤西仁 [2009/02/13(金) 22:57:03 ]
1年間悩んでます。お力をお貸しください。

アークザラッドUというタイトルのゲームの、ゲーム画像(歩行画像など)を抽出したいのですが、
かれこれ1年ほど経ちますが、なかなかうまくいきません。
*もちろん抽出した画像は個人範囲内で利用するつもりです。

◆試してダメだったこと

 ネット上からダウンロードできる、ありとあらゆる抽出系ツールを試した。
 (ちなみに他のゲームはほとんど抽出可能)

◆教わったこと

 ・アークザラッドUは独自の画像形式を使っているから抽出できない。
 ・PS上で表示されてるということは絶対に摘出はできるはず。

◆抽出は不可能ではないということを知ったとき

 2ちゃんねるで質問したところ、
 ある方が実際にキャラクターの歩行画像を抽出して
 私が立てたスレにアップしてくださいました。

スクリーンショットじゃ嫌なんです。どうか皆さん、お力をお貸しください。

312 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 23:44:15 ]
マルチ失せろ。

313 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 00:00:30 ]
>>306
コンパイラの種類/バージョンチェック云々以前の話なんだが、わかってるか?
VCでifdefやifndefが使えないわけじゃあるまいし、
あえてpragma onceを混ぜる理由が無いだろ


314 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 00:05:42 ]
普通のインクルードガードと307みたいなVC限定でpragma onceを組み合わせて使うコードの存在が、
#pragma onceがあたかもVC限定かのように思わせるのではないかと言いたいんだけど



315 名前:313 mailto:sage [2009/02/14(土) 01:00:52 ]
>>314
>>306なの?
横レスで他人へのレスをされても噛み合わないレスしか返せないぞ

316 名前:306 mailto:sage [2009/02/14(土) 04:46:01 ]
>>313
マクロによるインクルードガードでは2回目もファイルを開いて少なくともインクルードガードを
読む必要がある。 #pragma once なら2回目以降ファイルを開かずにスキップするような実装が
考えられる。

そのため、インクルードガードを置いて移植性を持たせつつ、特定のコンパイラでの
コンパイル時間を短縮する目的で #pragma once を置くことが考えられる。

en.wikipedia.org/wiki/Pragma_once

317 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 12:32:24 ]
おまいら
                       ._,,,,,,。,,、       广'x、   ,,、._    」'゙''i、
     ,,,,,_.,,,,、广゚┐     .,,,v―冖"~゛   ゙'i、      .ト  ,|,_  riゃ .}   .,i´ '冖i、
     .] ` f゙,l° ,i´     .゙l_ .y-┐ 'や'゙"゙’    _,,,vr"   .゙ト.゙'x,,,,广 ィ・'''゙~  .._,,v・゚ヒ''''・x、
     入、rУ ,iレ-v,,,、   .,r°."'''l゙  ,|√゙゚'i、   匸 ._  .y・'゙゚,,,v―-,  .:゚ーa  .√ ._,rll_  :}
  .,r''y|゛゙゙l..,i´ ,i"゙l,  .゙ト  ,r°,,,  ..,  ._,,vぐ    .`√ .,i´l广._,,,,,,,,i´  ,,i´ ,i´ ,「 .:| .~''''″
 .r″ .|゙l、 “ .,i″.yi入-イ  il∠i、.` .,メ|  |   」'ト   .,,i´ .,i´ ,, ̄      .[  .,i´.,,,,,,! .]_
 .゙l_,i´,レ  .'_,,,,レ ~''┐   .,r°.,i´.|  .|   ,l゙ :゙l、 ,,i´ ,i´ l゜.゚L__   .:―ヤ゚″_   :~''=、
   .,r″.,x=,,      .,i´  ,x'".,,x'″ .゙l、 ゙冖''″ .] |  .,i´ .゙l,    .~1   .゚L '゙〃 ,n, .,,}
  .,l彡'''″  .゙~"''''''''''"゜  .テ''~゛    .:゚'―---―・° ―″   .~''¬―'″    .:゚=_,r

318 名前:デフォルトの名無しさん [2009/02/16(月) 17:47:44 ]
皆様こんばんは。
VC++ ExpressEditionでのリーソスの事について質問させてくダサイ。

(Resource.h)
#define GAZOU000 1000
#define GAZOU001 GAZOU000 + 1
   :    :
   :    :
#define GAZOU030 GAZOU001 + 030

(Resource.rc)
GAZOU000 BITMAP "bmp000.bmp"
   :    :
   :    :
GAZOU030 BITMAP "bmp030.bmp"


これでビルドしようとしたら
.\Resource.rc(5) : error RC2135 : file not foundみたいなのが
ズラズラズラ〜〜〜っと出てきました。

仕方が無いのでResource.hの、
#define GAZOU030 GAZOU000 + 30みたいに記述しているのを
全部#define GAZOU030 1030のように書き直したらビルドできました。

なぜ最初の書き方でダメだったんですか

319 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 21:07:15 ]
最初の書き方だと、
GAZOU001 BITMAP "bmp001.bmp"
のGAZOU001をマクロ展開すると、
1000 + 1 BITMAP "bmp000.bmp"
になるだろ?リソースファイルはスペースを区切りと扱うので、正しく認識できなくなる。

320 名前:デフォルトの名無しさん [2009/02/16(月) 21:57:46 ]
>>319
えー!そうなんですか〜
初歩的ミスだったのですね。お恥ずかしい・・・

でも、お蔭様で、またひとつ勉強になりました。
ありがとうございました。

321 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 22:04:41 ]
>>316
大抵の場合、フルビルドを立て続けにやることはなく、プリコンパイルヘッダの効果で意味がないと思われ

322 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 22:37:19 ]
google C++コーディングスタイルに、
cppファイルの無名名前空間の使用は推奨されてたのですが
理由はなぜでしょうか。cppファイルは別に何をやってもいいような。
cppファイルですらusing使うのは駄目なの?

323 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 23:46:37 ]
>>322
ほかのcppファイルから見える必要のないものを隠すために使えという意図だと思う。
同じ目的で、名前空間上のstaticも使えるけど、
一般的に、この意味ではstaticより無名名前空間のほうが推奨されている。

324 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 23:57:52 ]
static指定のかわりですか、なるほど。
名前空間上の関数定義だったら別だけど
クラスのメンバ定義だけしか書かない分には
気にしなくてもいいのかな。

>staticより無名名前空間のほうが推奨されている。
これは等価だと理解してましたが、なぜでしょう。
どっちも他のファイルからは見えないのに?



325 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 00:39:05 ]
>>324
もともとC/C++のstaticに静的記憶期間とファイル内って2つ意味があるのはややこしいから、
後者の意味を分離しようという動機で無名名前空間が導入されたという経緯がある。
だから大事に使ってあげてねと言うわけ。

326 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 03:30:11 ]
>>324
C++ ではオーバーロードやテンプレートの関係で、クラス名などもグローバルな定義の
識別に使われるので、関数や変数以外に class, struct, enum も別々の .cpp で同じ
名前空間内に同じ名前のものを定義するとマズイ。これが無名名前空間で解消できる。

327 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 02:20:15 ]
お題。

ISO/IEC 14882:2003とXLib、Win32APIの範囲内でスクラッチからエディタを作る。
Win32、XLibともに標準C++ライブラリとかぶる機能があるが、この場合
標準C++を優先して使う。
これは、少しでも移植性を高めるための努力と考えてほしい。
また、拡張性の担保ともなりうる。

これは時間かかるけど、やりがいあるよ?

328 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 02:56:40 ]
なんだコピペだったのか。

329 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 03:02:01 ]
まずISO/IEC 14882:2003がなんなのか調べるのめんどくせえから挫折
→XlibかWin32?どうせなら両立できるwxだろと意気込むがインストール失敗して挫折
→そもそも標準C++が分からなくて挫折
→努力なんかできなくて挫折
→わたるが死んじゃう!(自殺)

330 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 22:30:51 ]
すいません
CとC++を実践の中で学びたいのですが
なにを作ればいいか、というよりなにをその言語で作れるのか漠然として・・・
JavaやC#のようなオブジェクト指向言語ならイメージ浮かびやすいんですけど
コンソールだとコントロール等がないのでどうしても・・・

331 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 00:19:13 ]
C++もオブジェクト指向言語なんだが・・・

332 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 09:37:07 ]
つーか、好きにライブラリを選べばいいのがC/C++流。

333 名前:330 mailto:sage [2009/04/12(日) 10:24:27 ]
そういやC++もオブジェクト指向言語でしたw
まだイメージができないあたり、ライブラリの知識が不足しているようですね。

334 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 10:29:32 ]
ライブラリの前にオブジェクト指向と言語仕様の知識も不足してる



335 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 11:54:22 ]
それを言ったら情報工学の基礎から何から全部だろう
ポトペタでさくさく作っている間は必要のない知識だ

336 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 12:45:19 ]
なんだポトペタって。

337 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:33:18 ]
一覧からマウスで選択したコントロールをフォームに
ポトっと落とすとペタっと張り付く機能やそれを備えたIDEのこと

338 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 00:50:39 ]
Stringクラス的なものを参考すればいいんじゃね?
まさにコントロールじゃない目に見えないクラスオブジェクト。

339 名前:トミー ◆xb8eIST5.k [2009/04/25(土) 20:19:22 ]
>>182
ぼくもそれをダウンロードして使ってみました。
うまくいきそうです。
どうもありがとうございました!

340 名前:トミー ◆xb8eIST5.k [2009/04/25(土) 20:21:25 ]
>>339はこのスレの>>155です。

341 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 22:02:48 ]
ここはvc++は駄目かえ?

342 名前:デフォルトの名無しさん [2009/06/07(日) 16:31:54 ]
正の数であれば、小数点以下を四捨五入する場合、0.5を足して、intで切り捨てればいいのですが、
負の数も含めて、四捨五入をする場合、どのようなコードを書けばよいのでしょうか?

343 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 19:14:53 ]
GUIアプリを作るのにC++を勉強しようと思っているのですが
VC++EEとBCCどっちが作り易いですか?
また言語自体はどちらも同じですか?

344 名前:デフォルトの名無しさん [2009/06/07(日) 19:20:10 ]
GUIはスクリプトで出来る



345 名前:デフォルトの名無しさん [2009/06/07(日) 19:21:35 ]
VC++EEとBCCで選ぶと結局は、VC++EEが簡単だろう。
ATL/WTLなどもあり対応しているライブラリも多い。

346 名前:デフォルトの名無しさん [2009/06/07(日) 19:22:57 ]
rubyでGUI作れなければ、C++ではもっと無理。まずこれでやってみれば

347 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:30:11 ]
>>342

x=(int)(x+.5-(x<0));

でよいか?

348 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:35:28 ]
>>344-346
VC++使うことにします。
ありがとうございました。

>>346
C++は以前触ったことがあります。昔すぎて何も覚えてませんが…


349 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:41:43 ]
>>342
abs関数はどうですか

350 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 10:46:27 ]
>>342 >>347
なんで cast なんか四捨五入で使うの?round とか使わない?
cast なんてそんなに無闇に振り回すものじゃないと思うけど。


351 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 11:31:01 ]
>>350
round()なんて関数ないぞ

352 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 12:44:07 ]
>>351
すまん。ちょっと説明不足だったかも。厳密にいえば round/lround/rint/lrint
等々は C99 の規格みたい(といっても今や 2009 だが)。
プラットフォームによってはいまだに使えないのかも。

353 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:55:43 ]
castはそんなに振り回すもんじゃ無いのは同意だが
このケースは真っ当な使い方だし問題ない

が、>>350みたいにそういう判断ができないなら使うべきではないな

354 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:18:13 ]
俺は cast 使わないでもサクッとできるなら使わない方を選ぶな。



355 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:28:06 ]
昔からあるやり方だから、一種の慣用句。
BASICでも同じようなことしてたと思うし。

356 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:45:37 ]
>>353
「これは真っ当」というけど、intでoverflowの心配はしなくていいの?

別に一般にcastが良いか悪いかは別としてこの場合の素朴な疑問。

357 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:33:41 ]
それも含めて分かって使ってるかということだろう。

358 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:35:52 ]
>>357
それなら今回のケースは情報不足で

> このケースは真っ当な使い方だし問題ない

と言い切る根拠は無いように思うが。


359 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 02:53:47 ]
言い切る根拠ねぇ。。
根掘り葉掘り前提を聞かないと、うかつにコメントしちゃいけないのもどうかと思うが。

360 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 00:09:27 ]
プログラミング言語C第2版には「A.6.3.整数と浮動小数点」の項に
>浮動型の値を整数型に変換するときには、小数部分は無視される
とあるんだけど、実数xの少数分 x-[x] なので、例えば-2.3の整数部分は-3となり、
(床関数:ja.wikipedia.org/wiki/%E5%BA%8A%E9%96%A2%E6%95%B0
結局、int a = -2.3 の結果は -3であるべきかな?かなかな?

361 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 00:34:11 ]
>>360
いや、それは-2になる。
ここで言う小数部分を無視というやり方は、数学的定義とは関係なく
(絶対値が)0に近づく方向へ切り捨てるということ。

ここまで書いてから気付いたが、その記事の下の方にC言語の場合もきちんと書いてあるじゃないか。

362 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 00:41:50 ]
きちんと

>『独自研究』に基づいた記述

と書かれていますね。

363 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 00:50:03 ]
ANSI C
3.2.1.3 Floating and integral
There was strong agreement that floating values should truncate toward zero when converted to an integral type,
the specification adopted in the Standard. Although the Base Document permitted negative floating values to
truncate away from zero, no Committee member knew of current hardware that functions in such a manner.
[Footnote: We have since been informed of one such implementation.]
整数型への変換時に浮動小数点数はゼロに向かって切り捨てるように強く言われた。
規格でも標準で採用した。でも、元にしたドキュメントでは負の浮動小数点数は
ゼロから離れる方に切り捨てることを認めていた。当時の委員の誰一人として現行のハードウェアがこのように振る舞うとは知らなかった。
[注釈: 我々委員会はそのような実装を伝えられていた。]
適当に訳したので間違っているかもしれない。

元にしたドキュメントは、負数の時はどっちでも良かったけど、
この規格では、ゼロに向かって切り捨てますよん。ってことだと思われる。

364 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 01:01:57 ]
おぉ、すばらしい!
これで安心して負数を丸められる。



365 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 01:02:05 ]
>>362
きちんと英語版のノートでは、規格で0方向への丸めだと指摘されている。

366 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 01:49:25 ]
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main(){
string str;

fstream file;
file.open("test.txt",ios::in);
file>>str;
file.close();

int h=str.length();

cout << h<<endl;;

const char *seq1 = new char[h];

seq1=str.data();

delete[] seq1;
}

これどこか悪いですかね?実行時に強制終了になってしまう。
削っていって原因の箇所を特定したところ、delete[] seq1; の一行が悪いみたいなんですが、正直何が悪いかが理解できんのです。

bcc5.5で作業中です。







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

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

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