C言語なら、俺に聞け! <27>
■ このスレッドは過去ログ倉庫に格納されています
0001日下部? ということにしたいのですね? :)
NGNG・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/
推薦図書/必読書のためのスレッド PART4
http://pc.2ch.net/test/read.cgi/tech/1022961238/l50
・前スレ
<26> http://pc3.2ch.net/test/read.cgi/tech/1026048820/
<25> http://pc.2ch.net/test/read.cgi/tech/1024918442/
<24> http://pc.2ch.net/test/read.cgi/tech/1024033400/
<23> http://pc.2ch.net/test/read.cgi/tech/1023024817/
コンパイラなどのリンクは>>2-3 あたり
void日下部氏の激動の半生は過去スレを参照
0685デフォルトの名無しさん
NGNGチョトワラターヨ
0687デフォルトの名無しさん
NGNGとでもテンプレに入れとくかぁ。
0688デフォルトの名無しさん
NGNGおれはここや宿題スレにコードを貼る前に必ずgccでチェックしてるんだけど、
こっちでうまく実行できてるのにあっち(質問者)の環境だとうまく動かないというのは
例外なくCmachineで動かしてる場合だけだったな。
「またかよ」って何度も思ったもの。
だから動作保証できないって1もしくは2あたりに入れるのは賛成だな。
Cmachineってそんなにいいものなんだろうか。どういったところがいいんだろう。
使ったことないし使う気もないんだけど、どうなんですか、使ってる諸氏?
0690デフォルトの名無しさん
NGNGC++やC#の存在が気になります。
Cと比べて、どういった利点や欠点があるかおせーてください。
0691デフォルトの名無しさん
NGNG0692デフォルトの名無しさん
NGNGC++はいい匂いがするよ。
0693デフォルトの名無しさん
NGNGソースコードを書いた後スタートボタンを押すだけでコンパイルと実行を行えるところじゃない?
VC++でも似たようなことができるけれど高いし。
俺は使っていないけど・・・
0694デフォルトの名無しさん
NGNGスタートボタンを押しても、メニューしか出てこないのですが・・・?
0695デフォルトの名無しさん
NGNGつまらん逝ってよし!
0696デフォルトの名無しさん
NGNG#include<stdio.h>
int main()
{
char* p;
fgets(p, 10, stdin);
printf("p=%s\n", p);
return 0;
}
これって普通に実行できるもんでしたっけ?
segmentation fault させるつもりだったんですが普通に動いてしまって
「あれ?」という感じなんですが。
0697デフォルトの名無しさん
NGNGたまたま運がよかっただけ。
もう少し長く読み込んでみて。
期待通りに動くだろうから( ̄ー ̄)ニヤリ
0698697
NGNGpの値は不定(なはず)なんだから。
0699デフォルトの名無しさん
NGNG> これって普通に実行できるもんでしたっけ?
「未定義」では普通に実行できても良いし、 segmentation faultしても良いし、
鼻から悪魔が出てきても良いです。
0701デフォルトの名無しさん
NGNG0702デフォルトの名無しさん
NGNG「未定義」の場合、ある1つを除いた、あらゆる動作に可能性があります。
「ある1つ」とは、もちろん、あなたの期待した動作です。
0703デフォルトの名無しさん
NGNGそれは間違いです。
たまたま期待したように動作したとしてもいっこうにかまいません。
もちろん期待したとおりに動作しなくてもかまわないわけですが
0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNGOSをMeから2000に変えてから
system("cls");
による画面クリアができないんですがなぜでしょう?
エスケープシーケンスでの画面クリアもできないしど
うしたらいいんでしょうか?
0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG下記を動かすと"123"と出力されます
&&の法が優先順位が高く、||,&&とも左から結合なので、
"231"と出力されると思っていたのですが、
なにか見落としがあるのでしょうか?
printf("1")<0||printf("2")&&printf("3")<0;
環境:SunOS5.7+gcc3.0
0710デフォルトの名無しさん
NGNG0711710
NGNG0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNGショートカット?
0714デフォルトの名無しさん
NGNG演算子の優先順位と結合方向は、評価の順番とは関係ありません。
0715デフォルトの名無しさん
NGNG適当に答えとくと、実行結果が演算されてるからなんじゃねーの?
0716709
NGNGこの形で順序依存の副作用を期待する式は使用できないのですね
ありがとうございました
試しにやった四則演算も"123"となりました
printf("1")+printf("2")*printf("3");
0717709
NGNGフツーに使う気はありませんです
0718714
NGNGついでにいうと、&&、||、? :は、シーケンスポイントを作り、かつ、左が先に評価されることが保障されてる。
それから a が偽なら、b、c は評価されない。
優先順位とは a || b && c が a || (b && c) と評価されるってこと。
0719デフォルトの名無しさん
NGNG0720718
NGNGうそかいちった。
b が偽なら、c は評価されない。
です。
0721デフォルトの名無しさん
NGNGシーケンスポイントって副作用終了点?
0722デフォルトの名無しさん
NGNG> コンパイル後にする「リンク」とは何者なのでしょうか
オブジェクトファイルをつなげて実行ファイルを作成する作業
0723デフォルトの名無しさん
NGNGこれくと。
0725デフォルトの名無しさん
NGNGどの辺のアドレスにどう配置するかを決定する作業。
0726デフォルトの名無しさん
NGNGそれはリロケーションと呼ばれる、リンク作業の一部。
0727デフォルトの名無しさん
NGNGなんか、それだけ読むとローダーの仕事の感じもする。
0728デフォルトの名無しさん
NGNG#include <stdio.h>
int num(int,int);
int main()
{
int (*p)();
int a=1,b=2;
p=num;
a=(*p)(a,b);
}
本ではこれで成り立つはずなんですが
VC++でコンパイルするとエラーになります
変数宣言の部分で
int (*p)(int,int)
と引数の型と数を指定すればエラーにはならないのですが
これは本が間違っているのかVC++の仕様なのかわかりません
どなたか教えてください。
0729デフォルトの名無しさん
NGNGC++としてコンパイルしているに一票
0731デフォルトの名無しさん
NGNG正確にはVC++の仕様ではなくC++の仕様
Cの場合、func()はint func(...)と同じ意味だが、
C++の場合、func()はvoid func(void)と同じ意味
0732728
NGNGVC++で完全にC言語の仕様でコンパイルする方法はありますでしょうか?
0733デフォルトの名無しさん
NGNG0734728
NGNG0735728
NGNG0736デフォルトの名無しさん
NGNG.cにせい
0737728
NGNGコンパイルできました!!
ちなみにその本の名前は?
int (*)()にint (*)(int, in)を代入するなんて事を教えるのはおかしいよ。
0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNGComputer Language
0742デフォルトの名無しさん
NGNGB
BCPL
C
0744デフォルトの名無しさん
NGNGBCPL = BasiC Precompile Langageのことだよね
要するにBasicのソースコードを生成するプリコンパイル言語
昔はこれであの面倒なN88-Basicの行数を意識せずにBasicを作っていたものだ
0745デフォルトの名無しさん
NGNGは?脳内プログラマ?
BCPLとBasicは別物だよ
0748デフォルトの名無しさん
NGNGgoogleでも見てな!。
0750748
NGNGこれでもみな。
http://www.visti.net/~dwl/ci/intro.htm
分かったか丸禿。
0751デフォルトの名無しさん
NGNGすごく分かりやすかった。
0752デフォルトの名無しさん
NGNG0753デフォルトの名無しさん
NGNG744-745メアド見てみろ
0754デフォルトの名無しさん
NGNG0755デフォルトの名無しさん
NGNGfloat b=3.0;
のとき、
(a == (int)b)
は常に真ですか?
さっき調べたら、0〜16777216(floatの最大)までは真
だったんだけど、どうも自信がなくて。
0756デフォルトの名無しさん
NGNG自信が無かったらやめなよ。多分大丈夫だとは思うけど保証はない。
0757デフォルトの名無しさん
NGNG07581
NGNG0759デフォルトの名無しさん
NGNG別に16777215がfloatの最大じゃないぞ。
たしか、そのくらいで精度が1.0f超えた気がしたが
0760755
NGNG全部真だった。
でもやっぱり自信がない。
0761デフォルトの名無しさん
NGNGIEEE754(現在のほとんどのCPUで採用されている浮動小数点フォーマット)
について調べてみるといいと思われ。
単精度(float)の仮数部は23bit、正規化されてるので事実上24bitあって、
2^24=1677216だから、>>759の言うとおり1677215までの整数なら
誤差なく表現できる。
0762デフォルトの名無しさん
NGNG倍精度(double)の仮数部は52bit(同様に正規化により事実上53bit)なので、
32bitの整数なら誤差なく表現可能。
正規化しただけで、1ビット増えるわけではないのだが。
0764デフォルトの名無しさん
NGNG761じゃないけど、正規化で1ビット省略されてる分
> 事実上24bit
というのは正しいと思ったんだけど違うの?
0765764
NGNG∧_∧
(´Д` ) 切腹しますた
/ y/ ヽ
Σ(m)二フ ⊂[_ノ
(ノノノ | | | l )
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0766755
NGNGなぜだ?
0767デフォルトの名無しさん
NGNG>>761、762見た?
16777216と16777217.0Fも一致してないか?
0769デフォルトの名無しさん
NGNGポインタのキャストの意味が良くわからないのですが、実際のプログラムでポインタのキャストなんて使うことはありますか?
int dt[10];
char *p;
p=(char *)dt;
ポインタは先頭アドレスだけを指すんですよね? だったらこんな一時的にポインタをキャストしても仕方がないと思うのですが・・・
厨房の質問ですみません。 どなたか返事をお願いします。
0770デフォルトの名無しさん
NGNGいろいろとキャストなんて使うことはあります
0771デフォルトの名無しさん
NGNG次のプログラムを試してみそ。(実行する前に結果を予想してみること。)
int dt[10];
char * p;
p = (char *)dt;
*dt = 1234;
printf("%d %d\n",*p, *(int*)p);
0772デフォルトの名無しさん
NGNG一番ポピュラーな使い方はmallocでメモリを確保するとき。
mallocはvoid*を返すので、たとえば
char *cp;
cp = (char *)malloc(16); // キャストする
というふうにキャストが必要になる。
他にも使わざるを得ない局面はあるんだけど、
説明するのが面倒なんで略する。
0773デフォルトの名無しさん
NGNGレスありがとうございます。
>771
実行結果は -46 1234 でした。 *(int*)p の意味が良くわからなかったので
(int*)p でやって見たら -46 1245016 という良くわからない結果が出ました。
予想と全然違いました。 もうちょっと悩んでみます。
>772
そっちも頑張ってやって見ます。 ありがとうございます。
0774¥
NGNG拡張子を.cにしたいのですがどうすればよいのでしょうか
0775デフォルトの名無しさん
NGNG右クリックで名前の変更。
0776¥
NGNGそうやってみたんですけど
「ファイル名.c.txt」になってしまいます
0777デフォルトの名無しさん
NGNGrename file1 file2 で。
0778デフォルトの名無しさん
NGNG"test.c"
で保存してみそ
0779デフォルトの名無しさん
NGNGC言語と関係ない
0780デフォルトの名無しさん
NGNGdo { \
... \
... \
} while (0)
マクロで上のようなことをしているものを時々見るのですが、
これってどんな意味があるのですか?
マクロで関係ない変数を書き換えてしまったりするのを防ぐためなのかな、、
とか思うのですが外してるかも。
0781780
NGNGnavi2ch だと見えるんですが。
0782780
NGNG0783デフォルトの名無しさん
NGNGwhileの後に";"が必要だったりするし。
0784デフォルトの名無しさん
NGNGif (test)
MACRO(x);
って書いたときのことを考えてみな。
do〜whileでくくってある場合とそうじゃない場合と。
■ このスレッドは過去ログ倉庫に格納されています