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

Cなら俺に訊け! Part 78

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。

エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

コンパイラを探しているなら >>2-13 を。
上記を逸した場合の結果は激しく未定義だYO!

C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

各種リンクは>>3-20あたり(誰か適当に貼って)

C言語なら俺に聞け! Part 76
http://pc5.2ch.net/test/read.cgi/tech/1081597375/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
0002デフォルトの名無しさんNGNG
2
0003デフォルトの名無しさん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/

【ライセンスや機能などに問題あり】
Microsoft 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
Intel C++ Compiler for Linux
http://developer.intel.com/software/products/compilers/clin/noncom.htm
0004デフォルトの名無しさんNGNG
証明まだ?
0005デフォルトの名無しさんNGNG
 '`,、('∀`) '`,、
0006デフォルトの名無しさんNGNG
もっと光を! > 照明まだ?
0007デフォルトの名無しさんNGNG
なんでスレタイ変えたの?
バカ?
0008デフォルトの名無しさんNGNG
おれじゃないもん
0009デフォルトの名無しさんNGNG
C言語とかかずにCとかくと日下部せんせいが興奮して失禁してしまうからです。
0010デフォルトの名無しさんNGNG
逆だろ?

ここ読め
http://www.pleiades.or.jp/cbook/
0011デフォルトの名無しさんNGNG
>>10
ブラクラ
0012デフォルトの名無しさんNGNG
>>7
...。第一不完全性定理から導けよ。
0013デフォルトの名無しさんNGNG
>>11
ふつうに読めるじゃん。
0014デフォルトの名無しさんNGNG
やーい > 読めないやつ
0015デフォルトの名無しさんNGNG
もじばけしてますよ
0016デフォルトの名無しさんNGNG
化けてないよん。

どんなブラウザーで読んでるの?
0017デフォルトの名無しさんNGNG
漢ならlynxだろ! > ブラウザー
...って先生が言ってたぞ。
0018デフォルトの名無しさんNGNG
lynxで文字化けしませんよ? Operaでも
0019デフォルトの名無しさんNGNG
2重のループから抜け出すにはどうすればいいですか?
0020デフォルトの名無しさんNGNG
SLS(ソースレベル・リンク・システム)について語ろうよ!
使ってるんだろ?
0021デフォルトの名無しさんNGNG
ファイルと関数の2段階以外にスコープを階層化する方法はないですか?
0022デフォルトの名無しさんNGNG
>>19
break2回。
フラグでチェック。
goto。
0023デフォルトの名無しさんNGNG
break2回ってのは、
具体的にどう書くのですか?
0024デフォルトの名無しさんNGNG
>>23
まず、どういうコードで使いたいかソースを晒せ。
0025デフォルトの名無しさんNGNG
>>19
ループ全体を関数に切り出してreturnって手もある
0026デフォルトの名無しさんNGNG
while (...) {
 while (...) {
  if (...) {
   break; breal;
  }
 }
}// tha's joke
0027デフォルトの名無しさんNGNG
break 2; とかかければいいのに ;-)
0028デフォルトの名無しさんNGNG
>>19
ループを1重にしる。
0029デフォルトの名無しさんNGNG
>>26
つまらなさ杉。空気嫁。
0030デフォルトの名無しさんNGNG
え? ウケたのにー
0031デフォルトの名無しさんNGNG
関数の引数のカンマとカンマ演算子はどうやって区別しますか?

foo(a, b, c, (d, e), f);
0032デフォルトの名無しさんNGNG
仮引数やプロトタイプで const char *s; と定義されている引数に、
char *sみたいな変数を実引数で渡しても警告はでないですか?
0033デフォルトの名無しさんNGNG
while (){
while (){
if (){ flag = 1; break;}
}
if (flag == 1) break;
}
0034デフォルトの名無しさんNGNG
関数の末尾やループの末尾(閉じる中括弧の前)にラベルを置けないのはなぜですか?
なぜ「;」が必要?
0035デフォルトの名無しさんNGNG
>>32
締めつける方向だからok。逆だと、constを理解して適切な警告レベルなら出るだろ。
0036デフォルトの名無しさんNGNG
学校の課題の答えで、
cunt +=2; って書いてたら2年生に笑われました。なぜですか?
0037デフォルトの名無しさんNGNG
>>34
ラベルは式につけるものだから。
0038デフォルトの名無しさんNGNG
>>36
countも綴れないのかと?
0039デフォルトの名無しさんNGNG
>>36
cunt


━━ n. 〔卑〕 女性器; 〔軽蔑〕 女; 〔卑〕 嫌なやつ, ばかなやつ.
0040デフォルトの名無しさんNGNG
Javaの >>> 演算子に相当するのはCでは何ですか?
0041デフォルトの名無しさんNGNG
>>36
...。第一不完全性定理から導けよ。
0042デフォルトの名無しさんNGNG
double d; int i;
i = d; ってやると、dの値が切り捨てられちゃいます。
自然科学式の四捨五入をするにはどうすればいいですか?
また、銀行式四捨五入をするにはどうすればいいですか?
0043デフォルトの名無しさんNGNG
>>40
符号なし整数型の式で >>
0044デフォルトの名無しさんNGNG
>>42
切り捨てられるかどうかは実装依存。
その自然科学式とか銀行式の定義をまずしろ。
ceil()、floor()使え。
0045デフォルトの名無しさんNGNG
main関数は前に書きますか? それとも一番あと?
0046デフォルトの名無しさんNGNG
> その自然科学式とか銀行式の定義をまず

いわゆる世間一般常識のやつです。
0047デフォルトの名無しさんNGNG
>>45
一番後。

>>46
切り捨てられる環境なら+0.5しとけ。
0048デフォルトの名無しさんNGNG
>>46
銀行式
端数は着服
0049デフォルトの名無しさんNGNG
> 一番後。

なぜですか?

> 切り捨てられる環境なら+0.5しとけ。

マイナスのときにうまくいきません。
0050デフォルトの名無しさんNGNG
>>45
好き好きだが、
一番最後に書けば、そのファイル中のmainから呼ばれる関数は
定義自身がプロトタイプ宣言を兼ねるため
独立したプロトタイプ宣言をいちいち書かなくても済む。
0051デフォルトの名無しさんNGNG
>>49
prototype宣言まんどくさいから。
マイナスの時って…少しは頭つかえよw
0052デフォルトの名無しさんNGNG
実行形式が.comのファイルをつくるには
どうしたらいいですか。
0053デフォルトの名無しさんNGNG
>>52
MS-DOS用のコンパイラを使え
0054デフォルトの名無しさんNGNG
>>53
WindowsXPで動きますか?
ちなみにどこでかえますか?
0055デフォルトの名無しさんNGNG
>>52
まず、どうしてcomファイルが作りたいのか言え。
005652NGNG
>>55
昨日神さまからのお告げがあって、
GWが終わるまでにつくらないと隕石が地球に衝突するそうです。
0057デフォルトの名無しさんNGNG
>>56
そうか、じゃぁ教えない。
005852NGNG
>>57
どういえばおしえてくれますか?
0059デフォルトの名無しさんNGNG
>>58
だから、まず、どうしてcomファイルが作りたいのか言え。
0060デフォルトの名無しさんNGNG
Visual CでCを勉強してるのですが、
EOFを示す値は何を入力すればいいのでしょうか?
テキストには^Zってありましたが、終了してくれません。
0061デフォルトの名無しさんNGNG
あんのぉ〜、マイナスのときの四捨五入のふるまいって、
いろんな定義があるんじゃないのかと〜。
+0.5して切り捨てたときのふるまいもじゅう〜ぶんに四捨五入だとおもうんだけどぉ〜。
006252NGNG
>>59
人が人らしくあるのに理由がひつようなのかい?
0063デフォルトの名無しさんNGNG
>>52
拡張子を.exeから.comに変える。
0064デフォルトの名無しさんNGNG
>>62
第一不完全性定理から導いてください。
0065デフォルトの名無しさんNGNG
>>60
^Zってのが
Ctrl + z ってのはわかってるだろうな。
0066デフォルトの名無しさんNGNG
>>62
だったらcomファイルを作る理由もないだろ。ましてや人に聞く必要もない。
0067デフォルトの名無しさんNGNG
>>60
Ctrl+zの後にEnterも必要だ、普通は。
0068デフォルトの名無しさんNGNG
>>66
理由が無いんじゃなくて理由が必要ない
0069デフォルトの名無しさんNGNG
>>62
人らしいっていうのがちょっと曖昧だね・・・
きちんと人らしいって言葉を定義してもらわないと・・・
007060NGNG
^Z ← を直接入力してました。
CTRL+Zなのですね。どもですた。
0071デフォルトの名無しさんNGNG
>>69
1.高校生以上は非道程であること
0072デフォルトの名無しさんNGNG
なんだこの糞タイトルは
0073デフォルトの名無しさんNGNG
#include <stdio.h>

char *str_chr(const char *str, int c)
{
for ( ; *str; str++){
if (*str == c)
return ((char *)str);
}
return (NULL);
}

int main(void)
{
char str[10], *p;
char uletter[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

printf("英大文字を入力してください:");
scanf("%s", str);

p = str_chr(uletter, str[0]);
if (p !=NULL) puts(p);

return (0);
}

本に載ってた例題で、読み込んだ英大文字以降のアルファベットを表示するというプログラムなんですが
最初の関数を宣言するときint型の引数cを取る理由がわかりません。
char型ではいけないのですか?
0074デフォルトの名無しさんNGNG
>>73
まず、そんな本は捨てろ。
0075デフォルトの名無しさんNGNG
>>73
文字を扱うだけならcharで問題なし。
ただ文字以外にEOFも表現できるようにするために大きな型であるintになっている
getchar(), getc()やらの結果をそのまま渡せるようにするならintにしたくなるかもな。
0076デフォルトの名無しさんNGNG
>>73
標準関数strchrに合わせているのでは?
0077デフォルトの名無しさんNGNG
>>73
たまたま間違えたんだろ。
0078デフォルトの名無しさんNGNG
先輩にgotoを使うなと怒られたのですが
プロジェクトのソースには何度も使われています。
やはり使ってもいいんでしょうかね。
0079デフォルトの名無しさんNGNG
先輩がgoto
0080デフォルトの名無しさんNGNG
>>78
gotoは"刃物"だ。
適切な場所が判断できないうちは無条件に使わないほうがいいかもしれんし
逆に使って痛い目にあって学習する手もあるかもしれん
0081デフォルトの名無しさんNGNG
>>78
>gotoを使うなと怒られた
その前後に何か修飾する言葉がついていなかったか?
「おまえは」とか、「こういう処理に」とか、「やたらめったら」とか。
0082デフォルトの名無しさんNGNG
gotoってやたらめったら使いたくなるほど便利なものでもないよな。
0083デフォルトの名無しさんNGNG
>>78
Cの場合はごくまれにgotoが有効なケースがある。
しかし、初心者は使ってはいけない。
0084デフォルトの名無しさんNGNG
>>78
goto嫌いな人のが多いから使わない方がいいよ。
008573NGNG
>74-77
ありがとうございました
0086デフォルトの名無しさんNGNG
最近私は、「goto使うなら私を納得させる理由を提示しろ」と言ってます。
0087デフォルトの名無しさんNGNG
最近私は、「goto禁止するなら私を納得させる理由を提示しろ」と言ってます。
0088デフォルトの名無しさんNGNG
どんな理由にせよこんなgoto文だけは絶対に許さないってのはあります?
例えばswitch文の中にラベル貼るとか・・・
0089デフォルトの名無しさんNGNG
#include <stdio.h>

int main() {
hahaha:
printf("ぬるぽ");
goto hahaha;

return 0;
}
0090デフォルトの名無しさんNGNG
>>88
入れ子の無いforとか、whileとか、switchとか。continueやbreakの代わりとか。
構文が用意されているものをわざわざgotoを使って記述することかな?
フツーに配列をたどっていくのにforでなくwhileを使ったりするのと同じように。
0091デフォルトの名無しさんNGNG
>>88
あとはあれだな、switchの中のcaseラベルに飛ぶやつ。
0092デフォルトの名無しさんNGNG
>>88 gotoは一般的にご法度だな。アセンブラやN88BASICじゃなければ
switchはラベルあるけどbreak;かreturn;だから問題なし、default:も
書いておけば。
ただ巨大なswitchは可読性下がるけどWinのWindowProc()とか・・・
0093AranskNGNG

★☆★無知無学な文系糞虫祭り★☆★ 絶賛開催中!!!
http://pc5.2ch.net/test/read.cgi/tech/1083624060/
/|         |  |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
  |         |  | ̄ ̄ ̄ /|                    ||
  |         |  |   / /|TTTTTT   TTTTTTTTTT||TTTTT
  |        /\ |  /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /
  |/  /.  _.| ̄|/|/|/         Λ_Λ
/|\/  / /  |/ /           (___) 表示的意味論わからずに
/|    / /  /ヽ            /〔 祭 〕〕つ 意味論騙ろうとはふてぇ奴だ
  |   | ̄|  | |ヽ/l            `/二二ヽ     みんなでまつっちまえ
  |   |  |/| |__|/   Λ_Λ     / /(_)
  |   |/|  |/      ( ´∀`)   (_)    Λ_Λ
  |   |  |/      // /  ^ ̄]゚        (`   ) 「構文が表示的意味論」(プッ
  |   |/        ゚/ ̄ ̄_ヽ         ⊂〔〔 祭 〕
  |  /         /_ノ(_)          ┌|___|
  |/          (__)             (_ノ ヽ ヽ
/                                (_)
0094デフォルトの名無しさんNGNG
>>92
意味分からん…
0095貧乏紙NGNG
折れもgotoは使うなといわれた。使ったら後ろ指差されるって言われた。
0096デフォルトの名無しさんNGNG
>>92
アセンブラやN88BASICじゃなければgotoは一般的にご法度だな。
switchはdefault:も
書いておけば、ラベルあるけどbreak;かreturn;だから問題なし。
ただWinのWindowProc()とか巨大なswitchは可読性下がるけど・・・

こうですか?わかりません!
0097デフォルトの名無しさんNGNG
>gotoは一般的にご法度だな。アセンブラやN88BASICじゃなければ
訳]アセンブラやN88BASICであればともかく、(Cでは)gotoを使う事はほとんど無いですね。

>switchはラベルあるけどbreak;かreturn;だから問題なし、default:も
>書いておけば。
訳]ラベルを使うという意味でswitchについてですが、
通常の使い方であれば break か return で処理分岐させるので気にする必要は無いはずです。
default: については記述するだけで自動的に該当しないケースの分岐しますし。

>ただ巨大なswitchは可読性下がるけどWinのWindowProc()とか・・・
訳]ところで話が変わりますが、Windowsでのプログラミングにおいて
WindowProc()とかで良く見かけるブロックが長い switch 、
可読性が下がるので良くないコーディングだと思いませんか?
0098デフォルトの名無しさんNGNG
>>97
機械翻訳ですか?結構うまくできるんですね。
0099デフォルトの名無しさんNGNG
変な話ですが、

Cを勉強をするにあたって
ただ闇雲に覚えていくだけじゃつまらないので
何か作りたいと思いますが、
例えば簡単なシューティングゲームだとどのくらいのスキルが必要になりますか?

何ヶ月、何年とか期間じゃなくて、
何時間みたいな総合計、勉強すればよいのでしょうか?
(製作時間は含まない)
0100デフォルトの名無しさんNGNG
1000
0101デフォルトの名無しさんNGNG
>>99
人による。
だいたいCの前にPascalとかまともな教育を受けていればCを使うのに1日はかからない。
0102Cを使うのに1日はかからない。NGNG
Cを使うのに1日はかからない。
0103デフォルトの名無しさんNGNG
じゃあDel厨はすぐにでもCのプログラムが組めますね。
0104貧乏紙NGNG
しかし、アルゴリズムを考えるの時間がかかるyo
0105デフォルトの名無しさんNGNG
>>103
ネタの説明をしてくれ
0106デフォルトの名無しさんNGNG
オレ未だにまともにC使えないや・・・

使えるって人に言えるレベルって大体どのくらいですか?
0107デフォルトの名無しさんNGNG
GW sage
0108デフォルトの名無しさんNGNG
>>105

> Pascalとかまともな教育を受けていれば
 ↓
Delphi≒ObjectPascal
 ↓
> Cを使うのに1日はかからない。
 ↓
del厨(゚д゚)ウマー
0109デフォルトの名無しさんNGNG
>>108
前提が間違ってるぞ。Del厨でも教育受けてるもの(相当)だぞ?
0110デフォルトの名無しさんNGNG
>>108
まぁDelphiの方がよっぽど難しいけどなw
0111デフォルトの名無しさんNGNG
(Pascal | まともな教育を受けていれば)
0112デフォルトの名無しさんNGNG
Cを読むのには1日かからないだろうが
Cを使うのにはそれなりに時間かかるんじゃないか
細かい差異があるととくに混乱するし。
0113デフォルトの名無しさんNGNG
そういえばpascalならbagin...endが使えるな
0114デフォルトの名無しさんNGNG
101は数日前のあいつか
0115デフォルトの名無しさんNGNG
>>111
Pascalとかでまともな教育。
0116デフォルトの名無しさんNGNG
>>113
bagin
0117デフォルトの名無しさんNGNG
>>115
Pascal∈まともな教育

こうか?
0118デフォルトの名無しさんNGNG
0119デフォルトの名無しさんNGNG
ごめん。。やっぱり僕、君のことが好きみたいだ。。
0120デフォルトの名無しさんNGNG
明後日からの日にちを入力して、その曜日を出力するプログラム。
動かないよー、助けて!!

#include<stdio.h>
main(){
char *weekp[7] = {
"thu","fri","sat",sun","mon","tue","wed"
};
int i ,day;
scanf("%d",&day);
i = day % 7;
printf("%s\n", weekp[i]);
}
0121デフォルトの名無しさんNGNG
>scanf
釣りですか?
0122デフォルトの名無しさんNGNG
>>120
エラーが出るのか、期待した動きにならないのか位はかけ。
0123デフォルトの名無しさんNGNG
>>120
sunの前に"を置け
0124デフォルトの名無しさんNGNG
>>120
何がしたいのかわからないよー、助けて!!
0125デフォルトの名無しさんNGNG
>>122
エラーが出ます
0126デフォルトの名無しさんNGNG
>>120
何がしたいのかわからないよー、助けて!!
0127デフォルトの名無しさんNGNG
>>124
できました、ありがとうございました
0128デフォルトの名無しさんNGNG
14日が木曜日になるのは仕様ですか?
0129デフォルトの名無しさんNGNG
明確なプログラムのバグ
0130デフォルトの名無しさんNGNG
>>106
自分で作りたいと思ったものが作れれば。
言語以前に作りたいと思うものをどーしたら作れるかという部分も必要ね。

>>108
別にCが使えてウマーなわけは無いと思うが。誰でも使えるしね。

>>113
Pascalなら、じゃなくてそこが元でそ、大抵の奴は。

0131デフォルトの名無しさんNGNG
>>130がマジレスかネタか分からない漏れは2chをしない方がいいんだろうか。
0132デフォルトの名無しさんNGNG
>>131
分からんのならそじゃないか?
漏れも分からんがやめようとは思わない。なんでそう思う?
0133デフォルトの名無しさんNGNG
選球眼がなくて凡退しまくる打者のようなものだな。
0134デフォルトの名無しさんNGNG
>>133
ならやめるしかないなw
0135デフォルトの名無しさんNGNG
> マイナスの時って…少しは頭つかえよw

ようするにあなたはわからないのですね?
0136デフォルトの名無しさんNGNG
> Ctrl+zの後にEnterも必要だ、普通は。

しかもEnterの直後じゃないとね
0137デフォルトの名無しさんNGNG
> for ( ; *str; str++){

なんで「)」と「{」をくっつけるんだよ
0138デフォルトの名無しさんNGNG
わtがしの先輩の書いてたソースにもgotoって数十箇所でてきてましたよ。

/* modified by goto */ ってコメント中がほとんどでしたが
0139デフォルトの名無しさんNGNG
> 例えばswitch文の中にラベル貼るとか・・・

ラベルのないswitch文なんて、何の役ににも立ちません。

まるでコーヒーをいれないクリープみたいなものです
0140デフォルトの名無しさんNGNG
> > gotoは一般的にご法度だな。アセンブラやN88BASICじゃなければ
> 訳]アセンブラやN88BASICであればともかく、(Cでは)gotoを使う事はほとんど無いですね。

