1read 100read
2012年6月プログラム366: 【初心者お断り】ガチ規格準拠C専用スレ Part134 (206) TOP カテ一覧 スレ一覧 2ch元 削除依頼
Java ネットワークプログラミング 【教えて!】 (607)
関数型言語Part5 (857)
IS<インフィニット・ストラトス>総合 (778)
VB6でLinuxを作る方法を教えてください!! (203)
[Tips]Borland C++Builder ちょいテク No.01 (422)
3Dアルゴリズム全般 (427)

【初心者お断り】ガチ規格準拠C専用スレ Part134


1 :09/06/28 〜 最終レス :12/06/26
このスレは標準C規格や規格に合致した移植性の高い記法・技法に関するスレです。
C言語初心者の初歩的な質問、GUIなどの標準Cではできない事の質問、
ソース丸投げ、宿題、書籍 などは専門の別スレッド↓があるのでそちらへ。
C言語なら俺に聞け(入門篇) Part 49
http://pc12.2ch.net/test/read.cgi/tech/1244297476/
【初心者歓迎】C/C++室 Ver.66【環境依存OK】
http://pc12.2ch.net/test/read.cgi/tech/1243440528/
C/C++の宿題片付けます 128代目
http://pc12.2ch.net/test/read.cgi/tech/1245853701/
【書き込む前に】
・まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
・質問する前には最低限検索を。
・エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。
【参考文献】
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/250-7563469-9920244
【このスレのログ】
前スレ:http://pc12.2ch.net/test/read.cgi/tech/1201153965/
他の過去ログ:http://nssearch.hp.infoseek.co.jp/clang/
【このスレ住人としての心得】
わざとスレ違いあるいはごく低レベルな質問を繰り返して
流れを妨害する荒らしがいます。適当に誘導して放置してください。

2 :
>>1

3 :
いちょつ

4 :
「構造体オブジェクトへのポインタは、適切に変換すれば、その先頭メンバを指す。
更に、逆も成り立つ。」
とありますが void* へのキャストを経由して変換しても問題ありませんか?
「与えられた境界調整をもつオブジェクトへのポインタは、同じか、より制限の弱い
境界調整を持つオブジェクトへのポインタに型変換して、再び元に戻してもよいこと
を保証する。その結果は、元のポインタと比較して等しくなければならない。」
これは最初の型と戻した型が同じ場合ですよね。

5 :
>>1

6 :
>>4
1. yes.
2. yes.

7 :
**argvって変更してもいいの?

8 :
だめ

9 :
たしか、絶対駄目ではないが、
それなりに自己責任。

10 :
ダメならconst修飾させられるだろうな

11 :
>>10
過去との互換性でconstをつけられなかったのかもしれない。
いずれにしても、環境依存だと思われ。

12 :
お前ら嘘言うなよ
argvは変更していい
ちゃんと規格で保証されてる

13 :
だいたい「駄目じゃないけどそれなりに自己責任」とか
「・・・だろうな」とか適当なこと言ってて恥ずかしくないのか
初心者はスレタイ嫁

14 :
レスポンスする人は、どの規格書のどのセクションに書いてあるかを示してから、レスポンスする。 (次からテンプレ)
Rationale for American National Standard for Information Systems Programming Language C
2.1.2.2 Hosted environment
には特に書かれていなかった。よって、C89では、変更してはならない。
# 探し漏れてしまったのかもしれないが。
ISO/IEC 9899:1999 (E)
5.1.2.2.1 Program startup
2 - The parameters argc and argv and the strings pointed to by the argv array shall
be modifiable by the program, and retain their last-stored values between program
startup and program termination.
とあり、C99では変更してもよいことになっている。
ISO/IEC 9899:201x Committee Draft - August 11, 2008 WG14/N1336
でも同様のセクションに同様のことが書かれている。

15 :
C89の仕様書って、今手に入れるにはどうしたら?

16 :
ANSIやISOは知らないけど、JISだと改訂された規格は
そもそもなかったことになるので、公式なところからはもう手に入らない。
古書マーケットに流れてるのを捕まえるとかしかないと思う。
まあ見るだけならそれなりの図書館行けば収蔵されてるだろうけど。

17 :
>>14
そりゃ Rationale には書いてないだろう
規格書の方には Progarm startup の節に同じことが書いてある
ので C89 でも書き換えていい

18 :
>>17 確かにおっしゃる通り。ANSI Cには
2.1.2.2 Hosted environment
Program startup
に全く同じことが書かれていた。
ということで、C90でもC99でもC1xでも変更しても良いことになっている。

19 :
単なる仮引数なのだから、禁止する規則がない限り
書き換えてよいと解釈するべきだろう。

20 :
スタートアップがROM化されてる
可能性があるのだから、書き換えは
自己責任だろ。

21 :
ホスト環境とフリースタンディング環境の区別が付くようになってから書き込んでください

22 :
そういや、ユーザ定義関数の仮引数に代入してもいいってのは
どこに書いてあるんだっけ?

