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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:14:51 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.46【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1198755167/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

411 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:38:58 ]
>>398
ウチではこうなった。
if文の速度 100
if無しの速度1 111
if無しの速度2 107

412 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:40:17 ]
あまりに早く終わるので N を 10 倍した
if文の速度 896
if無しの速度1 1008
if無しの速度2 1061

413 名前:407 [2008/01/24(木) 21:47:10 ]
単純な計算と比べてもほんど無視できる程度しか変わらなかったよ・・・

#include <iostream>
#include <time.h>
using namespace std;
#define N 10000
#define rd() (rand()&255)
#define rnd() rd()+(rd()<<8)+(rd()<<16)+(rd()<<24)

main(){
unsigned int *a=new unsigned int [N];
unsigned int *b=new unsigned int [N];
int n,cl,clsum[4],s=0,t=0;
for(n=0;n<4;n++)clsum[n]=0;
for(n=0;n<N;n++){ a[n]=rnd(); b[n]=rnd();}

for(int k=0;k<30000;k++){
cl=clock();for(n=0;n<N;n++)t|=a[n]&b[n]&1;clsum[3]+=clock()-cl;
cl=clock();for(n=0;n<N;n++)s+=(a[n]>UINT_MAX-b[n]);clsum[0]+=clock()-cl;
cl=clock();for(n=0;n<N;n++)s+=((a[n]>>1)+(b[n]>>1)+(a[n]&b[n]&1))>>31;clsum[1]+=clock()-cl;
cl=clock();for(n=0;n<N;n++){static unsigned int x=a[n],y=b[n];s+=((x>>1)+(y>>1)+(x&y&1))>>31;}clsum[2]+=clock()-cl;
}
cout<<"比較演算の速度 "<<clsum[0]<<endl;
cout<<"論理演算の速度1 "<<clsum[1]<<endl;
cout<<"論理演算の速度2 "<<clsum[2]<<endl;
cout<<"単純な論理演算の速度 "<<clsum[3]<<endl;
cout<<(s&t&1);
}

414 名前:407 [2008/01/24(木) 21:49:39 ]
>>412
Nはランダムの2数を確保する数なので大きくすると
純正のメモリ外に書き込まれる可能性が出てきてしまいます
増やすときは、kの繰りかえし数を上げてみて下さい

415 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:53:01 ]
>>414
ううん。微妙な結果。

if文の速度 1004
if無しの速度1 996
if無しの速度2 1112

416 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:58:55 ]
安定して正確な速度がはかれるっぽいコードです・・・スタック領域に少量確保しました わずかに論理式のほうが速いかもしれないです

#include <iostream>
#include <time.h>
using namespace std;
#define kukikaesi 300000

main(){
#define N 1000
unsigned int a[N],b[N];
int n,cl,clsum[4],s=0,t=0;
for(n=0;n<4;n++)clsum[n]=0;
for(n=0;n<N;n++){
#define rd() (rand()&255)
#define rnd() rd()+(rd()<<8)+(rd()<<16)+(rd()<<24)
a[n]=rnd(); b[n]=rnd();}

for(int k=0;k<kukikaesi;k++){
cl=clock();for(n=0;n<N;n++)t|=a[n]&b[n]&1;clsum[3]+=clock()-cl;
cl=clock();for(n=0;n<N;n++)s+=(a[n]>UINT_MAX-b[n]);clsum[0]+=clock()-cl;
cl=clock();for(n=0;n<N;n++)s+=((a[n]>>1)+(b[n]>>1)+(a[n]&b[n]&1))>>31;clsum[1]+=clock()-cl;
cl=clock();for(n=0;n<N;n++){static unsigned int x=a[n],y=b[n];s+=((x>>1)+(y>>1)+(x&y&1))>>31;}clsum[2]+=clock()-cl;
}
cout<<"比較演算の速度 "<<clsum[0]<<endl;
cout<<"論理演算の速度1 "<<clsum[1]<<endl;
cout<<"論理演算の速度2 "<<clsum[2]<<endl;
cout<<"単純な論理演算の速度 "<<clsum[3]<<endl;
cout<<(s&t&1);
}

