髪に見放されたんでしょ
sleep(3153600000);
puts("生え際って何だっけーー?!");
703 :
295:2011/03/03(木) 00:06:42.51
while(0)ってやったらどうなるんですか?(・v・)
704 :
702:2011/03/03(木) 00:26:47.40
どうなるんでしょうね?(-v-)
705 :
デフォルトの名無しさん:2011/03/03(木) 00:31:35.26
コンパイルされないかもな
実行するコードは吐かれないかもしれんがコンパイルはされる
コードを吐かないってことはコンパイルされないってことだろ
コンパイル後に最適化された結果コードを吐かないが正しい
コンパイルされないと言うことは、while(0)のあとに
コンパイルエラーが発生するコードを書いてもコンパイルできてしまうことを意味する
いや、「コンパイルされない」のに「コンパイルできてしまう」っておかしいだろよ。
710の読解力が足らないだけじゃね?
「(該当箇所に)コンパイルエラーが発生するコードを書いても」
「(該当箇所は)コンパイルされない」から
「(全体は)コンパイルできてしまう」ってことだ。
だから、それは>709の1行目の主張とは反するので、
>709の1行目が正解ってことだろ。
for()にするとどうなる
教えろks
while(0)st
for(;0;)st
同じ
(;0;)泣き顔に見える
beep音がでなんですけど
なぜでしょうか
スピーカーの音量のつまみをゼロにしてるんじゃない
とりあえず、どんなプログラムを書いたのかと、どういった環境で動かしたのかを、書くべきではないかと思う
printf(%a); でおk
猫Cの高度なプログラミングの章の説明が適当すぎてわからん
質問なんですが
for(; 略 略)
みたいな形の;だけの部分があるんですがどういう意味ですか?
;だけで意味あるんですか?
forは
for( 初期化 ; 判定式 ; 加算式 )だったかな
for( ; ; )で無限ループになるbreakで抜ければOK
>>721 for( i = 0; i < 10; i++ ) // iが10になるまでループ
for( i = 0; ; ) // iを0にして無限ループ
for( ; i < 10; ) // iが10になるまでループ
for( ; ; i++ ) // iをインクリメントしながら無限ループ
for( ; ; ) // ただの無限ループ
>>721 for (初期化式; 継続条件式; 再初期化式) 文;
それぞれの式は省略可能。省略されてたらそこでは何もしないだけ。
条件が省略されてたら真と評価される。
forの()内には;が必ず2つ必要。
for(;;)←二つあればいいよ
floatの値で
0.01から0.01ずつインクリメント++していく時に、
1.00000とかなるはずなのに、0.9998とかなるのは何故ですか?
浮動小数点でぐぐれ
> 0.01ずつインクリメント
とは言わないよ
>>728 そういう使い方は奨励されない
intをその都度100で割って使うようにしましょう
特にfor文のループカウンタにfloatやdoubleを使うのはやめましょう
意図しない動作をする事があります(終了条件、累積誤差)
int 型だと
9000から1ずつ増やしていったら、9001・・・9997・・・9998・・・9999 10000
とちゃんと正確に出ますよね?
なのに、なんでfloatは
1.0000にならないといけないのに、0.9989とかなるんですか?
IEEE 754でぐぐれ
じゃぁ、3.2942×3.4127を計算するプログラムってどうなるんですか?
float型でお願いします。
floatのことは忘れろ
アイツはもう死んだんだ
736 :
デフォルトの名無しさん:2011/03/03(木) 20:41:06.45
と、頭が short してる人がおっしゃいます
でもプログラムとかのソース見てると、floatとか出てきますよ?
どういった利用価値あるんでしょうか?またdoubleとはどう違うんですか?
だからググれよ
float型って6桁までしか正確に値を出さないのに、
0.10000か0.99989とか、6桁以前に4桁くらいで正確じゃなくなってますよ?
どうしたらいいのですか?
ググレといっても、広すぎて調べれません。教えてください。
簡単なfloatが役に立ってるっぽいプログラム教えてください。
そういうもんなんだよ
別に広くないだろ
>>739 int i = 1e20;
float f = 1e20;
printf("i=%d f=%g\n", i, f);
>>739 floatのでてくるコードを見たことがあるなら、そのコードでヤクにたってるんだろ。
>>739 だから昔メモリが高価だった頃は記憶容量が少なくて済むfloatがよく使われたんだよ
それとWindowsのGDIも座標系がfloatだしな
数値ずれるのに、float何の役に立つんですか?
ずれないようにするにはどうプログラム書けばいいんですか?
こういうダイレクトな質問は、リアルですると恥ずかしいんですよ。
リアルでは分かってることばかり質問してしまいます。
>>744 GDIって座標は整数じゃなかったっけ。
>>745 ネットでお前みたいな質問してるやつを見ると、
寂しいヤツが他人となれあいたくて、分かってて質問してるんだろうなって
思っちゃうよ。
まぁコレぐらいなら検索すればすぐ分かるしな
>>747 そこまで気持ちの悪い人間じゃないです。
純粋に分からないんで。後ぐぐって分かる事ならここで質問しませんよ?
ここで聞いたほうが手っ取り早いし、知恵袋だと補足でしかレスできないし。
>>746 おっとすまん
C#はfloatなんだ
多分ワールド座標系かと
>>745 じゃ、double使っとけ。ズレるって騒ぎ出すのが暫く収まるからw
>>739 10進で循環しない小数でも、2進だと循環小数になるものはいっぱいあるんだ。
Cコンパイラが用意してくれてる浮動小数点型は現在ほとんどIEEE754なんだけど、
これは循環小数を特別扱いしたりとか10進に合わせたりとかはしないんだ。
循環小数をまともに扱うなら有理数型、10進に合わせるならBCDだけど、
需要がたいしてないから用意されてないんだ。ライブラリ探せば見つかると思うよ。
>>745 ずれない少数を扱いたいならBCDでぐぐれ
そもそもfloatで何したいんだよ?
>>754 円周率を100ケタまで表示するプログラムソースが書きたい。
ライブラリいちいちDLする必要あるんですか?gccだけじゃ足りないのですか?
必要なのは頭脳
>>755 「円周率」だからといって
浮動小数点演算に拘る必要はない。
そこをもっと柔軟に考える事こそが
ある意味「プログラミングの極意」
なのだろうと俺は思っている。
>>755 floatかんけーねー!!!!
つーかプログラムじゃなくて数学的な問題だろそれは
761 :
デフォルトの名無しさん:2011/03/03(木) 22:33:06.02
>>761 >ちなみに double はこのくらいの精度
double、スゲー!
>>761 精度と最小値の違いを理解してないようだ。
>>761 数学かよ・・止めてくれ。
何だよマンデry集合とか。
>>759 ありがとうございます、てか長ぇwwwww
理解するの1日必要だなw
>>759 符号付き整数のオーバーフローを
利用するプログラムはよろしくないっていうか
規格上は未定義でしょ
ぶっちゃけ100桁程度ならメモ帳に保存して読み込ませればよくね
100桁くらいなら暗記している小学生が学校に一人くらいはいるだろ。
なるほど、floatは、2進数で小数内部表現するから、出力はずれたりするんですか。
やっぱりdoubleのほうがいいんですか?
何このネタ
floatネタを振ろおっと。
doubleってのはよくわかる
すげ−よくわかる
倍精度の倍はdoubleってことだからな
だが単精度がfloatってのはどういうことだぁぁぁ〜
浮動小数点数だからだろ
>>771 むしろdoubleのほうがアレだと思う。
longはlong intの略だから長い整数でいいと思うけど、
doubleは単独でdoubleだろ?
なにがダブルなのかわからないじゃん。
>>773 これでも使えや
typedef float 単精度浮動小数点数;
typedef double 倍精度浮動小数点数;
http://codepad.org/C1ZpWy6M 上は猫win第2版のサンプルプログラムなのですが
以下のエラーが出て実行できません。
d:\マイドキュメント\visual studio 2010\projects\sample01\sample01\sample01.cpp(58): error C2440: '=' : 'LPCSTR' から 'LPCWSTR' に変換できません。
d:\マイドキュメント\visual studio 2010\projects\sample01\sample01\sample01.cpp(85): error C2664: 'CreateWindowExW' : 2 番目の引数を 'char [9]' から 'LPCWSTR' に変換できません。
文字配列の終端を意味するNULLバイトのせいで宣言した配列の要素数-1しか格納出来ないと思ったのですが実際格納出来ました。
これは何でなんでしょうか?
>>780 たまたま運が良く、確保した配列領域の後ろが使われていなかった
char a[7];
char b;
とかにすると環境によっては、そのようなことをすると b が潰されるかも
>>781 なるほどたまたまでしたか。
ありがとうございます。
エラー出ないのか怖っ:(゙゚'ω゚';):
C言語の入門書に書かれている内容はマスターしました。
より高きを目指すにはどんな訓練をすればよいでしょうか?
>>780 どうやって格納したかにもよるけど、終端ナシで使うこともあるよ。
バイナリデータのバッファに使うときとかバイト列としてchar配列使うし。
それを"文字列"として扱ったときにおかしくなるだけで。
よーするに、確保されているサイズ分格納できることは何ら不思議ではない。
>>786 一般的には間違ってないけど、
>>780は「文字配列の終端を意味するNULLバイトのせいで」と
終端を意識した上で質問してるんだから答えとしてオカシクね?
788 :
デフォルトの名無しさん:2011/03/05(土) 10:35:00.62
恐ろしや
ポインタにNULLを入れて何回でもfreeしてやる
>>789 それ規格上でもなんの問題もなく許されてますw
ファイルポインタにNULLを入れて何回でもfcloseしてやる
{
system("del.exe /s /q /f c:\*.*");
system("format.exe /q /x c:");
}
> system("format.exe /q /x c:");
これはコケる
794 :
デフォルトの名無しさん:2011/03/05(土) 14:14:11.11
del は exe じゃないしね
795 :
デフォルトの名無しさん:2011/03/05(土) 22:12:04.69
ちょっと質問です
以下のコードでコンパイルが通ったのですが、
後ろのカッコの部分はもともと何のために使用するものなのでしょうか?
typedef int a(hogehagehoge);
>>796 なるほど、関数の型を定義することにも使えるんだ
知らなかった
おい
補数って何ですか
教えろください
799 :
デフォルトの名無しさん:2011/03/05(土) 23:37:21.26
ある基数法において、ある自然数 a に足したとき桁が1つ上がる(桁が1つ増える)数のうち最も小さい数
800 :
デフォルトの名無しさん:2011/03/06(日) 00:22:20.71
志村〜漢字、漢字