23 :
>>21
区別はわかってるつもりですが、
問題がありますか?
>>19
ちなみに>>7は、仮引数自体じゃなくて、
それがさす先(**argv)の変更を聞いて
いるようですが。

24 :
> 2 - The parameters argc and argv and the strings pointed to by the argv array shall
> be modifiable by the program, and retain their last-stored values between program
> startup and program termination.
なんでargcとargvはmodifiableでなければならないとあえて明示してるのか?
「他で制限されてない限り、仮引数はmodifiableである」というのが正しければ、
"the strings pointed to by the argv array"についてのみ言明すればよかったはず。

25 :
> 「他で制限されてない限り、仮引数はmodifiableである」というのが正しければ、
そうは書いてないの?

26 :
>>25
>22が上で聞いているが、そういう記述はない。
>19の解釈を採用すれば問題ないが。

27 :
関数の引数はローカル変数扱いだろうが。

28 :
>>27
規格へのポインタがヌルだよ

29 :
>>24
main関数はいろいろ特別だから、
明記する必要があるのでは。
たしか、ユーザーが呼び出すのも
厳密にはダメだよね。

30 :
Cではmain再帰は特に禁止されてない。C++では駄目だけど。

31 :
だからそれがどこに書かれているのか示してくれと何度言えばわかるんだ

32 :
特に禁止されてない。つまり何も書いてない。

33 :
C++での話だ

34 :
ここはCの規格スレ

35 :
だったら言うなってんだ

36 :
スレ違いの話題は他所でやってください

37 :
スレ違い

38 :
>>30 Cでは禁止されていないが、C++では禁止
>>31 C++で禁止されていることはどこに書かれている?
>>32 Cでは禁止されてない
>>33 いやいや、C++の方
>>34 ここCスレだからそれはどうでもいい
>>35 ???<ここが分からん

39 :
>>38
34と35は投稿時刻が近いから、35は34を見ず、33に対してC++の話はすんな、と言っているのではないだろうか。

40 :
C言語をはじめたばかりであまりわからないのですが、
ビットシフトはなんの役に立つのでしょうか?

41 :
ビットをシフトするのに役立つ

42 :
>>40
そのコピペを作るのに役に立った

43 :
>>1

44 :
あげ

45 :
c99の書式で解説しているcの入門書はありまつか

46 :
入門レベルでC89とC99で違うようなところってあるかな?

47 :
boolean型
宣言時の暗黙の型の禁止
変数宣言の位置
などは最初から覚えたほうがいい希ガス

48 :
C89とClean Cはどこが違うの?

49 :
Clean Cって?

50 :
http://www.amazon.co.jp/gp/product/product-description/4434124234/ref=dp_proddesc_0?ie=UTF8&n=465392&s=books
Clean C----規格Cと規格C++の部分集合----

51 :
T **からvoid **へのキャストは規格上できるんだっけ(Tはvoid以外)

52 :
いいえ
void*だけ

53 :
ありがとうございます
つまり、T **からvoid *へのキャストはできる(その後、T **にキャストしなおすことも)
なぜvoid *があるのにvoid **にキャストしようとしたのか理解に苦しむ人がいた
っていうか僕だった

54 :
まあvoid *型というのはvoid型と違って具体的に存在する型なので、
void *を指すポインタの型としてvoid **型は使うからね。

55 :
void * を指すポインタの型は void * ではないでしょうか。

56 :
>>55
普通に考えてvoid**だろうが。もちろんvoid*に暗黙的に変換することは可能だが

57 :
はたしてそうだろうか

58 :
ということにしたいのですね。
 ヘ_ヘ
ミ ・ ・ ミ
 ( ° )〜

59 :
いいえ事実です.

60 :
struct foo_t f = {};
これでfの各メンバが初期化される保証はありますか?

61 :
>>60
空のイニシャライザは認められない。
{0} などと最低一つは中身を書く必要がある。

62 :
>>61
どうも。
{}でコンパイルできちゃったけどこれはGCCの拡張なのね

63 :
infとnanについて聞きたいんですけど
infでない正の実数xに対して
x <= inf 常に真
-inf <= -x 常に真
すべてのinf,nanを含む実数yに対して
y < nan, y <= nan , nan < y, nan <= y nan == y 常に偽
nan != y 常に真
これらは処理系によらず正しいでしょうか?

64 :
infやnanなんてものの存在自体が処理系依存なので・・・

65 :
んなことはない。IEEE754読め

66 :
浮動小数にIEEE754が使われているかどうかが処理系依存
わかるかね

67 :
> 処理系依存
用語がスレ違い

68 :
はい?

69 :
C言語をはじめたばかりであまりわからないのですが、
ビットシフトはなんの役に立つのでしょうか?

70 :
何度目だナウシカ
そのコピペを作るのに役に立ちます
と合いの手で答えてあげるべきか

71 :
ビットシフトはなんね役に立つのでしょうか?

