トップページ⇒tech
1001コメント268KB

C言語のことは漏れらに聞け!!<40>

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
C 言語ならオレに訊け。

C 言語じゃないなら訊くな。
問題をちゃんと切り分けて、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デフォルトの名無しさんNGNG
【コンパイラ】
gcc
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
>>1
おつ
0004デフォルトの名無しさんNGNG
        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )

http://big.freett.com/scheme_a/num1000.swf
0005デフォルトの名無しさんNGNG
1 乙カレー
0006デフォルトの名無しさんNGNG
<ヨンジュー>

とするのが礼儀であろう・・・。
0007デフォルトの名無しさんNGNG
>>4 はえーよ
0008デフォルトの名無しさんNGNG
>>1おっつかれー!
0009デフォルトの名無しさんNGNG
どうでもいいけどさ、
mallocとかreallocとかの
allocってどういう意味?
辞書にものってない・・・
0010デフォルトの名無しさんNGNG
allocate
0011デフォルトの名無しさんNGNG
memory allocate
reallocate
0012デフォルトの名無しさんNGNG
割り付けか!!
ありあとう
0013デフォルトの名無しさんNGNG
all OK
0014デフォルトの名無しさんNGNG
creat
0015デフォルトの名無しさんNGNG
>>1
おつかれ

でもスレッドタイトルもうちょっとひねれなかったの?
0016デフォルトの名無しさんNGNG
スレタイをひねる必要はない。
00171NGNG
どうせ3日で終わるんだから、どうでもいいよ。
0018デフォルトの名無しさんNGNG
さて、3日ももつかな?
0019前スレ944NGNG
あ。「マルチ禁止」 入れるの忘れたよ・・・。
0020デフォルトの名無しさんNGNG
あげ
0021デフォルトの名無しさんNGNG
C言語とは関係ないんだけど、SHIFT-JISの内字っていったい何文字あるんですか?
0022デフォルトの名無しさんNGNG
なんでCと関係ない話するんですか?
0023デフォルトの名無しさんNGNG
>>22
すんません。
CでSJIS⇔UNICODEの変換ツールを作る予定だったもんで。
0024デフォルトの名無しさんNGNG
「内字」ってはじめて聞いた。
0025デフォルトの名無しさんNGNG
int a = 38;
int i;
for(i = 0;i < 32;i++) {
if(a & (1 << i))
printf("1");
else
printf("0");
}