それは誤訳ですね。
正しい訳は、
「gotoがダメとかいう話はオレでもきいたことはあるぞ。なんでダメなのか、くわしくは
しらんが、ちなみに、俺がほかに名前を聞いたことがある言語はアセンブラとN88BASIC
ぐらいだ。たしかどっちかにはgotoっていうのもあったはず」
だな。
0141デフォルトの名無しさんNGNG
>>140 意味がよくわからん??
goto がダメなのは、forやwhileループから強制離脱したり、何でも出来て
しまうことが出来てしまうから危険と言われてる
そもそもアセンブラには条件分岐を含むジャンプ命令しかない

関係ないがSasserなるウィルスの話題で持ちきり棚
0142デフォルトの名無しさんNGNG
釣りご苦労
0143デフォルトの名無しさんNGNG
>>142
いや、>>140がただのマヌケにしか見えんw
>>141
マクロアセンブラは強力だ(った)よ。
Cで書くのと同程度の構造化すらできていた。
0144大域ジャンプNGNG
「大丈夫さ、恐れないで」
「そんなことしたら、私が私じゃなくなってしまう気がして...」
「人生にはいつかジャンプしなければならいないときがくるのさ。」
「でも...」

欲望に正直なだけ 満たされてたい Goto Heaven
0145デフォルトの名無しさんNGNG
>>144
なんだよ
0146デフォルトの名無しさんNGNG
> 動かないよー、助けて!!

scanf使うなよぼけ
0147デフォルトの名無しさんNGNG
ちなみに「goto」があるアセンブラって聞いたことないですね ;-)
0148デフォルトの名無しさんNGNG
>>147
ガキの喧嘩口上みたいなこというお方ですね
0149デフォルトの名無しさんNGNG
っていうか、gotoの話題でアセンブラがでてくる時点でだめすぎ。
0150デフォルトの名無しさんNGNG
YES/NO
TRUE/FALSE
True/False
true/false
どれを使っています?
0151デフォルトの名無しさんNGNG
どうして?
0152デフォルトの名無しさんNGNG
bool/true/false に決まってるだろ。Cなんだから
ちなみにC++もbool/true/false
DelphiみたいにTrue/Falseとか書かないし、
Javaみたいにboolean/true/falseでもない。
0153デフォルトの名無しさんNGNG
Cで
func()
{
printf("ほげ");

int i, j;
....
}
みたいに、ブロックの先頭以外で変数宣言できるみたいですが、これって何か便利なこと
ありますか? (っていうか、できないと不便な場面)
0154デフォルトの名無しさんNGNG
>>149
それは君が機械語やったことないからそう思うだけ。
gotoに限らないが、cのコードに対応する機械語を想像可能かどうかで
cに対する理解度や理解の容易さは違ってくる。

たとえば、アセでも構造化言語的にコードを記述することはある程度可能
なんだが、そういう経験がある人にとってはcでgotoをどんな場合に
使ったほうがいいかの判断は比較的容易だ。
0155デフォルトの名無しさんNGNG
> それは君が機械語やったことないからそう思うだけ。

いーや逆だろ。やったことあれば、高級言語のgoto論争にアセンブラもちだしても意味ない
ことぐらいわかるだろーに ぼけ
0156デフォルトの名無しさんNGNG
gotoを使うのは
つまりifやwhileやforやdoやbreakやcontinueで表せないものだけにすべし、って
ことにすると、実際、gotoを使わないと表せない場面ってのは、ロジックやフローが
適切じゃない場合がほとんど。なので、初心者のうちは「goto不要論者」にだまされて
「とにかく使ってはいけないものなのだ!」と思い込んでいても、たいした弊害はない。
0157デフォルトの名無しさんNGNG
↑gotoの問題については「作ってわかるCプログラミング」にいろいろ書いてありましたよー
読んでください。(いま手元にないのでページ数はわかりませんが)
0158デフォルトの名無しさんNGNG
そんな言語はありません > cに対する理解度や
0159デフォルトの名無しさんNGNG
>153
使いたい変数をブロックの先頭で宣言する事しかできないので
あらかじめ先頭に書いておく必要があった。

これからはいつでも使いたい所で宣言すればOKって事。
0160デフォルトの名無しさんNGNG
で、先頭にまとめずに、使いたい箇所で宣言すると、何かいいことあるんでしょうか?
0161デフォルトの名無しさんNGNG
>>153
Cでは宣言はブロックの先頭でしかできない。自由にできるのはC++の機能。
途中で宣言できるとスコープを有効に使える。使ってる場所のすぐそばで型が確認できる。
(コンパイラの都合だが)最適化に有利。

>>154
機械語を直接やらずともアセンブラをやればまぁ十分だな。

>>155
高級言語にgotoは無用。ちなみにCは低級言語の部類だ。
0162デフォルトの名無しさんNGNG
>161
C99では宣言はどこでもできたはず。

・char *p = strchr( hoge , 'T');みたいに、定義と同時に初期化をかけることで、
変数を不定値のまま扱う事故が少なくなる。宣言と代入を離さねばならないと、
するとchar*p=NULL; .... p = strchr(hoge,'T');みたくしないとドツボになるが面倒。
・必要なときに定義するので、変数のスコープが明確になる。
という利点があるな。
0163デフォルトの名無しさんNGNG
>153
"できないと不便な場面"はちと思い当たらんが、
ある関数で引数の異常チェックをしてから処理をする場合、

func()
{
いろいろな処理用の変数宣言

引数パラメータのチェック
if(異常) return;

いろいろな処理
}

って書くよりも

func()
{
引数パラメータのチェック
if(異常) return;

いろいろな処理用の変数宣言
いろいろな処理
}

の方がすっきりするかな。
0164デフォルトの名無しさんNGNG
returnつかうなよぼけ
0165デフォルトの名無しさんNGNG
>>162
VC7ならおけ?VC6はだめ。
0166デフォルトの名無しさんNGNG
161はかなりの知ったかぶり
0167デフォルトの名無しさんNGNG
っていうかifの後ろあけろよ
0168デフォルトの名無しさんNGNG
そんなものないぞ > VC7
0169デフォルトの名無しさんNGNG
でも、宣言といっしょに初期化を書いてしまうのって(auto変数の場合は実は代入に過ぎないのだが)、
ブロック先頭にまとめてた時代はよかったのだが、

途中にあると、どこに宣言があるのかわかりづらいんだよなあ
0170デフォルトの名無しさんNGNG
>>169
逆に頭にあるほうがどこで使ってるのか不明なことが多いな。
使うときに宣言する方が分かりやすいと思うな。
まぁコードというか、それを書いたやつのレベルに大いに依存するが。
0171デフォルトの名無しさんNGNG

Gotoを怖がるのは処女童貞の法則なんだな(w
インテリがシモネタ耐性が無いのと同じ。

熟達者はむしろそれを楽しみ
精神性をもって芸術の域にまで高めるものだ。
第一真のプログラマーは(以下略)
0172デフォルトの名無しさんNGNG
>どこに宣言があるのかわかりづらいんだよなあ

そんな糞コードは作り直せ(w
0173デフォルトの名無しさんNGNG
大丈夫、C++でもブロックの先頭でまとめて宣言する香具師は少なからず存在する。
0174デフォルトの名無しさんNGNG
> Gotoを怖がるのは

怖がるかどうかはたいしてもんだいじゃなくて、
「こわがらせるかどうか」の問題にすぎない
0175デフォルトの名無しさんNGNG
> どこに宣言があるのかわかりづらいんだよなあ

そんな糞コードは作り直せ

つまり先頭にまとめるってこと?
0176デフォルトの名無しさんNGNG
>150
>YES/NO
>TRUE/FALSE
OK/NG
GOOD/BAD
LIVE/DEAD
0177デフォルトの名無しさんNGNG
あのー
1/0に関してききかたかったのですが、
OK/NGも1/0なんですか?
0178デフォルトの名無しさんNGNG
>175
>つまり先頭にまとめるってこと?

アフォか
ブロックが分かりにくいのは構造が悪いからだろ
0179デフォルトの名無しさんNGNG
> ブロックが分かりにくいのは構造が悪いからだろ

は?
ブロックの「内部」の話ですが。
0180デフォルトの名無しさんNGNG
↑178は要するに内容をちっとも理解できないけど、けちつけてみたいだけだと思われ
0181デフォルトの名無しさんNGNG
なるほど
0182デフォルトの名無しさんNGNG
>177
言い伝えに従えば OK=0, NG=1 だな
0183デフォルトの名無しさんNGNG
なるほど
0184デフォルトの名無しさんNGNG
>178
ブロックって{と}で囲まれている範囲を指すと思うが...
0185デフォルトの名無しさんNGNG
161==171==172
こいつは、
・Cの宣言がどこに書けるのかしらない
・アセンブリ言語と機械語の差をちゃんと把握できていない
・でも知ったぶりしたい
・gotoに関しては評判がよくないことぐらいしか知らない
っていうやつですね。
0186デフォルトの名無しさんNGNG
>>184
だからブロックの「内部」の話だって言ってるだろ ぼけ
184はまだ理解できていないのか。
0187デフォルトの名無しさんNGNG
変数で思い出したが、Cで
for (int i = 0; i < MAX; i++)
...とかってやるとき、このiのスコープはどこまで?forループ抜けても使える?
C++やJavaでも同じですか?
0188ビル・ジョブスNGNG
>177
おれなら、OK==0、NG!=0だな
0189デフォルトの名無しさんNGNG
defineするときはどうするの? > 188
#define NG (!0) とするだけだと、結局1が入るだけでつまんないじゃん
0190デフォルトの名無しさんNGNG
>186
まぁまぁ、マターリCましょう
0191デフォルトの名無しさんNGNG
Cつかうなぼけ
0192デフォルトの名無しさんNGNG
Dbがいいな
0193ビル・ジョブスNGNG
>189
(!0)は必ず1じゃないと思うよ。
0194デフォルトの名無しさんNGNG
OK == FALSE、NG == TRUE ってのがチョト気持ち悪いよね。
0195デフォルトの名無しさんNGNG
>>186,179 よ
>184 は >178 宛てだと思うが、大丈夫か?
0196ビル・ジョブスNGNG
>191
#190は名前入れ忘れたおれだが・・文句あるか?
0197デフォルトの名無しさんNGNG
>>194 そんな比較すんじゃねぇヴォケ
0198デフォルトの名無しさんNGNG
このスレ読んでると、俺って実は頭良いんじゃないかと錯覚してしまう。
0199デフォルトの名無しさんNGNG
>>193
Cなら1が保証されている。
0200デフォルトの名無しさんNGNG
むしろこのスレ読んでると、僕は人間じゃないかと錯覚してしまう
0201デフォルトの名無しさんNGNG
> (!0)は必ず1じゃないと思うよ。

1だよ。そう定義されている。
真偽の判定をするとき、真は0以外、偽は0。
だが、真偽の判定をした結果は真が1、偽は0。これ常識。
0202デフォルトの名無しさんNGNG
>真偽の判定をした結果

フーン
0203デフォルトの名無しさんNGNG
> OK == FALSE、NG == TRUE ってのがチョト気持ち悪いよね。

「エラーがあったかどうか」だから、とても合理的でわかりやすく素直でよくできてると思うが。
0204デフォルトの名無しさんNGNG
202は「何を話しているんだかさえ理解できない」ぐらいのボケだけど「仲間にいれてほしい」ようだ ;-)
0205デフォルトの名無しさんNGNG
人間になりたい
0206デフォルトの名無しさんNGNG
連休向けに数ランクレベル落として話してるんだから、こんな話題ぐらい理解しろよ ;-)
0207202NGNG
だって 単項の! について判定の結果とか一店だもん
0208デフォルトの名無しさんNGNG
関数の引数として、構造体のポインターではなく構造体そのものを渡すのって、
あれ、その構造体をコピーするんですよね? sizeof(FOO)==1024ぐらいだったら、
たとえば1KB分。

それと同じことって配列でできないでしょうか?
0209デフォルトの名無しさんNGNG
だって何々君が何々したんだもん
0210デフォルトの名無しさんNGNG
> だって 単項の! について判定の結果とか一店だもん

じゃあ、確実に1じゃん。おまえぼけすぎ
0211デフォルトの名無しさんNGNG
構造体に配列を持つ
0212デフォルトの名無しさんNGNG
>>211

なんかそれいやん...。
ほかに方法ないですか?
0213デフォルトの名無しさんNGNG
>>212
それ以外ない
0214デフォルトの名無しさんNGNG
ほんと? ほんとにほんと?
0215デフォルトの名無しさんNGNG
コレホント。
0216デフォルトの名無しさんNGNG
次世代C (C2008かC2009くらい)が出るのを待つ。
0217デフォルトの名無しさんNGNG
でません
0218デフォルトの名無しさんNGNG
これからはCobolの時代です。
Cobol 2003と
オブジェクティヴCobol
0219デフォルトの名無しさんNGNG
>>208
まず、どうしてそういうことがしたいのが理由を述べよ。
その前に何がしたいのが言えば別の解決法が常に存在する。
0220デフォルトの名無しさんNGNG
> まず、どうしてそういうことがしたいのが理由を述べよ。

いやです。
0221202NGNG
>210
>じゃあ、確実に1じゃん。おまえぼけすぎ

その事については何も逝ってませんが、大丈夫ですか?
あなた木瓜杉です。
0222デフォルトの名無しさんNGNG
なんで構造体ではできるのに配列ではできないの?

じゃあなんで構造体ではしていいの? ずるいじゃん
0223デフォルトの名無しさんNGNG
>>157
ページじゃなくてペイジだろぼけ
0224デフォルトの名無しさんNGNG
>>157
ページじゃなくてペイジだろぼけ
0225デフォルトの名無しさんNGNG
>>222
そういう決まりだから
0226デフォルトの名無しさんNGNG
>>222
Cには値渡ししかないんだよ。配列の名前はポインタだから渡るのはポインタ。
0227デフォルトの名無しさんNGNG
>>222
そんなのCの入門書にはたいてい説明してあるじゃない。
それは「配列」は型ではないからだよ。
0228デフォルトの名無しさんNGNG
なんで構造体ではできるのに配列ではできないの?

じゃあなんで構造体ではしていいの? ずるいじゃん
0229デフォルトの名無しさんNGNG
>>227
型だぞ。
0230デフォルトの名無しさんNGNG
> Cには値渡ししかないんだよ。配列の名前はポインタだから渡るのはポインタ。

じゃあ構造体はー?
0231デフォルトの名無しさんNGNG
配列も渡したいー
きー
0232デフォルトの名無しさんNGNG
知ってる奴と本気で知らない奴が一緒になってる余寒
0233デフォルトの名無しさんNGNG
昔は構造体も出来なかったんだよ。
構造体はサイズが変わらないが、配列は変わる場合がある。
だからやろうと思っても出来ない。
0234デフォルトの名無しさんNGNG
しかも returnで「構造体を返す」関数もつくれるでしょ?
なんで配列は返せないの? ずるいー
0235デフォルトの名無しさんNGNG
> 構造体はサイズが変わらないが、配列は変わる場合がある。

えー。構造体が渡せなかった時代はいうまでもなく、
ごくさいきんまで、配列はサイズかわならなかったでしょ?
0236デフォルトの名無しさんNGNG
>>227
型でないなら、typedef int a[5];とかint (*p)[5];がエラーになるはずだが。
0237デフォルトの名無しさんNGNG
>>234
だから配列の名前はポインタなんだってば。
0238デフォルトの名無しさんNGNG
size変わるならtypedef(a)で配列aのサイズとれないはずだが
0239デフォルトの名無しさんNGNG
> だから配列の名前はポインタなんだってば。

構造体の名前もそうしてよ
0240225NGNG
できないのは、そういう決まりだからだと言っているだろうが。
0241デフォルトの名無しさんNGNG
タッグマッチですな
0242デフォルトの名無しさんNGNG
そんなのいやー >> 240
0243デフォルトの名無しさんNGNG
>>239
構造体も渡せなくなるぞ?w
0244デフォルトの名無しさんNGNG
>>242
嫌なら自分で気に入る言語を作れYO
0245デフォルトの名無しさんNGNG
ワラタ
0246デフォルトの名無しさんNGNG
241は「タッグマッチ」の意味をしらないぼけ。

最低でも4人必要じゃん
0247デフォルトの名無しさんNGNG
> 構造体も渡せなくなるぞ?

いいもん。配列渡せないなら
0248デフォルトの名無しさんNGNG
Cでゲームを作ったのですがゲーム開始時・終了時にLOGをとりたいと
思ったのですがC言語でそういった命令ありますかね?
0249デフォルトの名無しさんNGNG
Cで排他的論理和をとる(bitごとではなく)演算子は何ですか?
0250デフォルトの名無しさんNGNG
>>248
fから始まる関数(fabsとか関係のないものもあるが)
0251デフォルトの名無しさんNGNG
>>249
^
0252デフォルトの名無しさんNGNG
> Cでゲームを作ったのですが

作ったんじゃなくて、ソースうちこんだだけだろぼけ。
0253デフォルトの名無しさんNGNG
>>249
!=
0254デフォルトの名無しさんNGNG
>>251

(0以外の数値) ^ (0) で 1になります?
0255デフォルトの名無しさんNGNG
配列の名前はポインタって嘘教えるなよ
0256デフォルトの名無しさんNGNG
>>254
!!(0以外の値) ^ 0
0257デフォルトの名無しさんNGNG
&a[0] と a は同義
0258デフォルトの名無しさんNGNG
>>254
&&や||の排他的論理和版がほしいんだろ?
だったら!=
0259デフォルトの名無しさんNGNG
(^ 0 ^)/~~
0260デフォルトの名無しさんNGNG
*a と a[0] は同義
0261デフォルトの名無しさんNGNG
a + i と a[i] は同義
0262デフォルトの名無しさんNGNG
>>261
いくらなんでもそれは嘘だ
0263デフォルトの名無しさんNGNG
>261 おしい
0264デフォルトの名無しさんNGNG
>>261
*(a + i) と a[i]
a + i と &a[i]
0265デフォルトの名無しさんNGNG
a[i] と i[a]は同義
0266デフォルトの名無しさんNGNG
どうでもいいが変数定義とは言わないんじゃないか?
どんな場合でも変数は「宣言」だろ?
0267デフォルトの名無しさんNGNG
>>266
定義。
extern int x;
0268デフォルトの名無しさんNGNG
toolは英語でどうぎ
0269デフォルトの名無しさんNGNG
内容をきめるときが定義だ > 変数
0270デフォルトの名無しさんNGNG
x = 0; // 定義
0271デフォルトの名無しさんNGNG
>>266-277
逆だって。
0272デフォルトの名無しさんNGNG
>>265
a[0] と 0[a] も同義なんですか?
0273デフォルトの名無しさんNGNG
変数の場合、実物(?)を作るときが定義と思っている。
0274デフォルトの名無しさんNGNG
>>272
それが定義。
0275デフォルトの名無しさんNGNG
駅の改札で見せるにもていぎ
0276デフォルトの名無しさんNGNG
!=ってやったらxor じゃなくて nxorになるんじゃないのか。。?
0277デフォルトの名無しさんNGNG
int a; は定義じゃなくて宣言だ
0278デフォルトの名無しさんNGNG
nxor ってどういうのですか?
0279デフォルトの名無しさんNGNG
算数の時間に使うのもていぎ
0280デフォルトの名無しさんNGNG
>>276
バカの定義。
0281デフォルトの名無しさんNGNG
これで混乱してる奴は最低最悪サイヤ人
0282デフォルトの名無しさんNGNG
ミスったnxorじゃなくてxnorだね普通は。
0283デフォルトの名無しさんNGNG
で、それどういうの?
0284デフォルトの名無しさんNGNG
FAQなんだが、
たくさんの"宣言"が(たくさんの変換単位に)存在してもいいが、
"定義"はただ一つしか存在してはならない。
定義とは実際に場所を確保する宣言で、初期値があるときは初期値を与える。
0285デフォルトの名無しさんNGNG
xorの反対なら==だろ?
両方とも真か両方とも偽なら、つまり同じなら真。
0286デフォルトの名無しさんNGNG
41ペイジに書いてあるのに
0287デフォルトの名無しさんNGNG
>>187
誰もレスしていないようなので亀レス