72 :
C言語をはじめたばかりであまりわからないのですが、
void 型ってなんの役に立つのでしょうか?
例えばint型にしておけばいいと思うのですが。

73 :
int型にして戻り値は何を返すの?

74 :
>>73
はい。return 0;でも、return 1;でも、適当に何か返して
おけばいいような気がするのですが。
呼び出し元は戻り値を無視すればいいわけですし。
だから、void型なんていらないと思うのです。

75 :
俺はautoが何の役に立つのか分からん。昔は明示しなければならなかったの?

76 :
うん。パーサの簡略化のためにストレージクラスが必要な時代もあった

77 :
>>72
戻り値を使わないことをコンパイラに教えると
値を返す部分のコードをコンパイラが書かないので
まあそう言われると今時たいしてうれしくはないな

78 :
>>74
voidでない関数の返す値を無視する場合
(void)printf("foo");
のように明示的にキャストしないと、注意してくるLintがあったりするので、
voidならvoidのほうが良い。

79 :
>>74
役に立つとかの視点じゃなくて
戻り値を戻さないことで、関数内で処理が完結してることを明示してる
変に無意味な戻り値を返すと、使用側が混乱するかもねー
てか、このスレじゃなくて初心者スレで聞いたほうがいいよー

80 :
お前ら、なんでマジレスしてんだ?
スルーしろよ。

81 :
つまんね

82 :
>>75-76
つーかB言語のなごりだな

83 :
>>72
void * はある程度のレベルになると便利に使えます。キャストを多用するため型チェックがきかなくなるのが欠点ですが。
たとえば、http://codepad.org/qS3Gh6kJ
(宿題スレの産物です。)

84 :
それは void * だし
質問してるのは  void だし

85 :
void f( void ); と int f( int );
だと、前者を呼ぶにはf();とすればいいけど、
後者を呼ぶにはf(n)としなくちゃいけないじゃないか。
タイプ量が増えて疲れる。

86 :
リエントラントとしてはvoidの方がいい

87 :
>>76
そんな時代があったことはない。

88 :
C言語をはじめたばかりであまりわからないのですが、
マウスから酢昆布のような臭いがするんですけど
どうしたらいいですか?

89 :
あなたにふさわしいマウスです

90 :
初心者は来るな

91 :
C言語をはじめたばかりであまりわからないのですが、
手袋にマウスの酢昆布のような臭いが移ったんですけど
どうしたらいいですか?

92 :
初心者お断り
スレタイくらい読まないか

93 :
僕もみなさんのようにC言語で自称プログラマーごっこしたいのですが、まず何をすればですか?

94 :
まずUNIXをハックします

95 :
C言語をはじめたばかりであまりわからないのですが、
雪も降ってるのに部屋に暖房が無くて寒いんですけど
どうしたらいいですか?

96 :
CPUをフルパワーで回し続ければ廃熱で温まるYO!

97 :
int main()
{
}

98 :
>>96
これを実行するわけだな
int main()
{
while( 1 );
return 0;
}

99 :
やたー暖房プログラムできたよー
int main()
{
   while(1);
}

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
ニートの俺が何か開発して食いつなぐスレ (821)
SSE AVXのプログラミング (636)
おまいら最強の麻雀プログラムしてみろよ Part6 (404)
【玄人】プロジェクト管理ツールApache Maven【2.0登場】 (549)
DarkBASIC (449)
関数型言語Part5 (857)
--log9.info------------------
【946/913ch】パラダイステレビを語ろう!11【エロ】 (655)
◆ MTV JAPAN 23 (655)
AT-X(アニメシアターX)365 在日チョン (741)
☆☆ あいのり2 ☆☆ Part20 (544)
◆ フジテレビ ONE/TWO/NEXT 38 (941)
◆ エンタメ〜テレ☆シネドラバラエティ (281)
【759ch】パR・パチスロTV‐286番台 (823)
■■スカパー!質問スレ71■■ (445)
スカパー!HDチューナー TZ-WR320P/TZ-HR400P Ch014 (997)
スカパーさんおねがい、 (253)
無料・開放・ノースクランブル放送 16 (342)
◆ ディスカバリーチャンネル 27【Discovery】 (1001)
◆日本文化チャンネル桜38 (248)
◆ ファミリー劇場 49 (842)
衛星チューナー THE Air(ザ・エア)1台目 (637)
ゲームセンターCX STAGE157 (561)
--log55.com------------------
□■□■□ 群馬県高校野球スレ PART190 □■□■□
【地方大会は終盤へ】甲子園へ行こうpart96【そして夢の甲子園へ】
【平田改革】横浜高校part355【今年も敵なし】
[でっち上げ自演ヒキくん]静岡県の高校野球パート96[パンティータマランチ会長]
【九段】二松学舎野球部Part18【柏】
【2018夏】 代表校戦力ランク付け 【甲子園】
2018選手権最弱代表はどこだ!? PART1
栃木県の高校野球 229