417 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:02:21 ]
微妙すぎるのでこれにて終了します ありがとうございました

418 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:04:48 ]
>>416
VC++2008EE Debugビルド
Vista Athlon Dual 4400+ 2.31GHz
比較演算の速度 2030
論理演算の速度1 2678
論理演算の速度2 1948
単純な論理演算の速度 1817

419 名前:デフォルトの名無しさん [2008/01/24(木) 22:32:23 ]
超初心者の質問なのですが、、、

#include <iostream>
int main() {
double a = 3.55;
int n = a * 100;
std::cout << n << std::endl;
return 0;
}

これの出力が354になります。355ではなく354になるのはどうしてなのでしょうか?






420 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:40:51 ]
3.55は浮動小数点だと無限小数になって、Intに型変換すると切り捨て誤差が出る。
詳しい解説が読みたければ「浮動小数点 誤差」くらいでぐぐってみれ。

421 名前:デフォルトの名無しさん [2008/01/24(木) 22:42:28 ]
>>405

回数分足すのはさすがに重いだろ

一桁ずつ掛けて、そのあと和の繰り返しを使うんじゃないのか?
例えば112×235なら
5×112=560
3×112=336
2×112=224

560+3360+22400=26320
とか

まあ俺の力じゃプログラムは作れないけどなw

422 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:43:32 ]
>>419
VC++ 2008 では355になる。

423 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:44:31 ]
xに近い整数にするには、x +0.5を整数にすればいいのでは 変換時に切り捨てられる為

424 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:45:27 ]
>>420
a * 100 ではintの100がdoubleに昇格して計算されて結果もdoubleだろ。
355になった後でintに変換されるから関係ないと思うんだが。


425 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:46:19 ]
354.99999999999999999なら354

426 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:47:56 ]
>>425
おお、そういうことか。あくまでも近似値なんだよな。

427 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:49:05 ]
BYTE値を0.75倍し、その整数部のみを得たいのですが、
単に0.75を掛けて少数切捨てするより効率がよくて速度出る計算方法がありますかね
BYTE >> 1 のようなもの(これは1/2ですが…)があれば教えていただけませんか?

428 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:51:59 ]
>>421
それ思いっきり筆算じゃね?

>>405
先生が何させたいかさっぱりわからんのだわ。
50桁くらいならFFTとか組むより筆算で十分な速度でる。
多倍長演算なら↓みたいなアルゴリズムのサイトあるけど
さすがにそんなとこまで求めてないと思うんだよな。
poset.jp/ompa/index.html

429 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:56:19 ]
>>427
コンパイラの最適化に任せる。

整数で処理する(最適化に負けるかもしれない)
int value = 123456;
value = value * 75 / 100;

シフト演算で頑張ってみる(1/2+1/4なので)
int value = 123456;
value = value >> 1 + value >> 2





430 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:56:25 ]
>>427
(BYTE)(((WORD)x) * 3 / 4)

431 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:56:53 ]
>>427
(BYTE + BYTE << 1) >> 2

432 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:59:31 ]
(x + (x<<1)) >> 2

433 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:00:15 ]
>>429-431
おおいろいろ方法があるんですね
みなさんありがとうございます!
早速試してみますね

434 名前:デフォルトの名無しさん [2008/01/24(木) 23:02:56 ]
>>428

スマン思いっきし筆算だった


435 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:07:35 ]
1 の位 = 1 の位の積の 1 の位
10 の位 = (1 の位と 10 の位の積の 1 の位 + 1 の位の積の 10 の位) の 1 の位
100 の位 = 1 の位と 100 の位の積の 1 の位 + 10 の位の積の 1 の位 + (1 の位と 10 の位の積の 1 の位 + 1 の位の積の 10 の位) の 10 の位
   :
   :
   :