Cではforループ中のみ(C99から)
C++では昔はforループの後でも使えたが今では使えなくなった。
この混乱を回避するためにコンパイラオプションで指定できるコンパイラも多い。
Javaはシラネ。
0288デフォルトの名無しさんNGNG
>>287
で、VC7はC99対応してるの?
0289デフォルトの名無しさんNGNG
>>287
>Cではforループ中のみ(C99から)
嘘つくなよぅ
0290デフォルトの名無しさんNGNG
>>285
釣り?
0291デフォルトの名無しさんNGNG
一部対応。一部未対応。完全に対応しているコンパイラはまだ無い。
0292デフォルトの名無しさんNGNG
>>288
現行のVC7.1ではまだ未対応です
0293デフォルトの名無しさんNGNG
>>257
>&a[0] と a は同義
嘘は止めておけ
とりあえずsizeof(a)とsizeof(&a[0])の値を比べてみなさい
0294デフォルトの名無しさんNGNG
>>290
>>254を読め
0295デフォルトの名無しさんNGNG
>C++では昔はforループの後でも使えたが今では使えなくなった。
ループの外で使えるのVC++のバグだったのだが。
いわく、カウンタ値をループ外で見たい場合があるので、だそうな。
0296デフォルトの名無しさんNGNG
>>289
ISO/IEC 9899:1999の6.8.5.3
0297デフォルトの名無しさんNGNG
もうそろそろタッグマッチ
0298デフォルトの名無しさんNGNG
>>289
ISO/IEC 9899:1999

6.8.5.3 The for statement
 The statement
  for ( clause-1 ; expression-2 ; expression-3 ) statement

If clause-1 is a
declaration, the scope of any variables it declares is the remainder of the declaration and
the entire loop, including the other two expressions;

>>295
バグって言うか、当時はループの外で使えるっていう決まりだったのよ。
VC7.0からはオプションで指定できるようになった。
0299デフォルトの名無しさんNGNG
>>294
答えになってないな。
0300デフォルトの名無しさんNGNG
300
0301デフォルトの名無しさんNGNG
>>299
!=がxnorになるという根拠は?
0302デフォルトの名無しさんNGNG
>298

for(int i=0; ...){

}

int i;
↑ここでコンパイルエラー

ってバグ以外の何者でも無いが
0303デフォルトの名無しさんNGNG
>>302
当 時 は ル ー プ の 外 で 使 え る っ て い う 決 ま り だ っ た の よ
0304デフォルトの名無しさんNGNG
>>303
VC++6.0(のC++モード)なんてそうだよな。
for(int i=0;i<n;i++)
・・・;
for(int i=0;i<m;i++)
・・・;
なんてやったらエラー
0305デフォルトの名無しさんNGNG
>>301
この人釣り師のつもりなのか、それとも天然なのか。。
0306デフォルトの名無しさんNGNG
とりあえず、!=とか==はだめよ。
偽(1)!=偽(2)で1

>>256ね。
0307デフォルトの名無しさんNGNG
>>1
前スレは77だろ
間違えるなアフォ
0308デフォルトの名無しさんNGNG
>>306
やっぱり釣り師か。。
0309デフォルトの名無しさんNGNG
>303
でもバグだろ?
0310デフォルトの名無しさんNGNG
>>306
駄目と言いながら使っているように見えるのは俺だけか?
0311310NGNG
ああ、すまん。
そういう意味か。

!(1)!=!(2)でいいんじゃねーの。
0312デフォルトの名無しさんNGNG
>>310
そだな。
0313デフォルトの名無しさんNGNG
ループのiって最初からブロック内で確保できた?
それとも規格が変わってそうなったの?

