K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[2297] Re:「関数へのポインタにおける混乱」の「intを返す」という記述について
投稿者:(ぱ)こと管理人
2022/06/15 00:37:54

こんにちは。 >> しかし,C の宣言をここまでに述べた規則に基づいて解釈すれば,たとえばint func();という宣言において, >>funcは「intを返す関数」であり,funcだけを取り出して「intを返す関数へのポインタ」になるのは変です. >>関数へのポインタが必要なら,&を付けて,&funcとしなければならないはずです. >上記文章では「intを返す関数」と、『intを返す』が「」の中に入って強調されていますが、 >実はここではintを返す事自体は重要ではありません。 intを返す事自体は重要ではない、というのはその通りです。 ただ、この本の3章でかなり強調して説明しているのは、Cの宣言の読み方です。 「識別子を起点に優先順位に基づいて英語順に読む」という読み方を前半で説明しているので、 「C の宣言を『ここまでに述べた規則に基づいて』解釈すれば,」と書いているわけです。 3章前半で説明した規則に基づいてint func();を解釈すれば、やはり「intを返す関数」です。 「intを返す」は確かにそう重要ではないですが、だからってここでだけそこをはしょってしまったら、 混乱する読者もいるのではないでしょうか。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2296] 「関数へのポインタにおける混乱」の「intを返す」という記述について
投稿者:jcv
2022/06/13 17:38:41

3-5-4 関数へのポインタにおける混乱(C言語 ポインタ完全制覇(旧版)) 3-5-5 関数へのポインタにおける混乱(C言語 ポインタ完全制覇(第2版)) の、以下の記載に関してです。 > しかし,C の宣言をここまでに述べた規則に基づいて解釈すれば,たとえばint func();という宣言において,funcは「intを返す関数」であり,funcだけを取り出して「intを返す関数へのポインタ」になるのは変です.関数へのポインタが必要なら,&を付けて,&funcとしなければならないはずです. この文章ですが、何度か読んでいるのですが、実は今迄理解出来ていませんでしたが、読み飛してしまっていました。今回、改めて読み直してやっと理解する事が出来ました。わかってしまえば、大した事ではないのですが、他の方が同じ疑問を持たれている可能性もありますので、お知らせしておきます。 上記文章では「intを返す関数」と、『intを返す』が「」の中に入って強調されていますが、実はここではintを返す事自体は重要ではありません。 これがわかりにくくしていると思います。仮に「intを返す」を抜いてみると、 > しかし,C の宣言をここまでに述べた規則に基づいて解釈すれば,たとえばint func();という宣言において,funcは「関数」であり,funcだけを取り出して「関数へのポインタ」になるのは変です.関数へのポインタが必要なら,&を付けて,&funcとしなければならないはずです. となります。この方がずっと理解しやすくなると思います。もし、「intを返す」を入れるのであれば、以下の様に括弧に入れた方が良いと思います。 > しかし,C の宣言をここまでに述べた規則に基づいて解釈すれば,たとえばint func();という宣言において,funcは(intを返す)「関数」であり,funcだけを取り出して(intを返す)「関数へのポインタ」になるのは変です.関数へのポインタが必要なら,&を付けて,&funcとしなければならないはずです. いかがでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[2295] Re:『Webサーバを作りながら学ぶ~』の内容は今後も有効か?
投稿者:(ぱ)こと管理人
2022/06/10 01:19:51

こんにちは。タイトル変えました。 >「HTTP/3」が発表されたようですが、 >Webアプリケーションの仕組みはそんなに変わらないと思いますか? >言い換えると前橋さんの著書の >『Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門』 >の内容は今後も有効でしょうか? これは、ふたつの面から考えられると思います。 ひとつは、HTTP/2であってもHTTP/3であっても、変わったところは高速化のために 伝送方式を変えたことであって、ヘッダ圧縮とかコネクションの並列化はやっているに しても、その上を流れるデータはHTTP/1と変わりはないということです。 なので、送受信されるデータ(HTTPリクエスト/レスポンスヘッダとか、ステータス コードとか)の説明については、今後も有効です。 もうひとつは、HTTP/2や3で変わった、伝送方式についてです。 『Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門』では、 TCPを受けるサーバを自作で立てて、それを本物のWebブラウザで叩いてみたり、 自作のTCPクライアントから本物のWebサーバを叩くようなこともしています。 これはまさに伝送方式に関わる部分で、HTTP/2や3で変わったところです。 HTTP/2や3対応のWebサーバを自作しようと思ったら、あの本の知識では無理です。 なのでたとえばEdgeやChromeやFirefoxが、明日からHTTP/2以上しか対応しません、 となれば、自作のHenacatを、普段使いのブラウザで叩くことはできなくなります。 それでは「Webサーバを作りながら学ぶ」という本の趣旨はだいなしですが、 そんな日は、当分来ないのではないかと思っています。 本が古くなる心配といえば、2016年出版の時点でさえ、わざわざブラウザに IEを選ぶことはなかったのではないか、とは自分でも思いますが、 これはそれなりに意図をもって選びました。キラキラWebエンジニアだけでなく、 企業内とかの泥臭いシステムを作っているプログラマにも届けたかったためです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2294] 無題
投稿者:rike1019
2022/06/09 18:40:59