436 名前:デフォルトの名無しさん [2008/01/24(木) 23:08:23 ]
>>405
俺が思うに
お前の筆算の仕方が間違ってたんじゃないのか
筆算以外にやりようないと思うんだが

437 名前:405 [2008/01/24(木) 23:29:58 ]
先生にまた聞いたら筆算のしかたが間違ってたみたいです、、
>>421 みたいなやりかたどうやるんですか?
ぼくのだと
「112*235=560+336+224=1120」になっちゃいます

438 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:31:59 ]
桁シフトしとらんがな。
つーか、どうせならインド式実装してみたら?

439 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:34:32 ]
newで配列として確保した後、その要素数を取得する方法はありますか?



440 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:36:15 ]
基本的にはない。
つーか、大抵の場合は std::vector 使っておけば問題ない。

441 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:36:37 ]
>>439
嫌になるほど繰り返し質問されていることですが、ありません。
newなんて使わずにstd::vectorを使いましょう。

442 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:36:46 ]
ない。std::vectorでも使え。

443 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:37:56 ]
std::vector 使え!

444 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:38:18 ]
std::vector使えよ

445 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:39:02 ]
場合によっては取得できるんだが・・・
そういう事はむやみに教えると悪い影響与えそうで困る。

446 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:40:03 ]
std::vectorってなんですか?習ってないです。

447 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:40:19 ]
増やした分を保持しておけばよいが、vectorは勝手に保持するからプログラムが簡単になる

448 名前:439 mailto:sage [2008/01/24(木) 23:40:37 ]
みんなThx!ふと気になってレス見ないで書いちゃった、スマソ。。

449 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:42:03 ]
#include <vector>
using namespace std;

main(){
vector < int > a(100);
a[0]=1; a[1]=2;
}



450 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:43:36 ]
main.cpp:4: error: ISO C++ forbids declaration of ‘main’ with no type
main.cpp:4: error: ISO C++ forbids declaration of ‘main’ with no type
lipo: can't figure out the architecture type of: /var/tmp//ccLa7Foj.out
make: *** [debug/main.o] Error 1

451 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:48:58 ]
今年のカレンダー表示ってどうやるんですか?

452 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:52:00 ]
作って表示すれば?

453 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:58:43 ]
エンディアンの勉強をしてまして、色々ググってみると、例えばリトルエンディアンの場合、
0x1234abcd の値をメモリーに格納する際、下位アドレスから順に、cd ab 34 12 と入りますが、
ここで疑問なのが、1バイトの中身のビット列はどのように扱われているのか?という点です。
1バイト8bit分のデータは、エンディアンにかかわらず常に、例えば 0x12 は、00010010 のビット列
が保たれているのでしょうか?


454 名前:405 [2008/01/25(金) 00:03:17 ]
405ですが
筆算の問題、
>>421 
みたいに全部かけた後にまとめて足すってできるんですか?

それとも2桁ずつ掛け算して足してかないとむり?
例えば123*123だったら
123*3=369
123*2=246
  →369+2460=2829
123*1=123
    →2829+12300=15129

455 名前:デフォルトの名無しさん [2008/01/25(金) 00:07:35 ]
>>454
421のやりかたでできるだろ
下のだとめんどくさくないか?

よくわからんのだが

456 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:21:15 ]
>>453
エンディアンは多バイトデータの配置の種類
1バイトは関係ない(同じ内容になる)

457 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:29:57 ]
>>453
1バイトがどのように格納されていようが、
どうせ1バイト単位でしかメモリアクセスできないのだから、
違いは観測できないだろ。

458 名前:457 mailto:sage [2008/01/25(金) 00:34:10 ]
そういえば、ビットアクセス命令のあるCPUもあるか・・・

459 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:40:27 ]
1byteが12bitの環境もあるわけで



460 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:41:05 ]
環境がBCCDeveloperというものです。
hoge.txtという名前のテキストファイルを作るプログラムで
同じフォルダの中にすでにhoge.txtという名前のテキストファイルがあったら
もともとあったテキストファイルの名前をhoge1.txtとして変えて新しく作るテキストファイルを
hoge.txtとすることはできるでしょうか。
できる場合はどうしたらいいでしょうか。