後者なら、VC6はバグではなく、最新規格未対応なだけだな。
仕様です。
0314310NGNG
しかも括弧いらねーし(鬱
0315デフォルトの名無しさんNGNG
>>309はMS製品に何かがあるととりあえずバグにする種類の人間なのか、
それとも「バグ」の意味を間違えているのか…。
この人にとっては処理系依存もバグなんだろうなぁ。
とりあえず手持ちのコンパイラにK&R時代コードでも食わせて「バグバグ」言ってろ。

>>313
漏れの記憶だと最新規格未対応って言うよりも、当時は規格自体が無かったような…。
0316デフォルトの名無しさんNGNG
>>315
そうそう、VC6はC++規格制定前の製品。
あとからでてきた規格に合致してないからってバグではないよな。
しかもMSはちゃんと規格に合わせたバージョンアップをしたわけだし。かなり遅かったけど。
0317デフォルトの名無しさんNGNG
>>315
そうだな。
for()のfor(ここ)が、forブロックの内側か外側かってのがはっきりしていなくて、
処理系によって解釈が違っていた気がする。

VCのような解釈はCからの互換性を重視したとも言える。
昔の(C99より前)ではforの前に宣言しておかなければならなかったわけで、
ループの後ろでも必ず参照できたからね。
0318デフォルトの名無しさんNGNG
printf("%d",(sp+i));
i++;

printf("%d",sp);
sp++;

ドッチデモイイノ?(・ω・` )
0319デフォルトの名無しさんNGNG
int *sp;
ハイレツノアドレス ハイッタ ポインタネ(・ω・` )
0320デフォルトの名無しさんNGNG
>>318
日本語で質問しろ。
0321デフォルトの名無しさんNGNG
>>318
iの型によるが、もしintやcharなら別にどっちでもいい。
0322デフォルトの名無しさんNGNG
小学生の時学芸会で小太鼓やることになったんだが
どうもへただったらしく、マスカラに変更されたことが
10年以上たった今でも本当に腹立たしいよ。
0323デフォルトの名無しさんNGNG
>321
おいおい、どっちもだめだろ printf() よく見ろ(w
0324デフォルトの名無しさんNGNG
VC++.net使ってるんですけど、
NULLマクロがstdio.hとstddef.hの両方で定義されてるのは
どうしてですか?
例えばstdio.h内部でstddef.hをインクルードすれば
それでいいと思うのですが。
0325デフォルトの名無しさんNGNG
なぜ stdio.hをインクルードしない場合が思いつかない?
0326デフォルトの名無しさんNGNG
>>325
>stdio.hをインクルードしない場合
というのがよく分かりません。

調べてみたらstdlib.hでも定義されてました。
例えばnull.hとかを作ってそこでNULLマクロを定義して
stdio.h stddef.h stdlib.hのそれぞれでnull.hをインクルードすれば
いいと思うのですが。
0327デフォルトの名無しさんNGNG
>>323
親切なコンパイラなら警告を出してくれるだろうが、別に構わんだろ。
0328デフォルトの名無しさんNGNG
string.hでもtime.hでもNULLマクロが定義されてるみたいです。
見るからにコピー&ペーストしたような感じでしたが。。。
仕様とかですかね?
0329デフォルトの名無しさんNGNG
まさか必ずstdio.hをインクルードしなければならない、と思い込んでいるのか?
0330デフォルトの名無しさんNGNG
>>329
いや違います。同じマクロを複数のヘッダファイルで
定義している理由が知りたいです。
0331デフォルトの名無しさんNGNG
いやだから>>325
0332デフォルトの名無しさんNGNG
>327 アフォ
警告レベルの話ぢゃねーよ
0333デフォルトの名無しさんNGNG
324の質問で325は答えになっていないだろ。
0334デフォルトの名無しさんNGNG
あぁそうか。ダブってるのがどうしてかって事かと思ってたよ。
推測だがヘッダファイルから別のヘッダファイルをインクルードするより
単独のヘッダファイルですませたかったからぢゃないか?
0335デフォルトの名無しさんNGNG
>>332
ほう、エラーになるコンパイラがあるなら教えてくれ。
0336デフォルトの名無しさんNGNG
>>321
�dクス(・ω・` )
>>332
*ワスレテタヨ(・ω・` )ゴメンネ
0337デフォルトの名無しさんNGNG
>>326
歴史的なもの。昔はstdio.hしかなかったのよ。
0338324NGNG
いろいろググッてみたのですが分かりませんでした。
どうでもいいことなのかも知れませんが気になってしまったもので。

>>334
上で示したNULLマクロが定義されていたヘッダファイルは
別のファイルをインクルードしてませんでした。
>単独のヘッダファイルですませたかった
そういう制約があるような感じです。

ちょっと納得できてないですが
とりあえずそういうものと思うことにします。
みなさんありがとうございました。
0339デフォルトの名無しさんNGNG
>>338
「当時〜」って話を確認したければ、
当時のソースなりヘッダなりを見ないと
意味ねえぞ?
0340デフォルトの名無しさんNGNG
思ったんですがA.cppというメインのやつがあったとして
そのA.cppから呼び出される関数をA.hに保存するって形は
おかしいですかね?
0341デフォルトの名無しさんNGNG
>>340
おかしいよ。
0342デフォルトの名無しさんNGNG
#include <hoge.h> と、
#include "hoge.h"
といった、 < > と " " は、一般的にはどのように使い分けられているのでしょうか?


私は、インクルードパス以下にあるものは< >、それ以外は" "という風に使っていたのですが、
C標準ライブラリは< >、それ以外は" "というのもよく見かけるような気がしまして。
0343デフォルトの名無しさんNGNG
その見かけたソースではインクルードパス以下にあるけど標準ライブラリじゃ
ないヘッダはどうやって読み込んでるんだ?

#include "/usr/include/..."

なんてやってたのか?
0344デフォルトの名無しさんNGNG
>>343
いや、""で括ってもインクルードパスから探せるから。
0345デフォルトの名無しさんNGNG
>>273
そりゃ宣言
0346デフォルトの名無しさんNGNG
#include の < >で囲まれたものは、

いくつかの標準システムディレクトリと、オプション
`-I' によって指定したディレクトリが含まれます。

#include の " "で囲まれたものは、相対パスの
ファイルを探します。

まぁいいんじゃない?
0347デフォルトの名無しさんNGNG
>>342
""の場合はカレントディレクトリから探し出す。その後に-Iやシステムで指定されて
いるディレクトリから。<>の場合はカレントディレクトリは探さない。
0348デフォルトの名無しさんNGNG
>>345
さっきからうぜえんだよ
もっと気の利いたエサ考えな低脳
0349デフォルトの名無しさんNGNG
>>284よめ
0350デフォルトの名無しさんNGNG
なんで基本的な知識が足りない人がエラそうに議論してるんだろう。
0351デフォルトの名無しさんNGNG
議論に見えませんが
0352デフォルトの名無しさんNGNG
弾なんて目じゃないですよ
0353デフォルトの名無しさんNGNG
>>342
>インクルードパス以下にあるものは< >、それ以外は" "という風に使っていたのですが、
>C標準ライブラリは< >、それ以外は" "というのもよく見かけるような気がしまして
確かにそういうのも時々見かけるけど、" "はファイル構成によっては思いもよらない自体が発生する
(しかも、ヘッダのバージョン違いか何かが原因だとその特定に時間がかかる)ので、
やっぱりインクルードパス以下にあるものは< >にするのが妥当だと思う。
0354デフォルトの名無しさんNGNG
あの。。色物と一緒に洗濯すると色が移るって聞いた覚えがあるんですけど
一緒に洗濯していいかどうかは服のどこをみればいいんでしょうか?
0355デフォルトの名無しさんNGNG
物凄い誤爆だなぁ…つーかわざと?('A`)
0356デフォルトの名無しさんNGNG
>>354
私は白物とそれ以外でしか分けていませんが、特に問題を感じたことは無いです。
0357デフォルトの名無しさんNGNG
ウールものは揉み洗いしてます
0358デフォルトの名無しさんNGNG
Cについて質問があります。
明日彼女のうちに誘われていて、いよいよ僕もCを体験できそうなのですが
やはりコンドームは男性が持っていくものなのでしょうか?
また、彼女もCは初めてらしいのですがいきなりフェラチオなどの強要は止
めたほうがいいのでしょうか?
あと、Cをはじめるときの心得などありましたら教えてください。

ちなみに今までの経験はAまでしかありません。
よろしくおねがいします。
0359デフォルトの名無しさんNGNG
>>358
氏ね。
0360デフォルトの名無しさんNGNG
ご。。ごめんなさい。。誤爆でした。。

レスくださったお二人方ありがとうございます、参考にします
0361デフォルトの名無しさんNGNG
>>358
殺伐としたスレに投入された一服の清涼剤
0362デフォルトの名無しさんNGNG
>>361
どうも一服と聞くと毒を盛られた気分になる。
0363デフォルトの名無しさんNGNG
質問です。
よく、サンプルなどで

if( foo() )
  処理

とか

if( !foo() )
  処理

とかって書いてますけど、この条件文の意味がはっきりとは分かりません。

最初の例でいうと、これは何と比較しているのでしょうか?
if( foo() == 0 ) なのか、if( foo() != 0 ) なのか?はたまた違うものなのか?

誰か教えて下さい。お願いします。
0364デフォルトの名無しさんNGNG
>>363
真か偽かを判断している。
0365デフォルトの名無しさんNGNG
>>363
!=0が省略されていると思えばよい。
!foo()は逆に==0
0366デフォルトの名無しさんNGNG
>>363は自称フィッシャーだと思う。センスゼロだけど。
Cやってる奴でこんなこと知らない奴がいると思えん。

一応マジレスすると、ifはアセンブラで言ったらJZってことだな。
0367363NGNG
>>364-366
ありがとうございます。
>>366 さんにはフィッシャー言われてしまいましたがマジでした。
でも、JZ に置き換えるというあなたの解説が覚えやすかったです。
0368デフォルトの名無しさんNGNG
if( foo() != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 != 0 )
0369デフォルトの名無しさんNGNG
頭悪い子ね
これはいかが?
どう?綺麗でしょ?
相手にならないわ
0370デフォルトの名無しさんNGNG
> とかって書いてますけど、この条件文の意味がはっきりとは分かりません。

ああ、それは、ifの後ろに空白が空いてなかったり、
カッコの内側に空白をあけているからですよ。
0371デフォルトの名無しさんNGNG
なるほど。
if (foo())
  処理
とか
if (!foo())
  処理
って書けばよかったのでね。たしかにそう書けばわかります。
ありがとうございました。
0372デフォルトの名無しさんNGNG
つまらん
0373デフォルトの名無しさんNGNG
if (you_are_hungry())
 eat(mos_burger());
0374デフォルトの名無しさんNGNG
1/2の100乗を計算するプログラムを書いたんですが、
結果が0になってしまいうまく動きません。

#include<stdio.h>

int main(void)
{
double a;
int i;

a=(1/2);

for(i=1;i<=100;i++){
a=a*(1/2);
}

printf("1/2の100乗は %ld です",a);

return 0;
}

こんなやつなんですが、どこがいけないんでしょう?
シンプルすぎて逆にわかりません…
0375デフォルトの名無しさんNGNG
1/2の値を確認しれ。
0376デフォルトの名無しさんNGNG
> Javaはシラネ。

えー おしえてよー
0377デフォルトの名無しさんNGNG
> VC++6.0(のC++モード)なんてそうだよな。
> for(int i=0;i<n;i++)

おまえら、空白あけろよ
0378デフォルトの名無しさんNGNG
> for()のfor(ここ)が、forブロックの内側か外側かってのがはっきりしていなくて、
> 処理系によって解釈が違っていた気がする。

C++のは初期は混乱していたが、Cは最初からきまってたね
0379デフォルトの名無しさんNGNG
> とりあえず手持ちのコンパイラにK&R時代コードでも食わせて「バグバグ」言ってろ。

たいがい通るのでは? 通らないのってどんなコードだろ?
foo(i)
int i;
{
とかも通るし、

さすがに i =/ 2; とかは通らないだろうけど、これはK&R時代じゃなくてそれ以前の時代だし
0380デフォルトの名無しさんNGNG
>>374
コンピュータで実数の演算するときの誤差については認識ある?
ググれば解説してるとこ結構みつかると思うけど。

2を100乗しといて逆数とるのは趣旨に反する?
0381デフォルトの名無しさんNGNG
> とりあえず手持ちのコンパイラにK&R時代コードでも食わせて「バグバグ」言ってろ。

たいがい通るのでは? 通らないのってどんなコードだろ?
foo(i)
int i;
{
とかも通るし、

さすがに i =/ 2; とかは通らないだろうけど、これはK&R時代じゃなくてそれ以前の時代だし
0382デフォルトの名無しさんNGNG
すみませんがご教授頂けませんか?
下記のような処理があり、
int index;
char file_name[ 15 ] = "ABCDEFGHIJKLM";

file_name[ 15 - 2 ] = '0' + index;

indexが0〜9までならいいのですが0〜19までの場合、
アスキーコード19はないと思うのでABC・・・という
風にアルファベットを利用したいと思います。
どのように改造すればよいでしょうか?
0383デフォルトの名無しさんNGNG
ちょっと意味がわからんのだが?
0384デフォルトの名無しさんNGNG
>>382
いまいちやりたいことが説明できてない気がする.....
おれの読解力のせいかもしれないけど。
0385デフォルトの名無しさんNGNG
>>382
いまいちやりたいことが説明できてない気がする.....
おれの読解力のせいかもしれないけど。
0386デフォルトの名無しさんNGNG
indexが19の場合、アスキーコードで19というのが無いので
Aから順にアルファベットを格納したいと考えています。
char file_name[ 15 ] = "ABCDEFGHIJKLM";のABCDEFGHIJKLMは適当に13文字つけただけなので
こちらは気にしなくても大丈夫です。
0387デフォルトの名無しさんNGNG
> 下記のような処理があり、
> int index;
> char file_name[ 15 ] = "ABCDEFGHIJKLM";

そんなところに空白あけるなよぼけ
0388デフォルトの名無しさんNGNG
>>382
いまいちやりたいことが説明できてない気がする.....
おれの読解力のせいかもしれないけど。
0389デフォルトの名無しさんNGNG
> こんなやつなんですが、どこがいけないんでしょう?

空白あけてないから
0390デフォルトの名無しさんNGNG
>>374
1/2だと0になる。素直に0.5と書くか、1.0/2とかにする。
ちなみに、pow(0.5, 100)で計算できるが。

>>382
file_name[15-2] = 'A' + index;
でいいのか?それとも、0-9は'0'〜'9'にしたいのか?
0391デフォルトの名無しさんNGNG
結果が0になってしまいます

#include<stdio.h>
int main(void)
{
double a;
int i;
a=(1/2);
   ↑
for(i=1;i<=100;i++){
a=a*(1/2);
     ↑
}
printf("1/2の100乗は %ld です",a);
              ↑
return 0;
}
0392デフォルトの名無しさんNGNG
#include <stdio.h>

main()
{
int c,n1;
n1 = 0;

while((c = getchar()) != EOF){
if(c == '\n')
++n1;
}
printf("%d\n",n1);


}
上のコードは改行の数をカウントするものなんですけど
うまく動きません。
どこが悪いんでしょう。
0393デフォルトの名無しさんNGNG
tmp[0] = "0123456789abcdefghijklmn"[index];
tmp[1] = 0;
strcat(filename, tmp);
と書くだけでOKですよ。
0394デフォルトの名無しさんNGNG
>>393
> どこが悪いんでしょう。

空白あけてないから
0395デフォルトの名無しさんNGNG
>>392
動くよ?どう動いて欲しいの?
0396デフォルトの名無しさんNGNG
file_name['A'-index] つーこと?

0397デフォルトの名無しさんNGNG
ためしに空白あけてみましょう。

#include <stdio.h>

main()
{
 int c, n;
 n = 0;
 while ((c = getchar()) != EOF) {
  if (c == '\n')
   ++n;
 }
 printf("%d\n", n);
}
ほら、ちゃんとうごきましたね。
0398デフォルトの名無しさんNGNG
>>390
>file_name[15-2] = 'A' + index;
>でいいのか?それとも、0-9は'0'〜'9'にしたいのか?

今回、indexは0〜19までの値が入ることになっています。
0〜9までなら382ので問題ないのですが19までとなると
改造が必要だと思いました。
上記への改造でfile_nameに格納されるのは
ABCDEFGHIJKLMA
ABCDEFGHIJKLMB
・・・
ABCDEFGHIJKLMTとすることができるのでしょうか?
0399デフォルトの名無しさんNGNG
>>397
うごきました。
どうもありがとー
0400デフォルトの名無しさんNGNG
>>397 これは駄目だろ
0401デフォルトの名無しさんNGNG
> 19までとなると改造が必要だと思いました

26までなら平気だろ? アルファベットは26個あるんだから

0402デフォルトの名無しさんNGNG
>>401
26まで対応可能にするには'0'→'A'とするだけで済む
ということでよろしいですか?
0403デフォルトの名無しさんNGNG
>>382
>アスキーコード19はないと思うので

アスキーコードに「19」は存在すると思うが、
これは「アスキーコード19」とか言うコード体系の事だろうか?
もしそうなら、こんなコード体系は聞いたことがないな。




# って言うか、勝手な脳内変換を働かせると
#
# int index = 11; /* 値は適当 */
# char filename[256] = {'\0'};
# FILE *fp;
# sprintf( filename, "hoge%c.txt", "0123456789ABCDEFGHI"[index%19] );
# fp = fopen( filename, "r" );
#
# こんな感じか?
0404デフォルトの名無しさんNGNG
>>402
'0'のままでも行けるんじゃないのか?
ASCIIみてないけど。。。
0405デフォルトの名無しさんNGNG
>>397
エスケープ文字間違ってんじゃねえよ糞ヴォケが
「ちゃんとうごきました」だと?
おまえの脳内コンパイラなんぞ持ち出すな痛違い野郎
0406デフォルトの名無しさんNGNG
ちなみに'0"はASCIIで48です。

それに「アスキーコード」なるものは存在しません。
ASCIIのCは何の略かを考えれば常識
0407デフォルトの名無しさんNGNG
よーするに16進数と同じ表記パターンでそれ以降にも使いたいということか。
0408デフォルトの名無しさんNGNG
> '0'のままでも行けるんじゃないのか
ファイル名に使えない文字を通っちゃうのでだめです。
0409デフォルトの名無しさんNGNG
file_name[15-2] = 'A' + index;
こうすると
int index = 19;のときfile_nameには何が格納されます?

0410デフォルトの名無しさんNGNG
教えない。
0411デフォルトの名無しさんNGNG
>>403
考えてもらってありがとうございます。
ちょっとそこまで頭がついていってないです。m(__)m
0412禿NGNG
$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
ibase=16
30
48
ibase=A
48 + 19
67
obase = 16
67
43

えーと 0x43 は 'C'
が13番目の添字に...
0413デフォルトの名無しさんNGNG
>>412
bcが使えることを言いたいだけ?
何やってんだかサパーリ。
0414デフォルトの名無しさんNGNG
C++builderでボタンクリックで実行を
キーボードのF1キーでも実行できるようにするにはどうすればいい?
0415デフォルトの名無しさんNGNG
>>414
スレ違い。
0416デフォルトの名無しさんNGNG
あとwhile文を実行中にF2キーで抜けたいけど
どうしたらいいですか?
どなたかおねがいします
0417デフォルトの名無しさんNGNG
>>415
すみません
間違えたました、出直してきます
0418デフォルトの名無しさんNGNG
>>414 >>416
DebugGoをF1に、BreakをF2にマップする。
0419412NGNG
'A' + 19 だから 'T' ですね。
強烈に外したみたいなので、寝ます。
0420デフォルトの名無しさんNGNG
>>418
理論はわかってるけど
どうコードにすればいいのかわからないです
差し支えなければコードを書いてくれませんか?
初心者ですみません
0421デフォルトの名無しさんNGNG
つーか、スレ違いだって。
0422デフォルトの名無しさんNGNG
すれ違いではないですが、
ここまで何人もが答えのコードそのものを書いているのに
それでもわからないと言っている人には
もう知る権利はありませんよね
0423デフォルトの名無しさんNGNG
自己参照構造体、ググって出てきたどのサイト見てもイマイチ分からない…
どこか分かり易い良いサイトある?
0424デフォルトの名無しさんNGNG
>>423
何が分からないの?
特に何も難しいところはないはずだが。
0425デフォルトの名無しさんNGNG
Cでは0.1が上手く表現出来ない為、下記のコードでは
結果が「NG」になると とあるサイトに書かれていたのですが
VC++6.0でコンパイルしてみたところ、見事に「OK」になります
なぜですか?

double d = 0.1;
if(d * 10 == 1.0){
  printf("OK");
}else{
  printf("NG");
}

ちなみに、これだと駄目みたいです。
int i, d = 0;
for(i = 0; i < 10; i++){
  d += 0.1;
}
0426デフォルトの名無しさんNGNG
>>425
最適化で定数式の展開をコンパイル段階でしちゃったんじゃないの
0427デフォルトの名無しさんNGNG
>>425
というか、上のプログラムと下のプログラムで結果が違って
くるのがそもそも問題だと思わない?
安心してプログラムが書けないでしょ?
0428425NGNG
>>426
>>426
こんな感じで置き換えられたという事ですか?
if(1.0 == 1.0)
でも、デバッグモードでは最適化はしていません。

>>427
そちらの環境では、どっちでも「NG」ですか?

0429デフォルトの名無しさんNGNG
> ちなみに、これだと駄目みたいです。
> int i, d = 0;
> for(i = 0; i < 10; i++){
>   d += 0.1;
> }

> int i, d = 0;
そりゃ駄目だろうな┐(´∀`)┌
0430デフォルトの名無しさんNGNG
>>429
警告でてるはずだね(笑)
0431デフォルトの名無しさんNGNG
でねーよ
0432425NGNG
>>429
すみません。ここに書いたコードだけ間違ってました。
double d; でも「NG」です。
0433デフォルトの名無しさんNGNG
>>431
出ない?
警告レベル落とせば出なくなるか・・
0434デフォルトの名無しさんNGNG
>>425
>Cでは0.1が上手く表現出来ない為
Cだからではなく2進浮動小数点表現では、だな。
0435デフォルトの名無しさんNGNG
gcc -Wallでも警告出ないな…
0436デフォルトの名無しさんNGNG
>>424
http://www.kumei.ne.jp/c_lang/intro/no_34.htm
ここ見てみると
b=NULL;
ってやった後にメモリ確保して、aに入力したデータ入れた後の

a->nextlist = b; 
b = a;

の部分がどういう事なのかさっぱり…
次のポインタのアドレスにNULLが入つた構造体のアドレスを入れてる???
0437425NGNG
#include <stdio.h>

int main(void)
{
double d = 0.1;
int i;

  if(d * 10 == 1.0) printf("OK\n");
  else printf("NG\n");

  d = 0.0;
  for(i = 0; i < 10; i++) d += 0.1;

  if(d == 1.0) printf("OK\n");
  else printf("NG\n");

  return 0;
}

結果
OK
NG

WinXP + VC++6.0Pro
デバッグモード(最適化ナシ)、リリースモード(最適化アリ)ともに同じでした。
0438デフォルトの名無しさんNGNG
>>435
gccだと出ないね。こりゃひどい。g++だと出るのか。
VCだとC相手でも警告ちゃんと出るようだ。(VC7.1で確認)
0439デフォルトの名無しさんNGNG
乗算の場合、一時計算のため80bit実数に拡張され、最後に丸められるため
結果的に綺麗な値に納まるが
doubleのまま加算を繰り返す場合、64bit実数のままで毎回下の値が切り捨て
られるため誤差が累積するとかそんなかんじ?
0440デフォルトの名無しさんNGNG
警告云々より、MSのコンパイラだと0.1*10 == 1.0が成り立つ方がびっくり。
0441デフォルトの名無しさんNGNG
>>436
それぞれの命令の前でどの変数が何を指してるか、
飛ばさずにちゃんと考えた方がいいぞ。

それこそ紙に表でも書いてさ。
0442デフォルトの名無しさんNGNG
>>440
fld QWORD PTR _d$[ebp] ; 0.1が入っている
fmul QWORD PTR __real@8@4002a000000000000000 ; 10
fcomp QWORD PTR __real@8@3fff8000000000000000 ; 1
fnstsw ax
test ah, 64; 00000040H
je  SHORT $L776

これで真なんだからコンパイラってよりもプロセッサのほうだと思われ
0443425NGNG
>>439
そういう事ですか。納得できました。

>>436
最後の終了判定のために、最初にNULLを代入したのでは?
0444デフォルトの名無しさんNGNG
bcc32だと"NG"でつ
0445デフォルトの名無しさんNGNG
>>442
アセンブラ ばりばりですね。是非わたしのバグもちAPを解析してほしいです。
0446デフォルトの名無しさんNGNG
条件演算子(三項演算子)は、

A ? B : C

と書きますが、Bを省略した場合、

A ? : C

Aが真の場合の動きはどう定義されているのでしょうか?
#というかそもそも文法的に正しい?

ちなみに gcc 2.95.4 では、A を評価した値が返って来ます。
0447デフォルトの名無しさんNGNG
文法的に間違ってると思う。

ちなみに CL (VC++6.0)だと
error C2059: 構文エラー : ':'
0448446NGNG
gcc の拡張文法でした…お騒がせしました。
0449デフォルトの名無しさんNGNG
>>425
浮動小数点数に==を使うのは御法度。
0450デフォルトの名無しさんNGNG
あほかこいつは
0451デフォルトの名無しさんNGNG
なんでこんなにageばっかなの?
0452デフォルトの名無しさんNGNG
14.5:
2つの浮動小数点の値が"十分近い"ことを判定するよい方法は。

A:

浮動小数点の値の絶対的な精度は、浮動小数点の定義により、その大 きさによって変化するので、二つの浮動小数点の値を比較する最上の 方法は精度の敷居を使うことである。精
度の敷居は、比較しあう数の 大きさに比例させる。

double a, b;
...
if(a == b) /* 間違い */

ではなく、以下のコードを

#include <math.h>

if(fabs(a - b) <= epsilon * a)

適切に選んだepsilonと共に使え。
0453デフォルトの名無しさんNGNG
>>451
HSPスレの次はここに出張ですか?sage厨さん。
0454デフォルトの名無しさんNGNG
>>449
アフォですか?
0455デフォルトの名無しさんNGNG
>>425
double x=0.1;
double d;
memcpy(&d,&x,sizeof(double));

こうするとどうなる?
0456455NGNG
VC++6.0ではscanfを使ってもOKになるわ・・・
0457デフォルトの名無しさんNGNG
>>439
0458455NGNG
>>457
gcc3.3.3だと>>425が(最適化無しで)NGになるのよ。
0459デフォルトの名無しさんNGNG
拡張がなされなければそうなるんじゃねぇの、そりゃ。
0460デフォルトの名無しさんNGNG
スレ違いかもしれないですが、
オンラインアセンブラをC言語で
使う方法を教れてください。
0461デフォルトの名無しさんNGNG
っていうか、浮動小数点演算の場合、
コンパイラ以外にCPUによっても計算結果が変わるよ
だからあんまり議論しても意味は無い

>>460
「インラインアセンブラ」だな。環境依存OKスレに逝ってこい。
0462デフォルトの名無しさんNGNG
リンクするライブラリをソース内で指定しておくことはできませんか?
0463デフォルトの名無しさんNGNG
ふつうはmakefileで指定するが。
0464デフォルトの名無しさんNGNG
ファイルを読み込んでそのファイルのサイズを返すやり方が分かりません。
どなたかご教授下さい
0465デフォルトの名無しさんNGNG
>>462
コンパイラとリンカのマニュアル読め。
0466デフォルトの名無しさんNGNG
register変数使うとループ処理は速くなりますか?
0467デフォルトの名無しさんNGNG
>>466
速くなるかもしれないし、速くならないかもしれません。
0468デフォルトの名無しさんNGNG
>>464
FILE *fp = fopen("file", "r");
int size;

fseek(fp, 0, SEEK_END);
size = ftell(fp);

>>466
今のコンパイラは最適化がしっかりしてるので
速くはならないと聞いたけど…
0469464ですNGNG
>>468
ご教授ありがとうございました。
感謝です。
0470デフォルトの名無しさんNGNG
読み込んだ四桁の整数値の各桁の数字を表示するプログラムって
どうしたらいいんでしょうか?ド初心者なものでわかりません…。
printfとかだけで簡単にできるんでしょうか…?
0471デフォルトの名無しさんNGNG
>>470
プログラムは置いといて、取りあえず4桁の数字と睨めっこしてごらん
0472デフォルトの名無しさんNGNG
>>470
int i = 1234;
char s[10];

sprintf(s, "%d", i);

printf("%c\n", s[0]);
printf("%c\n", s[1]);
printf("%c\n", s[2]);
printf("%c\n", s[3]);
0473デフォルトの名無しさんNGNG
>>470

int i = 1234;
printf ("%d %d %d %d",i/1000,i%1000/100,i%100/10,i%10);
0474デフォルトの名無しさんNGNG
>>463
�d
そのためのmakefileなのね
0475470ですNGNG
皆さんありがとうございました!
やっとわかりました。
0476デフォルトの名無しさんNGNG
オンラインアセンブラってチョトカコイイと思った
なんとなく。
0477デフォルトの名無しさんNGNG
.NETの新技術にありそうなネーミング。
0478デフォルトの名無しさんNGNG
ソースを送るとアセンブルして返してくれるとか。
0479デフォルトの名無しさんNGNG
>>437
> if(d * 10 == 1.0)
>>452
> if(a == b) /* 間違い */

っていうか、おまけら、空白あけろよ ぼけ
こういうコード書くやつにろくなやつはいない
0480デフォルトの名無しさんNGNG
>>479
で?そんな君はまともにプログラム組めるのかね?
実力無いやつに限ってそう言う当たり障りのない部分にこだわるんだよな。
何か突っ込まれたってプログラムの本筋とは関係ないからな。
0481デフォルトの名無しさんNGNG
>>479
ぶっちゃけもう飽きた
0482デフォルトの名無しさんNGNG
飽きた?最初からつまらんかったが
0483デフォルトの名無しさんNGNG
禿同
0484デフォルトの名無しさんNGNG
>>479
バーカ
0485デフォルトの名無しさんNGNG
> そんな君はまともにプログラム組めるのかね?

おまえ、だれにものいってるつもりだ?
0486デフォルトの名無しさんNGNG
すみません。質問です。
int func(int, char *);
ってプロトタイプを書くのと、
extern int func(int, char *);
って書くのの意味の違いを教えてください。

どちらもよく見かけるのですが...。
0487デフォルトの名無しさんNGNG
>>486
ない。
デフォルトがexternだから。
0488デフォルトの名無しさんNGNG
>>485
ワラタ
0489デフォルトの名無しさんNGNG
> ない。

ってことは、つけてもつけなくても、文法的に同じってことですか?
0490デフォルトの名無しさんNGNG
> デフォルトがexternだから。

変数だと、
int a;
static int a;
extern int a;
はそれぞれ3つとも意味違うじゃないですか (Unicじゃない場合)

ってことは、
static func(int); と
func(int); と
extern func(int); で
2つめのは前後のどっちの意味でもないのかなあ? とおもったのですよ!
0491デフォルトの名無しさんNGNG
>Unic
は間違っているし、
・スコープ - グローバルとローカル
・宣言と定義
をちょこっと調べろ
0492デフォルトの名無しさんNGNG
Unic?何と間違ってるのか分からん…
0493デフォルトの名無しさんNGNG
マヂレスすると たぶん Uniq
0494デフォルトの名無しさんNGNG
マヂレスじゃなく、マジレスしてくれ。
0495デフォルトの名無しさんNGNG
>>490
関数はデフォルトでexternがつく、
グローバル変数はデフォルトで何もつかない
関数の内部の変数はデフォルトでautoだな
0496デフォルトの名無しさんNGNG
> 関数はデフォルトでexternがつく、

じゃあ、「外部にある」ってことですよね?
extern int func(int); って書いて「外部にある」って宣言しておいて、
その同じファイルの中に定義がでてくるのって、問題ないのかなあ?
0497デフォルトの名無しさんNGNG
>>486
>int func(int, char *);

int func(int, char *); →→ int func (int, char *);

空白開けろよぼけ。
0498デフォルトの名無しさんNGNG
ぼけ。関数名の後ろに空白あけるな!
知ったかぶりやろうめ
0499デフォルトの名無しさんNGNG
うーん、ここはレベル低いなあ。

ifやwhileの後ろに空白空けろっていうと、関数名の後ろにまであけるぼけがいるなんて!
0500デフォルトの名無しさんNGNG
>>498,499,500

プ
0501デフォルトの名無しさんNGNG
>>497
charと*の間に空白をいれるなよぼけ。
0502デフォルトの名無しさんNGNG
関数の後ろにあけるって発想は素晴らしいよ
なんつうか、もうお前はVCやひまわりでもやってなさいって感じ
0503デフォルトの名無しさんNGNG
空白開けろとか開けるなとか全くもってくだらん。
そんなことでグチャグチャ騒いでんじゃねぇって感じ。
0504デフォルトの名無しさんNGNG
だから言ったろう。GWなんて関係ないんだって。
0505デフォルトの名無しさんNGNG
GW→GandamWing
0506デフォルトの名無しさんNGNG
>>505
× GANDAM
○ GUNDUM
0507空白DQN発見↓NGNG
503 名前:デフォルトの名無しさん :04/05/07 09:30
空白開けろとか開けるなとか全くもってくだらん。
そんなことでグチャグチャ騒いでんじゃねぇって感じ。
0508デフォルトの名無しさんNGNG
質問です。

charで定義された変数を、
数字のみの列だけの時と、数字列+文字列or文字のみの列だけの時の、
2通りに判断する場合に使用する関数は何が適しているでしょうか?
 
最初はatoiを使おうと思ったのですが、
この場合、charの中身が、
(例として10が通るべき実数とします)
abc
a10
の時はエラーを返してくれるのですが
10
10a <も、正しいと判断してしまいます。
 
宜しければ御教授御願い致します。
0509デフォルトの名無しさんNGNG
>>508
strcspanでも使えば?
0510デフォルトの名無しさんNGNG
>>508
strtol() で 「変換が終了した位置」 以降に
空白以外の文字がないことを確認する、とか。
0511デフォルトの名無しさんNGNG
>>508
atoiはエラーなんか返さない。
0512508NGNG
>>509
strcspanと言うのが、「C言語 strcspan」辺りで、
ググったりして調べても見当たらないのですが……。
strcspnとは別物でしょうか?
 
>>510
えと、strtolを調べてみました。
更に質問を返してしまいますが、
「変換が終了した位置」を特定するには、
どの様な手順を踏まえるべきなのでしょうか?

>>511
失礼、思いっきり説明を省略してしまいました。
返って来た値が0の場合にのみエラーメッセージを出力し、
それ以外の場合にはそのままプログラムを進める、
と言う意味です。
0513デフォルトの名無しさんNGNG
>>512
調べたら分かるはずだぞ。

char *endp;
/* 中略 */
strtol("12345abc",&endp,10); /* endpはabcを指すようになる */
あとは分かるだろ?
0514デフォルトの名無しさんNGNG
>>512
あと509のstrcspanはstrcspnの間違いだな。
0515512NGNG
>>513
おおう、ナルホド。
判定した文字列のアドレスで良いのですな。
有難う御座いました。
0516デフォルトの名無しさんNGNG
>>512
isdigit()辺りで変換前に判定する方法もある。
0517デフォルトの名無しさんNGNG
> charと*の間に空白をいれるなよぼけ。

いや、あけるな。Stroustrapがそれをくっつけるのが好きなのだが、
char* p, q; とやったときに pとqが同じ型みたいでいやなので禁止。
0518デフォルトの名無しさんNGNG
> GW→GandamWing

Gates Williams
0519デフォルトの名無しさんNGNG
っていうか、判断だけで変換しないなら、
isalnumやisdigitをぐるぐるしろ
0520デフォルトの名無しさんNGNG
グーグル使ってみます。
0521デフォルトの名無しさんNGNG
>>519
(@∀@)ぐるぐる!
0522デフォルトの名無しさんNGNG
ぐるぐるしろ、って可愛いな。
0523デフォルトの名無しさんNGNG
お腹がぐるぐる急降下です。
0524デフォルトの名無しさんNGNG
('_`) ソウカ・・・
0525デフォルトの名無しさんNGNG
絶対ぐるぐるのほうがいいと思う
0526デフォルトの名無しさんNGNG
Googleをぐるぐるするスレでも立てるか。
0527デフォルトの名無しさんNGNG
/* こんな感じかな? */
int isDigitOnly(const char *s){
 while(isdigit(*s)) s++;
 return (*s=='\0');
}
0528デフォルトの名無しさんNGNG
空白あけろよ。
改行もしろ
0529デフォルトの名無しさんNGNG
うっせーな、あけたきゃあけりゃいいだろ。
0530デフォルトの名無しさんNGNG
/* こんな感じかな? */
int isDigitOnly(const char *s)
{
 while (isdigit(*s))
  s++;
 return (*s=='\0');
}
0531デフォルトの名無しさんNGNG
return に括弧つけんなよ、は突っ込まないのか?
0532デフォルトの名無しさんNGNG
int isDigitOnly(const char *s){while (isdigit(*s++));return (*(s-1)=='\0');}

0533デフォルトの名無しさんNGNG
関数名に大文字使うなよバカ
0534デフォルトの名無しさんNGNG
> return に括弧つけんなよ、は突っ込まないのか?

単項ならともかく、条件式なので、まあいいかなと。
0535デフォルトの名無しさんNGNG
だか「==」の両側はあけろよなあ
0536デフォルトの名無しさんNGNG
>>532
「-1」しなきゃいけないのがださい。
while (isdigit(*s) && *s++)でどうだ ;-)
0537デフォルトの名無しさんNGNG
数日前から救いようのないバカが湧いているなあ。
はっきり言って、まともな質問や議論に対しては邪魔でしかない上に、
全く面白くないのですが、何を考えているんでしょう?
いい加減飽きたでしょうから、さっさと消えて欲しいものです。
0538デフォルトの名無しさんNGNG
/usr/local/include 以下のヘッダファイル読みに行ってくれないんですがどうしたらいいんですか?
0539デフォルトの名無しさんNGNG
コンパイラーの機嫌をそこねたんでしょう > 読みに行ってくれない。

ひたすら機嫌をとるしかないです。
0540デフォルトの名無しさんNGNG
> はっきり言って、まともな質問や議論に対しては邪魔でしかない上に
とか言っているが、実は、537が一番わかってない。
0541デフォルトの名無しさんNGNG
>>538
環境依存っぽいな。-I (MS C なら /I) は付けたか?
0542デフォルトの名無しさんNGNG
b=10;
b=-1;
さてbの値はいくつか? とか

#include <stdio.h>してるのに
getchar (c) でエラーになる、とか、

そういう体験していないってことは、537は、Cの話題で何がおもしろくて何がつまらないか
を全然わかっていないって言う証拠ですね。
0543デフォルトの名無しさんNGNG
そんなものはない > MS C なら

> なら /I
ふつうclでも-I
0544デフォルトの名無しさんNGNG
>>536
whileループ内で条件判断が増えるからだめ。

0545デフォルトの名無しさんNGNG
じゃあ、やっぱり最初のがいいなあ
0546デフォルトの名無しさんNGNG
>>542
ん?別に得意げに延々と話すことでもないような。
0547デフォルトの名無しさんNGNG
>>546
6行が「延々」かよ ...

虚勢がみっともない
0548541NGNG
>>538
makefile に -I/usr/local/include やったら通ったよ
ありが�d
0549デフォルトの名無しさんNGNG
ありがげた?
0550デフォルトの名無しさんNGNG
>>548

>>541 宛てです・・寝ぼけてる;;;
0551デフォルトの名無しさんNGNG
>>549
�dが読めない環境で2ちゃんは辛そうだな
0552デフォルトの名無しさんNGNG
よめるもん。
げたでしょ?
0553デフォルトの名無しさんNGNG
>>542の
> #include <stdio.h>してるのに
> getchar (c) でエラーになる、とか、

がどういうネタなのかさっぱりわからない・・・
#include <stdio.h>しているからこそ、エラーになるんじゃないのか?
0554デフォルトの名無しさんNGNG
> がどういうネタなのかさっぱりわからない・・・

まあ、でなおしといで。
0555デフォルトの名無しさんNGNG
そんなことより、externはどうなった?

変数の場合は、externついててもついてなくてもどっちもextern?
1箇所も初期化してなくてもリンク時に実体はできる?
0556デフォルトの名無しさんNGNG
>>554
頼むから説明してくれ。
stdio.hでint getchar(void);と宣言されているgetchar関数は、stdio.hをインクルードするからこそエラーになると思うんだが。
0557デフォルトの名無しさんNGNG
> 頼むから説明してくれ。

おれがかいたわけじゃないからしらん。
0558556NGNG
・・・するからこそ、getchar(c)がエラーに・・・
の間違い。
0559デフォルトの名無しさんNGNG
>>556
stdio.hの中に「それ」があるかどうかは規格では規定してないぞ。
0560デフォルトの名無しさんNGNG
>>559
そりゃint getchar ( void ) ;かもしれないし、extern int getchar(void);かもしれないが、そんなことを言っているんじゃないよ。
0561デフォルトの名無しさんNGNG
>>556
たぶん546は
「putchar (c); がエラーになる」とか言いたかったんだと思われ。
0562デフォルトの名無しさんNGNG
>>561
「putchar (c); がエラーになる」ような処理系を使った経験がないと、Cの話題で何がおもしろくて何がつまらないか
を全然わかっていないって言うことかな?
0563デフォルトの名無しさんNGNG
っていうか、2つ書いてあったもう一方は、さりげなくスルーか? ;-)
0564デフォルトの名無しさんNGNG
>>563
bの型が書かれていない。
0565デフォルトの名無しさんNGNG
乱数をn個生成し、それらをすべて1次元配列rに格納する。
その後、配列r中のn個の値を小さい順に並べ替え、並べ替え後の配列rの値をすべて表示する。
nの値は自由。表示のしかたも自由。

というプログラムが作れなくて困ってます。
誰か助けてください;
0566デフォルトの名無しさんNGNG
宿題スレでどうぞ
0567デフォルトの名無しさんNGNG
>>564
おそらく型はどうでもいいはず。(わたしの想像通りのネタなら)
0568デフォルトの名無しさんNGNG
>>565
rand,qsort,printfあたりの関数を使う。
0569デフォルトの名無しさんNGNG
>>567
昔あった演算子か
0570デフォルトの名無しさんNGNG
>【ライセンスや機能などに問題あり】
LCC-Win32は具体的にどういう問題があるんでしょうか?
0571デフォルトの名無しさんNGNG
>>570
intが16bit
0572571NGNG
あ、LCCってあれのことじゃないのか。
0573571NGNG
>>570
> It's free for non-commercial use,

これじゃねーの?
Intelのフリーコンパイラも似たようなものだし。
0574デフォルトの名無しさんNGNG
#include <stdlib.h>

void hoge(int n)
{
 int n;

 for (i = 0; i < n; i++)
  r[i] = rand();
 qsort(r, n, sizeof(int), compint);
 for (i = 0; i < n; i++)
  printf("%d ", r[i]);
}

int compint(int *a, int *b)
{
 if (*a > *b)
  return 1;
 else if (*a < *b)
  return -1;
 else
  return 0;
}
0575デフォルトの名無しさんNGNG
int i;だろ
0576デフォルトの名無しさんNGNG
>>573
個人で使うには特に問題ないようですね。
ありがとうございます。
0577デフォルトの名無しさんNGNG
int compint(int *a, int *b)
{
 return *a - *b;
}
}
0578デフォルトの名無しさんNGNG
む、 } がおおかった・・・
0579デフォルトの名無しさんNGNG
「n個の任意の値を入力して、大きい順に並び替えるプログラムを作成せよ」という問題が、解けません。どなたかわかるかたいらっしゃいませんか?お願い致します。