「HTTP/3」が発表されたようですが、 Webアプリケーションの仕組みはそんなに変わらないと思いますか? 言い換えると前橋さんの著書の 『Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門』 の内容は今後も有効でしょうか? IPV6が発表されてからもIPV4がすごく長く使われてることから 既存の技術からの移行ってあまり進まないイメージがあります。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2293] Re:無題
投稿者:mhash
2022/05/23 08:50:29

>>現在某所で話題になってるゆっくり動画問題ってどう思われますか? > >本件そんなちゃんと追ってないですが。 >私は「ゆっくり」の動画はそりゃ知ってますけれども、「ゆっくり茶番劇」なる言葉は >知りませんでした(そういう人は多いようです)。でも、検索したら万単位でひっかかってくる >言葉を、縁もゆかりもない人が商標取って、使用料払えってそりゃいくらなんでも >めちゃくちゃでしょう。 > やっぱりそうですよね…自分も「ゆっくり茶番劇」なる名称は知りませんでしたが、「ゆっくり解説」とかの動画はよく見てたので、そういうコミュニティの中で普通に使われてる言葉を独占しようとするのはそりゃおかしいよなと思いました。 >>過去ののまネコ問題との類似性も指摘されているようですが(私はのまネコの方は >>当時中学生くらいだったので詳しくないのですが…) > >のまネコ問題は、 >・本来だったら著作権的に真っ黒なFLASH動画について、本来だったら怒ってもいいavexが > それを面白がって、作者の同意のもとCDに付けたりして、 >・流行ったのでぬいぐるみとかを出すにあたって、モナーやらとはわざわざ形や名前を > 変えたネコをデザインし、そちらで商標を取った。 > >というものです。まったく類似していません。 > あー…そういう感じのものだったんですね。知りませんでした。 確かにあのころの2chって、大手企業には敵意剥き出しな癖に、自分達の権利侵害には無頓着な雰囲気がありましたね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2292] Re:無題
投稿者:(ぱ)こと管理人
2022/05/20 22:22:59

>現在某所で話題になってるゆっくり動画問題ってどう思われますか? 本件そんなちゃんと追ってないですが。 私は「ゆっくり」の動画はそりゃ知ってますけれども、「ゆっくり茶番劇」なる言葉は 知りませんでした(そういう人は多いようです)。でも、検索したら万単位でひっかかってくる 言葉を、縁もゆかりもない人が商標取って、使用料払えってそりゃいくらなんでも めちゃくちゃでしょう。 >過去ののまネコ問題との類似性も指摘されているようですが(私はのまネコの方は >当時中学生くらいだったので詳しくないのですが…) のまネコ問題は、 ・本来だったら著作権的に真っ黒なFLASH動画について、本来だったら怒ってもいいavexが  それを面白がって、作者の同意のもとCDに付けたりして、 ・流行ったのでぬいぐるみとかを出すにあたって、モナーやらとはわざわざ形や名前を  変えたネコをデザインし、そちらで商標を取った。 というものです。まったく類似していません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2291] 無題
投稿者:mhash
2022/05/20 00:53:19

現在某所で話題になってるゆっくり動画問題ってどう思われますか? 過去ののまネコ問題との類似性も指摘されているようですが(私はのまネコの方は当時中学生くらいだったので詳しくないのですが…)
[この投稿を含むスレッドを表示] [この投稿を削除]
[2290] Re:C言語ポインタ完全制覇、記述に関する愚痴(^^;
投稿者:(ぱ)こと管理人
2022/05/12 01:08:24

>ちなみに、手元のK&Rの第2版日本語訳(共立出版、1992年10月10日初版121刷、 >年齢がバレる?前橋さんより4年年上のようです)を開いてみたら、p.35(1.8 引数)の上部に、 >『配列の名前が引数として使われるときは、関数に渡される値は、実際には配列の先頭番地 >すなわちアドレスである。配列の要素のコピーは行われない。』 これはまったくその通りなのですが、『配列の名前が引数として使われるときは』という 限定は本当は不要なんですよね。もちろんここでそれを書く必要もないので、この説明が 悪いというわけではないのですが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2288] Re:C言語ポインタ完全制覇、記述に関する愚痴(^^;
投稿者:かずちゃん
2022/05/10 05:16:53

>>Kenneth A. Reek の"Pointers on C"とかではどう表現されているのか読み直してみようかしらん… > >これは私は読んでいないので、何か面白いことが書いてあったら教えてください。 ちなみに、手元のK&Rの第2版日本語訳(共立出版、1992年10月10日初版121刷、年齢がバレる?前橋さんより4年年上のようです)を開いてみたら、p.35(1.8 引数)の上部に、 『配列の名前が引数として使われるときは、関数に渡される値は、実際には配列の先頭番地すなわちアドレスである。配列の要素のコピーは行われない。』 と、「C言語ポインタ完全制覇」を読んだあとである今読むと素直にピピッと理解でき曖昧さも少ない表現がされていました… その他、英語で書かれたCの本で、(英語での)Cの変数の宣言の読み解き方が、「C言語ポインタ完全制覇」同様にわかりやすく書かれた本があったと記憶していた(それが上記Reekの本だと思っていた)のですが、「ポインタ」含め、いまいち、"あぁ、これだこれだ"という箇所がなく… Reek氏の本は、もう一度ひっくり返してみます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2287] Re:C言語ポインタ完全制覇、記述に関する愚痴(^^;
投稿者:(ぱ)こと管理人
2022/05/09 23:10:42

>どう書いたら自然な言い回しと(お感じに)なりますかね? 僕は、今回新板を初めから >読み直して、あらためて、この『単に「ポインタ」と呼んでしまう』中身をキチンと >区別することが正確な理解に繋がるように思えたのですが。(例えば、新板のp.43に >『混同しないように…』と記した直後のp.46の中程では(この場合の「ポインタ」は >「ポインタ型の変数」のことですね)と書いて下さっています) 初版執筆当時、『どう書いても自然な>いい回しにならないので断念』して、 当時の編集さんにも「それは残念ですね」というようなことを言われた記憶があるのですが、 確かにp.71の「…式の中では、配列はその先頭要素へのポインタに読み替えられるのです。」は 「…式の中では、配列はその先頭要素へのポインタ(ポインタ値)に読み替えられるのです。」と 書いてもそんなには違和感はなかったように思いますね。 当時主に気にしていたのは、「ポインタ型」と、「ポインタ型の変数または値」の 区別だったように思いますが…… >Kenneth A. Reek の"Pointers on C"とかではどう表現されているのか読み直してみようかしらん… これは私は読んでいないので、何か面白いことが書いてあったら教えてください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2286] Re:C言語ポインタ完全制覇、"「式」に対するsizeof"のキモは?
投稿者:かずちゃん
2022/05/08 11:18:49

