!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
※前スレ
C言語なら俺に聞け 156
https://mevius.5ch.net/test/read.cgi/tech/1601271690/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 157
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0345-kMi9)
2021/06/28(月) 11:22:51.50ID:so+vl3vs02デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/28(月) 11:26:33.76ID:so+vl3vs0 前スレ末期の流れを再掲
> 996 自分:デフォルトの名無しさん (ワッチョイ 0f45-Sffs)[sage] 投稿日:2021/06/28(月) 09:33:23.09 ID:so+vl3vs0 [1/2]
> printf("%d", sizeof (char)123); とやろうとしたら
> キャストのカッコがsizeofのカッコと解釈されてエラーになるのな
> printf("%d", sizeof((char)123)); ならおkなんだけど
> なんだか気持ち悪い
>
> 997 返信:デフォルトの名無しさん (ワッチョイ cf05-Ibo0)[sage] 投稿日:2021/06/28(月) 10:13:18.97 ID:x/UkG1ge0
> >>996
> sizeofって括弧なしで使えるの? 知らなかった
>
> 998 返信:デフォルトの名無しさん (ワッチョイ 0fda-qjGA)[sage] 投稿日:2021/06/28(月) 10:20:43.69 ID:WejOUFlX0
> >>996
> sizeof演算子の優先順位はcast演算子の優先順位より高いので、括弧がないと
> まず最初にsizeofと数値リテラルが評価されてその後でその結果をcastで評価するという
> おかしな状態になるのでエラーになったのでは?
>
> 999 自分:デフォルトの名無しさん (ワッチョイ 0f45-Sffs)[sage] 投稿日:2021/06/28(月) 10:38:03.51 ID:so+vl3vs0 [2/2]
> sizeofとキャストはどちらも単項式なので右から結合するはず
> にも関わらずキャストが先に読まれないので気持ち悪いと言ったんだ
> 字句解析と意味解析ってことかな
>
> 1000 名前:デフォルトの名無しさん (ワッチョイ 0fd2-kMi9)[] 投稿日:2021/06/28(月) 11:05:48.75 ID:HW6dR9O/0
> そもそも
> sizeof (char)
> paだけでいいものをそう記述してるのが気持ち悪い。
> 996 自分:デフォルトの名無しさん (ワッチョイ 0f45-Sffs)[sage] 投稿日:2021/06/28(月) 09:33:23.09 ID:so+vl3vs0 [1/2]
> printf("%d", sizeof (char)123); とやろうとしたら
> キャストのカッコがsizeofのカッコと解釈されてエラーになるのな
> printf("%d", sizeof((char)123)); ならおkなんだけど
> なんだか気持ち悪い
>
> 997 返信:デフォルトの名無しさん (ワッチョイ cf05-Ibo0)[sage] 投稿日:2021/06/28(月) 10:13:18.97 ID:x/UkG1ge0
> >>996
> sizeofって括弧なしで使えるの? 知らなかった
>
> 998 返信:デフォルトの名無しさん (ワッチョイ 0fda-qjGA)[sage] 投稿日:2021/06/28(月) 10:20:43.69 ID:WejOUFlX0
> >>996
> sizeof演算子の優先順位はcast演算子の優先順位より高いので、括弧がないと
> まず最初にsizeofと数値リテラルが評価されてその後でその結果をcastで評価するという
> おかしな状態になるのでエラーになったのでは?
>
> 999 自分:デフォルトの名無しさん (ワッチョイ 0f45-Sffs)[sage] 投稿日:2021/06/28(月) 10:38:03.51 ID:so+vl3vs0 [2/2]
> sizeofとキャストはどちらも単項式なので右から結合するはず
> にも関わらずキャストが先に読まれないので気持ち悪いと言ったんだ
> 字句解析と意味解析ってことかな
>
> 1000 名前:デフォルトの名無しさん (ワッチョイ 0fd2-kMi9)[] 投稿日:2021/06/28(月) 11:05:48.75 ID:HW6dR9O/0
> そもそも
> sizeof (char)
> paだけでいいものをそう記述してるのが気持ち悪い。
3デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/28(月) 11:28:49.59ID:so+vl3vs0 >>前スレ1000
いやcharのサイズが知りたいのではなく
キャスト式(char)123のサイズを調べようとしたんだ
Cはchar変数の値を使おうとするとintに拡張するし文字定数もint型なので
char型の値を持つ式なんてあるのかって
いやcharのサイズが知りたいのではなく
キャスト式(char)123のサイズを調べようとしたんだ
Cはchar変数の値を使おうとするとintに拡張するし文字定数もint型なので
char型の値を持つ式なんてあるのかって
4デフォルトの名無しさん (ブーイモ MM0f-iMxR)
2021/06/28(月) 11:37:03.08ID:XSoi24UgM cppreferenceのc operator precedenceの項の注釈によるとオペアンドはtype castにはできないって書いてあるね。ただ仕様書の該当箇所は探せなかった
5デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/28(月) 11:58:43.53ID:so+vl3vs0 脚注2は俺が気持ち悪いと言ったことと似てるけどsizeof(int)*pが
(sizeof(int)) * pという算術乗算になるという話なら単項式のsizeofより優先順位が低いからまだわかる
(sizeof(int)) * pという算術乗算になるという話なら単項式のsizeofより優先順位が低いからまだわかる
6デフォルトの名無しさん (ブーイモ MM0f-iMxR)
2021/06/28(月) 12:57:31.08ID:XSoi24UgM A.2.1が引用元みたいなんで読んでみるとsizeof (int)123はダメだね。
sizeof +(int)123なら動くようだ。sizeof (int){1}も動きそう。
sizeof +(int)123なら動くようだ。sizeof (int){1}も動きそう。
7デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/28(月) 15:54:14.85ID:so+vl3vs0 あーそうか
A.2.1. (6.5.3)では
unary-expressionに該当するものの1つに
unary-operator cast-expressionがあるけど
unary-operatorにキーワードsizeofが含まれず、
カッコなしのキャスト式は
sizeof unary-expressionとなっていて
sizeof cast-expressionではないってことか
A.2.1. (6.5.3)では
unary-expressionに該当するものの1つに
unary-operator cast-expressionがあるけど
unary-operatorにキーワードsizeofが含まれず、
カッコなしのキャスト式は
sizeof unary-expressionとなっていて
sizeof cast-expressionではないってことか
8デフォルトの名無しさん (ワッチョイ 3fad-wfqF)
2021/06/29(火) 00:32:13.44ID:jRoYjmsV0 ところで sizeof((char) 123) と sizeof(char) って同じことだよな?
9デフォルトの名無しさん (ブーイモ MM53-FyAt)
2021/06/29(火) 01:01:59.00ID:cYz04uBKM ポインタキャストは敷居線さえ跨がなきゃ思い通りの値出てくるけど
数値キャストは難しいんだよな
数値キャストは難しいんだよな
10デフォルトの名無しさん (アウアウウー Sad3-TUf5)
2021/06/29(火) 01:04:11.67ID:lZY/6JCta >>8
GCC 9.3.0 では両方とも 1 でした
GCC 9.3.0 では両方とも 1 でした
11デフォルトの名無しさん (ブーイモ MM53-FyAt)
2021/06/29(火) 01:05:05.10ID:cYz04uBKM printf さんの独自性もあるし
12デフォルトの名無しさん (ワッチョイ 3fad-wfqF)
2021/06/29(火) 02:00:52.74ID:jRoYjmsV0 >>10
ていうかやるまでもなく結果が同じにならないとおかしいよね。
一方は値を char 型にキャストしているんだから sizeof の結果は char 型のサイズになる。
もう一方は char 型のサイズを求めているから char 型のサイズになる。
ていうかやるまでもなく結果が同じにならないとおかしいよね。
一方は値を char 型にキャストしているんだから sizeof の結果は char 型のサイズになる。
もう一方は char 型のサイズを求めているから char 型のサイズになる。
13はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-0Yon)
2021/06/29(火) 04:29:15.93ID:OP5z1lEO0 二項演算子のいくつかでは汎整数拡張が適用されることになっているが
sizeof に渡す分には char のオブジェクトは char のオブジェクトだよ。
sizeof に渡す分には char のオブジェクトは char のオブジェクトだよ。
14デフォルトの名無しさん (ワッチョイ 0fd2-hdpQ)
2021/06/29(火) 08:37:44.49ID:F75/2W0I0 char型 + char型 の式でもint型に拡張されるんだっけ?
15デフォルトの名無しさん (スッップ Sd5f-OBU1)
2021/06/29(火) 13:20:32.79ID:f0Xm8hptd もち
単項プラスでさえ拡張する
単項プラスでさえ拡張する
16デフォルトの名無しさん (ワッチョイ cfbb-0Yon)
2021/06/29(火) 13:41:07.94ID:dKjX5GmV0 typedefによる新しい型の定義って、コンパイラの工程的にはどの工程で定義されるの?
字句解析?構文解析?プリプロセスじゃないよね
字句解析?構文解析?プリプロセスじゃないよね
17デフォルトの名無しさん (ワッチョイ 3f66-j5Ba)
2021/06/29(火) 14:16:01.66ID:NxeKtV2S0 質問が間違ってる気がするけどね。
コンパイルレベルで処理されるのか、リンクするまで処理されないのか、でしょ。
で、typedefは前者
コンパイルレベルで処理されるのか、リンクするまで処理されないのか、でしょ。
で、typedefは前者
18デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/29(火) 20:18:28.43ID:SX14oDOe0 翻訳段階の何番目でやってんのかって質問だろ
19デフォルトの名無しさん (ワッチョイ 0f01-htoQ)
2021/06/29(火) 20:52:30.02ID:0ahpifum0 構文解析の後 typedef と認知したうえで、シンボルのテーブルに追加してかないと
置換?読み替え?はできないよねぇ…
C言語は、その構造上1回の通読では解決できないんだっけ?
置換?読み替え?はできないよねぇ…
C言語は、その構造上1回の通読では解決できないんだっけ?
20デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/29(火) 21:06:15.61ID:SX14oDOe0 5.1.1.2 Translation phasesくらい読んでから来いよ
21デフォルトの名無しさん (ワッチョイ 3f66-j5Ba)
2021/06/29(火) 22:00:49.44ID:NxeKtV2S0 だからぁw
構文解析ってのはパーサね?w←これは例えばbisonで作るやつね?w
字句解析ってのはレキシカルアナライザね?w←これは例えばflexで作るやつね?w
レキシカルアナライザかパーサかって、そもそもレキシカルアナライザってのは
字句区切るだけだよwそれをどんな命令であるかを解釈を決めるのが構文解析ねw
コンパイルの1pass,2passって話なら、まあそれでもいいけどさw
用語がでたらめすぎんでしょ。
だいたいそんなこと知ってどうするんだよ?w
構文解析ってのはパーサね?w←これは例えばbisonで作るやつね?w
字句解析ってのはレキシカルアナライザね?w←これは例えばflexで作るやつね?w
レキシカルアナライザかパーサかって、そもそもレキシカルアナライザってのは
字句区切るだけだよwそれをどんな命令であるかを解釈を決めるのが構文解析ねw
コンパイルの1pass,2passって話なら、まあそれでもいいけどさw
用語がでたらめすぎんでしょ。
だいたいそんなこと知ってどうするんだよ?w
22デフォルトの名無しさん (ワッチョイ 3f36-wfqF)
2021/06/29(火) 22:05:17.86ID:gp7v5PNW0 セキュリティホール探し?
23デフォルトの名無しさん (ワッチョイ cfbb-lfrx)
2021/06/29(火) 23:35:14.00ID:dKjX5GmV0 Cの構文解析器実装してるんだけどBNFのtypedefの扱いがイミフなんだよねー
24デフォルトの名無しさん (ワッチョイ 3f66-YS6X)
2021/06/29(火) 23:57:55.23ID:NxeKtV2S0 >>23
またぁw
BNF関係ないでしょうw
つか、typedefなんて意味不明なんてことはないと思うけど。
特定の記法のことを指してるの?BNFで書かれた
typedefの規則が読みとれないって言ってるの?w
typedef struct {...};
と
struct {...} xxx;
を区別できないとかそんな話?
よくわかんないけど、変に切り出すんじゃなくて、
ストレートにこれがやりたいけど、これどうしたらいいか
わかんない、って聞く方がいいと思うんだが。
なにいってんだか、知ってる人ほど却ってわかんねーと思うんだが。
またぁw
BNF関係ないでしょうw
つか、typedefなんて意味不明なんてことはないと思うけど。
特定の記法のことを指してるの?BNFで書かれた
typedefの規則が読みとれないって言ってるの?w
typedef struct {...};
と
struct {...} xxx;
を区別できないとかそんな話?
よくわかんないけど、変に切り出すんじゃなくて、
ストレートにこれがやりたいけど、これどうしたらいいか
わかんない、って聞く方がいいと思うんだが。
なにいってんだか、知ってる人ほど却ってわかんねーと思うんだが。
25デフォルトの名無しさん (ワッチョイ 3f01-kMi9)
2021/06/30(水) 00:35:54.93ID:dsegDYOD0 typedefがstorage-class specifierに属してることを言ってるなら
構文上の便宜のためだけ(for syntactic convenience only)って6.7.1(5)に書いてあるけど
Annexのsyntax summaryだけ見てる感じかな
かなりエスパーしてるから的外れだったらすまぬ
構文上の便宜のためだけ(for syntactic convenience only)って6.7.1(5)に書いてあるけど
Annexのsyntax summaryだけ見てる感じかな
かなりエスパーしてるから的外れだったらすまぬ
26デフォルトの名無しさん (ワッチョイ cfbb-lfrx)
2021/06/30(水) 01:02:59.78ID:xHlidKVh0 みなさんレスありがとう
「C BNF」でググって一番上に出るBNFを参考に実装しているんだけど、BNFが古いせいかtypedefの構文が欠落してるような気がして(気のせいでした。↓のレス参照)
でも<typedef-name>という要素はあるからtypedef機能自体はあるらしい
BNFに書いてないってことは構文解析以前の処理になるのかもしれないと思ってここで聞いてみたんだけど
混乱した人もいるみたいですまない
>>25
あー!そういうことですか
なるほど疑問が解けました
typedefをspecifierで扱ってるわけですね
ありがとうございます
「C BNF」でググって一番上に出るBNFを参考に実装しているんだけど、BNFが古いせいかtypedefの構文が欠落してるような気がして(気のせいでした。↓のレス参照)
でも<typedef-name>という要素はあるからtypedef機能自体はあるらしい
BNFに書いてないってことは構文解析以前の処理になるのかもしれないと思ってここで聞いてみたんだけど
混乱した人もいるみたいですまない
>>25
あー!そういうことですか
なるほど疑問が解けました
typedefをspecifierで扱ってるわけですね
ありがとうございます
27デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/30(水) 06:48:58.92ID:tpFz8l2w028デフォルトの名無しさん (ワッチョイ cfbb-lfrx)
2021/06/30(水) 09:43:56.46ID:xHlidKVh029デフォルトの名無しさん (ワッチョイ b6da-xL6t)
2021/07/17(土) 09:12:05.75ID:17h8nqYk0 リスト型構造体配列って他の言語でもあるのでしょうか?
現在職業訓練で勉強中なのですが、独学でやらないといけない範囲のようでして、
時間的余裕があまりない状態です。
他言語でも似たような考えが出てきて、Cで覚えておくと役立つなど
ございましたら、頑張って挑戦してみようと思っています。
現在職業訓練で勉強中なのですが、独学でやらないといけない範囲のようでして、
時間的余裕があまりない状態です。
他言語でも似たような考えが出てきて、Cで覚えておくと役立つなど
ございましたら、頑張って挑戦してみようと思っています。
30デフォルトの名無しさん (ブーイモ MM0e-xXJe)
2021/07/17(土) 12:16:52.25ID:xP6i4weKM リスト型構造体配列ってのは講師の人の自作用語?
それなら定義を示してもらわんと。
それなら定義を示してもらわんと。
31デフォルトの名無しさん (ワッチョイ aabd-WluE)
2021/07/17(土) 12:38:05.00ID:+M7J9sQi0 リンクリストなら他の言語にもある
普通は配列とは言わないからその言葉は謎だけど……
普通は配列とは言わないからその言葉は謎だけど……
32デフォルトの名無しさん (ワッチョイ 9501-zSg9)
2021/07/17(土) 13:34:21.36ID:e6axNbpd0 ポインタの代わりに配列のインデックスを保持してるような感じなのかね?
リスト型構造体配列
リスト型構造体配列
33デフォルトの名無しさん (ワッチョイ c628-0cQV)
2021/07/17(土) 16:17:40.91ID:USprSk230 C99かそれ以降の標準的な環境において
(bool)someval
と
!!someval
って(例外なしに)全くおなじ効果を生むと思っていいですか。
前者はJISX3010の6.3.1.2などで「値が0になるなら0,それ以外なら1」と書かれている一方,
後者は(初学者なので経験がなく,正しい認識ではないかもしれませんが)慣用的な書き方なので
規格票にも書かれておらず,正確に同じ意味なのかどうかを確かめられませんでした。
(bool)someval
と
!!someval
って(例外なしに)全くおなじ効果を生むと思っていいですか。
前者はJISX3010の6.3.1.2などで「値が0になるなら0,それ以外なら1」と書かれている一方,
後者は(初学者なので経験がなく,正しい認識ではないかもしれませんが)慣用的な書き方なので
規格票にも書かれておらず,正確に同じ意味なのかどうかを確かめられませんでした。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【前橋市】小川晶前市長とラブホテルで打ち合わせをした54歳男性職員を停職処分 今月末で依願退職するという [シャチ★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★2 [ぐれ★]
- 【埼玉】「無免許で高速道路で事故」トラックの追突事故で10代男性死亡 無免許過失運転致死の疑いでトルコ国籍の男(22)逮捕 戸田市 [ぐれ★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 広島・廿日市、おこめ券配布せず 全市民に3000円現金給付へ [どどん★]
- 【警視庁】走行中の電車で女性に露出した下半身押しつけたか 無職の男(46)逮捕「チャンスがあればいつでもやる」 [nita★]
- 【実況】博衣こよりのえちえちチーズケーキを仕込み(雑談あり)🧪★2
- じゃあ何券だったら、日本人は満足したんだよ [452836546]
- 石破「日中関係は最新の注意払うべき」ヤフコメ大激怒してしまう [163661708]
- 【速報】1ポンド210円で日英GDP逆転(残り1.5円)...世界6位の経済規模に転落 [237216734]
- 朝日新聞記者「中国軍のレーダー照射はこめかみに銃を突きつけられたのと同じ。僕なら反撃して撃墜してる」高市 [931948549]
- 維新議員、キャバクラマネー返金へ→「今回は返金する」「ポケットマネーでやるには限界がある」 [834922174]