0580デフォルトの名無しさんNGNG
>>579
だから宿題スレでどうぞ
0581デフォルトの名無しさんNGNG
>>579
マルチすんなウスラハゲ!
0582デフォルトの名無しさんNGNG
#include<stdio.h>

(int main, int argc, char **argv)
{
 (printf, "hello world %s??/n", argv[0]);
 (return, 0);
}


Cの仕様がこんなんだったら凄くカッコいいよね。
関数名もかっこの内側に書けた方が見た目が綺麗だね。
で、ifの仕様はどっちがいい?

(if, argc==2){
 (printf, argv[1]);
}

(if, argc==2, (printf, argv[1]));


0583デフォルトの名無しさんNGNG
>>582 おまえ美的感覚ゼロだろ。

0584デフォルトの名無しさんNGNG
美的感覚以前にここはCスレだからコンパイルエラーで終了
0585デフォルトの名無しさんNGNG
>>582
コンマが無駄。
0586デフォルトの名無しさんNGNG
>>571
それは問題か?
0587デフォルトの名無しさんNGNG
>>582
Lisp向きな人ですね。
0588デフォルトの名無しさんNGNG
(define (main argc argv)
 (
  (printf 'hello world %s\n' (car argv))
  0
 )
)

あれ、なんかどこかで見た気が。
0589デフォルトの名無しさんNGNG
>>584
激しく同意。 まったくくだらん!
0590デフォルトの名無しさんNGNG
>>586
小さすぎていやん☆
0591デフォルトの名無しさんNGNG
wprintf(L"あ\n");
を実行すると何も表示されないんですが、ワイド文字では日本語は扱えないということですかね?
環境はWinXP、VC++6.0です
0592デフォルトの名無しさんNGNG
setlocale?
0593デフォルトの名無しさんNGNG
>>592
!
つってくる

         从从从
        从从从从  ゴオオオォォォォォ…
        从从从从从
       从从从从从从 ̄⊃     ) )
      ⊂ 从从从从   ̄⊃  / ̄ ̄ ̄ヽ
       ⊂_      ._⊃   | (\/) |
         ⊂__⊃.      |  > <  |
                     | (/\). |
                     ヽ___/
0594デフォルトの名無しさんNGNG
>>593
つってねぇ
0595デフォルトの名無しさんNGNG
>>593
moeteruyo
0596デフォルトの名無しさんNGNG
> コンマが無駄。

ダム!
0597デフォルトの名無しさんNGNG
MSXのCはintが8bitだったぞ ;-)
0598デフォルトの名無しさんNGNG
>>597
うそつけ。
MSX-C/LSC-Cは16bit.
他にもあった?
0599デフォルトの名無しさんNGNG
釣れた ;-)
0600デフォルトの名無しさんNGNG
よかったね ;-)
0601デフォルトの名無しさんNGNG
これが警告無しでコンパイルされてたんで嫌だった。
typedef struct{
...
char data[0];
} md;
最初バグかと思った。いや、やっぱりバグにしたい。。。
0602デフォルトの名無しさんNGNG
それ、出来た方がいいけどな
0603デフォルトの名無しさんNGNG
>>571
それはライセンスですか?
0604デフォルトの名無しさんNGNG
【ライセンスや[機能などに]問題あり】
0605デフォルトの名無しさんNGNG
>>601
4.2 構造体中の 0 長配列メンバ
http://seclan.dll.jp/c99d/c99d04.htm

