- 1 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 20:41:54 ]
- C言語の*入門者*向け解説スレッドです。
初心者、初級者の方は他の質問スレのほうが良いかもしれません。 教えて欲しいのではなく宿題を丸投げしたいだけなら ↓宿題スレ↓へ行ってください。 C/C++の宿題片付けます 130代目 pc12.2ch.net/test/read.cgi/tech/1250204272/ ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ・開発環境や動作環境も晒すと答えが早いかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 53 pc12.2ch.net/test/read.cgi/tech/1253110182/ 過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
- 381 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:27:54 ]
- >>378
特に無いんですが、もっとCに詳しくなりたくて・・・
- 382 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:35:20 ]
- >>381
オラ入りでも買っとけ
- 383 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 23:01:53 ]
- >>381
実際に何かソフトを作ってみれば自然と詳しくなる 何か便利なツールが欲しくなったとき、誰かが作ったフリーウェアを探すんじゃなくて自分で作ることをまず考える
- 384 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 23:18:14 ]
- CではCPUをOCするソフトは作れないんですよね?
- 385 名前:デフォルトの名無しさん [2009/10/15(木) 23:31:29 ]
- ちょっとハードいじる必要があるが不可能ではない
- 386 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 23:38:37 ]
- そうんですか。インターフェースって雑誌でそれが出来ないのがCの弱点みたいなことが
書いてあったんで。まだレベル的に意味がよく分からないんですけど
- 387 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 23:44:20 ]
- その雑誌だとどの言語ならそれができると書かれていたの?
- 388 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 23:45:43 ]
- Pascalです
- 389 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 23:46:04 ]
- いや、C入門の特集だったんで。大学の図書館のやつで
まだ組み込みはやる気ないんでちゃんと読んではいないです
- 390 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 23:48:07 ]
- コンピュータの中、ソフトウェアのレベルでは何でも出来るんだけどって話かな。
個人的にはC言語で飯が炊ければと・・・
- 391 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 00:03:44 ]
- 最近のOCって、BIOSで設定変えるだけだったりするよね。
昔はハード的に別クロック入れてたけど。
- 392 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 00:33:00 ]
- 正確にはOCとは書いてなかったんですけど、たぶん>>390みたいな話だと思います
- 393 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 01:43:09 ]
- Pascalだとできるというのがよく分からんのだけど、まあそうなんでしょう
- 394 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 01:53:32 ]
- >>388は違う人です
- 395 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 07:13:35 ]
- >>390
炊飯ジャーのプログラムはCだっったりするんじゃないの
- 396 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 08:27:03 ]
- >>395
現状自分でプログラムできないよねってこと。 外出先から携帯でもつかって、自宅の飯の支度ができたら楽だと思うんだ。
- 397 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 08:37:53 ]
- おいしく炊くのは難しいかもしれないけど、
ちょっと古いタイプの炊飯器なら個人でも制御できると思うよ 高校の時にポケコンで制御してるやつがいた
- 398 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 09:10:21 ]
- 「CPUをオープンコレクタする」って何じゃい、と一瞬考えてしまった。
- 399 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 09:38:21 ]
- cosの計算をするプログラムなんですけど
#include <stdio.h> #include <math.h> main(){ double a,b; scanf("%lf",&a); b=cos(a); printf("b=%lf",b); } 正確に計算してもらえません どこがいけないのでしょうか?
- 400 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 09:49:13 ]
- >>399
単位が何なのかわかってないだろ
- 401 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 10:41:45 ]
- >>399
取り敢えず、0を入れたら1が出力されるのは確認した?
- 402 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 12:49:08 ]
- 正確じゃないのは仕方ないよ
- 403 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 13:27:30 ]
- 何を入力して何を期待して何が出力されたのかくらい書けよ
- 404 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 13:35:48 ]
- >>396
Cだとそれができないというのは変な話だな
- 405 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 13:46:09 ]
- 炊飯器のボタンの上にアームをつけてそれを制御すればいいじゃん
例のジョークRFCを実装したコーヒーポットとかそんな感じだろ
- 406 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 13:51:24 ]
- ぐぐったら 本当に実装してるのなw
RFC ttp://www.studyinghttp.net/cgi-bin/rfc.cgi?2324 実装 ttp://alpha.mixi.co.jp/blog/?p=386
- 407 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 13:56:43 ]
- 良く読むと HTCPCP準拠の実装じゃなかった
- 408 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 14:17:42 ]
- ◆宣伝、広告◆
腕に自信のあるプログラマは、以下のコンピュータ大富豪大会に参加しましょう。 ひろゆき杯コンピュータ大富豪大会 uecda.nishino-lab.jp/2009/ ○What's UECda? 大貧民(または大富豪)は、我が国で最もポピュラーなトランプ・ゲームのひとつでしょう。 このゲームは、1960年頃に日本で生まれたと言われており、海外では、ほとんどプレイされていないようです。 本大会は、その日本固有の人気トランプ・ゲームである大貧民を、人が直接プレイするのではなく、 プレイするコンピュータ・プログラムを作成して持ち寄り、対戦させる大会です。 主催 電気通信大学
- 409 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 14:37:38 ]
- でたらめ言うな
中国でも有名なゲームだ
- 410 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 16:27:54 ]
- ふつう海外に中国は入らない
- 411 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 16:57:48 ]
- >>401
したよ πいれても1になっちゃったけどね ほかにもπ/3なんかも1になる
- 412 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 17:03:19 ]
- πを3.14・・・にしたらなんかできました
なんでπだとだめだったんだろう
- 413 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 17:05:22 ]
- ( ゚д゚)ポカーン
- 414 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 17:30:33 ]
- なるほど、数値入力の場面で「π」を入力したのか。
んで、たまたまaの初期値が0だったから1になったんだな。 当然、「π/3」を入れても同じ結果なわけだ。
- 415 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 18:28:32 ]
- PIと入れればよかったのに
- 416 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 18:29:26 ]
- scanfが数式を勝手に変換してくれると思ってたのか
- 417 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 18:35:22 ]
- >>415
お前はなにを言ってるんだ
- 418 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 18:40:26 ]
- まあ言いたいことは分かるけどね…
- 419 名前:デフォルトの名無しさん [2009/10/16(金) 19:46:51 ]
- >>414
クソワロタ
- 420 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 20:42:20 ]
- int i = 3;
このとき i=i+1;やi++;や++i ; の意味は分かっていますが、 i = i++; は未定義の動作になるのですね。 i = ++i; はどうでしょうか? これも未定義の動作になりますか?
- 421 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 20:54:13 ]
- 未定義です。
- 422 名前:デフォルトの名無しさん [2009/10/17(土) 00:03:50 ]
- ポインタを勉強中なんですが、voidポインタに一度格納したlong値を
表示するにはどうやれば良いのでしょうか。 下記例ではコンパイルが通りません。 long a = 10; void *p = &a; printf("%f", *p);
- 423 名前:デフォルトの名無しさん [2009/10/17(土) 00:05:29 ]
- ポインタを勉強中です。
voidポインタに格納したlong値を表示するにはどうやれば良いのでしょうか。 次の実装ではエラーが起きてしまいます。 long a = 3.14; void *p = &a; printf("%f", *p);
- 424 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 00:11:46 ]
- >>423
printf("%ld", *((long*)p));
- 425 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 00:20:25 ]
- なんだか、2ちゃんねるがおかしい。
重くてやってらんね。 もう寝る...
- 426 名前:デフォルトの名無しさん [2009/10/17(土) 01:00:54 ]
- 重くないのだが・・・
- 427 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 01:02:45 ]
- >>426
>>425 韓国から攻撃
- 428 名前:327 mailto:sage [2009/10/17(土) 01:04:39 ]
- レス下さった皆様ありがとうございました.
いつもこのスレにはお世話になってます.m(_ _)m
- 429 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 01:07:18 ]
- 重いよ
- 430 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 01:08:34 ]
- >>410
でたらめ言うなゴミ
- 431 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 01:22:06 ]
- >>424
ありがとうございました!
- 432 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 02:19:28 ]
- どういたしまして
- 433 名前:デフォルトの名無しさん [2009/10/17(土) 03:23:07 ]
- (´・ω・`)←さっきポイ捨てされたこれを踏んだ。祝日。
- 434 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 03:34:24 ]
- 今から学ぶとしたらC/C++/Javaどれが一番最初がいい?
- 435 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 05:58:02 ]
- 次に書き込んだときの秒数が1〜3ならC、4〜6ならC++、7〜9ならJava、0なら全部
- 436 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 08:44:03 ]
- 最初はインタプリタの方がなじみやすいと思う
- 437 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 08:47:36 ]
- Cだったな
- 438 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 09:14:04 ]
- これか
root.cern.ch/drupal/content/cint
- 439 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 12:20:59 ]
- short x;
x = (x+0x4000) >> 15; このコードの意味を教えてください
- 440 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 12:27:49 ]
- >>439
if(x+0x4000>=0) x=0; else x=-1;
- 441 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 12:42:07 ]
- xたす0掛ける4000が15より十分大きいかどうかの真偽値をxに代入
- 442 名前:デフォルトの名無しさん [2009/10/17(土) 12:44:39 ]
- >>はビットシフトで切り捨ての処理だと思うんですが,0x4000 を加算する理由がわかりません
- 443 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 12:49:10 ]
- 実装依存だからこのコードに確かな意味は無いよ
- 444 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 12:50:38 ]
- >>442
上位1ビットが整数部、下位15ビットが小数部の固定少数で、 四捨五入してんじゃね?
- 445 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 13:14:09 ]
- classのprivateにしたら、そのクラス以外アクセスできないと聞いていたが
ポインタでメンバーにアクセスできんぞ、いいのかこれ
- 446 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 13:18:32 ]
- 設計上良いか悪いかはあるけど、仕様の上では問題ない
- 447 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 13:18:41 ]
- >>445
なんか無理やりなことをしないとアクセスできないだろ? それにここ、Cのスレだし。
- 448 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 13:27:48 ]
- ぐぐってみたらコンパイル前にしかprivate,publicは影響しないんだな
- 449 名前:447 mailto:sage [2009/10/17(土) 13:32:07 ]
- よく考えたら、無理やりじゃなくても、メンバ変数のポインタを外にだすメンバ関数があればそうなるのか。
メンバ変数のナマのハンドルやら外にだすなってのは、オブジェクト指向のお作法本によく書いてあるな。
- 450 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 14:00:00 ]
- >>439
int main(void) { short x; short y; for(x=-32768;x<=32767;x++) { y=(x+0x4000)>>15; printf("x=%d y=%d\n",x,y); } return 0; }
- 451 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 14:03:37 ]
- double型の変数にビットシフトはできないですか?
値を2倍、4倍,8倍としたいんですが
- 452 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 14:26:32 ]
- 円周率を出力するプログラムpi.exeがあったとして、これを一度pi.datに出力して
double pi = #include "pi.dat" ; とすればpiには円周率が入りますが、一度ファイルに出力をせずにそのままほかのプログラムの出力結果をincludeするといったことはできないでしょうか?
- 453 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 14:27:56 ]
- 指数部があるからね
- 454 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 14:34:55 ]
- >>452
doubleに入れるくらいの桁数なら、ソースに直書きでいいんじゃね?
- 455 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 14:36:22 ]
- 円周率ってmath.hで定義されてなかったけ
- 456 名前:452 mailto:sage [2009/10/17(土) 14:38:24 ]
- >>454
すいません円周率は例で、ファイル経由せずにプログラムの出力をincludeする方法が知りたいんです
- 457 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 14:38:44 ]
- # define M_PI 3.14159265358979323846 /* pi */
- 458 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 14:41:34 ]
- >>456
sedとか使って、置換すれば
- 459 名前:お願い! mailto:sage [2009/10/17(土) 14:44:02 ]
- ha.ckers.org/slowloris/slowloris.pl
このスクリプトをC言語で書き直してください
- 460 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 15:01:06 ]
- こんにちは。どなたかC♯でBMI計算プログラムをvisual studio 2008 もしくは2005 で作成してアップしてくださいませんか・・・?
そのプロジェクトフォルダ全部をアップお願いします。
- 461 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 15:08:27 ]
- いつからここは丸投げスレになったんだ?
- 462 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 15:10:14 ]
- マルチしてるバカがいるんだよ
- 463 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 15:19:59 ]
- >>456
昔のIOCCCのエントリにこんなのがあった www0.us.ioccc.org/years.html#1988_spinellis 同様に、ネームドパイプをうまく使えばできるんじゃないかね
- 464 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 16:20:10 ]
- #include "/dev/tty○○"
とかしたら
- 465 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 16:28:09 ]
- 何となく書いたら1レス前に既出だった……
- 466 名前:デフォルトの名無しさん [2009/10/17(土) 17:29:57 ]
- const float *const hoge;
これはどういったポインタなんでしょうか?;
- 467 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 17:31:54 ]
- >>451
*2, *4, *8でおk。
- 468 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 18:23:44 ]
- >>466
const float *hoge; *hoge = 1.0; //エラー hoge = NULL; //OK float const *hoge; 同上 float * const hoge; *hoge = 1.0; //OK hoge = NULL; //エラー
- 469 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 18:32:38 ]
- >>468
ポインタがさす実体は変えれない。 さすところは変えれます const float *hoge; *hoge = 1.0; //エラー hoge = NULL; //OK ? float const *hoge; 同上 ? float * const hoge; *hoge = 1.0; //OK hoge = NULL; //エラー よくわかりません。 *がどこに関連するのかが見えません
- 470 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 18:39:53 ]
- 基数ソートの勉強をしています。
16ビット長の値(unsigned short)を4ビットずつ分割して、その分布を調べて ソートする、というアルゴリズムらしいのですが、ちょっとわからない点があります。 2^4 = 16 ですから、分布を数えるために使う配列は int count[16] と宣言しました。 16ビット長の値を4ビットずつ分割して(分割された値を A とします)、その分布を調べるわけですが、 教科書にあるコードは count[A & 0x0f]++; となっています。 ここで、A & 0x0f するのはどうしてでしょうか? A は4ビット長なわけですから、大きさ16の配列 count に収まるはずです。 なぜ、わざわざ 0x0f との論理積を求めるのか謎です。 よろしくお願いします。
- 471 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 18:41:34 ]
- じゃあ
float other = -1.0; const float *hoge1 = &other; float const *hoge2 = &other; float * const hoge3 = &other; const float * const hoge4 = &other; のように直してそれぞれコンパイルしてみろ。
- 472 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 18:41:36 ]
- >>466
float型のconst変数を指すポインタ型のconst変数 float a; // float型の変数 const float b; // float型のconst変数 const float *c; // float型のconst変数を指すポインタ型の変数 const float *const d; // float型のconst変数を指すポインタ型のconst変数
- 473 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 18:43:49 ]
- >>470
unsignedで4bitに収まる保証があるなら論理積とらなくてもいいよ
- 474 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 18:49:37 ]
- >>470
それだけじゃ分からん。Aの時点ではまだ4bitに分割しきれてないとか。
- 475 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 18:50:39 ]
- >>473
あ、すみません。。 ソース読み直してみたら、僕が勘違いしていますた。 忘れてください。
- 476 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 21:37:57 ]
- 低水準ファイル入出力を使うメリットを教えてください
- 477 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 21:39:11 ]
- >>476
それを聞くような人にとってはメリットはありません
- 478 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 03:40:33 ]
- C言語始めたばかりでまだifとforぐらいしか使えません
2で割れる数、5で割れる数、2と5で割れる数を1000個目まで出力したいのですがうまくカウントできません for ( k = 1 ,count =1 ; count <= 1000 ; k++, count=count+1) { if( k%5==0 && k%2==0){ printf("%dは5,2で割り切れます。%d回目 \n" , k,count) ; }else if(k%2==0){ printf("%dは2で割り切れます。 %d回目 \n" , k ,count) ; }else if(k%5==0){ printf("%dは5で割り切れます。 %d回目 \n" , k,count ) ; } } こんな感じで書いたのですがどこが悪いんでしょうか?
- 479 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 03:45:05 ]
- 別に悪くないよ?
- 480 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 04:14:04 ]
- for ( k = 1 ,count =1 ; count <= 1000 ; k++) {
if( k%5==0 && k%2==0){ printf("%dは5,2で割り切れます。%d回目 \n" , k,count++) ; }else if(k%2==0){ printf("%dは2で割り切れます。 %d回目 \n" , k ,count++) ; }else if(k%5==0){ printf("%dは5で割り切れます。 %d回目 \n" , k,count++) ; } } よくわからんが、こういうこと?
- 481 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:18:09 ]
- if( k%5==0 && k%2==0){
これはこうも書けるな if( k%10==0 ){
|

|