C言語なら俺に聞け! Part 135©5ch.io
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん 転載ダメ©2ch.net
2016/05/10(火) 13:13:49.45ID:3fG5/CbChttp://www.kouno.jp/home/c_faq/
K&R
プログラミング言語C 第2版 ANSI規格準拠
http://www.amazon.co.jp/dp/4320026926
C99
JIS X 3010:2003 プログラム言語C
http://kikakurui.com/x3/X3010-2003-01.html
C11
ISO/IEC 9899:2011 - Information technology -- Programming languages -- C
http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=57853
価格:198 CHF
----
C言語なら俺に聞け
http://echo.2ch.net/test/read.cgi/tech/1408709181/
2014/08/22(金)
【初心者お断り】ガチ規格準拠C専用スレ Part133
http://pc11.2ch.net/test/read.cgi/tech/1201153965/
2008/01/24(木)
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 132
http://pc11.2ch.net/test/read.cgi/tech/1190261457/
2007/09/20(木)
0809デフォルトの名無しさん
2016/06/20(月) 08:24:06.00ID:KuHDgHp4§6.5.3.4
2.
The sizeof operator yields the size (in bytes) of its operand, which may be an
expression or the parenthesized name of a type. The size is determined from the type of
the operand. The result is an integer. If the type of the operand is a variable length array
type, the operand is evaluated; otherwise, the operand is not evaluated and the result is an
integer constant.
evaluateが実行時だとは明言されてないけど
そうじゃないと評価してはいけないということになってしまうから実行時評価がダメってことだろ
整数定数になるとも書いてあるし
0810デフォルトの名無しさん
2016/06/20(月) 08:32:02.75ID:ZolMwWERなってません
0811デフォルトの名無しさん
2016/06/20(月) 09:25:58.23ID:usQ28XEZC言語ではC90では無理だけどC99であれば使える
ただどちらも宣言時のサイズ指定に変数が使えるだけであって、実行時のサイズの動的変更は出来ない
0812デフォルトの名無しさん
2016/06/20(月) 09:39:36.17ID:ZolMwWERなんでこれだけ標準ではないと言ってても調べもせずにそんな事いえるの?
0813デフォルトの名無しさん
2016/06/20(月) 09:55:39.62ID:KuHDgHp4c11ならいくつもでるけど
0814デフォルトの名無しさん
2016/06/20(月) 10:08:53.26ID:usQ28XEZhttps://en.wikipedia.org/wiki/Variable-length_array
0815デフォルトの名無しさん
2016/06/20(月) 10:11:34.42ID:ZolMwWER0816デフォルトの名無しさん
2016/06/20(月) 10:11:44.95ID:yf+QHXB80817デフォルトの名無しさん
2016/06/20(月) 10:13:10.21ID:KuHDgHp4えっ、どこにc++03でも同じって書いてあるんですかね
0818デフォルトの名無しさん
2016/06/20(月) 10:19:18.65ID:usQ28XEZ0819デフォルトの名無しさん
2016/06/20(月) 10:32:36.98ID:ZolMwWERMSVC
0820デフォルトの名無しさん
2016/06/20(月) 10:45:25.73ID:usQ28XEZhttps://msdn.microsoft.com/en-us/library/zb1574zs.aspx
>Variable length arrays are not currently supported in Visual C++.
0821デフォルトの名無しさん
2016/06/20(月) 10:47:39.38ID:ZolMwWER規格にねえつってんだろうが
日本語読めねえの?
0822デフォルトの名無しさん
2016/06/20(月) 10:53:44.69ID:WkXFvEEFつかmsvcが準拠してるのはC89?
0823デフォルトの名無しさん
2016/06/20(月) 10:58:41.00ID:KuHDgHp4個別のコンパイラの話してどうすんだよ
c++03っていうのはc++03の規格の意味であって
あらゆるc++03コンパイラを名乗る者の中で一番多い実装がc++03ではないの
そこら辺分かってない人わりといるよな
0824デフォルトの名無しさん
2016/06/20(月) 10:58:55.23ID:ZolMwWER今はC++の標準かどうかについて話してんの
g++やclang++でも -pedantic 付けると警告でる 厳格モードにするとなんちゃってC++処理系だとでもいうんだろうか?
まあスレ違いだし話通じないしもう黙るわ
0825デフォルトの名無しさん
2016/06/20(月) 11:03:22.54ID:WkXFvEEF0826デフォルトの名無しさん
2016/06/20(月) 14:12:18.68ID:p6+rLIxNコンピュータのメモリ上のデータは全て値だから当然だろ。
0827デフォルトの名無しさん
2016/06/20(月) 14:14:10.68ID:p6+rLIxN手抜きだろ
0828デフォルトの名無しさん
2016/06/20(月) 14:40:44.49ID:o/Q8QvES実行時にどうやって決定するんだろうね
0829デフォルトの名無しさん
2016/06/20(月) 15:47:38.33ID:y3bGvat/それともC++?
0830デフォルトの名無しさん
2016/06/20(月) 15:48:50.28ID:7O0ObdXP違う話題をしたがる人がいるみたい
0831デフォルトの名無しさん
2016/06/20(月) 17:40:16.12ID:bEvQuIcU0832デフォルトの名無しさん
2016/06/20(月) 19:31:58.70ID:qR6j9JAZC++?
0833デフォルトの名無しさん
2016/06/20(月) 20:37:31.93ID:FhfmjeRD0834デフォルトの名無しさん
2016/06/20(月) 20:51:31.85ID:aMWLLxK3追跡する気が全く起きないのがC++
0835デフォルトの名無しさん
2016/06/21(火) 12:46:36.31ID:ScjYRl6x2 (sizeof short)
4 (sizeof int)
8 (sizeof long)
8 (sizeof long long)
4 (sizeof float)
8 (sizeof double)
16 (sizeof long double)
8 (sizeof void *)
1 (sizeof int_least8_t)
2 (sizeof int_least16_t)
4 (sizeof int_least32_t)
8 (sizeof int_least64_t)
1 (sizeof int_fast8_t)
8 (sizeof int_fast16_t)
8 (sizeof int_fast32_t)
8 (sizeof int_fast64_t)
intが最速の型というのは迷信
int_fast8_tはchar=1byteの影響なのか最速ではない(他の3つを見る限り)
という解釈で合ってる?環境はlinux 64bit + clang 3.8.0
0836デフォルトの名無しさん
2016/06/21(火) 13:44:31.02ID:1EIBrQuVレジスタサイズに合わせたら必ず最速になるというものでもない
0837デフォルトの名無しさん
2016/06/21(火) 14:35:10.28ID:ScjYRl6x0838デフォルトの名無しさん
2016/06/21(火) 14:43:31.44ID:KqGcyocS0839デフォルトの名無しさん
2016/06/21(火) 14:46:02.04ID:vVcY9+Oqfast付きが最速だなんて誰が言った?
>>836
8ビットと64ビットでペナルティの違う環境とかいまどきあるのか?
0840デフォルトの名無しさん
2016/06/21(火) 14:46:57.26ID:1Aiu31quその出力通りだとするとその環境の最速は8bitで次に速いのが64bitって事だと思うけど
0841デフォルトの名無しさん
2016/06/21(火) 15:09:46.21ID:ScjYRl6xC99の7.18を抜粋
- 少なくとも指定された幅をもつ最速整数型
(これらの型の幾つかは、同じ型を表してもよい)
実際ヘッダを見ると
typedef signed char int_fast8_t;
#if __WORDSIZE == 64
typedef long int int_fast16_t;
typedef long int int_fast32_t;
typedef long int int_fast64_t;
#else
typedef int int_fast16_t;
typedef int int_fast32_t;
__extension__
typedef long long int int_fast64_t;
#endif
となっていて既存の何らかの型を指していることがわかる
0842デフォルトの名無しさん
2016/06/21(火) 15:46:57.65ID:vVcY9+Oq脚注216読んだ?
0843デフォルトの名無しさん
2016/06/21(火) 15:53:37.43ID:ScjYRl6xleast系とfast系で異なる型を選んでいるのだから根拠があるってことでしょ
0844デフォルトの名無しさん
2016/06/21(火) 16:00:23.13ID:vVcY9+Oqコンパイラ設計者の勘も根拠に入れるならね
0845デフォルトの名無しさん
2016/06/21(火) 22:38:36.75ID:qCRCAI2Yされてたことあった
というか
それがC言語の規格じゃねーの?
0846デフォルトの名無しさん
2016/06/22(水) 09:57:39.86ID:es+zuR1i0847デフォルトの名無しさん
2016/06/22(水) 10:12:20.28ID:t1NluOvj>>839
> 8ビットと64ビットでペナルティの違う環境とかいまどきあるのか?
でっかい配列にアクセスするときなんかじゃ違うだろ
0848デフォルトの名無しさん
2016/06/22(水) 11:10:19.06ID:WHe3DbmRえー、配列まで考えたらleastが最速じゃん
0849デフォルトの名無しさん
2016/06/22(水) 11:16:47.14ID:53iVaND1ってエラーが解決できなくて詰まってる…
0850デフォルトの名無しさん
2016/06/22(水) 11:26:35.37ID:t1NluOvj「ペナルティ」って限定しているんだから、フツー考えるのは配列なんかじゃないのか
キャッシュ関係以外であまりペナルティって言葉使わないだろ
0851デフォルトの名無しさん
2016/06/22(水) 11:28:39.08ID:t1NluOvjエスパーしてみよう
C++, C 混在か?
0852デフォルトの名無しさん
2016/06/22(水) 11:35:33.25ID:cxBIgtwnscanf(%d", pt);
scanf(%d", *pt);
上の書き方が正しいんだけど、下の「*」が付かないのはなんで?
0853デフォルトの名無しさん
2016/06/22(水) 11:53:52.19ID:WHe3DbmRscanfが格納する先をアドレス(ポインタ)で教えてやる必要があるから
0854デフォルトの名無しさん
2016/06/22(水) 11:56:23.49ID:tA6VaAaS・「na」と表記すれば「naの内容」、「&na」と表記すれば「naの場所」になる
・int *pt = &na;でptには「naの場所」が記憶される
・scanf()のパラメータ%dは、指定された「場所」に入力された数字を数値化して書き込む
・「pt」と表記すれば「ptの内容」、「&pt」と表記すれば「ptの場所」になる
・つまりscanf()に渡すべきなのは「naの場所」すなわち「ptの内容」にすべき
・scanf()呼び出しで「pt」の代わりに直接「&na」と書いてもよい
本題
・「*pt」と書くとアドレス解決をした結果、すなわち「naの内容」がscanf()に「場所」として渡ってしまうため、意図しない場所のメモリが書き換えられて誤動作する
0855デフォルトの名無しさん
2016/06/22(水) 12:02:22.96ID:NlKUB6fm0856デフォルトの名無しさん
2016/06/22(水) 12:49:45.24ID:WHe3DbmR*ptがintだと宣言しているのだから一貫している
0857デフォルトの名無しさん
2016/06/22(水) 13:04:29.49ID:sEqYA8cS初心者が必ずハマるのが
・使っているライブラリを指定し忘れてるか名前・場所指定が間違ってるか
・新しく作ったソースをプロジェクトに入れてないか
よくあるのが
・「環境変数や設定を書き換えろ」の説明書きを見落とし/無視してる
0858デフォルトの名無しさん
2016/06/22(水) 13:30:22.89ID:PuXIjiSnint *pt = &na;
は
int *pt;
pt = &na;
宣言のときの*はこれはポインタ変数ですよ、の*
式中で使うときは、その変数の名前で使う。
式中で*がついているときは、参照先の中身。
>>855 言ってるとおり、*に二重の意味があるので初学者は混乱する。
0859デフォルトの名無しさん
2016/06/22(水) 13:42:38.14ID:pxlM+xuZcの発案者がどれだけエラい学者さんだろうが
これは愚かな決め事だったとしか言いようがない
@とか<-とかintptr_tとかあったはず
0860デフォルトの名無しさん
2016/06/22(水) 13:56:30.99ID:3jrXtnQ00861デフォルトの名無しさん
2016/06/22(水) 14:35:19.45ID:tA6VaAaS代替トークンとかあったし
ほとんどの奴は<% %>が{ }の代用になるとか覚えてないだろ
0862デフォルトの名無しさん
2016/06/22(水) 14:39:44.36ID:U6GwwKeZ0863デフォルトの名無しさん
2016/06/22(水) 15:00:20.34ID:DRbO5VgTそういうことか
ポインタの何がわかりにくいのかさっぱりわからなかったんだ
0864デフォルトの名無しさん
2016/06/22(水) 15:08:48.10ID:tA6VaAaS最初見た時何の冗談かと思ったが
0865デフォルトの名無しさん
2016/06/22(水) 18:51:46.90ID:7XAOBQ6z> ほとんどの奴は<% %>が{ }の代用になるとか覚えてないだろ
てか、知らんかった
トライグラフは文字列まで変えてくれるから一度はまって ファ? ってなったわ w
0866デフォルトの名無しさん
2016/06/22(水) 19:49:06.66ID:S4ISOPGK0867デフォルトの名無しさん
2016/06/22(水) 20:29:25.46ID:pxlM+xuZ古代人のための開発環境は既に腐るほどあるわけで最新の規格で扱わなくても保守で困ることはあり得ない
そして過去の環境用に"これから新規開発する少数の変人"のために遺物を残しておくのは不利益の方が多い
0868デフォルトの名無しさん
2016/06/22(水) 20:50:12.11ID:dtkzZf/tGCCもVCもデフォルトではトライグラフ無効だし。
ちなみにC++はC++17で削除予定。Cの規格は追っかけてないけど追従すると思うよ。
0869デフォルトの名無しさん
2016/06/22(水) 21:21:35.14ID:pxlM+xuZ符号修飾(signed unsigned)しない場合のデフォルトを符号有りにした理由は何なのだろう
そもそも正の値より負の値を扱う計算のほうが一般的に珍しくね?と思った
例えば10-5と10+(-5)は同じ結果を得るけど後者は加算器のみで可能とかそういう話かな
0870デフォルトの名無しさん
2016/06/22(水) 21:44:18.74ID:X+fwM1CQunsigned int は、intと比較できない
for()で警告が出る
0871デフォルトの名無しさん
2016/06/22(水) 21:45:12.70ID:X+fwM1CQ0872デフォルトの名無しさん
2016/06/22(水) 22:09:22.60ID:sEqYA8cS0873デフォルトの名無しさん
2016/06/22(水) 22:29:03.25ID:pxlM+xuZ「デフォルトをunsignedと決めた場合」にもそれらの問題は起きるの?
同じタイミングで決めることなんだからunsigned同士なら警告いらないでしょ
>>872
ポインタも配列の要素数も負の値を取らないのにintをsignedにしちゃったもんだから
何も考えずに使う人が多くてsize_tとか作らなきゃいけなくなったんじゃないかと思ってさ
0874デフォルトの名無しさん
2016/06/22(水) 22:46:24.05ID:hUvfpcAH0875デフォルトの名無しさん
2016/06/22(水) 22:54:28.38ID:cYYCz91d整数型なんて本来signedだけでいいはずだしな
0876デフォルトの名無しさん
2016/06/22(水) 23:12:26.36ID:pGQ5Vs/Rデフォルトで符号有りが妥当な考えだと思うけどな
0877デフォルトの名無しさん
2016/06/22(水) 23:50:20.87ID:Qv152JkA加算の計算コストが一番安いから
0878デフォルトの名無しさん
2016/06/23(木) 00:03:27.53ID:bf4RaDco0879デフォルトの名無しさん
2016/06/23(木) 00:09:27.13ID:zQLdlEzoMS-DOSが動くPC-9801と、MS-DOSで動作するCコンパイラを買え。
毎日の食事は卵かけご飯で決まり。
0880デフォルトの名無しさん
2016/06/23(木) 00:19:41.35ID:tS35hTSkラズパイで
0881デフォルトの名無しさん
2016/06/23(木) 00:19:54.21ID:Izcr7CYqてか手元にあるな。Anex86 とか。w
0882デフォルトの名無しさん
2016/06/23(木) 00:29:16.33ID:zQLdlEzo0883デフォルトの名無しさん
2016/06/23(木) 00:40:21.23ID:zQLdlEzo実機持ってるなら貧乏ちゃう
0884デフォルトの名無しさん
2016/06/23(木) 00:41:19.32ID:zQLdlEzo0885デフォルトの名無しさん
2016/06/23(木) 00:57:51.20ID:QS3nj8980886デフォルトの名無しさん
2016/06/23(木) 01:23:16.88ID:EI7DtIWpDigital Mars C/C++ Compiler Version 8.57 (3662658 bytes) (NEW!)
Contains:
Win32 console versions of the tools
C and C++ compilers
http://www.digitalmars.com/download/freecompiler.html
バージョンは、8.52, 8.53, 8.57
どれがいいのかわからん
0887デフォルトの名無しさん
2016/06/23(木) 01:25:51.66ID:EI7DtIWpCode::Blocks 16.01 is here!
Written by MortenMacFly
Thursday, 28 January 2016 10:21
Code::Blocks
http://www.codeblocks.org/
0888デフォルトの名無しさん
2016/06/23(木) 05:57:26.88ID:woen2Xgdジャンクノート買ってLinuxでも入れるのが安上がりかな。
仮想マシンを使えるなら追加投資なしでいけるのかもしれん。
富豪的プログラミングの反対の意味で貧乏ってことなら
MS-DOSが動く環境を用意してLSI-Cの試食版じゃないかな。
0889デフォルトの名無しさん
2016/06/23(木) 09:15:39.13ID:B9t9g5hk0890デフォルトの名無しさん
2016/06/23(木) 09:17:21.14ID:ja5rLTYk0891デフォルトの名無しさん
2016/06/23(木) 09:51:16.87ID:B9t9g5hk0892デフォルトの名無しさん
2016/06/23(木) 10:24:23.38ID:ZQfpp6dv10年以上前に終わってるツール勧めるな
0893デフォルトの名無しさん
2016/06/23(木) 10:26:49.93ID:ZQfpp6dvそりゃベジタリアンの間違いだろ
0894デフォルトの名無しさん
2016/06/23(木) 12:50:41.20ID:woen2Xgd単にメモリやらCPU速度をふんだんに使うこと、じゃないのね。
元々はユーザインターフェースに関する提言だったのか。
わざと利用可能な容量を制限する環境を作って省メモリを強要しても、
富豪的プログラミングの反対としての貧乏プログラミングにはならないな。
貧乏くさい(非力な)環境ということに訂正させてくれ。
よりリソースの制限を厳しくするならPICボードとかになるのかも知れんが。
0895デフォルトの名無しさん
2016/06/23(木) 13:39:52.13ID:h9AvRner0896デフォルトの名無しさん
2016/06/23(木) 15:32:50.69ID:tLxppfzL最近のポケコンはCコンパイラ動くのか?
0897デフォルトの名無しさん
2016/06/23(木) 16:31:51.23ID:woen2Xgd現行機種ではないかも。あとインタープリタ方式だったかも知れぬ。
0898デフォルトの名無しさん
2016/06/23(木) 17:07:27.02ID:bDeXs6rpビットフィールド駆使したメモリマネージャ書いて数KBのメモリで全てやりくりするとか
考え方の問題だから
0899デフォルトの名無しさん
2016/06/23(木) 19:00:04.78ID:GLhtmsq7あー、買ったけど開封してないや。
x86 の tinymodelで作ればいいんじゃないかな?
0900デフォルトの名無しさん
2016/06/23(木) 22:40:16.82ID:xBkC1ONT節約のためにはどんなに手間がかかってもいいみたいな。
0901デフォルトの名無しさん
2016/06/24(金) 06:18:53.90ID:N/UhjoM3ポケコンなんて高い物、貧乏人は買えない。
0902デフォルトの名無しさん
2016/06/24(金) 07:04:47.89ID:fBO9F9sDポケコンなめんな
PC-1501 フルセット揃えたら 10万越えたし
0903デフォルトの名無しさん
2016/06/24(金) 09:42:10.08ID:B5CtlbEH0904デフォルトの名無しさん
2016/06/24(金) 10:02:57.16ID:k6zNHW440905デフォルトの名無しさん
2016/06/24(金) 12:41:58.93ID:5w3PkobHとうとう >>903 もボケはじめたのか...
0906デフォルトの名無しさん
2016/06/24(金) 21:12:35.00ID:FIkQEcYv0907デフォルトの名無しさん
2016/06/24(金) 21:25:18.93ID:pDNM0BDJ0908デフォルトの名無しさん
2016/06/24(金) 22:11:47.68ID:5w3PkobHHP-35 かな
http://www.dentaku-museum.com/calc/calc/51-hp/hp/hp.html
レス数が900を超えています。1000を超えると表示できなくなるよ。