「エキスパートCプログラミング」に同じような話題があったはず。
というわけで、割と使われるテクニックのひとつだったと記憶してます。
0606デフォルトの名無しさんNGNG
昨日だと思われ
0607デフォルトの名無しさんNGNG
>>601
便利だけど移植性0になるからなぁ。
以前えらい目に遭ったからもう使わんようにしてる。
0608デフォルトの名無しさんNGNG
まだchar data[1];の方がましな気がする。
0609デフォルトの名無しさんNGNG
Windowsに限って言えば
BITMAPINFO構造体で[0]が使いたいね。
0610デフォルトの名無しさんNGNG
> typedef struct{

空白あけろよぼけ
0611デフォルトの名無しさんNGNG
>>601
え? そんなので警告やエラーでたら、それこそコンパイラーのバグじゃん
0612デフォルトの名無しさんNGNG
こんぱいらー
0613デフォルトの名無しさんNGNG
>>611
うーん、確かにバグだねえ・・・
0614デフォルトの名無しさんNGNG
アセンブラーの妹です。
0615デフォルトの名無しさんNGNG
ageageageageageageあほかおまえら
0616デフォルトの名無しさんNGNG
なにかもんだいでも?
0617デフォルトの名無しさんNGNG
どうでもいい。
0618デフォルトの名無しさんNGNG
だね。
0619デフォルトの名無しさんNGNG
どうでもよくない。
0620デフォルトの名無しさんNGNG
だね。
0621デフォルトの名無しさんNGNG
自作自演臭がきつい
0622デフォルトの名無しさんNGNG
Cでは負 % 負 の結果は 正 になる
と明解C言語書いてあるのですが
なりませんでした。コンパイラはgccです。なぜでしょうか?

ちなみに
-7 % -3 = -1
-7 % 3 = -1
7 % -3 =1
となりました。
0623デフォルトの名無しさんNGNG
>>622
だからそれは実装依存。
コンパイラやオプションによる。
0624デフォルトの名無しさんNGNG
×コンパイラ
○コンパイラー
0625622NGNG
そうなんですか。
この本には
 「二つのオペランドが同符号の値であれば、演算の結果は正の値になります。
 二つのオペランドの符号が異なる値であれば、演算の結果は処理系に依存することになって
 ますので注意しましょう。」
と書いてあるので
 「二つのオペランドが同符号の値であれば、処理系に関わらず演算の結果は正の値になる。」
と思ったのですが。
0626デフォルトの名無しさんNGNG
> 明解C言語書いてあるのですが

そんなボケな本かうからだろ。
結果は、2つの被演算数のそれぞれ「絶対値」をつかって%の演算をし、
結果には1つめの被演算子の符号をつけると思えばよい。
0627デフォルトの名無しさんNGNG
> だからそれは実装依存。
> コンパイラやオプションによる。

これもウソ。
規格でちゃんと決まっている。

やーい > 知ったかぶり
0628デフォルトの名無しさんNGNG
>>625
だからちゃんとした本買えよ! その本ウソだらけだってば。
0629デフォルトの名無しさんNGNG
プゥ
0630デフォルトの名無しさんNGNG
なんでわざわざハズレ本を買うバカがいるんだろう?

あれだけやめろと言ったのに。
0631デフォルトの名無しさんNGNG
>>625
書いてあることは正しいよ。
おまいさんの使ってるコンパイラが規格に則っていないだけ。
0632622NGNG
>>628
お勧めの本教えてください。
0633デフォルトの名無しさんNGNG
>>622
a % b = a - a / b * b が成立するはずなので

-7 % -3 = -7 - -7/-3*-3 = -1
-7 % 3 = -7 - -7/3*3 = -1
7 % -3 = 7 - 7/-3*-3 = 1
0634デフォルトの名無しさんNGNG
> 書いてあることは正しいよ。

いいえ、まちがってます > 明解
あきらかなウソ。規格書読めよぼけ。
0635デフォルトの名無しさんNGNG
>>632
「作ってわかる...」 ...ぴー
0636デフォルトの名無しさんNGNG
>>635
けっこういい本では? 何か問題でも?
0637デフォルトの名無しさんNGNG
> けっこういい本では? 何か問題でも?

ここでは禁句になってるんだよ。ぼけ!
(って、技術評論社のアノ本のことじゃなかったらどうしよう(^^;;)
0638デフォルトの名無しさんNGNG
K&Rがお薦めです。
(ただし原書)
0639デフォルトの名無しさんNGNG
まだ売ってますか? > 「作ってわかるCプログラミング」日下部陽一

たしか話題になったのは3年ほど前だった気がする。
0640デフォルトの名無しさんNGNG
> まだ売ってますか?

すくなくともココには出てる ;-) > http://www.pleiades.or.jp/cbook/CBookList.html

本の名前並べるだけじゃなくて、どれがお薦めか、お薦めマークつけてほしいよなああ。
0641デフォルトの名無しさんNGNG
明解C言語って 柴田望洋 だろ?
だめにきまってるじゃん! 著者がろくにCわかってないのよ?
まともなこと書けるわけないじゃん。
(まあ、三田某ほどはひどくないが、でも、人に教えたり本を書いたりする
レベルではない > 柴田望洋)

まだ高橋のほうがウソがかなり少ない(ある程度まともに理解している)だけまし。

0642デフォルトの名無しさんNGNG
柴田望洋みたいにもっともらしくウソかいてある本に
やすやすと騙されて読んでいるやつって、あたまわるそうに見えるよなあ。
0643デフォルトの名無しさんNGNG
>>642
読むのはたいがい初心者。初心者はいい本と悪い本の区別付かない(つくぐらいなら初心者でない)。
また、その著者がウソいってるかどうかもわからん。

なので、しかたないのでは?
0644デフォルトの名無しさんNGNG
>>643

わかった! その本を選んだってことは、だれかに薦められたりして選んだ確率が高い
わけだろ? > 初心者
まあ、書評とか2chとかでの「おすすめ」選んだのかもしれんが。

つまり、「柴田望洋みたいなぼけな本えらぶやつは」
1. 頭の悪い友達しかいない
2. 頭の悪いやつが読むような本や2chを読んでいる
ってことだな!

これならあってるだろ?
0645デフォルトの名無しさんNGNG
>>644
おまえも2ch読んでる頭悪いやつだな
0646デフォルトの名無しさんNGNG
まあ、柴田某と林某は力いっぱい避けろ!
(三田某は問題外なので、わざわざいわんが、さすがに買うやついないだろうから)

買うやつはぼけとみなす!
0647デフォルトの名無しさんNGNG
おまえらぜいいんぼけ
0648デフォルトの名無しさんNGNG
わざわざsageてるあたりおまえのほうがぼけ
0649デフォルトの名無しさんNGNG
やっぱ、勇気広しかね。
0650デフォルトの名無しさんNGNG
ここで柴田望洋けなしてる奴の中に何人
柴田より上の実力の持ち主がいることだかw
正直、漏れだけだろwww
0651デフォルトの名無しさんNGNG
> ここで柴田望洋けなしてる奴の中に何人

インド人
0652デフォルトの名無しさんNGNG
> 柴田より上の実力の持ち主がいることだか

っていうか、おまえ、だれにものいってるつもりよ
0653デフォルトの名無しさんNGNG
柴田の本はウソだらけなんて話は、有名じゃん。
まだ買うやついたのかよ! あんな本
0654デフォルトの名無しさんNGNG
でー 639の本は、おすすめなんですか? そうでないんですか? 結局どっちなんですか?
0655デフォルトの名無しさんNGNG
もういい規格書嫁
0656デフォルトの名無しさんNGNG
>>654
自分で買って判断しろ!
すでに1冊読んでいるってことは、もう「初心者」じゃねーんだから判断できるだろ?

ついでに柴田本と比べてみればいい。どっちがまともかは一目瞭然だがな。
0657デフォルトの名無しさんNGNG
柴田某や林某の本は、ほんとあれだけ『粗製乱造』っていう言葉がぴったり当てはまる本は
ほかにないと思う! という感じの本です。
0658デフォルトの名無しさんNGNG
どうせ濫造するなら、もっとマイナー分野まで手がけてほしいな。
0659デフォルトの名無しさんNGNG
IDがほしいな
0660デフォルトの名無しさんNGNG
粗製濫造するってことは、「いいかげんなものをたくさんつくって」おかねをもうけるため
ってことですから、マイナー分野はコスト合わないからやらないでしょうね。

柴田の粗製濫造ぶりは、CよりC++で顕著です。あれはひどすぎ
0661デフォルトの名無しさんNGNG
たしかに、彼はC++ぜんぜんわかってないっぽいね。Cの本は読んでないので知らんが。
0662デフォルトの名無しさんNGNG
まあ、初心者に毛の生えたやつが本書いて売ってる感じだよなあ。 > Cのほう
売れるかどうかは、出版社の営業力の問題だからね。
0663デフォルトの名無しさんNGNG
なんかもうグダグダやなこのスレ
0664デフォルトの名無しさんNGNG
荒らしがいますからね。
0665デフォルトの名無しさんNGNG
企画書嫁だけではこういう事態を収拾できないことは過去を見れば明らか
こういうときは規格そのものを転載するのが良い

C99の規格 6.5.5 6
When integers are divided, the result of the / operator is the algebraic quotient with any
fractional part discarded. If the quotient a/b is representable, the expression
(a/b)*b + a%b shall equal a.
0666ダミアソNGNG
 
0667デフォルトの名無しさんNGNG
最近intって打とうとするとitnになる...
0668デフォルトの名無しさんNGNG
それはやったことないが、retrunならある
0669デフォルトの名無しさんNGNG
strcpyって使わないほうがいいんでしたっけ?
0670デフォルトの名無しさんNGNG
別に問題ない
0671デフォルトの名無しさんNGNG
thx
0672デフォルトの名無しさんNGNG
tnx ぢゃないのか? なんだろ thx
0673デフォルトの名無しさんNGNG
Thanxsの略だから、THの発音を残してTHXだね。
TNXだとトンクスになってしまう。
#あ、2ch的にはあってるのか。
0674デフォルトの名無しさんNGNG
C89 と C99 で挙動が違う場合はよく揉めるんで注釈入れるなりなんなりしといた方がいいんじゃないかな。
0675デフォルトの名無しさんNGNG
ちなみに C99 って現在出回っているコンパイラは対応不十分だから
0676デフォルトの名無しさんNGNG
>673 ハァ?

...まぁマックと呼ぶかマクドとするかって事だけど
0677デフォルトの名無しさんNGNG
tnxってのは初めて見たけど、分かりにくいな。
0678デフォルトの名無しさんNGNG
コマンドライン上で文字列を入力する場合、入力した文字列が次回以降の読み込み時にも残ってしまうんですけど
fflushを使う以外にこれの回避方法ってありますか?
getsとかfgetsでも、配列の大きさ異常のは次回に回されちゃうし
0679デフォルトの名無しさんNGNG
>>677
ttp://www.webholodeck.com/curiosities/abbr.htm#T
0680デフォルトの名無しさんNGNG
"tnx thanx"より"thx thanx"の方が引っかかるページ数は多いな。
引っかかったのが全部が全部そうではないにしろ。
0681デフォルトの名無しさんNGNG
�d�j
0682デフォルトの名無しさんNGNG
"thx thanx" AltaVista found 72 results
"tnx thanx" AltaVista found 10 results
0683デフォルトの名無しさんNGNG
>>669
アフォはやめといたほうがいい
0684デフォルトの名無しさんNGNG
>>678
>fflush

プ

PS. TREBOR THX
0685デフォルトの名無しさんNGNG
ネトゲだと、日本人に多いのは thx。
英語圏の人は ty (= thank you)。
0686デフォルトの名無しさんNGNG
>>684
このヒヒジジイ
0687デフォルトの名無しさんNGNG
ry(略)かと思ったよ
0688デフォルトの名無しさんNGNG
入力バッファのフラッシュはできないかと
0689デフォルトの名無しさんNGNG
ポインターのポインターであるstr5は、
静的メモリーと動的メモリーを保持しており
一次元ポインターは動的メモリーと静的メモリーを
配列としてではなく、まったく個々に指し示し
片方は文字リテラル、片方はソート情報として
リストの亜種を作りたい。文字で、並列処理を
行う理由はchar型が一バイトであるからであると
いう理由だけである。ここまできて、char型一文字を
整数に直す方法がわかりません。

0690デフォルトの名無しさんNGNG
atoiだと思うが文章の意味がわからん
0691デフォルトの名無しさんNGNG
nt main(void){
char str1[5]={'A','B','C','D','\0'};
char str2[5]={'Z','I','J','\0'};
int **str3;
int **str4;
char **str5;
char *temp1;
char *t;
int *num;
int n1,n2;
int i,j;
t=malloc(sizeof(char));
str4=(int**)malloc(sizeof(int*)*10);
for(i=0;i<10;i++)
str4[i]=(int*)malloc(sizeof(int));
for(i=0;i<10;i++)
for(j=0;j<10;j++){
str4[i][j]=i*10+j;
}
for(i=0;i<10;i++){
putchar('\n');
for(j=0;j<10;j++){
printf("%3d",str4[i][j]);
}
}
str3=(int**)malloc(sizeof(int*));
for(i=0;i<10;i++)
str3[i]=(int*)malloc(sizeof(int));
for(i=0;i<10;i++)
str3[i]=(int*)i;
putchar('\n');
0692デフォルトの名無しさんNGNG
str5=(char **)malloc(sizeof(char *)*10);/*-4*/
*str5=(char *)malloc(sizeof(char));
for(i=0;i<10;i++)
str5[i]=(char *)malloc(sizeof(char **));/*48固定調を指し示すポインター*/
num=(int *)malloc(sizeof(int)*10);
temp6=(char *)malloc(sizeof(char *));
/*temp1=str5;は0x431950*/
/*temp2=str5[0];0x4318f0*/
temp1=malloc(sizeof(char )*10);
strcpy(&str5[0],"8");/*YZa*/
strcpy(&str5[1],"5");/*PQR*/
strcpy(&str5[2],"6");/*STU*/
strcpy(&str5[3],"2");/*GHI*/
strcpy(&str5[4],"1");/*DEF*/
strcpy(&str5[5],"4");/*NLO*/
strcpy(&str5[6],"7");/*VWX*/
strcpy(&str5[7],"3");/*JKM*/
strcpy(&str5[8],"0");/*ABC*/
strcpy(&str5[9],"9");/*bcd*/
0693デフォルトの名無しさんNGNG
for(i=0;i<10;i++){
temp1[i]=str5[i];
}
/*temp1[i]=&str5[0][i]に若干の差異*/
/*temp[i]=&str5[i];にすると...個々の異なったこんな文字表示される*/
str5[0]="YZa";
str5[1]="PQR";
str5[2]="STU";
str5[3]="GHI";
str5[4]="DEF";
str5[5]="NLO";
str5[6]="VWX";
str5[7]="JKM";
str5[8]="ABC";
str5[9]="abc";
0694デフォルトの名無しさんNGNG
for(i=0;i<10;i++){
printf("\n%c",temp1[i]);
printf("\n%s",str5[i]);
}
n1=1;
n2=1;
for(i=0;i<9;i++){
for(j=9;j>i;j--){
if(temp1[j-1]>temp1[j]){
*t=temp1[j-1];temp1[j-1]=temp1[j];temp1[j]=*t;
n1=0;
}
else if(n1==0 || n2==0)
n2=1;
if(n1==0){
if(n2==1){
n2=0;
/*イメージ的には、num=atoi(&str5[j]);とします
まとまった。整数が求まりません。*/
}
}

}
n1=1;
n2=1;
printf("%s",str5[num]);
}
for(i=0;i<10;i++)
printf("%c",temp1[i]);
return 0;

}
0695デフォルトの名無しさんNGNG
欝だシヌ
0696デフォルトの名無しさんNGNG
・・・
0697デフォルトの名無しさんNGNG
とにかく、ソートできたらよか
0698デフォルトの名無しさんNGNG
簡易線形リストをつくりたいわけ
0699デフォルトの名無しさんNGNG
なんだこの狂ったコードは
0700700NGNG
 
0701デフォルトの名無しさんNGNG

君はプログラマに向いてないと思うよ。
アパレル関係への就職・転職をお勧めするよ。
0702デフォルトの名無しさんNGNG
だめだなこいつは・・・
ポインターもポインターの配列もなにも理解していない・・・

0703デフォルトの名無しさんNGNG
一から作り直した方が早い。
0704デフォルトの名無しさんNGNG
けど、同じ人間が作りなおしても、
基本的なところを間違っているのでダメだと思うな・・・
0705デフォルトの名無しさんNGNG
以前なにかの本で定数と比較する if 文では定数を左辺に書くといい
というのを見たことがあるのですが、真意はどうなのでしょうか?
たとえば、if (number < 10) と書くのではなく if (10 > number) という具合。

0706デフォルトの名無しさんNGNG
>>705
=の場合をいってるんじゃないの?
比較(==)と代入(=)を間違えた時のために

まぁ今どきのコンパイラなら警告だすけど
0707デフォルトの名無しさんNGNG
If natural is it that "Human Are You", use it.
0708デフォルトの名無しさんNGNG
>>705
その作戦に依存すると、変数同士の比較のときに結局ハマる。
コンパイラに警告ださせ、その警告がでないように直すほうが安全
0709デフォルトの名無しさんNGNG
>>708
その作戦に依存すると、警告ださないコンパイラのときに結局ハマる。
自分がしっかりせにゃならんプロ用の言語ってとこを認識することが最優先。
0710デフォルトの名無しさんNGNG
>>709
出せないコンパイラなんて今どきないと思うけど(笑)
0711デフォルトの名無しさんNGNG
>>709
そういうコンパイラを使うときはlintも併せて使うがよろし
ニンゲン誰だってミスがあるさ…(まさか、この漏れが=と==を間違えるなんて…)
0712デフォルトの名無しさんNGNG
>>710 >>711
お二人とも狭いね
0713>>698NGNG
どうもちょっと、歩いて気分転換してきました。
狂ったソースですいません。
自分の思いを思いっきりぶつけて見たんですが。
0714デフォルトの名無しさんNGNG
警告もlintもないような劣悪な環境だと
if ( (a-b) == 0 ) とか
if ( (a+0) == b ) とかみたいに無理やり左辺を式にするとか自衛するしかないんかな。
まあ漏れはどうせ無縁だからいいけど
0715>>698NGNG
スゲー簡略化してますけど、動けばいいの次元ですから
とりやえずこれどう思います
str5=(char **)malloc(sizeof(char *)*10);/*-4*/
*str5=(char *)malloc(sizeof(char));
for(i=0;i<10;i++)
str5[i]=(char *)malloc(sizeof(char **));/*48固定調を指し示すポインター*/
0716デフォルトの名無しさんNGNG
>>714
そんなときこそ、正規表現検索ですよ。
0717デフォルトの名無しさんNGNG
>>714
だからどうして自分にヤキ入れるという正道をさておいてそういう邪道ばっかり追求するかね
0718デフォルトの名無しさんNGNG
>>717
いや、予防措置の話だし。安全措置なしで綱渡りするのが好きな人はいいけど
(たしかに昔のCはそういうスタイルだった)
ANSI Cからはそうじゃないしな。
0719デフォルトの名無しさんNGNG
>>715
「48固定調」という言葉の意味がわからん
0720>>698NGNG
すいません。可変長でした
正確に言えば、文字リテラルをさします。
0721デフォルトの名無しさんNGNG
>>718
ANSIのどこかに警告を出すような義務規定でもあるのか? それは何ページだ?
0722デフォルトの名無しさんNGNG
>>721
ANSI Cに定義されているということではなく(未確認)、
ANSI C対応以後のコンパイラの流れね。
古いやり方の人も許容する選択肢があるのがCではあるけど
自動化できる部分はしたほうが合理的だしなあ。
0723>>698NGNG
言われると思った・・・汚いソース
英語力がないとか
考えすぎて頭痛い
0724デフォルトの名無しさんNGNG
>>689が解読できません
0725デフォルトの名無しさんNGNG
>>722
強情な人だなあ ( -_-)=3
あなたが自動化すべきといくら主張しても
そうなってない環境はあるわけじゃん
コンパイラの好みはあっていいけど
どこの世界ともわからない人へのアドバイスとして
言うことじゃねえべよ
0726デフォルトの名無しさんNGNG
>>723
ぱっと見て、こんだけ長いんだから、関数に分割しろ。
設計からやり直しだ。
0727>>698NGNG
str5=(char **)malloc(sizeof(char *)*10);性的メモリーを表す
*str5=(char *)malloc(sizeof(char));
for(i=0;i<10;i++)
str5[i]=(char *)malloc(sizeof(char **));病的メモリーを表す

自分の中で、何らかの誤解があるかもしれないから
その辺も踏まえてゆっくり解きほぐしていこう。
静的メモリーは*str5をさし、*str5は動的メモリーをさす
0728デフォルトの名無しさんNGNG
typoに萌えた
0729デフォルトの名無しさんNGNG
>>727
その表現は本当にあっているのか? 言葉がおかしいと伝わらないぞ。

見たところ、str5こそが、何かを指し示すものではないのか?
「メモリーがポインタをさす」なんていう表現は、異常な表現だ。
「ポインタがメモリ(番地)」を指し示すんだぞ? 分かるよな?
0730デフォルトの名無しさんNGNG
>>725
Cなのにそういうツールを導入する手段がない環境があるのね。なんか興味あるなあ。
組み込みのセルフコンパイルかなんか?
0731デフォルトの名無しさんNGNG
組み込みだってgccとか、場合によっちゃVCのコンパイラで単体テストまでやったりするよな。
0732デフォルトの名無しさんNGNG
ポインタ値はメモリアドレス〜、という毎度お馴染みの話題のお時間です。
0733デフォルトの名無しさんNGNG
>>730
そんなの俺に聞かなくたってここの教えて君にでも聞いてみたら?
普段ぐぐってから来いとか言ってたのを逆襲されそうだけど
0734デフォルトの名無しさんNGNG
typedef struct __node{
char name[20];
char tel[20];
struct __node *pointer;
}Node;

Node *p;
int main(void){
Node *p,*head;
head=NULL;

while(p=talloc(),scanf("%s %s",p->name,p->tel)!=EOF){
p->pointer=head;
head=p;
}
p=head;
while(p!=){
printf("%s %s",p->name,p->tel);
p=p->pointer;
}
}
talloc()略
0735デフォルトの名無しさんNGNG
自己参照型を使わず
Node **pointerだけで、書く場合どのようにすればいいか
0736デフォルトの名無しさんNGNG
Node *pは2度宣言していますが、ケアレスミスです
0737デフォルトの名無しさんNGNG
scanfとな…?
0738デフォルトの名無しさんNGNG
空白厨がこないね。
0739デフォルトの名無しさんNGNG
お前は黙ってろ
0740デフォルトの名無しさんNGNG
あげ房はいるけどな
0741デフォルトの名無しさんNGNG
> あげ房はいるけどな

空白あけろよぼけ
0742デフォルトの名無しさんNGNG
> 以前なにかの本で定数と比較する if 文では定数を左辺に書くといい
> というのを見たことがあるのですが、真意はどうなのでしょうか?

それは20年ぐらい前に1度ちょっとだけ流行って、あっというまに廃れたやつです。
最初に流行らせようとしたひとは「そうすれば間違えて=を1個だけ書いたときに
エラーになって便利でしょ?」というのが言いたかったのだが、
「じゃあ、おめー、両方変数だったらどうするんだ?」とか
「!=や<=のときいみめーだろ」といわれて、さんざんだったわけです。

ところがそれから10年ぐらいたって、どこかでそれを聞きかじった三田某が
うれしそーにじまんしたんだな。(つまり彼はその意味も、ダメな意味も理解して
いなかったわけ)。

たぶん、いまだにそんな記述を見かけるとした、その2回め(日本での)のを見たぼけが
書いたんだろうなあ。あたまわるすぎ。
0743デフォルトの名無しさんNGNG
> いや、予防措置の話だし。

っていうか「実際、予防効果なんかない」ってことで廃れたんだよ。
0744デフォルトの名無しさんNGNG
> たとえば、if (number < 10) と書くのではなく if (10 > number) という具合。

何の利点もない。
0745デフォルトの名無しさんNGNG
>>742
> 「!=や<=のときいみめーだろ」
> いまだにそんな記述を見かけるとした、

> あたまわるすぎ。

日本語も満足に書けない割に、偉そうだな。
0746デフォルトの名無しさんNGNG
>>745
おまえだれにものいってるつもりだ?
0747デフォルトの名無しさんNGNG
>>712
仮にその環境に警告を出してくれるコンパイラが無かったとする、
仮にクロスコンパイラも無かったとする。それでも、
何でコードを書く環境とコンパイルする環境が同じであると言う勝手な大前提を持ち出すのですか?
もしかしてコードを持っていく手段が無いの?それはそれですごいけどな(笑
0748デフォルトの名無しさんNGNG
>>745
お前も偉そうだな。
0749デフォルトの名無しさんNGNG
すいません、他の関数を呼び出すにはどうやればいいんですか?

例えばーなんですが
if(i==0){
kansuu(void);
}
って感じでは出来ないのですが。。。
0750デフォルトの名無しさんNGNG
質問以外でageて書く奴は全員厨房だろ
0751デフォルトの名無しさんNGNG
>>749
できないはずがない。
0752デフォルトの名無しさんNGNG
>>751ありがとうございます。これで、合ってるんですね
「エラーE2188 式の構文エラー」
と出るんです。。_| ̄|○ナンテダロ゙…
0753デフォルトの名無しさんNGNG
>>749
呼ぶときにはvoidって書いちゃ駄目。
kansuu();と書く。
0754751NGNG
素でぼけた。
voidはいらないよ。
0755デフォルトの名無しさんNGNG
>>753
オォ、本当だ!なんで書いちゃ駄目なんだろう(´・ω・`)まあそれはおいおい知ってゆくとして…
ありがとうございます。・:゚(゚´Д`゚)゜:・。
0756デフォルトの名無しさんNGNG
>>746
「日本語も満足に書けない」キミに言ってるんだけど、書けないだけじゃなくて理解もできないのか ?

>>748
お前と同じぐらいにな。

>>749
とりあえず、
kansuu(void); ⇒ kansuu();
にしとけ。
0757デフォルトの名無しさんNGNG
> か ?

空白を入れるなよぼけ
0758デフォルトの名無しさんNGNG
>734
リークしてる。
0759デフォルトの名無しさんNGNG
>758
は?
0760デフォルトの名無しさんNGNG
>>749
>if(i==0){
>kansuu(void);
>}

if(i == 0) {
kansuu ();
}
空白開けろよぼけ。
0761デフォルトの名無しさんNGNG
>755
>なんで書いちゃ駄目なんだろう

では聞くが、int func(int num);
を使う時に藻前は
func(int num);
とするのか?
0762デフォルトの名無しさんNGNG
>>760
関数は空白あけるなよぼけ。
kansuu (); ×
kansuu();  ○
0763デフォルトの名無しさんNGNG
>>747
あなたはどうしても、あなた好みのコンパイラを万人に使わせたいわけ?
それこそが身勝手な押し付けでしょうが
仕事の環境は個人的に気に入らないからって
責任範囲も定かでないものをインスコしたり私物を持込んだりは
なかなか勝手にやるわけにはいかないよ
何か要求するにしても同じ環境で黙って仕事できる人とできない人がいたとき
必ずしも口数が多い人が評価されるってものでもない
0764デフォルトの名無しさんNGNG
>>760
予約語の後は空白あけろよぼけ。
if(i == 0) ×
if (i == 0) ○
0765デフォルトの名無しさんNGNG
>>763
一般論を強制と受け取るのは過剰反応では?
0766デフォルトの名無しさんNGNG
>>763
おまいはコンパイラとIDEとエディタの違いを理解してから発言したほうがいい
0767デフォルトの名無しさんNGNG
> if(i==0){

空白あけろよ ぼけ
0768デフォルトの名無しさんNGNG
っていうか、if (a = 0)に警告だしてくれないコンパイラーを使うとしても、
if (0 == a) と書くことの理由にならないんだってば。
0769デフォルトの名無しさんNGNG
test
0770デフォルトの名無しさんNGNG
>768 なんで?
0771デフォルトの名無しさんNGNG
>>768
if()に空白開けるなぼけ。
ディスクのむだだろぼけ。
0772デフォルトの名無しさんNGNG
>771 ってゆーかむしろスペースキーを打つ労力がむだだろぼけ、では?
0773デフォルトの名無しさんNGNG
制御文に空白入れろというのはたまに聞くが、予約語???
0774 ◆iNSvieRh3Q NGNG
よく考えてみればif(a=0)と書かないためにif(0==a)と書くと主張しているやつらは
if(0==a)と書くことを忘れたりはしないのだろうか。
0775774NGNG
名前欄に「#define if(x) if (x)」と書いたらトリップになっちまった
0776デフォルトの名無しさんNGNG
>>773
returnとかsizeofとか括弧を書かなくていい物は
括弧を書くときでも空けるけど、それ以外のキーワードや、
関数などに対しては空けないという事では?
0777デフォルトの名無しさんNGNG
そうなの?
でも、returnはいいけど、sizeofはいちいち括弧を書かなきゃいけない場合と、
書かなくてもいい場合を使い分けているんだろーか。
0778デフォルトの名無しさんNGNG
>>777
普通に使い分けるけど。
型なら括弧必要、値なら不要ってだけじゃん。
0779デフォルトの名無しさんNGNG
long型などCの最初からある型より大きい数値を扱うには
どういう方法があるのでしょうか?
0780デフォルトの名無しさんNGNG
そうか。
いや、使い分けている人見たことほとんど無かったんで。
0781デフォルトの名無しさんNGNG
unsigned long long int でも足りないなら多倍長演算の仕組みを自分で書け ぼけ > 779
0782デフォルトの名無しさんNGNG
sizeofの括弧は、単に全部括弧つけとけば通るから覚えなくても害はないが、
「型なら括弧」という簡単なルールを知ってれば迷うことはないよな。
書いているのが型なのか値なのか自分で迷うことはまず考えられないし。
0783デフォルトの名無しさんNGNG
常識的にif (、とかwhile (とかfor (とかは空けるんだよ。
関数やseizeofは空けない。
それぐらいおぼえとけ ぼけ
0784デフォルトの名無しさんNGNG
>>776
returnにはいつでも「つけない」
sizeofには不要な場合でもいつも「つける」
が正解。
0785デフォルトの名無しさんNGNG
俺はsizeofはつかいわけるがな。
0786デフォルトの名無しさんNGNG
sizeofの上手な使い方としては、
(1) 配列の要素数を調べるのには「使わない」
(2) 変数や構造体のサイズを調べるときには、変数名じゃなく型名をいつも使う
という方法です。おぼえておきなさい。
0787デフォルトの名無しさんNGNG
>>786
詳細キボンヌ。
0788デフォルトの名無しさんNGNG
VC.NETで

struct hoge_t {
int a;
};
long a = 0;
struct hoge_t *b;

b = (struct hoge_t *)a;

ってやったら
warning C4312: '型キャスト' : 'long' からより大きいサイズの ':hoge_t *' へ変換します。
ってワーニングが出ます。
大きさは一緒じゃないんですか?
ちなみにsizeofで struct hoge_t * と long の大きさを出力してみたら同じ4でした。

ちなみに、
b = (struct hoge_t *)&a;

なら警告は出ません。なぜでしょう・・・?
0789デフォルトの名無しさんNGNG
ぼけ > ってワーニングが出ます。

いったい「わーにんぐ」って何だよ! ぼけ! ぼけ!
でなおしてこい
0790デフォルトの名無しさんNGNG
っていうか、そんな代入して何か意味あるのかよ?
やりたいならunionにしろ
0791デフォルトの名無しさんNGNG
longはポインタぢゃないし
0792デフォルトの名無しさんNGNG
> 大きさは一緒じゃないんですか?

じゃあ、int から unisigned intに代入してみろよ
0793デフォルトの名無しさんNGNG
「わーにんぐ」っとかいう言葉を使うやつは
(1)友達が全然いない
か
(2)まわりがぼけばかり
かどっちかだな。
0794デフォルトの名無しさんNGNG
宣言部分だけじゃわからんよ 溜まったバッファの問題かもしれんやろに
0795デフォルトの名無しさんNGNG
>>788
恐らく64bit環境がどうのこうのっていうオプションをONにしてないか?
sizeof(struct hoge_t *)とsizeof(long)の大きさが未来永劫同じであると言う保証が無いってことだろう。
0796デフォルトの名無しさんNGNG
>792 そ-ゆーことぢゃないし
0797デフォルトの名無しさんNGNG
> b = (struct hoge_t *)&a;
> なら警告は出ません。なぜでしょう・・・?

でるわけねーだろぼけ。左辺も右辺もポインターじゃん
0798デフォルトの名無しさんNGNG
>795 ハァ?
0799デフォルトの名無しさんNGNG
>>783
空白うんぬんを説くまえにあんたの「常識」
というものについてまず考えたほうがよくないか?
0800デフォルトの名無しさんNGNG
> そ-ゆーことぢゃないし

いえ、そういうことですよ。intもunisigned intもサイズは4バイトですから。
0801デフォルトの名無しさんNGNG
>800 バカ?
'型キャスト'だろが。"型"だよ"か・た"
0802デフォルトの名無しさんNGNG
文法上の “()” と演算子の “()” を区別できない人が
多数いらっしゃるようです。
0803デフォルトの名無しさんNGNG
>>798
C++でいうreinterpret_castだろ
0804デフォルトの名無しさんNGNG
ポインタを整数型にキャストしたことが無い方が大勢いらっしゃるようで…
0805デフォルトの名無しさんNGNG
>ポインタを整数型にキャスト
逆だが
0806デフォルトの名無しさんNGNG
>>801
unisigned intは型ですよ
0807デフォルトの名無しさんNGNG
> 文法上の “()” と演算子の “()” を区別できない人が

演算子も文法上のものですよ ;-)
0808デフォルトの名無しさんNGNG
日本語をよく分かっていない方でしょう ;-)
0809デフォルトの名無しさんNGNG
>806 だからサイズの話ぢゃね-って
0810デフォルトの名無しさんNGNG
32ビットコンパイラであっても、ポインタが32ビットのサイズである保証はない。
0811デフォルトの名無しさんNGNG
だからサイズの話ぢゃね-って
0812デフォルトの名無しさんNGNG
ちんこ見せろ
0813デフォルトの名無しさんNGNG
>>802
俺もそう思う
演算子とステートメントの区別がついてない人大杉
式と型名の区別がついてない人大杉
もともと違うものを同一視したがる妄想癖がある人大杉
0814デフォルトの名無しさんNGNG
もしかしてまだGWなんだっけ?
0815デフォルトの名無しさんNGNG
>>814
ヒキのお前には分からんか
0816デフォルトの名無しさんNGNG
そ、でも明日からまた仕事
0817デフォルトの名無しさんNGNG
この時間帯はいつもこうだろw
0818デフォルトの名無しさんNGNG
> unisigned int
> seizeof

おまえらぼけはもうこのスレにくるな
0819デフォルトの名無しさんNGNG
>818 よくみちゅけまちたねーえらいねーほめてあげまちゅ
0820デフォルトの名無しさんNGNG
VCの場合は/Wp64オプションを外せば、警告は出なくなるだけの話。
0821デフォルトの名無しさんNGNG
> 演算子とステートメントの区別が

あのー、カッコはステイトメントじゃないですよ ;)
0822デフォルトの名無しさんNGNG
>>821
知ったかぶりしたかったんだろう。わかってやれよ
0823デフォルトの名無しさんNGNG
チェチェンの大統領がテロで爆死するような時代に
お前らはいったい何をやってるんだよ恥を知れよまったく
0824デフォルトの名無しさんNGNG
> お前らはいったい何をやってるんだよ

2chだろ
0825デフォルトの名無しさんNGNG
NY Timesに「ひろゆき」登場
http://www.nytimes.com/2004/05/09/international/asia/09toky.html?ex=1399435200&en=c8bb27cc740761e0&ei=5007&partner=USERLAN
0826デフォルトの名無しさんNGNG
> 32ビットコンパイラであっても、ポインタが32ビットのサイズである保証はない。

そんなコンパイラーはありません。
0827デフォルトの名無しさんNGNG
地名表記のない世界地図を広げて、チェチェンがどこにあるか指をさせる日本人は少ない。
0828デフォルトの名無しさんNGNG
×コンパイラー
○コンパイラ

0829デフォルトの名無しさんNGNG
ププププ
0830デフォルトの名無しさんNGNG
>>826
32ビット版のgccでのクラス関数を示すアドレスのサイズは64bitです。
無知を晒すのはやめましょう。
0831デフォルトの名無しさんNGNG
>>821
まあ例えばキミのように作用対象を読み違えやすい人が自衛策のつもりでしていることが
実は周囲の人々にとっては善意的に見ても滑稽だし、そういう行動の根底にあるやる気のなさや
責任のなすり合いだけは率先するタイプってとこが見え隠れし失望するわけだ
0832デフォルトの名無しさんNGNG
馬鹿ハッケソw
0833デフォルトの名無しさんNGNG
>>830
クラス関数とか言ってる時点で、あんたも五十歩百歩だよ
しかもここはCスレ 痴性を晒すのはやめましょう
0834デフォルトの名無しさんNGNG
メンバ関数へのポインタがなぜ大きいのかも知らなさそうだね
スレ違いスマソ
0835デフォルトの名無しさんNGNG
>>826
クロスコンパイラではざらにあるよな
0836デフォルトの名無しさんNGNG
>>835
あるよな
0837デフォルトの名無しさんNGNG
>>834
VCの場合は32ビットだから、必然性があるわけではない。
知ったかするために、のこのこ出てこなくてもいいぞ。
0838デフォルトの名無しさんNGNG
>>837
バス幅とは何の関係もないよ

推薦図書
↓
C++オブジェクトモデル
内部メカニズムの詳細
著者 : S.B.リップマン
訳 : 三橋二彩子/佐治信之/原田曄
発行 : アジソンウェスレイ・トッパン
定価 : 3、400円
ISBN : 4-8101-8101-4
0839デフォルトの名無しさんNGNG
バス幅の話などしていない。
gccは64ビットだが、VCの場合はメンバ関数のサイズは32ビット。
処理系依存の話を、汎用的な問題と勘違いするな。
0840デフォルトの名無しさんNGNG
>>839
>>830はあんたの発言か?
0841デフォルトの名無しさんNGNG
↑こいつはぼけ
0842デフォルトの名無しさんNGNG
>>839
VCには最適化のオプションにメンバ関数へのポインタをどう扱うかって項目があるのはもちろん知ってるよな?
0843デフォルトの名無しさんNGNG
なんでこんな基本的な知識の問題でこんなに無知な奴が多いんだ。
0844デフォルトの名無しさんNGNG
なんでこんな処理系依存の話をしたがるバカな香具師が多いんだ。
0845デフォルトの名無しさんNGNG
>>842
>メンバ関数へのポインタをどう扱うかって項目
そんな項目など無い。
0846デフォルトの名無しさんNGNG
↑こいつはぼけ
0847デフォルトの名無しさんNGNG
>>844
処理系依存のコードをいかにスマートに書くかってテーマを持っていない
例えばあんたのような世間知らずが多いってことだ
0848デフォルトの名無しさんNGNG
>>835
そうではなく「32bitコンパイラー」なるものは存在しないのだということだ。

たとえば、あるコンパイラーをもってきて「これは何bitのコンパイラー」だと言えるか? ;)
intのサイズが36bit、ポインターは24bit、charは9bitで処理するCコンパイラーは
何ビットだ? ;-)

shortもlongも32bitなのに、intだけ16bitのコンパイラーは何bitコンパイラーだ?

ほら、存在しないだろ? > 32ビットコンパイラー
0849デフォルトの名無しさんNGNG
> VCには最適化のオプションにメンバ関数へのポインタをどう扱うかって項目があるのはもちろん知ってるよな?

どういう選択肢があるんですか?
0850デフォルトの名無しさんNGNG
>>849
スレ違い
こちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1083585833/
0851デフォルトの名無しさんNGNG
すれ違いとスレ違いと環境依存と詭弁のアホばっか
0852デフォルトの名無しさんNGNG
>コンパイラー
たしかにそんな用語は存在しない。
0853デフォルトの名無しさんNGNG
覚えたての知識を自慢したかったんでしょう
0854デフォルトの名無しさんNGNG
>848
>shortもlongも32bitなのに、intだけ16bitのコンパイラー
今時ANSIも知らないようなCコンパイラは氏ね。
0855デフォルトの名無しさんNGNG
>shortもlongも32bitなのに、intだけ16bit

こんなの実在するのか?
0856デフォルトの名無しさんNGNG
存在しない
0857デフォルトの名無しさんNGNG
東京タワーはどんどんかっこ悪くなった
0858デフォルトの名無しさんNGNG
>>857
受信料ちゃんと払えよ
0859デフォルトの名無しさんNGNG
台本は晴れなのに雨、でもどうにかしないといけない
0860デフォルトの名無しさんNGNG
> shortもlongも32bitなのに、intだけ16bit

こんなの実在するのか

実際使っていました。
0861デフォルトの名無しさんNGNG
>860 うそつき
0862デフォルトの名無しさんNGNG
> > shortもlongも32bitなのに、intだけ16bitのコンパイラー
> 今時ANSIも知らないようなCコンパイラは氏ね。

っていうか、むしろ「いまどきANSIだなんて」;-)
実際問題、その実装で、現在の標準規格や89年のANSIに十分適合してるでしょ?
何か問題でも?
0863デフォルトの名無しさんNGNG
あとintが24bitでlongが48bitのコンパイラーも懐かしい
0864デフォルトの名無しさんNGNG
構造体のメンバーのアドレスだけ、ほかのポインターとちがうく扱う実装って、
たとえばどんなのですか? googleしてもみつからなかったのですが...。
どなたか情報がありましたらURLだけでも教えてください.