どうもうまくいきません。何がわるいんでしょうか?
0026デフォルトの名無しさんNGNG
>>25
数字を2進で表示するつもりです、とか何をするつもりで、
どううまく行かないかくらいかけよ。
0027デフォルトの名無しさんNGNG
int a = 38;
int i=32;
for(;i--;) {
if(a & (1 << i))
putchar('1');
else
putchar('0');
}
0028デフォルトの名無しさんNGNG
(´-`).。oO(結局、>>1 に何書いても無駄なのかい。。。) >>21 >>25
0029デフォルトの名無しさんNGNG
>>24
外字領域じゃないんで、「内字」でもいいんじゃないですか?
0030デフォルトの名無しさんNGNG
>>29
外人の反対を内人と言わないだろ。
0031デフォルトの名無しさんNGNG
内地人
0032デフォルトの名無しさんNGNG
内地って本州の事だろ
0033デフォルトの名無しさんNGNG
>>21
こういうレベルから全部、人にいちいち聞いて、
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デフォルトの名無しさんNGNG
bcc32 list4-8.c read_line.c
0036デフォルトの名無しさんNGNG
>>25
ビットが逆順で出るって事か。
if(a & (1 << (31 - i)))
だろ。
0037デフォルトの名無しさんNGNG
>>33
やらなきゃいけないんで。
参考になるサイトとかあったら教えてください。
0038デフォルトの名無しさんNGNG
read_line関数がないだけだろ・・・・
ヘッダーファイルの問題じゃない。
0039デフォルトの名無しさんNGNG
int a = 38;
int i=1<<31;
for(;i;i>>=1) {
if(a & i)
putchar('1');
else
putchar('0');
}
0040デフォルトの名無しさんNGNG
>>37
WideCharToMultiByte と MultiByteToWideChar で検索しろ。
0041デフォルトの名無しさんNGNG
>>35
サンクス
もしかしていちいちこれやんなきゃだめ?
0042デフォルトの名無しさんNGNG
>>34
read_line.c も同時にコンパイルしる。
0043デフォルトの名無しさんNGNG
>>41
CBar で検索しる。
0044デフォルトの名無しさんNGNG
>>40
ありが�d
0045デフォルトの名無しさんNGNG
>>41
MAKE使えるようになれば解決するぞ
0046デフォルトの名無しさんNGNG
ブヒッ?
0047デフォルトの名無しさんNGNG

クワッパ
0048デフォルトの名無しさんNGNG
害厨に毒されて程度が著しく下がってしまった哀れなスレはここですか?
0049デフォルトの名無しさんNGNG
チャット&掲示版
http://www.i-chubu.ne.jp/~tomomi-h/marion/navi/navi.cgi?links=20311
0050デフォルトの名無しさんNGNG
       t    ww              /na
      h 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
while文はループの制御を制御する文で判定に使う式が真である間、ブロック・文・空文を繰り返し
実行する。無限ループを作りたい場合は条件式に0を入れれば良い。

これって正しい?
0053デフォルトの名無しさんNGNG
#define kazu(x) kazu(x)*(x)
main(){
int i , j ;
i=kazu(3);
j=kazu(1+4);
printf("%d\n",i);
printf("%d\n",j);
}

されにこのマクロ終わんなくない?
0054デフォルトの名無しさんNGNG
>>51
マゾでつか?
0055デフォルトの名無しさんNGNG
前橋本に文句がつけられるようになる。
0056デフォルトの名無しさんNGNG
条件式に1
0057デフォルトの名無しさんNGNG
とりあえず、7行プログラミング板いってみ
オレはぶちのめされた
7行でオセロできてたYO!
0058デフォルトの名無しさんNGNG
>>56
だよね?
これやってみ
http://village.infoweb.ne.jp/~fwnt6934/something/html/q-c3/q-c3.htm
0059デフォルトの名無しさんNGNG
あれは特定の分野に依存してる・・・かな?
0060デフォルトの名無しさんNGNG
常に真のループはwhile(1)よりfor(;;)がいいと思うのであります。
0061デフォルトの名無しさんNGNG
>>60
なぜ?
てか>>58のサイトひどいね
0062デフォルトの名無しさんNGNG
>>51void (*signal(int signum, void (*sighandler)(int)))(int);この文で宣言されている変数とその型は?
006360NGNG
>>61

whileだと少なくとも"1"を意識する必要がありますが、
for(;;)だと何も意識しないことが期待される動作につながるからであります。
0064デフォルトの名無しさんNGNG
>>58
問3(2)、0 でも 1 でも正解で、2以上の数値 と -1 で不正解なのは意味不明。

>>60
最適化がかかれば 2 つに違いは無い。
最適化されない場合、for(;;) が無条件でループするのに対して while(1) は
毎回 1 を評価する。
0065デフォルトの名無しさんNGNG
>>62
えーと、
signalは、返却値なしで引数intの関数へのポインタを返す関数で、
引数はintと、返却値なしで引数intの関数へのポインタの二つある!
キタ━(・∀・)━!
0066デフォルトの名無しさんNGNG
>>64
0正解?
間違いだろw
Cの真と偽の定義知ってる?
006766NGNG
>>64
すまそ。問題の方ね。
ただの写し間違いとは思えないから
あのサイトの管理人がまちがってんだろ
0068デフォルトの名無しさんNGNG
>>62
前橋・・・
0069デフォルトの名無しさんNGNG
>>65

返り値の型がvoidなのは、返却値なしとゆーより、
返却値はどう使ってもい〜よ〜だと思っていたが、違うかな?
void *とごっちゃになってるかな?俺。
0070デフォルトの名無しさんNGNG
>>69
でもvoid kansu(void)とかでreturnすると
警告でない?使えないんでない?
てかvoid*ってなんだ?
0071デフォルトの名無しさんNGNG
return;
は使える。
0072デフォルトの名無しさんNGNG
>>69
間違い。voidを返す関数というのは何も返さない。
使おうと思っても何も返ってこないのだから使いようがない。
007369NGNG
>>72

レスTHX。やっぱ勘違いしてました。

>>70
void *は何にでもキャストできる汎用型。
オブジェクト指向〜とかポリモーフィズム〜なんてので使った記憶あり。
0074デフォルトの名無しさんNGNG
>>65
char array[5][5];
上記のarrayの型を引数としてarrayの型を返すような関数ポインタfuncpを定義したい。
どうすれば良いか?
0075デフォルトの名無しさんNGNG
char (*funcp)(char array[5][5])[5][5];
0076デフォルトの名無しさんNGNG
>>62
A: int 型の signum
B: int 型の引数を 1 つ取る void* 型関数へのポインタ型の sighandler
C: int 型の引数を 1 つ取る void* 型関数へのポインタ

引数 A、B を取り、C を返す関数 signal のプロトタイプ

変数なんか宣言されてる?
0077デフォルトの名無しさんNGNG
void (*sighandler)(int);
ってわかる?
0078デフォルトの名無しさんNGNG
>>76
されてるが…。
0079デフォルトの名無しさんNGNG
>>64
俺もそう思った。0以外はみんな正解じゃん。
〜以外を入れるという問題かと思って見直しちゃったよ。もしそうなら0が正解だから。
0080デフォルトの名無しさんNGNG
void *(*sighandler)(int);
0081デフォルトの名無しさんNGNG
>>78
仮引数の間違いじゃないのか?
教えてくれ。
変数が定義されているなら、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デフォルトの名無しさんNGNG
>>77
intをひとつ取り、値を返さない関数へのポインタsighandlerじゃないの?
008477NGNG
>>83
すまん、そーだ。
0085デフォルトの名無しさんNGNG
int *(*pf)(int);
上のポインタ型を返す関数(引数はint)
int *(*(*ppf)(int))(int);

上のポインタ型を返す関数(引数はint)
int *(*(*(*pppf)(int))(int))(int);

上のポインタ型を返す関数(引数は上のポインタ)の配列(サイズは10)
int *(*(*(*(ppppf[10])(int))(int))(int))(int *(*(*(*)(int))(int))(int));
008684NGNG
漏れ 77 じゃなくて 76 だよ・・・鬱
008762NGNG
ごめん、プロトタイプだった。

こう書けばよかったね。
void (*(*signal)(int signum, void(*sighandler(int))))(int);
0088デフォルトの名無しさんNGNG
>>85
二番目は関数ポインタ(?)を返す関数へのポインタと考えればいいのか?
0089デフォルトの名無しさんNGNG
最後間違った!
int *(*(*(*(*ppppf)(int *(*(*(*)(int))(int))(int)))(int))(int))(int);
009081NGNG
>>88
内側から 1 コずつ typedef していけば、なんとなく分かるよ。
0091デフォルトの名無しさんNGNG
s/ppppf/ppppf[10]/
0092デフォルトの名無しさんNGNG
>>75は正しいのか?
0093デフォルトの名無しさんNGNG
>>92
char array[][5]でいいと思う。
0094デフォルトの名無しさんNGNG
しかし、関数ポインタのネストって普通しないんじゃないか?
するにしても、難読になってくる前に typedef すると思うんだけど。
85-89 みたいなコードを生で書いてる(書く方針の) 人っている?
0095デフォルトの名無しさんNGNG
>>93
74 を見る限り、引数は char array[5][5] でいいだろう。
0096デフォルトの名無しさんNGNG
関数へのポインタを返す関数の使い道が経験の浅い僕にはわかりません。
009785NGNG
なんだか説明が変だな。
正しくは、「上のポインタ型を返す関数(引数はint)へのポインタ」だな。
しかも間違ってるし。>>91thanks

>>94
ふつうはせいぜい関数ポインタを返す関数までだな。
それでもtypedefする。
まあ、パズルというか言葉遊びということで。
0098デフォルトの名無しさんNGNG
C FAQの14.5:
2つの浮動小数点の値が"十分近い"ことを判定するよい方法は。
http://www.catnet.ne.jp/kouno/c_faq/c14.html#5
を見て思ったんですが、精度の敷居ってどういう事でしょうか?
epsilonをどのように選べばよいのかわかりません。
0099デフォルトの名無しさんNGNG
>>96
関数テーブル
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デフォルトの名無しさんNGNG
必要な精度にすればいい。
0.00000001でよかったらそれでいい。
0101デフォルトの名無しさんNGNG
>>99
<float.h> の DBL_EPSILON や FLT_EPSILON でも使ったら?
漏れもよくわからない。
<float.h> はいろんな定数が定義されてるよ。
0102デフォルトの名無しさんNGNG
int func(const char *funcname, int a) {
if(!strcmp(funcname, "Hoge")) return Hoge(a);
if(!strcmp(funcname, "Huge")) return Huge(a);
return Hage(a);
}
0103デフォルトの名無しさんNGNG
>>98
精度は型によって違うから。(固定or浮動小数,バイト数)
0104751NGNG
ep_dash=(double)a/b-1.0
if(abs(ep_dash))...
とかは?
010598NGNG
>>100
>>101
>>103
なるほど、どういうものか大体わかりました。ありがとうございました。
0106デフォルトの名無しさんNGNG
>>102
呼び出しが必要なたびに strcmp() 走らせるの?

>>103
>>98
> 浮動小数点の値が
0107751←関係無しNGNG
>if(abs(ep_dash))...
if(abs(ep_dash)<0.0001)...
「104の訂正」
めちゃ解り辛いな
0108751NGNG
関係無しって言うのは 
751という数字がという事だ。悪いな何度も
0109デフォルトの名無しさんNGNG
max(a,b){(abs(a-b)+abs(a+b))/2}なんてあったな、そういえば。
0110デフォルトの名無しさんNGNG
あったあった、で、なんでいきなりmax?
0111デフォルトの名無しさんNGNG
多分このコードより三項演算子の方が速いな。
0112デフォルトの名無しさんNGNG
>>99
関数テーブルって言うなら
funclist[]={Hoge,Hage,Huga};じゃね?
俺ならenum,switch使うな。
文字列比較なんてたるくてやってられね〜。
0113デフォルトの名無しさんNGNG
ふむふむ
3時間で100か・・・
このペースだと3日もたない・・・
0114デフォルトの名無しさんNGNG
>>109
あっ、a,bが負の場合違うでしょ、それ。
足し算の方は絶対値取らなくていいべさ。
0115デフォルトの名無しさんNGNG
reallocって重いの?
0116デフォルトの名無しさんNGNG
>>115
軽いとは言えないが不要な処理はしないはず。
ところで、何かと比較して言ってるの?
0117デフォルトの名無しさんNGNG
重い、重くないの基準は?
0118デフォルトの名無しさんNGNG
前スレでCbarなるものを教えてもらったんだけど、
コンパイル不能!こんなエラーが

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
free
して
malloc
しなおす
のに比べて
0120デフォルトの名無しさんNGNG
>>119
mallocしてコピーして元の領域をfreeの間違いか?
0121デフォルトの名無しさんNGNG
>>119
全部消えちゃう
0122デフォルトの名無しさんNGNG
敷居(w
元の英語はthreshold(閾値、しきい値)だね。
「これ以下なら近い」等と判断する境界値の事。
>>98
わかんなかったらとりあえず#include <float.h>して
FLT_EPSILON使ってれば?
0123デフォルトの名無しさんNGNG
新たに別の場所に再確保すると言う事はreallocも元の領域はfreeしてる訳だから
関数呼び出しのオーバーヘッド位しか差は無いんじゃない?
0124デフォルトの名無しさんNGNG
>>123
reallocは通常、元の領域をいじるだけだと思うんだがどうだろう?
あくまでも通常ね。
0125124NGNG
VC++でやってみた。
VC++ではreallocは他の領域に取るみたいだね。他のも大抵はそうなのかな?
だとすると>>123の言うとおりだね
0126デフォルトの名無しさんNGNG
実装によると思ふ。
VCではHeapReAlloc使ってるね。
ヒープのサイズ変更ができないOSでも、CRTが一気に確保して管理してる
処理系だと速い場合もあるかな。
0127デフォルトの名無しさんNGNG
>>118
> コマンドまたはファイル名が違います.
という事は、環境設定で何か間違ってないか?

あと
> 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 そのものがおかしくないか?
0128127NGNG
age ちゃった・・・。

追加。
16 ビットコンソールアプリが走ってるのも何かおかしい。
利用 OS は NT 系に設定してある?
0129デフォルトの名無しさんNGNG
>>122
すんげー遅レスじゃないかや?
0130困ったさんNGNG
標準入力から数行のテキストファイル(ただし2バイト文字を含まない)を
読み込んで、それに行番号をつけて標準出力の出力するプログラム、誰かお
願い!!
0131デフォルトの名無しさんNGNG
それだけなら2バイト文字があっても問題ないと思うんだが。
0132困ったさんNGNG
今アスキーコードならった所なんです、たぶんその関係で書かれてると
思うんですが。。。難しいことはわかりません。。
0133デフォルトの名無しさんNGNG
>>130
nl -ba < file.txt
0134困ったさんNGNG
??すいません。。。わかりません
0135デフォルトの名無しさんNGNG
つか宿題なら宿題スレにいく
0136デフォルトの名無しさんNGNG
#include <stdio.h>
#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
すいません。。失礼なことはわかってたんですけどこんな時間に書き込んで
もらえそうになかったんで。。
0138136NGNG
こたえちゃまずかったな・・
スマソ
0139136NGNG
ん?
fgetsの仕様を勘違いしたかも。
forを抜けたあとのprintfはいらないな。
0140デフォルトの名無しさんNGNG
教えて君が一向に減らないな。
0141困ったさんNGNG
ほんとすいません。。こんな時間に。。ほんとありがとうございますm(_ _)m
0142136NGNG
行番号って0からじゃないよな・・・・
なにやってんだろ俺。
0143デフォルトの名無しさんNGNG
#include <stdio.h>
int 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デフォルトの名無しさんNGNG
do_something:好き
DoSomething:好きだったが教えて君でこの記法を使ってくる奴が目につき嫌いになった。
doSomething:使わないが嫌いでは無い。

prefix_do_something_preposition_something_sufix
0145デフォルトの名無しさんNGNG
#include<stdio.h>
int 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デフォルトの名無しさんNGNG
printf("adress=%p value=%d",ptr,*ptr++);は
printf("adress=%p value=%d",ptr,*ptr);
ptr++;
と同じ。
printf("adress=%p value=%d",ptr,*++ptr);
printf("adress=%p value=%d",ptr,++*ptr);
の違いはわかるかな。
0147デフォルトの名無しさんNGNG
アドレスはなんで増えてるんだ?
0148デフォルトの名無しさんNGNG
>>146
printf("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デフォルトの名無しさんNGNG
printf("adress=%p value=%d",ptr,*ptr++);は
printf("adress=%p value=%d",ptr,*ptr);
ptr++;
ではない。
関数の評価順は規格で決まっていない。
ptr++は評価した後に増やす。
0151デフォルトの名無しさんNGNG
最初ptrの値は0012ff80で
printf("adress=%p value=%d",ptr,*ptr++);実行時に
adress=%pのところはptr つまり0012ff80が表示されると
思うんですがなぜ0012ff84になってるんでしょうか?
0152デフォルトの名無しさんNGNG
>>151
だから>>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デフォルトの名無しさんNGNG
お願いします。Cで微分をするにはどうしたらいいのでしょうか?
0154デフォルトの名無しさんNGNG
>>126
遅レスだが・・・。
VC++のmalloc()系はHeapAlloc()系APIも使ってはいるが、
それは要求されたサイズが一定以上大きい場合だけだったはず。
通常はVirtualAlloc()系で確保したものを細切れにして返してくる。

malloc()系の方がHeapAlloc()系より遥かに高速だよ。
0155118NGNG
ごめん。昨日の>>118だけど
MSIMEK.SYSってたぶん、CONFIGなんとかってファイルに書く奴でない?
前に猫を見てた時に、エスケープシーケンスが出来なかったから
なんか付け足した気がする・・・。ちなみにXPだす。
システムそのものがおかしいって言われたから不安になったんだけど、
誰かこのエラーの意味わかる?
分からんかったらどの板行ったらいいかな?
0156デフォルトの名無しさんNGNG
>>153
微分て微分方程式?
高校のやつ?
0157デフォルトの名無しさんNGNG
C++のMFCで、既に作られてるアプリケーションに新規にダイアログ(モードレス)
を作って表示させるにはどうしたらいいですか?

例えば、 ファイル→プロパティー でモードレスダイアログが出てくる感じにしたいんですけど。。

0158デフォルトの名無しさんNGNG
>>157
>>1
0159デフォルトの名無しさんNGNG
>>156
はい、そうです。正確には偏微分です。
こんな感じです。

fx= ∂f / ∂x
0160デフォルトの名無しさんNGNG
・dF(x)/dxのルーチンを使いまわす設計にする。
・精度を考える。(精度次第で数値の扱い、ひいては速さを必要とする場合の
 アルゴリズムに影響される。)

016198NGNG
>>122
うお、これで完璧に判りました。誤訳だったとは…。
通りで検索しても出ないし、意味も不明だし。
ありがとうございました。
0162デフォルトの名無しさんNGNG
>>161
誤訳じゃなくて誤変換だろ。
そういえばぼーよー.comには定義城(定義域の間違い)ってのがあったな。OCRでも使っているのかな。
0163デフォルトの名無しさんNGNG
ファイルオープンしてから、fscanf文でファイルの最後まで読みこんだあと、
もう一回ファイルの先頭から読み直すのはどうやるんですか?
0164デフォルトの名無しさんNGNG
クローズしてもう一回ファイルオープンする。
0165デフォルトの名無しさんNGNG
>>163
rewind()
0166デフォルトの名無しさんNGNG
すみません。初心者ながら疑問があるのですが、
Visual C++でビルドしたプログラムはWin9X上で動かないって事ですか?

あと、スレの最初にかかれてる問題って何なのでしょうか?
0167デフォルトの名無しさんNGNG
これらのプラットフォームは、デザイン時についてはサポートされない予定です。
この決定理由は、Microsoft Visual Studio 環境で利用できる
最先端のプラットフォーム機能の恩恵を開発者が
確実に受けられるようにするためです。
コードの実行については、Windows 98 以降の
上位オペレーティング システムでサポートされる予定です。

というところまでは探せたのですが・・・、
他の問題というのがいまいちわからずじまいで・・・。
0168デフォルトの名無しさんNGNG
>>165
ありがとうございます。無事ファイルが読み込まれました!!
これでレポートがはかどります
0169デフォルトの名無しさんNGNG
>>167
C/C++ の前に日本語は大丈夫?

> スレの最初にかかれてる問題

あなたの抱えている疑問、質問などの事。この場合は ↓

> Visual C++でビルドしたプログラムはWin9X上で動かないって事ですか?

で、これは C の話だと思う? 思わない?
0170デフォルトの名無しさんNGNG
buf[0]-buf[3]
をintの変数に代入する場合はどのようにしたらいいのでしょうか?
int cnt = (int)buf;
と無理やりしてみたのですが、だめなようでした・・
0171デフォルトの名無しさんNGNG
>>170
まず buf の宣言を見せれ。
あと、「buf[0]-buf[3]」 は buf[0] から buf[3] を減算した結果と解釈して
よろしいか?
0172デフォルトの名無しさんNGNG
最近、C言語に本腰を入れてやって見ようとやり始めた者です。
とある本を参照しながら勉強してるんですが、
いままで関数は main関数内で宣言してたんですが,なぜか違う演習だとヘッダ部分で関数を宣言してるんです。
この違いはいったい何なんですか?
0173デフォルトの名無しさんNGNG
>>172

main関数内ではなく、main関数と同じcソースの中で、だよね?

staticな関数ならそれを使用するコンパイル単位のcソースの中で宣言するけど、
そこら中から参照できる関数は、共通のヘッダファイルで宣言するのがセオリー。
コンパイルの精度を上げるためにね。
0174デフォルトの名無しさんNGNG
>>172
> 関数は 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
>>175
普通はしないよね。そんなこと。
172 はどこでそんなこと習ったんだ?
0177デフォルトの名無しさんNGNG
はい!前橋の本に、「malloc()に皮をかぶせて・・・」
とか書いてあったんだけど、どういう意味ですか?
ま、まさか・・・
0178デフォルトの名無しさんNGNG
>>175
そうです、それと

#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デフォルトの名無しさんNGNG
>178
C++なら、
#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デフォルトの名無しさんNGNG
ま、とりあえず人に物教えるときに脳内言語は使うなと
0183デフォルトの名無しさんNGNG
>>178
175 のソースは C じゃできない。C++。
(もしかしたら実際にコンパイル通るかも知れないけどそれはコンパイラ独自の拡張機能)
C では 178 の書き方しかあり得ない。
0184デフォルトの名無しさんNGNG
>>179
宣言なしの時に戻り値や引数がint扱いになっちゃうとかじゃない?
想像だけど・・・。
0185173NGNG
>>179 >>180

ん?共通で使用する関数をヘッダファイルで宣言しておけば、
複数のコンパイル単位(cソース)をまとめてコンパイルしたときに
コンパイラが人間側の関数使用時のミスを捕捉しエラーにしてくれるよね?
すなわち「コンパイルが通ったときのPGの完成度」が上がるわけで、
これを「コンパイルの精度」と言ったのだが?
0186デフォルトの名無しさんNGNG
>>185
すごい国語力ですね
0187デフォルトの名無しさんNGNG
K&Rでもやっている。
0188デフォルトの名無しさんNGNG
>>183

#include <stdio.h>

main()
{
int test();

printf("%d\n",test(3));
}

int test(x)
int x;
{
return x*x;

}

これってCではダメなんですか?
LCIC-86試食版ではコンパイルできたんですが。
0189デフォルトの名無しさんNGNG
>>188
関数へのポインタの簡易記述のような気がしてきた今日この頃。
0190デフォルトの名無しさんNGNG
>>189
(゚Д゚)ハァ?
0191デフォルトの名無しさんNGNG
#include <stdio.h>

main(){
printf("%d\n",test(3));
}
int test(x)
int x;{
return x*x;
}
}
0192デフォルトの名無しさんNGNG
>>188
> (もしかしたら実際にコンパイル通るかも知れないけどそれはコンパイラ独自の拡張機能)
0193デフォルトの名無しさんNGNG
>185
まぁそれをコンパイルの精度と呼ぶのかどうかは別として〜だ。
たしかにそれを追求していったのが最近の言語の流れだろうな。

でもそれって精度って言うのか?よく分からん。俺が馬鹿なだけか?
0194デフォルトの名無しさんNGNG
>>191
インナー関数は C++ でも書けない。
0195デフォルトの名無しさんNGNG
>>185
「コンパイルの精度」 なんて言われたら普通コンパイラの挙動が正確かどうか
という事を思い浮かべるぞ。
オレ語は使うな。
173 の文脈じゃあ 185 の内容は普通考えつかない。
0196デフォルトの名無しさんNGNG
>>191
つーか括弧の対応が取れてない。
0197デフォルトの名無しさんNGNG
>>183
うーん、ほんとにCではだめで独自拡張にあたるんだろうか。

関数宣言も変数宣言も宣言の一種であって、ブロックの先頭ではそのブロック内
スコープとなる宣言ができるから、Cでも問題ないような気がするんだけど、
私が規格を読みきれていない可能性もあるので、今一つ自信がない。
>>183では断言してるから、 きっと根拠があるんだろうけど…。
0198デフォルトの名無しさんNGNG
>>191
括弧の対応が取れていないが、一番最後の括弧が余計だとすると、これは
ANSI以前の古いプロトタイプ宣言なのでは?
0199デフォルトの名無しさんNGNG
>>193
オレはなんとなくはわかった。
というか、共通ヘッダファイルの役割から、
推測しちゃったのかもしれんけど。

少なくとも >>172 に対して使う言葉じゃねーな。
0200172NGNG
もしかして、僕が使ってる本ってダメダメ?w
0201デフォルトの名無しさんNGNG
k&rでもやってるからなあ。
0202197NGNG
C++では宣言と文の混在が許されてるけど、Cでは { 宣言… 文… } の
順しか許されてないから、例えば

int main() {
printf("start\n");
int hoge(int x);
printf("%d\n", hoge(3));
return 0;
}

こんなのがC++では通ってCではダメ、というのは分かるんですよ。
でも>>175のケースなら、Cでも文法的な問題はないと思うんだけど…。
0203デフォルトの名無しさんNGNG
>>177に答えてくれーーー
0204デフォルトの名無しさんNGNG
前橋本もってないんであれだが、
mallocのエラーチェックをする関数を作って使えとか、そんなんじゃない?
0205デフォルトの名無しさんNGNG
>>204

Cの場合結局エラーチェックをする関数からのエラーも見なきゃならんわけで……
(いきなりassertとかじゃないね?)
どっちかって言うとcallocの簡易版みたいな奴とかmallocとreallocを統合した版かなぁ
とか思いました。違うかな?
0206デフォルトの名無しさんNGNG
エラーだしてexitして終わる。
0207デフォルトの名無しさんNGNG
つか、どういうのを「皮をかぶせて」と呼ぶのかを知りたいんじゃない?
malloc()を元にして、例えば
void *d_malloc(size_t size)
{
void *p;
if ((p = malloc(size)) == NULL) { printf("もうダメぽ\n"); exit(1); }
return p;
}
こんなのを作ったりすること、でいいのかな?
ここで、d_malloc()はmalloc()のラッパー関数だとか言うよね?
0208デフォルトの名無しさんNGNG
>197
cl -W4をつけると、
>warning C4210: 非標準の拡張機能が使用されています : 関数にはファイル スコー
>プが与えられています。
ってちゃんと指摘してくれる。
0209デフォルトの名無しさんNGNG
void *d_malloc(size_t size)
{
#include <stdio.h>
#include <stdlib.h>
void *p= malloc(size);
if (!p) { fputs("皮かぶせますた\n", stderr); exit(1); }
return p;
}
0210デフォルトの名無しさんNGNG
>>208
それは標準なのか?
0211197NGNG
>>208
なるほど。実際に警告がでるんですな。
gccだと-Wall -pedanticでも何も出ないけど、まあgccも絶対ってわけじゃないしな。
サンクス。
0212デフォルトの名無しさんNGNG
>>209
関数の中で#include使ったらマズーではない?
0213デフォルトの名無しさんNGNG
>>209
ネタだろ。
0214183NGNG
漏れが必死に関数ないプロトタイプの可否を C99 規格書で検索中。
でももしかしたら可かも知れない。
ANSI 規格書持ってる人居ない?

ちなみに 209 は可。
プリプロセッサはテキストマクロだから C/++ の 文意に関わらずどこに出現
してもいい。
0215デフォルトの名無しさんNGNG
1.足し算関数を作成しなさい

int hoge( short* a, short b )
引数
short* a 加算先
short b 加算数
戻値0 正常
1 加算でオーバーフロー

…という問題が出されたんですけど、わかりません。

0216177NGNG
>>207
そうです!ありがとう!
0217215NGNG
#include<stdio.h>
#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
>>214
いや、#include自体はソースのどこにあっても問題はないんだけど、
そのヘッダファイルの中身が問題で。
もしヘッダでinline関数の定義とかがあったらアウトですよ。
(Linuxなんかじゃ実際多用してるし)
0220デフォルトの名無しさんNGNG
>>215 >>217
1 を見てから書いたか?
0221214NGNG
>>219
ああどうも、そういう意味ね。了解。 
0222215NGNG
>>220
すんませんでした。逝ってきます。
0223197NGNG
>>214
ANSIじゃなくてJIS X3010の文面だけど、見つけたよ!
やっぱり規格の読みが足りなかったか。

6.5.1 記憶域クラス指定子 で、
「関数を表す識別子がブロック有効範囲をもって宣言される場合、extern以外の
明示的な記憶域クラス指定子をもってはならない。」
という文があった。ということで、>>175は文法違反だったのか。

関数内でexternでプロトタイプ宣言をやることはあるから、文法的にいけると
思ってたんだけど、こんなところに例外があったとはね。勉強になった。
0224197NGNG
ん、まてよ。
『明示的な』記憶域クラス指定子をもってはならない、ということは、
たとえば関数の中でstatic関数のプロトタイプ宣言をやるのはだめだが、
>>175は記憶域クラスは指定されてないから、可ということにならないか?
こうなるとANSIの原文を参照したくなるが…(持ってないけど)。
0225デフォルトの名無しさんNGNG
やべー大発見!
a=a/2と
a/=2って同じだよね!?
0226デフォルトの名無しさんNGNG
>>225
字面が違います。
やってることは同じです。
ちなみに
a>>=1
も(ある条件を満たせば)同じ意味になりますが、こういう書き方はやめましょう。
0227デフォルトの名無しさんNGNG
void foo( int *a, int *b ) {
int tmp=*a;*a=*a/*b;*b=tmp;
}
0228デフォルトの名無しさんNGNG
Cを始めて間もないのですが、コンパイラのLSI-C試食版てのを
使ってあるソースコードをコンパイルしようとしたら

「ファイル windows.h がオープンできない (No such file or directory)」

と出てコンパイルできないのですがどうすればよいですか?
0229デフォルトの名無しさんNGNG
>>228
日本語の勉強をしてください
0230デフォルトの名無しさんNGNG
>>226
字面は違う?あたりまえじゃん
やってることは同じだべ?
じゃあさ、a=a/2ってとこをa/=2って変えたら
バグ起きる場合ってある?
0231デフォルトの名無しさんNGNG
>>230
つうか、ふつうに C の文法なんだが...
知らなかったのか?
0232225NGNG
>>231
いいから答えてくれ!
230に!
0233デフォルトの名無しさんNGNG
>>230

コンパイラにも拠るが、出力されるアセンブラコードが違うことはあるよ。
どっちも結果的な動作は同じなのでバグは発生しないはずだが。
基本的に a /= 2 と書いたほうが速いまたは変わらないはず、
なのだが俺は分かりやすいほうがいいと思うので a = a / 2 派。
0234デフォルトの名無しさんNGNG
c=a=a/2;
は
c=a/=2;
にはできなったとおもいます。
0235デフォルトの名無しさんNGNG
>>なのだが俺は分かりやすいほうがいいと思うので a = a / 2 派。
プ(w
0236デフォルトの名無しさんNGNG
>>234
日本語喋れやザルが
0237デフォルトの名無しさんNGNG
7゚{vv
0238225NGNG
>>233
だよね!やべーよ!このソース!
#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;
  }
  
0239225NGNG
  for(y=101;y<1000000;y++){
    a=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);
}
0240225NGNG
ある正数yが1になるまで、『奇数なら3倍し、1をたす』、『偶数なら、半分にする』
繰り返した回数をkとして1〜1000000までのkの最大値とそのときのyをだすプログラムで
『1〜100までの結果を配列に蓄え、以降の計算に利用する』ってやつ

a=a/2をa/=2に変えると、おかしな結果になる!
なんで!!!すごくない!?
0241デフォルトの名無しさんNGNG
>なのだが俺は分かりやすいほうがいいと思うので a = a / 2 派。

こいつは ++i と書かずに i = i + 1 とか書いてるのか?
0242デフォルトの名無しさんNGNG
>>240
ならないが
0243225NGNG
( ̄□ ̄;)!!
オレはなるぞおおお
なんでだああああ
0244デフォルトの名無しさんNGNG
>>243
ほんとに a = a / 2 を a /= 2 に変えただけ?
a = a * 3 + 1 を a *= 3 + 1 にしちゃったりしてないよね?
0245デフォルトの名無しさんNGNG
#define a (*foo())
int *foo() { static int bar, *p=&bar; return p++; }
0246デフォルトの名無しさんNGNG
i = i + 1 と対比されるのは i += 1 であって、++i ではないような・・・・・・。
0247デフォルトの名無しさんNGNG
>>245
(゚Д゚)ハァ?
0248225NGNG
>>244
マジでそれだけ変えた!まじまじ!
XPでBCCで、CPad使ってるYO!
0249デフォルトの名無しさんNGNG
>>248
全く変わりませんが
0250デフォルトの名無しさんNGNG
しょーもないネタだったな
次はもっと面白いのにしてね>>248
0251デフォルトの名無しさんNGNG
まずは、具体的な結果の比較を出すのが先であろう。
0252デフォルトの名無しさんNGNG
gcc on x86 だと最適化の有無によって結果が変わるね
0253デフォルトの名無しさんNGNG
char str[] = "ahoahoahoahoaho";この中から、すべての a を削除するルーチンを教えてください。ちなみに、2時間前にC言語の勉強はじめたとこです。
0254デフォルトの名無しさんNGNG
>>253
char *foo (void) {
static char s[] = "hohohohoho";
return s;
}
0255デフォルトの名無しさんNGNG
>>253
とりあえず、入門書を一冊読んで、理解してから質問してください。
0256253NGNG
そんなひどい……
0257デフォルトの名無しさんNGNG
void foo(char *s, char a) {
while (s = strchr(s, a))
memmove(s, s+1, strlen(s));
}
0258デフォルトの名無しさんNGNG
char *delete_a ( char *str ) {
char *s = str, *d = str, *l;
while ( (l = strchr(s, 'a')) != NULL ) {
*l = '\0';
while ( *s ) *d++ = *s++;
s++;
}
return d;
}
0259225NGNG
じゃあ結果だ!
これが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デフォルトの名無しさんNGNG
void foo(char *s, char a) {
char *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
>>259
>>252

>>260
えらー
0263デフォルトの名無しさんNGNG
void foo(char *s, char a) {
char *t = s;
do {
while (*t == a) t++;
} while (*s++ = *t++);
}
0264253NGNG
ありがとうございます。なんとかできそうです。
0265デフォルトの名無しさんNGNG
VRMLの質問はどのスレに行けばいいですか?
もしや板違い?
0266匿名希望 NGNG
#include<stdio.h>
int 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デフォルトの名無しさんNGNG
tmp=tmp*10+num%10;
tmp*10 + numの一桁目。
tmp=123, num=456だったら
tmpは1236になる。
0268デフォルトの名無しさんNGNG
>259
Compilerはなんですか.Overflowとかが起こってんのかなあ.
0269デフォルトの名無しさんNGNG
>>268
>>248
0270デフォルトの名無しさんNGNG
>269
なるほど.
0271266NGNG
>>267さん
ありがとうございました。
0272那由多 ◆F4E74ZBQPA NGNG
>266

123→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
>238
よく見たら,data配列のsizeの宣言がおかしいような.data[99]の値はちゃんと保存されてるのか?
0274デフォルトの名無しさんNGNG
>238
アハハハ、やっちゃったね。
0275デフォルトの名無しさんNGNG
>>273
いくら払えばいいんですか?
0276デフォルトの名無しさんNGNG
どばーっと。
0277デフォルトの名無しさんNGNG
一匹でいいや
0278225NGNG
>>273
どういう事?
sizeの宣言ってdata[99]の99のこと?
でも1から100までだから、配列のサイズは99でしょ?

てか実際変えてるのはa=a/2のとこだけだから、
そこは関係ないと思う。
最もプログラムの本質に関わることだったらあれだけど・・・
0279デフォルトの名無しさんNGNG
>>278
何を言っているのか要領を得ないが、data[99] と宣言したら、使えるのは
data[0] 〜 data[98] だぞ。
0280デフォルトの名無しさんNGNG
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
サイズは10。
0281デフォルトの名無しさんNGNG
>>279
何言っているのか要領を得ないが、わかるようにはっきり言ったらどうだ?
0282デフォルトの名無しさんNGNG
>>281
十分はっきりしてるじゃねーか
0283172NGNG
記憶クラス(staticとかexternとか)について誰かわかりやすく教えてくれませんか?
手元の本を読んでもチンプン・カンプンなんで…

ページでもいいからお願いします。(あつかましくてすみません)

勉強し始めて一週間とちょいぐらいのレベルです。
0284デフォルトの名無しさんNGNG
>>281
何言っているのか要領を得ないが、何がわからないのかはっきり言ったらどうだ?
0285デフォルトの名無しさんNGNG
>>283
まず、static の何がわからないか、extern の何がわからないか書いてくれ。
0286デフォルトの名無しさんNGNG
>>225
つまらん
ログ流すな
0287デフォルトの名無しさんNGNG
このスレ、なんで週末になるとレベルが低くなるの?

int *p = data-1;
0288デフォルトの名無しさんNGNG
>>284
十分はっきりしてるじゃねーか
0289デフォルトの名無しさんNGNG
>>287
0290デフォルトの名無しさんNGNG
>>287
十分はっきりしてるじゃねーか
0291172NGNG
>>285
何がわからないのか…う〜ん

いままで(といっても一週間程度だけど) static とか使わないでソース書いてきたんで、
どうしてそんなものを宣言する必要があるのか? とか
だったら最初から外部関数でいいんじゃないの? とか
考えちゃうわけでして…

こんなんじゃだめですか?(抽象的でごめんなさいマジで…)
0292デフォルトの名無しさんNGNG
よくいるよ。強い口調で言ってみたものの自分が間違っていることに気づいたが
後に引けない>>279みたいなやつ。
0293172NGNG
>>291
外部関数 → 外部変数

です、間違えた
0294デフォルトの名無しさんNGNG
>>292
>>279のどこが間違ってるの?
0295デフォルトの名無しさんNGNG
>>294
コピペだから気にするな
0296デフォルトの名無しさんNGNG
>>294
お願いだから相手にしないでよ。
0297デフォルトの名無しさんNGNG
>>291
じゃ、何も知らないという前提でいいな。

まず 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デフォルトの名無しさんNGNG
>>293
static → 外部モジュールで参照不可
extern → 外部モジュールで参照可
0299デフォルトの名無しさんNGNG
>>293
static 変数とグローバル変数の大きな違いは、static 変数は関数の外側から
見えない事。
だから、別の場所で間違って値を変更してしまう危険を防ぐ事ができる。
さらに、その変数が他の関数では直接使われない事がすぐわかり、ソースを
読むのが簡単になる。

グローバル変数だらけのソースは一般に嫌われる。
(何がどこで使われてるかわかったものじゃないから)
0300デフォルトの名無しさんNGNG
300
0301デフォルトの名無しさんNGNG
Σ(゚д゚lll)ガーン
0302デフォルトの名無しさんNGNG
>>298
> extern → 外部モジュールで参照可

それは微妙に違くないか?
0303デフォルトの名無しさんNGNG
extern → 外部モジュールのを参照可に?
0304172NGNG
>>297-299
ありがとうございます!

extern は大体(思い込みかもしれないけど)わかりました。
要するにソースの規模が大きくなるならextern にしとけってことで(いいのかな?)

static はかなり疑問符をつけながら読んでますw
大まかな認識として値を保持し続けるってことでいいのかな?

ほんとありがとうございます。勉強しはじめなんで一気に飲み込むのは僕には無理があるようで、これから徐々に消化していきたいと思います。
でも、おかげさまでアバウトな面での認識はできました。
0305デフォルトの名無しさんNGNG
>>304
extern についてはちょっと違う。
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
>>303
それが妥当な説明だね。簡単に言うなら。
0307デフォルトの名無しさんNGNG
>>273
1から100までなのに配列のサイズが99っておかしくねぇ?
おまえの理論は、1〜N個のデータはN-1個の配列に格納できるっつーことだぞ。
つまり、N=2とすると、1個の配列に格納できるって話になっちまうぞ。
もう一度よく考えれ。
0308デフォルトの名無しさんNGNG
>>304
 staticは関数の宣言に使用した場合と変数の宣言に使用した場合で
意味が異なる。
 static func() と使った場合はそのファイル内ローカルの関数になる。
 また関数内で static int a;と変数を宣言した場合はauto変数でなく
 静的に(スタック上でなくメモリ上に)確保される。
 つまり関数外でstaticなしで宣言したことと同じになる。

 extern func();と
 func():は同じことだ。

 どうだい、これでますますよくわかっただろう(w
0309デフォルトの名無しさんNGNG
>つまり関数外でstaticなしで宣言したことと同じになる。
リンケージは?
0310デフォルトの名無しさんNGNG
>>308
罠張るなよ。
グローバルの static 変数はどうなるんだ。
あと大抵の入門者は auto なんてキーワード知らんから持ち出すな。
0311デフォルトの名無しさんNGNG
>>307
何故それを 273 に向かって言う?
つーか、多分 「1 〜 100」 はループカウンタを言っていると思われ。
実際には N - 1 でアクセスしてる。

・・・それでも後ろに 1 つはみ出るけどナー。
0312172NGNG
(^^;
もちっと勉強してから、でなおしてきますぜぃ!

あ、でも使用用途が判らなかったから悩んでたんでそこらへんは解決しました!
あとは勉強して自然と身につけるのみですよね
0313デフォルトの名無しさんNGNG
>>312
どうでもいいが、新たに質問したら、名前はそこの番号に変えた方がいいぞ。
0314デフォルトの名無しさんNGNG
>>309
 それは書いた後で気がついた
0315デフォルトの名無しさんNGNG
知識ひけらかしたいのかもしらんが、無駄にレスが多くなるような回答はやめようべ。
ただでさえ流れるの早いんだから。
0316デフォルトの名無しさんNGNG
>>315
309 や 310 や 311 みたいな突っ込みもいかんのか?
0317225NGNG
1から100までって99個でないのか?
0318デフォルトの名無しさんNGNG
>>317
1から10まで9個か?
0319デフォルトの名無しさんNGNG
>>317
だから配列のインデックスは98が最高なんだから99にアクセスしたらまずいだろって。
もうこの話引っ張るのやめてくれよ。
0320225NGNG
死んできます。
探さないでください。
0321デフォルトの名無しさんNGNG
CでRS232Cに入出力するためにはどうしたらいいですか?
開発環境:Windows
コンパイラ:VC++かCygwin
0322デフォルトの名無しさんNGNG
from >>1
C 標準でできない事の質問は使ってる開発環境のスレに逝ってくれ。
0323デフォルトの名無しさんNGNG
>>322
開発環境依存ですか。ありがとうございます。
0324デフォルトの名無しさんNGNG
キーボードから入力とかディスプレイに出力ってのも環境依存だな。
大抵は標準入出力を使ってやりとりすれば出来ると思うけど。
0325デフォルトの名無しさんNGNG
週末にこの寂れ様・・・
0326デフォルトの名無しさんNGNG
>> 325
厨がわいてた方がいいと言うのか?
0327デフォルトの名無しさんNGNG
しかしこのスレ回転速いな・・・。
0328デフォルトの名無しさんNGNG
>>327

         ス        ス
            レ
                  レ
ス  レ ..┌→─→─→─→─→─┐     ス
      │               ↓  レ
      ↑               │
      │               ↓
      ↑               │
   レ  .└─←─[. 0.001 秒 ]─←┘   レ  ス
ス         レ      レ
                    ス
          ス

という事でよろしいか?
0329デフォルトの名無しさんNGNG
1kHz じゃ、まだまだだな。
0330328NGNG
   ||
 ∧||∧
(  ⌒ ヽ トゥトゥトゥマシェーリー
 ∪ 。ノ    トゥトゥトゥマシェーリー
  ∪∪
0331デフォルトの名無しさんNGNG

     ||
   ∧||∧
  (  ⌒ ヽ>>328
   ∪  ノ
   ∩∪∩
   (・∀・| | クヨクヨスンナ
    |     |
  ⊂⊂____ノ
       彡
________
0332デフォルトの名無しさんNGNG
首絞めてる首絞めてる
0333デフォルトの名無しさんNGNG
>>329
おまいは回転速度をHzで数えるのか。
普通rpmだろう。
0334デフォルトの名無しさんNGNG
周波数≠回転速度
0335デフォルトの名無しさんNGNG
328 は 60,000 rpm か?
並みの HDD よりは速そうだな
0336デフォルトの名無しさんNGNG
gMyLovelyHoge
mMyLovelyHoge
などの変数名で、g や m についてだけd、g はglobalでわかるけど、mはなに?
0337デフォルトの名無しさんNGNG
strncpyとmemcpyってどうちがうの?
規格見たらほとんどいっしょだよ。
でもmemcpyは仮引数が*void型だけど。
結局何が違うの?
strはstringだよね?
memってもしかしてmemory?
てことはmalloc系?
よくわからん・・・
質問責めでごめん
0338デフォルトの名無しさんNGNG
おい!void main(void)はなにがいけないんだ。
俺は昔っからこう書いてるんだが
最近はみんな返り値intにしてるらしいじゃねか。
0339デフォルトの名無しさんNGNG
>>338
別にいけなくはないだろ
コンパイラのワー人グがうざけりゃintかえしとけ
0340デフォルトの名無しさんNGNG
>>338
だってint型を返すんだもん。
ちゃんとreturn EXIT_SUCCESとかすれば?
0341デフォルトの名無しさんNGNG
混乱してきました。
charへのポインタ型のstrがあって、
*str++ってしたら、str[i+1]って事だから、
次の文字を指しますよね?
str++ってのは、どういうことなんですか?
0342デフォルトの名無しさんNGNG
>>341
ちがうよ。
*str;
str++;
の2つを一文で書いてるだけ。
0343デフォルトの名無しさんNGNG
>>337
途中に'\0'があるときの動作が違う。
0344デフォルトの名無しさんNGNG
>>341
後置された++は参照されたあとに変数の値を増加させる演算子
str++ならstrが参照されたあとにstrが増加する
つか、これくらい本買って嫁
0345デフォルトの名無しさんNGNG
memcpyはこう使える。
#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
>>344
だから、strが増加するってどういうこと?
0347デフォルトの名無しさんNGNG
str++はstrが次の要素を指すようにする。
0348デフォルトの名無しさんNGNG
*str++ってさす先のものを1増やすんだ?
でstr++が次の要素をさすんだ?
0349デフォルトの名無しさんNGNG
>>348
違うよ。
*str++ は *(str++) と同じ。 (*str)++ ではない。
0350デフォルトの名無しさんNGNG
そうだった!
*より増分演算子の方が優先度たかいんだったね。
三区す
0351デフォルトの名無しさんNGNG
#include <stdio.h>

int 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デフォルトの名無しさんNGNG
*vc++; 配列名は演算不可
0353デフォルトの名無しさんNGNG
*vc++;
アドレスを変えられるのはポインタだけ
0354デフォルトの名無しさんNGNG
そうなのか・・・。
オレの認識だと、配列はポインタにすぐ読み替えられるって書いてあったから、
こんなのもありだと思ってたんだけど
0355デフォルトの名無しさんNGNG
*(vc + 1); なら可
0356デフォルトの名無しさんNGNG
>>348
具体例を挙げて説明すると

char s[] = "ABC";
char *str;
int ch;

str = s; /* strが 'A'の位置を指す */
ch = *str++; /* chに 'A'が入り、strは次へ進んで 'B'の位置を指す */
0357デフォルトの名無しさんNGNG
#include <stdio.h>

int 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デフォルトの名無しさんNGNG
>>354c faq 6.2
0359デフォルトの名無しさんNGNG
>>357
*v++->v++;
0360デフォルトの名無しさんNGNG
(*v)++; では?
0361デフォルトの名無しさんNGNG
>>358
サンクス!宣言の時は違うってことかな・・・
0362デフォルトの名無しさんNGNG
>>357
*v の値は参照する必要ないでしょ。
アドレスを加算させるだけだから、v++; でおk
0363デフォルトの名無しさんNGNG
>>362
6.3も読め。
0364デフォルトの名無しさんNGNG
>>359
ほんとだ・・

ちょっと待ってよ。
*v++は*(v++)と等価だから、「vをインクリメントした先にあるもの」だよね?
v++は「vをインクリメント」で、vってのはつまり配列?
あーわかんねー。*v++はなんでだめなの?
0365デフォルトの名無しさんNGNG
v++;アドレス演算という言葉を出せば良い
0366デフォルトの名無しさんNGNG
vはアドレスか!そうだね。v=&vc[0]で宣言してるってこと?
vをインクリメントすると、アドレスが増える。
たしかT型へのポインタだとして、T型のサイズ分だけ増えるんだよね?
0367デフォルトの名無しさんNGNG
>>365
アドレス演算ってポインタ演算のこと?
0368デフォルトの名無しさんNGNG
>>364

>>356は読んだか?
0369デフォルトの名無しさんNGNG
http://alink3.uic.to/user/ranran2.html
0370デフォルトの名無しさんNGNG
こんな昼間から飛んでしもたやんけ
0371デフォルトの名無しさんNGNG
vはintのポインタ型の変数。
v++はvと言う値をインクリメントすると言う事。
*(v++)は*v++と同じ。
*v++は評価結果として*vを返し、v++を行う。
この文脈では*vを返す必要は無いのでv++でok.
0372デフォルトの名無しさんNGNG
>>368
読んだよ!でもいまいち分かってないかな?
配列とポインタが別物ってのは分かった。3つの場合を除いてね。
0373デフォルトの名無しさんNGNG
>>371
返すってことは例えばchar buf[256]があって
bufにvcの文字列をコピルときとかbuf[i]=*vc++;
ってやんのはおk?
0374デフォルトの名無しさんNGNG
>>373
まず、日本語がだm
0375デフォルトの名無しさんNGNG
要するに、*vc++でも問題はないんだ?
でもこの場合は別に*vを返す必要なんてないから
vc++にしろってコンパイラが言ってるってこと?
0376デフォルトの名無しさんNGNG
>>375
そう解釈していい。
0377デフォルトの名無しさんNGNG
>>373
ok.
俺は分かり易さを考えるとあんまり使わないが。
そんな文が必要になる時は大概for文中でインクリメントする。
0378デフォルトの名無しさんNGNG
みんなありがとう!ちょっと分かった気がするYO!
0379デフォルトの名無しさんNGNG
>>377
なにを偉そうに
0380デフォルトの名無しさんNGNG
>>350
*と++(後置)は優先順位は同じはず。
ただ右から結合するから++が先に実行される。
0381デフォルトの名無しさんNGNG
math.hのexpの実装ってどこを見ればわかりますか?
0382デフォルトの名無しさんNGNG
だから環境書けって。
0383デフォルトの名無しさんNGNG
すいません。solaris7のgcc 2.95.1です。
0384デフォルトの名無しさんNGNG
>>380
それはK&Rでない?
規格だと*と++(後置)は++の方が優先順位は高い。
ただし++(前置)は*と優先順位が等しい
0385デフォルトの名無しさんNGNG
glibはアセンブラだな<expe^x = 2^(x * log2(e))なんて変換して計算してる。
0386デフォルトの名無しさんNGNG
>>380 >>384
優先順位が同じだろうが、後置の方が高かろうが、
単項演算子の結合規則は右から左なので同じ結果になる。
0387デフォルトの名無しさんNGNG
つーか必要ないなら式の中で副作用を伴うものを使うなよ。
buf[i]=*vc++; みたいに。
0388デフォルトの名無しさんNGNG
初心者ですが、質問です。
1.dat
2.dat
・
・
とデータファイルがあって、2番目のデータを読み込みたいとき
n=2; "n.dat"
とすると、エラーが出るのですが
一般的にはどんな方法がありますか?
0389デフォルトの名無しさんNGNG
>>388
具体的なエラーとかでもちゃんと書いてみたら(w
0390デフォルトの名無しさんNGNG
>>384
ソースきぼん
0391388NGNG
>>389
こたえる気がないくせに茶化さないでください。
あなたみたいなのがいるから2チャンネルはだめだといわれるんです。
ほかの方、よろしくお願いします。
0392デフォルトの名無しさんNGNG
>>386
> 単項演算子の結合規則は右から左なので

ハァ?
0393!389NGNG
まともに答える気が出なくなるような質問の仕方をする方がどうかと思うが。
0394386NGNG
>>392
   ∧∧
   /⌒ヽ)   右から左は前置だけだね・・・。
  i三 ∪   すまん。逝ってくる
 ○三 |
  (/~∪
  三三
 三三
三三
0395デフォルトの名無しさんNGNG
>>388
一般的にはファイルをオープンして一行目のデータを読み飛ばして二行目を読んでファイルをクローズします。
コードはプログラミング言語を勉強して自分で努力して書いてください。
0396383NGNG
>>385
なるほど。
そうなるとlogはどうなってるのかとか2^xはどうなってるのか、と気になってしまいます。
標準ライブラリのソースコードはないのでしょうか?
0397デフォルトの名無しさんNGNG
++a; ←これが前置で、
a++; ←これが後置だよね?
0398デフォルトの名無しさんNGNG
sprintf(buf, "%d.dat", n);
fopen(buf, "r");
0399デフォルトの名無しさんNGNG
388は何がしたいのかよくわからんぞ。
391は釣り師のような気がするが。
0400デフォルトの名無しさんNGNG
>>396
2^xが2のx乗ということなら、powを呼んでいるだけだと思うけど。。。
0401デフォルトの名無しさんNGNG
>>388
こんな質問で、どこでどんなエラーが出るか分かるの思うのか?
で、多分sprintfすりゃあ解決ってことかと推理。
推理させるなヴォケ

あ、ネタか?
0402知りたい人NGNG
文字のAを10進数の1、Bを2とCを3といった感じになおしたいのですが、
文字コードを使って上手くできませんかね。ちょっとした例文を求む。
0403デフォルトの名無しさんNGNG
>>396
ソースコード拾ってくれば?
おいらはいつも見れるように主要ソースコードは展開させて置いてる。
0404デフォルトの名無しさんNGNG
文字 - 'A' + 1
0405デフォルトの名無しさんNGNG
LPARAMのポインタを引数に持つ関数に対してlongの変数を使用していました。
こんな感じ。
long abc;
func((LPARAM *)abc);

わざわざキャストする必要ありませんか?
将来性を考慮するとキャストする必要ありますか?
どっちがいい?
0406デフォルトの名無しさんNGNG
char c;
int i;
i = c-'A';

0407デフォルトの名無しさんNGNG
>>405
整数をポインタにキャストするのって0以外は怖いんですけど・・・
0408デフォルトの名無しさんNGNG
キャスト以前にどうしてlong変数を使用しているのか聞きたい。
0409407NGNG
(LPARAM)&abcの間違い?
0410409NGNG
じゃなくて、
(LPARAM *)&abc
0411デフォルトの名無しさんNGNG
LPARAM *abc;
func(abc);
0412デフォルトの名無しさんNGNG
void *abc;
0413デフォルトの名無しさんNGNG
>>405
キャストして動いてるんならそれでいいんじゃないかと。
将来性(と移植性)を考えると、longを使用するのを止めた方がいい。
0414405NGNG
>>410
すんません。その通りです。

>>408
元々のデータ構造がlongを使用しているんでしが、リストビューに割り振れる値がLPARAMでしょ。
だからこうなりますた。

>>413
データ構造的にはlongを使いたいんですよね。
リストビューに割り当てるのを考え直した方がいいんでしょうか?
データを格納したポインタを割り当てるとか。
でも、ポインタも4byteだし、あまり意味は無いかも知れない。

ソースを検索してみたら、short値をリストビューに割り当ててることもありました。
func((LPARAM *)&shortparam);
ま、問題なく動いてはいますが。

自分の考えとしては、元々のlong,short値の範囲内で関数に渡しているし、同じ
変数を使っている限りはデータ落ちはないかと。
今後sizeof(LPARAM) >= sizeof(long)の条件が崩れた場合恐いんですが。
0415デフォルトの名無しさんNGNG
391は釣り師のようです。
例えば、「65.dat」という名前のデータファイルを読み込みたいときに
n=65, "n.dat"
と記述すると、"n.dat"という名前のファイルは見つかりません。って
エラーが出るのですが(当たり前?)
65.datを呼び出すにはどう記述すればよいのですか?
0416デフォルトの名無しさんNGNG
>415
あんた誰?
0417デフォルトの名無しさんNGNG
>>405
ウインドウメッセージの都合上いたし方ないのでは。
0418デフォルトの名無しさんNGNG
>>415 当たり前です。
0419デフォルトの名無しさんNGNG
>>415
言語が違う予感
0420デフォルトの名無しさんNGNG
LPARAM abc;
func(&abc);
0421デフォルトの名無しさんNGNG
>>419
C++です。
65.dat
70.dat
75.dat
と次々に読み込んでいくにはどう記述すればいいのでしょうか?
"n.dat"じゃ無理(当たり前)なのは分かりました。
0422デフォルトの名無しさんNGNG
>>415
n=65, "n.dat"って記述したらコンパイルエラーですが何か?
0423デフォルトの名無しさんNGNG
n=65;
sprintf(buf, "%d.dat", n);
fopen(buf, "r");
0424デフォルトの名無しさんNGNG
>>423
知ったかぶり野郎は帰ってくれ!!!
0425デフォルトの名無しさんNGNG
>>424 釣り師かっこ悪い
0426デフォルトの名無しさんNGNG
>423
398のVerUp版だね(笑)
0427デフォルトの名無しさんNGNG
>>426
そうだけど何が面白いの?
0428初心者&rlo;者心初NGNG
マイナス(符号付き)はメモリの中ではどのように
扱われているんですか?

あと、ビット演算する時は変換文字を%uにしないと正しく出力されないのは
なぜなんでしょうか?教えて下さい。
0429デフォルトの名無しさんNGNG
マイナス用のビットを持っていることもあるし
2の補数のこともある。
0430デフォルトの名無しさんNGNG
>>428
"2の補数"で検索。
0431デフォルトの名無しさんNGNG
>>428
初心者はrlo禁止です
0432デフォルトの名無しさんNGNG
>>427
親切にnへの代入の仕方を教えている。
バカにしてるのだろうがな。
0433同意&rlo;意同&lro;NGNG
>>431
同意。

rloつかうなら「日稿投」はやめてほ&rlo;いし&lro;ね。
#何気にテストw
0434デフォルトの名無しさんNGNG
>>433
テスト禁‏止禁‎(w
0435426NGNG
>432
違うよ。
既に解決策が398に載ってたのに見逃している421をあざ笑ったつもり。
スマソ。
0436414NGNG
>>417,all
仕方がないということで宜しいでしょうか?
0437デフォルトの名無しさんNGNG
long abc;
LPARAM hoge=abc;
func(&hoge);
abc=hoge;
0438デフォルトの名無しさんNGNG
つーかリストビューと絡めるなら Windows Programing スレか Win32API スレに
逝ってくれ。
C じゃなくて C++ なら C++ スレに逝ってくれ。
あと C++ 使ってる香具師に fopen() を教えるな。
0439デフォルトの名無しさんNGNG
C++知らなくてな。スマン。
0440デフォルトの名無しさんNGNG
>>414
> 今後sizeof(LPARAM) >= sizeof(long)の条件が崩れた場合恐いんですが。

呼び出す関数がブラックボックスなら、逆( <= )だと思うが。

そうじゃなく、自前のコールバック関数を呼び出す時に一旦
LPARAM*を 経由しているだけなら、LPARAMとlongのサイズでなく、
LPARAM* と long* の違いの方が重要だと思う。
0441414NGNG
>>440
>呼び出す関数がブラックボックスなら、逆( <= )だと思うが。
あれ。逆でつか?
関数側sizeof(引数)が大きければとりあえず問題ないとオモタのですが。。

>そうじゃなく、自前のコールバック関数を呼び出す時に一旦
>LPARAM*を 経由しているだけなら、LPARAMとlongのサイズでなく、
>LPARAM* と long* の違いの方が重要だと思う。
これでハッとしますた。
確かにアドレスが渡ってるだけだから、メモリリークの可能性がありますね。

でも、
short st;
long lg;
st=(short)lg;
リトルエンディアンの場合、このようなキャストをするとlgの下位2バイトが
stに入るという「C言語仕様」?でしたが、関数の引数をキャストした場合は
仕様的にはどうなんでしょ?
先に書いた通り、メモリリークの可能性があるならば>>437の例でも問題あり
ますよねえ?
0442デフォルトの名無しさんNGNG
abc=(long)hoge;これくらいは要りそうだが。
0443デフォルトの名無しさんNGNG
LPARAM abc;って宣言に変えた方がいいんでは?
0444デフォルトの名無しさんNGNG
皆さん、ひとつ質問をさせてください。

C FAQによると「配列は簡単にポインタに成り下がる」のとおり、
関数の引数としてcharの配列を渡すとポインタとなってしまい、
sizeofなどで長さが取れなくなってしまいますよね?

で、自分が使用している環境ですと、構造体にcharの配列を持たせて、
この構造体ごと関数の引数として渡すと、関数の中でも問題なく配列として扱えるのですが、
これってどこでも使える汎用的な手段なのでしょうか?
0445440NGNG
>>441
> 関数側sizeof(引数)が大きければとりあえず問題ないとオモタのですが。。

たとえば仮に sizeof(long)==4, sizeof(LPARAM)==8 だったとすると、
こちらが渡した4バイトのデータを、
関数側は8バイトあると見なして読み書きするわけだけど。

それと、上では忘れてたけど、関数が要求してるのが配列の場合は
(ポインタでなく)値自体のサイズも重要になるね。

> 確かにアドレスが渡ってるだけだから、メモリリークの可能性がありますね。
なんでメモリリークなんかが出てくるの?
俺が言ってるのは、例えばポインタのサイズが
sizeof(long*) > sizeof(LPARAM*) の時にまずいという話。
といっても将来そうなることは無い気がするけど。

> stに入るという「C言語仕様」?でしたが、
C言語の仕様ではなく、CPU依存の話だね。

俺も皆の意見と同じく、気になるなら値を一旦LPARAM型変数に
キャストした方が安全な気がする。
0446440NGNG
445で書いた
> 俺も皆の意見と同じく、気になるなら値を一旦LPARAM型変数に
> キャストした方が安全な気がする。
これは、コールバック関数用でなく、
ブラックボックスの関数に単なるパラメータとして渡す場合ね。
0447デフォルトの名無しさんNGNG
>>444
それで問題無いなら問題無いです。
ただし、配列が丸ごと値渡しされるので、サイズによってはとんでもなく遅くなります。
あと、ポインタではなく値で int とかを渡した時と同様、呼び出し元の値の変更は
できません。
0448デフォルトの名無しさんNGNG
>>444「どこでも使える」かどうかと言えば「使える」と言う。「どこでも使われている」かどうかと言えばちょと疑問。
0449デフォルトの名無しさんNGNG
>>444
規格(ANSI)では使えることが保証されてる。

sizeofで長さを計りたいからと言う理由なら、
構造体ポインタを渡すだけでもいいのでは。

でもサイズを計るためにわざわざ構造体を使うくらいなら、
配列とサイズの2つのパラメータを渡した方がいい気がする。
0450デフォルトの名無しさんNGNG
>>444
構造体のポインタを渡すというのが一般的。
0451デフォルトの名無しさんNGNG
固定長の配列なら長さを渡す必要もないわけだが
0452デフォルトの名無しさんNGNG
TRUE=非ゼロ という定義に関しての質問なのですが
hoge()という関数がBOOL値を返す場合
if ( hoge() == TRUE )
よりも
if ( hoge() )
と書いたほうが良いのでしょうか?
もしTRUE が 1 と定義されていて、BOOL値がTRUEとして1以外を
返すと実行されないと思ったので。
0453444NGNG
皆さん、レスありがとうございます。
なるほど、構造体ごと渡すと重たいので構造体のポインタで渡すか、
または配列とサイズを両方パラメータとして渡す、のですか。

とりあえず今までいろいろ勉強のため書いたプログラムを、
ポインタで渡すよう修正してみます。
ありがとうございました。
0454デフォルトの名無しさんNGNG
BOOL値ってナニ?
0455452NGNG
Boolean(真偽値)のことです。
BOOLはVC独自の定義でした。端折ってすいません。
0456デフォルトの名無しさんNGNG
>>452
普通の発想(Javaのbooleanみたいにtrueとfalseの値しか取らない)
ならif (hoge())が当然だが(でないと
if ((...(hoge() == TRUE) == TRUE) == TRUE)...) と書くはめになる)
WinのAPIは戻り値がBOOLなのに1と0と-1を返したりするからなあ…
0457デフォルトの名無しさんNGNG
>>452
そう。だから、C++/C99でboolが組み込み型に導入された。
0458452NGNG
>>456
ます、なぜこんな質問したかというと、コードに
if (hoge() == TRUE)
と書けばhogeがBOOL値を返す関数だとひと目でわかるのですが
if (hoge())
だと、hogeは有効なハンドルを返すのか、何かの計算結果を返すのか
もしくは真偽値をかえすのか、パッと見てわからないですよね。
なので、できれば ”==”を使った表現をしたかったのですが
TRUEの値が一定でないと危ないコードになるかなぁと。

>if ((...(hoge() == TRUE) == TRUE) == TRUE)...) と書くはめになる)
if ( (hoge() == TRUE) == true )
とは違う意味なのですか?(TRUEが自分で定義したものでtrueが言語定義)
0459デフォルトの名無しさんNGNG
>>457
待った、デマは流すな。
C99 で定義されたのは、<stdbool.h> の _Bool だ。
C には結局 bool は無い。
0460414NGNG
>>445
>> 関数側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
>>456
なんか矛盾してない?
> WinのAPIは戻り値がBOOLなのに1と0と-1を返したりするからなあ

だから
if (hoge()) とか
if(hoge()!=FALSE)
と書くべきなのだが。
0462414NGNG
(続き)
この場合、buf2に書き込みが行われる際にbuf1まで影響されないかと思ったんです。
(もしくはその逆のbuf1に書き込もうとしたらbuf2にも影響が・・・)
実験結果からいうと&buf1=0x0012f778,&buf2=0x0012f774とその差4byteだったので、
相互に影響は出ませんでちた。
なんで4byteの差があるのかわからないけど、これなら引数がDWORD *でも問題ない
みたい・・・てか、実験して確認したらやはり問題なかった。
buf1とbuf2のアドレスが1バイト間隔だと思ってたんです。
私の考えていたメモリリークの可能性ってのは分かって戴けたかしら?
ていうか、メモリリークの危険は無いと思って良いのかな?たまたまかな?
4byte以上の変数型ってあったっけ?

>俺が言ってるのは、例えばポインタのサイズが
>sizeof(long*) > sizeof(LPARAM*) の時にまずいという話。
>といっても将来そうなることは無い気がするけど。
これは私も無いと思いますね。

>俺も皆の意見と同じく、気になるなら値を一旦LPARAM型変数に
>キャストした方が安全な気がする。
確かに皆様の言われることはよく分かりましたが、
・・というか、上記実験結果の信用性次第なんでしょか?
0463デフォルトの名無しさんNGNG
これだ!
if (hoge() != FALSE)
0464459NGNG
ごめん、今確認したら、

#define bool _Bool

だって。
マクロだけどあることはあるみたいだ。
0465452NGNG
>>457
456氏が書いているように
>WinのAPIは戻り値がBOOLなのに1と0と-1を返したりするからなあ…
WinAPIのような関数を使わないといけない状態だと
一貫したコードがかけないんですよね。

# GetMessageなんてのが、まさにそうですよね。
0466デフォルトの名無しさんNGNG
>>463
そりゃまずいって(w
-1が返ったときはエラーなのにTRUEだと思っちゃう。
0467デフォルトの名無しさんNGNG
>>459
スマソ。C99ではboolはマクロだった・・・
0468461NGNG
ごめん。465を見て意味がわかった。
0469デフォルトの名無しさんNGNG
#include <stdio.h>
void 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
>>462
いったい何をやりたいんだか…
どうせ環境に思いっきり依存したことをやってるんだから、
自分の環境で動くなら良いのでは?

ちなみに、最近のCPUでは、1バイトの変数でも4バイト境界や
8バイト境界に整列させて割り付けるのはあたりまえだし、
doubleやlong longなど、一般的な環境で4バイトを超えるサイズの
データ型は色々ある。(構造体とか配列とかも…)
0471414NGNG
>>469
さっきは書かなかったけど、そのケースでは漏れる事が分かってます。
てか、最初それを例に書いてて、漏れて当たり前だと気がついて書き直した。w
0472デフォルトの名無しさんNGNG
つか元々真偽値の類いでは無い値も返す関数で真偽値の比較をする事が間違いでは?返り値-1とかは別の形で補足すべきだろ。
0473デフォルトの名無しさんNGNG
まあ「元々」といいだしたらBOOLと言って置きながら
3通り以上の区別しなきゃならん値を返すほうが間違いなんだが。
0474デフォルトの名無しさんNGNG
>>472 間違いだろうけど、存在するんだから仕方ない。
0475445NGNG
>>462
> この場合、buf2に書き込みが行われる際にbuf1まで影響されないかと思ったんです。
> (もしくはその逆のbuf1に書き込もうとしたらbuf2にも影響が・・・)

だから俺が書いた話がそれなんだが。
あんたはその逆(WORD*をBYTE*に渡す)を書いてたんだが。

> > 今後sizeof(LPARAM) >= sizeof(long)の条件が崩れた場合恐いんですが。
> 呼び出す関数がブラックボックスなら、逆( <= )だと思うが。
こう書いたはずだが。

> 私の考えていたメモリリークの可能性ってのは分かって戴けたかしら?
> ていうか、メモリリークの危険は無いと思って良いのかな?たまたまかな?

それはメモリリークとは呼ばない。
バッファオーバーランなら分かるが。
0476デフォルトの名無しさんNGNG
>>471
なにをいってるか分からんのだが。
コンパイラが空けて配置するからいいと思ってるのか?
こういう風に消してしまうことがあると思うのだが。
#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
>>458
それは逆だろう。
ハンドルとかポインタ返す関数の時はINVALID_HANDLEとかNULLと比較すればヨイ。
if(hoge())ならhoge()はBOOLを返すと思え。
0478414NGNG
>>470
> ちなみに、最近のCPUでは、1バイトの変数でも4バイト境界や
> 8バイト境界に整列させて割り付けるのはあたりまえだし、
> doubleやlong longなど、一般的な環境で4バイトを超えるサイズの
> データ型は色々ある。(構造体とか配列とかも…)
どもです。了解しました。
つまり、メモリリーク(言葉の意味違う?)の可能性があるんですね。
>>441で書いたキャストして代入(short変数=(short)long変数)の例では
キャストで動作が保証(CPU依存?コンパイラ依存な気がする)される
ので、関数引数でキャストした場合も問題なく動くのかと期待してました。
0479デフォルトの名無しさんNGNG
>>414
メモリ リークってfreeのし忘れだが
0480デフォルトの名無しさんNGNG
こうしる。

BOOL bRet = hoge();
if(bRet){

}

>>452=>>458の主旨は返り値の内容の意味がわかりやすいかどうかだから
↑みたくするなりコメントつけるなり好きにしる。
0481445NGNG
> ていうか、メモリリークの危険は無いと思って良いのかな?たまたまかな?

多分変数を確保する時にBYTEも32ビット分確保されてるだけ。
つまり結果オーライになってるだけ。

呼び出し側を配列にして試してみるといい。
0482414NGNG
>>475
すんません。>478書いてる間に色々レスを頂いてましたね。
完全に理解出来ました&何度も指摘して頂いてるのに勘違いしっぱなして
申し訳なかったっす。
キャストするのは止めます。
どもありがとうございました。
0483デフォルトの名無しさんNGNG
>>458
そうか?
if(hoge())
が真だと、とにかくfalse/FALSE/NULL/0ではないことがひとめで分かる。
0484414NGNG
ちなみに、「リーク=漏れる」という解釈で「メモリ漏れ」という意味で
発言してたのでつよ。。
バッファオーバーラン・・たしかにそうですね。
バッファオーバーフローは? オーバーランと同じかな。
0485デフォルトの名無しさんNGNG
>>458はそもそも真偽値に他の情報を求めるからまずいんでねぇか。
0486がががNGNG
main(){int n,m,i,j;mat a,b,x;
a=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
>>483
わかってないじゃん。
真だとfalse/FALSE/NULL/0以外の何であるか一目で分かってないし、
偽だとfalse/FALSE/NULL/0のどれであるかも一目で分かってない。
0489452NGNG
>>477
>ハンドルとかポインタ返す関数の時はINVALID_HANDLEとかNULLと比較すればヨイ。
たしかにそうですね。すいません。

RegisterClassの場合はどのような記述がいいのでしょうか?
(returnはATOM型になっています)
猫でもわかるプログラミングでは

if (!RegisterClass(&myProg))
return FALSE;

このように記述されていますが。

>>480
参考にさせていただきます。

>>483
>が真だと、とにかくfalse/FALSE/NULL/0ではないことがひとめで分かる。
そういうことではなく、関数がどういうタイプの戻り値を返すのかが
わかりやすいコーディングがしたいだけです。
真であるか偽であるかは、別の話なわけで。
0490デフォルトの名無しさんNGNG
>>486
スマン ワラタ
0491デフォルトの名無しさんNGNG
>>483
同意。
漏れは
if(hoge())
という書き方して
if(strcmp(hoge, sage) != 0)
という書き方でこっちのほうを明示的視覚的に分かるようにしてる
0492デフォルトの名無しさんNGNG
バッファオーバーラン=バッファオーバーフロー
0493デフォルトの名無しさんNGNG
真偽値を返す関数は関数名を
is... とか has... とかにすればよい
0494デフォルトの名無しさんNGNG
>>488
if(hoge())はそんなこと知らなくてもいい。
0495414NGNG
>>487
>>492
どっちなんでしょか・・
0496デフォルトの名無しさんNGNG
IsTrue/IsFalse関数(マクロ)を作ればいい。
0497デフォルトの名無しさんNGNG
> ちなみに、「リーク=漏れる」という解釈で「メモリ漏れ」という意味で
> 発言してたのでつよ。。

アスキー用語辞典より
http://yougo.ascii24.com/gh/26/002659.html
0498デフォルトの名無しさんNGNG
>>494
適当にやるのは良くない。
0499492NGNG
>>495
つか、自分で調べろよ。俺は調べたが。
0500デフォルトの名無しさんNGNG
>>498
どれか知りたいなら比較すりゃいい。
0501452NGNG
すこし頭がごっちゃになってきましたが

1.ポインタやハンドルのときはNULLやINVALID〜などで比較する
2.bool値の場合は省略
3.矛盾している関数(GetMessage等)は個別に対応する。

ってのが、シンプルで確実なんでしょうか。
0502デフォルトの名無しさんNGNG
>>489
> if (!RegisterClass(&myProg))
> return FALSE;

RegisterClassの戻り値自体が必要なのではなくて、戻り値が真か偽かがわかればよいのだから
他の情報を求めなくていいじゃないか。
0503452NGNG
>2.bool値の場合は省略
trueかfalseしか返ってこないのであれば、0であることが確定している
falseと比較する。ってものありましたね。
0504414NGNG
>>499
調べますた!
同じってことで理解しますた!
@IT用語辞典にて
0505デフォルトの名無しさんNGNG
関数が適当な名前だと省略すると定義を調べるまでbool値だと分からない罠。
0506デフォルトの名無しさんNGNG
たいてい成功したら非ゼロ、失敗ならゼロを返すんだから
if ( hoge() ) ...
if ( !hoge() )...
で十分。そうでない場合だけ個別に対応すればいい
わざわざ
if ( hoge() != NULL )...
if ( hoge() == NULL )...
なんてやるやつはDQN
0507デフォルトの名無しさんNGNG
でも!=FALSEは否定の否定だから何もつけない方が却って読み易いと思う。
プログラミング作法か何かに載ってたが。
0508デフォルトの名無しさんNGNG
>>506
NULLと比較している時点で、こいつのレベルが分かってしまうんだが。
0509デフォルトの名無しさんNGNG
INVALID_HANDLE_VALUE だけは特殊だが、
false、FALSE、NULL は 0 である事が保証されている。
488 は何でこれらを区別したいのかわからん。
0510デフォルトの名無しさんNGNG
>>508
501 を受けて書いたのですが
0511デフォルトの名無しさんNGNG
!=FALSE を付けるかどうかは、完全にプログラミングスタイルに拠る。
あってもなくても、コンパイラは同じコードを吐く。
例え最適化オプションが ON になっていなくても。
0512デフォルトの名無しさんNGNG


結論としてはbool型が無かったC言語が糞ということでよろしいですね。
0513511NGNG
つまり、どっちでもいい。
どっちかでならなければならないというのは間違っている。
0514デフォルトの名無しさんNGNG
>506
「ポインタやハンドルを返す」なら、返ってきた値捨てるなよ
0515デフォルトの名無しさんNGNG
他人が見ても分かりやすいようにする方針なら!=FALSEを付けるというだけだろ。
0516デフォルトの名無しさんNGNG
if((fp = fopen("hoge", "r")) == NULL)perror("test.c");

0517デフォルトの名無しさんNGNG
スタイルの話ならもうやめようぜ。
元質問はTRUEと比較するとまずいのでは?って質問なんだから。

A. はい、まずいです。どうしても比較したいならFALSEとしてください。

これで終わりなはず。
0518デフォルトの名無しさんNGNG
>>514
おまえは fgets() を使ったことがないのかと
0519デフォルトの名無しさんNGNG
おれとしては
#define TRUE !FALSE
とかして
if(hoge() == TRUE)とかの方が良いな。
とにかく二重否定は避けたい。
0520デフォルトの名無しさんNGNG
なんだよ、うまい具合にNULL論争にチェンジさせる気かよ。
0521デフォルトの名無しさんNGNG
今のコンパイラじゃ どっちも変わんないよ。
if( hoge ){}
ってやると ぱっと見 変数が ポインタか実数かわかんないじゃん。
んなことで
if( NULL != hoge ){}
支持。


0522デフォルトの名無しさんNGNG
>>519
もうネタはけっこう。
0523496NGNG
オレの意見はそんなに馬鹿らしいか...
0524デフォルトの名無しさんNGNG
>>514
お前はstrchrの結果も必ず保存するのかと
0525デフォルトの名無しさんNGNG
ネタと言えば、これは Microsoft 社きってのネタか?

IE の中止ボタンがしいたけに見えて困る
http://w3j.org/nazokb/jp4110000.html
0526デフォルトの名無しさんNGNG
>>519
ワロタ
0527デフォルトの名無しさんNGNG
>>522
アホ
$ grep glib.h -e "TRUE.*FALSE"
#define TRUE (!FALSE)
0528デフォルトの名無しさんNGNG
>>519
hoge() が !FALSE を返してくれる保証があるならそれでもいいが。

>>523
面倒なだけだと思う。
0529デフォルトの名無しさんNGNG
>>527
お前がアホ。
ネタと書かれた意味がわかってない。
0530514NGNG
506を受けて書いているので、引数はないことを前提にしているのだが
0531デフォルトの名無しさんNGNG
>>527
あふぉはおまえ
if ( hoge() == TRUE )
がネタだっつってんの
0532デフォルトの名無しさんNGNG
>>529
いや、おまえの方がアホ。
俺の書いた意味が分かっていない。
0533デフォルトの名無しさんNGNG
>>527
>>528

>>530
煽りだから気にするな、言いたい事は分かる。
0534デフォルトの名無しさんNGNG
早くも 514 が負け惜しみを言い初めました
0535デフォルトの名無しさんNGNG
はっきり言ってこんな事は仕事でプロジェクト組んで
やっていれば、いやでも読みやすいようにし向けられるので
どうでも良いのです。
人はそれをコーディング規約と呼びます。
0536デフォルトの名無しさんNGNG
コーディングスタイルの話は心底どうでもいい。
0537デフォルトの名無しさんNGNG
>>535
それには語弊があるぞ。
読みにくいように仕向けられるのコーディング規約なんか山のようにある。
0538デフォルトの名無しさんNGNG
>>537
例: GN(略
0539デフォルトの名無しさんNGNG
スタイルの問題だと重々承知しているのだが、
if(hoge)
で、
ifの仕様からしてhoge自体が真偽値/ポインタなら、さらに明示的に比較するのは
俺は抵抗がある。
0540デフォルトの名無しさんNGNG
コーディング規約の規約を作れ。
0541デフォルトの名無しさんNGNG
BOOLについて考えてみる。
    ∧_∧                       ∧_∧
    ( ´Д`)     ∧_∧              ( ´Д`)     ∧_∧
   /    \    (´Д` )            /    \    (´Д` )
__| |     | |_   /    ヽ、       .__| |    .| |_   /    ヽ、
||\  ̄ ̄ ̄ ̄   / .|   | |        ||\  ̄ ̄ ̄ ̄    /|    | |
||\..∧_∧    (⌒\|__./ ./        .||\..∧_∧    (⌒\|__./ ./
||. . (    )     ~\_____ノ|  ∧_∧. ||. .(    )     ~\_____ノ|    ∧_∧
.  _/   ヽ          \|   (´Д` ).  _/   ヽ          \|    (´Д` )
.  |     ヽ          \ /    ヽ.   |     ヽ          \  /     ヽ、
.  |    |ヽ、二⌒)       / .|   | |   |    |ヽ、二⌒)        / .|    | |
.  .|    ヽ \∧_∧   (⌒\|__./ ./ .  .|    ヽ \∧_∧    (⌒\|__../ ./
   ヽ、___(    )      ~\_____ノ|  ∧_∧ ___(    )      ~\_____ノ|   ∧_∧
.         _/   ヽ          \| (´Д` ).    _/   ヽ          \|   (´Д` )
.         |     ヽ          \ /    ヽ、   |     ヽ          \ /    ヽ、
.         |    |ヽ、二⌒)       / .|   | | .   |    |ヽ、二⌒)       / .|    | |
.         .|    ヽ \\       (⌒\|__./ ./ .   .|    ヽ \\       (⌒\|__./ ./
.         ヽ、____ \\       ~\_____ノ| .   ヽ、____ \\      ~\_____ノ|


0542デフォルトの名無しさんNGNG
ハンガリアンとかな
0543デフォルトの名無しさんNGNG
スタイルの話を「そうだねー。それもいいねー。」くらいに軽く流すならいいが
決まって熱くなる奴がいるから続けたくないんだよなぁ
0544デフォルトの名無しさんNGNG
>>539
C言語のifの仕様からして抵抗がある。
ifの中身は本来は真のbool型(true/falseのみ)でなければならないはずだ。
ついでにそんな所で代入できちゃいかん。
0545デフォルトの名無しさんNGNG
>>543
スタイルを強制されたこと無いだろ。
0546デフォルトの名無しさんNGNG
TRUEとは比較せずにFALSEと比較することで満場一致の様子
    ∧_∧                       ∧_∧
    ( ´Д`)     ∧_∧              ( ´Д`)     ∧_∧
   /    \    (´Д` )            /    \    (´Д` )
__| |     | |_   /    ヽ、       .__| |    .| |_   /    ヽ、
||\  ̄ ̄ ̄ ̄   / .|   | |        ||\  ̄ ̄ ̄ ̄    /|    | |
||\..∧_∧    (⌒\|__./ ./        .||\..∧_∧    (⌒\|__./ ./
||. . (    )     ~\_____ノ|  ∧_∧. ||. .(    )     ~\_____ノ|    ∧_∧
.  _/   ヽ          \|   (´Д` ).  _/   ヽ          \|    (´Д` )
.  |     ヽ          \ /    ヽ.   |     ヽ          \  /     ヽ、
.  |    |ヽ、二⌒)       / .|   | |   |    |ヽ、二⌒)        / .|    | |
.  .|    ヽ \∧_∧   (⌒\|__./ ./ .  .|    ヽ \∧_∧    (⌒\|__../ ./
   ヽ、___(    )      ~\_____ノ|  ∧_∧ ___(    )      ~\_____ノ|   ∧_∧
.         _/   ヽ          \| (´Д` ).    _/   ヽ          \|   (´Д` )
.         |     ヽ          \ /    ヽ、   |     ヽ          \ /    ヽ、
.         |    |ヽ、二⌒)       / .|   | | .   |    |ヽ、二⌒)       / .|    | |
.         .|    ヽ \\       (⌒\|__./ ./ .   .|    ヽ \\       (⌒\|__./ ./
.         ヽ、____ \\       ~\_____ノ| .   ヽ、____ \\      ~\_____ノ|
0547デフォルトの名無しさんNGNG
ハンガリアンは糞
0548デフォルトの名無しさんNGNG
C++なら、
if(HOGE *hoge = get_hoge())
って書けるが、これは明示的に比較する形で書けない。
0549デフォルトの名無しさんNGNG
>>545
愚痴はマ板逝け。
0550デフォルトの名無しさんNGNG
bool型が無かったC言語が糞ということでよろしい!
    ∧_∧                       ∧_∧
    ( ´Д`)     ∧_∧              ( ´Д`)     ∧_∧
   /    \    (´Д` )            /    \    (´Д` )
__| |     | |_   /    ヽ、       .__| |    .| |_   /    ヽ、
||\  ̄ ̄ ̄ ̄   / .|   | |        ||\  ̄ ̄ ̄ ̄    /|    | |
||\..∧_∧    (⌒\|__./ ./        .||\..∧_∧    (⌒\|__./ ./
||. . (    )     ~\_____ノ|  ∧_∧. ||. .(    )     ~\_____ノ|    ∧_∧
.  _/   ヽ          \|   (´Д` ).  _/   ヽ          \|    (´Д` )
.  |     ヽ          \ /    ヽ.   |     ヽ          \  /     ヽ、
.  |    |ヽ、二⌒)       / .|   | |   |    |ヽ、二⌒)        / .|    | |
.  .|    ヽ \∧_∧   (⌒\|__./ ./ .  .|    ヽ \∧_∧    (⌒\|__../ ./
   ヽ、___(    )      ~\_____ノ|  ∧_∧ ___(    )      ~\_____ノ|   ∧_∧
.         _/   ヽ          \| (´Д` ).    _/   ヽ          \|   (´Д` )
.         |     ヽ          \ /    ヽ、   |     ヽ          \ /    ヽ、
.         |    |ヽ、二⌒)       / .|   | | .   |    |ヽ、二⌒)       / .|    | |
.         .|    ヽ \\       (⌒\|__./ ./ .   .|    ヽ \\       (⌒\|__./ ./
.         ヽ、____ \\       ~\_____ノ| .   ヽ、____ \\      ~\_____ノ|
0551デフォルトの名無しさんNGNG
しかしそれではワンパターンとの声により再び議論
    ∧_∧                       ∧_∧
    (  ´Д`)     ∧_∧              (  ´Д`)     ∧_∧
   /    \    (´Д` )            /    \    (´Д` )
__| |     | |_   /    ヽ、       .__| |    .| |_   /    ヽ、
||\  ̄ ̄ ̄ ̄   / .|   | |        ||\  ̄ ̄ ̄ ̄    /|    | |
||\..∧_∧    (⌒\|__./ ./        .||\..∧_∧    (⌒\|__./ ./
||. . (    )     ~\_____ノ|  ∧_∧. ||. .(    )     ~\_____ノ|    ∧_∧
.  _/   ヽ          \|   (´Д` ).  _/   ヽ          \|    (´Д` )
.  |     ヽ          \ /    ヽ.   |     ヽ          \  /     ヽ、
.  |    |ヽ、二⌒)       / .|   | |   |    |ヽ、二⌒)        / .|    | |
.  .|    ヽ \∧_∧   (⌒\|__./ ./ .  .|    ヽ \∧_∧    (⌒\|__../ ./
   ヽ、___(    )      ~\_____ノ|  ∧_∧ ___(    )      ~\_____ノ|   ∧_∧
.         _/   ヽ          \| (´Д` ).    _/   ヽ          \|   (´Д` )
.         |     ヽ          \ /    ヽ、   |     ヽ          \ /    ヽ、
.         |    |ヽ、二⌒)       / .|   | | .   |    |ヽ、二⌒)       / .|    | |
.         .|    ヽ \\       (⌒\|__./ ./ .   .|    ヽ \\       (⌒\|__./ ./
.         ヽ、____ \\       ~\_____ノ| .   ヽ、____ \\      ~\_____ノ|
0552デフォルトの名無しさんNGNG
週末なのに論争もなくて寂しいからって、プログラミングスタイルという伝家の宝刀を抜いちゃいかん。
0553デフォルトの名無しさんNGNG
C言語のifの仕様がすべての元凶
    ∧_∧                       ∧_∧
    ( ´Д`)     ∧_∧              ( ´Д`)     ∧_∧
   /    \    (´Д` )            /    \    (´Д` )
__| |     | |_   /    ヽ、       .__| |    .| |_   /    ヽ、
||\  ̄ ̄ ̄ ̄   / .|   | |        ||\  ̄ ̄ ̄ ̄    /|    | |
||\..∧_∧    (⌒\|__./ ./        .||\..∧_∧    (⌒\|__./ ./
||. . (    )     ~\_____ノ|  ∧_∧. ||. .(    )     ~\_____ノ|    ∧_∧
.  _/   ヽ          \|   (´Д` ).  _/   ヽ          \|    (´Д` )
.  |     ヽ          \ /    ヽ.   |     ヽ          \  /     ヽ、
.  |    |ヽ、二⌒)       / .|   | |   |    |ヽ、二⌒)        / .|    | |
.  .|    ヽ \∧_∧   (⌒\|__./ ./ .  .|    ヽ \∧_∧    (⌒\|__../ ./
   ヽ、___(    )      ~\_____ノ|  ∧_∧ ___(    )      ~\_____ノ|   ∧_∧
.         _/   ヽ          \| (´Д` ).    _/   ヽ          \|   (´Д` )
.         |     ヽ          \ /    ヽ、   |     ヽ          \ /    ヽ、
.         |    |ヽ、二⌒)       / .|   | | .   |    |ヽ、二⌒)       / .|    | |
.         .|    ヽ \\       (⌒\|__./ ./ .   .|    ヽ \\       (⌒\|__./ ./
.         ヽ、____ \\       ~\_____ノ| .   ヽ、____ \\      ~\_____ノ|
0554デフォルトの名無しさんNGNG
>>544
C では、非 0 が真であると明確に定義されていますが何か?
0555デフォルトの名無しさんNGNG
>>549
図星だからって誤魔化してもダメだよ。
0556デフォルトの名無しさんNGNG
そのAAキモイ
0557デフォルトの名無しさんNGNG
>>554
そもそも0とか非0がbool型にキャストできるのがおかしい。VBじゃあるまいし。
0558デフォルトの名無しさんNGNG
bool型だってどうせ中身は0と非0だろ?
0559デフォルトの名無しさんNGNG
だから何で C++ でもないのに bool の話をするんだ?
    ∧_∧                        ∧_∧
   Σ( ;´Д`)     ∧_∧            Σ(; ´Д`)     ∧_∧
   /    \   Σ(´Д`; )           /    \  Σ(´Д`; )
__| |     | |_   /    ヽ、       .__| |    .| |_   /    ヽ、
||\  ̄ ̄ ̄ ̄   / .|   | |        ||\  ̄ ̄ ̄ ̄    /|    | |
||\..∧_∧    (⌒\|__./ ./        .||\..∧_∧    (⌒\|__./ ./
|| Σ(    ;)     ~\_____ノ|  ∧_∧. ||Σ(    ;)     ~\_____ノ|    ∧_∧
.  _/   ヽ          \|Σ(´Д`; ).  _/   ヽ          \|   Σ(´Д`; )
.  |     ヽ          \ /    ヽ.   |     ヽ          \  /     ヽ、
.  |    |ヽ、二⌒)       / .|   | |   |    |ヽ、二⌒)        / .|    | |
.  .|    ヽ \∧_∧   (⌒\|__./ ./ .  .|    ヽ \∧_∧    (⌒\|__../ ./
   ヽ、___Σ(    ;)      ~\_____ノ|  ∧_∧ ___Σ(    ;)      ~\_____ノ|   ∧_∧
.         _/   ヽ          \|.Σ(´Д`; ).    _/   ヽ          \| Σ(´Д`; )
.         |     ヽ          \ /    ヽ、   |     ヽ          \ /    ヽ、
.         |    |ヽ、二⌒)       / .|   | | .   |    |ヽ、二⌒)       / .|    | |
.         .|    ヽ \\       (⌒\|__./ ./ .   .|    ヽ \\       (⌒\|__./ ./
.         ヽ、____ \\       ~\_____ノ| .   ヽ、____ \\      ~\_____ノ|
0560デフォルトの名無しさんNGNG
>>531
ちゃんと文読め。
二重否定を避けたいって書いてるだろうが。
どの話を受けて俺が書いたか考えろ。
0561デフォルトの名無しさんNGNG
VB じゃあるまいし、ってあたりが根拠レスだよな。
何がおかしいと考えてるのかわからん。
0562デフォルトの名無しさんNGNG
#define CMP(s1,op,s2) strcmp(s1,s2) op 0

CMP( "afo", ==, "vaka" );
0563デフォルトの名無しさんNGNG
コーディング時に
気をつければいいのだが、
if文の中に関数を書くのにも多少抵抗がある。
たとえで言うのなら、
if(hoge())
では式の評価が関数一つなので問題はないが、
if((hoge() && hage())
ではhoge()の結果が偽であればhage()は実行されない。
気をつけて書けば、実行速度が良くなるのだが、
評価順序を間違えるとバグの原因になる諸刃の剣。
0564デフォルトの名無しさんNGNG
>>560
ナニをいまさら...(w
あわてて glib 持ち出したのはおまえだろ?
0565デフォルトの名無しさんNGNG
>>560
> if(hoge() == TRUE)とかの方が良いな。
と
> とにかく二重否定は避けたい。
がどう繋がってるのかちっとも読めない。

第一みんな、if(hoge() == TRUE) の弊害の事を指摘してるのであって、
二重否定うんぬんの話は誰もしていない。
0566デフォルトの名無しさんNGNG
>>558
仕様と実装の区別がついているか?
0567デフォルトの名無しさんNGNG
さっそくスタイルについて熱くなってるわけだが
0568デフォルトの名無しさんNGNG
/\ |  /|/|/|  ドドドドドドドドドドドド!!
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|     (´⌒(´⌒`)⌒`)
  |  /  /  |文|/ // /  (´⌒(´祭だ!!祭だ!!`)⌒`)
  |/  /.  _.| ̄|/|/|/    (´⌒(´∧ ∧⌒`)`)`)⌒`)
/|\/  / /  |/ /     (´⌒(´(,゚Д゚ )つ `)`)
/|    / /  /ヽ  (´⌒(´⌒  (´⌒( つ |〕 /⌒`)⌒`)
  |   | ̄|  | |ヽ/|  遅れるな!!   ( |  (⌒)`)⌒`)
  |   |  |/| |__|/.   ∧_∧ ⌒`).ドし'⌒^ミ `)⌒`)ォ
  |   |/|  |/  (´⌒(´( ´∀` )つ  ド  ∧_∧⌒`)
  |   |  |/    (´⌒(´( つ/] /    ォと( ・∀・ ) 突撃――!!
  |   |/        ( |  (⌒)`)  ォ ヽ[|⊂[] )`)
  |  /         (´ ´し'⌒^ミ `)`)ォ (⌒)  |
0569デフォルトの名無しさんNGNG
>>561
じゃあVB〜は取り消すよ。
数値とbool(真偽値)は全く別の概念だろ。それを相互に変換する理由が無い。
0570デフォルトの名無しさんNGNG
>>558
ほう、仕様ね。
で、C++ の話だとしても、0 や非 0 が bool 型にキャストできるのがおかしい
と思う根拠は何だ?
0571デフォルトの名無しさんNGNG
#define TRUE 1
#define FALSE 0
#define !TRUE FALSE
#define !FALSE TRUE love
0572デフォルトの名無しさんNGNG
>>570
別の概念だから。
0573デフォルトの名無しさんNGNG
組み込みのbool型とtypedefと#defineを使ったbool型はどちらも使い勝手は変わらないと思うんだけど。
0574デフォルトの名無しさんNGNG
>>569
言語仕様で、できるようになっている。
その方が便利だからだ。
(多くの CPU は 0 と非 0 を判定するのに便利に命令セットを持っている)

その仕様を否定したいなら、変換してはならない理由を示せ。
0575デフォルトの名無しさんNGNG
>>570
> で、C++ の話だとしても、0 や非 0 が bool 型にキャストできるのがおかしい
> と思う根拠は何だ?

ハァ?
俺はそんなことはひとことも言っていませんが。
0576デフォルトの名無しさんNGNG
==TRUEの弊害はネタもとがちゃんと推測してるし、その後の数レスで終わってる。
いまはスタイル論争だけ。
0577デフォルトの名無しさんNGNG
>>486
scanfが間違い。
0578デフォルトの名無しさんNGNG
>>572
別の概念だとキャストできるのがおかしいのは何故だ?
真偽値だろうが数値だろうが、データはデータだ。
変換できておかしくは無い。
0579570NGNG
>>575
スマソ、なんか混乱してるYO
0580デフォルトの名無しさんNGNG
もう話の焦点もぼけてぐだぐだです
0581デフォルトの名無しさんNGNG
>>573
否。
組み込みの bool 型は、非 false を受けた時 必ず true と認識する点で
typedef / #define とは明確に違う。
0582デフォルトの名無しさんNGNG
>>573
たとえ、
#define TRUE !FALSE
にしたとしても、
BOOL b = TRUE;
で困る。
0583デフォルトの名無しさんNGNG
>>581
#define false 0
#define true (!false)

こう定義すれば非falseは必ずtrueになると思うが
0584デフォルトの名無しさんNGNG
>>574
0と非0を判定するのに便利な命令セットを持っていることは
キャストできるのに便利な理由になっていない。
true/falseの実装が0/非0にすれば判定が便利になる命令ってだけだ。
よって変換できる理由は無い。ちなみに無いのもの理由を出すことは不可能。
0585570NGNG
566 を指したかったの
0586デフォルトの名無しさんNGNG
わかったから、とりあえず名前付けてくれ。お前ら。誰が誰だか
さっぱりだ。
0587デフォルトの名無しさんNGNG
>>574
人はそれを0フラグと呼びます。

そしてOSのシステムコールではえてして
0が真となる仕様となっております。
0588デフォルトの名無しさんNGNG
>>587
真とか偽の問題じゃなくて、-1(負?)がエラーってだけだろ。
0589デフォルトの名無しさんNGNG
>>583
なんないでしょ
0590570NGNG
>>583
true 以外にも非 false 値はあるだろ。
それを受けたらどうなるんだ?
0591デフォルトの名無しさんNGNG
>>589
なんで?
!0==!0は真にならないの?
0592デフォルトの名無しさんNGNG
>>578
別の概念であってもデータである以上キャストはできるが
キャストした結果意味があるとは限らない。
数値(文字コードではなく)を文字にキャストしても意味は無い。
数値を真偽値にキャストしても意味は無い。
0593デフォルトの名無しさんNGNG
>>589
! を根底から覆す画期的意見だな!
0594誰が誰だかNGNG
#define TRUE 1
#define FALSE 0
#define !TRUE 0
#define !FALSE 1
名前
0595デフォルトの名無しさんNGNG
>>584
0 と非 0 を判定するのに便利な命令セットを持っている事に着目して、C では
0 を偽、非 0 を真として扱う仕様になった。
その偽を false、真を true にそのまま変換したいと言う要望は無視するのか?
0596デフォルトの名無しさんNGNG
>>590
プログラマがtrueかfalse以外を入れようとすることまで面倒見切れるかよ。
0597デフォルトの名無しさんNGNG
>>587
関係無い話を持ち出すなよ。
0598デフォルトの名無しさんNGNG
>>591
!0 は 1 になる(よね?まあ、1でなくてもなにか特定0以外の数字になる)
で 3 や 5 は非false な訳だが、
true == 3
は偽になる
0599デフォルトの名無しさんNGNG
>>590
面倒見てるのが bool 型だろ。
0600デフォルトの名無しさんNGNG
>>598
非falseは!falseでしかない。
それ以外を入れようとすることまでは面倒見切れない。
0601599NGNG
596 でした。また同じ間違い・・・
0602デフォルトの名無しさんNGNG
591だが、これは困らなかったよ。
0603デフォルトの名無しさんNGNG
>>595
最初っから真偽値型を作らなかったCが糞なだけ。
もし最初っから真偽値型があったのなら数値型に変換できる理由は無い。
0604デフォルトの名無しさんNGNG
>>600
だから、組み込み型ならそれでもOKなんだってば
0605デフォルトの名無しさんNGNG
>>599
そこまでする必要あるのか?
0606デフォルトの名無しさんNGNG
&と|もな。
0607デフォルトの名無しさんNGNG
             ∧         ∧               ###
            / ヽ        ./ .∧             /#####ヽ
           /   `、     /   .∧           /  ##### \
          /       ̄ ̄ ̄    ヽ          /   #####  ヽ
          l:::::::::              .l       /    #####   ヽ
         |::::::::::  -==・-    -==・-  |      |          ::::::::: :::::::|
         .|:::::::::::::::::   \___/    |      |  -・==-   -・==- :::::::::|
          ヽ:::::::::::::::::::  \/     丿      |    \___/  :: ::::::::|
          ヽ:::::::::::::::::        /       ヽ      \/    :::::::::::|
     ____>:::::::::::::::::       <_        ヽ        ::::;;;::::::::丿
    /:::::::::::::::::::::::: :::::::::          /⌒ヽ⌒、⌒、⌒、      ::::::::: :<___
    |::::::::::::;;;;;;;;;;;;;:::::::::::::::        / /ヽノヽノヽノヽノ       :::::::::::::  :::::::: :::ヽ
   |::::::::::::::::::::::::            /  /:::::::: :::::::::::::::::::::           ::::::::
         bool論争しに行こうか?             いいねぇ〜
0608デフォルトの名無しさんNGNG
貼っとこう。

詭弁の特徴のガイドライン
http://ton.2ch.net/test/read.cgi/gline/1028811653/
0609デフォルトの名無しさんNGNG
1:事実に対して仮定を持ち出す
「もし最初っから真偽値型があったのなら」
0610デフォルトの名無しさんNGNG
             ∧         ∧               ###
            / ヽ        ./ .∧             /#####ヽ
           /   `、     /   .∧           /  ##### \
          /       ̄ ̄ ̄    ヽ          /   #####  ヽ
          l:::::::::              .l       /    #####   ヽ
         |::::::::::  -==・-    -==・-  |      |          ::::::::: :::::::|
         .|:::::::::::::::::   \___/    |      |  -・==-   -・==- :::::::::|
          ヽ:::::::::::::::::::  \/     丿      |    \___/  :: ::::::::|
          ヽ:::::::::::::::::        /       ヽ      \/    :::::::::::|
     ____>:::::::::::::::::       <_        ヽ        ::::;;;::::::::丿
    /:::::::::::::::::::::::: :::::::::          /⌒ヽ⌒、⌒、⌒、      ::::::::: :<___
    |::::::::::::;;;;;;;;;;;;;:::::::::::::::        / /ヽノヽノヽノヽノ       :::::::::::::  :::::::: :::ヽ
   |::::::::::::::::::::::::            /  /:::::::: :::::::::::::::::::::           ::::::::
         TRUELOZVE?              FALSE
0611デフォルトの名無しさんNGNG
発端は南蛮だっけ?
0612デフォルトの名無しさんNGNG
>>605
boolなのにtrueと比べられないよりいいだろ。
0613デフォルトの名無しさんNGNG
>>565
だからちゃんと読めって!
俺は!=FALSEと書くよりも==TRUEが良いと言っているだけ。
if(hoge()==TRUE)の弊害?
アホか。
0614デフォルトの名無しさんNGNG
>>609
苦しくなったからって誤魔化すのはやめろ
0615デフォルトの名無しさんNGNG
true,falseより非0,0の方がわかりやすくていいな・・・
そういう書き方に慣れているからだろうけどね。
0616デフォルトの名無しさんNGNG
>>613
>>528 と >>598 を見ていないのか?
それともその上で言ってるのか?
0617デフォルトの名無しさんNGNG
>>613
その話はとうの昔に終わってんだよハグェが
==TRUE はやめろ。どうしてもやりたいなら != FALSE
過去ログ読んで回線切って師ね
0618デフォルトの名無しさんNGNG
「if文中の式の真偽」と
「_Bool/book変数が保持する真偽」
の区別が付かない香具師がいるな
0619デフォルトの名無しさんNGNG
book->boolナ
0620デフォルトの名無しさんNGNG
book変数age
0621デフォルトの名無しさんNGNG
C言語最高!
boolだとかガキ向けの言語仕様はすっこんでろ。
大人ならば全て自分の責任で判断するのさ。
0622デフォルトの名無しさんNGNG
0,非0でやっているからこそ文字列の終わりが偽となって便利なんだよ。
0623デフォルトの名無しさんNGNG
C の組み込み型に book 型キボン
0624デフォルトの名無しさんNGNG
ああそういえばC99には_Boolなんてのがあるんだっけ?
0625デフォルトの名無しさんNGNG
>>609
だからね。
>>595 のように、そのような仕様になっている理由はちゃんとある。
それを糞と呼ぶのは自由だが、「もし最初っから真偽値型があったのなら」 なんて
絶対あり得ない仮定はもっとクソだって言ってるの。
603 の方が苦しい発言だろうが。
0626デフォルトの名無しさんNGNG
return TRUE;

return !TRUE;
0627デフォルトの名無しさんNGNG
だらだら長く書いて結局言いたいことは「だからそんなCは糞だ」
そんなのは頼むから他スレ行ってやってくれよ。
0628625NGNG
またやった YO・・・
宛先は >>614
0629デフォルトの名無しさんNGNG
>>625
だから数値と真偽値が変換できる必要性を示せ。
0630デフォルトの名無しさんNGNG
利便性ちゃうかと
0631!625NGNG
>>629
俺はそもそも真偽値(bool型)なんてない方がいいと思っているんだがどうだ?
0632デフォルトの名無しさんNGNG
>>629
>>622というわけだ。
0633デフォルトの名無しさんNGNG
>>629
595 を読んでまだ分からないか?
アフォですか?
0634デフォルトの名無しさんNGNG
>>632
文字の終わりは\0だろ。
0635デフォルトの名無しさんNGNG
>>631
時代遅れ

>>632
どう便利なの?
0636デフォルトの名無しさんNGNG
>>634
\0は偽ですが。
もしもfalseのみ偽となり、0と互換性がなかったら偽とならず不便だ。
0637デフォルトの名無しさんNGNG
>>633
>>595は0/非0を判定する命令があっても数値と真偽値が変換できる必要性とは
関係ないと反論した。
0638デフォルトの名無しさんNGNG
>>629
おこちゃまですか?
0639デフォルトの名無しさんNGNG
>>635
・・・・・・・・。
Cでプログラム書いたことある?
0640デフォルトの名無しさんNGNG
>>636
だからどう不便なんだYO!
おまえら不便って言いたいだけちゃうんかと(略
0641デフォルトの名無しさんNGNG
なぜ数値と真偽値が変換されうるのかという声が上がり再び議論
    ∧_∧                       ∧_∧
    (  ´Д`)     ∧_∧              (  ´Д`)     ∧_∧
   /    \    (´Д` )            /    \    (´Д` )
__| |     | |_   /    ヽ、       .__| |    .| |_   /    ヽ、
||\  ̄ ̄ ̄ ̄   / .|   | |        ||\  ̄ ̄ ̄ ̄    /|    | |
||\..∧_∧    (⌒\|__./ ./        .||\..∧_∧    (⌒\|__./ ./
||. . (    )     ~\_____ノ|  ∧_∧. ||. .(    )     ~\_____ノ|    ∧_∧
.  _/   ヽ          \|   (´Д` ).  _/   ヽ          \|    (´Д` )
.  |     ヽ          \ /    ヽ.   |     ヽ          \  /     ヽ、
.  |    |ヽ、二⌒)       / .|   | |   |    |ヽ、二⌒)        / .|    | |
.  .|    ヽ \∧_∧   (⌒\|__./ ./ .  .|    ヽ \∧_∧    (⌒\|__../ ./
   ヽ、___(    )      ~\_____ノ|  ∧_∧ ___(    )      ~\_____ノ|   ∧_∧
.         _/   ヽ          \| (´Д` ).    _/   ヽ          \|   (´Д` )
.         |     ヽ          \ /    ヽ、   |     ヽ          \ /    ヽ、
.         |    |ヽ、二⌒)       / .|   | | .   |    |ヽ、二⌒)       / .|    | |
.         .|    ヽ \\       (⌒\|__./ ./ .   .|    ヽ \\       (⌒\|__./ ./
.         ヽ、____ \\       ~\_____ノ| .   ヽ、____ \\      ~\_____ノ|
0642デフォルトの名無しさんNGNG
>>636
なにが不便なの?
0643デフォルトの名無しさんNGNG
>>640
strlenとか自分で書いてみれば分かると思うが
0644デフォルトの名無しさんNGNG
>>639
ある。
ちなみにおまえは C 以外でプログラム書いたことあるのか?
0645デフォルトの名無しさんNGNG
>>644
Perlを少々・・・
あれは文字列をひとつのものとして扱えるから。
0646デフォルトの名無しさんNGNG
真が非0ではそんなに不満なのか?
0647デフォルトの名無しさんNGNG
>>646
俺は不満じゃない。
0648デフォルトの名無しさんNGNG
>>643
strlenでは文字のポインタが\0になるカウンタを+1しながら
まで繰り返すだけだろ。
0649デフォルトの名無しさんNGNG
bool main(){
return true;
}
のほうがいいですか?
0650デフォルトの名無しさんNGNG
>>648
例はstrcpyの方がいいか。
0651648NGNG
訂正
strlenでは文字のポインタの値が\0になるまでカウンタを+1しながら
繰り返すだけだろ。
0652デフォルトの名無しさんNGNG
ch != '\0'
良いじゃん、これで。
0653デフォルトの名無しさんNGNG
今日は論争っぽく流れ早いけどあんまりおもしろくないな。
0654デフォルトの名無しさんNGNG
>>649
void main()がいい
0655デフォルトの名無しさんNGNG
>>646
真が非0に、偽が0に”変換できる”ことが不満。
0656デフォルトの名無しさんNGNG
while(<STDIN>){
print;
}
0657デフォルトの名無しさんNGNG
>>637
反論になってないよ。単に反対しただけだろう。
0658デフォルトの名無しさんNGNG
>>649
mainは真偽値を返すのではなくエラーコードを返す方がなにかと便利だから
やっぱりintがいいんじゃない。
0659デフォルトの名無しさんNGNG


              不満・愚痴は死滅スレかマ板で


0660デフォルトの名無しさんNGNG
0 == 0ってどんな値を返すの?
0661デフォルトの名無しさんNGNG
>>657
反論になってる。よく読め。
0662デフォルトの名無しさんNGNG
while(<>){
print;
}
0663デフォルトの名無しさんNGNG
Cに真偽値が追加されても(C99には既にあるみたいだが)、実際に使うことはなさそうだなー
0664デフォルトの名無しさんNGNG
Perl厨はきえろ
0665デフォルトの名無しさんNGNG
>>663
追加された意味がわからない人ですか?
0666デフォルトの名無しさんNGNG
>>661
どこが反論になってるかさっぱり分からないから、レス番号とその分を示せ。
0667デフォルトの名無しさんNGNG
>>663
真性のあふぉだな。ないと困るという声が強かったからこそ
わざわざ追加されたのに
0668デフォルトの名無しさんNGNG
>>665
世の中の潮流に合わせただけだと思っているんですけど。
でも使うことはなさそう。
0669デフォルトの名無しさんNGNG
ctype.hもあるからな。
0670デフォルトの名無しさんNGNG
>>667
おいおい。使われることはなさそうなんて言っていないぞ。
"俺は"使うことはなさそうと言っているだけ。
0671デフォルトの名無しさんNGNG
だから、お前らちゃんと名前欄に番号とかいれろ。誰が誰だか
さっぱりだ。
0672デフォルトの名無しさんNGNG
>>666
じゃあ反論になってないと言うな。レスぐらい読め。
0673デフォルトの名無しさんNGNG
>>670
分かってるよ
つまりおまえは真偽値型の必要性が分かってないんだろ?
0674デフォルトの名無しさんNGNG
今のCのif文になにか不満でもあるの?
0675デフォルトの名無しさんNGNG
非0が真で0が偽でいいだろ。
0676デフォルトの名無しさんNGNG
>>667
どの辺が困るんだったっけ?
0677デフォルトの名無しさんNGNG
>>673
ああ。
なくても全然困らないし。
0678デフォルトの名無しさんNGNG
自身の無い奴だけデフォルトで逝け。
0679デフォルトの名無しさんNGNG
TRUEと比べられないというアホみたいなことがなくてすむ。
0680デフォルトの名無しさんNGNG
>>669
・・・今までの話と何の関係が?
0681デフォルトの名無しさんNGNG
string.hもあるしね
0682デフォルトの名無しさんNGNG
TRUEってのは何だ?
0683デフォルトの名無しさんNGNG
>>679
どういうときにTRUEと比べるの?
0684デフォルトの名無しさんNGNG
>>679
あぁ、そうだった。
0685デフォルトの名無しさんNGNG
>>672
読んで分からなかったから訊いただけだ。
それとも、反論があることを証明できないのか?
その方法は簡単、666 の事を実行するだけだ。
そうしてくれないなら以降無視する。
0686デフォルトの名無しさんNGNG
やっぱFORTRAN最高!
0687デフォルトの名無しさんNGNG
ああそうか。
俺はtypedef&#defineのboolを使ったことがないから、真偽値の必要性がわからないんだ。
0688デフォルトの名無しさんNGNG
>>680
ctype.hにはishoge系の関数があるだろ。
過去の資産もあるからそう簡単には変えられないだろうと言いたかった。
0689デフォルトの名無しさんNGNG
>>683
わからないが、617 はそう書けと主張している。
0690680NGNG
>>688
あ、了解。なるほどね。
0691687NGNG
しまった・・・&#と書いたら?になっちまった。
typedef & #define
0692デフォルトの名無しさんNGNG
>>691
トークンはホワイトスペースで区切る癖をつけた方がいいぞ。
0693デフォルトの名無しさんNGNG
ホワイトスペースって何?
0694デフォルトの名無しさんNGNG
>>688
型が変わる程度でロジック弄る必要はないのでは?
0695687NGNG
>>692
はぁ・・・
プログラム書くときも開けていないや。みにくいかな。
0696デフォルトの名無しさんNGNG
Cでオブジェクト思考する方法を教えてください
0697687NGNG
>>693
isspaceが真を返すものかな?
スペースとかタブとか改行とか
0698デフォルトの名無しさんNGNG
>>696
ちょっと待ってろ。
0699デフォルトの名無しさんNGNG
>>696
勝手に思考してください
マジレスすると、GTK+ とかが参考になるかもね
0700デフォルトの名無しさんNGNG
                              γ      γ
       ∧_∧   bool 論争終わり?             γ
       (::::::::::: )   なんだか寂しいな・・・       ......................................
      .(○::::::: )                      .::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::........
     ~"''"""゛"゛""''・、                   ...:::::;;;''        ';;;:::::.......
 "”゛""''""“”゛゛""''' "j'                 ...::::;;;''            '';;;::::::.........
 :::::ヘ :::::....ヽ :::;;;ノ  ::(                ....::::::;;              '';;;::::::::::.......
 ::  ゝ  :::::......ノ:;;../  ~~^^ ~~~~~^^^~
0701デフォルトの名無しさんNGNG
まあ、整数値が真偽値に変換できたほうが便利と言ってるやつらは
軒並みあふぉだったことは分かった
0702デフォルトの名無しさんNGNG
単項演算子と識別子の間は、空けない方が見やすいかも。
0703デフォルトの名無しさんNGNG
>>700
enum bool = { FALSE = 0, TRUE = 1, ERROR = -1};
これをやろう。
0704デフォルトの名無しさんNGNG
>>703
ネタ
0705デフォルトの名無しさんNGNG
>>694
その形が変わるのがちょっとなぁ。
一方の自作ishogeは_Boolで既存のライブラリはintは違和感がある。
0706デフォルトの名無しさんNGNG
13:勝利宣言をする
「まあ、整数値が真偽値に変換できたほうが便利と言ってるやつらは
 軒並みあふぉだったことは分かった」
0707デフォルトの名無しさんNGNG
だいたい真偽値っていってもマシン語コードにしたら整数値なんだから
それらを区別する意味って何かあるの?
0708デフォルトの名無しさんNGNG
オマエラこんな毎晩論争してんの?
お疲れさん。
0709デフォルトの名無しさんNGNG
便利というか簡潔になる。
char *s;
for (s=str; *s; s++)
....;
とか。
0710デフォルトの名無しさんNGNG
>>707
同じようなこと言ったら、仕様と実装の区別が付かない阿呆と言われますた。
0711デフォルトの名無しさんNGNG
>>709
その代わり分かりにくくなるけどね。
0712デフォルトの名無しさんNGNG
>>711
まあ、Cではこう書くもんだと慣れた。
0713デフォルトの名無しさんNGNG
>>709
for ( s=str; *s != '\0'; s++ )
でも十分簡潔だが?分かり安いし

まあ、おれは 709 で書くけどな
0714デフォルトの名無しさんNGNG
ばかばっか
0715デフォルトの名無しさんNGNG
>>711
慣れの問題じゃない?俺は比較してるほうが読みにくいかも。
0716デフォルトの名無しさんNGNG
*sより*s!='\0'の方が「'\0'になったら終了」って言う意味では分かり易い。
0717デフォルトの名無しさんNGNG
>>707
そんなことを言ったらすべてのデータはバイナリなんだからと区別する意味ってあるの?ってなりますよ。
高級言語になればなるほどマシン語コードから離れてより概念的なものになるもんです。
0718デフォルトの名無しさんNGNG
漏れの使ってるコンパイラの吐くコードは、*s でも *s! = '\0' でも変わらない。
だからどちらでもいい。
前者は C プログラマにわかりやすい。
後者は他言語プログラマにわかりやすい。
0719デフォルトの名無しさんNGNG
>>716
それならuntilとかの方が分かりやすい
*s=='\0'ってなるから。
0720デフォルトの名無しさんNGNG
ん?
701=714 は 685 に答えられなかった 672 なの?
0721デフォルトの名無しさんNGNG
>>717
個人的にはCでは区別しなくてもいいと思ってます。
0722デフォルトの名無しさんNGNG
>>718
他言語プログラマはそもそも文字列が文字の配列ってのがやりにくいかも。
0723デフォルトの名無しさんNGNG
717 は C が高級言語だと信じているのか?
0724デフォルトの名無しさんNGNG
>>722
いや、配列がコピーされて関数に渡らないことのほうが・・・
0725デフォルトの名無しさんNGNG
>>723
717じゃないが、+で二つの値を足せるだけでも十分高級だと思うが。
0726デフォルトの名無しさんNGNG
>>720
おいおい、おれは 701 だが 714 ではない。 672 も知らん。
0727デフォルトの名無しさんNGNG
>>726
いいから釣られるなよ。 
0728デフォルトの名無しさんNGNG
>>725
アセンブラでもできると思うが。
0729デフォルトの名無しさんNGNG
725 が衝撃的事実を発表しますた
0730デフォルトの名無しさんNGNG
>>719
まぁuntilなんて予約語は無い訳だが。
0731デフォルトの名無しさんNGNG
>>719
そりゃそうかもしれんが、ここでは
for ( s=str; *s; s++ ) と
for ( s=str; *s != '\0'; s++ ) の場合だろ。
つうか前者ようなコードを初めて見て後者のコードと同じ意味と
すぐに分かった奴っているんだろうか?
0732デフォルトの名無しさんNGNG
>>724
・・・どういう事?
引数に指定すれば配列丸ごと値渡しになるけど、そういう事ではない?
0733デフォルトの名無しさんNGNG
printfがあるだけでも高級だと思うが。
0734デフォルトの名無しさんNGNG
>>728
アセンブラだともっといろいろかかないとだめじゃん

>>729
一応高級言語は環境に依存しないという意味だってことは分かっています(^_^;)
0735デフォルトの名無しさんNGNG
#define until(x) while(!(x))
0736デフォルトの名無しさんNGNG
>>732
配列の先頭アドレスの値渡しだろ?
配列がコピーされるわけじゃない。
0737デフォルトの名無しさんNGNG
>>731
while (*s++ = *t++);
とかもな。
0738デフォルトの名無しさんNGNG
>>一応高級言語は環境に依存しないという意味だってことは分かっています(^_^;)
そんな意味だったっけ?
0739デフォルトの名無しさんNGNG
Cが高級言語って知らない奴がいるのか?
それとももっと高級な言語が出てきたからCが低級言語にでもなったとでもいうのかな。
0740734NGNG
>>738
ちがかった?
マシンに近ければ近いほど低級で、人間に近ければ近いほど高級だと思っていたけど
0741デフォルトの名無しさんNGNG
>>731
初めて見てそう判断するのは難しいが、そのような人は C プログラマーとは
言えないだろう。
0742デフォルトの名無しさんNGNG
printfはc言語の一部では無いけど。
0743デフォルトの名無しさんNGNG
>>734
RISCじゃないのは1命令で書けますよ
0744デフォルトの名無しさんNGNG
買わないといけない言語は高級言語・・・俺のリアル厨房の時の理解
0745デフォルトの名無しさんNGNG
C は、アセンブリ言語に比べれば間違い無くレベルが高いが、高級言語と呼んで
いいかどうか迷うくらいにはそれとのレイヤーが薄い。
0746デフォルトの名無しさんNGNG
add $s0,$t1,$t2; $s0=$t1+$t2
0747デフォルトの名無しさんNGNG
>>745
高級アセンブラ・・・
0748734NGNG
Cは高級言語の中では低級な部類だと思っている。
でも低級言語だとはおもわないなー
0749デフォルトの名無しさんNGNG
昔は高級言語だったが今は高級言語ではない
0750デフォルトの名無しさんNGNG
今度はC言語は高級言語か論争かよ。
0751734NGNG
>>749
ソウダッタノカー(TДT)
0752デフォルトの名無しさんNGNG
比較があっての高級低級であり
何と比較していたか、または何と比較しているかが本質と思われ。
そこを統一しないと永遠に論争は解決しないと思われ。
0753デフォルトの名無しさんNGNG
>>746
個々の環境の命令によらず+で足せるのは高級だと見ていい?
0754デフォルトの名無しさんNGNG
744 に則れば、ほとんどの言語が高級言語ではないな。
0755デフォルトの名無しさんNGNG
>>754 COLDFUSIONはかなり高級
0756デフォルトの名無しさんNGNG
厨房言語==高級言語
0757デフォルトの名無しさんNGNG
>>754
Delphiを低級言語っていうな!
0758デフォルトの名無しさんNGNG
>>747
アセンブリ言語とは明確に違う。
アセンブリ言語はコードに無い動作は絶対にしない。
C はある程度の裏処理があり、また逆に最適化によって書いてあるコードが実行
されない場合もある。
0759デフォルトの名無しさんNGNG
何が高級言語かって決まっているもんじゃないのか?
0760デフォルトの名無しさんNGNG
>>759
学校でそう教えられたんだね。よしよし
0761デフォルトの名無しさんNGNG
>>759 MS-DOS バッチファイル
0762デフォルトの名無しさんNGNG
だれだ、このスレの最適化オプションを偽にしたのは?
0763デフォルトの名無しさんNGNG
Cは高水準言語だけど、文字列の扱いとかは低水準って言われるね。
だからC++ではstd::stringなんか使うわけで。
0764デフォルトの名無しさんNGNG
仕様です
0765デフォルトの名無しさんNGNG
>>758

x86命令からさらにマイクロコードに変換されて実行される
最近のIntelのCPUとかだとそうとも言えんのでは・・・・・・。
0766デフォルトの名無しさんNGNG
結局、752 が妥当だろうな。

ただ、アセンブリ言語が一番低級なのは間違いない。
それよりレベルを下げると、ソフトウェアではなくなる。
0767デフォルトの名無しさんNGNG
機械語を忘れてませんか?
0768デフォルトの名無しさんNGNG
環境は言語の高級さに関係無い。
言語仕様にのみ関係する。
0769デフォルトの名無しさんNGNG
高級言語で検索したらC言語が引っかかった
0770デフォルトの名無しさんNGNG
>>768
言っていることは正しいが場違い。
0771デフォルトの名無しさんNGNG
>>769
それが正しい根拠は。
検索エンジンの検索結果が正しいなら、いくらでも自作自演できるが。
0772デフォルトの名無しさんNGNG
#define 低級 アセンブリ言語
#define 高級 (!低級)

(^o^)/
0773デフォルトの名無しさんNGNG
ひょっとして>>4の言うように1000取り合戦が始まっているのか?
0774デフォルトの名無しさんNGNG
>>772
機械語は高級言語だたのか
0775デフォルトの名無しさんNGNG
if (C言語 == 高級)
という風にしたいんですが・・・
0776デフォルトの名無しさんNGNG
>>775
それじゃダメだよ
!低級
とした時点である値に決まってしまうから
0777デフォルトの名無しさんNGNG
>>775
日本語の識別子が利用可能なコンパイラを使用してください。
0778デフォルトの名無しさんNGNG
ん? で結局C言語がboolが数値に、数値がboolに変換できるようにした必要性はどうなったの?
0779デフォルトの名無しさんNGNG
>>776
じゃあ if (C言語) ってすればいいんですか?
0780デフォルトの名無しさんNGNG
>>773
すまん、それ漏れが貼った
0781デフォルトの名無しさんNGNG
>>780
論争を引き起こした張本人はあんたか!?
0782デフォルトの名無しさんNGNG
>>778
それは便利だ(と思われていた)から。今となっては時代遅れだが
気付いたときには時すでに遅し。

>>776
もしくは if (C言語 != 低級)
07834=780NGNG
>>781
     ______
    /_      |
    /. \ ̄ ̄ ̄ ̄|
  /  /  ― ― |
  |  /    -  - |
  ||| (6      > |
 | | |     ┏━┓|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | |     ┃─┃|  < 正直、すまなかった
|| | | |  \ ┃  ┃/    \________
| || | |    ̄  ̄|
0784デフォルトの名無しさんNGNG
もともとC言語にboolなんてあったのか?
0785デフォルトの名無しさんNGNG
(!0):0で無いもの(であるべき)

0786デフォルトの名無しさんNGNG
>>784
ない。
C99には_Boolってのがあるらしいが。アンダーバーが決め手☆
0787デフォルトの名無しさんNGNG
>>785
コンパイラが複雑になるわけだ、それだと
0788デフォルトの名無しさんNGNG
(!0) -> (!偽) -> (真) -> 真
0789デフォルトの名無しさんNGNG


             腹  減  っ  た  。

     ラ  ー  メ  ン  で  も  食  う  か  。

0790デフォルトの名無しさんNGNG
しかしあれだな。
真偽値がないと困るって言ってるヤツは
Cでまともなプログラムを書いたことのない
他言語使いなんだろうな。

分かってるふりして参加してるだけ。
0791デフォルトの名無しさんNGNG
まともなプログラム書いてたら真偽値型が欲しいと思うんだけどな
0792デフォルトの名無しさんNGNG
>>791
いや、お前は間違いなく他言語使い。
0793デフォルトの名無しさんNGNG
無いと(表記がバラバラで統一されていない事により弊害が出る為)困る
0794デフォルトの名無しさんNGNG
>>789
     ______
    /_      |
    /. \ ̄ ̄ ̄ ̄|
  /  /  ― ― |
  |  /    -  - |
  ||| (6      > |
 | | |     ┏━┓|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | |     ┃─┃|  < 正直、うまい豚骨ラーメンを食ったことがない
|| | | |  \ ┃  ┃/    \________
| || | |    ̄  ̄|
0795デフォルトの名無しさんNGNG
Cから始めた人なら使うことはあまりなさそうな気もする。
0796デフォルトの名無しさんNGNG
>>793
表記がばらばらってどゆことよ?
0797デフォルトの名無しさんNGNG
>>792
他言語使いってナニよ?
おまえはC言語しか使ったことないヒキコモリオタなんだろ?
0798もまずにパピコNGNG
うまくいえねーけど真偽値型ってプリミティブじゃねーよな。
0799デフォルトの名無しさんNGNG
> 無いと(表記がバラバラで統一されていない事により弊害が出る為)困る
たとえあっても表記はバラバラになると思うが。

ゼロ/非ゼロだけで十分。
0800デフォルトの名無しさんNGNG
真か偽かが問題のときは if (b) か if (!b) でしか書かないからな
0801デフォルトの名無しさんNGNG
bool,_bool,__Bool,BOOL
0802デフォルトの名無しさんNGNG
>>800
ところが、わざわざ TRUE と FALSE を定義して
if ( b == FALSE )
したがるやつがいるわけですが
0803デフォルトの名無しさんNGNG
>>798
     ______
    /_      |
    /. \ ̄ ̄ ̄ ̄|
  /  /  ― ― |
  |  /    -  - |
  ||| (6      > |
 | | |     ┏━┓|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | |     ┃─┃|  < 正直、intで十分。
|| | | |  \ ┃  ┃/    \________
| || | |    ̄  ̄|
0804デフォルトの名無しさんNGNG
if (b) と if (!b) に統一する!!
0805デフォルトの名無しさんNGNG
> 他言語使いってナニよ?

Cの基本を少しかじったてみただけのくせに
その仕様の是非を語っている厨房のことだが。
つまりお前みたいな奴ね。
0806デフォルトの名無しさんNGNG
>>805
では次は算術シフトと論理シフトについて語ってみようか。
0807805NGNG
訂正。
× Cの基本を少しかじったてみただけのくせに
○ Cの基本を少しかじったみただけのくせに


0808デフォルトの名無しさんNGNG
>>805
(゚Д゚)ハァ?
おまえはひきこもって仕様書ばっか読んでて
実際にプログラム書いたことなんてないんだろ?
0809デフォルトの名無しさんNGNG
>>806
Cと関係ないような
0810デフォルトの名無しさんNGNG
>>799
例え自分が使わないとしても規格として存在しているなら今後bool型を定義する奴は
少なくなるしソースを読む側の負担が減る。
0811デフォルトの名無しさんNGNG
>>809
あるよ。明示的に論理右シフトする方法がCにはない
0812デフォルトの名無しさんNGNG
引きこもりに引きこもり呼ばわりされちゃったよ。
0813デフォルトの名無しさんNGNG
>>810
じゃあ if (b == FALSE) と書けと言うのか?
0814デフォルトの名無しさんNGNG
>>811
それなら(unsigned int)ってすればいいと思うけど
0815デフォルトの名無しさんNGNG
>>811
unsigned でもダメか?
0816デフォルトの名無しさんNGNG
>>814
あれ?それじゃダメだったんじゃ.....うる覚えスマソ
0817デフォルトの名無しさんNGNG
うる覚え・・・
0818デフォルトの名無しさんNGNG
>>813
そんな事は一言も言ってないが。
書きたくなけりゃ書かなければ良い。
0819デフォルトの名無しさんNGNG
>>816
大抵の処理系がsignedなら算術、unsignedなら論理になるってだけだと思った。
0820デフォルトの名無しさんNGNG


              ラ  ー  メ  ン  食  っ  た  。

    イ  ン  ス  タ  ン  ト  だ  が  う  ま  か  っ  た  。



>>789 博多にでも逝ったらどうだ。

しかし正直、俺様用しおりって役に立たないな。
0821デフォルトの名無しさんNGNG
>>813
つまり if が bool 型しかとれないようにすれば
if ( b == FALSE )
なんて書こうとするばかはいなくなるってこった
0822デフォルトの名無しさんNGNG
unsigned なら確実に論理シフトになると思うけど違うの?
0823デフォルトの名無しさんNGNG
b == FALSE が bool 型にならんのか?
0824デフォルトの名無しさんNGNG
>>819
それって仕様で決まってる?
0825デフォルトの名無しさんNGNG
なんかしらんけど、ブール値の扱いが問題なら

#define isTrue(x) x==0
#define isFalse(x) x!=0

あたりにしといたら?
問題あったらココだけ置換して再コンパイル。

if(b==TRUE)だのif(b==FALSE)だのと書く人は、
C FAQ一回読んどいた方が・・・
0826デフォルトの名無しさんNGNG
>>824
だから大抵の処理系ではと言っているでしょ。
0827デフォルトの名無しさんNGNG
大体
if(hoge)と
if(hoge!=FALSE) とか if(hoge!=NULL)

if(!hoge)と
if(hoge==FALSE) とか if(hoge==NULL)

の違いって、パッと見て理解しにくいほど差があるか?

ある程度ソースを読んだ経験があれば、どちらの
スタイルで書かれていようが関係ないと思うんだが。
0828デフォルトの名無しさんNGNG
#define isTrue(x) x!=0
#define isFalse(x) x==0
0829デフォルトの名無しさんNGNG
>>823
だからね
if ( b == FALSE )
としたいやつらってのは b の型を
明示したいってことらしいのね
0830デフォルトの名無しさんNGNG
>>811
論理シフトじゃなくて算術シフトだろ。

符号付き整数型の右シフト>>が算術シフトであるか論理シフトであるかは実装依存。
論理シフトはunsignedキャストで符号無しにすればできる。
0831デフォルトの名無しさんNGNG
>>826
いや、だからそれが論争のネタになるわけですが
0832デフォルトの名無しさんNGNG
>>830
あ、逆だったのねスマソ
0833デフォルトの名無しさんNGNG
さっきラーメンを食った漏れは >>827 に賛成。
0834デフォルトの名無しさんNGNG
>>829
関数の中で変数の型がすぐに分からないほどナガーイ関数
書いてる馬鹿に取っては、問題なのかもねえ。
0835デフォルトの名無しさんNGNG
ちょっと待て、ブーリアン
0836デフォルトの名無しさんNGNG
ソースが込み入ってくるとif(hoge),if(!hoge)は見づらいと思う。
0837デフォルトの名無しさんNGNG
ブーレアンだろ
0838デフォルトの名無しさんNGNG
>>829
でも型くらい上の方みればすぐわかると思うが。
if (p == NULL) は分からんでもないが
if (b == FALSE) ってのは・・・
0839デフォルトの名無しさんNGNG
>>834
まあ、事の発端では変数でなく関数ってことだったんですが
if ( hoge() == TRUE )
てか過去ログ読まずにレスしないで
0840デフォルトの名無しさんNGNG
>>838
p や b が関数だった場合は?
0841デフォルトの名無しさんNGNG

==での型の明示にこだわってる奴はただの初心者。
0842デフォルトの名無しさんNGNG
>>841
それは大半の人間が分かってる
しかしプログラムを書くのは中、上級者だけではない
0843デフォルトの名無しさんNGNG
自分が分かりやすければそれで良いと思ってる奴は初心者。
0844デフォルトの名無しさんNGNG
>>840
if (hoge()) ...でいいと思うが。
hoge()の型が分からない?
返り値の型が分からないような関数使うな!!
0845デフォルトの名無しさんNGNG
>>836
聞きたい。
実際に込み入ったソースでそれを目にすると、どうして見づらいと思う?
0846デフォルトの名無しさんNGNG

型よりも意味付けの方が重要。
つまり関数が失敗か成功かなど。
0847デフォルトの名無しさんNGNG
>>844
型が分からんというより、見ただけで(調べないと)分からないのがいやってこと
だったと思う。本人じゃないので知らんが
0848デフォルトの名無しさんNGNG
>>843
Cプログラマならif(hoge==TRUE)よりもif(hoge)の方がわかりやすいだろ
0849デフォルトの名無しさんNGNG
BOOL型がないCで、TRUEやFALSEと必ず等価になる整数値って決められるのかな?
関数の戻り値なんて、関数仕様できまってるのは0と0以外だったりするでしょ?
別にそれはCの仕様じゃなくて、単なる約束事でしかないし。

NULLポインタをソース上で0(またはヘッダでデファインされるNULL)と書くのは、
0は整数ではなくてNULLポインタをあらわす特別なシンボルだからってのは知って
る上での議論ですか?これ。
0850デフォルトの名無しさんNGNG
>>849
述べていることは正しいけど、何を訴えたいのかが書かれていないよ。
0851デフォルトの名無しさんNGNG
>>847
別にわからなくてもいいような気がするけど。
重要なのはその関数を真偽の判定につかえるかどうかだと思う。
0852デフォルトの名無しさんNGNG
>>843
==があった方が分かりやすいと思ってる奴はただの初心者。
上級者ならどちらだろうが関係ない。
0853デフォルトの名無しさんNGNG
>>850
ごめそ。
だからBOOLをdefilneしてif(hoge==FALSE)だのというのは、閉
じてない世界で一般的につかうのはキケンでさえある用法だとオモイマス、
ということで。

外部とのコミュニケーションが全くない閉じた世界で、全てその
defineをつかうという「コーディング規定」があって、全員が
それを守る、と言う特殊な環境なら、まあいい・・・のかな?
0854デフォルトの名無しさんNGNG
どうも話がぐるぐる回っているようだ
0855デフォルトの名無しさんNGNG
>>835
既出だが、実例として glib があるのだよこれが
0856デフォルトの名無しさんNGNG
>>855
レス先間違った?
0857デフォルトの名無しさんNGNG
== があれかどうかを気にする香具師は DQN ケテーイという事でよろしいか?
0858855NGNG
>>856
まちがった。>>853 です
0859855NGNG
>>857
おぬしの日本語の方がよっぽどDQNなわけだが
0860857NGNG
意味の通らなくなる誤字をしてしまった・・・

== があるかどうかを気にする香具師は DQN ケテーイという事でよろしいか?
0861デフォルトの名無しさんNGNG
いくら週末で論争に飢えているからといって一晩で同じ内容の論争を二回するな!
0862855NGNG
>>860
よろしいが、とっくの昔に分かっていたことではある
0863デフォルトの名無しさんNGNG
>>853
#define TRUE 1
#define FALSE 0
ってして関数の中で return FALSE; とかするのはいいのよ。
でも真偽値のつもりで返してるなら
if (!hoge())じゃない?
0864デフォルトの名無しさんNGNG
>>853
ここでは FALSEが0 と(マクロ等を使って)定義されている
という前提の上で話をしているんだと思うが?

それでも何かいけないのか?
0865デフォルトの名無しさんNGNG
>>860

俺も賛成。
0866デフォルトの名無しさんNGNG
>>861
何が不満なの?
0867デフォルトの名無しさんNGNG
これの元の発言は、「『VCを前提』にBOOLのTRUEを比較したらまずいよね?」という内容で、
それについての答えは、「まずいよ。」で、とっくの昔に終了してます。
0868デフォルトの名無しさんNGNG
#include <limits.h>
typedef int bool
#define TRUE INT_MAX
#define FALSE INT_MIN
0869デフォルトの名無しさんNGNG
>>860
ということにしたのですね :)
0870868NGNG
セミコロンつけわすれた
0871デフォルトの名無しさんNGNG
「== があれかどうかを気にする香具師」 って何か気になるな。
アレって何だろ。
0872デフォルトの名無しさんNGNG
>>871
訂正後につっこむ馬鹿ハケーン
0873860NGNG
>>869
ええ。
0874デフォルトの名無しさんNGNG
>>868
どうせならこうでしょう
typedef enum {
TRUE = INT_MAX;
FALSE = INT_MIN
} bool;
0875デフォルトの名無しさんNGNG
>>867
(゚Д゚)ハァ?
誰が今そんな話をしてるの?
0876855NGNG
ライブラリがその閉じた世界でそういうdefineをしていて、しかも
それを「仕様」として外部に公開しているなら、あとはそれをつか
うクライアントの責任ですね。

ただそれはそのライブラリのローカルルールであって、一般的で
あると思い込んでしまうべきではないとおもうのですが。

現在各々が担当しているプロジェクトが、それに準じるローカル
ルールを明示的に決めていて、そのプロジェクトを使用する側の
人間にきちんと公開する、というルールが守られるなら、BOOL
デファインしてもかまわないと思いますが。

それがCのルールだと思い込む人がいるのは危険だと思います。
あくまで(よくつかわれているけれど)ローカルルールだとい
うことで。
0877デフォルトの名無しさんNGNG
>>872
857=871 ですが何か?
0878!855NGNG
まちがった。>>853デス。
0879デフォルトの名無しさんNGNG
>>877
なにぃ!?
0880デフォルトの名無しさんNGNG
> それがCのルールだと思い込む人がいるのは危険だと思います。
> あくまで(よくつかわれているけれど)ローカルルールだとい
> うことで。

はあ?誰がそんなこと思いこんでるんだよ?
0881デフォルトの名無しさんNGNG
>>876
で、その「仕様」がいろいろと混在するのが問題なわけですな
0882!855NGNG
>>881
そですね。他のライブラリには他のルールがあるかも。
0883デフォルトの名無しさんNGNG
>>876は BOOL型がCの仕様だと思ってる奴がいると
思いこんでる一番痛いヤツ。
0884!855NGNG
>>883
このスレに今いる奴にいるとは思わないけどね。
0885デフォルトの名無しさんNGNG
>>883
VC++初心者ならいても不思議はないが
0886デフォルトの名無しさんNGNG
>>879
で、どうなんだ?
「アレ」 が何なのか気になるのかならないのか?
0887デフォルトの名無しさんNGNG
昔のCだとgotoのラベルもintに代入できたし、
変数も(関数同様)型をつけずに宣言するとintになったそうだ。
0888デフォルトの名無しさんNGNG
>>887
変数を型指定無しで宣言って、どう書くの? auto?
0889デフォルトの名無しさんNGNG
非0が「真」だと簡潔に書けることも多いけど、間違えやすいことも確かだね。
まあ、それはCの設計者の選択ということだ。
浮動小数点でも0と非0で偽と真ってのはどうかと思うけどな〜
0890デフォルトの名無しさんNGNG
>>887
> 変数も(関数同様)型をつけずに宣言するとintになったそうだ。

それは関数外で?
関数内ならc;などと書くとなんの意味もない文だと解釈されるだけだと思うけど
0891デフォルトの名無しさんNGNG
> VC++初心者ならいても不思議はないが

そんなヤツはDWORDとかLPSTRとかもそう思ってるだろ。
話の次元が違うと思う。
0892890NGNG
そうか、autoにstaticがあったか
0893デフォルトの名無しさんNGNG
>>888
main() { x , y = 1; ...}
BASICみたいだね。
0894デフォルトの名無しさんNGNG
処理系によってはintになるけど。<型無し

0895デフォルトの名無しさんNGNG
autoなんて予約語、ANSI以前はなかったと思うが…
0896デフォルトの名無しさんNGNG
>>895
あっただろ?voidはなかったけど
0897デフォルトの名無しさんNGNG
今何人いるの?
0898デフォルトの名無しさんNGNG
ANSI以前は標準規格がなかったから予約語は処理系によってばらばらだったんじゃない?
0899デフォルトの名無しさんNGNG
番号! 1!
0900デフォルトの名無しさんNGNG
2
0901デフォルトの名無しさんNGNG
4
0902デフォルトの名無しさんNGNG
       \                      /
        \                   /
          \                /
           \             /
             \          /
              \ ∧∧∧∧/
               <    俺  >
               < 予 し   >
               <    か  >
 ─────────< 感 い  >──────────
               <    な  >
               < !!!!  い  >
               /∨∨∨∨\
              /         \
            /            \
           /     (-_-)       \
         /      (∩∩)        \
        /                     \
0903デフォルトの名無しさんNGNG
4++;
0904デフォルトの名無しさんNGNG
256
0905デフォルトの名無しさんNGNG
コテハンになろうかな。
0906デフォルトの名無しさんNGNG
ふむ、3人か.......
0907デフォルトの名無しさんNGNG
>>902
今までずっと自作自演ですか(爆
0908デフォルトの名無しさんNGNG
スレのローカルルールでトリップ必須とか
0909897NGNG
907は漏れっつーことで、>899,>900,>901,>902,>903,>904
の7名ということでっか?
0910デフォルトの名無しさんNGNG
いちおう参加。
0911897NGNG
人が多けりゃ、ローカルコテハン付けた方が良いと思う。
トリップ付けたきゃつけてね。
0912897NGNG
はい8名
0913デフォルトの名無しさんNGNG
いや、ANSI以前はまじで
x;
と書くと宣言になったらしい。
http://www.et.brad.ac.uk/help/.packlangtool/.langs/.c/.ansi.html
の2 Integerのとこ。
0914デフォルトの名無しさんNGNG
9.
質問に質問で返していくとだんだんわけがわからなくなってきますね。
0915デフォルトの名無しさんNGNG
本当だ・・・x; って書いてある・・・
0916デフォルトの名無しさんNGNG
>>913
ということは、
int a,b;
a=b;
b;

なんて書くとbが先頭で宣言されてねーぞゴルァ!と言われたわけか
0917ラーメンNGNG
では、漏れはラーメンと名乗る事にしよう。
0918916NGNG
違うな。
再定義されているぞゴルァか
0919デフォルトの名無しさんNGNG
今日もう400くらいいってるな。
0920デフォルトの名無しさんNGNG
今晩はお開き?
0921デフォルトの名無しさんNGNG
int x; >/DL>

これはタグのミスか?
0922デフォルトの名無しさんNGNG
#define コテハン FALSE
#define 名無し TRUE
ななしでいいや…。
0923デフォルトの名無しさんNGNG
>>921
だろうな。
0924デフォルトの名無しさんNGNG
さて、肉饅でも食って Lisp の勉強すっか
0925デフォルトの名無しさんNGNG
すみません、こんな時間ですが質問させてください。

お約束の0、NULL、0x00、'\0'についてなのですが、
charやらintやらポインタやらを含む構造体を初期化するときは0x00を使い、
charの配列を初期化するときは0x00ではなく'\0'を使っていたのですが、
そもそもこの使い方は正しいでしょうか?
正しいとすると、結局この2つは等価でしょうか?
0926デフォルトの名無しさんNGNG
>>925
0,0x00,'\0'はみな同じ
通常は0を使い、文字の場合は'\0'を使うとみやすいと思うよ。
16進数の0x00は他の16進数と一緒に使う場合に有効かも
0927925NGNG
>>926

えっと、キャストのない素の0があると、これがNULLポインタになって・・・・・・
(すみません、よく分かってません)
なんとなくmemsetの第2パラメータとして"値"を使うには
不適のような気がするのですが・・・・・・。
0928926NGNG
それと、構造体はmemsetで0に初期化するよりも、メンバーごとに初期化した方がいいと思う。
NULLや0.0は全ビット0とは限らないし。
0929926NGNG
>>927
ポインタを要求するところやポインタにキャストすると0はNULLとなる。
ただそれだけ。
0930925NGNG
>>928

う〜む、そうなのですか。
やはり構造体ごとに初期化用の手続きを踏むのですよね?


>>929
あぁ、なんとなく分かりました。
memsetの第2パラメータはポインタを要求するところではないので、
直接0と書いても大丈夫(NULL、にはならない)、ということですよね?

0931デフォルトの名無しさんNGNG
キタ━━━━━(゚∀゚)━━━━━!!!

>>928
0.0は全ビット0とは限らない。
だが、NULL は全ビット 0 だ。
0932デフォルトの名無しさんNGNG
>>930
ふつうはNULLと書くとおもうが。
0933926NGNG
>>930
そう。
struct KOZO{
int i;
double d;
char *p
};

struct KOZO kozo={0,0.0,NULL};と言う感じで。
0934931NGNG
すまん、逝ってくる。
0935デフォルトの名無しさんNGNG
>>933
struct KOZO kozo={0,};
とかでもいいね。
0936932NGNG
おれも逝ってくる。
第二パラメータはポインタじゃなかった。
0937デフォルトの名無しさんNGNG
>>930
> memsetの第2パラメータはポインタを要求するところではないので、
> 直接0と書いても大丈夫(NULL、にはならない)、ということですよね?

とは言っても、memsetで0を埋める領域に
ポインタ型や浮動小数点型が含まれている時は
ダメだよ。
0938デフォルトの名無しさんNGNG
逝っちゃった人が 2 人いるスレはここですか?
0939デフォルトの名無しさんNGNG
memsetは文字配列や整数配列を0で初期化する時くらいしか使わないな。
0940939NGNG
まあ文字配列は大抵文字列として使うから0で初期化ってのはあまりしないか。
0941デフォルトの名無しさんNGNG
フィル値がバイト単位で無ければ、もっと使い途あったんだけどナー。
0942925NGNG
なるほど勉強になります。
たしかに今まで浮動小数点などはほとんど扱っておりませんでした。
なんとな〜く動いていたのですね。
0943デフォルトの名無しさんNGNG
>>940
'\0' では初期化するだろ。
0944デフォルトの名無しさんNGNG
>>941
だな。
intの配列に1与えてmemset使っても1で初期化されねーもんな。当たり前だけど。
0945デフォルトの名無しさんNGNG
memsetで初期化そのあとdoubleとポインタを初期化。
0946デフォルトの名無しさんNGNG
>>943
大抵は一番最初の要素に'\0'を入れるだけ
全要素'\0'で初期化することはあまりしないな
0947デフォルトの名無しさんNGNG
>>939
俺は処理系依存を承知でバリバリ使ってる。
  ZeroMemory(&ofn, sizeof(ofn));
とか。(Win32)
0948デフォルトの名無しさんNGNG
int hoge[100] = { 1 };
0949デフォルトの名無しさんNGNG
void *memfil(void *dest, const void *src, size_t size, size_t count)
{
char *d = dest;
while(count)
{
memcpy(d, src, size);
d += size;
count--;
}
return dest;
}
0950デフォルトの名無しさんNGNG
>>947
0ならそれとかbzeroの方が速いんだったか?
0951デフォルトの名無しさんNGNG
>>948
それ、hoge[1] 以降は全部 0 だぞ。
0952デフォルトの名無しさんNGNG
int i;
for (i=0; i<n; i++)
hoge[i]=1;
0953デフォルトの名無しさんNGNG

     次 ス レ の 予 感
0954947NGNG
>>950
確かVC++では ZeroMemory は memsetのマクロだったはず。
0955デフォルトの名無しさんNGNG
>>951
??
0956デフォルトの名無しさんNGNG
>>951
hoge[0]だろ
0957デフォルトの名無しさんNGNG
>>956
????
0958947NGNG
>>956
なんで?
0959デフォルトの名無しさんNGNG
つーか、x86 + VC なら、ポインタも浮動小数点数も ZeroMemory() でいいじゃん。
0960デフォルトの名無しさんNGNG
>>948
hoge[0]だけが1になったけど、、、
0961デフォルトの名無しさんNGNG
>>958
なんでってCの配列の添え字は0からじゃん(笑)
0962947NGNG
>>959
うん。だから処理系依存を承知でと書いたわけだけど。
0963デフォルトの名無しさんNGNG
次は配列の添え字と初期化論争ですか?
0964デフォルトの名無しさんNGNG
大域変数
double foo;
void *bar;
とすると、
foo == 0.0、bar == NULL
に初期化されるの?それとも全バイト 0 に初期化されるの?
0965デフォルトの名無しさんNGNG
memsetって高速化するためにできるだけintバイトごとに初期化していたりする?
0966デフォルトの名無しさんNGNG
NULLポインタが0で埋まってない処理系ってあるんだ。
0967デフォルトの名無しさんNGNG
>>964
=0と同じことになる。
doubleに0を入れようとすると0.0を入れようとしたことになるはず。
0968947NGNG
>>961

>>951は
> それ、hoge[1] 以降は全部 0 だぞ。
と書いてますが?

なんでそれが
> hoge[0]だろ
になるわけ?
以降の意味知ってる?
0969デフォルトの名無しさんNGNG
誰か次スレ立てて。
漏れ立てられない。
0970デフォルトの名無しさんNGNG
>>968
あー!
ごめん、なんでそんな勘違いしたんだろ(笑)
0971デフォルトの名無しさんNGNG
>>968
hoge が大域変数なんて書いてあったっけ?
0972デフォルトの名無しさんNGNG
>>967
なるほろ。じゃあ bar も NULL になる?
0973947NGNG
>>965
intどころかもっと大きいサイズでもやってるかも。
0974デフォルトの名無しさんNGNG
>>971
(゚Д゚)ハァ?
0975デフォルトの名無しさんNGNG
>>972
そう。
0976デフォルトの名無しさんNGNG
>>974
(;´Д`)ハァハァ
0977デフォルトの名無しさんNGNG
でかい自動変数のdoubleの配列を0.0に初期化するときはループ使うのが一番てっとりばやい?
0978デフォルトの名無しさんNGNG
>>976
(・∀・)

>>971
968 の話とグローバル変数かどうかが何で関係あるわけ?
0979デフォルトの名無しさんNGNG
誰か次スレ頼むー!!

>>977
速さで言えば宣言の時に初期値指定した方が速い。
0980デフォルトの名無しさんNGNG
配列は全て初期化されるんじゃなかった?
0981デフォルトの名無しさんNGNG
>>978
968 は関係なかったね。hoge[1] 以降が 0 になるって話。
0982デフォルトの名無しさんNGNG
>>979
でかい配列だから無理がある。
0983デフォルトの名無しさんNGNG
>>980
マジ!?
0984デフォルトの名無しさんNGNG
誰か次スレ頼むー!!

>>981
初期値が省略された要素は 0 で埋められる事が規格で決まっている。
グローバルかローカルかは関係無い。
0985デフォルトの名無しさんNGNG
>>984
マジ知らなかった。スマソ
0986デフォルトの名無しさんNGNG
>>984
int a[1024]={78,22,-2};とやったらa[3]以降は不定だったと思うけど、、、
0987デフォルトの名無しさんNGNG
>>984
アセンブラ出力させたらそんなコード吐いてなかった。
スタックを確保してただけ。おれの処理系がダメなのか。
0988デフォルトの名無しさんNGNG
新スレは
このスレの >>1のコピペでいいか?
それよければ漏れが立ててくるが。
このスレ、過去ログ情報がないね。
0989985NGNG
>>984
まてぃ。試しにやってみたらやっぱ初期化されてないぞ!
うそつけ!
0990デフォルトの名無しさんNGNG
>>988
訊という字を聞にしてほしい
あとはそのままでOK
0991984NGNG
C99 だったカモー・・・

で、誰も次スレ立ててくれんのか?
漏れのホストでは立てられない。
0992デフォルトの名無しさんNGNG
いちいち初期化していたら効率が悪くなるよ。
静的変数は一度だけ領域を確保するから初期化してもあまり問題ではないけど。
0993デフォルトの名無しさんNGNG
俺も無理。
たてすぎだった。
0994985NGNG
>>984
まてぃ
int hoge[100] = { 1 };
こうしたら、hoge[1] 以降は 0 に初期化されてた。
やっぱスマソ
0995デフォルトの名無しさんNGNG
新スレ立てますた!

http://pc3.2ch.net/test/read.cgi/tech/1036876790/l50
09961NGNG
やっぱり3日もたなかったな。
0997デフォルトの名無しさんNGNG
>>995
お疲れ!!
しかし、漏れのホストずっとスレ立てられないんだけど、何でだ・・・。
同じホストで乱立ヴァカがいるのか。
0998デフォルトの名無しさんNGNG
   ∧∧
   /⌒ヽ)
  i三 ∪
 ○三 |
  (/~∪
  三三
 三三
三三
0999デフォルトの名無しさんNGNG
   ||
 ∧||∧
(  ⌒ ヽ トゥトゥトゥマシェーリー
 ∪ 。ノ    トゥトゥトゥマシェーリー
  ∪∪
1000デフォルトの名無しさんNGNG
     ∧∧  ミ _ ドスッ
     (   ,,)┌─┴┴─┐
    /   つ  終 了.  |
  〜′ /´ └─┬┬─┘
   ∪ ∪      ││ _ε3
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。