C言語のことは漏れらに聞け!!<40>
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGC 言語じゃないなら訊くな。
問題をちゃんと切り分けて、C の話かそうでないか洗ってから質問してくれ。
つーか訊く前に Web で検索しろ。
コンパイラ探してるなら >>2 を見れ。
GUI とか、C 標準でできない事の質問は使ってる開発環境のスレに逝ってくれ。
ソース丸投は別スレがあるから他に逝ってくれ。
宿題は別スレがあるから他に逝ってくれ。
書籍については別スレがあるから他に逝ってくれ。
・前スレ <39>
http://pc3.2ch.net/test/read.cgi/tech/1036409391/
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/
0002デフォルトの名無しさん
NGNGgcc
http://gcc.gnu.org/
【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/
【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
0003デフォルトの名無しさん
NGNGおつ
0004デフォルトの名無しさん
NGNG\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,,
/三√ ゚Д゚) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/
//三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
∪ ∪ ( ) ( ) ( ) )
,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
,,、,、,,, ( ) ( ) ( ) ( )
http://big.freett.com/scheme_a/num1000.swf
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNGとするのが礼儀であろう・・・。
0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGmallocとかreallocとかの
allocってどういう意味?
辞書にものってない・・・
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNGreallocate
0012デフォルトの名無しさん
NGNGありあとう
0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGおつかれ
でもスレッドタイトルもうちょっとひねれなかったの?
0016デフォルトの名無しさん
NGNG00171
NGNG0018デフォルトの名無しさん
NGNG0019前スレ944
NGNG0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNGすんません。
CでSJIS⇔UNICODEの変換ツールを作る予定だったもんで。
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNGint i;
for(i = 0;i < 32;i++) {
if(a & (1 << i))
printf("1");
else
printf("0");
}
どうもうまくいきません。何がわるいんでしょうか?
0026デフォルトの名無しさん
NGNG数字を2進で表示するつもりです、とか何をするつもりで、
どううまく行かないかくらいかけよ。
0027デフォルトの名無しさん
NGNGint i=32;
for(;i--;) {
if(a & (1 << i))
putchar('1');
else
putchar('0');
}
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG外字領域じゃないんで、「内字」でもいいんじゃないですか?
0030デフォルトの名無しさん
NGNG外人の反対を内人と言わないだろ。
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNGこういうレベルから全部、人にいちいち聞いて、
sjis、unicodeの変換ツールを作るつもりなのかい。
すげーな。
0034デフォルトの名無しさん
NGNGこんなもんが出てきちゃったYO!
■C:\Documents and Settings\C\Pointer> bcc32 list4-8.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
list4-8.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_read_line' が未解決(C:\DOCUMENTS AND SETTINGS\C\POINTER\LIST4-8.OBJ が参照)
間違いなく、同じフォルダにあるYO!
read_line.cも.hもあるYO!
WHY???
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNGビットが逆順で出るって事か。
if(a & (1 << (31 - i)))
だろ。
0037デフォルトの名無しさん
NGNGやらなきゃいけないんで。
参考になるサイトとかあったら教えてください。
0038デフォルトの名無しさん
NGNGヘッダーファイルの問題じゃない。
0039デフォルトの名無しさん
NGNGint i=1<<31;
for(;i;i>>=1) {
if(a & i)
putchar('1');
else
putchar('0');
}
0040デフォルトの名無しさん
NGNGWideCharToMultiByte と MultiByteToWideChar で検索しろ。
0041デフォルトの名無しさん
NGNGサンクス
もしかしていちいちこれやんなきゃだめ?
0042デフォルトの名無しさん
NGNGread_line.c も同時にコンパイルしる。
0043デフォルトの名無しさん
NGNGCBar で検索しる。
0044デフォルトの名無しさん
NGNGありが�d
0045デフォルトの名無しさん
NGNGMAKE使えるようになれば解決するぞ
0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNGクワッパ
0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNGhttp://www.i-chubu.ne.jp/~tomomi-h/marion/navi/navi.cgi?links=20311
0050デフォルトの名無しさん
NGNGh t p:/ / w.i-chubu e. -h/marion
.n vi
jp/~tom o mi / na gi?lin
vi.c ks=20
彡 311
(,,ノ゚д゚)ノ
0051デフォルトの名無しさん
NGNGよくポインタを理解したら中級レベルと言いますが、
特定の分野に依存しないところで、
上級レベル、って言うとどんなものがあるのでしょうか?
最近いい気になってる俺を打ちのめしてください。
0052デフォルトの名無しさん
NGNG実行する。無限ループを作りたい場合は条件式に0を入れれば良い。
これって正しい?
0053デフォルトの名無しさん
NGNGmain(){
int i , j ;
i=kazu(3);
j=kazu(1+4);
printf("%d\n",i);
printf("%d\n",j);
}
されにこのマクロ終わんなくない?
0054デフォルトの名無しさん
NGNGマゾでつか?
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNGオレはぶちのめされた
7行でオセロできてたYO!
0058デフォルトの名無しさん
NGNGだよね?
これやってみ
http://village.infoweb.ne.jp/~fwnt6934/something/html/q-c3/q-c3.htm
0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNGなぜ?
てか>>58のサイトひどいね
0062デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNG問3(2)、0 でも 1 でも正解で、2以上の数値 と -1 で不正解なのは意味不明。
>>60
最適化がかかれば 2 つに違いは無い。
最適化されない場合、for(;;) が無条件でループするのに対して while(1) は
毎回 1 を評価する。
0065デフォルトの名無しさん
NGNGえーと、
signalは、返却値なしで引数intの関数へのポインタを返す関数で、
引数はintと、返却値なしで引数intの関数へのポインタの二つある!
キタ━(・∀・)━!
0066デフォルトの名無しさん
NGNG0正解?
間違いだろw
Cの真と偽の定義知ってる?
0068デフォルトの名無しさん
NGNG前橋・・・
0069デフォルトの名無しさん
NGNG返り値の型がvoidなのは、返却値なしとゆーより、
返却値はどう使ってもい〜よ〜だと思っていたが、違うかな?
void *とごっちゃになってるかな?俺。
0070デフォルトの名無しさん
NGNGでもvoid kansu(void)とかでreturnすると
警告でない?使えないんでない?
てかvoid*ってなんだ?
0071デフォルトの名無しさん
NGNGは使える。
0072デフォルトの名無しさん
NGNG間違い。voidを返す関数というのは何も返さない。
使おうと思っても何も返ってこないのだから使いようがない。
0074デフォルトの名無しさん
NGNGchar array[5][5];
上記のarrayの型を引数としてarrayの型を返すような関数ポインタfuncpを定義したい。
どうすれば良いか?
0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNGA: int 型の signum
B: int 型の引数を 1 つ取る void* 型関数へのポインタ型の sighandler
C: int 型の引数を 1 つ取る void* 型関数へのポインタ
引数 A、B を取り、C を返す関数 signal のプロトタイプ
変数なんか宣言されてる?
0077デフォルトの名無しさん
NGNGってわかる?
0078デフォルトの名無しさん
NGNGされてるが…。
0079デフォルトの名無しさん
NGNG俺もそう思った。0以外はみんな正解じゃん。
〜以外を入れるという問題かと思って見直しちゃったよ。もしそうなら0が正解だから。
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNG仮引数の間違いじゃないのか?
教えてくれ。
変数が定義されているなら、62 のユーザー定義識別子のどれかから sizeof が
取れるはずだが、コンパイルエラーになるのは何故だ?
C++ だが、76 の則って
void (*signal(int signum, void (*sighandler)(int)))(int);
typedef int A;
typedef void (*B)(int);
typedef void (*C)(int);
C signal2(A, B);
とした場合、
cout << "signal : " << typeid(signal ).name() << endl;
cout << "signal2: " << typeid(signal2).name() << endl;
この 2 行は全く同じ結果になる。
>>77
76 の B。
0082デフォルトの名無しさん
NGNG> while文はループの制御を制御する文で判定に使う式が真である間、ブロック・文・空文を繰り返し
> 実行する。無限ループを作りたい場合は条件式に"0を入れれば良い"。
ハァ?
0083デフォルトの名無しさん
NGNGintをひとつ取り、値を返さない関数へのポインタsighandlerじゃないの?
0085デフォルトの名無しさん
NGNG上のポインタ型を返す関数(引数はint)
int *(*(*ppf)(int))(int);
上のポインタ型を返す関数(引数はint)
int *(*(*(*pppf)(int))(int))(int);
上のポインタ型を返す関数(引数は上のポインタ)の配列(サイズは10)
int *(*(*(*(ppppf[10])(int))(int))(int))(int *(*(*(*)(int))(int))(int));
008684
NGNG008762
NGNGこう書けばよかったね。
void (*(*signal)(int signum, void(*sighandler(int))))(int);
0088デフォルトの名無しさん
NGNG二番目は関数ポインタ(?)を返す関数へのポインタと考えればいいのか?
0089デフォルトの名無しさん
NGNGint *(*(*(*(*ppppf)(int *(*(*(*)(int))(int))(int)))(int))(int))(int);
0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNGchar array[][5]でいいと思う。
0094デフォルトの名無しさん
NGNGするにしても、難読になってくる前に typedef すると思うんだけど。
85-89 みたいなコードを生で書いてる(書く方針の) 人っている?
0095デフォルトの名無しさん
NGNG74 を見る限り、引数は char array[5][5] でいいだろう。
0096デフォルトの名無しさん
NGNG009785
NGNG正しくは、「上のポインタ型を返す関数(引数はint)へのポインタ」だな。
しかも間違ってるし。>>91thanks
>>94
ふつうはせいぜい関数ポインタを返す関数までだな。
それでもtypedefする。
まあ、パズルというか言葉遊びということで。
0098デフォルトの名無しさん
NGNG2つの浮動小数点の値が"十分近い"ことを判定するよい方法は。
http://www.catnet.ne.jp/kouno/c_faq/c14.html#5
を見て思ったんですが、精度の敷居ってどういう事でしょうか?
epsilonをどのように選べばよいのかわかりません。
0099デフォルトの名無しさん
NGNG関数テーブル
int Hoge(int a) { return a + 1; }
int Huge(int a) { return a + 2; }
int Hage(int a) { return a + 3; }
int (*funcs(const char *funcname))(int)
{
if(!strcmp(funcname, "Hoge")) return Hoge;
if(!strcmp(funcname, "Huge")) return Huge;
return Hage;
}
0100デフォルトの名無しさん
NGNG0.00000001でよかったらそれでいい。
0101デフォルトの名無しさん
NGNG<float.h> の DBL_EPSILON や FLT_EPSILON でも使ったら?
漏れもよくわからない。
<float.h> はいろんな定数が定義されてるよ。
0102デフォルトの名無しさん
NGNGif(!strcmp(funcname, "Hoge")) return Hoge(a);
if(!strcmp(funcname, "Huge")) return Huge(a);
return Hage(a);
}
0103デフォルトの名無しさん
NGNG精度は型によって違うから。(固定or浮動小数,バイト数)
0104751
NGNGif(abs(ep_dash))...
とかは?
0106デフォルトの名無しさん
NGNG呼び出しが必要なたびに strcmp() 走らせるの?
>>103
>>98
> 浮動小数点の値が
0107751←関係無し
NGNGif(abs(ep_dash)<0.0001)...
「104の訂正」
めちゃ解り辛いな
0108751
NGNG751という数字がという事だ。悪いな何度も
0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNG関数テーブルって言うなら
funclist[]={Hoge,Hage,Huga};じゃね?
俺ならenum,switch使うな。
文字列比較なんてたるくてやってられね〜。
0113デフォルトの名無しさん
NGNG3時間で100か・・・
このペースだと3日もたない・・・
0114デフォルトの名無しさん
NGNGあっ、a,bが負の場合違うでしょ、それ。
足し算の方は絶対値取らなくていいべさ。
0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG軽いとは言えないが不要な処理はしないはず。
ところで、何かと比較して言ってるの?
0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNGコンパイル不能!こんなエラーが
Microsoft (R) KKCFUNC バージョン 1.10
Copyright (C) Microsoft Corp. 1991,1993. All rights reserved.
KKCFUNC が組み込まれました.
マイクロソフトかな漢字変換 バージョン 2.51
(C)Copyright Microsoft Corp. 1992-1993
かな漢字変換は組み込まれませんでした.
MSIMEK.SYSが登録されていません.
コマンドまたはファイル名が違います.
C:\DOCUME~1\C\PROJECTS\>
意味が不明・・・
0119デフォルトの名無しさん
NGNGして
malloc
しなおす
のに比べて
0120デフォルトの名無しさん
NGNGmallocしてコピーして元の領域をfreeの間違いか?
0121デフォルトの名無しさん
NGNG全部消えちゃう
0122デフォルトの名無しさん
NGNG元の英語はthreshold(閾値、しきい値)だね。
「これ以下なら近い」等と判断する境界値の事。
>>98
わかんなかったらとりあえず#include <float.h>して
FLT_EPSILON使ってれば?
0123デフォルトの名無しさん
NGNG関数呼び出しのオーバーヘッド位しか差は無いんじゃない?
0124デフォルトの名無しさん
NGNGreallocは通常、元の領域をいじるだけだと思うんだがどうだろう?
あくまでも通常ね。
0126デフォルトの名無しさん
NGNGVCではHeapReAlloc使ってるね。
ヒープのサイズ変更ができないOSでも、CRTが一気に確保して管理してる
処理系だと速い場合もあるかな。
0127デフォルトの名無しさん
NGNG> コマンドまたはファイル名が違います.
という事は、環境設定で何か間違ってないか?
あと
> Microsoft (R) KKCFUNC バージョン 1.10
> Copyright (C) Microsoft Corp. 1991,1993. All rights reserved.
>
> KKCFUNC が組み込まれました.
>
> マイクロソフトかな漢字変換 バージョン 2.51
> (C)Copyright Microsoft Corp. 1992-1993
は 16ビットコンソールアプリ蹴った時にいつもでるからいいんだけど、
> MSIMEK.SYSが登録されていません.
初めて見た。
何か Windows そのものがおかしくないか?
0128127
NGNG追加。
16 ビットコンソールアプリが走ってるのも何かおかしい。
利用 OS は NT 系に設定してある?
0129デフォルトの名無しさん
NGNGすんげー遅レスじゃないかや?
0130困ったさん
NGNG読み込んで、それに行番号をつけて標準出力の出力するプログラム、誰かお
願い!!
0131デフォルトの名無しさん
NGNG0132困ったさん
NGNG思うんですが。。。難しいことはわかりません。。
0133デフォルトの名無しさん
NGNGnl -ba < file.txt
0134困ったさん
NGNG0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNG#define LBUFLEN 1025
/* 一行の最大長+1 */
int main(){
int line;
char buf[LBUFLEN];
for(line=0;;line++){
printf("%06d ",line);
if(!fgets(buf,sizeof buf,stdin))
break;
printf("%s",buf);
}
printf("%s",buf);
return 0;
}
テストしていない。
0137困ったさん
NGNGもらえそうになかったんで。。
0138136
NGNGスマソ
0139136
NGNGfgetsの仕様を勘違いしたかも。
forを抜けたあとのprintfはいらないな。
0140デフォルトの名無しさん
NGNG0141困ったさん
NGNG0142136
NGNGなにやってんだろ俺。
0143デフォルトの名無しさん
NGNGint main() {
int c, line=1, newline=1;
while ((c=getchar()) != EOF) {
if (newline) {printf("%06d", line++); newline=0};
putchar(c);
if (c == '\n') newline=1;
}
return 0;
}
0144デフォルトの名無しさん
NGNGDoSomething:好きだったが教えて君でこの記法を使ってくる奴が目につき嫌いになった。
doSomething:使わないが嫌いでは無い。
prefix_do_something_preposition_something_sufix
0145デフォルトの名無しさん
NGNGint main(void)
{
int t[]={5,9,18};
int *ptr;
ptr = t;
printf("adress=%p\n",ptr);
printf("adress=%p value=%d",ptr,*ptr++);
return 0;
}
これの実行結果が
adress=0012FF80
adress=0012FF84 value=5
こうなったんですが、
なぜadressがインクリメントされてvalueはそのままなんでしょうか?
教えてくださいTT
0146デフォルトの名無しさん
NGNGprintf("adress=%p value=%d",ptr,*ptr);
ptr++;
と同じ。
printf("adress=%p value=%d",ptr,*++ptr);
printf("adress=%p value=%d",ptr,++*ptr);
の違いはわかるかな。
0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNGprintf("adress=%p value=%d",ptr,*++ptr);だと
ptrをインクリメントしてから値参照、よってaddress=0012ff80 value=9
printf("adress=%p value=%d",ptr,++*ptr);だと
*ptrをインクリメントするからaddress=0012ff80 value=6
になると思う。
printf("adress=%p value=%d",ptr,*ptr);
ptr++;
だと実行結果の2行目adress=0012ff84にならないと思うんですが?
0149デフォルトの名無しさん
NGNG*++ptrこういう書き方はあまり好きじゃない。。^^;
0150デフォルトの名無しさん
NGNGprintf("adress=%p value=%d",ptr,*ptr);
ptr++;
ではない。
関数の評価順は規格で決まっていない。
ptr++は評価した後に増やす。
0151デフォルトの名無しさん
NGNGprintf("adress=%p value=%d",ptr,*ptr++);実行時に
adress=%pのところはptr つまり0012ff80が表示されると
思うんですがなぜ0012ff84になってるんでしょうか?
0152デフォルトの名無しさん
NGNGだから>>150が書いてるじゃん。
printf()を呼ぶ際に3つの引数を評価するわけだが、その順番は規格では
決まってない。
printf("adress=%p value=%d",ptr,*ptr++);
は、内部的には
a = "adress=%p value=%d";
b = ptr;
c = *ptr++;
printf(a, b, c);
でも
c = *ptr++;
b = ptr;
a = "adress=%p value=%d";
printf(a, b, c);
でも、どちらの処理でもいいことになってる。
後者だったとしたら、なぜ>>151のような結果になるか理解できるでしょ?
実際、引数をスタック渡しするCPUでは逆順に積むのが普通なので、多くの
環境で後者のような処理になる。もちろん前者でやるのも規格上問題ないので、
「引数は後ろから順に評価される」という仮定もやっちゃだめ。
0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNG遅レスだが・・・。
VC++のmalloc()系はHeapAlloc()系APIも使ってはいるが、
それは要求されたサイズが一定以上大きい場合だけだったはず。
通常はVirtualAlloc()系で確保したものを細切れにして返してくる。
malloc()系の方がHeapAlloc()系より遥かに高速だよ。
0155118
NGNGMSIMEK.SYSってたぶん、CONFIGなんとかってファイルに書く奴でない?
前に猫を見てた時に、エスケープシーケンスが出来なかったから
なんか付け足した気がする・・・。ちなみにXPだす。
システムそのものがおかしいって言われたから不安になったんだけど、
誰かこのエラーの意味わかる?
分からんかったらどの板行ったらいいかな?
0156デフォルトの名無しさん
NGNG微分て微分方程式?
高校のやつ?
0157デフォルトの名無しさん
NGNGを作って表示させるにはどうしたらいいですか?
例えば、 ファイル→プロパティー でモードレスダイアログが出てくる感じにしたいんですけど。。
0158デフォルトの名無しさん
NGNG>>1
0159デフォルトの名無しさん
NGNGはい、そうです。正確には偏微分です。
こんな感じです。
fx= ∂f / ∂x
0160デフォルトの名無しさん
NGNG・精度を考える。(精度次第で数値の扱い、ひいては速さを必要とする場合の
アルゴリズムに影響される。)
0162デフォルトの名無しさん
NGNG誤訳じゃなくて誤変換だろ。
そういえばぼーよー.comには定義城(定義域の間違い)ってのがあったな。OCRでも使っているのかな。
0163デフォルトの名無しさん
NGNGもう一回ファイルの先頭から読み直すのはどうやるんですか?
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNGrewind()
0166デフォルトの名無しさん
NGNGVisual C++でビルドしたプログラムはWin9X上で動かないって事ですか?
あと、スレの最初にかかれてる問題って何なのでしょうか?
0167デフォルトの名無しさん
NGNGこの決定理由は、Microsoft Visual Studio 環境で利用できる
最先端のプラットフォーム機能の恩恵を開発者が
確実に受けられるようにするためです。
コードの実行については、Windows 98 以降の
上位オペレーティング システムでサポートされる予定です。
というところまでは探せたのですが・・・、
他の問題というのがいまいちわからずじまいで・・・。
0168デフォルトの名無しさん
NGNGありがとうございます。無事ファイルが読み込まれました!!
これでレポートがはかどります
0169デフォルトの名無しさん
NGNGC/C++ の前に日本語は大丈夫?
> スレの最初にかかれてる問題
あなたの抱えている疑問、質問などの事。この場合は ↓
> Visual C++でビルドしたプログラムはWin9X上で動かないって事ですか?
で、これは C の話だと思う? 思わない?
0170デフォルトの名無しさん
NGNGをintの変数に代入する場合はどのようにしたらいいのでしょうか?
int cnt = (int)buf;
と無理やりしてみたのですが、だめなようでした・・
0171デフォルトの名無しさん
NGNGまず buf の宣言を見せれ。
あと、「buf[0]-buf[3]」 は buf[0] から buf[3] を減算した結果と解釈して
よろしいか?
0172デフォルトの名無しさん
NGNGとある本を参照しながら勉強してるんですが、
いままで関数は main関数内で宣言してたんですが,なぜか違う演習だとヘッダ部分で関数を宣言してるんです。
この違いはいったい何なんですか?
0173デフォルトの名無しさん
NGNGmain関数内ではなく、main関数と同じcソースの中で、だよね?
staticな関数ならそれを使用するコンパイル単位のcソースの中で宣言するけど、
そこら中から参照できる関数は、共通のヘッダファイルで宣言するのがセオリー。
コンパイルの精度を上げるためにね。
0174デフォルトの名無しさん
NGNG> 関数は main関数内で宣言
main() の中でプロトタイプ書いてるって?
それ C++ じゃないとできないぞ。
正確には main() 関数が書いてあるのと同じファイル内、じゃないの?
0175デフォルトの名無しさん
NGNG#include <stdio.h>
int main() {
int hoge(int x);
printf("%d\n", hoge(3));
return 0;
}
int hoge(int x) {
return x * x;
}
0176デフォルトの名無しさん
NGNG普通はしないよね。そんなこと。
172 はどこでそんなこと習ったんだ?
0177デフォルトの名無しさん
NGNGとか書いてあったんだけど、どういう意味ですか?
ま、まさか・・・
0178デフォルトの名無しさん
NGNGそうです、それと
#include <stdio.h>
int hoge(int x);
int main() {
printf("%d\n", hoge(3));
return 0;
}
int hoge(int x) {
return x * x;
}
の違いを知りたいんです。
0179デフォルトの名無しさん
NGNGって具体的に何?
0180デフォルトの名無しさん
NGNG・・・角度かも知れないけど。
0181デフォルトの名無しさん
NGNGC++なら、
#include <stdio.h>
int main() {
int hoge(int x);
printf("%d\n", hoge(3)); //合法
return 0;
}
int hage()
{ return hoge(3)*hoge(3);// えらー
}
int hoge(int x) {
return x * x;
}
の違いがある。Cでは、そもそも「非標準の拡張機能」らしいので知らん
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG175 のソースは C じゃできない。C++。
(もしかしたら実際にコンパイル通るかも知れないけどそれはコンパイラ独自の拡張機能)
C では 178 の書き方しかあり得ない。
0184デフォルトの名無しさん
NGNG宣言なしの時に戻り値や引数がint扱いになっちゃうとかじゃない?
想像だけど・・・。
0185173
NGNGん?共通で使用する関数をヘッダファイルで宣言しておけば、
複数のコンパイル単位(cソース)をまとめてコンパイルしたときに
コンパイラが人間側の関数使用時のミスを捕捉しエラーにしてくれるよね?
すなわち「コンパイルが通ったときのPGの完成度」が上がるわけで、
これを「コンパイルの精度」と言ったのだが?
0186デフォルトの名無しさん
NGNGすごい国語力ですね
0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNG#include <stdio.h>
main()
{
int test();
printf("%d\n",test(3));
}
int test(x)
int x;
{
return x*x;
}
これってCではダメなんですか?
LCIC-86試食版ではコンパイルできたんですが。
0189デフォルトの名無しさん
NGNG関数へのポインタの簡易記述のような気がしてきた今日この頃。
0190デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
0191デフォルトの名無しさん
NGNGmain(){
printf("%d\n",test(3));
}
int test(x)
int x;{
return x*x;
}
}
0192デフォルトの名無しさん
NGNG> (もしかしたら実際にコンパイル通るかも知れないけどそれはコンパイラ独自の拡張機能)
0193デフォルトの名無しさん
NGNGまぁそれをコンパイルの精度と呼ぶのかどうかは別として〜だ。
たしかにそれを追求していったのが最近の言語の流れだろうな。
でもそれって精度って言うのか?よく分からん。俺が馬鹿なだけか?
0194デフォルトの名無しさん
NGNGインナー関数は C++ でも書けない。
0195デフォルトの名無しさん
NGNG「コンパイルの精度」 なんて言われたら普通コンパイラの挙動が正確かどうか
という事を思い浮かべるぞ。
オレ語は使うな。
173 の文脈じゃあ 185 の内容は普通考えつかない。
0196デフォルトの名無しさん
NGNGつーか括弧の対応が取れてない。
0197デフォルトの名無しさん
NGNGうーん、ほんとにCではだめで独自拡張にあたるんだろうか。
関数宣言も変数宣言も宣言の一種であって、ブロックの先頭ではそのブロック内
スコープとなる宣言ができるから、Cでも問題ないような気がするんだけど、
私が規格を読みきれていない可能性もあるので、今一つ自信がない。
>>183では断言してるから、 きっと根拠があるんだろうけど…。
0198デフォルトの名無しさん
NGNG括弧の対応が取れていないが、一番最後の括弧が余計だとすると、これは
ANSI以前の古いプロトタイプ宣言なのでは?
0199デフォルトの名無しさん
NGNGオレはなんとなくはわかった。
というか、共通ヘッダファイルの役割から、
推測しちゃったのかもしれんけど。
少なくとも >>172 に対して使う言葉じゃねーな。
0200172
NGNG0201デフォルトの名無しさん
NGNG0202197
NGNG順しか許されてないから、例えば
int main() {
printf("start\n");
int hoge(int x);
printf("%d\n", hoge(3));
return 0;
}
こんなのがC++では通ってCではダメ、というのは分かるんですよ。
でも>>175のケースなら、Cでも文法的な問題はないと思うんだけど…。
0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNGmallocのエラーチェックをする関数を作って使えとか、そんなんじゃない?
0205デフォルトの名無しさん
NGNGCの場合結局エラーチェックをする関数からのエラーも見なきゃならんわけで……
(いきなりassertとかじゃないね?)
どっちかって言うとcallocの簡易版みたいな奴とかmallocとreallocを統合した版かなぁ
とか思いました。違うかな?
0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNGmalloc()を元にして、例えば
void *d_malloc(size_t size)
{
void *p;
if ((p = malloc(size)) == NULL) { printf("もうダメぽ\n"); exit(1); }
return p;
}
こんなのを作ったりすること、でいいのかな?
ここで、d_malloc()はmalloc()のラッパー関数だとか言うよね?
0208デフォルトの名無しさん
NGNGcl -W4をつけると、
>warning C4210: 非標準の拡張機能が使用されています : 関数にはファイル スコー
>プが与えられています。
ってちゃんと指摘してくれる。
0209デフォルトの名無しさん
NGNG{
#include <stdio.h>
#include <stdlib.h>
void *p= malloc(size);
if (!p) { fputs("皮かぶせますた\n", stderr); exit(1); }
return p;
}
0210デフォルトの名無しさん
NGNGそれは標準なのか?
0212デフォルトの名無しさん
NGNG関数の中で#include使ったらマズーではない?
0213デフォルトの名無しさん
NGNGネタだろ。
0214183
NGNGでももしかしたら可かも知れない。
ANSI 規格書持ってる人居ない?
ちなみに 209 は可。
プリプロセッサはテキストマクロだから C/++ の 文意に関わらずどこに出現
してもいい。
0215デフォルトの名無しさん
NGNGint hoge( short* a, short b )
引数
short* a 加算先
short b 加算数
戻値0 正常
1 加算でオーバーフロー
…という問題が出されたんですけど、わかりません。
0217215
NGNG#include<stdlib.h>
short *wk;
int hoge( short *a, short b );
int hoge( short *a, short b )
{
int c=0;
printf("%d",wk);
if(abs((long)a+ (long)b)>0x7fffL)return(1);
elsereturn(0);
}
void main(void)
{
short b;
while(!(hoge(wk,b)))
{
rewind(stdin);
printf("input num... >");
scanf("%d",&b);
printf("%d\n",hoge(wk,b));
}
}
なんとかここまでできたんですけど、どなたか助けていただけませんか?
0218デフォルトの名無しさん
NGNG堅持してくださいお願いします。
0219デフォルトの名無しさん
NGNGいや、#include自体はソースのどこにあっても問題はないんだけど、
そのヘッダファイルの中身が問題で。
もしヘッダでinline関数の定義とかがあったらアウトですよ。
(Linuxなんかじゃ実際多用してるし)
0220デフォルトの名無しさん
NGNG1 を見てから書いたか?
0223197
NGNGANSIじゃなくてJIS X3010の文面だけど、見つけたよ!
やっぱり規格の読みが足りなかったか。
6.5.1 記憶域クラス指定子 で、
「関数を表す識別子がブロック有効範囲をもって宣言される場合、extern以外の
明示的な記憶域クラス指定子をもってはならない。」
という文があった。ということで、>>175は文法違反だったのか。
関数内でexternでプロトタイプ宣言をやることはあるから、文法的にいけると
思ってたんだけど、こんなところに例外があったとはね。勉強になった。
0224197
NGNG『明示的な』記憶域クラス指定子をもってはならない、ということは、
たとえば関数の中でstatic関数のプロトタイプ宣言をやるのはだめだが、
>>175は記憶域クラスは指定されてないから、可ということにならないか?
こうなるとANSIの原文を参照したくなるが…(持ってないけど)。
0225デフォルトの名無しさん
NGNGa=a/2と
a/=2って同じだよね!?
0226デフォルトの名無しさん
NGNG字面が違います。
やってることは同じです。
ちなみに
a>>=1
も(ある条件を満たせば)同じ意味になりますが、こういう書き方はやめましょう。
0227デフォルトの名無しさん
NGNGint tmp=*a;*a=*a/*b;*b=tmp;
}
0228デフォルトの名無しさん
NGNG使ってあるソースコードをコンパイルしようとしたら
「ファイル windows.h がオープンできない (No such file or directory)」
と出てコンパイルできないのですがどうすればよいですか?
0229デフォルトの名無しさん
NGNG日本語の勉強をしてください
0230デフォルトの名無しさん
NGNG字面は違う?あたりまえじゃん
やってることは同じだべ?
じゃあさ、a=a/2ってとこをa/=2って変えたら
バグ起きる場合ってある?
0231デフォルトの名無しさん
NGNGつうか、ふつうに C の文法なんだが...
知らなかったのか?
0233デフォルトの名無しさん
NGNGコンパイラにも拠るが、出力されるアセンブラコードが違うことはあるよ。
どっちも結果的な動作は同じなのでバグは発生しないはずだが。
基本的に a /= 2 と書いたほうが速いまたは変わらないはず、
なのだが俺は分かりやすいほうがいいと思うので a = a / 2 派。
0234デフォルトの名無しさん
NGNGは
c=a/=2;
にはできなったとおもいます。
0235デフォルトの名無しさん
NGNGプ(w
0236デフォルトの名無しさん
NGNG日本語喋れやザルが
0237デフォルトの名無しさん
NGNG0238225
NGNGだよね!やべーよ!このソース!
#include <stdio.h>
int main(void)
{
unsigned long a,k,k_max=0,y,y_max=0;
unsigned long data[99];
for(y=1;y<=100;y++){
a=y;
k=0;
while(a>1){
if(a%2==0){
a=a/2;
k++;
}
else{
a=a*3+1;
k++;
}
}
data[y-1]=k;
}
0239225
NGNGa=y;
k=0;
while(a>1){
if(a<=100){
k+=data[a-1];
break;
}
if(a%2==0)
{
a=a/2;
k++;
}
else
{
a=a*3+1;
k++;
}
}
if(k>k_max)
{
k_max=k;
y_max=y;
}
}
printf("対象値が%dのとき計算回数の最大値は%dです。\n",y_max,k_max);
return(0);
}
0240225
NGNG繰り返した回数をkとして1〜1000000までのkの最大値とそのときのyをだすプログラムで
『1〜100までの結果を配列に蓄え、以降の計算に利用する』ってやつ
a=a/2をa/=2に変えると、おかしな結果になる!
なんで!!!すごくない!?
0241デフォルトの名無しさん
NGNGこいつは ++i と書かずに i = i + 1 とか書いてるのか?
0242デフォルトの名無しさん
NGNGならないが
0243225
NGNGオレはなるぞおおお
なんでだああああ
0244デフォルトの名無しさん
NGNGほんとに a = a / 2 を a /= 2 に変えただけ?
a = a * 3 + 1 を a *= 3 + 1 にしちゃったりしてないよね?
0245デフォルトの名無しさん
NGNGint *foo() { static int bar, *p=&bar; return p++; }
0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
0249デフォルトの名無しさん
NGNG全く変わりませんが
0250デフォルトの名無しさん
NGNG次はもっと面白いのにしてね>>248
0251デフォルトの名無しさん
NGNG0252デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNGchar *foo (void) {
static char s[] = "hohohohoho";
return s;
}
0255デフォルトの名無しさん
NGNGとりあえず、入門書を一冊読んで、理解してから質問してください。
0256253
NGNG0257デフォルトの名無しさん
NGNGwhile (s = strchr(s, a))
memmove(s, s+1, strlen(s));
}
0258デフォルトの名無しさん
NGNGchar *s = str, *d = str, *l;
while ( (l = strchr(s, 'a')) != NULL ) {
*l = '\0';
while ( *s ) *d++ = *s++;
s++;
}
return d;
}
0259225
NGNGこれがa=a/2のとき
対象値が837799のとき計算回数の最大値は524です。
-- Press any key to exit (Input "c" to continue) --
これがa/=2の時
対象値が992425のとき計算回数の最大値は992600です。
-- Press any key to exit (Input "c" to continue) --
ちなみにマジレスだから!みんな変わんないって事はオレだけ!?
だれか変わった人いねーーがーー
0260デフォルトの名無しさん
NGNGchar *t = s;
while (*s) {
while (*t == a) t++;
*s++ = *t++;
}
}
0261デフォルトの名無しさん
NGNG#include <stdio.h>
int main(void){
unsigned long a, k, k_max=0, y, y_max=0, data[100];
for (y=1; y<=100; y++)
for (a = y, data[y] = 0; a > 1; data[y]++)
if (a % 2 == 0) a /= 2;
else a = a * 3 + 1;
for (y = 101; y < 1000000; y++) {
for (a = y, k = 0; a > 100; k++)
if (a % 2 == 0) a /= 2;
else a = a * 3 + 1;
k += data[a];
if (k > k_max) { k_max = k; y_max = y;}
}
printf("対象値が%dのとき計算回数の最大値は%dです。\n",y_max,k_max);
return 0;
}
0262デフォルトの名無しさん
NGNG>>252
>>260
えらー
0263デフォルトの名無しさん
NGNGchar *t = s;
do {
while (*t == a) t++;
} while (*s++ = *t++);
}
0264253
NGNG0265デフォルトの名無しさん
NGNGもしや板違い?
0266匿名希望
NGNGint scan_uint(void){
int tmp;
do{
printf("非負の整数を入力して下さい:"); scanf("%d",&tmp);
}while(tmp<0);
return (tmp);
}
int rev_int(int){
int tmp=0;
if(num>0){
do{
tmp=tmp*10+num%10;
num/=10;
}while(num>0);
}
return (tmp);
}
int main(void) {
int nx=scan_unit();
printf("反転した値は%dです\n",rev_int(nx);
return (0);
}
上記のプログラムは「読み込んだ非負の整数値を逆順に表示」するプログラムなのですが、13行目の式の意味が分かりません。どうか御教授ください。
0267デフォルトの名無しさん
NGNGtmp*10 + numの一桁目。
tmp=123, num=456だったら
tmpは1236になる。
0268デフォルトの名無しさん
NGNGCompilerはなんですか.Overflowとかが起こってんのかなあ.
0269デフォルトの名無しさん
NGNG>>248
0270デフォルトの名無しさん
NGNGなるほど.
0271266
NGNGありがとうございました。
0272那由多 ◆F4E74ZBQPA
NGNG123→321とするプログラムですよね。
(1)tmp=0,num=123
tmp=0*10+123%10=3
<num/10=12>
(2)tmp=3,num=12
tmp=3*10+12%10=32
<num/10=1>
(3)tmp=32,num=1
tmp=32*10+1%10=321
ってことでいいのかな。
0273デフォルトの名無しさん
NGNGよく見たら,data配列のsizeの宣言がおかしいような.data[99]の値はちゃんと保存されてるのか?
0274デフォルトの名無しさん
NGNGアハハハ、やっちゃったね。
0275デフォルトの名無しさん
NGNGいくら払えばいいんですか?
0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNG0278225
NGNGどういう事?
sizeの宣言ってdata[99]の99のこと?
でも1から100までだから、配列のサイズは99でしょ?
てか実際変えてるのはa=a/2のとこだけだから、
そこは関係ないと思う。
最もプログラムの本質に関わることだったらあれだけど・・・
0279デフォルトの名無しさん
NGNG何を言っているのか要領を得ないが、data[99] と宣言したら、使えるのは
data[0] 〜 data[98] だぞ。
0280デフォルトの名無しさん
NGNGサイズは10。
0281デフォルトの名無しさん
NGNG何言っているのか要領を得ないが、わかるようにはっきり言ったらどうだ?
0282デフォルトの名無しさん
NGNG十分はっきりしてるじゃねーか
0283172
NGNG手元の本を読んでもチンプン・カンプンなんで…
ページでもいいからお願いします。(あつかましくてすみません)
勉強し始めて一週間とちょいぐらいのレベルです。
0284デフォルトの名無しさん
NGNG何言っているのか要領を得ないが、何がわからないのかはっきり言ったらどうだ?
0285デフォルトの名無しさん
NGNGまず、static の何がわからないか、extern の何がわからないか書いてくれ。
0286デフォルトの名無しさん
NGNGつまらん
ログ流すな
0287デフォルトの名無しさん
NGNGint *p = data-1;
0288デフォルトの名無しさん
NGNG十分はっきりしてるじゃねーか
0289デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNG十分はっきりしてるじゃねーか
0291172
NGNG何がわからないのか…う〜ん
いままで(といっても一週間程度だけど) static とか使わないでソース書いてきたんで、
どうしてそんなものを宣言する必要があるのか? とか
だったら最初から外部関数でいいんじゃないの? とか
考えちゃうわけでして…
こんなんじゃだめですか?(抽象的でごめんなさいマジで…)
0292デフォルトの名無しさん
NGNG後に引けない>>279みたいなやつ。
0294デフォルトの名無しさん
NGNG>>279のどこが間違ってるの?
0295デフォルトの名無しさん
NGNGコピペだから気にするな
0296デフォルトの名無しさん
NGNGお願いだから相手にしないでよ。
0297デフォルトの名無しさん
NGNGじゃ、何も知らないという前提でいいな。
まず extern だけど、これは関数や変数の実体を定義していないが、直ちに
使いたいという場合に用いる。
例えば、プログラムの規模が大きくなってくると整理の為にソースを分割して
コンパイルするけど、その際に file_a.c で実装されている関数 func1() を
file_b.c から呼び出したい時に 「extern int func1(int value);」 とか書く。
ただし変数でなく関数の場合、extern は通常つける必要が無く、単に
「int func1(int value);」 と書くだけでよい。
つまり、ファイルを複数に分割するつもりがないなら、覚える必要は無い。
static だけど、これはグローバル (関数外) で書くのとローカル (関数内) で
書くのとでは意味が違う。
グローバル (関数外) で書く static は、他のファイルのソースから extern
できないようにする。
static に指定するとそれは外側から見えなくなるので、file_a.c と file_b.c
で共に同名の変数や関数が定義されてても、ぶつかる事がない。
ローカル (関数内) で書く static は、これは変数にしか付けられないわけだが、
普通に宣言した変数と違って前回に呼び出された時の値をそのまま保存するよう
になる。
これは、例えば前回に関数が呼ばれた時間を覚えておいて、そこからの経過時間
を返したい場合などに使える。
・・・難しいかな?
0298デフォルトの名無しさん
NGNGstatic → 外部モジュールで参照不可
extern → 外部モジュールで参照可
0299デフォルトの名無しさん
NGNGstatic 変数とグローバル変数の大きな違いは、static 変数は関数の外側から
見えない事。
だから、別の場所で間違って値を変更してしまう危険を防ぐ事ができる。
さらに、その変数が他の関数では直接使われない事がすぐわかり、ソースを
読むのが簡単になる。
グローバル変数だらけのソースは一般に嫌われる。
(何がどこで使われてるかわかったものじゃないから)
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
NGNG> extern → 外部モジュールで参照可
それは微妙に違くないか?
0303デフォルトの名無しさん
NGNG0304172
NGNGありがとうございます!
extern は大体(思い込みかもしれないけど)わかりました。
要するにソースの規模が大きくなるならextern にしとけってことで(いいのかな?)
static はかなり疑問符をつけながら読んでますw
大まかな認識として値を保持し続けるってことでいいのかな?
ほんとありがとうございます。勉強しはじめなんで一気に飲み込むのは僕には無理があるようで、これから徐々に消化していきたいと思います。
でも、おかげさまでアバウトな面での認識はできました。
0305デフォルトの名無しさん
NGNGextern についてはちょっと違う。
extern は、関数を使いたいファイル側で使うの。
[file_a.c]
#include <stdio.h>
extern int square(int i);
int main(void)
{
printf("%d\n", square(2));
return 0;
}
[file_b.c]
int square(int i)
{
return i * i;
}
こんな感じ。
0306デフォルトの名無しさん
NGNGそれが妥当な説明だね。簡単に言うなら。
0307デフォルトの名無しさん
NGNG1から100までなのに配列のサイズが99っておかしくねぇ?
おまえの理論は、1〜N個のデータはN-1個の配列に格納できるっつーことだぞ。
つまり、N=2とすると、1個の配列に格納できるって話になっちまうぞ。
もう一度よく考えれ。
0308デフォルトの名無しさん
NGNGstaticは関数の宣言に使用した場合と変数の宣言に使用した場合で
意味が異なる。
static func() と使った場合はそのファイル内ローカルの関数になる。
また関数内で static int a;と変数を宣言した場合はauto変数でなく
静的に(スタック上でなくメモリ上に)確保される。
つまり関数外でstaticなしで宣言したことと同じになる。
extern func();と
func():は同じことだ。
どうだい、これでますますよくわかっただろう(w
0309デフォルトの名無しさん
NGNGリンケージは?
0310デフォルトの名無しさん
NGNG罠張るなよ。
グローバルの static 変数はどうなるんだ。
あと大抵の入門者は auto なんてキーワード知らんから持ち出すな。
0311デフォルトの名無しさん
NGNG何故それを 273 に向かって言う?
つーか、多分 「1 〜 100」 はループカウンタを言っていると思われ。
実際には N - 1 でアクセスしてる。
・・・それでも後ろに 1 つはみ出るけどナー。
0312172
NGNGもちっと勉強してから、でなおしてきますぜぃ!
あ、でも使用用途が判らなかったから悩んでたんでそこらへんは解決しました!
あとは勉強して自然と身につけるのみですよね
0313デフォルトの名無しさん
NGNGどうでもいいが、新たに質問したら、名前はそこの番号に変えた方がいいぞ。
0314デフォルトの名無しさん
NGNGそれは書いた後で気がついた
0315デフォルトの名無しさん
NGNGただでさえ流れるの早いんだから。
0316デフォルトの名無しさん
NGNG309 や 310 や 311 みたいな突っ込みもいかんのか?
0317225
NGNG0318デフォルトの名無しさん
NGNG1から10まで9個か?
0319デフォルトの名無しさん
NGNGだから配列のインデックスは98が最高なんだから99にアクセスしたらまずいだろって。
もうこの話引っ張るのやめてくれよ。
0320225
NGNG探さないでください。
0321デフォルトの名無しさん
NGNG開発環境:Windows
コンパイラ:VC++かCygwin
0322デフォルトの名無しさん
NGNGC 標準でできない事の質問は使ってる開発環境のスレに逝ってくれ。
0323デフォルトの名無しさん
NGNG開発環境依存ですか。ありがとうございます。
0324デフォルトの名無しさん
NGNG大抵は標準入出力を使ってやりとりすれば出来ると思うけど。
0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNG厨がわいてた方がいいと言うのか?
0327デフォルトの名無しさん
NGNG0328デフォルトの名無しさん
NGNGス ス
レ
レ
ス レ ..┌→─→─→─→─→─┐ ス
│ ↓ レ
↑ │
│ ↓
↑ │
レ .└─←─[. 0.001 秒 ]─←┘ レ ス
ス レ レ
ス
ス
という事でよろしいか?
0329デフォルトの名無しさん
NGNG0330328
NGNG∧||∧
( ⌒ ヽ トゥトゥトゥマシェーリー
∪ 。ノ トゥトゥトゥマシェーリー
∪∪
0331デフォルトの名無しさん
NGNG||
∧||∧
( ⌒ ヽ>>328
∪ ノ
∩∪∩
(・∀・| | クヨクヨスンナ
| |
⊂⊂____ノ
彡
________
0332デフォルトの名無しさん
NGNG0333デフォルトの名無しさん
NGNGおまいは回転速度をHzで数えるのか。
普通rpmだろう。
0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG並みの HDD よりは速そうだな
0336デフォルトの名無しさん
NGNGmMyLovelyHoge
などの変数名で、g や m についてだけd、g はglobalでわかるけど、mはなに?
0337デフォルトの名無しさん
NGNG規格見たらほとんどいっしょだよ。
でもmemcpyは仮引数が*void型だけど。
結局何が違うの?
strはstringだよね?
memってもしかしてmemory?
てことはmalloc系?
よくわからん・・・
質問責めでごめん
0338デフォルトの名無しさん
NGNG俺は昔っからこう書いてるんだが
最近はみんな返り値intにしてるらしいじゃねか。
0339デフォルトの名無しさん
NGNG別にいけなくはないだろ
コンパイラのワー人グがうざけりゃintかえしとけ
0340デフォルトの名無しさん
NGNGだってint型を返すんだもん。
ちゃんとreturn EXIT_SUCCESとかすれば?
0341デフォルトの名無しさん
NGNGcharへのポインタ型のstrがあって、
*str++ってしたら、str[i+1]って事だから、
次の文字を指しますよね?
str++ってのは、どういうことなんですか?
0342デフォルトの名無しさん
NGNGちがうよ。
*str;
str++;
の2つを一文で書いてるだけ。
0343デフォルトの名無しさん
NGNG途中に'\0'があるときの動作が違う。
0344デフォルトの名無しさん
NGNG後置された++は参照されたあとに変数の値を増加させる演算子
str++ならstrが参照されたあとにstrが増加する
つか、これくらい本買って嫁
0345デフォルトの名無しさん
NGNG#include <stdio.h>
int s[5], t[]={1, 2, 3, 4, 5};
int main() {
int i;
memcpy(s, t, 5*sizeof(int));
for (i=0; i < 5; i++)
printf("%d\n", s[i]);
}
0346デフォルトの名無しさん
NGNGだから、strが増加するってどういうこと?
0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNGでstr++が次の要素をさすんだ?
0349デフォルトの名無しさん
NGNG違うよ。
*str++ は *(str++) と同じ。 (*str)++ ではない。
0350デフォルトの名無しさん
NGNG*より増分演算子の方が優先度たかいんだったね。
三区す
0351デフォルトの名無しさん
NGNGint main(void)
{
int vc[]={0,1,2,3,4};
int vd[]={0,1,2,3,4};
printf("vc=%d\nvd=%d\n",*vc,*vd);
*vc++;
printf("vc=%d\nvd=%d\n",*vc,*vd);
return(0);
}
で、このソースなぜダメ?
0352デフォルトの名無しさん
NGNG0353デフォルトの名無しさん
NGNGアドレスを変えられるのはポインタだけ
0354デフォルトの名無しさん
NGNGオレの認識だと、配列はポインタにすぐ読み替えられるって書いてあったから、
こんなのもありだと思ってたんだけど
0355デフォルトの名無しさん
NGNG0356デフォルトの名無しさん
NGNG具体例を挙げて説明すると
char s[] = "ABC";
char *str;
int ch;
str = s; /* strが 'A'の位置を指す */
ch = *str++; /* chに 'A'が入り、strは次へ進んで 'B'の位置を指す */
0357デフォルトの名無しさん
NGNGint main(void)
{
int vc[]={0,1,2,3,4};
int vd[]={0,1,2,3,4};
int *v=vc;
printf("vc=%d\nvd=%d\n",*v,*vd);
*v++;
printf("vc=%d\nvd=%d\n",*v,*vd);
return(0);
}
これにしたら警告が出るんだけども・・・
警告 W8019 test7.c 9: コードは効果を持たない(関数 main )
0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNG*v++->v++;
0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNGサンクス!宣言の時は違うってことかな・・・
0362デフォルトの名無しさん
NGNG*v の値は参照する必要ないでしょ。
アドレスを加算させるだけだから、v++; でおk
0363デフォルトの名無しさん
NGNG6.3も読め。
0364デフォルトの名無しさん
NGNGほんとだ・・
ちょっと待ってよ。
*v++は*(v++)と等価だから、「vをインクリメントした先にあるもの」だよね?
v++は「vをインクリメント」で、vってのはつまり配列?
あーわかんねー。*v++はなんでだめなの?
0365デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNGvをインクリメントすると、アドレスが増える。
たしかT型へのポインタだとして、T型のサイズ分だけ増えるんだよね?
0367デフォルトの名無しさん
NGNGアドレス演算ってポインタ演算のこと?
0368デフォルトの名無しさん
NGNG>>356は読んだか?
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNG0371デフォルトの名無しさん
NGNGv++はvと言う値をインクリメントすると言う事。
*(v++)は*v++と同じ。
*v++は評価結果として*vを返し、v++を行う。
この文脈では*vを返す必要は無いのでv++でok.
0372デフォルトの名無しさん
NGNG読んだよ!でもいまいち分かってないかな?
配列とポインタが別物ってのは分かった。3つの場合を除いてね。
0373デフォルトの名無しさん
NGNG返すってことは例えばchar buf[256]があって
bufにvcの文字列をコピルときとかbuf[i]=*vc++;
ってやんのはおk?
0374デフォルトの名無しさん
NGNGまず、日本語がだm
0375デフォルトの名無しさん
NGNGでもこの場合は別に*vを返す必要なんてないから
vc++にしろってコンパイラが言ってるってこと?
0376デフォルトの名無しさん
NGNGそう解釈していい。
0377デフォルトの名無しさん
NGNGok.
俺は分かり易さを考えるとあんまり使わないが。
そんな文が必要になる時は大概for文中でインクリメントする。
0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
NGNGなにを偉そうに
0380デフォルトの名無しさん
NGNG*と++(後置)は優先順位は同じはず。
ただ右から結合するから++が先に実行される。
0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNG0384デフォルトの名無しさん
NGNGそれはK&Rでない?
規格だと*と++(後置)は++の方が優先順位は高い。
ただし++(前置)は*と優先順位が等しい
0385デフォルトの名無しさん
NGNG0386デフォルトの名無しさん
NGNG優先順位が同じだろうが、後置の方が高かろうが、
単項演算子の結合規則は右から左なので同じ結果になる。
0387デフォルトの名無しさん
NGNGbuf[i]=*vc++; みたいに。
0388デフォルトの名無しさん
NGNG1.dat
2.dat
・
・
とデータファイルがあって、2番目のデータを読み込みたいとき
n=2; "n.dat"
とすると、エラーが出るのですが
一般的にはどんな方法がありますか?
0389デフォルトの名無しさん
NGNG具体的なエラーとかでもちゃんと書いてみたら(w
0390デフォルトの名無しさん
NGNGソースきぼん
0391388
NGNGこたえる気がないくせに茶化さないでください。
あなたみたいなのがいるから2チャンネルはだめだといわれるんです。
ほかの方、よろしくお願いします。
0392デフォルトの名無しさん
NGNG> 単項演算子の結合規則は右から左なので
ハァ?
0393!389
NGNG0395デフォルトの名無しさん
NGNG一般的にはファイルをオープンして一行目のデータを読み飛ばして二行目を読んでファイルをクローズします。
コードはプログラミング言語を勉強して自分で努力して書いてください。
0397デフォルトの名無しさん
NGNGa++; ←これが後置だよね?
0398デフォルトの名無しさん
NGNGfopen(buf, "r");
0399デフォルトの名無しさん
NGNG391は釣り師のような気がするが。
0400デフォルトの名無しさん
NGNG2^xが2のx乗ということなら、powを呼んでいるだけだと思うけど。。。
0401デフォルトの名無しさん
NGNGこんな質問で、どこでどんなエラーが出るか分かるの思うのか?
で、多分sprintfすりゃあ解決ってことかと推理。
推理させるなヴォケ
あ、ネタか?
0402知りたい人
NGNG文字コードを使って上手くできませんかね。ちょっとした例文を求む。
0403デフォルトの名無しさん
NGNGソースコード拾ってくれば?
おいらはいつも見れるように主要ソースコードは展開させて置いてる。
0404デフォルトの名無しさん
NGNG0405デフォルトの名無しさん
NGNGこんな感じ。
long abc;
func((LPARAM *)abc);
わざわざキャストする必要ありませんか?
将来性を考慮するとキャストする必要ありますか?
どっちがいい?
0406デフォルトの名無しさん
NGNGint i;
i = c-'A';
0407デフォルトの名無しさん
NGNG整数をポインタにキャストするのって0以外は怖いんですけど・・・
0408デフォルトの名無しさん
NGNG0409407
NGNG0410409
NGNG(LPARAM *)&abc
0411デフォルトの名無しさん
NGNGfunc(abc);
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNGキャストして動いてるんならそれでいいんじゃないかと。
将来性(と移植性)を考えると、longを使用するのを止めた方がいい。
0414405
NGNGすんません。その通りです。
>>408
元々のデータ構造がlongを使用しているんでしが、リストビューに割り振れる値がLPARAMでしょ。
だからこうなりますた。
>>413
データ構造的にはlongを使いたいんですよね。
リストビューに割り当てるのを考え直した方がいいんでしょうか?
データを格納したポインタを割り当てるとか。
でも、ポインタも4byteだし、あまり意味は無いかも知れない。
ソースを検索してみたら、short値をリストビューに割り当ててることもありました。
func((LPARAM *)&shortparam);
ま、問題なく動いてはいますが。
自分の考えとしては、元々のlong,short値の範囲内で関数に渡しているし、同じ
変数を使っている限りはデータ落ちはないかと。
今後sizeof(LPARAM) >= sizeof(long)の条件が崩れた場合恐いんですが。
0415デフォルトの名無しさん
NGNG例えば、「65.dat」という名前のデータファイルを読み込みたいときに
n=65, "n.dat"
と記述すると、"n.dat"という名前のファイルは見つかりません。って
エラーが出るのですが(当たり前?)
65.datを呼び出すにはどう記述すればよいのですか?
0416デフォルトの名無しさん
NGNGあんた誰?
0417デフォルトの名無しさん
NGNGウインドウメッセージの都合上いたし方ないのでは。
0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNG言語が違う予感
0420デフォルトの名無しさん
NGNGfunc(&abc);
0421デフォルトの名無しさん
NGNGC++です。
65.dat
70.dat
75.dat
と次々に読み込んでいくにはどう記述すればいいのでしょうか?
"n.dat"じゃ無理(当たり前)なのは分かりました。
0422デフォルトの名無しさん
NGNGn=65, "n.dat"って記述したらコンパイルエラーですが何か?
0423デフォルトの名無しさん
NGNGsprintf(buf, "%d.dat", n);
fopen(buf, "r");
0424デフォルトの名無しさん
NGNG知ったかぶり野郎は帰ってくれ!!!
0425デフォルトの名無しさん
NGNG0426デフォルトの名無しさん
NGNG398のVerUp版だね(笑)
0427デフォルトの名無しさん
NGNGそうだけど何が面白いの?
0428初心者&rlo;者心初
NGNG扱われているんですか?
あと、ビット演算する時は変換文字を%uにしないと正しく出力されないのは
なぜなんでしょうか?教えて下さい。
0429デフォルトの名無しさん
NGNG2の補数のこともある。
0430デフォルトの名無しさん
NGNG"2の補数"で検索。
0431デフォルトの名無しさん
NGNG初心者はrlo禁止です
0432デフォルトの名無しさん
NGNG親切にnへの代入の仕方を教えている。
バカにしてるのだろうがな。
0433同意&rlo;意同&lro;
NGNG同意。
rloつかうなら「日稿投」はやめてほ&rlo;いし&lro;ね。
#何気にテストw
0434デフォルトの名無しさん
NGNGテスト禁止禁(w
0435426
NGNG違うよ。
既に解決策が398に載ってたのに見逃している421をあざ笑ったつもり。
スマソ。
0436414
NGNG仕方がないということで宜しいでしょうか?
0437デフォルトの名無しさん
NGNGLPARAM hoge=abc;
func(&hoge);
abc=hoge;
0438デフォルトの名無しさん
NGNG逝ってくれ。
C じゃなくて C++ なら C++ スレに逝ってくれ。
あと C++ 使ってる香具師に fopen() を教えるな。
0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNG> 今後sizeof(LPARAM) >= sizeof(long)の条件が崩れた場合恐いんですが。
呼び出す関数がブラックボックスなら、逆( <= )だと思うが。
そうじゃなく、自前のコールバック関数を呼び出す時に一旦
LPARAM*を 経由しているだけなら、LPARAMとlongのサイズでなく、
LPARAM* と long* の違いの方が重要だと思う。
0441414
NGNG>呼び出す関数がブラックボックスなら、逆( <= )だと思うが。
あれ。逆でつか?
関数側sizeof(引数)が大きければとりあえず問題ないとオモタのですが。。
>そうじゃなく、自前のコールバック関数を呼び出す時に一旦
>LPARAM*を 経由しているだけなら、LPARAMとlongのサイズでなく、
>LPARAM* と long* の違いの方が重要だと思う。
これでハッとしますた。
確かにアドレスが渡ってるだけだから、メモリリークの可能性がありますね。
でも、
short st;
long lg;
st=(short)lg;
リトルエンディアンの場合、このようなキャストをするとlgの下位2バイトが
stに入るという「C言語仕様」?でしたが、関数の引数をキャストした場合は
仕様的にはどうなんでしょ?
先に書いた通り、メモリリークの可能性があるならば>>437の例でも問題あり
ますよねえ?
0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNG0444デフォルトの名無しさん
NGNGC FAQによると「配列は簡単にポインタに成り下がる」のとおり、
関数の引数としてcharの配列を渡すとポインタとなってしまい、
sizeofなどで長さが取れなくなってしまいますよね?
で、自分が使用している環境ですと、構造体にcharの配列を持たせて、
この構造体ごと関数の引数として渡すと、関数の中でも問題なく配列として扱えるのですが、
これってどこでも使える汎用的な手段なのでしょうか?
0445440
NGNG> 関数側sizeof(引数)が大きければとりあえず問題ないとオモタのですが。。
たとえば仮に sizeof(long)==4, sizeof(LPARAM)==8 だったとすると、
こちらが渡した4バイトのデータを、
関数側は8バイトあると見なして読み書きするわけだけど。
それと、上では忘れてたけど、関数が要求してるのが配列の場合は
(ポインタでなく)値自体のサイズも重要になるね。
> 確かにアドレスが渡ってるだけだから、メモリリークの可能性がありますね。
なんでメモリリークなんかが出てくるの?
俺が言ってるのは、例えばポインタのサイズが
sizeof(long*) > sizeof(LPARAM*) の時にまずいという話。
といっても将来そうなることは無い気がするけど。
> stに入るという「C言語仕様」?でしたが、
C言語の仕様ではなく、CPU依存の話だね。
俺も皆の意見と同じく、気になるなら値を一旦LPARAM型変数に
キャストした方が安全な気がする。
0446440
NGNG> 俺も皆の意見と同じく、気になるなら値を一旦LPARAM型変数に
> キャストした方が安全な気がする。
これは、コールバック関数用でなく、
ブラックボックスの関数に単なるパラメータとして渡す場合ね。
0447デフォルトの名無しさん
NGNGそれで問題無いなら問題無いです。
ただし、配列が丸ごと値渡しされるので、サイズによってはとんでもなく遅くなります。
あと、ポインタではなく値で int とかを渡した時と同様、呼び出し元の値の変更は
できません。
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNG規格(ANSI)では使えることが保証されてる。
sizeofで長さを計りたいからと言う理由なら、
構造体ポインタを渡すだけでもいいのでは。
でもサイズを計るためにわざわざ構造体を使うくらいなら、
配列とサイズの2つのパラメータを渡した方がいい気がする。
0450デフォルトの名無しさん
NGNG構造体のポインタを渡すというのが一般的。
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNGhoge()という関数がBOOL値を返す場合
if ( hoge() == TRUE )
よりも
if ( hoge() )
と書いたほうが良いのでしょうか?
もしTRUE が 1 と定義されていて、BOOL値がTRUEとして1以外を
返すと実行されないと思ったので。
0453444
NGNGなるほど、構造体ごと渡すと重たいので構造体のポインタで渡すか、
または配列とサイズを両方パラメータとして渡す、のですか。
とりあえず今までいろいろ勉強のため書いたプログラムを、
ポインタで渡すよう修正してみます。
ありがとうございました。
0454デフォルトの名無しさん
NGNG0455452
NGNGBOOLはVC独自の定義でした。端折ってすいません。
0456デフォルトの名無しさん
NGNG普通の発想(Javaのbooleanみたいにtrueとfalseの値しか取らない)
ならif (hoge())が当然だが(でないと
if ((...(hoge() == TRUE) == TRUE) == TRUE)...) と書くはめになる)
WinのAPIは戻り値がBOOLなのに1と0と-1を返したりするからなあ…
0457デフォルトの名無しさん
NGNGそう。だから、C++/C99でboolが組み込み型に導入された。
0458452
NGNGます、なぜこんな質問したかというと、コードに
if (hoge() == TRUE)
と書けばhogeがBOOL値を返す関数だとひと目でわかるのですが
if (hoge())
だと、hogeは有効なハンドルを返すのか、何かの計算結果を返すのか
もしくは真偽値をかえすのか、パッと見てわからないですよね。
なので、できれば ”==”を使った表現をしたかったのですが
TRUEの値が一定でないと危ないコードになるかなぁと。
>if ((...(hoge() == TRUE) == TRUE) == TRUE)...) と書くはめになる)
if ( (hoge() == TRUE) == true )
とは違う意味なのですか?(TRUEが自分で定義したものでtrueが言語定義)
0459デフォルトの名無しさん
NGNG待った、デマは流すな。
C99 で定義されたのは、<stdbool.h> の _Bool だ。
C には結局 bool は無い。
0460414
NGNG>> 関数側sizeof(引数)が大きければとりあえず問題ないとオモタのですが。。
>
>たとえば仮に sizeof(long)==4, sizeof(LPARAM)==8 だったとすると、
>こちらが渡した4バイトのデータを、
>関数側は8バイトあると見なして読み書きするわけだけど。
>
>それと、上では忘れてたけど、関数が要求してるのが配列の場合は
>(ポインタでなく)値自体のサイズも重要になるね。
>
>> 確かにアドレスが渡ってるだけだから、メモリリークの可能性がありますね。
>なんでメモリリークなんかが出てくるの?
値自体のサイズが異なるんで・・・ちと実験例。
void func(WORD * wd)
{
*wd = 0xffff;
}
void main()
{
BYTE buf1,buf2;
buf1 = buf2 = 0;
func((WORD *)&buf2);
}
(続く)
0461デフォルトの名無しさん
NGNGなんか矛盾してない?
> WinのAPIは戻り値がBOOLなのに1と0と-1を返したりするからなあ
だから
if (hoge()) とか
if(hoge()!=FALSE)
と書くべきなのだが。
0462414
NGNGこの場合、buf2に書き込みが行われる際にbuf1まで影響されないかと思ったんです。
(もしくはその逆のbuf1に書き込もうとしたらbuf2にも影響が・・・)
実験結果からいうと&buf1=0x0012f778,&buf2=0x0012f774とその差4byteだったので、
相互に影響は出ませんでちた。
なんで4byteの差があるのかわからないけど、これなら引数がDWORD *でも問題ない
みたい・・・てか、実験して確認したらやはり問題なかった。
buf1とbuf2のアドレスが1バイト間隔だと思ってたんです。
私の考えていたメモリリークの可能性ってのは分かって戴けたかしら?
ていうか、メモリリークの危険は無いと思って良いのかな?たまたまかな?
4byte以上の変数型ってあったっけ?
>俺が言ってるのは、例えばポインタのサイズが
>sizeof(long*) > sizeof(LPARAM*) の時にまずいという話。
>といっても将来そうなることは無い気がするけど。
これは私も無いと思いますね。
>俺も皆の意見と同じく、気になるなら値を一旦LPARAM型変数に
>キャストした方が安全な気がする。
確かに皆様の言われることはよく分かりましたが、
・・というか、上記実験結果の信用性次第なんでしょか?
0463デフォルトの名無しさん
NGNGif (hoge() != FALSE)
0464459
NGNG#define bool _Bool
だって。
マクロだけどあることはあるみたいだ。
0465452
NGNG456氏が書いているように
>WinのAPIは戻り値がBOOLなのに1と0と-1を返したりするからなあ…
WinAPIのような関数を使わないといけない状態だと
一貫したコードがかけないんですよね。
# GetMessageなんてのが、まさにそうですよね。
0466デフォルトの名無しさん
NGNGそりゃまずいって(w
-1が返ったときはエラーなのにTRUEだと思っちゃう。
0467デフォルトの名無しさん
NGNGスマソ。C99ではboolはマクロだった・・・
0468461
NGNG0469デフォルトの名無しさん
NGNGvoid func(long * wd)
{
*wd = 0xffffffff;
}
void main()
{
int i;
char buf[]={0,0,0,0};
func((long *)&buf[1]);
for (i=0; i<4; i++)
printf("%d\n", buf[i]);
}
0470デフォルトの名無しさん
NGNGいったい何をやりたいんだか…
どうせ環境に思いっきり依存したことをやってるんだから、
自分の環境で動くなら良いのでは?
ちなみに、最近のCPUでは、1バイトの変数でも4バイト境界や
8バイト境界に整列させて割り付けるのはあたりまえだし、
doubleやlong longなど、一般的な環境で4バイトを超えるサイズの
データ型は色々ある。(構造体とか配列とかも…)
0471414
NGNGさっきは書かなかったけど、そのケースでは漏れる事が分かってます。
てか、最初それを例に書いてて、漏れて当たり前だと気がついて書き直した。w
0472デフォルトの名無しさん
NGNG0473デフォルトの名無しさん
NGNG3通り以上の区別しなきゃならん値を返すほうが間違いなんだが。
0474デフォルトの名無しさん
NGNG0475445
NGNG> この場合、buf2に書き込みが行われる際にbuf1まで影響されないかと思ったんです。
> (もしくはその逆のbuf1に書き込もうとしたらbuf2にも影響が・・・)
だから俺が書いた話がそれなんだが。
あんたはその逆(WORD*をBYTE*に渡す)を書いてたんだが。
> > 今後sizeof(LPARAM) >= sizeof(long)の条件が崩れた場合恐いんですが。
> 呼び出す関数がブラックボックスなら、逆( <= )だと思うが。
こう書いたはずだが。
> 私の考えていたメモリリークの可能性ってのは分かって戴けたかしら?
> ていうか、メモリリークの危険は無いと思って良いのかな?たまたまかな?
それはメモリリークとは呼ばない。
バッファオーバーランなら分かるが。
0476デフォルトの名無しさん
NGNGなにをいってるか分からんのだが。
コンパイラが空けて配置するからいいと思ってるのか?
こういう風に消してしまうことがあると思うのだが。
#include <stdio.h>
void func(long * wd)
{
*wd = 10;
}
void main()
{
int i;
char buf[]={0,0,1,0};
func((long *)&buf[1]);
for (i=0; i<4; i++)
printf("%d\n", buf[i]);
}
0477デフォルトの名無しさん
NGNGそれは逆だろう。
ハンドルとかポインタ返す関数の時はINVALID_HANDLEとかNULLと比較すればヨイ。
if(hoge())ならhoge()はBOOLを返すと思え。
0478414
NGNG> ちなみに、最近のCPUでは、1バイトの変数でも4バイト境界や
> 8バイト境界に整列させて割り付けるのはあたりまえだし、
> doubleやlong longなど、一般的な環境で4バイトを超えるサイズの
> データ型は色々ある。(構造体とか配列とかも…)
どもです。了解しました。
つまり、メモリリーク(言葉の意味違う?)の可能性があるんですね。
>>441で書いたキャストして代入(short変数=(short)long変数)の例では
キャストで動作が保証(CPU依存?コンパイラ依存な気がする)される
ので、関数引数でキャストした場合も問題なく動くのかと期待してました。
0479デフォルトの名無しさん
NGNGメモリ リークってfreeのし忘れだが
0480デフォルトの名無しさん
NGNGBOOL bRet = hoge();
if(bRet){
}
>>452=>>458の主旨は返り値の内容の意味がわかりやすいかどうかだから
↑みたくするなりコメントつけるなり好きにしる。
0481445
NGNG多分変数を確保する時にBYTEも32ビット分確保されてるだけ。
つまり結果オーライになってるだけ。
呼び出し側を配列にして試してみるといい。
0482414
NGNGすんません。>478書いてる間に色々レスを頂いてましたね。
完全に理解出来ました&何度も指摘して頂いてるのに勘違いしっぱなして
申し訳なかったっす。
キャストするのは止めます。
どもありがとうございました。
0483デフォルトの名無しさん
NGNGそうか?
if(hoge())
が真だと、とにかくfalse/FALSE/NULL/0ではないことがひとめで分かる。
0484414
NGNG発言してたのでつよ。。
バッファオーバーラン・・たしかにそうですね。
バッファオーバーフローは? オーバーランと同じかな。
0485デフォルトの名無しさん
NGNG0486ががが
NGNGa=matrix(n,n);b=matrix(n,m);x=matrix(n,m);
printf("Aはn×n行列、B,Xはn×m行列です。\n");
printf("n,mを入力して下さい\n");
scanf("%d,%d",&n,&m);
printf("A,Bの要素を入力してください。\n");
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
{printf("a[%d+1][%d+1]は?\n",i,j);
scanf("%lf,&a[i][j]");
} }
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
{printf("b[%d+1][%d+1]は?\n",i,j);
scanf("%lf,&b[i][j]");
} }x = gauss(a,b,n,m);
freemat(a); freemat(b); freemat(x);
}
がコンパイルできても、実行できません。
mainの中が間違えてるっぽいんやけど。
誰か教えてください。ほんきわかんないんで。
配列とか、関数の定義は、できてる友達のと交換しても動くんで、このなかなんですけど
0487デフォルトの名無しさん
NGNG違う
0488デフォルトの名無しさん
NGNGわかってないじゃん。
真だとfalse/FALSE/NULL/0以外の何であるか一目で分かってないし、
偽だとfalse/FALSE/NULL/0のどれであるかも一目で分かってない。
0489452
NGNG>ハンドルとかポインタ返す関数の時はINVALID_HANDLEとかNULLと比較すればヨイ。
たしかにそうですね。すいません。
RegisterClassの場合はどのような記述がいいのでしょうか?
(returnはATOM型になっています)
猫でもわかるプログラミングでは
if (!RegisterClass(&myProg))
return FALSE;
このように記述されていますが。
>>480
参考にさせていただきます。
>>483
>が真だと、とにかくfalse/FALSE/NULL/0ではないことがひとめで分かる。
そういうことではなく、関数がどういうタイプの戻り値を返すのかが
わかりやすいコーディングがしたいだけです。
真であるか偽であるかは、別の話なわけで。
0490デフォルトの名無しさん
NGNGスマン ワラタ
0491デフォルトの名無しさん
NGNG同意。
漏れは
if(hoge())
という書き方して
if(strcmp(hoge, sage) != 0)
という書き方でこっちのほうを明示的視覚的に分かるようにしてる
0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNGis... とか has... とかにすればよい
0494デフォルトの名無しさん
NGNGif(hoge())はそんなこと知らなくてもいい。
0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNG> 発言してたのでつよ。。
アスキー用語辞典より
http://yougo.ascii24.com/gh/26/002659.html
0498デフォルトの名無しさん
NGNG適当にやるのは良くない。
0499492
NGNGつか、自分で調べろよ。俺は調べたが。
0500デフォルトの名無しさん
NGNGどれか知りたいなら比較すりゃいい。
0501452
NGNG1.ポインタやハンドルのときはNULLやINVALID〜などで比較する
2.bool値の場合は省略
3.矛盾している関数(GetMessage等)は個別に対応する。
ってのが、シンプルで確実なんでしょうか。
0502デフォルトの名無しさん
NGNG> if (!RegisterClass(&myProg))
> return FALSE;
RegisterClassの戻り値自体が必要なのではなくて、戻り値が真か偽かがわかればよいのだから
他の情報を求めなくていいじゃないか。
0503452
NGNGtrueかfalseしか返ってこないのであれば、0であることが確定している
falseと比較する。ってものありましたね。
0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNGif ( hoge() ) ...
if ( !hoge() )...
で十分。そうでない場合だけ個別に対応すればいい
わざわざ
if ( hoge() != NULL )...
if ( hoge() == NULL )...
なんてやるやつはDQN
0507デフォルトの名無しさん
NGNGプログラミング作法か何かに載ってたが。
0508デフォルトの名無しさん
NGNGNULLと比較している時点で、こいつのレベルが分かってしまうんだが。
0509デフォルトの名無しさん
NGNGfalse、FALSE、NULL は 0 である事が保証されている。
488 は何でこれらを区別したいのかわからん。
0510デフォルトの名無しさん
NGNG501 を受けて書いたのですが
0511デフォルトの名無しさん
NGNGあってもなくても、コンパイラは同じコードを吐く。
例え最適化オプションが ON になっていなくても。
0512デフォルトの名無しさん
NGNG結論としてはbool型が無かったC言語が糞ということでよろしいですね。
0513511
NGNGどっちかでならなければならないというのは間違っている。
0514デフォルトの名無しさん
NGNG「ポインタやハンドルを返す」なら、返ってきた値捨てるなよ
0515デフォルトの名無しさん
NGNG0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNG元質問はTRUEと比較するとまずいのでは?って質問なんだから。
A. はい、まずいです。どうしても比較したいならFALSEとしてください。
これで終わりなはず。
0518デフォルトの名無しさん
NGNGおまえは fgets() を使ったことがないのかと
0519デフォルトの名無しさん
NGNG#define TRUE !FALSE
とかして
if(hoge() == TRUE)とかの方が良いな。
とにかく二重否定は避けたい。
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNGif( hoge ){}
ってやると ぱっと見 変数が ポインタか実数かわかんないじゃん。
んなことで
if( NULL != hoge ){}
支持。
0522デフォルトの名無しさん
NGNGもうネタはけっこう。
0523496
NGNG0524デフォルトの名無しさん
NGNGお前はstrchrの結果も必ず保存するのかと
0525デフォルトの名無しさん
NGNGIE の中止ボタンがしいたけに見えて困る
http://w3j.org/nazokb/jp4110000.html
0526デフォルトの名無しさん
NGNGワロタ
0527デフォルトの名無しさん
NGNGアホ
$ grep glib.h -e "TRUE.*FALSE"
#define TRUE (!FALSE)
0528デフォルトの名無しさん
NGNGhoge() が !FALSE を返してくれる保証があるならそれでもいいが。
>>523
面倒なだけだと思う。
0529デフォルトの名無しさん
NGNGお前がアホ。
ネタと書かれた意味がわかってない。
0530514
NGNG0531デフォルトの名無しさん
NGNGあふぉはおまえ
if ( hoge() == TRUE )
がネタだっつってんの
0532デフォルトの名無しさん
NGNGいや、おまえの方がアホ。
俺の書いた意味が分かっていない。
0533デフォルトの名無しさん
NGNG>>528
>>530
煽りだから気にするな、言いたい事は分かる。
0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNGやっていれば、いやでも読みやすいようにし向けられるので
どうでも良いのです。
人はそれをコーディング規約と呼びます。
0536デフォルトの名無しさん
NGNG0537デフォルトの名無しさん
NGNGそれには語弊があるぞ。
読みにくいように仕向けられるのコーディング規約なんか山のようにある。
0538デフォルトの名無しさん
NGNG例: GN(略
0539デフォルトの名無しさん
NGNGif(hoge)
で、
ifの仕様からしてhoge自体が真偽値/ポインタなら、さらに明示的に比較するのは
俺は抵抗がある。
0540デフォルトの名無しさん
NGNG0541デフォルトの名無しさん
NGNG∧_∧ ∧_∧
( ´Д`) ∧_∧ ( ´Д`) ∧_∧
/ \ (´Д` ) / \ (´Д` )
__| | | |_ / ヽ、 .__| | .| |_ / ヽ、
||\  ̄ ̄ ̄ ̄ / .| | | ||\  ̄ ̄ ̄ ̄ /| | |
||\..∧_∧ (⌒\|__./ ./ .||\..∧_∧ (⌒\|__./ ./
||. . ( ) ~\_____ノ| ∧_∧. ||. .( ) ~\_____ノ| ∧_∧
. _/ ヽ \| (´Д` ). _/ ヽ \| (´Д` )
. | ヽ \ / ヽ. | ヽ \ / ヽ、
. | |ヽ、二⌒) / .| | | | |ヽ、二⌒) / .| | |
. .| ヽ \∧_∧ (⌒\|__./ ./ . .| ヽ \∧_∧ (⌒\|__../ ./
ヽ、___( ) ~\_____ノ| ∧_∧ ___( ) ~\_____ノ| ∧_∧
. _/ ヽ \| (´Д` ). _/ ヽ \| (´Д` )
. | ヽ \ / ヽ、 | ヽ \ / ヽ、
. | |ヽ、二⌒) / .| | | . | |ヽ、二⌒) / .| | |
. .| ヽ \\ (⌒\|__./ ./ . .| ヽ \\ (⌒\|__./ ./
. ヽ、____ \\ ~\_____ノ| . ヽ、____ \\ ~\_____ノ|
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNG決まって熱くなる奴がいるから続けたくないんだよなぁ
0544デフォルトの名無しさん
NGNGC言語のifの仕様からして抵抗がある。
ifの中身は本来は真のbool型(true/falseのみ)でなければならないはずだ。
ついでにそんな所で代入できちゃいかん。
0545デフォルトの名無しさん
NGNGスタイルを強制されたこと無いだろ。
0546デフォルトの名無しさん
NGNG∧_∧ ∧_∧
( ´Д`) ∧_∧ ( ´Д`) ∧_∧
/ \ (´Д` ) / \ (´Д` )
__| | | |_ / ヽ、 .__| | .| |_ / ヽ、
||\  ̄ ̄ ̄ ̄ / .| | | ||\  ̄ ̄ ̄ ̄ /| | |
||\..∧_∧ (⌒\|__./ ./ .||\..∧_∧ (⌒\|__./ ./
||. . ( ) ~\_____ノ| ∧_∧. ||. .( ) ~\_____ノ| ∧_∧
. _/ ヽ \| (´Д` ). _/ ヽ \| (´Д` )
. | ヽ \ / ヽ. | ヽ \ / ヽ、
. | |ヽ、二⌒) / .| | | | |ヽ、二⌒) / .| | |
. .| ヽ \∧_∧ (⌒\|__./ ./ . .| ヽ \∧_∧ (⌒\|__../ ./
ヽ、___( ) ~\_____ノ| ∧_∧ ___( ) ~\_____ノ| ∧_∧
. _/ ヽ \| (´Д` ). _/ ヽ \| (´Д` )
. | ヽ \ / ヽ、 | ヽ \ / ヽ、
. | |ヽ、二⌒) / .| | | . | |ヽ、二⌒) / .| | |
. .| ヽ \\ (⌒\|__./ ./ . .| ヽ \\ (⌒\|__./ ./
. ヽ、____ \\ ~\_____ノ| . ヽ、____ \\ ~\_____ノ|
0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNGif(HOGE *hoge = get_hoge())
って書けるが、これは明示的に比較する形で書けない。
0549デフォルトの名無しさん
NGNG愚痴はマ板逝け。
0550デフォルトの名無しさん
NGNG∧_∧ ∧_∧
( ´Д`) ∧_∧ ( ´Д`) ∧_∧
/ \ (´Д` ) / \ (´Д` )
__| | | |_ / ヽ、 .__| | .| |_ / ヽ、
||\  ̄ ̄ ̄ ̄ / .| | | ||\  ̄ ̄ ̄ ̄ /| | |
||\..∧_∧ (⌒\|__./ ./ .||\..∧_∧ (⌒\|__./ ./
||. . ( ) ~\_____ノ| ∧_∧. ||. .( ) ~\_____ノ| ∧_∧
. _/ ヽ \| (´Д` ). _/ ヽ \| (´Д` )
. | ヽ \ / ヽ. | ヽ \ / ヽ、
. | |ヽ、二⌒) / .| | | | |ヽ、二⌒) / .| | |
. .| ヽ \∧_∧ (⌒\|__./ ./ . .| ヽ \∧_∧ (⌒\|__../ ./
ヽ、___( ) ~\_____ノ| ∧_∧ ___( ) ~\_____ノ| ∧_∧
. _/ ヽ \| (´Д` ). _/ ヽ \| (´Д` )
. | ヽ \ / ヽ、 | ヽ \ / ヽ、
. | |ヽ、二⌒) / .| | | . | |ヽ、二⌒) / .| | |
. .| ヽ \\ (⌒\|__./ ./ . .| ヽ \\ (⌒\|__./ ./
. ヽ、____ \\ ~\_____ノ| . ヽ、____ \\ ~\_____ノ|
0551デフォルトの名無しさん
NGNG∧_∧ ∧_∧
( ´Д`) ∧_∧ ( ´Д`) ∧_∧
/ \ (´Д` ) / \ (´Д` )
__| | | |_ / ヽ、 .__| | .| |_ / ヽ、
||\  ̄ ̄ ̄ ̄ / .| | | ||\  ̄ ̄ ̄ ̄ /| | |
||\..∧_∧ (⌒\|__./ ./ .||\..∧_∧ (⌒\|__./ ./
||. . ( ) ~\_____ノ| ∧_∧. ||. .( ) ~\_____ノ| ∧_∧
. _/ ヽ \| (´Д` ). _/ ヽ \| (´Д` )
. | ヽ \ / ヽ. | ヽ \ / ヽ、
. | |ヽ、二⌒) / .| | | | |ヽ、二⌒) / .| | |
. .| ヽ \∧_∧ (⌒\|__./ ./ . .| ヽ \∧_∧ (⌒\|__../ ./
ヽ、___( ) ~\_____ノ| ∧_∧ ___( ) ~\_____ノ| ∧_∧
. _/ ヽ \| (´Д` ). _/ ヽ \| (´Д` )
. | ヽ \ / ヽ、 | ヽ \ / ヽ、
. | |ヽ、二⌒) / .| | | . | |ヽ、二⌒) / .| | |
. .| ヽ \\ (⌒\|__./ ./ . .| ヽ \\ (⌒\|__./ ./
. ヽ、____ \\ ~\_____ノ| . ヽ、____ \\ ~\_____ノ|
0552デフォルトの名無しさん
NGNG0553デフォルトの名無しさん
NGNG∧_∧ ∧_∧
( ´Д`) ∧_∧ ( ´Д`) ∧_∧
/ \ (´Д` ) / \ (´Д` )
__| | | |_ / ヽ、 .__| | .| |_ / ヽ、
||\  ̄ ̄ ̄ ̄ / .| | | ||\  ̄ ̄ ̄ ̄ /| | |
||\..∧_∧ (⌒\|__./ ./ .||\..∧_∧ (⌒\|__./ ./
||. . ( ) ~\_____ノ| ∧_∧. ||. .( ) ~\_____ノ| ∧_∧
. _/ ヽ \| (´Д` ). _/ ヽ \| (´Д` )
. | ヽ \ / ヽ. | ヽ \ / ヽ、
. | |ヽ、二⌒) / .| | | | |ヽ、二⌒) / .| | |
. .| ヽ \∧_∧ (⌒\|__./ ./ . .| ヽ \∧_∧ (⌒\|__../ ./
ヽ、___( ) ~\_____ノ| ∧_∧ ___( ) ~\_____ノ| ∧_∧
. _/ ヽ \| (´Д` ). _/ ヽ \| (´Д` )
. | ヽ \ / ヽ、 | ヽ \ / ヽ、
. | |ヽ、二⌒) / .| | | . | |ヽ、二⌒) / .| | |
. .| ヽ \\ (⌒\|__./ ./ . .| ヽ \\ (⌒\|__./ ./
. ヽ、____ \\ ~\_____ノ| . ヽ、____ \\ ~\_____ノ|
0554デフォルトの名無しさん
NGNGC では、非 0 が真であると明確に定義されていますが何か?
0555デフォルトの名無しさん
NGNG図星だからって誤魔化してもダメだよ。
0556デフォルトの名無しさん
NGNG0557デフォルトの名無しさん
NGNGそもそも0とか非0がbool型にキャストできるのがおかしい。VBじゃあるまいし。
0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNG∧_∧ ∧_∧
Σ( ;´Д`) ∧_∧ Σ(; ´Д`) ∧_∧
/ \ Σ(´Д`; ) / \ Σ(´Д`; )
__| | | |_ / ヽ、 .__| | .| |_ / ヽ、
||\  ̄ ̄ ̄ ̄ / .| | | ||\  ̄ ̄ ̄ ̄ /| | |
||\..∧_∧ (⌒\|__./ ./ .||\..∧_∧ (⌒\|__./ ./
|| Σ( ;) ~\_____ノ| ∧_∧. ||Σ( ;) ~\_____ノ| ∧_∧
. _/ ヽ \|Σ(´Д`; ). _/ ヽ \| Σ(´Д`; )
. | ヽ \ / ヽ. | ヽ \ / ヽ、
. | |ヽ、二⌒) / .| | | | |ヽ、二⌒) / .| | |
. .| ヽ \∧_∧ (⌒\|__./ ./ . .| ヽ \∧_∧ (⌒\|__../ ./
ヽ、___Σ( ;) ~\_____ノ| ∧_∧ ___Σ( ;) ~\_____ノ| ∧_∧
. _/ ヽ \|.Σ(´Д`; ). _/ ヽ \| Σ(´Д`; )
. | ヽ \ / ヽ、 | ヽ \ / ヽ、
. | |ヽ、二⌒) / .| | | . | |ヽ、二⌒) / .| | |
. .| ヽ \\ (⌒\|__./ ./ . .| ヽ \\ (⌒\|__./ ./
. ヽ、____ \\ ~\_____ノ| . ヽ、____ \\ ~\_____ノ|
0560デフォルトの名無しさん
NGNGちゃんと文読め。
二重否定を避けたいって書いてるだろうが。
どの話を受けて俺が書いたか考えろ。
0561デフォルトの名無しさん
NGNG何がおかしいと考えてるのかわからん。
0562デフォルトの名無しさん
NGNGCMP( "afo", ==, "vaka" );
0563デフォルトの名無しさん
NGNG気をつければいいのだが、
if文の中に関数を書くのにも多少抵抗がある。
たとえで言うのなら、
if(hoge())
では式の評価が関数一つなので問題はないが、
if((hoge() && hage())
ではhoge()の結果が偽であればhage()は実行されない。
気をつけて書けば、実行速度が良くなるのだが、
評価順序を間違えるとバグの原因になる諸刃の剣。
0564デフォルトの名無しさん
NGNGナニをいまさら...(w
あわてて glib 持ち出したのはおまえだろ?
0565デフォルトの名無しさん
NGNG> if(hoge() == TRUE)とかの方が良いな。
と
> とにかく二重否定は避けたい。
がどう繋がってるのかちっとも読めない。
第一みんな、if(hoge() == TRUE) の弊害の事を指摘してるのであって、
二重否定うんぬんの話は誰もしていない。
0566デフォルトの名無しさん
NGNG仕様と実装の区別がついているか?
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNG| / / |// / /|
| / / |_|/|/|/|/| (´⌒(´⌒`)⌒`)
| / / |文|/ // / (´⌒(´祭だ!!祭だ!!`)⌒`)
|/ /. _.| ̄|/|/|/ (´⌒(´∧ ∧⌒`)`)`)⌒`)
/|\/ / / |/ / (´⌒(´(,゚Д゚ )つ `)`)
/| / / /ヽ (´⌒(´⌒ (´⌒( つ |〕 /⌒`)⌒`)
| | ̄| | |ヽ/| 遅れるな!! ( | (⌒)`)⌒`)
| | |/| |__|/. ∧_∧ ⌒`).ドし'⌒^ミ `)⌒`)ォ
| |/| |/ (´⌒(´( ´∀` )つ ド ∧_∧⌒`)
| | |/ (´⌒(´( つ/] / ォと( ・∀・ ) 突撃――!!
| |/ ( | (⌒)`) ォ ヽ[|⊂[] )`)
| / (´ ´し'⌒^ミ `)`)ォ (⌒) |
0569デフォルトの名無しさん
NGNGじゃあVB〜は取り消すよ。
数値とbool(真偽値)は全く別の概念だろ。それを相互に変換する理由が無い。
0570デフォルトの名無しさん
NGNGほう、仕様ね。
で、C++ の話だとしても、0 や非 0 が bool 型にキャストできるのがおかしい
と思う根拠は何だ?
0571デフォルトの名無しさん
NGNG#define FALSE 0
#define !TRUE FALSE
#define !FALSE TRUE love
0572デフォルトの名無しさん
NGNG別の概念だから。
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNG言語仕様で、できるようになっている。
その方が便利だからだ。
(多くの CPU は 0 と非 0 を判定するのに便利に命令セットを持っている)
その仕様を否定したいなら、変換してはならない理由を示せ。
0575デフォルトの名無しさん
NGNG> で、C++ の話だとしても、0 や非 0 が bool 型にキャストできるのがおかしい
> と思う根拠は何だ?
ハァ?
俺はそんなことはひとことも言っていませんが。
0576デフォルトの名無しさん
NGNGいまはスタイル論争だけ。
0577デフォルトの名無しさん
NGNGscanfが間違い。
0578デフォルトの名無しさん
NGNG別の概念だとキャストできるのがおかしいのは何故だ?
真偽値だろうが数値だろうが、データはデータだ。
変換できておかしくは無い。
0580デフォルトの名無しさん
NGNG0581デフォルトの名無しさん
NGNG否。
組み込みの bool 型は、非 false を受けた時 必ず true と認識する点で
typedef / #define とは明確に違う。
0582デフォルトの名無しさん
NGNGたとえ、
#define TRUE !FALSE
にしたとしても、
BOOL b = TRUE;
で困る。
0583デフォルトの名無しさん
NGNG#define false 0
#define true (!false)
こう定義すれば非falseは必ずtrueになると思うが
0584デフォルトの名無しさん
NGNG0と非0を判定するのに便利な命令セットを持っていることは
キャストできるのに便利な理由になっていない。
true/falseの実装が0/非0にすれば判定が便利になる命令ってだけだ。
よって変換できる理由は無い。ちなみに無いのもの理由を出すことは不可能。
0585570
NGNG0586デフォルトの名無しさん
NGNGさっぱりだ。
0587デフォルトの名無しさん
NGNG人はそれを0フラグと呼びます。
そしてOSのシステムコールではえてして
0が真となる仕様となっております。
0588デフォルトの名無しさん
NGNG真とか偽の問題じゃなくて、-1(負?)がエラーってだけだろ。
0589デフォルトの名無しさん
NGNGなんないでしょ
0591デフォルトの名無しさん
NGNGなんで?
!0==!0は真にならないの?
0592デフォルトの名無しさん
NGNG別の概念であってもデータである以上キャストはできるが
キャストした結果意味があるとは限らない。
数値(文字コードではなく)を文字にキャストしても意味は無い。
数値を真偽値にキャストしても意味は無い。
0593デフォルトの名無しさん
NGNG! を根底から覆す画期的意見だな!
0594誰が誰だか
NGNG#define FALSE 0
#define !TRUE 0
#define !FALSE 1
名前
0595デフォルトの名無しさん
NGNG0 と非 0 を判定するのに便利な命令セットを持っている事に着目して、C では
0 を偽、非 0 を真として扱う仕様になった。
その偽を false、真を true にそのまま変換したいと言う要望は無視するのか?
0596デフォルトの名無しさん
NGNGプログラマがtrueかfalse以外を入れようとすることまで面倒見切れるかよ。
0597デフォルトの名無しさん
NGNG関係無い話を持ち出すなよ。
0598デフォルトの名無しさん
NGNG!0 は 1 になる(よね?まあ、1でなくてもなにか特定0以外の数字になる)
で 3 や 5 は非false な訳だが、
true == 3
は偽になる
0599デフォルトの名無しさん
NGNG面倒見てるのが bool 型だろ。
0600デフォルトの名無しさん
NGNG非falseは!falseでしかない。
それ以外を入れようとすることまでは面倒見切れない。
0601599
NGNG0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNG最初っから真偽値型を作らなかったCが糞なだけ。
もし最初っから真偽値型があったのなら数値型に変換できる理由は無い。
0604デフォルトの名無しさん
NGNGだから、組み込み型ならそれでもOKなんだってば
0605デフォルトの名無しさん
NGNGそこまでする必要あるのか?
0606デフォルトの名無しさん
NGNG0607デフォルトの名無しさん
NGNG/ ヽ ./ .∧ /#####ヽ
/ `、 / .∧ / ##### \
/  ̄ ̄ ̄ ヽ / ##### ヽ
l::::::::: .l / ##### ヽ
|:::::::::: -==・- -==・- | | ::::::::: :::::::|
.|::::::::::::::::: \___/ | | -・==- -・==- :::::::::|
ヽ::::::::::::::::::: \/ 丿 | \___/ :: ::::::::|
ヽ::::::::::::::::: / ヽ \/ :::::::::::|
____>::::::::::::::::: <_ ヽ ::::;;;::::::::丿
/:::::::::::::::::::::::: ::::::::: /⌒ヽ⌒、⌒、⌒、 ::::::::: :<___
|::::::::::::;;;;;;;;;;;;;::::::::::::::: / /ヽノヽノヽノヽノ ::::::::::::: :::::::: :::ヽ
|:::::::::::::::::::::::: / /:::::::: ::::::::::::::::::::: ::::::::
bool論争しに行こうか? いいねぇ〜
0608デフォルトの名無しさん
NGNG詭弁の特徴のガイドライン
http://ton.2ch.net/test/read.cgi/gline/1028811653/
0609デフォルトの名無しさん
NGNG「もし最初っから真偽値型があったのなら」
0610デフォルトの名無しさん
NGNG/ ヽ ./ .∧ /#####ヽ
/ `、 / .∧ / ##### \
/  ̄ ̄ ̄ ヽ / ##### ヽ
l::::::::: .l / ##### ヽ
|:::::::::: -==・- -==・- | | ::::::::: :::::::|
.|::::::::::::::::: \___/ | | -・==- -・==- :::::::::|
ヽ::::::::::::::::::: \/ 丿 | \___/ :: ::::::::|
ヽ::::::::::::::::: / ヽ \/ :::::::::::|
____>::::::::::::::::: <_ ヽ ::::;;;::::::::丿
/:::::::::::::::::::::::: ::::::::: /⌒ヽ⌒、⌒、⌒、 ::::::::: :<___
|::::::::::::;;;;;;;;;;;;;::::::::::::::: / /ヽノヽノヽノヽノ ::::::::::::: :::::::: :::ヽ
|:::::::::::::::::::::::: / /:::::::: ::::::::::::::::::::: ::::::::
TRUELOZVE? FALSE
0611デフォルトの名無しさん
NGNG0612デフォルトの名無しさん
NGNGboolなのにtrueと比べられないよりいいだろ。
0613デフォルトの名無しさん
NGNGだからちゃんと読めって!
俺は!=FALSEと書くよりも==TRUEが良いと言っているだけ。
if(hoge()==TRUE)の弊害?
アホか。
0614デフォルトの名無しさん
NGNG苦しくなったからって誤魔化すのはやめろ
0615デフォルトの名無しさん
NGNGそういう書き方に慣れているからだろうけどね。
0616デフォルトの名無しさん
NGNG>>528 と >>598 を見ていないのか?
それともその上で言ってるのか?
0617デフォルトの名無しさん
NGNGその話はとうの昔に終わってんだよハグェが
==TRUE はやめろ。どうしてもやりたいなら != FALSE
過去ログ読んで回線切って師ね
0618デフォルトの名無しさん
NGNG「_Bool/book変数が保持する真偽」
の区別が付かない香具師がいるな
0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNGboolだとかガキ向けの言語仕様はすっこんでろ。
大人ならば全て自分の責任で判断するのさ。
0622デフォルトの名無しさん
NGNG0623デフォルトの名無しさん
NGNG0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNGだからね。
>>595 のように、そのような仕様になっている理由はちゃんとある。
それを糞と呼ぶのは自由だが、「もし最初っから真偽値型があったのなら」 なんて
絶対あり得ない仮定はもっとクソだって言ってるの。
603 の方が苦しい発言だろうが。
0626デフォルトの名無しさん
NGNGreturn !TRUE;
0627デフォルトの名無しさん
NGNGそんなのは頼むから他スレ行ってやってくれよ。
0629デフォルトの名無しさん
NGNGだから数値と真偽値が変換できる必要性を示せ。
0630デフォルトの名無しさん
NGNG0631!625
NGNG俺はそもそも真偽値(bool型)なんてない方がいいと思っているんだがどうだ?
0633デフォルトの名無しさん
NGNG595 を読んでまだ分からないか?
アフォですか?
0634デフォルトの名無しさん
NGNG文字の終わりは\0だろ。
0635デフォルトの名無しさん
NGNG時代遅れ
>>632
どう便利なの?
0636デフォルトの名無しさん
NGNG\0は偽ですが。
もしもfalseのみ偽となり、0と互換性がなかったら偽とならず不便だ。
0637デフォルトの名無しさん
NGNG>>595は0/非0を判定する命令があっても数値と真偽値が変換できる必要性とは
関係ないと反論した。
0638デフォルトの名無しさん
NGNGおこちゃまですか?
0639デフォルトの名無しさん
NGNG・・・・・・・・。
Cでプログラム書いたことある?
0640デフォルトの名無しさん
NGNGだからどう不便なんだYO!
おまえら不便って言いたいだけちゃうんかと(略
0641デフォルトの名無しさん
NGNG∧_∧ ∧_∧
( ´Д`) ∧_∧ ( ´Д`) ∧_∧
/ \ (´Д` ) / \ (´Д` )
__| | | |_ / ヽ、 .__| | .| |_ / ヽ、
||\  ̄ ̄ ̄ ̄ / .| | | ||\  ̄ ̄ ̄ ̄ /| | |
||\..∧_∧ (⌒\|__./ ./ .||\..∧_∧ (⌒\|__./ ./
||. . ( ) ~\_____ノ| ∧_∧. ||. .( ) ~\_____ノ| ∧_∧
. _/ ヽ \| (´Д` ). _/ ヽ \| (´Д` )
. | ヽ \ / ヽ. | ヽ \ / ヽ、
. | |ヽ、二⌒) / .| | | | |ヽ、二⌒) / .| | |
. .| ヽ \∧_∧ (⌒\|__./ ./ . .| ヽ \∧_∧ (⌒\|__../ ./
ヽ、___( ) ~\_____ノ| ∧_∧ ___( ) ~\_____ノ| ∧_∧
. _/ ヽ \| (´Д` ). _/ ヽ \| (´Д` )
. | ヽ \ / ヽ、 | ヽ \ / ヽ、
. | |ヽ、二⌒) / .| | | . | |ヽ、二⌒) / .| | |
. .| ヽ \\ (⌒\|__./ ./ . .| ヽ \\ (⌒\|__./ ./
. ヽ、____ \\ ~\_____ノ| . ヽ、____ \\ ~\_____ノ|
0642デフォルトの名無しさん
NGNGなにが不便なの?
0643デフォルトの名無しさん
NGNGstrlenとか自分で書いてみれば分かると思うが
0644デフォルトの名無しさん
NGNGある。
ちなみにおまえは C 以外でプログラム書いたことあるのか?
0645デフォルトの名無しさん
NGNGPerlを少々・・・
あれは文字列をひとつのものとして扱えるから。
0646デフォルトの名無しさん
NGNG0647デフォルトの名無しさん
NGNG俺は不満じゃない。
0648デフォルトの名無しさん
NGNGstrlenでは文字のポインタが\0になるカウンタを+1しながら
まで繰り返すだけだろ。
0649デフォルトの名無しさん
NGNGreturn true;
}
のほうがいいですか?
0650デフォルトの名無しさん
NGNG例はstrcpyの方がいいか。
0651648
NGNGstrlenでは文字のポインタの値が\0になるまでカウンタを+1しながら
繰り返すだけだろ。
0652デフォルトの名無しさん
NGNG良いじゃん、これで。
0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNGvoid main()がいい
0655デフォルトの名無しさん
NGNG真が非0に、偽が0に”変換できる”ことが不満。
0656デフォルトの名無しさん
NGNGprint;
}
0657デフォルトの名無しさん
NGNG反論になってないよ。単に反対しただけだろう。
0658デフォルトの名無しさん
NGNGmainは真偽値を返すのではなくエラーコードを返す方がなにかと便利だから
やっぱりintがいいんじゃない。
0659デフォルトの名無しさん
NGNG不満・愚痴は死滅スレかマ板で
0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNG反論になってる。よく読め。
0662デフォルトの名無しさん
NGNGprint;
}
0663デフォルトの名無しさん
NGNG0664デフォルトの名無しさん
NGNG0665デフォルトの名無しさん
NGNG追加された意味がわからない人ですか?
0666デフォルトの名無しさん
NGNGどこが反論になってるかさっぱり分からないから、レス番号とその分を示せ。
0667デフォルトの名無しさん
NGNG真性のあふぉだな。ないと困るという声が強かったからこそ
わざわざ追加されたのに
0668デフォルトの名無しさん
NGNG世の中の潮流に合わせただけだと思っているんですけど。
でも使うことはなさそう。
0669デフォルトの名無しさん
NGNG0670デフォルトの名無しさん
NGNGおいおい。使われることはなさそうなんて言っていないぞ。
"俺は"使うことはなさそうと言っているだけ。
0671デフォルトの名無しさん
NGNGさっぱりだ。
0672デフォルトの名無しさん
NGNGじゃあ反論になってないと言うな。レスぐらい読め。
0673デフォルトの名無しさん
NGNG分かってるよ
つまりおまえは真偽値型の必要性が分かってないんだろ?
0674デフォルトの名無しさん
NGNG0675デフォルトの名無しさん
NGNG0676デフォルトの名無しさん
NGNGどの辺が困るんだったっけ?
0677デフォルトの名無しさん
NGNGああ。
なくても全然困らないし。
0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNG・・・今までの話と何の関係が?
0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNGどういうときにTRUEと比べるの?
0684デフォルトの名無しさん
NGNGあぁ、そうだった。
0685デフォルトの名無しさん
NGNG読んで分からなかったから訊いただけだ。
それとも、反論があることを証明できないのか?
その方法は簡単、666 の事を実行するだけだ。
そうしてくれないなら以降無視する。
0686デフォルトの名無しさん
NGNG0687デフォルトの名無しさん
NGNG俺はtypedefdefineのboolを使ったことがないから、真偽値の必要性がわからないんだ。
0688デフォルトの名無しさん
NGNGctype.hにはishoge系の関数があるだろ。
過去の資産もあるからそう簡単には変えられないだろうと言いたかった。
0689デフォルトの名無しさん
NGNGわからないが、617 はそう書けと主張している。
0691687
NGNGtypedef & #define
0692デフォルトの名無しさん
NGNGトークンはホワイトスペースで区切る癖をつけた方がいいぞ。
0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNG型が変わる程度でロジック弄る必要はないのでは?
0696デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNGちょっと待ってろ。
0699デフォルトの名無しさん
NGNG勝手に思考してください
マジレスすると、GTK+ とかが参考になるかもね
0700デフォルトの名無しさん
NGNG∧_∧ bool 論争終わり? γ
(::::::::::: ) なんだか寂しいな・・・ ......................................
.(○::::::: ) .::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::........
~"''"""゛"゛""''・、 ...:::::;;;'' ';;;:::::.......
"”゛""''""“”゛゛""''' "j' ...::::;;;'' '';;;::::::.........
:::::ヘ :::::....ヽ :::;;;ノ ::( ....::::::;; '';;;::::::::::.......
:: ゝ :::::......ノ:;;../ ~~^^ ~~~~~^^^~
0701デフォルトの名無しさん
NGNG軒並みあふぉだったことは分かった
0702デフォルトの名無しさん
NGNG0703デフォルトの名無しさん
NGNGenum bool = { FALSE = 0, TRUE = 1, ERROR = -1};
これをやろう。
0704デフォルトの名無しさん
NGNGネタ
0705デフォルトの名無しさん
NGNGその形が変わるのがちょっとなぁ。
一方の自作ishogeは_Boolで既存のライブラリはintは違和感がある。
0706デフォルトの名無しさん
NGNG「まあ、整数値が真偽値に変換できたほうが便利と言ってるやつらは
軒並みあふぉだったことは分かった」
0707デフォルトの名無しさん
NGNGそれらを区別する意味って何かあるの?
0708デフォルトの名無しさん
NGNGお疲れさん。
0709デフォルトの名無しさん
NGNGchar *s;
for (s=str; *s; s++)
....;
とか。
0710デフォルトの名無しさん
NGNG同じようなこと言ったら、仕様と実装の区別が付かない阿呆と言われますた。
0711デフォルトの名無しさん
NGNGその代わり分かりにくくなるけどね。
0712デフォルトの名無しさん
NGNGまあ、Cではこう書くもんだと慣れた。
0713デフォルトの名無しさん
NGNGfor ( s=str; *s != '\0'; s++ )
でも十分簡潔だが?分かり安いし
まあ、おれは 709 で書くけどな
0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNG慣れの問題じゃない?俺は比較してるほうが読みにくいかも。
0716デフォルトの名無しさん
NGNG0717デフォルトの名無しさん
NGNGそんなことを言ったらすべてのデータはバイナリなんだからと区別する意味ってあるの?ってなりますよ。
高級言語になればなるほどマシン語コードから離れてより概念的なものになるもんです。
0718デフォルトの名無しさん
NGNGだからどちらでもいい。
前者は C プログラマにわかりやすい。
後者は他言語プログラマにわかりやすい。
0719デフォルトの名無しさん
NGNGそれならuntilとかの方が分かりやすい
*s=='\0'ってなるから。
0720デフォルトの名無しさん
NGNG701=714 は 685 に答えられなかった 672 なの?
0721デフォルトの名無しさん
NGNG個人的にはCでは区別しなくてもいいと思ってます。
0722デフォルトの名無しさん
NGNG他言語プログラマはそもそも文字列が文字の配列ってのがやりにくいかも。
0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNGいや、配列がコピーされて関数に渡らないことのほうが・・・
0725デフォルトの名無しさん
NGNG717じゃないが、+で二つの値を足せるだけでも十分高級だと思うが。
0726デフォルトの名無しさん
NGNGおいおい、おれは 701 だが 714 ではない。 672 も知らん。
0727デフォルトの名無しさん
NGNGいいから釣られるなよ。
0728デフォルトの名無しさん
NGNGアセンブラでもできると思うが。
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNGまぁuntilなんて予約語は無い訳だが。
0731デフォルトの名無しさん
NGNGそりゃそうかもしれんが、ここでは
for ( s=str; *s; s++ ) と
for ( s=str; *s != '\0'; s++ ) の場合だろ。
つうか前者ようなコードを初めて見て後者のコードと同じ意味と
すぐに分かった奴っているんだろうか?
0732デフォルトの名無しさん
NGNG・・・どういう事?
引数に指定すれば配列丸ごと値渡しになるけど、そういう事ではない?
0733デフォルトの名無しさん
NGNG0734デフォルトの名無しさん
NGNGアセンブラだともっといろいろかかないとだめじゃん
>>729
一応高級言語は環境に依存しないという意味だってことは分かっています(^_^;)
0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNG配列の先頭アドレスの値渡しだろ?
配列がコピーされるわけじゃない。
0737デフォルトの名無しさん
NGNGwhile (*s++ = *t++);
とかもな。
0738デフォルトの名無しさん
NGNGそんな意味だったっけ?
0739デフォルトの名無しさん
NGNGそれとももっと高級な言語が出てきたからCが低級言語にでもなったとでもいうのかな。
0741デフォルトの名無しさん
NGNG初めて見てそう判断するのは難しいが、そのような人は C プログラマーとは
言えないだろう。
0742デフォルトの名無しさん
NGNG0743デフォルトの名無しさん
NGNGRISCじゃないのは1命令で書けますよ
0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNGいいかどうか迷うくらいにはそれとのレイヤーが薄い。
0746デフォルトの名無しさん
NGNG0747デフォルトの名無しさん
NGNG高級アセンブラ・・・
0748734
NGNGでも低級言語だとはおもわないなー
0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNG0752デフォルトの名無しさん
NGNG何と比較していたか、または何と比較しているかが本質と思われ。
そこを統一しないと永遠に論争は解決しないと思われ。
0753デフォルトの名無しさん
NGNG個々の環境の命令によらず+で足せるのは高級だと見ていい?
0754デフォルトの名無しさん
NGNG0755デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNGDelphiを低級言語っていうな!
0758デフォルトの名無しさん
NGNGアセンブリ言語とは明確に違う。
アセンブリ言語はコードに無い動作は絶対にしない。
C はある程度の裏処理があり、また逆に最適化によって書いてあるコードが実行
されない場合もある。
0759デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNG学校でそう教えられたんだね。よしよし
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNG0763デフォルトの名無しさん
NGNGだからC++ではstd::stringなんか使うわけで。
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNGx86命令からさらにマイクロコードに変換されて実行される
最近のIntelのCPUとかだとそうとも言えんのでは・・・・・・。
0766デフォルトの名無しさん
NGNGただ、アセンブリ言語が一番低級なのは間違いない。
それよりレベルを下げると、ソフトウェアではなくなる。
0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG言語仕様にのみ関係する。
0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNG言っていることは正しいが場違い。
0771デフォルトの名無しさん
NGNGそれが正しい根拠は。
検索エンジンの検索結果が正しいなら、いくらでも自作自演できるが。
0772デフォルトの名無しさん
NGNG#define 高級 (!低級)
(^o^)/
0773デフォルトの名無しさん
NGNG0774デフォルトの名無しさん
NGNG機械語は高級言語だたのか
0775デフォルトの名無しさん
NGNGという風にしたいんですが・・・
0776デフォルトの名無しさん
NGNGそれじゃダメだよ
!低級
とした時点である値に決まってしまうから
0777デフォルトの名無しさん
NGNG日本語の識別子が利用可能なコンパイラを使用してください。
0778デフォルトの名無しさん
NGNG0779デフォルトの名無しさん
NGNGじゃあ if (C言語) ってすればいいんですか?
0780デフォルトの名無しさん
NGNGすまん、それ漏れが貼った
0781デフォルトの名無しさん
NGNG論争を引き起こした張本人はあんたか!?
0782デフォルトの名無しさん
NGNGそれは便利だ(と思われていた)から。今となっては時代遅れだが
気付いたときには時すでに遅し。
>>776
もしくは if (C言語 != 低級)
07834=780
NGNG______
/_ |
/. \ ̄ ̄ ̄ ̄|
/ / ― ― |
| / - - |
||| (6 > |
| | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | | ┃─┃| < 正直、すまなかった
|| | | | \ ┃ ┃/ \________
| || | |  ̄  ̄|
0784デフォルトの名無しさん
NGNG0785デフォルトの名無しさん
NGNG0786デフォルトの名無しさん
NGNGない。
C99には_Boolってのがあるらしいが。アンダーバーが決め手☆
0787デフォルトの名無しさん
NGNGコンパイラが複雑になるわけだ、それだと
0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
NGNG腹 減 っ た 。
ラ ー メ ン で も 食 う か 。
0790デフォルトの名無しさん
NGNG真偽値がないと困るって言ってるヤツは
Cでまともなプログラムを書いたことのない
他言語使いなんだろうな。
分かってるふりして参加してるだけ。
0791デフォルトの名無しさん
NGNG0792デフォルトの名無しさん
NGNGいや、お前は間違いなく他言語使い。
0793デフォルトの名無しさん
NGNG0794デフォルトの名無しさん
NGNG______
/_ |
/. \ ̄ ̄ ̄ ̄|
/ / ― ― |
| / - - |
||| (6 > |
| | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | | ┃─┃| < 正直、うまい豚骨ラーメンを食ったことがない
|| | | | \ ┃ ┃/ \________
| || | |  ̄  ̄|
0795デフォルトの名無しさん
NGNG0796デフォルトの名無しさん
NGNG表記がばらばらってどゆことよ?
0797デフォルトの名無しさん
NGNG他言語使いってナニよ?
おまえはC言語しか使ったことないヒキコモリオタなんだろ?
0798もまずにパピコ
NGNG0799デフォルトの名無しさん
NGNGたとえあっても表記はバラバラになると思うが。
ゼロ/非ゼロだけで十分。
0800デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNG0802デフォルトの名無しさん
NGNGところが、わざわざ TRUE と FALSE を定義して
if ( b == FALSE )
したがるやつがいるわけですが
0803デフォルトの名無しさん
NGNG______
/_ |
/. \ ̄ ̄ ̄ ̄|
/ / ― ― |
| / - - |
||| (6 > |
| | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | | ┃─┃| < 正直、intで十分。
|| | | | \ ┃ ┃/ \________
| || | |  ̄  ̄|
0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNGCの基本を少しかじったてみただけのくせに
その仕様の是非を語っている厨房のことだが。
つまりお前みたいな奴ね。
0806デフォルトの名無しさん
NGNGでは次は算術シフトと論理シフトについて語ってみようか。
0807805
NGNG× Cの基本を少しかじったてみただけのくせに
○ Cの基本を少しかじったみただけのくせに
0808デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
おまえはひきこもって仕様書ばっか読んでて
実際にプログラム書いたことなんてないんだろ?
0809デフォルトの名無しさん
NGNGCと関係ないような
0810デフォルトの名無しさん
NGNG例え自分が使わないとしても規格として存在しているなら今後bool型を定義する奴は
少なくなるしソースを読む側の負担が減る。
0811デフォルトの名無しさん
NGNGあるよ。明示的に論理右シフトする方法がCにはない
0812デフォルトの名無しさん
NGNG0813デフォルトの名無しさん
NGNGじゃあ if (b == FALSE) と書けと言うのか?
0814デフォルトの名無しさん
NGNGそれなら(unsigned int)ってすればいいと思うけど
0815デフォルトの名無しさん
NGNGunsigned でもダメか?
0816デフォルトの名無しさん
NGNGあれ?それじゃダメだったんじゃ.....うる覚えスマソ
0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNGそんな事は一言も言ってないが。
書きたくなけりゃ書かなければ良い。
0819デフォルトの名無しさん
NGNG大抵の処理系がsignedなら算術、unsignedなら論理になるってだけだと思った。
0820デフォルトの名無しさん
NGNGラ ー メ ン 食 っ た 。
イ ン ス タ ン ト だ が う ま か っ た 。
>>789 博多にでも逝ったらどうだ。
しかし正直、俺様用しおりって役に立たないな。
0821デフォルトの名無しさん
NGNGつまり if が bool 型しかとれないようにすれば
if ( b == FALSE )
なんて書こうとするばかはいなくなるってこった
0822デフォルトの名無しさん
NGNG0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNGそれって仕様で決まってる?
0825デフォルトの名無しさん
NGNG#define isTrue(x) x==0
#define isFalse(x) x!=0
あたりにしといたら?
問題あったらココだけ置換して再コンパイル。
if(b==TRUE)だのif(b==FALSE)だのと書く人は、
C FAQ一回読んどいた方が・・・
0826デフォルトの名無しさん
NGNGだから大抵の処理系ではと言っているでしょ。
0827デフォルトの名無しさん
NGNGif(hoge)と
if(hoge!=FALSE) とか if(hoge!=NULL)
if(!hoge)と
if(hoge==FALSE) とか if(hoge==NULL)
の違いって、パッと見て理解しにくいほど差があるか?
ある程度ソースを読んだ経験があれば、どちらの
スタイルで書かれていようが関係ないと思うんだが。
0828デフォルトの名無しさん
NGNG#define isFalse(x) x==0
0829デフォルトの名無しさん
NGNGだからね
if ( b == FALSE )
としたいやつらってのは b の型を
明示したいってことらしいのね
0830デフォルトの名無しさん
NGNG論理シフトじゃなくて算術シフトだろ。
符号付き整数型の右シフト>>が算術シフトであるか論理シフトであるかは実装依存。
論理シフトはunsignedキャストで符号無しにすればできる。
0831デフォルトの名無しさん
NGNGいや、だからそれが論争のネタになるわけですが
0832デフォルトの名無しさん
NGNGあ、逆だったのねスマソ
0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNG関数の中で変数の型がすぐに分からないほどナガーイ関数
書いてる馬鹿に取っては、問題なのかもねえ。
0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNG0837デフォルトの名無しさん
NGNG0838デフォルトの名無しさん
NGNGでも型くらい上の方みればすぐわかると思うが。
if (p == NULL) は分からんでもないが
if (b == FALSE) ってのは・・・
0839デフォルトの名無しさん
NGNGまあ、事の発端では変数でなく関数ってことだったんですが
if ( hoge() == TRUE )
てか過去ログ読まずにレスしないで
0840デフォルトの名無しさん
NGNGp や b が関数だった場合は?
0841デフォルトの名無しさん
NGNG==での型の明示にこだわってる奴はただの初心者。
0842デフォルトの名無しさん
NGNGそれは大半の人間が分かってる
しかしプログラムを書くのは中、上級者だけではない
0843デフォルトの名無しさん
NGNG0844デフォルトの名無しさん
NGNGif (hoge()) ...でいいと思うが。
hoge()の型が分からない?
返り値の型が分からないような関数使うな!!
0845デフォルトの名無しさん
NGNG聞きたい。
実際に込み入ったソースでそれを目にすると、どうして見づらいと思う?
0846デフォルトの名無しさん
NGNG型よりも意味付けの方が重要。
つまり関数が失敗か成功かなど。
0847デフォルトの名無しさん
NGNG型が分からんというより、見ただけで(調べないと)分からないのがいやってこと
だったと思う。本人じゃないので知らんが
0848デフォルトの名無しさん
NGNGCプログラマならif(hoge==TRUE)よりもif(hoge)の方がわかりやすいだろ
0849デフォルトの名無しさん
NGNG関数の戻り値なんて、関数仕様できまってるのは0と0以外だったりするでしょ?
別にそれはCの仕様じゃなくて、単なる約束事でしかないし。
NULLポインタをソース上で0(またはヘッダでデファインされるNULL)と書くのは、
0は整数ではなくてNULLポインタをあらわす特別なシンボルだからってのは知って
る上での議論ですか?これ。
0850デフォルトの名無しさん
NGNG述べていることは正しいけど、何を訴えたいのかが書かれていないよ。
0851デフォルトの名無しさん
NGNG別にわからなくてもいいような気がするけど。
重要なのはその関数を真偽の判定につかえるかどうかだと思う。
0852デフォルトの名無しさん
NGNG==があった方が分かりやすいと思ってる奴はただの初心者。
上級者ならどちらだろうが関係ない。
0853デフォルトの名無しさん
NGNGごめそ。
だからBOOLをdefilneしてif(hoge==FALSE)だのというのは、閉
じてない世界で一般的につかうのはキケンでさえある用法だとオモイマス、
ということで。
外部とのコミュニケーションが全くない閉じた世界で、全てその
defineをつかうという「コーディング規定」があって、全員が
それを守る、と言う特殊な環境なら、まあいい・・・のかな?
0854デフォルトの名無しさん
NGNG0855デフォルトの名無しさん
NGNG既出だが、実例として glib があるのだよこれが
0856デフォルトの名無しさん
NGNGレス先間違った?
0857デフォルトの名無しさん
NGNG0860857
NGNG== があるかどうかを気にする香具師は DQN ケテーイという事でよろしいか?
0861デフォルトの名無しさん
NGNG0863デフォルトの名無しさん
NGNG#define TRUE 1
#define FALSE 0
ってして関数の中で return FALSE; とかするのはいいのよ。
でも真偽値のつもりで返してるなら
if (!hoge())じゃない?
0864デフォルトの名無しさん
NGNGここでは FALSEが0 と(マクロ等を使って)定義されている
という前提の上で話をしているんだと思うが?
それでも何かいけないのか?
0865デフォルトの名無しさん
NGNG俺も賛成。
0866デフォルトの名無しさん
NGNG何が不満なの?
0867デフォルトの名無しさん
NGNGそれについての答えは、「まずいよ。」で、とっくの昔に終了してます。
0868デフォルトの名無しさん
NGNGtypedef int bool
#define TRUE INT_MAX
#define FALSE INT_MIN
0869デフォルトの名無しさん
NGNGということにしたのですね :)
0870868
NGNG0871デフォルトの名無しさん
NGNGアレって何だろ。
0872デフォルトの名無しさん
NGNG訂正後につっこむ馬鹿ハケーン
0874デフォルトの名無しさん
NGNGどうせならこうでしょう
typedef enum {
TRUE = INT_MAX;
FALSE = INT_MIN
} bool;
0875デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
誰が今そんな話をしてるの?
0876855
NGNGそれを「仕様」として外部に公開しているなら、あとはそれをつか
うクライアントの責任ですね。
ただそれはそのライブラリのローカルルールであって、一般的で
あると思い込んでしまうべきではないとおもうのですが。
現在各々が担当しているプロジェクトが、それに準じるローカル
ルールを明示的に決めていて、そのプロジェクトを使用する側の
人間にきちんと公開する、というルールが守られるなら、BOOL
デファインしてもかまわないと思いますが。
それがCのルールだと思い込む人がいるのは危険だと思います。
あくまで(よくつかわれているけれど)ローカルルールだとい
うことで。
0877デフォルトの名無しさん
NGNG857=871 ですが何か?
0879デフォルトの名無しさん
NGNGなにぃ!?
0880デフォルトの名無しさん
NGNG> あくまで(よくつかわれているけれど)ローカルルールだとい
> うことで。
はあ?誰がそんなこと思いこんでるんだよ?
0881デフォルトの名無しさん
NGNGで、その「仕様」がいろいろと混在するのが問題なわけですな
0883デフォルトの名無しさん
NGNG思いこんでる一番痛いヤツ。
0885デフォルトの名無しさん
NGNGVC++初心者ならいても不思議はないが
0886デフォルトの名無しさん
NGNGで、どうなんだ?
「アレ」 が何なのか気になるのかならないのか?
0887デフォルトの名無しさん
NGNG変数も(関数同様)型をつけずに宣言するとintになったそうだ。
0888デフォルトの名無しさん
NGNG変数を型指定無しで宣言って、どう書くの? auto?
0889デフォルトの名無しさん
NGNGまあ、それはCの設計者の選択ということだ。
浮動小数点でも0と非0で偽と真ってのはどうかと思うけどな〜
0890デフォルトの名無しさん
NGNG> 変数も(関数同様)型をつけずに宣言するとintになったそうだ。
それは関数外で?
関数内ならc;などと書くとなんの意味もない文だと解釈されるだけだと思うけど
0891デフォルトの名無しさん
NGNGそんなヤツはDWORDとかLPSTRとかもそう思ってるだろ。
話の次元が違うと思う。
0892890
NGNG0893デフォルトの名無しさん
NGNGmain() { x , y = 1; ...}
BASICみたいだね。
0894デフォルトの名無しさん
NGNG0895デフォルトの名無しさん
NGNG0896デフォルトの名無しさん
NGNGあっただろ?voidはなかったけど
0897デフォルトの名無しさん
NGNG0898デフォルトの名無しさん
NGNG0899デフォルトの名無しさん
NGNG0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNG0902デフォルトの名無しさん
NGNG\ /
\ /
\ /
\ /
\ ∧∧∧∧/
< 俺 >
< 予 し >
< か >
─────────< 感 い >──────────
< な >
< !!!! い >
/∨∨∨∨\
/ \
/ \
/ (-_-) \
/ (∩∩) \
/ \
0903デフォルトの名無しさん
NGNG0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNG0906デフォルトの名無しさん
NGNG0907デフォルトの名無しさん
NGNG今までずっと自作自演ですか(爆
0908デフォルトの名無しさん
NGNG0909897
NGNGの7名ということでっか?
0910デフォルトの名無しさん
NGNG0911897
NGNGトリップ付けたきゃつけてね。
0912897
NGNG0913デフォルトの名無しさん
NGNGx;
と書くと宣言になったらしい。
http://www.et.brad.ac.uk/help/.packlangtool/.langs/.c/.ansi.html
の2 Integerのとこ。
0914デフォルトの名無しさん
NGNG質問に質問で返していくとだんだんわけがわからなくなってきますね。
0915デフォルトの名無しさん
NGNG0916デフォルトの名無しさん
NGNGということは、
int a,b;
a=b;
b;
なんて書くとbが先頭で宣言されてねーぞゴルァ!と言われたわけか
0917ラーメン
NGNG0918916
NGNG再定義されているぞゴルァか
0919デフォルトの名無しさん
NGNG0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNGこれはタグのミスか?
0922デフォルトの名無しさん
NGNG#define 名無し TRUE
ななしでいいや…。
0923デフォルトの名無しさん
NGNGだろうな。
0924デフォルトの名無しさん
NGNG0925デフォルトの名無しさん
NGNGお約束の0、NULL、0x00、'\0'についてなのですが、
charやらintやらポインタやらを含む構造体を初期化するときは0x00を使い、
charの配列を初期化するときは0x00ではなく'\0'を使っていたのですが、
そもそもこの使い方は正しいでしょうか?
正しいとすると、結局この2つは等価でしょうか?
0926デフォルトの名無しさん
NGNG0,0x00,'\0'はみな同じ
通常は0を使い、文字の場合は'\0'を使うとみやすいと思うよ。
16進数の0x00は他の16進数と一緒に使う場合に有効かも
0927925
NGNGえっと、キャストのない素の0があると、これがNULLポインタになって・・・・・・
(すみません、よく分かってません)
なんとなくmemsetの第2パラメータとして"値"を使うには
不適のような気がするのですが・・・・・・。
0928926
NGNGNULLや0.0は全ビット0とは限らないし。
0930925
NGNGう〜む、そうなのですか。
やはり構造体ごとに初期化用の手続きを踏むのですよね?
>>929
あぁ、なんとなく分かりました。
memsetの第2パラメータはポインタを要求するところではないので、
直接0と書いても大丈夫(NULL、にはならない)、ということですよね?
0931デフォルトの名無しさん
NGNG>>928
0.0は全ビット0とは限らない。
だが、NULL は全ビット 0 だ。
0932デフォルトの名無しさん
NGNGふつうはNULLと書くとおもうが。
0933926
NGNGそう。
struct KOZO{
int i;
double d;
char *p
};
struct KOZO kozo={0,0.0,NULL};と言う感じで。
0934931
NGNG0935デフォルトの名無しさん
NGNGstruct KOZO kozo={0,};
とかでもいいね。
0936932
NGNG第二パラメータはポインタじゃなかった。
0937デフォルトの名無しさん
NGNG> memsetの第2パラメータはポインタを要求するところではないので、
> 直接0と書いても大丈夫(NULL、にはならない)、ということですよね?
とは言っても、memsetで0を埋める領域に
ポインタ型や浮動小数点型が含まれている時は
ダメだよ。
0938デフォルトの名無しさん
NGNG0939デフォルトの名無しさん
NGNG0940939
NGNG0941デフォルトの名無しさん
NGNG0942925
NGNGたしかに今まで浮動小数点などはほとんど扱っておりませんでした。
なんとな〜く動いていたのですね。
0943デフォルトの名無しさん
NGNG'\0' では初期化するだろ。
0944デフォルトの名無しさん
NGNGだな。
intの配列に1与えてmemset使っても1で初期化されねーもんな。当たり前だけど。
0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNG大抵は一番最初の要素に'\0'を入れるだけ
全要素'\0'で初期化することはあまりしないな
0947デフォルトの名無しさん
NGNG俺は処理系依存を承知でバリバリ使ってる。
ZeroMemory(&ofn, sizeof(ofn));
とか。(Win32)
0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNG{
char *d = dest;
while(count)
{
memcpy(d, src, size);
d += size;
count--;
}
return dest;
}
0950デフォルトの名無しさん
NGNG0ならそれとかbzeroの方が速いんだったか?
0951デフォルトの名無しさん
NGNGそれ、hoge[1] 以降は全部 0 だぞ。
0952デフォルトの名無しさん
NGNGfor (i=0; i<n; i++)
hoge[i]=1;
0953デフォルトの名無しさん
NGNG次 ス レ の 予 感
0955デフォルトの名無しさん
NGNG??
0956デフォルトの名無しさん
NGNGhoge[0]だろ
0957デフォルトの名無しさん
NGNG????
0959デフォルトの名無しさん
NGNG0960デフォルトの名無しさん
NGNGhoge[0]だけが1になったけど、、、
0961デフォルトの名無しさん
NGNGなんでってCの配列の添え字は0からじゃん(笑)
0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNGdouble foo;
void *bar;
とすると、
foo == 0.0、bar == NULL
に初期化されるの?それとも全バイト 0 に初期化されるの?
0965デフォルトの名無しさん
NGNG0966デフォルトの名無しさん
NGNG0967デフォルトの名無しさん
NGNG=0と同じことになる。
doubleに0を入れようとすると0.0を入れようとしたことになるはず。
0969デフォルトの名無しさん
NGNG漏れ立てられない。
0970デフォルトの名無しさん
NGNGあー!
ごめん、なんでそんな勘違いしたんだろ(笑)
0971デフォルトの名無しさん
NGNGhoge が大域変数なんて書いてあったっけ?
0972デフォルトの名無しさん
NGNGなるほろ。じゃあ bar も NULL になる?
0974デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
0975デフォルトの名無しさん
NGNGそう。
0976デフォルトの名無しさん
NGNG(;´Д`)ハァハァ
0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNG(・∀・)
>>971
968 の話とグローバル変数かどうかが何で関係あるわけ?
0979デフォルトの名無しさん
NGNG>>977
速さで言えば宣言の時に初期値指定した方が速い。
0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNG968 は関係なかったね。hoge[1] 以降が 0 になるって話。
0982デフォルトの名無しさん
NGNGでかい配列だから無理がある。
0983デフォルトの名無しさん
NGNGマジ!?
0984デフォルトの名無しさん
NGNG>>981
初期値が省略された要素は 0 で埋められる事が規格で決まっている。
グローバルかローカルかは関係無い。
0985デフォルトの名無しさん
NGNGマジ知らなかった。スマソ
0986デフォルトの名無しさん
NGNGint a[1024]={78,22,-2};とやったらa[3]以降は不定だったと思うけど、、、
0987デフォルトの名無しさん
NGNGアセンブラ出力させたらそんなコード吐いてなかった。
スタックを確保してただけ。おれの処理系がダメなのか。
0988デフォルトの名無しさん
NGNGこのスレの >>1のコピペでいいか?
それよければ漏れが立ててくるが。
このスレ、過去ログ情報がないね。
0990デフォルトの名無しさん
NGNG訊という字を聞にしてほしい
あとはそのままでOK
0991984
NGNGで、誰も次スレ立ててくれんのか?
漏れのホストでは立てられない。
0992デフォルトの名無しさん
NGNG静的変数は一度だけ領域を確保するから初期化してもあまり問題ではないけど。
0993デフォルトの名無しさん
NGNGたてすぎだった。
0995デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1036876790/l50
09961
NGNG0997デフォルトの名無しさん
NGNGお疲れ!!
しかし、漏れのホストずっとスレ立てられないんだけど、何でだ・・・。
同じホストで乱立ヴァカがいるのか。
0998デフォルトの名無しさん
NGNG/⌒ヽ)
i三 ∪
○三 |
(/~∪
三三
三三
三三
0999デフォルトの名無しさん
NGNG∧||∧
( ⌒ ヽ トゥトゥトゥマシェーリー
∪ 。ノ トゥトゥトゥマシェーリー
∪∪
1000デフォルトの名無しさん
NGNG( ,,)┌─┴┴─┐
/ つ 終 了. |
〜′ /´ └─┬┬─┘
∪ ∪ ││ _ε3
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。