で、それって標準規格的には問題なんですよね?
0865デフォルトの名無しさんNGNG
>>864
空白あけろよぼけ
0866デフォルトの名無しさんNGNG
どこに?
0867デフォルトの名無しさんNGNG
>>866
「ね」と「?」の間に。
0868デフォルトの名無しさんNGNG
>>862
適合してませんが何か?
long>=16bit>int>=short>8bit
0869デフォルトの名無しさんNGNG
>>865
ぜんぜんおもしろくない。
帰っていいよ。
0870デフォルトの名無しさんNGNG
>>865
いや帰る必要もないよ。氏ね。
0871デフォルトの名無しさんNGNG
>>864
struct afo { int sine; } ;
main()
{
struct afo voke;
int *gaikichi;
printf("%u", sizeof voke);
gaikichi = &voke.sine;
printf(" %u", sizeof gaikichi);
}
こんくらいやってみたか?
int struct afo::*teinou;
teinou = &afo::sine;
はスレ違いだからC++スレ池
0872デフォルトの名無しさんNGNG
最近Cを始めたのですが、調べてもわからないところがありますので、
どうかお知恵をお貸しください。
double Aという変数Aに、キーボードから数値を入力したいので、
while (scanf ("%lf",&A) != 1)
{
printf ("\n入力エラー!");
rewind (stdin);
}
printf ("A = %f",A);
というように書きました。Aにアルファベットなどを入れようとすると
きちんと“入力エラー!”と表示されるのですが、“0.5abc”と入力
すると、“A = 0.5”と表示されます。恐らく実用上は問題ないかも
知れませんが、できれば数値以外を入れるとエラーの表示が返って
くるような方法はないでしょうか?
0873デフォルトの名無しさんNGNG
>872
あなたはこのスレをあまり見たことがないのでしょうね
scanfは延々と論議がなされています。過去ログ見ましょう。
0874デフォルトの名無しさんNGNG
>>872
そういう関数を作んなさい
既存のもので要求を満たせないことこそ開発の動機であり
Cの本来の役割
0875デフォルトの名無しさんNGNG
#include <stdio.h>
int main(int argc, char *argv[])
{
 char *p;

 p = argv[1];

 while(*p) {
  printf("%c", (*p)+1);
  p++;
}

return 0;
}

引数で入力された文字列に1を加えて出力するプログラムなんですが、
どうもポインタの部分がしっくりきません。
p = argv[1];
の部分なんですが、普通はpに代入するのはアドレスのはずですよね。
でもargv[1]は、引数で代入された文字だと思うんです。
だから
*p = argv[1];
だろうと思ったんですが、これだとエラーが出てしまいました。どこを勘違いしているんでしょうか?
0876デフォルトの名無しさんNGNG
>>875
argv[1]はポインタだ。
0877デフォルトの名無しさんNGNG
なやんでないでぇ、しゃべっちゃえ!
0878デフォルトの名無しさんNGNG
argvはポインタ配列。
argv[1]はその1番目の要素。
0879デフォルトの名無しさんNGNG
>>878
配列ぅ? んじゃargv++はエラーだなw
0880875NGNG
ああ、それ自体がポインタなんですか。
ってことは、while(*p) の部分は多重間接参照とやらを利用してるってことですね?
「ポインタであるargv[1]のポインタが存在するかどうか」という認識でいいんでしょうか。
0881デフォルトの名無しさんNGNG
>>875
Cに文字列を文字列として扱う手段はない。char型へのポインタかchar型の配列かで扱うしかない。
引数で代入された文字列は結局char型へのポインタとなっている。
875の例ではchar *argv[]つまりcharへのポインタの配列となっている。
つまりargv[1]みたいに[ ]をつけたら中身はcharへのポインタになる配列と言う意味。
/*875はこの行読むな(実際には関数の仮引数なんでcharへのポインタへのポインタだけどとりあえず無視)*/
p = argv[1];
これは当然charへのポインタの型のpにcharへのポインタの型になるargv[1]を代入しているんだから無問題。
0882デフォルトの名無しさんNGNG
char *argv[]がchar **argvと同じものだと分かっていないんだろう。
0883デフォルトの名無しさんNGNG
>>873
>>874
確かにwebで調べると、scanfは初心者には便利な関数だけど、一般的には
あまり使われず、他の関数を組み合わせて代用する方がいいとの記述は目に
していました。やはり、自分の要望にあった関数を別途作成した方がいいよう
ですね。まずは、その関数を作ることからはじめたいと思います。

助言いただき、ありがとうございました。
0884デフォルトの名無しさんNGNG
#include<stdio.h>

double avg(double *kaz);

int main(void)
{
double num[]={1.2, 3.4, 5.6, 7.8, 9.0};
printf("%lf",avg(num));;
return 0;
}

double avg(double *kaz)
{
double tmp=0;
int a=0;
while(*kaz){
tmp=tmp+kaz[a];
a++;
}
return tmp/5;
}
配列を使って浮動小数点数の平均値を求めるプログラムを作ってみたんですが、
コンパイルはできてもエラーが出て実行できません。
どこがいけないんでしょう?
0885デフォルトの名無しさんNGNG
>>884
ループの終了条件
0886デフォルトの名無しさんNGNG
*kazはkaz[0]、kazはnum
つまり、条件はwhile(num[0]){}。
いつまで経っても終わらないのは分かるよな?

あと、文字列は\0でターミネイトされるけど、
普通の配列は終端になにかキャラクタがつくことも無いし、
サイズ情報も通常の手段でユーザーから見える場所に保存される事はない。
0887デフォルトの名無しさんNGNG
>884
>int a=0;
>while(*kaz){
>tmp=tmp+kaz[a];
>a++;
>}

int a;
for(a=0; a<5; ++a) tmp=tmp+kaz[a];

0888888NGNG
 
0889デフォルトの名無しさんNGNG
> long>=16bit>int>=short>8bit

そんな規定には、89年のANSIのときにも、
現在の標準規格にもありませんよ。

また知ったかぶり君だな ;-)
0890デフォルトの名無しさんNGNG
> while (scanf ("%lf",&A) != 1)