>はじめまして。 遅まきながら、はじめまして。 私めがどういう人間であるかということは、別の投稿の方の末尾に記しました(_o_) ご回答ありがとうございます。 >>「2種類の使い方」"sizeof(型名)"と"sizeof 式"のキモ(使い方・形式は何が違うと言っているのか)は、 >>・括弧の有無、 >>・型名に対してsizeofを使うか、式に対して使うか、 >>のいずれなのでしょうか? > >後者です。 ありがとうございます。 >>ページのほぼ中央部で"「sizeof 式」形式にメリットがあるのは…" >>と書かれており、形式、と言われると、式に対して使うのかそれとも型名に対してか、 >>というよりは、括弧の有無のことか?とも迷ってしまいまして… > >言葉がまずかったですかね。括弧の有無のことを言いたかったわけではなくて、 >あくまで「式に対して使うのかそれとも型名に対してか」のつもりでした。 「形式」、とあったので、迷ってしまいました。「対象とできるものが2種類あって、一つは型名、もう一つは式である」と書かれていれば、迷う可能性も低くなったのかもしれませんが… ご著書のような種類の本にすがるのは、僕のようなトーシロ、つまり、理解があやふやなヤツが正しく理解したいがために、なので、なるべく「読むことによって迷ってしまう」表現が少ないと有り難いです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2285] Re:C言語ポインタ完全制覇、記述に関する愚痴(^^;
投稿者:かずちゃん
2022/05/08 11:10:24

ご返信ありがとうございます。 >>と言っているところの、「ポインタ型の値」のことですよね? >>だから「左辺値ではありません」のですよね? > >その通りです。 ありがとうございます。スッキリしました。 今後も、コード・フラグメントと睨めっこしながら、「3つのうちのどれだ?」と考えるようにします。 >>せめて、『単に「ポインタ」と呼んでしまうことが多いので、混同しないように気をつけてください』と >>注意を喚起しているこの本では、随所の「ポインタ」という記述を、混同しにくいように〈クドく〉 >>書き下して書いておいて頂けると有り難かったです。(文字数が増えるのを防ぐなら、「アドレス」とか?) > >『混同しないように気をつけてください』のところについては、実は本書の、 >「新・標準プログラマーズライブラリ」になる前の旧版では、注に >「※せめて本書の中では、区別して表記しようかと思ったのですが、どう書いても自然な >いい回しにならないので断念しました…… すみません」と書いてありました。 >(あれ? 新版では削ったんだっけ?) >というわけで、ここは著者としても忸怩たるところではあります。 をを、確かに、旧版のp.032に(2016年9月15日初版第18刷発行)、その旨書かれていますね。 (旧版、途中でなにか他のことに興味が移ったのか、3-4辺りで読むのが止まってしまっていたようですが…) どう書いたら自然な言い回しと(お感じに)なりますかね? 僕は、今回新板を初めから読み直して、あらためて、この『単に「ポインタ」と呼んでしまう』中身をキチンと区別することが正確な理解に繋がるように思えたのですが。(例えば、新板のp.43に『混同しないように…』と記した直後のp.46の中程では(この場合の「ポインタ」は「ポインタ型の変数」のことですね)と書いて下さっています) 「ポインタ型」、「ポインタ型の変数」等と明示して頂けると、かなり理解のスピードが早まると思います。 Kenneth A. Reek の"Pointers on C"とかではどう表現されているのか読み直してみようかしらん… (実は、暫く触っていなかったC++の勉強を(Lippmanの本で)し直しているうちに、constがまたまたわからなくなって、ご著書を読み返しておりまして… 基礎がしっかりできていないと、結局基礎的なところに戻って理解し直す、ということの繰り返しです… あ、ワタシは、定年もそう遠くないジジイの自称物理屋で、シミュレーション用のツール・キットを使うためにこういう言語を学んでおります。今頃このレベルってのがナニですが…)
[この投稿を含むスレッドを表示] [この投稿を削除]
[2284] Re:C言語ポインタ完全制覇、記述に関する愚痴(^^;
投稿者:(ぱ)こと管理人
2022/05/08 00:43:54

ご意見ありがとうございます。 >p.71には「…式の中では、配列はその要素へのポインタに読み替えられるのです。」と >あります。これって、"ポインタ"とは書かれていますが(そして上のp.193の記述でも >「ポインタに読み替えられ」とありますが)これらって、全て、p.43に『…厄介なことに、 >世間では「ポインタ型」も「ポインタ型の変数」も「ポインタ型の値」も、単に >「ポインタ」と呼んでしまうことが多いので、混同しないように気をつけてください。』 >と言っているところの、「ポインタ型の値」のことですよね? >だから「左辺値ではありません」のですよね? その通りです。 >せめて、『単に「ポインタ」と呼んでしまうことが多いので、混同しないように気をつけてください』と >注意を喚起しているこの本では、随所の「ポインタ」という記述を、混同しにくいように〈クドく〉 >書き下して書いておいて頂けると有り難かったです。(文字数が増えるのを防ぐなら、「アドレス」とか?) 『混同しないように気をつけてください』のところについては、実は本書の、 「新・標準プログラマーズライブラリ」になる前の旧版では、注に 「※せめて本書の中では、区別して表記しようかと思ったのですが、どう書いても自然な いい回しにならないので断念しました…… すみません」と書いてありました。 (あれ? 新版では削ったんだっけ?) というわけで、ここは著者としても忸怩たるところではあります。 >これまでの僕の間違った理解では「strと書くことによって、str[0]の(1文字分を記録できる)アドレスが >渡り、そこにリテラルで3文字も(ヌルを入れると4文字)押し込もうとしているから駄目なんだよな?」と >思っていたのですが、その理解は完全に間違っていて… この「間違った理解」は、strを「ポインタ型の変数」と間違って解釈した、ということであれば、 クドく書き下すべきだったんですかねえ。 ただ、strが「ポインタ型の変数」と解釈したとするとそれは「str[0]の(1文字分を記録できる)アドレス」 とも違うのでは、とは思いますが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2283] Re:C言語ポインタ完全制覇、"「式」に対するsizeof"のキモは?
投稿者:(ぱ)こと管理人
2022/05/08 00:15:24

はじめまして。 >「2種類の使い方」"sizeof(型名)"と"sizeof 式"のキモ(使い方・形式は何が違うと言っているのか)は、 >・括弧の有無、 >・型名に対してsizeofを使うか、式に対して使うか、 >のいずれなのでしょうか? 後者です。 型名に対するsizeof … sizeof(型名) 式に対するsizeof … sizeof 式 です。 >このページの下の方の例で"sizeof(hoge)"と、型名でないhogeに対してsizeof()と >括弧ありの用法をしているので、式に対して使う場合は括弧が必要である、という >可能性は無いとは思いますが… 式に対して使う場合は括弧が必要である、ということはなく、逆に、 型名に対して使う場合は括弧が必須です。上の例、および本の中の例で 「sizeof(型名)」となっている通りです。 もちろん、式を括弧で囲んだものも式ですから、sizeof(式)という書き方は可能です。 優先順位の低い演算子を含む式なら、括弧が必須になるでしょう。「sizeof 3 + 5」は sizeof(int) + 5でintが4バイトなら9になるでしょうが、「sizeof(3 + 5)」は sizeof(8)なので4です。 その意味では、sizeof(hoge)の場合は括弧は必須ではありませんが、 私はこういう場合たいてい括弧を付けるので書いてしまっています。 >ページのほぼ中央部で"「sizeof 式」形式にメリットがあるのは…" >と書かれており、形式、と言われると、式に対して使うのかそれとも型名に対してか、 >というよりは、括弧の有無のことか?とも迷ってしまいまして… 言葉がまずかったですかね。括弧の有無のことを言いたかったわけではなくて、 あくまで「式に対して使うのかそれとも型名に対してか」のつもりでした。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2282] Re:C言語ポインタ完全制覇、記述に関する愚痴(^^;
投稿者:かずちゃん
2022/05/07 21:56:13

あ、勿論、「四季」→「式」です。 >新・標準プログラマーズライブラリ「C言語ポインタ完全制覇」(2017年12月21日初版第1刷発行)について、少々愚痴をば… > >「3-3-3配列→ポインタの読み替え」のp.192の下部には「そして、配列がポインタに読み替えられたとき、そのポインタは左辺値ではありません。」と記述されていて、次のページに続いて > >char str[10]; >str = "abc"; > >に対して、「代入の左辺のstrはもともと配列であり、四季の中ではポインタに読み替えられますが、左辺値ではありませんから、…」と記されています。 > >これって、これまでの僕の間違った理解では「strと書くことによって、str[0]の(1文字分を記録できる)アドレスが渡り、そこにリテラルで3文字も(ヌルを入れると4文字)押し込もうとしているから駄目なんだよな?」と思っていたのですが、その理解は完全に間違っていて… > >p.71には「…式の中では、配列はその要素へのポインタに読み替えられるのです。」とあります。これって、"ポインタ"とは書かれていますが(そして上のp.193の記述でも「ポインタに読み替えられ」とありますが)これらって、全て、p.43に『…厄介なことに、世間では「ポインタ型」も「ポインタ型の変数」も「ポインタ型の値」も、単に「ポインタ」と呼んでしまうことが多いので、混同しないように気をつけてください。』と言っているところの、「ポインタ型の値」のことですよね? >だから「左辺値ではありません」のですよね? > >せめて、『単に「ポインタ」と呼んでしまうことが多いので、混同しないように気をつけてください』と注意を喚起しているこの本では、随所の「ポインタ」という記述を、混同しにくいように〈クドく〉書き下して書いておいて頂けると有り難かったです。(文字数が増えるのを防ぐなら、「アドレス」とか?) > >という愚痴(雑談)でした…
[この投稿を含むスレッドを表示] [この投稿を削除]
[2281] C言語ポインタ完全制覇、記述に関する愚痴(^^;
投稿者:かずちゃん
2022/05/07 17:58:42

新・標準プログラマーズライブラリ「C言語ポインタ完全制覇」(2017年12月21日初版第1刷発行)について、少々愚痴をば… 「3-3-3配列→ポインタの読み替え」のp.192の下部には「そして、配列がポインタに読み替えられたとき、そのポインタは左辺値ではありません。」と記述されていて、次のページに続いて char str[10]; str = "abc"; に対して、「代入の左辺のstrはもともと配列であり、四季の中ではポインタに読み替えられますが、左辺値ではありませんから、…」と記されています。 これって、これまでの僕の間違った理解では「strと書くことによって、str[0]の(1文字分を記録できる)アドレスが渡り、そこにリテラルで3文字も(ヌルを入れると4文字)押し込もうとしているから駄目なんだよな?」と思っていたのですが、その理解は完全に間違っていて… p.71には「…式の中では、配列はその要素へのポインタに読み替えられるのです。」とあります。これって、"ポインタ"とは書かれていますが(そして上のp.193の記述でも「ポインタに読み替えられ」とありますが)これらって、全て、p.43に『…厄介なことに、世間では「ポインタ型」も「ポインタ型の変数」も「ポインタ型の値」も、単に「ポインタ」と呼んでしまうことが多いので、混同しないように気をつけてください。』と言っているところの、「ポインタ型の値」のことですよね? だから「左辺値ではありません」のですよね? せめて、『単に「ポインタ」と呼んでしまうことが多いので、混同しないように気をつけてください』と注意を喚起しているこの本では、随所の「ポインタ」という記述を、混同しにくいように〈クドく〉書き下して書いておいて頂けると有り難かったです。(文字数が増えるのを防ぐなら、「アドレス」とか?) という愚痴(雑談)でした…
[この投稿を含むスレッドを表示] [この投稿を削除]
[2280] C言語ポインタ完全制覇、"「式」に対するsizeof"のキモは?
投稿者:かずちゃん
2022/05/07 14:45:09

くだらない質問で申し訳ありませんが、新・標準プログラマーズライブラリ「C言語ポインタ完全制覇」(2017年12月21日初版第1刷発行)のp.188, "「式」に対するsizeof"の記述に対して質問させて下さいませ。 「2種類の使い方」"sizeof(型名)"と"sizeof 式"のキモ(使い方・形式は何が違うと言っているのか)は、 ・括弧の有無、 ・型名に対してsizeofを使うか、式に対して使うか、 のいずれなのでしょうか? このページの下の方の例で"sizeof(hoge)"と、型名でないhogeに対してsizeof()と括弧ありの用法をしているので、式に対して使う場合は括弧が必要である、という可能性は無いとは思いますが… ページのほぼ中央部で"「sizeof 式」形式にメリットがあるのは…"と書かれており、形式、と言われると、式に対して使うのかそれとも型名に対してか、というよりは、括弧の有無のことか?とも迷ってしまいまして…
[この投稿を含むスレッドを表示] [この投稿を削除]
[2279] Re:「C言語 ポインタ完全制覇」正誤表に「配列とポインタの完全制覇」URLの変更の記載
投稿者:(ぱ)こと管理人
2022/04/28 20:20:21

追記ですが、 とりあえず、第3刷ではmember.nifty.ne.jpになっていて、 第11刷ではkmaebashi.comになっていることは確認しました……
[この投稿を含むスレッドを表示] [この投稿を削除]
[2278] Re:「C言語 ポインタ完全制覇」正誤表に「配列とポインタの完全制覇」URLの変更の記載
投稿者:(ぱ)こと管理人
2022/04/28 20:06:43

ご指摘ありがとうございます。 >C言語 ポインタ完全制覇 の、初版と第2版を比較していた時に気がついた事です。 確認ですが、比較されたのは、2001年の旧版と、2017年の 「新・標準プログラマーズライブラリ」版のものですよね(旧版の1刷と2刷の比較ではなく)。 私の手元にも旧版のすべての刷が整理されて揃っているわけではないので、 どの時点で直したのかはもはや不明ですが、それも含め、正誤表に記載いたしました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2277] 「C言語 ポインタ完全制覇」正誤表に「配列とポインタの完全制覇」URLの変更の記載
投稿者:jcv
2022/04/27 18:18:19

C言語 ポインタ完全制覇 の、初版と第2版を比較していた時に気がついた事です。 第2版の「はじめに」には、元になった初版からの追加/修正内容が記載されていますが、 旧版の「はじめに」には、その前のベースになった「配列とポインタの完全制覇」の話が出ています。 しかし、ここに記載されているURL http://member.nifty.ne.jp/maebashi/programmer/pointer.html はリンク切れになっています。 URLを置き換えて、 「配列とポインタの完全制覇」(1999/6/29 updated) http://kmaebashi.com/programmer/pointer.html にたどりつきました。 この件、「C言語 ポインタ完全制覇」正誤表 http://kmaebashi.com/seiha/seigo.html に、URLの修正があるかもしれないと思い確認しましたが、ありませんでした。 同じページには、「ほげを考えるページ」のURLについて、修正された事が記載されていますので、 「配列とポインタの完全制覇」のページのURLについても、同様に修正しておくべきと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2276] Re:Webアプリケーション開発入門のP97 コンパイルについて
投稿者:(ぱ)こと管理人
2022/03/24 23:12:25

遅くなりましてすみません。 >以下のコマンドを実行する。 >cd C:\maebashi\doc\webserver\src\chap03\testbbs\WEB-INF\classes >C:\maebashi\doc\webserver\src\chap03\testbbs\WEB-INF\classes 「以下のコマンド」の記載がないので、何が悪いのかわかりませんが、 >以下のコマンドでも同様のエラーとなります。 >javac -classpath ./;C:\Tomcat\lib\servlet-api.jar PostBBS.java ここから推測すると、*.javaではなく、PostBBS.javaを指定したのでしょうか? そうだとすると、私の環境でも、以下のエラーが起きました。 C:\maebashi\temp\src_20181021\src\chap03\testbbs\WEB-INF\classes>javac -classpath C:\Tomcat8\lib\servlet-api.jar PostBBS.java PostBBS.java:9: エラー: シンボルを見つけられません Message newMessage = new Message(request.getParameter("title"), ^ シンボル: クラス Message 場所: クラス PostBBS PostBBS.java:9: エラー: シンボルを見つけられません Message newMessage = new Message(request.getParameter("title"), ^ シンボル: クラス Message 場所: クラス PostBBS PostBBS.java:12: エラー: パッケージMessageは存在しません Message.messageList.add(0, newMessage); ^ エラー3個 PostBBS.javaを単独でコンパイルしようとしても、Message.classがまだないためです。 本にあるとおり、*.javaならコンパイルできます。 C:\maebashi\temp\src_20181021\src\chap03\testbbs\WEB-INF\classes>del *.class C:\maebashi\temp\src_20181021\src\chap03\testbbs\WEB-INF\classes>javac -classpath C:\Tomcat8\lib\servlet-api.jar *.java C:\maebashi\temp\src_20181021\src\chap03\testbbs\WEB-INF\classes>dir ドライブ C のボリューム ラベルは Windows です ボリューム シリアル番号は BAC7-DF60 です C:\maebashi\temp\src_20181021\src\chap03\testbbs\WEB-INF\classes のディレクトリ 2022/03/24 23:10 <DIR> . 2022/03/24 23:10 <DIR> .. 2022/03/24 23:10 666 Message.class 2016/06/19 15:47 409 Message.java 2022/03/24 23:10 1,008 PostBBS.class 2016/06/19 15:47 638 PostBBS.java 2022/03/24 23:10 2,720 ShowBBS.class 2016/06/19 15:47 1,883 ShowBBS.java 6 個のファイル 7,324 バイト 2 個のディレクトリ 114,802,692,096 バイトの空き領域
[この投稿を含むスレッドを表示] [この投稿を削除]
[2274] Webアプリケーション開発入門のP97 コンパイルについて
投稿者:mone
2022/03/20 19:44:11

コンパイルでエラーが発生します。 解決方法につきご教示いただけますと幸いです。 ■事象 以下をファイルをコンパイルするため ・ShowBBS.java ・PostBBS.java ・Message.java 以下のコマンドを実行する。 cd C:\maebashi\doc\webserver\src\chap03\testbbs\WEB-INF\classes C:\maebashi\doc\webserver\src\chap03\testbbs\WEB-INF\classes 下記のエラーとなる。(Message.class参照不可のエラー) === PostBBS.java:4: エラー: シンボルを見つけられません public class PostBBS extends HttpServlet { &#8942; === 以下のコマンドでも同様のエラーとなります。 javac -classpath ./;C:\Tomcat\lib\servlet-api.jar PostBBS.java
[この投稿を含むスレッドを表示] [この投稿を削除]
[2273] Re:比較演算子を使った式の変数への代入について
投稿者:mhash
2022/02/15 01:47:50

ご返信ありがとうございます。 比較演算子==の比較結果はint型の値なんですね。知りませんでした。 ご丁寧に教えて頂きありがとうございました。 >>はじめまして、mhashと申します。 > >はじめまして。 > >>bool = ( a == b ) >>(※bool,a,bは整数型の変数) >>のように比較演算子==での比較結果を直接変数に代入している箇所があったのですが、 >>この書き方は規格上保証されているものなのでしょうか? > >==(等価演算子)については、JIS X 3010:2003なら「6.5.9 等価演算子」に記載があって、 >「各演算子は指定された関係が真の場合は1 を,偽の場合は0 を返す。その結果は, > 型int をもつ。」 >とあるので、この結果をint型の変数に代入するのは完全に合法です。 > >>また、保証されている場合はどのバージョンからでしょうか? > >Cができた当初から、だと思います。いわゆる普通のif文で、 > >if (a == b) > >と書いたとしても、これは等価演算子の結果をもとに条件分岐しているにすぎません。 >
[この投稿を含むスレッドを表示] [この投稿を削除]
[2272] Re:比較演算子を使った式の変数への代入について
投稿者:(ぱ)こと管理人
2022/02/13 23:04:05

>はじめまして、mhashと申します。 はじめまして。 >bool = ( a == b ) >(※bool,a,bは整数型の変数) >のように比較演算子==での比較結果を直接変数に代入している箇所があったのですが、 >この書き方は規格上保証されているものなのでしょうか? ==(等価演算子)については、JIS X 3010:2003なら「6.5.9 等価演算子」に記載があって、 「各演算子は指定された関係が真の場合は1 を,偽の場合は0 を返す。その結果は,  型int をもつ。」 とあるので、この結果をint型の変数に代入するのは完全に合法です。 >また、保証されている場合はどのバージョンからでしょうか? Cができた当初から、だと思います。いわゆる普通のif文で、 if (a == b) と書いたとしても、これは等価演算子の結果をもとに条件分岐しているにすぎません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2271] 比較演算子を使った式の変数への代入について
投稿者:mhash
2022/02/13 13:01:05

はじめまして、mhashと申します。 以前kmaebashi様の著書(『プログラミング言語を作る』だったかと思います)で、Cのソースで bool = ( a == b ) (※bool,a,bは整数型の変数) のように比較演算子==での比較結果を直接変数に代入している箇所があったのですが、この書き方は規格上保証されているものなのでしょうか? また、保証されている場合はどのバージョンからでしょうか? 一般的な処理系ではコンパイルできるのだろうとは想像できるのですが、自分はあまりみたことがない書き方なので、気になって質問させていただきました。 初歩的ですみませんがよろしくお願いします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2270] Re:【ご質問】1.3.4 TCPクライアントでWebサーバーを叩
投稿者:mone
2022/01/31 17:25:20

>moneさん >>■事象 >>TcpCliet.javaを実行→client_rect.txtに408ステータスが出力される。(期待結果:200ステータス) > >これは以前にも同じ現象の問い合わせがありました。 >client_send.txt末尾の空行が入っていないと、この現象が発生します。 > >エディタによっては、最後の空行を勝手に消してしまうものもあるようです。 > >http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&thread=2132 >http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&thread=1960 > > ご回答ありがとうございます。 空行を追加したところ200ステータスが返却されました。 ヘッダの終わりを示す空行が必要のこと理解しました。 お手数おかけしました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2269] Re:韓国からの読者です。
投稿者:(ぱ)こと管理人
2022/01/31 01:41:22

ドゥボーさん すみません、韓国語が化けてしまっていますよね。 この掲示板は大昔に作ったもので、文字コードとしてEUC-JPという日本独自の 文字コードを使っています。そのため韓国語は表示できません。 UTF-8にしたものをここに置きました(どのみち私には読めませんが……)。 http://kmaebashi.com/seiha/20220130_bbs.html >韓国語の語順も日本語の語順と一緒で、同じ説明ができます。 ありがとうございます。安心しました。 (実は「C言語 ポインタ完全制覇」は中国語にも翻訳されているのですが、 中国語は語順はむしろ英語に近いのに、直訳されたのでちょっと残念なことに なっているのです) >日本語版の文脈は「日本語(や韓国語)の語順は英語の語順とは違う」のを指摘して >説明をする文脈ですが、翻訳はいきなり「プログラマー」を仮定して文を書いていますね。 >プログラマーと言えば、韓国人だけではなくアメリカ人やイギリス人もありますから、 >これは理屈が立てない変な文章ですよね。(たとえ韓国人だけ読める韓国語版だとしても、 >やはり「プログラマー」を言うのは変です。) これはやっぱり変ですよね。教えていただきありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2268] Re:韓国からの読者です。
投稿者:ドゥボー
2022/01/30 22:34:55

>ドゥボーさん > >はじめまして。著者の前橋です。韓国からの投稿ありがとうございます。 >私の本を読んでいただき光栄です。 迅速なご回答有難うございます! > >ところで、私は韓国語がまったく分かりませんので、以下の2点について、 >よければ教えていただけないでしょうか。 > >①「普通の日本人には~」について >韓国語版: >http://kmaebashi.com/seiha/korean1.png > >日本語版(旧版): >http://kmaebashi.com/seiha/japanese1.png > >日本語版で「普通の日本人には~」となっている部分は、韓国語だとどのような >意味になっているのでしょうか? ざっとGoogle翻訳で見てみますと、 >「普通のプログラマには~」(?)となっているように見えますが、 >そんなニュアンスでよいのでしょうか? そうですよね。確かに変な翻訳ですね。 私は日本語の原板を読みませんでしたので、この問題を事前には分からなかったんです。 『そして、それは置いておくとしても、この文章を素直に読むと、普通の日本人には「逆じゃないか?」と思えるのではないでしょうか?』 の部分は韓国語にはこういう風に翻訳されるべきだと思われるんですね。 『&#44536;&#47532;&#44256; &#44536;&#44163;&#51008; &#52264;&#52824;&#54616;&#45908;&#46972;&#46020;, &#51068;&#48152;&#51201;&#51064; &#54620;&#44397;&#51064;&#51060;&#46972;&#47732; &#51060; &#47928;&#51109;&#51012; &#44536;&#45824;&#47196; &#51069;&#51008; &#54980; ‘&#48152;&#45824;&#51064; &#44163; &#44057;&#45796;’&#45716; &#45712;&#45196;&#51060; &#46308;&#51648; &#50506;&#49845;&#45768;&#44620;?』 (直訳:そして、それはさて置いても、一般的な韓国人ならこの文章をそのまま読んだ後、「逆だそうだ」と感じませんですか?) 韓国語では、「普通の~」という表現が「一般的な~」よりあまりよく使われませんので、こう翻訳しましたんです。 自分たちのことをあまり「韓国人なら」とかよく言わない韓国語の言語習慣を考えると、 『&#44536;&#47532;&#44256; &#44536;&#44163;&#51008; &#52264;&#52824;&#54616;&#45908;&#46972;&#46020;, &#51068;&#48152;&#51201;&#51004;&#47196; &#51060; &#47928;&#51109;&#51012; &#44536;&#45824;&#47196; &#51069;&#51008; &#54980; ‘&#48152;&#45824;&#51064; &#44163; &#44057;&#45796;’&#45716; &#45712;&#45196;&#51060; &#46308;&#51648; &#50506;&#49845;&#45768;&#44620;?』 (直訳:そして、それはさて置いても、一般的にはこの文章をそのまま読んだ後、「逆だそうだ」と感じませんですか?) の方がもっとよいかも知れませんね。 しかし、韓国語版の翻訳はとても変な翻訳です。 『&#45817;&#49888;&#51060; &#54217;&#48276;&#54620; &#54532;&#47196;&#44536;&#47000;&#47672;&#46972;&#47732; &#51060; &#47928;&#51109;&#51012; &#51069;&#50612;&#48376; &#54980; 「&#48152;&#45824;&#51064; &#44163; &#44057;&#45796;」&#45716; &#45712;&#45196;&#51060; &#46308;&#51648; &#50506;&#49845;&#45768;&#44620;?』 この文章は日本語にすると、こうなります。 『もしあなたが平凡なプログラマーだったら、この文章を読んだ後、「逆だそうだ」と感じませんですか?』 日本語版の文脈は「日本語(や韓国語)の語順は英語の語順とは違う」のを指摘して説明をする文脈ですが、翻訳はいきなり「プログラマー」を仮定して文を書いていますね。プログラマーと言えば、韓国人だけではなくアメリカ人やイギリス人もありますから、これは理屈が立てない変な文章ですよね。(たとえ韓国人だけ読める韓国語版だとしても、やはり「プログラマー」を言うのは変です。) > >「pfはintを返す関数へのポインタ」というような文章では、日本語と英語は、 >語順が逆になります。なので日本語でCの宣言を読もうとすると逆に見えるし、 >正しく読むなら英語で読めばよい、というのがここで書いていることです。 >これは日本語の語順の話ですので、韓国語だとどうなのだろう、というのが >気になっています。 > 韓国語の語順も日本語の語順と一緒で、同じ説明ができます。 (この理由で、世間では「外人のうちに韓国人が日本語を一番易く学ぶ」という話もありますが、漢字のことを除けていえば殆ど事実だと思います。語順が同じで、文法も殆ど同じ、漢語や表現も日本語の影響を多く受けたので、そうだと思われます。) しかし訳者が文脈のことを誤解したようですね。 >②Table3.1について >韓国語版: >http://kmaebashi.com/seiha/korean2.png > >日本語版(旧版): >http://kmaebashi.com/seiha/japanese2.png > >この部分の⑤のところは日本語版では「日本語に訳すと……」になっていますが、 >ここを見ると、韓国語でも、語順は日本語と同じのように見えます。 はい。その通りです。 >韓国の方にとっても、「英語で読め」というアドバイスは、的外れにはなっていない、 >と思ってよいでしょうか。 はい。少なくとも幼い私にはいいアドバイスになりました。 >韓国語版のTable3.1には、日本語版にはある「英語的表現」の列が >なくなっているようで、そこもちょっと不思議です。 その部分は確かに不思議ですね。事情はよく分からないんですけれども、もしかして紙面の都合のためかも知れませんね。 >あいさつの投稿に面倒くさい質問で返してしまって申し訳ありませんが、 >よろしければ教えてください。 いいえ、幼い頃に多く助かった本の著者さんとこうして直接話し合ったり、微力な力でも助けることが出来たり、するのは私にとっては光栄です。こんな機会を下さってとても嬉しいです。 >最近あまり投稿のない掲示板ですみませんが、お待ちしております。 > >よろしくお願いいたします。 改めてご回答有難うございます。 これからもよろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2267] Re:【ご質問】1.3.4 TCPクライアントでWebサーバーを叩
投稿者:(ぱ)こと管理人
2022/01/30 20:55:07

moneさん >■事象 >TcpCliet.javaを実行→client_rect.txtに408ステータスが出力される。(期待結果:200ステータス) これは以前にも同じ現象の問い合わせがありました。 client_send.txt末尾の空行が入っていないと、この現象が発生します。 エディタによっては、最後の空行を勝手に消してしまうものもあるようです。 http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&thread=2132 http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&thread=1960
[この投稿を含むスレッドを表示] [この投稿を削除]
[2266] 【ご質問】1.3.4 TCPクライアントでWebサーバーを叩
投稿者:mone
2022/01/30 20:32:42

管理人様 基礎からのWebアプリケーション開発入門を勉強させていただいているものです。 初歩的な質問で恐縮ですが、ご確認いただけますと幸いです。 ■テキスト 1.3.4 TCPクライアントでWebサーバーを叩く(P25) ■事象 TcpCliet.javaを実行→client_rect.txtに408ステータスが出力される。(期待結果:200ステータス) Apatchは起動しており、http://localhost/index.htmlで「Itr works!」と表示されている。
[この投稿を含むスレッドを表示] [この投稿を削除]