461 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:45:23 ]
>>460
hoge.txtがあるかどうかを調べる
あったらファイル名を変更する
hoge.txtを作る

System("if exist ren hoge.txt hoge1.txt");っていけるのかな?

462 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:51:48 ]
>>461
すばやい回答ありがとうございました。
早速とりかかってみたいと思います。

463 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:54:52 ]
>>454
とりあえず10桁で作ってやったぞ。わからんとこあったら聞いてくれ。
#define N 10
int main( void )
{
int a[ N ] = {0,1,2,3,4,5,6,7,8,9};// 9876543210
int b[ N ] = {0,1,2,3,4,5,6,7,8,9};// 9876543210
int result[ N * 2 ] = { 0 }; // 9876543210*9876543210=97546105778997104100
for ( int i = 0; i < N; i++ ) {
for ( int j = 0; j < N; j++ ) {
result[ i + j ] += ( a[ i ] * b[ j ] );
for ( int k = i + j; k < N * 2 - 1; k++ ) {
if ( result[ k ] < 10 ) break;
result[ k + 1 ] += result[ k ] / 10;
result[ k ] %= 10;

}
}
}
for ( int i = N * 2 - 1; i >= 0; i-- ) {
printf( "%d", result[ i ] );
}
return 0;
}

464 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 01:30:19 ]
こんなかんじか

#define kosu 4

add(unsigned int *a, unsigned int *b, unsigned int *c){
int ketaagari=0;
for(int n=0; n<kosu; n++){
c[n]=a[n]+b[n]+ketaagari;
ketaagari=a[n]>UINT_MAX-b[n];
}}

seki(unsigned int *a, unsigned int *b, unsigned int *c){

}

465 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 01:34:37 ]
50桁までカウントさせるのが面倒で積は諦めた

466 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 04:44:04 ]
500メガ程度の複数のテキスト文書があるとします
これから単語の頻度を求めたいとします どのようにしたらいいでしょうか?
単語は最低4バイトのものを言います
配列でカウントできないし良い方法ありますか

467 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 04:46:06 ]
3バイトの頻度なら、int

468 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 04:49:00 ]
>>466
最低4バイトということは200Kバイトの単語がある可能性も考慮しないとだめですか?w

469 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 04:56:06 ]
>>468
厳密に求めなくて良いです 高頻度の単語が抽出出来ればいいです 1単語しかなければもとめなくていいです



470 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 05:01:15 ]
一回目で24bit列を配列でカウントして、
2回目でたとえば100回以上出現したものの後ろ10バイトずつファイルに切り出して
そのファイルごとにしらべればいいか

471 名前:デフォルトの名無しさん [2008/01/25(金) 07:23:25 ]
>>420
ありがとうございます。なので、
0.55, 1.55, 8.55 =>切り上げなので、上記現象なし
2.55 〜 7.55 =>切り下げなので、上記現象あり
なのですね。

ところで、上記質問をしてから色々調べたのですが、浮動小数点(例えばC言語のdouble)の
仮数部の丸めについて、丁度中間の場合は偶数になるように丸める、というルールが
あるらしいのですが、これは小数点の場合にどういう風に当てはまるのかわかりません。
これって二進数だと全部あてはまってしまうような気が、、、
どうなっているのでせうか


472 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 07:36:58 ]
>なのですね。
いいえ。