だーかーらー
scanf使うなって、何回言ったらわかるんだよ! おめーは
0891デフォルトの名無しさんNGNG
>  while(*p) {

くーはくあ か ろ! よ ぼ け!

何回言ったらわかるんだよ! おめーは
0892デフォルトの名無しさんNGNG
>>889
see limits.h
0893デフォルトの名無しさんNGNG
> printf ("\n入力エラー!");
> rewind (stdin);

くーはく あ け る な よ! ぼけ
何回言ったらわかるんだよ おめーは!

あのなー、空けるなっていうところにあけて、
あけろっていうところにわざわざあけず、
わざとかよ てめーは!
0894892NGNG
あ、よく見たらデタラメだな。
0895デフォルトの名無しさんNGNG
> p = argv[1];
>
>  while(*p) {
>   printf("%c", (*p)+1);
>   p++;
> }

なんでforにしねーんだよ てめーは!
0896デフォルトの名無しさんNGNG
> > shortもlongも32bitなのに、intだけ16bitのコンパイラー
>何か問題でも?

オイオイ short<=int<=long でなきゃダメダロ
0897デフォルトの名無しさんNGNG
892も知ったかぶりくんだな。
limits.hには「その実装でどうなってるか」の最大・最小値等が規定されているにすぎない。
そんなこともしらねーでえらそうにでてくるなよ ぼけ
でなおしてこい!
0898デフォルトの名無しさんNGNG
voidとみた。
0899デフォルトの名無しさんNGNG
> オイオイ short<=int<=long でなきゃダメダロ

規格書読めよ。そんな規定はどこにもねーだろ ぼけ
0900デフォルトの名無しさんNGNG
>>898
いえ、mainはintですよ。
mainをvoidにしたがるやつは厨
0901デフォルトの名無しさんNGNG
> printf("%lf",avg(num));;

おめー、このセミコロンは何のつもりだよ!
カンマの後ろに空白あいてないだろ!
0902デフォルトの名無しさんNGNG
voidではなさそうだ。
0903デフォルトの名無しさんNGNG
> for(a=0; a<5; ++a)

くーはくあけろ ぼけ

それに「5」とかマジックナンバー書くな。
sizeofにするか#defineにしろ
0904デフォルトの名無しさんNGNG
sizeofは使えないだろ。
0905デフォルトの名無しさんNGNG
>sizeofにする

この文脈では使えませーん。ばーか
0906デフォルトの名無しさんNGNG
#define MAX 5

double avg(double *);

int main()
{
 double num[MAX] = {1.2, 3.4, 5.6, 7.8, 9.0};

 printf("%lf\n", avg(num));
 return 0;
}

double avg(double *n)
{
 double total;
 int i;

 total = 0.0;
 for (i = 0; i < MAX; i++)
  total += n[i];
 return total / MAX;
}
これでいいんだろ?
0907デフォルトの名無しさんNGNG
void2だな。
0908デフォルトの名無しさんNGNG
> sizeofは使えないだろ。

使えるだろ このとーしろめ
0909デフォルトの名無しさんNGNG
だったらいっそグローバル変数にしちゃう

まぁもれなら配列の要素数をavg()のパラメータに追加するが
0910デフォルトの名無しさんNGNG
main()
{
 double num[MAX] = {1.2, 3.4, 5.6, 7.8, 9.0};
 double total;
 int i;

 total = 0.0;
 for (i = 0; i < sizeof(num); i++)
  total += num[i];
 printf("%lf\n", total / sizeof(num));
}
たしかに、こりゃ関数にわける意味なかったもんな(わけたほうがよけいによみにくい)
0911デフォルトの名無しさんNGNG
規格書は持ってないから分からないけどK&Rには

shortとintは少なくとも16ビット、longは少なくとも32ビット、short
はintより長くてはならず、intはlongより長くてはいけないということである。

と書いてあった。
long>=32bit>=int>=short>=16bit
かつ
long>short
って言う事かな。

反論があるなら、規格でデータサイズについて言及されてるところの引用よろしく。
0912デフォルトの名無しさんNGNG
> 規格書は持ってないから分からないけど

じゃあ読んでから言えよ ぼけ
0913デフォルトの名無しさんNGNG
>かつ
>long>short

これは要らなかったな。
0914デフォルトの名無しさんNGNG
>>912
だから、引用してくれよ。K&R 2ndは一応信用に足るソースだろ?

規格で違う事が書かれてるなら、そこを引用してくれよ。
0915デフォルトの名無しさんNGNG
>908 どーした?
0916デフォルトの名無しさんNGNG
> K&Rには
(中略)
> short はintより長くてはならず、intはlongより長くてはいけないということである。

そんなことかいてねーだろ ぼけ。ちゃんと読んでないか、誤訳してある本を読んでるか
どちらかでは? ほんとにK&Rもってるのか? 石田晴久のにせもののほうじゃねーよな?
0917デフォルトの名無しさんNGNG
> K&R 2ndは一応信用に足るソースだろ

とかえらそうに言うやつに限って持ってないんだよな。
日本語でかかれたぱちもんだったり ;-)
0918デフォルトの名無しさんNGNG
おい
> 32bit>=int

こりゃいくらなんでもまちがいあろ
おれみたいなしろーとでもわかるぞ
0919デフォルトの名無しさんNGNG
>>916
ああ俺の持ってるこれは偽者だったか、すまんかった。
一応P44 2.2 データ型とサイズのところに書いてあるんだけどな。
0920デフォルトの名無しさんNGNG
void Jr.
0921デフォルトの名無しさんNGNG
>>918
うん、そこはバグだな。
修正しといてくれ。
0922デフォルトの名無しさんNGNG
> 一応P44

K&RのP44にはそんなことかいてねーぞ
0923デフォルトの名無しさんNGNG
>>920
なんでもvoidに見えてしまうこわがりすぎー君
0924デフォルトの名無しさんNGNG
>>923
void main(void argc, void **argv)
{
void i, j;
...
0925デフォルトの名無しさんNGNG
>>922
だから、俺の偽者K&R 2nd訳書のP44に書いてあるんだよ。
0926デフォルトの名無しさんNGNG
>>924
そっちのvoidじゃねーだろ
0927デフォルトの名無しさんNGNG
にせものK&Rって、
Kusakabe & Reiko ですか?
0928デフォルトの名無しさんNGNG
JIS X3010 : 2003 (ISO/IEC 9899 : 1999)
5.2.4.2.1 整数型の大きさ <limits.h> 次に列挙する値は
(中略)
これらの処理系定義の値は,それぞれの項目の右に示してある値と
同じ符号をもち、その値以上の大きさ (絶対値) をもたなければならない。

− 型 short int のオブジェクトにおける最小値
    SHRT_MIN   -32767  // -(2^15-1)
− 型 short int のオブジェクトにおける最大値
    SHRT_MIN   +32767  // 2^15-1
− 型 int のオブジェクトにおける最小値
    SHRT_MIN   -32767  // -(2^15-1)
− 型 int のオブジェクトにおける最大値
    SHRT_MIN   +32767  // 2^15-1
− 型 long int のオブジェクトにおける最小値
    SHRT_MIN   -2147483647  // -(2^31-1)
− 型 long int のオブジェクトにおける最大値
    SHRT_MIN   +2147483647  // 2^31-1
0929928NGNG
あ、莫迦だ…全部 SHRT_MIN でやんの。
上から
  SHRT_MIN
  SHRT_MAX
  INT_MIN
  INT_MAX
  LONG_MIN
  LONG_MAX
0930デフォルトの名無しさんNGNG
>>929
バーカ
0931デフォルトの名無しさんNGNG
>>928
そこに書いてあることは今回関係ねーだろ
shortは16bit以上
longは16bit以上
longは32bit以上
って書いてあるにすぎないんだから、両方の言っていることとくいちがってはいなんだし

少しは論点考えろよ ぼけ
0932デフォルトの名無しさんNGNG
long->int
0933デフォルトの名無しさんNGNG
自分の書いた文章くらい見直そうyp!
0934デフォルトの名無しさんNGNG
longちんこ
0935デフォルトの名無しさんNGNG
unsigned long long ちんこ;

Error: あなたのはちがいます。
0936デフォルトの名無しさんNGNG
なんだよ。だれもK&Rの本物もってねーのかよ。結局。

偽物うんぬんいってやつは持ってるんだろ?
どこいったんだ? 逃げたのか?
0937デフォルトの名無しさんNGNG
知ったかが多いからなァ。
0938デフォルトの名無しさんNGNG
B&D持ってるヤツ出てこいよ
0939デフォルトの名無しさんNGNG
っていうか、K&Rさえもってねーのかよ
おれでさえがもってるぞ!
あ、会社においてるから、ここにはないけど。
0940デフォルトの名無しさんNGNG
K&Rごときでこわりすぎなんだよ てめーら

K&Rぐらいが怖くて読めないやつが、規格書読めるわけねーだろ

なのになんで規格うんぬんの知ったか論議してるんだよおめーら
0941デフォルトの名無しさんNGNG
そろそろ卒業するべきだということに気付いた。遅すぎた。
0942デフォルトの名無しさんNGNG
B&Dって何?
0943デフォルトの名無しさんNGNG
>>936
>>916のことか>>919のことかはっきりしてくれ。
どっちも上げてるから916=936なのか判断できん。
0944デフォルトの名無しさんNGNG
どっちもだろ?
0945デフォルトの名無しさんNGNG
>>942
Brian and Dennis のことだと思われ
0946デフォルトの名無しさんNGNG
マンドクセ。

6.3.1.1 算術オペランド - 論理型,文字型及び整数型
6.3.1.8 「通常の算術型変換
0947デフォルトの名無しさんNGNG
おお、ファンです! > ブライアン・メイ
0948デフォルトの名無しさんNGNG
リッチーの演奏は何年たっても古くさくなくていいなあ。
0949デフォルトの名無しさんNGNG
>>940

しかたねーだろ
「作ってわかるCプログラミング」ぐらいの入門書でもコワイ人たちですから。
K&Rなんて怖くて読めないのが当然!
0950デフォルトの名無しさんNGNG
intもshortもlongも全部64bitな環境なら知ってるなあ。
(いま使っているのがそれ)
そのかわりlong long intも64bitしかないのが難点!
0951デフォルトの名無しさんNGNG
すみません。
会社でCのコンパイラーを作っているのですが、
(C++コンパイラーでもあるんですが、わたしの担当はパーサーなので)、

営業サイドから、JIS X 0208の1区1点の空白(いわゆる全角空白)も、
ふつうに使えるようにしてくれという要求があって、
それは1か月かけて退けたのですが、
(あ、もちろん、" "の中やコメント中ではもともと使えますよ!、int a;のtとaの間とか、
インデントとかそう言う箇所の話です)、

こんどは、バックスラッシュnとかのところに「円記号も使えるようにしてくれ」と
いう要求が来ました!!!!
(あ、言い忘れましたが、そのコンパイラーはUTF-8でソース書けるんです)
どうやってこの要求を粉砕したらいいでしょうか?
ご助言をお願いします。
0952デフォルトの名無しさんNGNG
要求を粉砕したいなら、それはマ板の領分
0953デフォルトの名無しさんNGNG
いや、ム板の領分だろ。
0954デフォルトの名無しさんNGNG
>shortとintは少なくとも16ビット、longは少なくとも32ビット、
>shortはintより長くてはならず、
>intはlongより長くてはいけない

K&R以外にも見かけるが、
元ネタは...
0955デフォルトの名無しさんNGNG
>>954
肝心なところで言い淀むな
0956デフォルトの名無しさんNGNG
浮動小数点の定数(a)と(b)が定義済みで、例えば pow( a,b ) を定数として使いたいんですができますか?

//例えば、
#define pow_ab pow(a,b)
double c = pow_ab * 2.0;
//↑この行で pow 関数が呼ばれずに定数が入るようにしたい
0957デフォルトの名無しさんNGNG
何か元ネタがあるんですか? > 954
0958デフォルトの名無しさんNGNG
> pow( a,b ) を定数として

空白あけるなよ ぼけ
0959956NGNG
この行でというか、
pow関数が実行時にいっさい呼ばれないようにしたいということです。
0960デフォルトの名無しさんNGNG
> pow(a,b)

空白あけろよぼけ
0961956NGNG
>>958
なんかわからないけどすいません。
0962デフォルトの名無しさんNGNG
>>959
無理、pow(a,b)の結果をコピペして定数として貼り付けろ。
0963956NGNG
>>962
なるほどやっぱりそうですか。
こんな時間にすぐ解決して助かりました。
ありがとうございます。
0964デフォルトの名無しさんNGNG
簡単じゃん。
計算結果をかいておく!
式はコメントに
#define FOO 2.00 // pow(1.41421456, 2)

これで、何か問題でもあるわけ?

使うところではどうせFOOとしかかかんのだろ?
0965デフォルトの名無しさんNGNG
っていうか、
実際にどんな式というか値を書きたかったのか書けよな。
それぐらい書くのが礼儀だろ!
0966956NGNG
>>965
ゲームなんかで、1秒間にF回ループをまわすようなケースなんですが、
そのなかで1秒あたりN倍になってほしいような計算があるとすると、
ループ1回分の計算は a = a*pow(N,1.0/F) としたいわけです。
で、これを実行する環境では pow を(初期化時にも)実行したくないわけです。

このときの F は後で変更する可能性があるし、
N は他人が変更するので、マクロで済めば…と思ったわけです。
0967デフォルトの名無しさんNGNG
>>966
どうしてもというならCだけで完結させずに、Perlなどのスクリプトを使って
設定ファイルからヘッダを生成してやるような形がいいかも。
0968デフォルトの名無しさんNGNG
> ゲームなんかで、1秒間にF回ループをまわすようなケースなんですが、
> そのなかで1秒あたりN倍になってほしいような計算があるとすると、
> ループ1回分の計算は a = a*pow(N,1.0/F) としたいわけです。

だったらdefineで定数じゃなくって、変数にいれろよな
0969デフォルトの名無しさんNGNG
ループの外で変数にいれときゃ何も問題ないだろ?
0970デフォルトの名無しさんNGNG
もしかして
a *= foo;
の計算で、fooが変数より定数のほうが「速い」と思い込んでいるやつだったりするのか?
doubleでも。


あ、どうしても「1回しか値を設定しない」変数だということを強調して意識したいなら、
cons doubleと宣言すればいいだけ。
コンパイラーによっては、関数内のローカルで宣言しても別の場所に置かれてしまい、
それがコーディング規約からはずれる場合もあるがな。
0971デフォルトの名無しさんNGNG
3ヶ月前からCをはじめたものです

やさしいC という本で勉強していましたが全体的に浅く感じたので参考書を新たに買いました

それはsine cosine など出てくるのですが、高校でほとんど勉強してない私にはさっぱりです

math.h などは現場でも使ってらっしゃるのでしょうか? 教えてください
よろしくおねがいします
0972デフォルトの名無しさんNGNG
>>951
よくわからんが、要するに非標準拡張を作りたくないってことか?
俺、クロスを色々使ってみて思うんだが、規格に盲従するだけが必ずしも善じゃない。
もっとも今回、お宅さんの話を聞いた範囲では独自言語からCへのトランスレータを作れば済むように聞こえるが・・・。
0973デフォルトの名無しさんNGNG
> 参考書を新たに買いました

だからその本の名前を書けよ! ぼけ

それ書かなきゃ何の意味もねーだろ
0974デフォルトの名無しさんNGNG
>>972
拡張なんだったら規格はすでにはずれているわけだから、
そうではなく、「ださい拡張」はしたくないってことだろ?
規格以上のなにか拡張するなら、スマートなものならつけたしたいが、
ださいものつけるぐらいなら標準規格だけつかえたほうがまだまし
0975デフォルトの名無しさんNGNG
math.hを使うかどうかっていうか、
浮動小数点数や三角関数を使うかどうかってことだが、
「現場で使うか」が意味不明だ。

そういうのを使う現場では使うし、使わない現場ではまったくつかわない。

printfさえつかわない現場は多いな。
まあ、場所によるわけだ。
どういう「現場」かを限定せずに質問するのは無意味。

まあ、どんな場所でも絶対使わないのがscanfだ。
そんなのを乗せている本はその時点で失格。
0976デフォルトの名無しさんNGNG
>>975
じゃ、ISOの規格票も失格だなw
0977デフォルトの名無しさんNGNG
あたりまえだろ
0978956NGNG
>>970
いや、単に実行時にpow等の数学関数を使うことが許されない環境なんです。
0979デフォルトの名無しさんNGNG
gets(str);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0980デフォルトの名無しさんNGNG
>>977
ま、せいぜい不買運動でもやってろや
0981デフォルトの名無しさんNGNG
新スレ立ててくる。
0982デフォルトの名無しさんNGNG
新スレ
http://pc5.2ch.net/test/read.cgi/tech/1084138965/
0983デフォルトの名無しさんNGNG
>>956
pow()関数呼べないのならループで計算するとか手はあるだろ

そもそもリアルタイム処理で実数演算が問題になるのなら、
固定小数点にするとか考えた方がよくないか?
0984デフォルトの名無しさんNGNG
どこにもリアルタイム処理なんて書いてないじゃん・・・?
0985デフォルトの名無しさんNGNG
ファイルポインタのアドレスを関数に渡す場合ってどうすればいいのかな?
↓だと落ちちゃうよ(´・ω・`)ショボーソ

void file_open(FILE *fp);
int main(void){
 FILE *fp;
 file_open(fp);
 fclose(fp);
 return 0;
}
void file_open(FILE *fp){
 if ((fp = fopen("smpl.txt", "r")) == NULL) {
 printf("file open error!!\n");
 exit(1);
}
}
0986デフォルトの名無しさんNGNG
>>985

void file_open(FILE **fp);
int main(void){
 FILE *fp;
 file_open(&fp);
 fclose(fp);
 return 0;
}
void file_open(FILE **fp){
 if ((*fp = fopen("smpl.txt", "r")) == NULL) {
 printf("file open error!!¥n");
 exit(1);
}
}

それ以前に、普通に戻り値で返した方が良くないか?
0987デフォルトの名無しさんNGNG
を、ポインタのポインタ使うんだね。アリガ�d

たとえば↑のfile_open()で開いたファイルを他の関数で使う時とかは、
ファイルポインタを引数で渡さないと無理なのかなと思ったんだけど…他にイイやり方あるのかな?
後はグローバル宣言てのしか思いつかない…(つД`)ヘタレでスマソ
0988デフォルトの名無しさんNGNG
>>987
そんなときはグローバルでいいと思われ。
それ以前に、キミは、>>986 の最後の1行を見落としてないか?
0989デフォルトの名無しさんNGNG
そか、グローバルでもいいんだね。�dクス
戻り値使えば問題無いすね、ボケてますた(´・ω・`)ショボーソ
0990デフォルトの名無しさんNGNG
  ∧_∧
 ( ´∀`)< ぬるぽ
0991デフォルトの名無しさんNGNG
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>990
 (_フ彡        /
0992デフォルトの名無しさんNGNG
┌――─┴┴─――┐
│ セルフサービス .│
└―――┬┬─――┘
        ││   ./
      ゛゛'゛'゛ /
         /
     | \/
     \ \
      \ノ

ぬるぽはセルフサービスになりました。

使用方法は以下のようになります
     ∧
    <  >_∧
= ()二)V`Д´)<ぬるぽ
    \ヽ ノ )
    ノ(○´ノ  ガッ
   (_ノ(__)
0993デフォルトの名無しさんNGNG
ではさっそく
     ∧
    <  >_∧
= ()二)V`Д´)<ぬるぽ
    \ヽ ノ )
    ノ(○´ノ  ガッ
   (_ノ(__)
0994デフォルトの名無しさんNGNG
私も
     ∧
    <  >_∧
= ()二)V`Д´)<ぬるぽ
    \ヽ ノ )
    ノ(○´ノ  ガッ
   (_ノ(__)
0995デフォルトの名無しさんNGNG
>>951
プリプロセッサで何もオプションを指定していないと勝手に
円記号からバックスラッシュへ変換するようにしてはどう?
(もちろん文字列中ではやらない)
イメージ的には#define ¥ \ のような感じ
全角スペースもそんな感じで半角化する方法でも対処できたはず

でもプリプロセッサ行きにするとそれはそれで話が面倒になる?
0996デフォルトの名無しさんNGNG

     ∧
    <  >_∧
= ()二)V`Д´)<ぬるぽ
    \ヽ ノ )
    ノ(○´ノ  ガッ
   (_ノ(__)
0997デフォルトの名無しさんNGNG
(・∀・)シイ!!
0998デフォルトの名無しさんNGNG
(・∀・)ゲン!!
0999デフォルトの名無しさんNGNG
(・∀・)ゴ!!
1000デフォルトの名無しさんNGNG
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。