C言語なら俺に聞け 144
レス数が950を超えています。1000を超えると書き込みができなくなります。
簡単に書くわ
signed char var = 255;
↑これが何故格納できるのかわからない。 >>868
さっきまでunsigned言うてたのに… >>868
signed charでは-1を意味しているけど
中身は同じ8bit(2進数で表すと11111111)だから格納はできる 何が分からないのか、それがよく分からない
1ビットなら、0,1
2ビットなら、0,1,2,3
3ビットなら、0,1,2,3,4,5,6,7
・
・
・
・
8ビットなら、0,1,2,3,4,5,6,7.....253,254,255
指折るなりしてちょっと考えてみよう >>861
それは255という数値を "255" という文字列に変換しているね
0〜255 の「数値」は 8 ビット = 1 バイトで表現できますよ >856
Edgar Dijkstra: Go To Statement Condidered Harmful
Communications of the ACM 11, 3(March 1968) 147-148
というように、ダイクストラ大先生が権威ある
Communications of the ACM
にお書きになっていますが。
この論文は検索すれ読めますよ。 >>868
数値としての255だからだよ。コンパイラが"255"の文字の並びを見て数値の255として扱って8bitのvarを初期化するコードを作ってくれるの。 >>877 そんなのネットですぐ分かるだろ、と「コンディダード」を検索したら
5ちゃんねるの「C言語なら俺に聞け 144」て掲示板の投稿877番がトップに出た。
最新のネット用語で言うところの「モルゲッソヨ」みたいな感じね。 >>875
だからその
> Go To Statement Condidered Harmful
って言うタイトルはダイクストラじゃなくてニクラウス・ヴィルト(Pascal作った人)が付けたって話な
ちなみに本人がつけたタイトルは A Case Against the Goto Statement
そもそも論文の中身を読めばgoto有害一辺倒でないこともわかる
読んでない知ったかさんがタイトルだけで騒ぎすぎ w >>876
なるほど、数値だから格納できるのか。
仕組みに関しては初心者が触れたら戻ってこれなさそうだから
「そういう物」って感じに覚えておくよ。 >>881
> 「そういう物」って感じに覚えておくよ。
まずはそれでいい
そのうち、あ〜そういうことね、ってわかる日が来るから CとC++、C#の違いすら把握していない初心者だけど
構造体っていうのはC++にのみあってCにはない概念なの?
ポインタはCにもあるよね? >>1
>>1 > C言語の話題のみ取り扱います
どうぞお帰りください >>886
そうかな?
MISRA-Cの一つの出口の原則を守りつつ、ネストもあまり深くならない。
問題と言えば、一瞥して「これはヒドい」と思う人がいるのと、retの評価コストと、retの使い方に一貫性を持たせないとバグを生むリスクくらいじゃないかな? 簡単なSTGが作れるようになったが次は何を勉強したらいいんだ?
まだまだわからないことだらけだ
指定子だとかポイントだとかアロー演算子だとかまだまだ >>890
自分が作りたいものがないんならやる意味ないよ >>892
ゲームボーイのQビリオンの動画を見ると
実装方法が自ずと思い付く >>891
そんな意味なんて人それぞれやん…
バカじゃねえの >>890
time_t とか struct time とか使って書いたことある? >>890
時間制限付きの算数ドリルなんてどうや? 宿題もたいがいだけど、その上をいくな
(既に〆てる奴なら上位の回答見れないのけ?) プログラムはある程度かけるけどそういうコンテストみたいなのってからっきしダメなんだよなあ
将来これでやってけるのか不安 プログラミング・コンテスト・チャレンジブック、第2版、2012
1年掛けて、この本の問題をやれば? 与えられた希望一覧の中の希望を1番多く叶えられるようなチェック柄の位置に対する叶えられる与えられた希望の数を求めるらしい(´・ω・`) 複数の条件 (xi,yi,ci) ci =白か黒 と 市松模様の大きさ K
KxK の市松模様を任意の位相でプロットし(=(周期2Kの中で)位相を適当に振ったとき)
与えられた条件をできる限り満たしたい。 変数は位相
解で要求されているのは満たした条件数 シカくんが塗りたいマスの一覧
シカくんは出来るだけ多くのマスを塗りたいらしい。 出来るだけ多くのマスを塗りたい(希望一覧の中のマスの中で) どうやるの?
パターンを全種類生成してから条件に合わないものを弾いていくの?
数学苦手だから分からない>< あー。なんとなくわかってきたぞ。白か黒かに塗りたいのはその指定された座標の1マスだけということか。
その希望を実現するためのマス目を求めるってこと?
でもその出力例ってなんなの?数字一つしか出力されてないけど。なんの値が出力されてるの?マス目の一辺の長さ? 希望を出来るだけ多く満たせるようなチェック柄の位置に対する満たせる希望の数を出力するらしい わからんw
しかし、わかる必要性もないような気がしてきたw
わからない事はわからないままにしておこう。
きっと今はその時ではないのだ。 シカくんが塗りたいマスで実際に塗れるのは何個か求めるんだよ(>_<) N=100000、K=1000の場合、考え得る模様のパターン数は幾つになるのかな?
全部計算するのに何分かかる?
生成パターンを保存するためのメモリ容量は何MB必要? 模様のパターンは 2K × 2K 通りで時間はO(N×K^2) >>920
もうよい。昔の事は忘れようではないか。w
ていうかここでこの話続けるのもスレチな感じがしてきた。C言語かどうかの問題じゃないし。 確かにパズルの解き方の部分と、Cによる実現は別々に考えた方が良さそう。
それにしても問題文が酷いね。
たぶん元は外国語で、サイエンティフィック・アメリカン誌の
読者への問題コーナーみたいなノリの文章だったんだろうけど、
日本人向けにはまるまる再構成すべきだわ。 解き方のイメージとしては↓こんな感じ?
x = (x[i] /K) & 1;
y = (y[i] /K) & 1;
c = x^y;
if (c1==c) count++; ニキ質問!
頑張ってくるCといかいうサイト終わりそうなんだけど、2冊めってか次やるなら何がいいっすか? >>927
そのサイトは知らないけど、解説読んだり課題解くだけじゃ大して進歩しないから、とにかく自分でコード書いて悩んで調べて考えて乗り越えるのを繰り返してみたら。やってるうちに自分が理解していないのはどこか、自分がやりたいことに必要な物が何か分かると思う。
あと、こういうことやりたいのにこんなめんどくさい方法しかないの?って思うようなことは既に上手いやり方が確立してたりするから、そういうのも一度自分で経験してから身につけると理解が深まると思うよ。 >>927
「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得
↓
「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する
↓
「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得
↓
「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ
↓
「C言語デバッグ完全解説」でバグに強いプログラムの記述法をマスター
↓
「Code Complete(上)(下)」でより良いC言語プログラムとは何かを各人で考察する
↓
神の誕生 神だってお
どんだけレベル低いんだよ
まあレベルの問題でもないんだが
なにがしか発明をしてやっと神界の入り口だぞ 青色LEDとかflashメモリーとか発明して初めて神の領域 己の創りたもうた世界に住人がいなきゃ
どんなにレベルだけ高くても神と呼んでくれる人がいない ハードなんかいくら発明したって、神になれる訳ないよ >>933
その場合は呼んでくれる人が居なくても最初から神に確定してるのでどうでもよい。
まあしかし夢の中では夢の世界を作ったのは自分なのに、その夢の中の登場人物は特に崇めてくれないのと同様に、本物の神は普通は崇められていない。 ん、俺はあくまで喩え話をしていたんだが
ガチの宗教論になってきたのか? 宗教論なら、gotoは悪とかreturnは関数末にひとつだけ論とかやろうぜ? 質問。
1/3を3回、6回、9回足し合わせる計算を単精度と倍精度でそれぞれ行うプログラムを作ったんだけど、
6回足したときの結果が単と倍で逆転しているような気がする
これってプログラムがおかしい?それともこうなるようになってる?
プログラム
https://imgur.com/ncjlu.jpg
実行結果
https://imgur.com/QpRfO.jpg >>940
10進数に直した時に小数点以下20桁ないからそうなるだけでは?
どちらも本当はだめなんだけどビット数の都合でうまいこと10進で丸まる事があるだけだと思うが。 >>940
これと同じなら10進数では小数点以下は15桁だ。
http://www.cc.kyoto-su.ac.jp/~yamada/programming/float.html 分数を実数で扱うからこうなる。
分数なら分数のまま、分子と分母が扱える型を使って計算しろ。 分数なら、Ruby の、Rational とか
浮動小数点は、常に誤差があるから、
正確な値は表せないから、== で比較もできない
また、式の順番を入れ替えたり、コンパイル時・実行時で、
同じ式でも値が異なるとか、とにかく実装依存 C使いにオヌヌメするならC++だろ
分数クラスはないが、標準にgcd関数があるから
小学校の算数ができる人ならすぐ自作できるし、
ratioなら翻訳時評価までできる >>930
紹介してる本は良いものだと思うけど、入手性はどう?
今でも新本で買えるのかな。
…いや、俺の経験じゃ古本屋ではついぞ見かけなくてね。 cでカーネルとか書いたことないからアレなんだけどmalllcとかfopenとかどうやって書いてるのかしりたい >>947
ターゲットのOS、CPU、コンパイラーのC実行時ライブラリー(C runtime; CRT)のソースを探せ。 malloc() の原理というか基礎的な実装方法は
『プログラミング言語C』で1章割いてた記憶がある。
まるまる1章じゃなかったかも知れんけど。
あとは「標準ライブラリのmalloc()は遅くて使い物にならん」と言って
でかいメモリブロックをひとつだけシステムから借り受けた後、
小分け部分は自前で管理する実装がネットのあちこちで紹介されてる。
TLSF とかいうアルゴリズム。 >>947
その辺は glibc とかがソース公開してるんじゃないかな。
でもそんなに難しくないよ。
ある程度わかってくると自作もできる筈。
既にあるので作る意味ないけどな。 >>951
その小分けの階層構造に愕然とはしなかったのか 若者はinetdのソースを是非読んで欲しい。
貧乏くさくて涙ちょちょぎれるぞ。 最近組み込みやデバイスドライバでもC++使われるのが増えてきたけど、Cの未来ってあるのかな? 縮小傾向はあるのでは?しかし、UNIX系OSが根強いから中々なくならんだろうけどね。
特に Linux が組み込み関係や Android で物凄く広まってほぼ定着してしまったからな。 組み込みLinuxやAndroidではC言語ってそんなに使われてないと思うが 例えば組み込みLinuxとして有名なRaspbianではPython、またAndroidではJavaが主流
直接カーネルでも弄るような特殊な事例を除けば、C言語でのアプリ開発なんか殆ど誰も行なわないだろ C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために
さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが
簡単に生産されるようになってる。正直いって、C を選ぶ理由が C++ プログラマーを
追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
つまりこういうことだ: C を選ぶのは、唯一のまともな選択だ。
ぼくは C よりも C++ をプロジェクトに使いたがるようなプログラマーは、みな
*本当に* ムカつかせておきたいようなプログラマーだという結論に達した。
C++ はトンでもなく悪い設計の元になりうる。どうせこの言語ではいつも STL やら
Boost やら、その他ゲロゲロベロベロの「素敵な」ライブラリの機能を使って、
それがあんたのプログラムに「役立つ」んだろうが、以下のことが起きる:
- うまく動かないときにもたらされる際限のない苦痛
- 非効率な抽象プログラミングモデルで、2年たった後にこれらが実はそんなに
効率的じゃなかったことに気づくケース。
言いかえれば、唯一まともで、効率がよくて、システムレベルで使えて、移植性がある
C++ ってのは、基本的に C で使える機能だけに限ったときなんだ。そして C だけに
限定するってことは、他の人がそれをめちゃくちゃにしないってことで、
ついでに沢山のプログラマが実際に低水準の問題を理解することができて、アホらしい
「オブジェクト・モデル」のたわごとを持ちこまないってことだ。 >>962
FILE* は優秀
time_t とか struct tm は糞 >>963
そういった分野ではOS自体が必要無いしな
ファイルシステムやコンソール入出力が存在しない場合も多い
メモリと入出力ポートさえ直接制御出来さえすればいい
アセンブラに比べればC言語の方が主流ではある 「組み込み」て言葉を、プアなハードウェア環境をギリギリ限界まで使う、と
寸法は小さくても目的には十分以上の能力を持ったコンピュータ、と
両様の意味で使ってて議論がちぐはぐになってるように感じる。 レス数が950を超えています。1000を超えると書き込みができなくなります。