473 名前:デフォルトの名無しさん [2008/01/25(金) 11:27:52 ]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fileread(int,char * []);
int main(int argc ,char *argv[])
{ if(argc!=3){printf("次回から引数を入力してください\n");
return 0; }
if(!strcmp(argv[2],"r")){ fileread(argc,argv);
}
return 0;}
void fileread(int argc,char *argv[]){
FILE *fp;
char *buffer,*str,*n,*s;
fpos_t start_fpos;
int filesize,count=0;
fp=fopen(argv[1],"r");
fgetpos(fp,&start_fpos);
fseek(fp,0,SEEK_END);
filesize=ftell(fp);
fsetpos(fp,&start_fpos);
buffer=(char *)malloc(sizeof(char)*filesize);
str=(char *)malloc(sizeof(char)*1000);
printf("検索する文字列を入力してください\n");
scanf("%s",str);
while(s=fgets(buffer,filesize,fp)){
count++;
n=strstr(buffer,str);
if(n){printf("%d行目 %s",count,s) };
}
free(buffer);
fclose(fp);
}

474 名前:473 [2008/01/25(金) 11:30:38 ]
>473
csvファイル検索プログラムを作ったのですが、ファイル名にワイルドカードが使えないので
実用性にかけます。上記のプログラムにワイルドカードの組み込むにはどうすればいいでしょうか?
ただし、ファイル名はmain関数の引数で取得いたします。_findfirst,_findnextを使うところまでは
なんとなく理解しました。

475 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:34:25 ]
>>474
環境は?
場合によっては wildargs とか使える場合もある

476 名前:473 [2008/01/25(金) 11:41:30 ]
OSはCENTOS 5です。コンパイラにはgccを使っております。

477 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:56:10 ]
ワイルドカードはどんなのを?
そのままだとシェルが勝手に展開しない?

478 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:57:55 ]
>>473
またお前か。あちこちおかしなプログラムなのは相変わらずだな。
最低でも、バッファオーバフローの可能性は排除しておけよ。

479 名前:473 [2008/01/25(金) 12:20:12 ]
>>477
*.csvとかですね。
そのままでは無理でした。

>>478
その件については、なんか知らんけどプログラムができあがりました。
あらかじめ指定されている仕様でしか作ったらいけないことになっておりまして、
どのようにすればそのようにできあがるのか悩まされている次第です。
一応さきほどのプログラムは作りましたが、io.hは無いそうで、_findnextも使えないですね。
こういうときそのヘッダファイルをダウンロードしてヘッダファイルがたくさんあるところに放りこめばいけますか



480 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:37:23 ]
ヘッダだけ持ってきたって実装したライブラリが無きゃ無理だろ。
通常は、シェルが展開するんだが、、、opendir、readdir使って
正規表現で検索するとかしてみては

481 名前:473 [2008/01/25(金) 12:49:24 ]
>>480
ありがとうございます。
階層を一段間違えておりました。
普通に通りますね。よかった・・・

482 名前:デフォルトの名無しさん [2008/01/25(金) 13:31:29 ]
>>472
int main() {
double d = 3.55; // ここの数字を変更する
int n = d * 100;
cout << n << endl;
return 0;
}
でも上記プログラムでは、浮動小数点の規格上、

d = 0.55, 1.55, 8.55 =>それぞれ0.5500000....1, 1.55000...1, 8.55000...1
とかになるので、100倍しても減ったように見えたりしない。
d = 2.55, 3.55, 4.55, 5.55, 6.55, 7.55 =>それぞれ2.5499999...などとなるので、
100倍すると、(double)254.99999==>(int)254などとなってしまう。

と理解していたのですが、他の方も書いてくれてたように、Visual C++ 2008でやると
d=3.55の時、355と表示されました。(gccは354)





483 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 17:29:42 ]
VC++がx86の80ビット浮動小数点数レジスタを使い回すからかと思ったけど、
一旦64ビットでメモリに書きだすように仕向けてもやっぱり355になるな。

484 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 18:42:42 ]
関数に配列へのポインタへ渡してデータょ書いてもらう場合
std::vector buffer(1024);
hogefunc(&buffer[0]);
とかくのは違法ですか?

485 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 18:47:47 ]
確保したバッファサイズをはみ出さないのなら問題ない

486 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 19:08:51 ]
private:な物の位置調べて無理やり書き込むわけだが。

487 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 19:19:56 ]
そういうことができるように、
vectorは生の配列同様、要素の連続性が保証されている。

488 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 19:41:51 ]
ぬるぽ渡せば書かずに文字数返すくらいしてくれてもいいよな。
これみたいに。
ttp://msdn2.microsoft.com/ja-jp/library/k1f9b8cy(VS.80).aspx

489 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 20:07:37 ]
>>488
Win32APIスレの誤爆か?



490 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 20:51:13 ]
inline int nazo(void)
{
 return __LINE__;
}

呼び出すと戻ってくるのはどこのあれですか?

491 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 20:52:04 ]
そこ

492 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 20:59:02 ]
たぶん3

493 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 21:01:39 ]
__LINE__やら__FILE__やら__func__はコンパイル時に埋め込まれる

494 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 21:02:18 ]
__func__ マクロじゃなくて定数だったはず。

495 名前:デフォルトの名無しさん [2008/01/25(金) 21:09:16 ]
ik88
ectuo\
}{([8
]\@p :
dcdc
dcdcdcfvfv7qa11111111111111111111111111111111
mnbcadcfvghujk,ol9iikurf4ed333333333333333331W2E3TR4G56







496 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 21:38:01 ]
きーけぼーどのいちばんうきえらをうつと

12w3e4rgt5h6789o0:^\
!"#$G%H&'()~*=~|

とにゅうりょくされます。
こしょうですか?

497 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 21:41:14 ]
pepper

498 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 21:55:26 ]
スキンラインの短絡

499 名前:デフォルトの名無しさん [2008/01/26(土) 03:17:03 ]
APIについての質問です。
Visual C++ Express 2008で英単語印刷ソフトを作っているのですが、
ウインドウに、ネットの検索欄のような入力欄を作ることは可能でしょうか?
それを使って単語の検索機能などを追加したいのですが・・・。
もしよろしければ教授ください。



500 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 03:55:07 ]
VCスレかAPIスレ池。

501 名前:デフォルトの名無しさん [2008/01/26(土) 09:28:53 ]
>>482
gccでも、-msse2オプションをつけてコンパイルすると、355を返すバイナリを作れました。
でも、80ビットでも、52ビットでも、切り捨てになるから、どちらでも同じと思うんですが。
なんでだろう。

502 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 11:06:09 ]
>>501
>482のコードだけなら、最適化で定数は事前(≒コンパイル時)計算されるから不思議ではない。

503 名前:デフォルトの名無しさん [2008/01/26(土) 20:29:17 ]
>>502
以下のコードでも、dに3.55を入力すると、表示は354になりますが、
-msse2でコンパイルすると355になりました。

int main(int ac, char **av)
{
double d;
cin >> d;
int n = d * 100;
cout << n << endl;
return 0;
}


504 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:23:27 ]
確認のために聞きたいんです
関数テンプレートについてなんですが。

template<typename T>
void func(){
 hoge = new T();
}
func<HogeClass>();

つう書き方に、何か問題はありますか?
一応BCCでは動いてるようなんですが、
検索しても基本的に引数のために使われていて、
こういう書き方を見つけられなかったので不安なんですが。

505 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:31:16 ]
>>504
全然問題ない。それができないならテンプレートの魅力が半減ですよ。

506 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:48:00 ]
>>505
どうもです。こういう使い方はやっぱり便利なんですね。
でも、混乱もしそう。使いこなせるよう精進します。

507 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:59:43 ]
>>503
手元のgccだとそのコードでも355になるよ。354になるときの値をprintf("%.20g", d * 100)で出してみて。

508 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 03:55:57 ]
C++ で、perl の Data::Dumper みたいなことするのがあれば
教えてください。

509 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 04:19:52 ]
テキストファイルをchar型に読み込んだ場合って改行があったら\nもちゃんと格納されるの?



510 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 04:20:23 ]
読み込みかたによる。

511 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 04:34:30 ]
ありがとう。読み方によるのね
できれば\nが格納される読み方の例教えていただきたい






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

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

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