C言語なら俺に聞け(入門編)Part 87
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/07/19(火) 07:00:19.71★前スレ
C言語なら俺に聞け(入門編)Part 86
http://hibari.2ch.net/test/read.cgi/tech/1309089793/
★過去スレ
http://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
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 150代目
http://hibari.2ch.net/test/read.cgi/tech/1308749241/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
★ぬるぽ。
長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/
0002デフォルトの名無しさん
2011/07/19(火) 09:29:21.28テンプレに過去スレなんて貼る意味あるの?
見てるやつなんていないだろ。
0003デフォルトの名無しさん
2011/07/19(火) 10:35:33.50おまえは口を閉じてろ
0004デフォルトの名無しさん
2011/07/19(火) 11:20:12.30検索しても原因が分からなくて、Cとはちょっと違いますが分かりますか?
【Resource.rc】
#include "Resource.h"
//------------------------------------------------------------------------//
// [Menu]
//------------------------------------------------------------------------//
MY_MENU MENU DISCARDABLE
BEGIN
POPUP "設定", ID_SETTING
BEGIN
MENUITEM "タイトルに戻る", ID_TITLE
MENUITEM "ゲーム終了" ID_EXIT
END
POPUP "ヘルプ", ID_HELP
BEGIN
MENUITEM "バージョン情報", ID_VERSION
END
END
【Resource.h】
#define ID_SETTING 0
#define ID_TITLE 1
#define ID_EXIT 2
#define ID_HELP 3
#define ID_VERSION 4
\Resource.rc(9) : error RC2121 : BEGIN expected in menu
\Resource.rc(10) : error RC2122 : unknown menu subtype
0005デフォルトの名無しさん
2011/07/19(火) 11:25:18.830006デフォルトの名無しさん
2011/07/19(火) 11:26:11.290007デフォルトの名無しさん
2011/07/19(火) 11:27:07.950008デフォルトの名無しさん
2011/07/19(火) 11:28:17.49【Inc.h】
#include <stdio.h>
#include <windows.h>
#include <tchar.h>
#define __DEBUG__
1>.\Inc.h(5) : fatal error RC1004: unexpected end of file found
同じようなエラーが出てしまいました
エラー場所は#define __DEBUG__なんですが、おかしいですよね?
0009リソースが読み込めない人
2011/07/19(火) 11:31:42.34MY_MENU MENU DISCARDABLEでMY_MENUを定義してるんじゃないですか?
勘違いで書いていたら、すいません
0010デフォルトの名無しさん
2011/07/19(火) 11:32:05.760011リソースが読み込めない人
2011/07/19(火) 11:35:32.21rcには、Resource.hしか読み込ませてないのですが
それとも、Resource,hにはwindows.hだけ読み込ませた方がいいのでしょうか?
0012デフォルトの名無しさん
2011/07/19(火) 11:39:40.38Resource.hに
#define MY_MENU 100
とかいるんじゃないの?
0013リソースが読み込めない人
2011/07/19(火) 11:45:43.70調べてたら、必要なようでした
1>.\Resource.rc(9) : error RC2121 : BEGIN expected in menu
1>.\Resource.rc(10) : error RC2122 : unknown menu subtype
でも、エラーは消えません…
コードは>>4の.rc
エラー場所
POPUP "設定", ID_SETTING
1>.\Resource.rc(9) : error RC2121 : BEGIN expected in menu
BEGIN
1>.\Resource.rc(10) : error RC2122 : unknown menu subtype
Resourerc.hは改善しました
#include <windows.h>
#define MY_MENU 100
#define ID_SETTING 101
#define ID_TITLE 102
#define ID_EXIT 103
#define ID_HELP 104
#define ID_VERSION 105
0014リソースが読み込めない人
2011/07/19(火) 11:53:00.26POPUPにdefine定義したのを設定してたのが、ダメでした
0015デフォルトの名無しさん
2011/07/19(火) 12:32:21.785W1H、何をいつどこで。英語だけど日本語でも基本中の基本だから
0016デフォルトの名無しさん
2011/07/19(火) 12:53:11.12英語でも日本語でもそれを省略するのが粋なんだよ
0017デフォルトの名無しさん
2011/07/19(火) 12:55:41.18粋な技術解説や仕様書なんて見たくない
0018デフォルトの名無しさん
2011/07/19(火) 13:00:19.87そんなもんHMMMML2でやれ
0019デフォルトの名無しさん
2011/07/19(火) 15:12:18.210020デフォルトの名無しさん
2011/07/19(火) 20:15:21.860021前スレ920
2011/07/19(火) 21:46:42.63処理内容 : 2Byte×約9000点の読み出しと、各要素をエンディアン反転
計測区間 : メッセージループの隙間を使って繰り返し処理したときの周期
・freadで一個ずつ : 1.25ms
・freadでまとめて : 0.37ms
・ReadFileで一個ずつ : 8.50ms
・ReadFileでまとめて : 0.38ms
一個(2Byte)ずつ読む場合は、freadのほうが遥かに速かったです。
まとめて読むぶんにはあまり差はありませんでした。
1ファイルが大容量で、freadで読みきれないことがあるので、ReadFileでいきます。
ありがとうございましたm(_ _)m
0022デフォルトの名無しさん
2011/07/19(火) 21:58:10.380023デフォルトの名無しさん
2011/07/19(火) 23:27:06.71lsbファースト
とかいっても、わからんだろうな?
>1ファイルが大容量で、freadで読みきれないことがあるので、ReadFileでいきます。
fread()で読み切れないって、2GB超ってこと?
0025デフォルトの名無しさん
2011/07/19(火) 23:38:58.03いまどきの開発環境なら fpos_t は64bit対応してると思うぞ
コンパイルオプションが必要になるかもしれないけど
0027デフォルトの名無しさん
2011/07/20(水) 00:49:42.96�Aルート・乗換案内のAに群馬、Bに台湾と入力してください
�Bルートの42番を読んでください
�C笑った人は他のスレで紹介してください。
0028デフォルトの名無しさん
2011/07/20(水) 01:47:50.69何と書いてあるんだよ?
0029デフォルトの名無しさん
2011/07/20(水) 04:36:31.330030デフォルトの名無しさん
2011/07/20(水) 17:37:31.76MSBとLSBはどっちがどっちかいつもわからなくなる。
0031デフォルトの名無しさん
2011/07/20(水) 17:41:24.42原文はこうなのね Least/Most Significant Bit
0032デフォルトの名無しさん
2011/07/20(水) 17:41:43.08反対側をときどき LSB ということがある
0033デフォルトの名無しさん
2011/07/20(水) 19:25:46.21検索しようにもうまいキーワードが思いつかないんですが
0034デフォルトの名無しさん
2011/07/20(水) 19:28:37.92そこが始まりになるのだ。
0035デフォルトの名無しさん
2011/07/20(水) 19:48:36.51それ検索できない人がいるから、検索すれば分かりそうな質問多いんだろうな。
キーワードも思いつかないような問題でも、無理やりひねり出してトライを
繰り返せばけっこうキーワードがでてくる。
0036デフォルトの名無しさん
2011/07/20(水) 20:06:24.69これをスペースで区切った4つの文字列として格納してくれるような関数はあるでしょうか?
ないとすればfor文で回して地道に分けるしかないのでしょうか?
0037デフォルトの名無しさん
2011/07/20(水) 20:10:43.66どのみちforは居るが
0038デフォルトの名無しさん
2011/07/20(水) 20:14:44.16何個になるか分からないけど、1つづつ切り出したいのなら strtok か for 回し
(strtok は連続したスペースを1区切りにしないので 意図とはちょっと違うかもだ
0039デフォルトの名無しさん
2011/07/20(水) 20:27:08.78strtok はトークンが連続してても、それで1区切りだ
逆のスペース1つで1区切りで連続した場合に相応の空文字列に切り出すのができないんだったか
"A[SPC][SPC]B" の場合 "A", "", "", "B" の順に切りだしたい って話
0040デフォルトの名無しさん
2011/07/20(水) 21:52:00.110041デフォルトの名無しさん
2011/07/20(水) 22:00:58.310042デフォルトの名無しさん
2011/07/20(水) 23:01:44.18C は言語そのもには神を感じる(K&R C でさえ)が、ライブラリは玉石混淆なので
憶えるだけでなく自分の分野においての実用性を論評できるようになるのが急務となる
0043デフォルトの名無しさん
2011/07/20(水) 23:03:02.13鍛えれば最強の武器になる初期武器って感じ。
0044デフォルトの名無しさん
2011/07/20(水) 23:19:45.840045名無しさん@12周年
2011/07/21(木) 08:30:33.65初期? 基本武器じゃね?
***->的なポインタープログラムを書けるようになると ラムタ式も無名関数も仮想関数テーブル管理もできるようになるよ!
ワンチップ組込みの世界では 胸張って生きれるよ w
0046デフォルトの名無しさん
2011/07/21(木) 08:39:04.78とくにメリットを感じないんだが・・・
0047デフォルトの名無しさん
2011/07/21(木) 08:43:00.250048デフォルトの名無しさん
2011/07/21(木) 08:44:23.530049デフォルトの名無しさん
2011/07/21(木) 08:53:48.96Cを学ぶと、スクリプト系言語がどう処理してるかが推測できる?
0050デフォルトの名無しさん
2011/07/21(木) 08:58:21.29そんな質問してるやつがそんな理由で初めても下手の横好きになるだけだよ
ちょろっとやっただけじゃあんまり意味はない
アセンブラは高級言語と同じことやるのにやたらめんどくさい、Cはスクリプトに比べてメモリ確保とかやたらめんどくさいぐらいの印象できっと終わる
0051デフォルトの名無しさん
2011/07/21(木) 09:12:30.020052デフォルトの名無しさん
2011/07/21(木) 09:47:00.19C++をつかう.netの入門サイトまったくありません
C#ならあるんですが、素直にC#やったほうがいいんでしょうか?
まったく持って意味わかりません、おしえてください
0053デフォルトの名無しさん
2011/07/21(木) 09:49:53.10解説がさっぱりないのは死ぬほど評判悪いから
C++/CLIはやめといたほうがいい
C#使っとけ
0054デフォルトの名無しさん
2011/07/21(木) 09:50:18.07この状況で、インテルなどのメーカーは、今後はSIMDと多コアの方向でCPU性能を稼ごうとしてるように見える。
今後CPUは、多コアとSIMD方面の性能のみが向上してく状態になると思う。
(将来的にはCPUのSIMDが、GPU並の超並列同時演算ユニットへと進化してくと思う)
0055デフォルトの名無しさん
2011/07/21(木) 09:51:57.21C++でできるGUI開発できるやつは
その評判の悪いC++の.NET以外なにがありますか?
教えてください
C++でできる資料の多いGUIプログラミング教ええてください
0056デフォルトの名無しさん
2011/07/21(木) 09:52:38.641命令でfloat型8個を読み、1命令でfloat型8個を別の8個と乗算し、1命令でfloat型8個をメモリーに書きだす。
たったの3命令。
これと同じ処理を従来のx86の命令のみで行えば、
float8個の読み込みに8命令、float8個の乗算に8命令、float8個の書き出しに8命令で、
合計24命令。
圧倒的じゃないか。
0057デフォルトの名無しさん
2011/07/21(木) 09:53:49.030058デフォルトの名無しさん
2011/07/21(木) 09:55:40.10C++でできるGUI開発できるやつは
その評判の悪いC++の.NET以外なにがありますか?
教えてください
C++でできる資料の多いGUIプログラミング教ええてください
0059デフォルトの名無しさん
2011/07/21(木) 09:58:44.28MFCってのがあるよ!
0060デフォルトの名無しさん
2011/07/21(木) 09:59:28.14最新のGPUだと1024個の演算を同時に演算してしまうらしい。
(CUDAはまったく触ったことないので詳細は知らないが)
最新のGPUは1命令で1024個のfloatを同時に演算できるようなもの?と思ってる。
(多コアの並列動作なので、AVXのSIMDとはニュアンスが違うけど、結果として)
圧倒的すぎる。
というわけで、GPUの演算ユニットを直接使ってみたいのだけど、どうやればいいのかわかりません。
GPUの機械語に対応してるアセンブラが無いので、専用のバイナリーのライブラリーをリンクして使う…的なことなのでしょうか?
そうではなく、直接GPUに命令を出せる機械語を知りたいです。 どこかにいい文献があったら教えてほしいです。
0061デフォルトの名無しさん
2011/07/21(木) 10:01:44.620062デフォルトの名無しさん
2011/07/21(木) 10:03:44.83それ有料っていっただろこら
早くおしえろてください
0063デフォルトの名無しさん
2011/07/21(木) 10:05:50.240064デフォルトの名無しさん
2011/07/21(木) 10:08:56.43{
this->SuspendLayout();
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 12);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(284, 262);
this->Name = L"Form1";
this->Text = L"Form1";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
}
このthisって何を指してるの?教えてください
0065デフォルトの名無しさん
2011/07/21(木) 10:11:26.980066デフォルトの名無しさん
2011/07/21(木) 10:11:39.54死ね
0067デフォルトの名無しさん
2011/07/21(木) 10:12:06.19死ね
0068デフォルトの名無しさん
2011/07/21(木) 10:13:33.510069デフォルトの名無しさん
2011/07/21(木) 10:17:24.62{
this->SuspendLayout();
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 12);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(284, 262);
this->Name = L"Form1";
this->Text = L"Form1";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
}
このthisって何を指してるの?教えてください
0070デフォルトの名無しさん
2011/07/21(木) 10:19:15.22thisってなにをさしてる?
オブジェクトさすんじゃないの?
どこにあるのそのthisのもと
0071デフォルトの名無しさん
2011/07/21(木) 10:20:05.720072デフォルトの名無しさん
2011/07/21(木) 10:22:44.26それってCの話でしょ?
なんらかのグローバル変数 this があるんじゃね?
0073デフォルトの名無しさん
2011/07/21(木) 10:25:17.08これ
thisってどれ?
InitializeComponent();ってつかってるみたいだけど
Obj.InitializeComponent();なら
objがthisってわかるけど
InitializeComponent();のままつかってるし意味不明です教えてください
0074デフォルトの名無しさん
2011/07/21(木) 10:26:42.54thisっていう構造体ポインタなんじゃね?
0075デフォルトの名無しさん
2011/07/21(木) 10:27:01.81C++はスレ違いですよ
大事な事なので2回言いました
0076デフォルトの名無しさん
2011/07/21(木) 10:30:48.55ってやってるから
ClientSizeで検索したら System::Windows::Formsって書いてあるからここにあるのかな
代入してるし
System::Windows::Forms::Form->clientsizeでいいの?
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: ここにコンストラクター コードを追加します
//
}
ってあるけど
Form1( System::Windows::Forms::Form)が thisになるわけ?教えてください
0077デフォルトの名無しさん
2011/07/21(木) 10:37:13.88死ね
0078デフォルトの名無しさん
2011/07/21(木) 10:42:30.62C++はスレ違いです
0079デフォルトの名無しさん
2011/07/21(木) 12:39:06.79#include <stdio.h>
typedef double T;
typedef float T;
/* witch is better? */
int main() {
T sum = 0, max = 0, min = 10000, val;
int num = 0;
while (scanf(" %f", &val) == 1 && val > 0) {
if (max < val)
max = val;
if (min > val)
min = val;
sum += val;
num++;
}
printf("入力人数: %d\n", num);
if (num > 0) {
printf("最大値: %f\n", max);
printf("最小値: %f\n", min);
printf("平均値: %f\n", sum / num);
}
return 0;
}
という内容で変数の型を float か double かで悩んでいます。数値演算のプロの方からアドバイスをいただきたいです。よろしくお願いいたします。
0080デフォルトの名無しさん
2011/07/21(木) 12:41:04.720081デフォルトの名無しさん
2011/07/21(木) 12:49:00.640082デフォルトの名無しさん
2011/07/21(木) 12:57:11.89printf のフォーマット文字列はそれで良いけど
scanf のそれは float / double で変えないと危ないぜ
0083デフォルトの名無しさん
2011/07/21(木) 14:09:15.04バーディソフトのゲーム。
0084デフォルトの名無しさん
2011/07/21(木) 14:36:35.38使用許諾条件を守りなさい。
http://hibari.2ch.net/test/read.cgi/tech/1308749241/909
>>904
>>905,906を使うための条件
1 このスレ(または次スレ)に↓を書き込むこと。
QZ死ね。てめーのうんこコードなんか単位落とすことになったって使わねー。
2 次回の質問の時は↓これを制限とすること。
[5] その他の制限: QZは邪魔だから回答しない事
0085デフォルトの名無しさん
2011/07/21(木) 14:58:57.040086デフォルトの名無しさん
2011/07/21(木) 16:57:17.44scanfでdoubleに文字または文字列入れた場合、どのような値が入ってくるのでしょうか?
テストパターンとして、main()
{
double a,b;
scanf("%lf%lf",&a,&b);
printf("%lf\n%lf",a,b);
}
というプログラムを用いて、最初の入力で"a"を入力したところ、
a
0.000000
0.000000
となりました。bの入力がすっ飛ばされているのも何故だか教えて下さい。
以上です。もしよろしければご回答下さい。よろしくお願いします
0087デフォルトの名無しさん
2011/07/21(木) 17:04:05.88エラーで読み込めないと"a"がストリームに取り残されるから、&bでも
また"a"を読み込もうとして失敗する。
エラーチェックとかやりたいならfgets(…,….stdin)で行単位で読み込んで
sscanf()とかstrtod()みたいので変換するのが楽。
0088デフォルトの名無しさん
2011/07/21(木) 17:07:40.42なるほど!速攻で回答帰ってきて驚いています。ありがとう
一度読みこんでから、再度doubleの中に突っ込むということですね、盲点でした。やってみます
お世話になりました
0089デフォルトの名無しさん
2011/07/21(木) 17:29:07.05例として、
#include<stdio.h>
/*プロトタイプ宣言*/
void func1(void)
void main (void)
{
・
・
・
void func1(void);
}
/*関数の定義*/
void func1(void)
{
printf("。。。");
}
自分の記憶を頼りに、こんな感じでプログラム作ってるのですが、
多分間違えてると思います。良ければ回答お願いします
0090デフォルトの名無しさん
2011/07/21(木) 17:30:58.97/*プロトタイプ宣言*/
void func1(void)
void main (void)
{
・
・
・
func1(void);
}
/*関数の定義*/
void func1(void)
{
printf("。。。");
}
0091デフォルトの名無しさん
2011/07/21(木) 17:35:04.58;がない
死ね
0092デフォルトの名無しさん
2011/07/21(木) 17:39:46.76見落とした
追加で。
0093デフォルトの名無しさん
2011/07/21(木) 17:43:18.70全角空白も使ってるんだから、細かい事いうなよ。
#include<stdio.h>
/*プロトタイプ宣言*/
void func1(void);
void main (void)
{
・
・
・
func1();
}
/*関数の定義*/
void func1(void)
{
printf("。。。");
}
0094デフォルトの名無しさん
2011/07/21(木) 17:51:12.39なるほど。呼び出しの所が違いましたか・・・。
ありがとうございますー!
0096デフォルトの名無しさん
2011/07/21(木) 18:20:26.620097デフォルトの名無しさん
2011/07/21(木) 18:32:57.120098デフォルトの名無しさん
2011/07/21(木) 18:34:09.590099デフォルトの名無しさん
2011/07/21(木) 18:37:07.290100デフォルトの名無しさん
2011/07/21(木) 19:06:30.180101デフォルトの名無しさん
2011/07/21(木) 19:25:42.83一体どんなレベルの質問期待してるんすか
0102Perl忍者
2011/07/21(木) 20:26:14.75そういうIDEと飼ってありますか? 教えてください
.NETみてみたんですが
.NET C++とか検索してもなんか 入門サイトとか全然のってなくてよくわかりません
.NET 入門とか調べると C#がでてくるんですが C#がむいてるんですか?
C#は.NETがむいてるんですか???わかりません教えてください
C++でできるGUIアプリ開発とかやりたいですがなにがむいてますか?
Xcodeみたいにウインドウとかボタンとか自由に配置してやりたいんですが
WIN32みたいに変な全部ウインドーコードかいたり リソースエディタとかめんどくさいのやりたくないです
C++をやる理由なんですが UnrealEngine3っていうやつC++つかうみたいなんで
教えてください
C++でできるXcodeみたいなやつ
C++だと.NETはむずかしい C#使えっていわれたんですがホンとですか??
C++でできるGUIのIDEとかそういうのあったら教えてくださいまってます
死ね
0104デフォルトの名無しさん
2011/07/21(木) 20:43:07.690105デフォルトの名無しさん
2011/07/21(木) 20:48:24.91http://www.youtube.com/watch?v=yTYHupRXPSY
0106デフォルトの名無しさん
2011/07/21(木) 22:27:09.79その時どの程度まで処理が終了したかを表示させるようにしようと思ってます。
こんな感じです。
100%
|||||||||||||||
ところがwhile文の中に居る時は何も表示されなくて処理が終わる(≒while文を抜ける)と
いきなり100%のところまで表示されます。
while文中でprintfの出力がリアルタイムでされてなくて抜けるとまとめて出てくるようです。
何かいい対策はないでしょうか?
0107デフォルトの名無しさん
2011/07/21(木) 22:27:59.850108デフォルトの名無しさん
2011/07/21(木) 22:41:15.98一瞬で終わっているだけでは?
0110デフォルトの名無しさん
2011/07/21(木) 23:02:12.24内部のバッファ分を出力して空にするのがfflush
0111デフォルトの名無しさん
2011/07/22(金) 06:16:56.09使えるけど、フラッシュで済ませるべき。
0113デフォルトの名無しさん
2011/07/22(金) 11:43:34.04コピペが面倒でたまらん
0114デフォルトの名無しさん
2011/07/22(金) 12:50:12.86clipbrd は xp までで vista 以後にはない
0115デフォルトの名無しさん
2011/07/22(金) 13:51:41.50何語かは知らんけど外国産のを入れてる
0116デフォルトの名無しさん
2011/07/22(金) 14:53:21.41大丈夫なのかそれw
ためしにフリーの入れてみたが意外と捗らんな
これも慣れか・・・
0117デフォルトの名無しさん
2011/07/22(金) 18:21:37.21おすすめあれば教えてください
とりあえずゼロに斜線が入っていればOKです
0118デフォルトの名無しさん
2011/07/22(金) 18:48:32.550119デフォルトの名無しさん
2011/07/22(金) 20:02:47.01かなり個性的だが、ゆたぽんを使っている。
コーディング用を謳っていて
O,0, 1, l, i, ; : .
などがえらく主張しています。
手書き風なので、ダメな人は全くでしょうけど、
ハマれば見やすいですよ。
0121デフォルトの名無しさん
2011/07/22(金) 23:10:20.02デバッグしようと所々にいろんな変数をprintfで表示させるようにするとちゃんと処理が終わるんです。
こういう現象ってよくあるんでしょうか?入出力関連でエラーが起きててSeg〜になるんでしょうか?
0122デフォルトの名無しさん
2011/07/22(金) 23:11:10.27無難にConsolas+メイリオ
0123デフォルトの名無しさん
2011/07/22(金) 23:29:37.19珍しくないね。
特にポインタが変な場所を指している場合は、printfを入れることで
スタックの状態が変わると、症状が出たり出なかったりする。
とりあえずデバッガ使用をおすすめするが、↑のような場合
デバッグモードだと再現しないことも珍しくない。
0124デフォルトの名無しさん
2011/07/22(金) 23:34:30.760125デフォルトの名無しさん
2011/07/23(土) 05:13:18.11monaco
0126デフォルトの名無しさん
2011/07/23(土) 06:11:22.81これを入れた。
plだからポーランド語なんかな?
http://www.przeklej.pl/plik/clipbrd-exe-0027s73vo4re3sp
0127デフォルトの名無しさん
2011/07/23(土) 07:46:36.35よくある。キミの質問のレベルから超推理すると、初期化されていない
変数を使っている可能性が高そうだ。
コンパイラの警告レベルを最大にして警告メッセージを全部取り除く。
これと併せて、他の人も言ってるけど、デバッガを使ってみると良い。
0128デフォルトの名無しさん
2011/07/23(土) 07:51:47.26printf がダメなら、ulimit とかでコアを吐かせる設定をして、コアを調べてみると良いですよ
0129デフォルトの名無しさん
2011/07/23(土) 07:56:56.930130デフォルトの名無しさん
2011/07/23(土) 08:05:15.30良くあるよ
printfは破壊検査だと思ったほうが良い
まともにデバッグしたいなら
非破壊検査が出来るデバッガを使え
0131デフォルトの名無しさん
2011/07/23(土) 08:30:56.73for ($i=0; $i<10; $i++) {
for ($k=0; $k<10; $k++) {
$str .= sprintf("%d %d\n",i,k);
}}
という処理をCで書くとどのようになりますか?
0132デフォルトの名無しさん
2011/07/23(土) 08:54:46.33int i,k;
for (i=0; i<10; i++) {
for (k=0; k<10; k++) {
ここは最終的な$strの最大長を決め打ち出来るか否かで大分変る。
}}
0133デフォルトの名無しさん
2011/07/23(土) 09:18:24.41$strの最大長は分からないですが要素の数は固定長です
char*の配列をまとめて標準出力に送ってくれる関数があるといいなあ
0134デフォルトの名無しさん
2011/07/23(土) 09:44:59.46> char*の配列をまとめて標準出力に送ってくれる関数があるといいなあ
C++ならある。Cならこんな感じ
// エラー処理は省略
int i,k;
size_t alloced = 0, size = 0, c;
char *p = NULL;
for (i=0; i<10; i++) {
for (k=0; k<10; k++) {
if (alloced < size + 32) {
alloced += 1024;
p = realloc(p, alloced);
}
c = sprintf(p + size, "%d %d\n", i, k);
size += c;
}}
お手軽にデバッグしたいなら codeguard を試してみては?私も最近評価版を入手して重宝している。
https://downloads.embarcadero.com/free/c_builder から入手。
コマンドラインから bcc32 -vG -v target.c でコンパイル。
できた実行ファイルを実行して問題があると .cgl ファイルに警告内容が出力される。
0136デフォルトの名無しさん
2011/07/23(土) 11:30:41.99死ね
0137デフォルトの名無しさん
2011/07/23(土) 11:42:56.00reallocなんていう便利なものがあったんですね
コードまでつけていただいてありがとうございます
0138デフォルトの名無しさん
2011/07/23(土) 12:21:41.50$str .= sprintf("%d %d\n",i,k);
これエラーにならないか?
0139デフォルトの名無しさん
2011/07/23(土) 12:25:46.210140デフォルトの名無しさん
2011/07/23(土) 12:58:00.290141デフォルトの名無しさん
2011/07/23(土) 13:00:28.61$くらい補完してやれよ。
0142デフォルトの名無しさん
2011/07/23(土) 13:38:54.930143デフォルトの名無しさん
2011/07/23(土) 20:51:24.64Javaで作った課題をC言語に打ち変えろという課題が出たのですが
Public static〜.やRandom randなどは何に置き換えたらいいのでしょうか?
0144デフォルトの名無しさん
2011/07/23(土) 20:53:57.40グローバル変数とランダム関数
0145デフォルトの名無しさん
2011/07/23(土) 20:55:07.72それはどんなのでしょうか…
本当に初心者で右も左もわかりません…
0146デフォルトの名無しさん
2011/07/23(土) 21:05:15.21ttp://homepage2.nifty.com/c_lang/
0147デフォルトの名無しさん
2011/07/23(土) 22:11:45.71本に載っていたコードをそのまま書きました。
http://codepad.org/D12a7OzX
コンパイルすると
Declaration is not allowed here in function main
Declaration syntax error in function main
Declaration missing ; in function main
Compound statement missing } in function main
とエラーが表示されてしまい
何度も見直したのですが、どう直せばいいのかわからずお手上げです。
コンパイラはBorland C++ 5.5.1使ってます。
0148デフォルトの名無しさん
2011/07/23(土) 22:13:03.080149デフォルトの名無しさん
2011/07/23(土) 22:15:31.76main関数が閉じてないぞ
0150デフォルトの名無しさん
2011/07/23(土) 22:24:25.120151143
2011/07/23(土) 22:57:27.94一応教科書と照らし合わせて読んでみました。
先ほどざっとソースを書いたのですが普段はC言語の初歩を打つだけだったので
JAVA→C言語がやっぱりどう置き換えていいかわかりません…
時間が無くひとまずざっと打ってみただけなので相当問題点があると思いますが
教えていただけると幸いです…
http://codepad.org/L2uwO9sC
0152デフォルトの名無しさん
2011/07/23(土) 23:04:48.76java->c/c++ はつらいと思う‥‥‥。
見た目は似ているけれども、説明するには「余白が足りない。」
0153143
2011/07/23(土) 23:07:11.80やっぱりそうなんですか…JAVAの学習自体あまりやってなかったもので
どう手をつけていいのか、教科書を読んでも何を書いてあるのか、まるでさっぱりです。
だからその貼り付けたコードもところどころ
JAVAからのデータをそのまま登用してあったりするんですよね…
0154デフォルトの名無しさん
2011/07/23(土) 23:34:47.08基本的に this とは何かがわかっていれば、あとはひたすら作業ゲーのくだらん問いだ
おまけで関数ポインタや malloc が出てくるくらい
「this とは何か?」という1つの問いに必要以上の負担をかけているパワハラに後で腹が立つはず
0155デフォルトの名無しさん
2011/07/23(土) 23:44:50.76public staticはどうしますか?とか以前に
C言語の基礎ぐらい勉強してから来るべき
0156デフォルトの名無しさん
2011/07/23(土) 23:59:13.47もしくは自分で実装可能でしょうか?実装可能であれば、どんな流れの関数になるでしょうか?
0157デフォルトの名無しさん
2011/07/24(日) 00:01:33.84if(kbhit()) getch();
0158デフォルトの名無しさん
2011/07/24(日) 00:12:34.89ありがとうございます!
windows用のようですが、手がかりにして調べられそうです
0159デフォルトの名無しさん
2011/07/24(日) 00:22:22.99画像編集のプログラムを作りました。ppmファイルを編集するものです
回転処理を行った時、左下の隅に黒い線が入り、一番下の配列にいたっては途中まで黒い線が入るような状況です
これについて考えられる原因を教えていただけませんか。よろしくお願いします
0160デフォルトの名無しさん
2011/07/24(日) 00:26:47.11Alt+PrtSc
を覚えよう
0161デフォルトの名無しさん
2011/07/24(日) 00:29:44.36行を見ていくループの変数の初期値もしくはソース側の初期値がおかしいんでしょ
0162デフォルトの名無しさん
2011/07/24(日) 00:31:11.75なるほど初期値ですか。見てみますありがとう
でも途中までおかしいのに途中から正しくなるのが何故かわからないのですが
0163デフォルトの名無しさん
2011/07/24(日) 00:31:16.370164デフォルトの名無しさん
2011/07/24(日) 00:32:04.770165デフォルトの名無しさん
2011/07/24(日) 01:19:51.75ソース曝すのが一番手っ取り早いよ。
0166デフォルトの名無しさん
2011/07/24(日) 10:15:32.26ttp://www.dmm.co.jp/digital/videoa/-/detail/=/cid=33dphc00002/
0167デフォルトの名無しさん
2011/07/24(日) 10:44:41.590168デフォルトの名無しさん
2011/07/24(日) 12:04:08.25どうしたらいいですか?
0169デフォルトの名無しさん
2011/07/24(日) 12:07:40.320170デフォルトの名無しさん
2011/07/24(日) 12:10:21.62激しく同意
0171デフォルトの名無しさん
2011/07/24(日) 14:00:24.63何分何秒まで正確にだしたいです
0172デフォルトの名無しさん
2011/07/24(日) 14:03:27.45幼稚園児かよwwwwwwwwwww
0173デフォルトの名無しさん
2011/07/24(日) 14:16:09.13標準ライブラリにあるようなのそのまんま聞かれてもなぁ
少しは調べろよゴミ野郎
0174デフォルトの名無しさん
2011/07/24(日) 14:46:16.970175デフォルトの名無しさん
2011/07/24(日) 14:50:19.55質問の日本語がちょっと変。その部分のソースを晒せ
0176デフォルトの名無しさん
2011/07/24(日) 14:53:05.37fscanf(data,"%d",val);
val+=10;
0177デフォルトの名無しさん
2011/07/24(日) 15:02:17.19落第。おそらくSEGV
0178デフォルトの名無しさん
2011/07/24(日) 15:14:41.62なら
fscanf(data,"%d",&val);
int *val
なら
fscanf(data,"%d",val);
こう?
0179デフォルトの名無しさん
2011/07/24(日) 15:20:23.85適当に書いてる
#include <stdio.h>
int main(){
FILE *data;
int val;
data= fopen("data.txt", "r+");
if (data == NULL) {
fprintf(stderr,"Can't open\n");
return 0;
}
fscanf(data,"%d",&val);
printf("1:[%d]\n",val);
val+=10;
rewind(data);
fprintf(data,"%d",val);
rewind(data);
fscanf(data,"%d",&val);
printf("2:[%d]\n",val);
fclose(data);
return 0;
}
0180デフォルトの名無しさん
2011/07/24(日) 15:31:46.47付録(val+=10;)があることを誤魔化さないように。
0181デフォルトの名無しさん
2011/07/24(日) 18:07:14.29落第。おそらくコンパイルエラー
0182デフォルトの名無しさん
2011/07/24(日) 20:21:45.98毎回フルパス記述しないと駄目なの?
0183デフォルトの名無しさん
2011/07/24(日) 20:27:37.67コンパイラのオプションでヘッダファイルの置いてある場所を指定出来るよ
gcc だったら -I とか
0184デフォルトの名無しさん
2011/07/24(日) 20:53:57.080185デフォルトの名無しさん
2011/07/24(日) 22:05:37.530186デフォルトの名無しさん
2011/07/24(日) 22:06:29.130187デフォルトの名無しさん
2011/07/24(日) 23:27:56.920188デフォルトの名無しさん
2011/07/24(日) 23:47:28.620189デフォルトの名無しさん
2011/07/25(月) 00:42:34.74WM_TIMERで処理量を多くして発生間隔を短くした場合
WM_TIMER処理中にWM_TIMERが再度呼ばれてしまって
ループするとかあったりする?
0190デフォルトの名無しさん
2011/07/25(月) 00:48:10.97逆にタイマが遅れて処理されるよ
0191デフォルトの名無しさん
2011/07/25(月) 00:48:50.24メッセージを処理し終わるまで、ほかのメッセージはメッセージキューにたまってるんじゃないの?
0192デフォルトの名無しさん
2011/07/25(月) 00:56:14.83割り込みの処理時間がかかるのは
遠かれ近かれいずれ破綻する兆候
ハンドラでしか絶対に無理な処理と
ハンドラやらなくても main のコンテキストに委譲できる処理が
うまく切り分けられていないとそうなる
0193デフォルトの名無しさん
2011/07/25(月) 01:12:03.32ひたすらメッセージがキューにたまっていくだけで
多重割り込みにはならないんだね
0194デフォルトの名無しさん
2011/07/25(月) 01:39:41.84typedef struct tagDATA_ST
{
char cData[4];
unsigned int iData;
unsigned short sData0;
short sData1;
} DATA_ST;
int main( void )
{
DATA_ST data;
int* pPtr = ( int* )&data;
}
質問があります。
上記みたいに、構造体のアドレスをint型のポインタにキャストした場合
pPtrはどこの領域を指し示すのでしょうか?
0195デフォルトの名無しさん
2011/07/25(月) 01:42:28.55data.cData[0]
だろ?
0196デフォルトの名無しさん
2011/07/25(月) 01:54:04.92位置は、ポインタに代入されたアドレス。
位置をいじるとき(ポインタ演算)、キャストした型のサイズが影響。
struct D {char c[256];}
D d;みたいなとき、
char *p = (char *)&d; // p[0]→d.c[0], p[1] = d.c[1]
int *q = (int *)&d; // q[0]→d.c[0], q[1] = d.c[4]
間違ってたらごめんw
0197デフォルトの名無しさん
2011/07/25(月) 02:11:08.90ありがとうございます!
>位置をいじるとき(ポインタ演算)、キャストした型のサイズが影響。
始めて知りました。勉強になります!
0198デフォルトの名無しさん
2011/07/25(月) 11:32:37.54「16bit環境だと(ry」と重箱の隅を(ry
0199デフォルトの名無しさん
2011/07/25(月) 14:19:05.16○ タイマー
0200デフォルトの名無しさん
2011/07/25(月) 14:50:26.160201デフォルトの名無しさん
2011/07/25(月) 19:06:54.19ファイルポインタの宣言はひとつで
fopenを何度も使えばいいの?
0202デフォルトの名無しさん
2011/07/25(月) 19:13:20.93fclose しないと同時に fopen できる数の限界突破して fopen に失敗するようになるかも
0203デフォルトの名無しさん
2011/07/25(月) 19:17:06.58わかりました
0204デフォルトの名無しさん
2011/07/25(月) 20:13:04.890205デフォルトの名無しさん
2011/07/25(月) 20:46:35.370206デフォルトの名無しさん
2011/07/25(月) 20:49:57.450207デフォルトの名無しさん
2011/07/25(月) 20:51:21.880208デフォルトの名無しさん
2011/07/25(月) 20:55:37.51(1)全試行回数と結果を表示する間隔をscanf()で読みそれにしたがって処理が進むようにする。
(2)各途中経過で求めたπの近似値のうち最もπの真値(=3.14159)に近い値とその時の試行回数を最後に表示させる。
という2つの点を加えて改良しなければならないのですがどなたか教えていただけませんか?
0209デフォルトの名無しさん
2011/07/25(月) 20:59:37.14#include<stdlib.h>
int main(){
int i,CircleCount=0;
float x,y;
for(i=1;i<=100000;i++){
x=(double)rand()/(double)0x7fff;
y=(double)rand()/(double)0x7fff;
if(x*x+y*y<=1.0)
CircleCount++;
if(i%10000==0)
printf(“%7d回 n=%f\n”,i,4.0*CircleCount/(float)i);
}
return(0);
}
0210デフォルトの名無しさん
2011/07/25(月) 21:01:30.75仕様を満たしてないって怒られたいの?
0211デフォルトの名無しさん
2011/07/25(月) 21:04:34.160212デフォルトの名無しさん
2011/07/25(月) 21:10:41.02載せたプログラムは先生の方から送られてきたものを
丸写ししたもので初心者なんで
どこがおかしいとか言われても分からない点が多いです。
0213デフォルトの名無しさん
2011/07/25(月) 21:12:23.520214デフォルトの名無しさん
2011/07/25(月) 21:21:00.15言葉が足りていませんでした。
上の2点を加えて改良しなさい
という課題でした。
0215デフォルトの名無しさん
2011/07/25(月) 21:24:00.940216デフォルトの名無しさん
2011/07/25(月) 21:25:28.150217デフォルトの名無しさん
2011/07/25(月) 21:27:19.28まず100000のところを変数にかえて
その変数はscanfで
0218デフォルトの名無しさん
2011/07/25(月) 21:46:24.14>>215
c言語得意な友人も同じ事ようなことを言ってましたが
先生いわく
「授業でやった範囲内で」
との事らしいです。
その友達もかなり苦労してるみたいです。
0219デフォルトの名無しさん
2011/07/25(月) 21:50:08.90宿題スレで聞いたら?
http://hibari.2ch.net/test/read.cgi/tech/1311089619/
C/C++の宿題片付けます 151代目
0220デフォルトの名無しさん
2011/07/25(月) 21:57:01.8810000のところ変数にかえて
その変数はscanfで
>>217とあわせて(1)終わり
0221デフォルトの名無しさん
2011/07/25(月) 21:59:27.440222デフォルトの名無しさん
2011/07/25(月) 22:41:56.75(2)はどうすればいいのでしょうか
0223デフォルトの名無しさん
2011/07/25(月) 22:44:41.030224デフォルトの名無しさん
2011/07/25(月) 22:49:05.940225デフォルトの名無しさん
2011/07/25(月) 22:53:34.01アドバイス、というよりもソースプログラムを
書いていただけると助かります。
質問スレのほうでは
長すぎるのでリンクを使って貼ろうとしたら
なぜかリンク先に飛ぼうとするとエラーになってしまってちゃんと質問できません。
ヨロシクお願いします。
0226デフォルトの名無しさん
2011/07/25(月) 22:53:47.620227デフォルトの名無しさん
2011/07/25(月) 23:06:14.890228デフォルトの名無しさん
2011/07/25(月) 23:12:12.260229デフォルトの名無しさん
2011/07/25(月) 23:21:34.57出てくる文字列が、記号と、数字と、アルファベットだけなので、想像していた以上に簡単でした。
自分で書いたソースコードをコンパイルして、実行形式のアプリにするって面白いですね。
簡単なゲームソフトぐらいは作れるレベルになりたいと思う。
0230デフォルトの名無しさん
2011/07/25(月) 23:57:17.20日本語でどういう状態なのか説明していただけないでしょうか。
横に書いてはあるのですが、いまいち意味を理解できません。
http://ideone.com/Vglan
0231デフォルトの名無しさん
2011/07/25(月) 23:59:50.64主にifの中身の意味が理解できていません。
>if(fu>=1 && jimen[fu-1]>=4){
もしも踏んだ数が1より大きいまたは等しく、
かつ、配列のうちの1つ踏んだ部分を消して、それが小さければ4?と
段々意味が解らなくなってきてしまいます、どなたかお願いします…
0232デフォルトの名無しさん
2011/07/26(火) 00:05:39.14change_huge_pmd() のような、ありがちな名前の関数が、staticも付けずに宣言されてたりする。
static を付けずに関数を宣言したら、
以後、どんなことをしても、
リンクされる全てのソースコードへ名前のスコープが通ってしまうのを防止できないかと思ってたのだが、
違うのだろうか?
こんな単純な名前が、数百万行のソースコードで、一度も被らないのが不思議でならない。
なにか、公開を一部のソースだけに限定する方法でもあるのですか?
0233デフォルトの名無しさん
2011/07/26(火) 00:24:42.74fu>=1 : fuが1以上
&& : かつ
jimen[fu-1]>=4 : jimen[fu-1]が4以上
0234デフォルトの名無しさん
2011/07/26(火) 00:25:16.54リンクしなきゃいい
0235デフォルトの名無しさん
2011/07/26(火) 00:28:20.55ありがとうございます
jimen[fu-1] の部分も実はよく解ってないのですが
これはどういう事なんでしょうか?
配列が10個に設定してあるので配列が1個減るよみたいな感じなんでしょうか
0236デフォルトの名無しさん
2011/07/26(火) 00:29:33.01hoge[5-2]
0237デフォルトの名無しさん
2011/07/26(火) 00:31:22.05すいませんhogeを見たことがないのですが
どう解釈したらよろしいでしょうか…本当に知識が無くて申し訳ないです
0238デフォルトの名無しさん
2011/07/26(火) 00:33:57.89行き当たりばったりでやっていても身につかないよ
0239デフォルトの名無しさん
2011/07/26(火) 00:38:05.28時間のムダだから他のことやったほうがいいよ。
0240デフォルトの名無しさん
2011/07/26(火) 00:41:00.240241デフォルトの名無しさん
2011/07/26(火) 00:41:06.11学生なもので…再試に向けて学習していたところでした…
0242デフォルトの名無しさん
2011/07/26(火) 00:41:13.130243デフォルトの名無しさん
2011/07/26(火) 00:43:26.413,000行くらい書けば分かってくる事もある
10,000行くらい書けば、多分独りで何とか出来る様になる
0244デフォルトの名無しさん
2011/07/26(火) 00:44:19.99配列の何番目の要素を使うかを[]内で指定している
例えばfuに3が入っていたらfu-1は2になり、
インデックスは0から始まるので、配列の3番目の要素って意味になる。
0245デフォルトの名無しさん
2011/07/26(火) 00:55:57.90なるほど、ぼんやりとですが理解できました。
例文どおり行けば3番目の要素になるということはわかりましたが
その後の>=4というのは
3番目の要素と4が等しい?ということですか?
0246デフォルトの名無しさん
2011/07/26(火) 01:01:06.23<= は ≦ と同じ意味。
0247デフォルトの名無しさん
2011/07/26(火) 01:08:16.370248デフォルトの名無しさん
2011/07/26(火) 02:35:41.410249デフォルトの名無しさん
2011/07/26(火) 04:14:55.360250デフォルトの名無しさん
2011/07/26(火) 05:19:56.640251デフォルトの名無しさん
2011/07/26(火) 09:56:51.550252デフォルトの名無しさん
2011/07/26(火) 10:28:10.510253デフォルトの名無しさん
2011/07/26(火) 10:59:43.41C言語できたらモテますか
友人のバンドマン超えられますか?
0254デフォルトの名無しさん
2011/07/26(火) 11:02:11.830255デフォルトの名無しさん
2011/07/26(火) 11:21:41.75また来いだと・・・
ぬかしおる・・・
0256デフォルトの名無しさん
2011/07/26(火) 11:22:14.49卒業までにOSか言語か高機能テキストエディタを作って、
フリーで公開し、みんなが使ってくれたら、高校生のうちにモテるよ。絶対だよ。
0257デフォルトの名無しさん
2011/07/26(火) 11:37:44.650258デフォルトの名無しさん
2011/07/26(火) 11:43:14.550259デフォルトの名無しさん
2011/07/26(火) 11:58:29.890260デフォルトの名無しさん
2011/07/26(火) 11:59:57.59まさか、「またどうぞ」って「またどうぞお越しください」って意味だと思ってたりしないよな。
0261デフォルトの名無しさん
2011/07/26(火) 12:07:46.800262デフォルトの名無しさん
2011/07/26(火) 13:43:11.200263デフォルトの名無しさん
2011/07/26(火) 13:44:09.700264デフォルトの名無しさん
2011/07/26(火) 14:33:44.31エディター, 言語, OS
どれも誰もが一度は夢見る分野だ‥‥‥。
0266デフォルトの名無しさん
2011/07/26(火) 20:01:21.73OS はドライバを用意するのが面倒くさそうなんで、心惹かれなかった
0267デフォルトの名無しさん
2011/07/26(火) 21:53:54.400268デフォルトの名無しさん
2011/07/26(火) 22:03:35.180269デフォルトの名無しさん
2011/07/26(火) 22:04:10.550270デフォルトの名無しさん
2011/07/26(火) 22:08:06.93一切の予備知識無しに。独自進化の面白さがモロに出る。
0271デフォルトの名無しさん
2011/07/26(火) 22:13:48.14カーネルから作るの?
0272デフォルトの名無しさん
2011/07/26(火) 22:22:52.77ブートローダから作って、スケジューラ、仮想メモリ、デバイスドライバ、
ファイルシステム、ネットワークプロトコルスタック、その他細々と沢山
俺は無理
0273デフォルトの名無しさん
2011/07/26(火) 22:40:17.960274デフォルトの名無しさん
2011/07/26(火) 22:56:28.92それなくして、他に何が残るのか
というくらい自らの存在意義をありありと感じられるところだからな
MVS や Multics や CP/M の流れをくまない独自の世界が
偉大だろうがショボかろうが歴史に骨を残す何かをしてる
ときには多値化やアナログ、有機物性やハイエナジーに
超高速不揮発性次世代ストレージと、おもしろいネタにはことかかない
生きた証ってのは「この手で」残すものだろ
0275デフォルトの名無しさん
2011/07/26(火) 23:03:29.320276デフォルトの名無しさん
2011/07/26(火) 23:04:10.820277デフォルトの名無しさん
2011/07/26(火) 23:07:12.89その生きた証を残せる逸材が、
地球上で一握りしか出てこない(ヽ´ω`)
0278デフォルトの名無しさん
2011/07/26(火) 23:19:33.320279デフォルトの名無しさん
2011/07/26(火) 23:47:31.310280デフォルトの名無しさん
2011/07/26(火) 23:52:02.070281デフォルトの名無しさん
2011/07/27(水) 00:31:51.32プログラミング経験のない人にC言語を教えているんだが,
最初に難しいと感じるのは,「演算子」の使い方なんだろうか?
よくある問題(プログラミングの問題)を解くのに、
「演算子を組み合わせてうまく使うこと」が結びついていないことがネックだと思うんだけど,
どうだろうか?当たり前と言われればそれまでだけど…
わからない感覚を教えていただけると嬉しい.
0282デフォルトの名無しさん
2011/07/27(水) 00:36:21.51C以外でも、何かプログラミング言語をやってりゃ馴染んでるだろうけど。
0283デフォルトの名無しさん
2011/07/27(水) 00:39:20.19でも代入は何回かやってるうちに慣れてくる印象.
それよりも,if文の中の判定とかの書き方を思いつかない場合のほうが多そう
だなぁと思っているんだけど,どうだろうか?
(そもそも,if文で分岐するっていう発想ができない人もいるけどマレ)
0284デフォルトの名無しさん
2011/07/27(水) 00:43:31.67ifの判定というか、条件の記述はいまだに自信を失うときがあるw
ある角度をある範囲にクランプさせるふうに条件をかいたつもりが、
なんどやってもうまくいかなかったことがあるw
以上、以下を組み合わせてつかうだけのことでも、場合によっては混乱を来たす。
0285デフォルトの名無しさん
2011/07/27(水) 00:46:25.1712ステップで作る組込みOS自作入門
これは解説が丁寧でよくわかる。
0286デフォルトの名無しさん
2011/07/27(水) 00:48:36.36_get_amblksiz関数が定義されてないってエラーがでます。
この関数はもう存在しないのでしょうか
0287デフォルトの名無しさん
2011/07/27(水) 00:51:12.08初心者相手なんで,そんな条件が複雑になることはないw
実際に開発となればテストケース書けば良いことなので…
今回の場合,高々複雑といっても,
「入力された数が4の粕{数と5の倍数又は3の場合に数を表示せよ」そういった類の問題です.
例えば,
〜の倍数 と言われてどう書けばいいかわからないとか
条件が複数出てくる場合には || や && を使わなかったり
こういうのが最初につまずくポイントかなぁと思うんですけど,どうだろ?
(||とか&&とかを組み立てたり,〜の倍数という条件文を考える所が)
0288デフォルトの名無しさん
2011/07/27(水) 00:55:54.65あーはいはい。なるほど。そういうのある気がするし、
俺自体も何十年も前にそれを体験したような気もする。
0289デフォルトの名無しさん
2011/07/27(水) 00:58:40.10やっぱそうですよねw
そこの点で,
「何年も、何十年も前に体験した」ので,初心者が「何で」わからないのか
わからないみたいな状態です.そこで,知恵を貸していただきたいなと思ってます.
0290デフォルトの名無しさん
2011/07/27(水) 01:16:57.60/と%の意味を先に教えておいたなら、
各自の応用力(想像力)に任せるか、
先にもうイディオムとして教えちゃうかだろうし、
何で分からないかと問われれば、
応用できない、応用しにくい、基本が疎か、
せんせーがイディオムを教えてくれてない!
とかかな。
あとはやっぱり実物を触ってるかどうかも大きい。
実際に自由に工夫をしたり確認したりすることなしに、
理屈だけでものごとを考え、延長させていくことはたぶん不慣れなはず。
0291デフォルトの名無しさん
2011/07/27(水) 01:25:49.77応用できる土台を作る為に,演算子に注目して問題を作ればいいのではないかと
思っているのですが,どう思いますか?
int main(void)とかprintfとかをわざわざ書かなくても演算子にだけ注目
して問題をとかせるのがいいかなぁと思っていて…
例えば,
int i = 10;
i%2 はいくつになりますか?
i%5 はいくつになりますか?
のような問題が効果的な気がするのですが,どうでしょうか?
0292デフォルトの名無しさん
2011/07/27(水) 03:17:05.970293デフォルトの名無しさん
2011/07/27(水) 03:17:15.180294デフォルトの名無しさん
2011/07/27(水) 04:44:59.470295デフォルトの名無しさん
2011/07/27(水) 04:50:00.00それもmodの発想すら頭にないような奴に
0296デフォルトの名無しさん
2011/07/27(水) 05:13:34.150297デフォルトの名無しさん
2011/07/27(水) 05:18:25.680298デフォルトの名無しさん
2011/07/27(水) 05:23:50.830299デフォルトの名無しさん
2011/07/27(水) 05:38:54.70時代の最先端をいく本とやらをあげてもらおうか?
0300デフォルトの名無しさん
2011/07/27(水) 05:48:35.02ただ、K&RはC言語に慣れた人ならともかく、初心者が読むもんではないだろ
いわんや初心者未満の者をや
0301デフォルトの名無しさん
2011/07/27(水) 05:49:13.44プログラミング言語の入門者には向かない
見事なまでに簡潔すぎる
かつては他に選択肢がないという理由で
使われていたこともあったらしいけどさ
0302デフォルトの名無しさん
2011/07/27(水) 06:15:49.11http://www.forest.impress.co.jp/docs/news/20110714_460395.html
0303デフォルトの名無しさん
2011/07/27(水) 08:51:47.96C言語を学ぶ上では避けて通れない名著だね
0304デフォルトの名無しさん
2011/07/27(水) 09:36:57.77皆様(>>292-303)レスありがとうございます.
できるやつは手が自然に動く→勝手にできるようになるのでほっといてもいいと思います.
でも,やっぱりできない人もいるのでそういう人は「センスがないから諦めろ!」でいいんでしょうか?
個人的には,効率的な学習法があればもう少しは「わからない」→「わかる」に
できると思っているんですが…
本はたしかに大事ですが,結局読む苦労があるので,ツールかなにかで支援できたら
嬉しいかなぁと思っています.(手を動かしながら自然に理解するという事)
>>302
マイクロソフトのSmallBasicは初耳ですね.
ありがとうございます.初心者にとってどういった点がよく出来ているのでしょうか?
0305デフォルトの名無しさん
2011/07/27(水) 09:42:19.63がいいこと言った!
トライアンドエラーの中で、コンパイラ、実行結果と対話して理解を深めていくんですよね。
0306デフォルトの名無しさん
2011/07/27(水) 10:32:00.75いいんです。必要なら、出来る人にお金を払ってやってもらえばいいんです。
世の中、そーゆーもんです。
0307デフォルトの名無しさん
2011/07/27(水) 10:40:42.30小金でこき使うのがベスト
制御構造はない代わりに、セルを参照する計算式を幾らでも記述できるから
話題に出ていた除算や剰余、条件判断なんかを全部こなせるぞ。
おまけに、そこにある数値を使ってその場で計算できるからテストケースも作り易い。
0309デフォルトの名無しさん
2011/07/27(水) 11:27:44.83「”●”をテンキーで操作するプログラムを作れ」
の方が入門基礎知識身につきそう。
0310デフォルトの名無しさん
2011/07/27(水) 11:28:45.300311デフォルトの名無しさん
2011/07/27(水) 11:59:34.06ごもっともです.
>>306
やめちまえとは言えない立場なのでごめんなさい.
>>308
なるほど!たしかに良いアイディアです!
基本的な演算子構造は学べますね.
ただ,Excelやった後にプログラミングに入ると
順次実行するという感覚がイマイチ身につかない様です…
>>309
なぜBASICなんでしょうか?
0312デフォルトの名無しさん
2011/07/27(水) 12:21:13.33分かりやすいし、開発環境ほぼ無料みたいなもんだし
慣れりゃゲームでもネットワーク関係でもなんでも作れるし
言語的にもしっかりできてるしな
どっかのセルに=indirect(address(row()-1;column()))+1とでも入れて、
縦方向に並べる。
これの一つのセルの計算を、何列も並べる代わりに回数を指定したのがループ。
この説明で中坊の甥っ子は納得したぞ。
まぁ、マインドストーム知ってたけど。
0314デフォルトの名無しさん
2011/07/27(水) 13:09:13.25http://home.jeita.or.jp/is/highschool/algo/index2.html
0315デフォルトの名無しさん
2011/07/27(水) 14:23:46.56>>>309
>なぜBASICなんでしょうか?
「BASICを学べ」、と言う訳ではなく、
「BASICを使ってプログラムの基礎」を学べということで。
HelloWorld例
BASIC
10 PRINT "Hello World."
C言語
#include<stdio.h>
int main(void)
{
printf("Hello World.\n");
return 0;
}
大学でC始めたばかりの頃、先頭の#includや int main(void)の意味がわからず、
のどに何かつっかえたままやらされて、気分が悪かった。
訳の判らないまま勉強しても身に付かない。
Cと比べてBASICの方が記述量が少ないから理解し安いかなと思って書いた。
あと学ぶなら面白いプログラム、自分なら画面に動きのあるプログラムの方が書いてて楽しかった。
Cだと画面描画はライブラリそろえないとろくなことできないけど、
BASICはそういう命令が最初からそろってるので向いてると思った。
まぁ、いまさらBASIC勉強させられても…とは思うけど。
0316デフォルトの名無しさん
2011/07/27(水) 15:11:01.260317デフォルトの名無しさん
2011/07/27(水) 15:27:43.350318デフォルトの名無しさん
2011/07/27(水) 15:32:05.69先にやるならアセンブリに決まってる
0319デフォルトの名無しさん
2011/07/27(水) 16:07:00.880320デフォルトの名無しさん
2011/07/27(水) 16:28:40.980321デフォルトの名無しさん
2011/07/27(水) 16:41:40.18はじめてのC(どこの出版かは忘れた)、データー構造とアルゴリズム、C言語の非常識、Cからアセンブラの利用方法書いてあった本、
これらで基本的なことは学んだ。
0322デフォルトの名無しさん
2011/07/27(水) 17:06:32.66パイプラインやらサイクルやらレジスタ演算やら覚えた所で今時意味がないじゃん
逆に意味不明なプライドと思想が付いて、スパゲティプログラマになりそうだ
0323デフォルトの名無しさん
2011/07/27(水) 17:07:58.50学ぶ意味はあるだろうけどアセンブラから学ぶ必要性があるかは分からん
0324デフォルトの名無しさん
2011/07/27(水) 17:11:12.600325デフォルトの名無しさん
2011/07/27(水) 17:27:41.570326デフォルトの名無しさん
2011/07/27(水) 18:08:41.94・ポケコンやDSで動かせるので初期投資が小さい
・言語仕様が素朴で小さく理解しやすい
・行番号とGOTOという非構造化の不便さを学べる
0327デフォルトの名無しさん
2011/07/27(水) 18:11:52.650328デフォルトの名無しさん
2011/07/27(水) 18:13:04.74ちょっと買ってみようかなあ
0329デフォルトの名無しさん
2011/07/27(水) 18:47:41.68はい、ダウト
行番号や GOTO 君と仲良くなると
お別れがつらくなり
本当は GOTO 君きらいじゃないのに
世論に流されて自らに嘘をつくという
プログラマである前に人間として恥ずべきことをするようになる
0330デフォルトの名無しさん
2011/07/27(水) 18:54:17.99使われる言語が C (もしくはそれに近いメタ言語)が多いんじゃないかな?と思う
0331デフォルトの名無しさん
2011/07/27(水) 18:56:52.000332デフォルトの名無しさん
2011/07/27(水) 19:08:19.89> BASIC先にやっておくメリット。
ここで推奨し、
> ・行番号とGOTOという非構造化の不便さを学べる
ここで理由付けしてるだろ
俺はその理由に異論があるので
おまえ自身が「非構造化の不便さ」を学んでいなさそうなことに突っ込んだんだよ
行番号と GOTO の何が悪いんだ? 話はそれからだ
0333デフォルトの名無しさん
2011/07/27(水) 19:12:35.74MFCでマルチスレッドを使ったアプリを開発してます。
大きなファイルを読み込むときにアプリがフリーズしてしまうので、その防止です。
単一のファイルなら問題ないのですが、複数のファイルを読み込むときクリティカルエラーが出ます。
Expression("Buffer too small",0)
アプリを終了させないで続けて読み込もうとするときにも出ます。
どのような可能性があるのか教えて下さい。必要ならソースも見せます。
よろしくお願いします。
0334デフォルトの名無しさん
2011/07/27(水) 19:40:06.220335デフォルトの名無しさん
2011/07/27(水) 19:44:00.19ちなみにドラッグアンドドロップにしてあります。
0336デフォルトの名無しさん
2011/07/27(水) 20:07:03.65>
>ここで推奨し、
どんな物にもメリットはあると思う。
そのメリットを書いただけで推奨だと言うのは強引だろ。
GOTO云々はよくわからん。
0337デフォルトの名無しさん
2011/07/27(水) 20:09:37.14バグってるから死ぬの
デバッグしろとしか言いようがない
誰かデバッグしてください、ってんなら現象が再現するソースを出して
俺はしないけどしてくれる奇特な人がいるかもしれない
0338デフォルトの名無しさん
2011/07/27(水) 20:14:16.08/// tt_file_io.c
tt_read_fire()
{
tt_compleate_flag = FALSE;
fopen();
while() { fread(); }
tt_compleate_flag = TRUE;
}
として、利用する際にスピンロックで待機する方法はどうか
/// tt_a.c
tt_read_fire();
while(tt_compleate_flag == FALSE) {
sleep(250Hz);
}
とすれば、これらが別スレッドで動いてても、単一スレッドで動かしてるかのように同期をとれるはず。
これをウインドウズの場合にどう書けばいいのかは知らない。
0339デフォルトの名無しさん
2011/07/27(水) 20:17:21.11デメリット説明をしない悪徳業者だな、まるで
> ・行番号とGOTOという非構造化の不便さを学べる
> GOTO云々はよくわからん。
破綻は確認できたので、この旨のみの報告はいらない
0340デフォルトの名無しさん
2011/07/27(水) 20:20:40.490341デフォルトの名無しさん
2011/07/27(水) 20:25:23.97なんでこのスレに書いたのか疑問
0342デフォルトの名無しさん
2011/07/27(水) 20:29:35.200343デフォルトの名無しさん
2011/07/27(水) 20:38:48.10ふむ。 問題を起こす可能性の範囲が広すぎだ。
GUI化せず 非MFCでマルチスレッドのコード書いて問題の範囲を制限汁
0344デフォルトの名無しさん
2011/07/27(水) 20:45:17.41単一スレッドしか作ってないので複数スレッドを作らないと複数のファイルやフォルダに
対応できずエラーが起きるのではないかと思っていますがどうでしょうか?
Win32APIは全く知りません。
0345デフォルトの名無しさん
2011/07/27(水) 21:54:04.73取り合えずbindして自ポートを指定して、それからconnectしてみましたが、なんか素直じゃないような気がしてます。
Connectする前にキャストしながら色々設定する時に、自ポートを指定出来たら良いのになと思うんですが、どこかにサンプルありませんか?
Cで作ってます。
0346デフォルトの名無しさん
2011/07/27(水) 21:56:00.16A:ファイルをロードし、メモリー確保してメモリーに読み込んで、そのメモリーアドレスをリターン
B:Aから返ってきたアドレスを介して、データを利用する
上記のAがウインドウズ側スレッドの担当で、自作モジュール側スレッドの担当がBなのだと予想。
Aはメモリー確保予定のアドレスを即座にリターンして、実際の作業はBに並行して行われるのだとしたら、
Bは、まだ実際には確保されてないメモリーに対して読み書きしてる状態になる可能性があるかもしれない。
だとすれば、BはAの作業が完了までメモリーの利用を待つ形にしたらどうだろうかと思った。
ウインドウズは持ってないので知らないけど、すぐ返ってバックグラウンドで読み込みしてるのをポーリングで
確認するような仕様だったとすれば、この辺な気がする。
もしくは全然別の理由かもしれないけど、いずれにしてもファイル読み込み側と、利用側とのデータ利用順序が、逆転してしまってる場合にエラーが出るような気がする。
スレッド使った場合のみエラーが出るあたりからして、この系統の理由な気がする。
0347デフォルトの名無しさん
2011/07/27(水) 21:57:25.76知っていれば問題ない。
マルチスレッドのプログラミング技法を知らないなら、諦めろ
とか、出来る人に金払ってやってもらえとしか言えない。
0348デフォルトの名無しさん
2011/07/27(水) 21:58:46.86それが正しい唯一の方法。
0349デフォルトの名無しさん
2011/07/27(水) 22:03:50.58処理系依存否定教に汚染されてるとそうなるな
Win32 なら Win32 でいいから具体例を触ってみなけりゃまるっきり話にならない
その「出来る人」なら知らないわけがないことだが
0350デフォルトの名無しさん
2011/07/27(水) 22:05:08.51みなさまご教示ありがとうございました.
いいアイディアをもらったので色々また自分なりに練り直したいと思います.
0351デフォルトの名無しさん
2011/07/27(水) 22:17:52.49つまり、
{
int a=100;
printf("AHAHA");
return 0;
}
の場合 「a」 の存在は作成者しか知りえませんよね?
0352デフォルトの名無しさん
2011/07/27(水) 22:22:34.53同期とかは取ってないので先に終了メッセージが出てしまいます。
プログラムを見せたら原因がわかるでしょうか?同期も非同期もしてません。
それに作ったスレッドも正しく終了してません。ファイルごとに新しく
スレッドを作るべきなんでしょうか?
よろしくお願いします。
0353デフォルトの名無しさん
2011/07/27(水) 22:28:16.340354デフォルトの名無しさん
2011/07/27(水) 22:42:56.250355デフォルトの名無しさん
2011/07/27(水) 22:51:22.90逆コンパイル。
わかるよ。
0356デフォルトの名無しさん
2011/07/27(水) 22:57:07.85変数の識別子という意味ならYES
0357デフォルトの名無しさん
2011/07/27(水) 23:27:13.770358デフォルトの名無しさん
2011/07/27(水) 23:28:38.220359デフォルトの名無しさん
2011/07/28(木) 00:28:50.76exeファイルにビットマップを埋め込もうとリソースをリンクすると
access violationが出るんだけどなんなんだろこれ・・・
リソースファイルをさらしてみては?
0361デフォルトの名無しさん
2011/07/28(木) 07:03:19.13以前COBOLを扱っていました。
C言語をある程度使える、
と、面接で言えるには
どのくらいのレベルが必要ですか?
0362デフォルトの名無しさん
2011/07/28(木) 07:05:21.19と解釈されます。
0363デフォルトの名無しさん
2011/07/28(木) 07:58:39.17そこは C でも変わらないよ
0364デフォルトの名無しさん
2011/07/28(木) 09:52:16.150365デフォルトの名無しさん
2011/07/28(木) 10:06:25.240366デフォルトの名無しさん
2011/07/28(木) 10:07:32.710367デフォルトの名無しさん
2011/07/28(木) 13:57:40.110368デフォルトの名無しさん
2011/07/28(木) 14:37:48.490369デフォルトの名無しさん
2011/07/28(木) 15:24:08.780370デフォルトの名無しさん
2011/07/28(木) 15:27:12.95整数a=配列b[添字]-'0';
このさいごの配列に対して引いてるのはどういう意味なんでしょうか?
ゼロじゃなさそうですが上手いことググれないので助けてください…
配列からゼロという文字を引く…みたいになってますが…
0371デフォルトの名無しさん
2011/07/28(木) 15:29:48.960372デフォルトの名無しさん
2011/07/28(木) 15:32:31.81初心者です。
0373デフォルトの名無しさん
2011/07/28(木) 15:32:48.100374デフォルトの名無しさん
2011/07/28(木) 15:34:59.38文字としての'0'〜'9'から
文字としての'0'を減算してやることで
値としての0〜9に変換できる
0375デフォルトの名無しさん
2011/07/28(木) 15:36:47.850376デフォルトの名無しさん
2011/07/28(木) 15:38:22.970377デフォルトの名無しさん
2011/07/28(木) 15:39:28.44文字コードに関わらず動作することが保証されている。
0378デフォルトの名無しさん
2011/07/28(木) 15:45:36.080379デフォルトの名無しさん
2011/07/28(木) 16:14:15.31パンチカード前提で飛び飛びになってる
EBCDICも数字部分はたまたま並んではいるが・・・
0380デフォルトの名無しさん
2011/07/28(木) 16:15:03.69つまり、配列から引くことで文字列から数値に直してから、整数型の変数にぶち込んでいるということですね
0381デフォルトの名無しさん
2011/07/28(木) 16:15:29.720382デフォルトの名無しさん
2011/07/28(木) 16:18:51.86後から規格作ったんだよw
0383デフォルトの名無しさん
2011/07/28(木) 16:21:59.840384デフォルトの名無しさん
2011/07/28(木) 16:40:05.270385デフォルトの名無しさん
2011/07/28(木) 16:46:07.76俺俺文字コードでも文字コードにはかわりない
数字が連続になってない文字コードを作ってもよい
0386デフォルトの名無しさん
2011/07/28(木) 16:50:48.330387デフォルトの名無しさん
2011/07/28(木) 16:56:58.71y/xが以下の条件のうちどれかを満たすまで計算するプログラムを作る
1.割り切れる
2.循環する
3.整数部も含め30桁まで出力
ただし,xは2以上,yは0以上でなければならず,この条件を満たすまで再度入力させること.小数点は1桁として扱わない.また,x=2,y=4のときのように,xがyの約数であるときは整数部のみ出力し,小数点を出力してはならない.
使うのは
#inculude<stdio.h>
のみ
っていう条件なんですがさっぱりわかりません、分かる方ヒントください
0388デフォルトの名無しさん
2011/07/28(木) 17:00:18.98π計算です・・・
0389デフォルトの名無しさん
2011/07/28(木) 17:08:43.330390デフォルトの名無しさん
2011/07/28(木) 17:12:37.98C言語で使うんなら必須。
JIS X3010 : 2003 プログラム言語C
5.2.1 から抜粋
ソース基本文字集合および実行基本文字集合の双方において、10進数字に関する上の並びにおいて、
0の右側に並んでいる各文字の値は、一つ左側にある文字の値に比べ1だけ大きくなければならない。
0391デフォルトの名無しさん
2011/07/28(木) 17:13:48.210.33333333333333333333333333333(整数部も含め30桁)
じゃない?
0392デフォルトの名無しさん
2011/07/28(木) 17:15:06.43LoadBitmapで呼び出したのでいいの?
いま作ってるプログラムは一応LoadBitmapで動いてるけど
猫でも分かる〜のサイト見てるとFindResourceやら
LoadResourceやら使ってビットマップ呼び出してるから
どっちが正しいのか良く分からない;
0393デフォルトの名無しさん
2011/07/28(木) 17:19:46.42これって、さっとできる初心者向けの問題なの?
さっと解く方法が思いつかなくて1桁1桁計算しようとしたらかなり面倒だった
0394デフォルトの名無しさん
2011/07/28(木) 17:28:58.480395デフォルトの名無しさん
2011/07/28(木) 17:32:53.57割り算のあまりを覚えておく方法だと、循環する分だけ覚えておく必要があるから
結局30個分のあまりを覚えておかなければならなくなる。
0396デフォルトの名無しさん
2011/07/28(木) 17:33:34.671/4を0.25
と表示して欲しい場合って、printfのフォーマット指定でうまく書けるもの?
もうひとつ
整数部も含め30桁って、printfのフォーマット指定でうまく書けるもの?
0397デフォルトの名無しさん
2011/07/28(木) 17:37:31.490〜9までは続いていることは保障されているよ
0398デフォルトの名無しさん
2011/07/28(木) 17:44:15.46あの規定は拡大解釈するとおかしいことになる
「実行文字集合」とあるところは「翻訳環境が想定する実行文字集合」と読むべきで
開発してよいものの範囲を言語が主張するような解釈では筋が通らない
0399デフォルトの名無しさん
2011/07/28(木) 17:52:25.94void main( int argv, char* argc[] ){
int x = 10000; /* 任意の値 */
int y = 49; /* 任意の値 */
int cnt;
printf("test: %d\n", x % y);
/* 余りを10倍して割るを繰り返す */
for( cnt = 0 ; cnt < 30 && (x %= y) != 0 ; cnt++ ){
x *= 10;
printf("%d", x/y);
}
printf("%d", x/y);
}
出力するだけでいいならこんな感じか
入力処理は頑張れ
0400デフォルトの名無しさん
2011/07/28(木) 17:55:33.17#include <stdio.h>
void main( int argv, char* argc[] ){
int x = 10000; /* 任意の値 */
int y = 49; /* 任意の値 */
int cnt;
printf("%d.", x / y);
/* 余りを10倍して割るを繰り返す */
for( cnt = 0 ; cnt < 30 && (x = x % y) != 0 ; cnt++ ){
x = x * 10;
printf("%d", x/y);
}
printf("%d", x/y);
}
0401デフォルトの名無しさん
2011/07/28(木) 18:06:38.50循環小数かどうかはどこに表現されてるの?
0402デフォルトの名無しさん
2011/07/28(木) 18:08:28.44>1/2を0.5
>1/4を0.25
%g
0403デフォルトの名無しさん
2011/07/28(木) 18:15:44.35循環の長さは、最大素因数だと思うが。
0404デフォルトの名無しさん
2011/07/28(木) 18:20:02.06間違えた。 同じ余りが再度でてきたら循環。
0405デフォルトの名無しさん
2011/07/28(木) 18:21:31.31ん?だから最大30個(29個か?)のあまりを覚えとかなきゃいけないんでしょ?
0406デフォルトの名無しさん
2011/07/28(木) 18:26:44.91#define INDIV_MAX (5) /* 終了する循環回数 */
#define LOOP_COUNT (30) /* 表示する桁数 */
void main( void ){
int x;
int y;
int cnt;
int prev_x;
int indiv_cnt;
printf("xの値を入力してください ->");
scanf("%d", &x);
printf("yの値を入力してください ->");
scanf("%d", &y);
printf("= %d", x / y);
if( x % y ) printf(".");
/* 余りを10倍して割るを繰り返す */
for( cnt = 0, indiv_cnt = 1 ; cnt < LOOP_COUNT && (x = x % y) != 0 && indiv_cnt < INDIV_MAX ; cnt++ ){
x = x * 10;
if( prev_x == x ){
indiv_cnt++;
} else {
prev_x = x;
indiv_cnt = 1;
}
printf("%d", x/y);
}
}
0407デフォルトの名無しさん
2011/07/28(木) 18:29:24.28出直してきます
0408デフォルトの名無しさん
2011/07/28(木) 18:30:54.590409デフォルトの名無しさん
2011/07/28(木) 18:31:54.76例えば、1/77
=> 0.012987012987012988.....
最初の0.0の時点での余り10を覚えておいて、次回以降の余りが10になったら循環。
0410デフォルトの名無しさん
2011/07/28(木) 18:33:01.18http://ideone.com/7vNqN
0411デフォルトの名無しさん
2011/07/28(木) 18:37:54.480412デフォルトの名無しさん
2011/07/28(木) 18:39:04.62ん?だから最大30個(29個か?)のあまりを覚えとかなきゃいけないんでしょ?
30回くらい割り算するんだから
0413デフォルトの名無しさん
2011/07/28(木) 18:55:46.23数学は苦手なのでわかりません。
0414デフォルトの名無しさん
2011/07/28(木) 19:04:06.230415デフォルトの名無しさん
2011/07/28(木) 19:06:27.65頭悪いの?
0416デフォルトの名無しさん
2011/07/28(木) 19:06:50.950417デフォルトの名無しさん
2011/07/28(木) 19:19:35.921222 / 9900
0418デフォルトの名無しさん
2011/07/28(木) 19:23:43.730419デフォルトの名無しさん
2011/07/28(木) 19:29:20.91そして有限桁で終わるのは決まったパターンがある
0420デフォルトの名無しさん
2011/07/28(木) 19:34:41.85最後までチョコたっぷりだもん
0421デフォルトの名無しさん
2011/07/28(木) 19:35:32.97既約分数の形にしたときに分母が2または5の素因数しか持たないとき有限小数
0422デフォルトの名無しさん
2011/07/28(木) 19:36:57.531/99=0.01010101010101010101010101010101...
1/999=0.001001001001001001001001001001001...
0.345345345... = 345/999
こんなんでヒントになる?
0423デフォルトの名無しさん
2011/07/28(木) 19:57:03.20誰がヒントを求めてるんだよ
0424デフォルトの名無しさん
2011/07/28(木) 19:57:29.640425デフォルトの名無しさん
2011/07/28(木) 19:59:42.01ぱくりまくりつつできた!
http://ideone.com/YQFqU
0426デフォルトの名無しさん
2011/07/28(木) 20:12:35.97Fatal: Access violation. Link terminated.
これどういう意味?
0427デフォルトの名無しさん
2011/07/28(木) 20:40:43.870428デフォルトの名無しさん
2011/07/28(木) 22:38:25.76例えば
struct{
char a;
int b;
};
で5バイトになるようにしたいのです。
0429デフォルトの名無しさん
2011/07/28(木) 22:40:05.170430デフォルトの名無しさん
2011/07/28(木) 22:43:21.90struct {
char a;
char b_[sizeof(int)];
int & b() { return reinterpret_cast<int&>(b_); }
int const & b() const { return reinterpret_cast<int&>(b_); }
}
0431デフォルトの名無しさん
2011/07/28(木) 22:43:41.57ありがとう
0432デフォルトの名無しさん
2011/07/28(木) 22:46:43.06参考になりましたthx
0433デフォルトの名無しさん
2011/07/28(木) 23:01:55.80これ、なにをしてるんですか?理解できません。
0434デフォルトの名無しさん
2011/07/28(木) 23:38:58.49スレ違い。
0435デフォルトの名無しさん
2011/07/28(木) 23:43:04.75どんなときに注意するものなんでしょうか?
1桁の整数の四則演算程度ではまったく気にしなくていいのでしょうか?
0436デフォルトの名無しさん
2011/07/28(木) 23:46:14.16目的に依る
お金の勘定とか、誤差のレベルで利害が大きく出る場合は注意が必要
0437デフォルトの名無しさん
2011/07/28(木) 23:46:48.20× >>434
○ >>435
0438デフォルトの名無しさん
2011/07/28(木) 23:53:39.83整数の四則演算なので、誤差があってはいけないレベルだと思ってます
具体的には、4つの1桁の整数を元に四則演算で10にするってやつです
0439デフォルトの名無しさん
2011/07/28(木) 23:57:01.09実装依存です
たいていの場合には整数のみを扱う限り15桁までは誤差がまったくでません
0440デフォルトの名無しさん
2011/07/29(金) 00:20:12.85とりあえず誤差は出なさそうなので気にしないことにします
ありがとうございます
0441デフォルトの名無しさん
2011/07/29(金) 00:22:23.26その演算順序だと整数のみを扱ってないよ
0442デフォルトの名無しさん
2011/07/29(金) 00:31:04.57実際にいくつか試しても誤差が出なかったので問題が発生するまで保留にしときます
問題が出てくれたほうがちゃんと理解できそうだし
0443デフォルトの名無しさん
2011/07/29(金) 00:36:39.860444デフォルトの名無しさん
2011/07/29(金) 00:38:33.66#include<stdio.h>
int main(void)
{
double x, y;
int i, j;
for(i=1;i<20;i++)
{
x=1.0;
y=x/i;
j=y*i;
printf("%d\n", j);
}
return 0;
}
0445デフォルトの名無しさん
2011/07/29(金) 01:19:28.3713件前後(?)以上埋め込もうとするとaccess violationが出ます
件数や使用量による制約でもあるのでしょうか?
またその場合はdllなどに分割して埋め込むような形で対応するのでしょうか?
ちなみに使ってるコンパイラはbccです
0446デフォルトの名無しさん
2011/07/29(金) 01:22:53.58http://ideone.com/SiEB0
これだと結果EQになってるが
自分の環境(gcc version 4.3.4 20090804 (release) 1 (GCC))だと
NEになる
誤差わけわからんな
0447デフォルトの名無しさん
2011/07/29(金) 02:21:55.75自分gcc使い始めて1日目なので勘違いしてるかもだけど、
EQ : -mfpmath=sse
NE : -mfpmath=387
だったよ。(gcc 4.6.2/mingw)
0448デフォルトの名無しさん
2011/07/29(金) 03:09:35.390になると保証されている
0449デフォルトの名無しさん
2011/07/29(金) 04:05:44.880451デフォルトの名無しさん
2011/07/29(金) 08:08:52.30bccは制限がある。
それ以来bccを使うのを辞めた
0452デフォルトの名無しさん
2011/07/29(金) 10:26:20.40それガチ?
とりあえずgccとやらを入れてくるわ
0453デフォルトの名無しさん
2011/07/29(金) 10:55:44.15このレベルまで学習した方が良い
っていうのあります?
0454デフォルトの名無しさん
2011/07/29(金) 10:59:52.480455デフォルトの名無しさん
2011/07/29(金) 11:27:51.510456デフォルトの名無しさん
2011/07/29(金) 11:31:09.82そうやってヘンに目標を区切る必要あるかな?
やったらやったぶんだけ君のアドバンテージになるんだし。
卒業してからのことを考えてるんだったらなおさら。
0457デフォルトの名無しさん
2011/07/29(金) 11:32:35.64やりたいと思う事ができるようになるまで
0458デフォルトの名無しさん
2011/07/29(金) 13:46:05.770459デフォルトの名無しさん
2011/07/29(金) 13:53:30.69gccでリソース埋め込みだけするとか可能?
0460デフォルトの名無しさん
2011/07/29(金) 14:03:18.020461デフォルトの名無しさん
2011/07/29(金) 14:17:13.00段階的にいこうかなと・・・
0462デフォルトの名無しさん
2011/07/29(金) 14:47:19.430463デフォルトの名無しさん
2011/07/29(金) 15:02:16.490464デフォルトの名無しさん
2011/07/29(金) 18:50:42.290465デフォルトの名無しさん
2011/07/29(金) 18:57:48.34てかどんなコードがそれにあたるのか知らんな
BCC→GCCで書き換えなきゃいかんソースってどんなの?
0466デフォルトの名無しさん
2011/07/29(金) 19:12:07.940467デフォルトの名無しさん
2011/07/29(金) 19:19:38.760468デフォルトの名無しさん
2011/07/29(金) 19:23:16.54できないとかよく見るしな。
90年代にVC6で作ったシステムが、それ以降のVCに移行できないとか。
0469デフォルトの名無しさん
2011/07/29(金) 19:32:21.410470デフォルトの名無しさん
2011/07/29(金) 19:38:54.95今世界中からC言語コンパイラがきえたらどうなるのっと
0471デフォルトの名無しさん
2011/07/29(金) 19:39:27.80何いってんの?
0472デフォルトの名無しさん
2011/07/29(金) 19:53:02.61ヘッダーやらdll、lib辺りは互換性も糞もなくね?
0473デフォルトの名無しさん
2011/07/29(金) 20:11:20.66ブートストラップ問題
http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%BC%E3%83%88%E3%82%B9%E3%83%88%E3%83%A9%E3%83%83%E3%83%97%E5%95%8F%E9%A1%8C
0474デフォルトの名無しさん
2011/07/29(金) 20:59:20.80構造化例外処理(_try 〜 _finaly)が辛い
キーワードだけ見るとC++っぽいけどVCのCのコンパイラ拡張で提供されてる部分
0475デフォルトの名無しさん
2011/07/29(金) 21:28:55.09FDしかなかったのになぁ。
0476デフォルトの名無しさん
2011/07/29(金) 21:44:00.61統合開発環境も付いてるから初心者でもすぐ始められるし。
0477デフォルトの名無しさん
2011/07/29(金) 22:38:17.22コンパイルは早いし、ライブラリも充実してるから高度なソフト開発に最適だし。
0478デフォルトの名無しさん
2011/07/29(金) 23:12:03.120479デフォルトの名無しさん
2011/07/30(土) 01:30:09.32まだborlandがdelphi手放さなかった頃はborland C++ suiteと言う製品として買えてた
(中身はDOS時代のアセンブラ/コンパイラの詰合せ)
0480デフォルトの名無しさん
2011/07/30(土) 14:13:59.880481デフォルトの名無しさん
2011/07/30(土) 16:30:35.390482デフォルトの名無しさん
2011/07/30(土) 19:16:21.84int 同士の割り算で常にマイナス方向に丸めたいのですが
よい方法があれば教えてください
-21/10 を -3 にしたいです
画像処理に使うので高速な方法でお願いします
0483デフォルトの名無しさん
2011/07/30(土) 19:29:10.27a / b
↓
(a-b+1) / b
にすればいいのかな。
a = -21 → (-21-10+1) / 10 = -3
a = -20 → (-20-10+1) / 10 = -2
0484デフォルトの名無しさん
2011/07/30(土) 19:32:19.58そうです
今は a が0以上のときと負のときとで場合分けしていますが
ループの一番深い部分なので高速化したいです
0485デフォルトの名無しさん
2011/07/30(土) 19:50:20.06http://www.google.com/codesearch#/
で、floorの処理を探して眺めてみてはどうだろうか。
0486デフォルトの名無しさん
2011/07/30(土) 19:52:15.35限定的な方法
適用できる条件がかなり厳しいけど
全体を正方向にシフトして計算した後で元の場所にシフトして戻す
a / b
で b が変化しにくい時
シフトする数を c=1000 とか安全な数として d=c*b を予め計算する
(a+d)/b-c
欲しい結果はコレ
加算一回、減算一回増えるだけで済む
0487482
2011/07/30(土) 20:11:00.77b はループの浅い部分で決まるので使えそうです
安全な数をどうやって求めるか考えてみます
ありがとうございました
>>483 >>485 さんもありがとうございました
0488デフォルトの名無しさん
2011/07/30(土) 22:44:57.76明日もよい天気でしょう。』
とコンパイラしたいのですが『今日もいい天気です。¥n明日もいい天気でしょう。¥n』とでてしまします。これは何が原因なのでしょうか。コードも貼っておきます。
/*練習*/
#include<stdio.h>
int main()
{
printf("今日もいい天気です。¥n");
printf("明日もいい天気でしょう。¥n");
return 0;
}
ちなみにMacのターミナルを使ってC言語の勉強をしています。親切な方、ご教授ください。
0489デフォルトの名無しさん
2011/07/30(土) 22:47:12.79全角の¥を、半角の\にする
0490デフォルトの名無しさん
2011/07/30(土) 22:47:50.410491デフォルトの名無しさん
2011/07/30(土) 22:53:14.40>>490
おお!出来ました!ありがとうございます!
0492デフォルトの名無しさん
2011/07/30(土) 22:56:54.92高校時代によく見た光景が。。。
0493デフォルトの名無しさん
2011/07/30(土) 23:02:43.110494デフォルトの名無しさん
2011/07/30(土) 23:03:28.290495デフォルトの名無しさん
2011/07/30(土) 23:05:18.480496デフォルトの名無しさん
2011/07/30(土) 23:26:52.73ターミナルを使えるようにすること
0497デフォルトの名無しさん
2011/07/30(土) 23:39:18.86それは、家電量販店でmac見かけたら最初にやる事
0498デフォルトの名無しさん
2011/07/31(日) 00:05:36.160499デフォルトの名無しさん
2011/07/31(日) 00:27:44.52「よい天気」とだしたいのに「いい天気」と書いてれば「いい天気」と出るのは当たり前だろ
0500デフォルトの名無しさん
2011/07/31(日) 00:58:29.640501デフォルトの名無しさん
2011/07/31(日) 01:18:43.59○ ??/
0502デフォルトの名無しさん
2011/07/31(日) 12:09:18.520503デフォルトの名無しさん
2011/07/31(日) 16:32:14.76int rev_bit(unsigned n, int lower, int upper) {
}
int main(void) {
unsigned n = 0x32; /* 00110010 */
n = rev_bit(n, 1, 5); /* 1〜5bitの範囲を反転 */
printf("0x%x", n); /* 0x29 00101001 */
return 0;
}
0504デフォルトの名無しさん
2011/07/31(日) 16:53:30.040505デフォルトの名無しさん
2011/07/31(日) 16:55:40.440506デフォルトの名無しさん
2011/07/31(日) 17:07:20.86使ったら混乱するわw
0507デフォルトの名無しさん
2011/07/31(日) 17:32:31.39上位ビットを左で書かないと怒られる案件もある
紛らわしい言葉遣いはコード・日本語ともによくある
引っかからないことも適性の1つだ
0508デフォルトの名無しさん
2011/07/31(日) 17:41:55.03int rev_bit(int n,int l,int u) {
for (--l,--u;l<u; ++l,--u)if(((n&(1<<l))>>l)^((n&(1<<u))>>u))n^=(1<<l)|(1<<u);
return n;
}
0509デフォルトの名無しさん
2011/07/31(日) 17:49:22.280510デフォルトの名無しさん
2011/07/31(日) 18:08:33.46助言、ありがとうございます。
>>508のコードでうまくいきました。
0511デフォルトの名無しさん
2011/07/31(日) 18:57:43.360512デフォルトの名無しさん
2011/07/31(日) 18:59:12.602010:重い
0513デフォルトの名無しさん
2011/07/31(日) 19:04:10.58そんだけ?
0514デフォルトの名無しさん
2011/07/31(日) 19:49:41.270515デフォルトの名無しさん
2011/07/31(日) 20:00:22.22(効率よく)文字列化する方法を教えてください。
なお、OS や処理系に依存するのは NG です。
0516デフォルトの名無しさん
2011/07/31(日) 20:05:07.720517デフォルトの名無しさん
2011/07/31(日) 20:08:09.91宿題ではないです。
0518デフォルトの名無しさん
2011/07/31(日) 20:09:30.460519デフォルトの名無しさん
2011/07/31(日) 20:14:38.78斬新なのでしょうか?
0520デフォルトの名無しさん
2011/07/31(日) 20:15:31.300521デフォルトの名無しさん
2011/07/31(日) 20:22:25.73NG は No Good という事
クイズの出題者や試験の採点者が使うなら分かるけど、
教えて貰う相手にお前の答えは Good じゃないとは
言わないでしょ
0522デフォルトの名無しさん
2011/07/31(日) 20:29:26.72>教えて貰う相手にお前の答えは Good じゃない
誰もそんなこと言ってなくね?
0523デフォルトの名無しさん
2011/07/31(日) 20:31:23.380524デフォルトの名無しさん
2011/07/31(日) 20:34:30.49懇切丁寧なご説明、感謝します。
おそらくは「自分で実装するしかない」という事を
言いたかったのだと解釈したのですが、正しいでしょうか?
>>521
情緒溢れる解説、誠に有り難う御座います。
世の中には色んな人がいることを
改めて学ばせていただきました。
0525デフォルトの名無しさん
2011/07/31(日) 20:42:32.430526デフォルトの名無しさん
2011/07/31(日) 20:53:15.04http://www.ragestorm.net/blogs/?p=57
反対方向だけど、少し前に文字列を double に変換するルーチンの問題が話題になってたね
あのときペーパーを幾つか漁ってみたけどサッパリ頭に入らんかった
0527デフォルトの名無しさん
2011/07/31(日) 20:55:34.160528デフォルトの名無しさん
2011/07/31(日) 20:56:10.011 2 3 4 5 6 7 8 9
*
>Dice try (N=end)
number = 2
1 2 3 4 5 6 7 8 9
# *(3)
>Dice try (N=end)
number = 6
1 2 3 4 5 6 7 8 9
#(3) *(9)
となるようにプログラミングしたいのですが、
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int num;
srand( (unsigned int)time( 0 ) );
printf( "1 2 3 4 5 6 7 8 9\n" );
{
int i,sai;
static int a;
sai=rand()%6+1;
a=0;
a=a+sai;
for( i = 0 ; i < 8 ; i++ );
return 0;
}
ここからどうすればいいですか?(見にくくなってすみません)
0529デフォルトの名無しさん
2011/07/31(日) 20:58:02.10>結局は既存のコードを研究するのが一番の近道なんじゃないかな
やはりそうですか・・・
もしや「私の知らない裏技がないか?」と思って、
今回尋ねてみたのですが。
了解しました。
0530デフォルトの名無しさん
2011/07/31(日) 21:02:16.57ごめん
そもそもルールが分からんのだが。。。
0531デフォルトの名無しさん
2011/07/31(日) 21:09:17.43これが多分 IEEE の倍精度浮動小数点数を効率よく出力するアルゴリズムだと思われ
http://www.cs.indiana.edu/~dyb/pubs/FP-Printing-PLDI96.pdf
0532デフォルトの名無しさん
2011/07/31(日) 21:26:19.00なるほど。
こんな事に対しても「高速化」の研究がされていたのですか。
勉強になりました。
0533デフォルトの名無しさん
2011/07/31(日) 21:33:47.48さいころを一回ずつ振って出た数字だけ進み9でとまれば終わり
オーバーしたら余りの目の分だけ戻る
てルールです。
0534デフォルトの名無しさん
2011/07/31(日) 21:40:00.652回以上振っても、9で止まらない限り終わらない。でおk?
0535デフォルトの名無しさん
2011/07/31(日) 21:50:32.93はい
0536デフォルトの名無しさん
2011/07/31(日) 22:03:22.42おk
取り合えずもう一個"*"表示用の配列用意しようか
いじる所多そうだから、こっちでも一回作ってみる
0537デフォルトの名無しさん
2011/07/31(日) 23:12:31.50#include<stdlib.h>
#include<time.h>
int main(void)
{
int num,i,sai;
char ps[] = " \n";
char c;
srand((unsigned int)time(0));
num = i = sai = 0;
0538デフォルトの名無しさん
2011/07/31(日) 23:12:59.43{
sai = rand()%6+1;
num = i;
i += sai;
printf("サイコロの目%d\n",sai);
printf("123456789\n");
if(i > 8)
{
i = 8-(i-8);
}
ps[i] = '*';
printf("%s\n",ps);
ps[i] = ' ';
printf("続けますか? Yes = Y/y No = Enterj\n");
c = getchar();
if(c == 'Y' || c == 'y') return 1;
}
printf("クリアしました。\n");
return 0;
}
0539デフォルトの名無しさん
2011/07/31(日) 23:18:06.37}
作ってみたお。
以上、3分割です。
ベースとなるソースとは全然違う形になったけど、良いよね?
(クリアするまで一気に終わっちゃうから、続けるか確認する処理も勝手に追加したしw)
最初から自分で書いたらもうちょいましな形になったんじゃろか・・・
0540デフォルトの名無しさん
2011/07/31(日) 23:20:19.35ありがとうございます。
0541デフォルトの名無しさん
2011/07/31(日) 23:21:24.97ps[] ="\n"は、"\n"を" \n"(空白8個分)に置き換えて下さい。
0542デフォルトの名無しさん
2011/07/31(日) 23:23:11.96psはポジションの略としてpsという変数名にしました。
(ただのaじゃ味気ないので勝手に変更しました)
0543デフォルトの名無しさん
2011/07/31(日) 23:24:45.93どういたしまして。
どういう動作してるか、調べてみて下さいね。
0544デフォルトの名無しさん
2011/07/31(日) 23:26:53.57>>541に嘘かいてた・・・
空白は9個分です。
0545デフォルトの名無しさん
2011/07/31(日) 23:35:15.32続けますか?じゃなくて、終わりますか?だった・・・orz
0546デフォルトの名無しさん
2011/08/01(月) 01:26:38.71構造体のポインタをアドレス渡しして、関数内でmallocしてメンバ変数を変更したいのですが上手くいきません
なぜfoo内のmallocが反映されないのでしょうか
0547デフォルトの名無しさん
2011/08/01(月) 01:32:53.98fooにポインタのポインタで渡していないから
(fooでポインタのポインタに領域を確保する)
0548546
2011/08/01(月) 01:43:40.94それをするためにはhogeのアドレス、すなわち&hogeを渡さないといけない、ということで良いんでしょうか
それでは、現状だと一体何が受け渡されているのですか?
hogeは最初ぬるぽですが、このまま関数に渡した場合、hogeの示すアドレスを渡すわけで、
そのアドレスに対してmallocという考え方だったのですが。
すみません、ポインタがよく理解出来ていないみたいです
0550546
2011/08/01(月) 01:49:33.92だから&でその変数のアドレスを渡さないとそりゃ反映されないっすね。すみません、ありがとうございました
>>549
main() の hoge には NULL というか、でたらめ値が入っていて、
それが foo() にそのままわたっています。foo() の hoge は NULL というかでたらめ値。
次に hoge には、malloc() の返り値が入ります。
そしてそのまま foo() は終了し、hoge の値は胡散霧消です。hoge は関数内ローカル変数ですから、そのままでは main() に渡りません。
main() に hoge の値を返したいのなら、そのように表立って記述しなければなりません。
>>549 foo()
あるいは、main() の hoge のアドレス &hoge を foo() に渡して、
p = &hoge
として *p = malloc() とすれば、main の hoge に malloc() の返り値を入れる、ということを foo() の中で行うことができます。
>>549 bar()
0554デフォルトの名無しさん
2011/08/01(月) 14:00:58.500.500000+10.50000=11.00000
cの値は215でこれに11を加えると226となります
eには"A"が代入されています
と表示させたいのですが、エラーとなってしまいます。どこが間違ってるのか分かる方、教えてください。
#include<stdio.h>
int main()
{
double a=0.5,b=10.5;
int c=215,d;
chare e='A';
printf("%f+%f=%f\n",a,b,a+b);
d=c+11;
printf("cの値は%dでこれに11を加えると%dとなります\n",c,d);
printf("eには\"%c\"が代入されています\n",e);
return 0;
}
0556デフォルトの名無しさん
2011/08/01(月) 14:12:34.530557デフォルトの名無しさん
2011/08/01(月) 14:22:37.19はい、すみませんでした。こちらになります...。
main.c: In function ‘main’:
main.c:8: error: ‘chare’ undeclared (first use in this function)
main.c:8: error: (Each undeclared identifier is reported only once
main.c:8: error: for each function it appears in.)
main.c:8: error: expected ‘;’ before ‘e’
main.c:15: error: ‘e’ undeclared (first use in this function)
>>556
シングルクォーテーションの使い方がおかしいということですか?
0558デフォルトの名無しさん
2011/08/01(月) 14:25:50.76だろ、どこで教わった?
0560デフォルトの名無しさん
2011/08/01(月) 14:37:10.40あああああああああ!!!!ありがとうございます!!!!プログラムが間違ってると思ってたのですが、そうではなくて単なる打ち間違いだったんですね...。すみません、助かりました。
0561デフォルトの名無しさん
2011/08/01(月) 14:38:24.93ほんとにその通りです...。このようなことで書き込みをしないで済むようにもっと集中したいと思います...。
0562デフォルトの名無しさん
2011/08/01(月) 14:39:13.30main.c: main 関数の中で:
main.c: 8: エラー: chare が未定義(この関数で始めて使った)
main.c: 8: エラー: (未定義の識別子は関数ごとに一度だけ報告します)
main.c: 8: エラー: e の前に ; がない
main.c: 15: エラー: e が宣言されていない(この関数で始めて使った)
0564デフォルトの名無しさん
2011/08/01(月) 19:49:39.730565デフォルトの名無しさん
2011/08/01(月) 19:58:11.03サーバー側の話なら、cgiは作れるけど。
クライアント側の話なら、もうちょっと簡単かも
0566デフォルトの名無しさん
2011/08/01(月) 20:08:57.07webプログラミングっていうのは要するに
ソケットプログラムで80番ポートを利用するサーバーを作って
ハイパーテキストを返せばいいの?
0567デフォルトの名無しさん
2011/08/01(月) 20:37:29.29それはどちらかというとウェブサーバプログラミングじゃないの
socket とか listen とか accept とかは下回りのライブラリに任せて、
レスポンスヘッダ以降がウェブプログラミングの範疇だと思うわ
0568デフォルトの名無しさん
2011/08/01(月) 21:08:38.65その両方なのか さっぱり見当がつかない
ぱっと思い浮かんだのが php で鯖内DBとやりとりするようなのだが
# これはサーバーサイドで ある程度環境整えてる上で駆動されるスクリプト のプログラミング
0569デフォルトの名無しさん
2011/08/01(月) 21:14:06.230570デフォルトの名無しさん
2011/08/01(月) 21:34:25.810571デフォルトの名無しさん
2011/08/01(月) 21:37:43.310572デフォルトの名無しさん
2011/08/01(月) 21:50:13.77ポインタをインクリメントしたら、次に差すアドレスって
何個跳びになるんでしょうか?
0x0002←この値をインクリメントする
お願いします
0573デフォルトの名無しさん
2011/08/01(月) 21:54:07.83sizeof(型)で調べられます。charの場合のみ1と決まっています。
0574デフォルトの名無しさん
2011/08/01(月) 21:58:43.39あ、そういうことですか
宣言したときのサイズで、そこからそのサイズ分飛ぶことにねるんですね
ありがとうございます
0575デフォルトの名無しさん
2011/08/01(月) 22:24:40.62ちなみにsizeof(変数) でもOKです。sizeof(リテラル)でもOKです。
0576デフォルトの名無しさん
2011/08/01(月) 22:33:10.460577デフォルトの名無しさん
2011/08/01(月) 22:43:01.79sizeof(c) = sizeof(char) ≠ sizeof('a');
0578デフォルトの名無しさん
2011/08/01(月) 22:48:41.910579デフォルトの名無しさん
2011/08/01(月) 23:13:14.75sizeof(' ^^ ') = sizeof(int)
0580デフォルトの名無しさん
2011/08/01(月) 23:16:08.180581デフォルトの名無しさん
2011/08/01(月) 23:18:33.760582デフォルトの名無しさん
2011/08/01(月) 23:25:07.75流石にintの方が大きいことは無いよな?
0583デフォルトの名無しさん
2011/08/01(月) 23:31:30.294バイト固定?
0584デフォルトの名無しさん
2011/08/01(月) 23:34:32.3564bitなら8バイトじゃね?
0585デフォルトの名無しさん
2011/08/01(月) 23:42:29.450586デフォルトの名無しさん
2011/08/01(月) 23:48:50.4332bit用にコンパイルすればおk
0587デフォルトの名無しさん
2011/08/01(月) 23:55:02.4332bitOSでは、そう。
0588デフォルトの名無しさん
2011/08/01(月) 23:56:56.970589デフォルトの名無しさん
2011/08/01(月) 23:58:41.560590デフォルトの名無しさん
2011/08/02(火) 00:07:08.23だからポインターもunsigned intで代用できると思ってたわ。
0591デフォルトの名無しさん
2011/08/02(火) 00:12:35.860592デフォルトの名無しさん
2011/08/02(火) 00:30:24.62DOSの時代は、ポインタが16bitと32bitと混在してたな。
0593デフォルトの名無しさん
2011/08/02(火) 00:32:05.22Win32だと64bitCPUでも32bit。
当たり前か。
0594デフォルトの名無しさん
2011/08/02(火) 00:36:37.550595デフォルトの名無しさん
2011/08/02(火) 00:36:53.33つ LLP64
0596デフォルトの名無しさん
2011/08/02(火) 00:38:15.97型情報を埋め込んだりします
0597デフォルトの名無しさん
2011/08/02(火) 00:43:28.34下記みたいな感じで#define にアドレスを宣言しておいて
関数の引数をポインタにしておけば、関数に対してアドレスって渡せますか?
void sub(int *aaa);
#define ABC 0x00FF //渡したいアドレス
main{
sub(ABC);
}
void sub(int *aaa){
}
0598デフォルトの名無しさん
2011/08/02(火) 00:46:50.31キャストしときゃ大丈夫なんじゃね?
0599デフォルトの名無しさん
2011/08/02(火) 00:48:58.70そこまで書いてるなら、自分で動かして見たら良えやん
あと、{}の使い方はC言語の流儀に従っとけ
0600デフォルトの名無しさん
2011/08/02(火) 00:52:16.08{
...;
}
sub((int *) 0xff);
0601デフォルトの名無しさん
2011/08/02(火) 01:23:08.34>>599
>>600
ありがとうございます。
家には環境がないので、明日試してみます。(環境作ってないだけですが…)
キャスト勉強になりました!
{}の使い方って>>600さんみたいな感じが一般的なんですね。
普通にコンパイル通ってたので気にしたことなかったです。
0602デフォルトの名無しさん
2011/08/02(火) 01:52:44.69http://astyle.sourceforge.net/astyle.html
0603デフォルトの名無しさん
2011/08/02(火) 02:10:01.57http://linuxjf.sourceforge.jp/JFdocs/kernel-docs-2.2/CodingStyle.html
0604デフォルトの名無しさん
2011/08/02(火) 02:28:53.83品質とかアルゴリズムの理解とか、もっと重要な事があるだろ。
0605デフォルトの名無しさん
2011/08/02(火) 12:21:17.38スタイルは言語ごとや個人でも違うけど、その言語の入門書に書かれてるスタイルに合わせるのが無難
0606デフォルトの名無しさん
2011/08/02(火) 13:02:25.82http://www.ioccc.org
どこぞの胡散臭いとこみたいな洗脳じゃなく
しっかり議論(論争ではない)された合理性こそ大事
自分と違うスタイルなんてそこいら中にあるのに使われた瞬間アウトとか論外だよ
0607デフォルトの名無しさん
2011/08/02(火) 14:46:32.56かっこつけんなぼけ
0608デフォルトの名無しさん
2011/08/02(火) 14:49:47.300609デフォルトの名無しさん
2011/08/02(火) 14:50:04.580610デフォルトの名無しさん
2011/08/02(火) 15:11:12.71sizeof(c) = sizeof((char)) ≠ sizeof('a');
sizeof('a') = sizeof((int))
sizeof(' ^^ ') = sizeof((int))
0611デフォルトの名無しさん
2011/08/02(火) 15:19:32.74これをさらにプログラムBの標準出力をプログラムAの標準入力に繋ぐにはどうしたらいいですか?
0612デフォルトの名無しさん
2011/08/02(火) 16:21:10.800613デフォルトの名無しさん
2011/08/02(火) 16:25:30.37プロセスA、プロセスBと読み替えて下さい。
0614デフォルトの名無しさん
2011/08/02(火) 16:27:33.95pipe() 使うのはどう?
0615デフォルトの名無しさん
2011/08/02(火) 19:53:17.500616デフォルトの名無しさん
2011/08/02(火) 20:55:49.17普通はコンパイラにアセンブリ言語で吐かせて見比べるの?
それとも時間計ったりするの?
0617デフォルトの名無しさん
2011/08/02(火) 21:01:17.650618デフォルトの名無しさん
2011/08/02(火) 21:30:02.84測定結果に疑問があったらアセンブリを見てみたり色々する
0619デフォルトの名無しさん
2011/08/02(火) 21:35:08.110620デフォルトの名無しさん
2011/08/02(火) 21:36:06.35普通にtime.hの関数使って測定したらいいの?
実時間を計ればいいだよね?
プロセッサ時間?
0621デフォルトの名無しさん
2011/08/02(火) 21:50:17.140622デフォルトの名無しさん
2011/08/02(火) 22:04:41.47このスレでタコツボやってる間、前者の域を出ることは決してない
0623デフォルトの名無しさん
2011/08/02(火) 22:12:40.34この表を見れば、最も沢山実行されて、かつ、最も処理に時間が掛かってる関数がわかる。
合計で0.0010秒しか実行されない関数を、2倍の速度にしても 0.0005秒しか速くならないけど、
合計で1秒実行される関数を、2倍の速度にすれば、0.5秒も速くなる。
アセンブラのmovdqa命令の実行時間を知りたいなどのシビアな要求の場合は、gprofでは厳しいが、
gprofは、ボトルネックの大体の見当を付けるのには便利。
0624デフォルトの名無しさん
2011/08/02(火) 22:32:59.10有益な情報をありがとうございます
0625デフォルトの名無しさん
2011/08/02(火) 23:46:35.29switchやif使うより関数ポインタ配列使って分岐したほうが
早いんだろうか?
誤差レベル?
0626デフォルトの名無しさん
2011/08/03(水) 03:33:34.51だから、処理時間は実測が原則。
それより、関数ポインタ配列を使うとコードが大きく変わることになるから
運用者のスキルが低いと「>625さんは難しいコードを書くから保守できなくて困る」なんてことになりかねないw
冗談兎も角、コンパイラの最適化で随分違うから、実測するしかないよ。
>>623
gprofだと、インライン展開される関数の所要時間が全く測定できないけどね。
なので、gprofで切り分けた後はclock()かgettimeofday()のような関数を使って
セクションごとの通過時刻を記録することも場合によっては有効。
つーか、この辺の話は入門編向きじゃなかったね。
0627デフォルトの名無しさん
2011/08/03(水) 11:00:19.50どなたか教えてください。
ハノイの塔の移動回数を求めるプログラムです。
#include<stdio.h>
int main(){
int h[9][99],n,nmax,t3,t4,w;
printf("ハノイの塔問題 : 円盤の移動回数\n");
scanf("%d",&nmax);
h[3][0] = 0;
for(n=1;n<=nmax;n++){ h[3][n] = h[3][n-1]*2 + 1;}
h[4][0] = 0; h[4][1] = 1; h[4][2] = h[3][2];
for(n=3;n<=nmax;n++){
}
printf("円盤数 塔三本 塔四本\n");
for(n=1;n<=nmax;n++){
printf("%6d%12d%8d\n",n,h[3][n],h[4][n]);
}
}
0628デフォルトの名無しさん
2011/08/03(水) 12:01:49.790629デフォルトの名無しさん
2011/08/03(水) 12:40:05.38俺もわかんねーけど
0630デフォルトの名無しさん
2011/08/03(水) 12:48:54.73int main(){
int n,nmax,w;
printf("ハノイの塔問題 : 円盤の移動回数\n");
scanf("%d",&nmax);
w = 2;
for(n=1;n<nmax;n++){ w*=2; }
w-=1;
printf("移動回数 %d\n",w);
}
移動回数を求めるならこんな感じ?
0631デフォルトの名無しさん
2011/08/03(水) 12:54:41.000632デフォルトの名無しさん
2011/08/03(水) 12:57:16.12for文の中は、ハノイの塔が4本の時の移動回数だな
0633デフォルトの名無しさん
2011/08/03(水) 13:17:01.56ハノイの塔は再起で書く方が楽なプログラムの代表例ですよ
0634デフォルトの名無しさん
2011/08/03(水) 13:30:59.490635デフォルトの名無しさん
2011/08/03(水) 15:58:45.380636デフォルトの名無しさん
2011/08/03(水) 16:58:04.360637デフォルトの名無しさん
2011/08/03(水) 16:59:52.40ttp://homepage3.nifty.com/kaku-chan/cygwin/chapter_005.html
0638デフォルトの名無しさん
2011/08/03(水) 17:03:13.860639デフォルトの名無しさん
2011/08/03(水) 17:15:57.050640デフォルトの名無しさん
2011/08/03(水) 17:34:09.05>gcc: The -mno-cygwin flag has been removed; use a mingw-targeted cross-compiler.
うんたらーってなんだよ。書かれてるまんまだろ。
0641デフォルトの名無しさん
2011/08/03(水) 17:43:07.910642デフォルトの名無しさん
2011/08/03(水) 17:51:35.380643デフォルトの名無しさん
2011/08/03(水) 17:51:52.210644デフォルトの名無しさん
2011/08/03(水) 17:53:23.16#include <stdio.h>
void hanoi(int,char,char,char);
void main(void)
{
int n;
printf("How many disks? ");
scanf("%d",&n);
hanoi(n,'a','b','c');
}
void hanoi(int n,char a,char b,char c)
{
if(n>0) {
hanoi(n-1,a,c,b);
printf("No. %d disk is moved from %c to %c.\n",n,a,b);
hanoi(n-1,c,b,a);
}
}
0645デフォルトの名無しさん
2011/08/03(水) 17:54:38.88>>640
0646デフォルトの名無しさん
2011/08/03(水) 17:57:36.64ハノイの塔
http://w3-denki.maizuru-ct.ac.jp/siryou/text/jyoho3/kouki1/hanoi/frame.htm
0647デフォルトの名無しさん
2011/08/03(水) 18:02:02.420648デフォルトの名無しさん
2011/08/03(水) 18:03:41.38つーか、cygwin が何なのかを理解せずに使ってるのは問題外だな。
素直に VC++ を使うとか、Vine 辺りを使っとけばいいのにな。
0649デフォルトの名無しさん
2011/08/03(水) 18:04:55.700650デフォルトの名無しさん
2011/08/03(水) 18:06:06.940651デフォルトの名無しさん
2011/08/03(水) 18:07:36.14必要だから配列に保存してんのにな
0652デフォルトの名無しさん
2011/08/03(水) 18:13:28.980653デフォルトの名無しさん
2011/08/03(水) 18:16:46.360654デフォルトの名無しさん
2011/08/03(水) 18:18:09.790655デフォルトの名無しさん
2011/08/03(水) 18:20:07.41引数増やせばおk
0656デフォルトの名無しさん
2011/08/03(水) 18:22:06.614本に増えても3本しか使わない
0657デフォルトの名無しさん
2011/08/03(水) 18:22:09.29それでちゃんとした解になるかどうか、実際に書いてみてからほざけよw
0658デフォルトの名無しさん
2011/08/03(水) 18:28:48.820659デフォルトの名無しさん
2011/08/03(水) 18:29:38.11>>630
>>633
>>644-646
0660デフォルトの名無しさん
2011/08/03(水) 18:29:52.900661デフォルトの名無しさん
2011/08/03(水) 18:34:58.160662デフォルトの名無しさん
2011/08/03(水) 18:35:52.68実際、>>656だし
0663デフォルトの名無しさん
2011/08/03(水) 18:38:45.98安価もまともに使えないバカ
0664デフォルトの名無しさん
2011/08/03(水) 18:40:16.63バカが自分の間違いを認められないのって見苦しいよ
0665デフォルトの名無しさん
2011/08/03(水) 18:41:24.71あってるかどうかは分からん
#include<stdio.h>
void hanoi(int disc, int from, int to, int empty1, int empty2)
{
if(disc<=1)
{
if(disc==1) printf("disc%d : from %d to %d\n", disc, from, to);
return;
}
hanoi(disc-2, from, empty1, to, empty2);
printf("disc%d : from %d to %d\n", disc-1, from, empty2);
printf("disc%d : from %d to %d\n", disc, from, to);
printf("disc%d : from %d to %d\n", disc-1, empty2, to);
hanoi(disc-2, empty1, to, from, empty2);
}
int main(void)
{
int disc=10;
hanoi(disc, 1, 2, 3, 4);
return 0;
}
0666デフォルトの名無しさん
2011/08/03(水) 18:42:19.71解くだけなら3本でも可能だが
多くの本数を使ったほうが
少ない手で解けるって事?
0667デフォルトの名無しさん
2011/08/03(水) 18:43:34.74いや、645はハノイ関係なくね?
0668デフォルトの名無しさん
2011/08/03(水) 18:46:31.82間違って日本語読めないアホ扱いしてしまいました
本当に申し訳ない
0669デフォルトの名無しさん
2011/08/03(水) 18:55:29.80*f[index] で書いた場合、switch(index)で書いた場合、if(index== で書いた場合での、各所要クロック数を、rdtscで記録
http://codepad.org/1tJvMTad
<-O0でコンパイルした場合>
関数ポインターの配列の場合
所要クロック合計 = [5510152791]clock, 1ループあたり[55.101528]clock
switchによる関数呼び出しの場合
所要クロック合計 = [5903273688]clock, 1ループあたり[59.032737]clock
ifによる関数呼び出しの場合
所要クロック合計 = [5885933079]clock, 1ループあたり[58.859331]clock
<-O2でコンパイルした場合>
関数ポインターの配列の場合
所要クロック合計 = [3625614759]clock, 1ループあたり[36.256148]clock
switchによる関数呼び出しの場合
所要クロック合計 = [2829590153]clock, 1ループあたり[28.295902]clock
ifによる関数呼び出しの場合
所要クロック合計 = [2943078411]clock, 1ループあたり[29.430784]clock
最適化しない場合は関数ポインターが最速で、最適化した場合はswitchが最速になった。
switchとifによる関数呼び出しの場合、最適化時にインライン化できることが速度向上に関係してる気がする。
0670デフォルトの名無しさん
2011/08/03(水) 19:06:22.29やりたい事はこんな感じです。
ttp://codepad.org/AJDI6Fbv
0671デフォルトの名無しさん
2011/08/03(水) 19:14:02.69おまえさんがその質問をしている胸中で
「自分ならこうすればいいと思う」
「一般ユーザがやるのは大変」
と思っているなら、そこに本質的な問題点と正解がある
0672デフォルトの名無しさん
2011/08/03(水) 19:17:08.52malloc
0673デフォルトの名無しさん
2011/08/03(水) 19:26:11.820674デフォルトの名無しさん
2011/08/03(水) 19:31:39.35答えるでもない奴ってなんでここにいんの?
0675デフォルトの名無しさん
2011/08/03(水) 19:32:20.02あると便利だよな。知りたいw
0676デフォルトの名無しさん
2011/08/03(水) 19:47:41.53>>674
0677デフォルトの名無しさん
2011/08/03(水) 19:48:56.05するどい指摘をした!俺って頭イイ〜! とか思ってんの?(゚σ ゚)ホジホジ
0678デフォルトの名無しさん
2011/08/03(水) 19:51:50.11知らないから聞いたんだよ。あるなら便利だろw
0679デフォルトの名無しさん
2011/08/03(水) 19:56:11.870680デフォルトの名無しさん
2011/08/03(水) 20:00:28.560681デフォルトの名無しさん
2011/08/03(水) 20:01:13.240682デフォルトの名無しさん
2011/08/03(水) 20:54:21.43int gcd(int x, int y)
{
if (y == 0) return x;
else return gcd(y, x % y);
}
int main(void)
{
int a, b, c;
for (a = 1; a < 300; a++) {
for (b = 1; b < 300; b++) {
for (c = 1; c < 300; c++) {
if (a * a == b * b + c * c ) {
if (a + b + c < 300) {
if (gcd(a, b) == gcd(a, c) == gcd(b, c) == 1) {
if(b > c){
printf("a = %d, b = %d, c = %d\n", a, b, c);
}
}
}
}
}
}
}
}
これで一応動きはするのですが、関数等の記述はこれでいいのでしょうか
0683デフォルトの名無しさん
2011/08/03(水) 20:57:32.09>if (gcd(a, b) == gcd(a, c) == gcd(b, c) == 1) {
これの意味が分かってやってるなら別にいいよ
0684デフォルトの名無しさん
2011/08/03(水) 20:59:33.01対偶を知らないバカでもこの業界にいられるんだな。w
0685デフォルトの名無しさん
2011/08/03(水) 21:03:26.8265816
0686デフォルトの名無しさん
2011/08/03(水) 21:11:31.610687デフォルトの名無しさん
2011/08/03(水) 21:12:28.370688デフォルトの名無しさん
2011/08/03(水) 21:47:51.37間違えてるけど。
0689デフォルトの名無しさん
2011/08/03(水) 22:13:59.120690デフォルトの名無しさん
2011/08/03(水) 22:41:01.190691デフォルトの名無しさん
2011/08/03(水) 22:41:56.960692デフォルトの名無しさん
2011/08/03(水) 22:50:43.030693デフォルトの名無しさん
2011/08/04(木) 00:45:38.000694デフォルトの名無しさん
2011/08/04(木) 12:55:39.21いまはフーリエ解析とかゼータ関数とか勉強してる
0695デフォルトの名無しさん
2011/08/04(木) 13:03:09.280696デフォルトの名無しさん
2011/08/04(木) 13:04:12.26何を作りたいのか、どんなプログラムに興味があるのかを考える。
数学のどの分野がそれに関係しているのかを調べ、勉強する。
0697デフォルトの名無しさん
2011/08/04(木) 14:39:56.66そういうやり方は全くの無駄。
0698デフォルトの名無しさん
2011/08/04(木) 14:44:44.640699デフォルトの名無しさん
2011/08/04(木) 14:46:28.76国語と英語と論理的な思考
0700デフォルトの名無しさん
2011/08/04(木) 14:52:13.09イテレーターでぐるぐる回しながら子クラスのオーバーライドした関数を実行して個別処理をさえsる
ような仕組みをC言語で実現するにはどうしたらいいですか
0701デフォルトの名無しさん
2011/08/04(木) 14:52:29.760702デフォルトの名無しさん
2011/08/04(木) 15:01:05.29関数ポインタと offsetof
人によっては union と enum を好んで使う
vtable の仕組みさえ知っていればどうにでもできる
0703デフォルトの名無しさん
2011/08/04(木) 15:41:59.21プログラミング自体に数学は必要ない
数学をプログラミングで解きたいなら数学の知識が要るだけ
0704デフォルトの名無しさん
2011/08/04(木) 15:43:44.060705デフォルトの名無しさん
2011/08/04(木) 15:49:51.95それ言いだしたら切りが無いから。
0706デフォルトの名無しさん
2011/08/04(木) 15:52:05.110707デフォルトの名無しさん
2011/08/04(木) 16:05:52.89関数ポインタと汎用ポインタのペアの配列を使う
0708デフォルトの名無しさん
2011/08/04(木) 16:11:27.88gcc -mwindows -o test.exe test.obj resource.coff
とするとdllが必要な代わりに正常にうごく
mingw32-gcc -mwindows -mno-cygwin -o test.exe test.obj resource.coff
とするとdllが不要だがリソースとして埋め込んだビットマップ画像が
一部表示されなくなるのは何故?
0710デフォルトの名無しさん
2011/08/04(木) 16:39:38.770711デフォルトの名無しさん
2011/08/04(木) 17:00:20.39スレタイと>>1
0712デフォルトの名無しさん
2011/08/04(木) 17:04:38.820713デフォルトの名無しさん
2011/08/04(木) 17:12:31.77これなら全てのビットマップリソースが正しく表示されるのに
mingw32-gcc -mwindows -o test.exe test.obj resource.coff
これだと一部のビットマップリソースが正しく表示されない
0714デフォルトの名無しさん
2011/08/04(木) 23:54:12.78では、あなたこそ「にゅーもんスレ」へどうぞw
0715デフォルトの名無しさん
2011/08/05(金) 01:07:58.85strcat関数は2個の配列しか結合できないんですよね?
ならstrcat関数使わずsprintf関数だけ使うようにしてもいいですか?
0716デフォルトの名無しさん
2011/08/05(金) 01:26:15.180717デフォルトの名無しさん
2011/08/05(金) 01:27:41.460718デフォルトの名無しさん
2011/08/05(金) 01:38:08.73union {
long a;
char b[4];
}
0719デフォルトの名無しさん
2011/08/05(金) 01:45:12.240720デフォルトの名無しさん
2011/08/05(金) 01:49:30.32あまりにも緊密に描かれすぎるのが難点
0721デフォルトの名無しさん
2011/08/05(金) 07:11:29.67さっぱり言いたいことが伝わらないけど。
0722デフォルトの名無しさん
2011/08/05(金) 07:44:41.27一例だけど、通信パケットみたいに、どこかのフィールドによって
同じ領域の解釈の仕方を変えたい時に、その事を明示したい場合にも
使えるね。
0723デフォルトの名無しさん
2011/08/05(金) 09:56:39.50バージョンのよりデータの構造が変わる場合等。
struct xxx {
int ver;
union {
struct ver1 {
....
};
struct ver2 {
...
};
};
...
verの内容を見てver1かver2、どちらを参照するか判断する。
0724デフォルトの名無しさん
2011/08/05(金) 10:08:58.47RGBAの中のRの1バイトだけを取り出したいときとか
よくあるだろ?
0725デフォルトの名無しさん
2011/08/05(金) 11:42:43.01ついてこれないなら、そうおっしゃい
0726デフォルトの名無しさん
2011/08/05(金) 12:38:48.850727デフォルトの名無しさん
2011/08/05(金) 15:09:24.280728デフォルトの名無しさん
2011/08/05(金) 19:21:41.780729デフォルトの名無しさん
2011/08/06(土) 10:20:48.37背景とその上の絵を二つ同時に表示して、上の絵をキー操作で動かそうとしています。
しかしキー操作を受け取り、WM_Createを呼び出すと上の画像だけにx,y座標を与えることができません。
ちらつき回避のためダブルバッファをしてるのですが、どちらか片方の絵に座標を与えることはできないでしょうか?
↑の説明文だけでは意味不明なのでソースコードをうpしておきます。
http://www.dotup.org/uploda/www.dotup.org1870372.cpp.html
0730デフォルトの名無しさん
2011/08/06(土) 10:53:24.88WM_PAINTメッセージ内の
BitBlt(hdc,0,0,240,480,hBackDC,0,0,SRCCOPY);
の前に
BitBlt(hBackDC,x,y,40,40,hBmpDC,0,0,SRCCOPY);
を入れてみて
0731デフォルトの名無しさん
2011/08/06(土) 11:39:31.20返信ありがとうございます。
書き忘れていましたがその方法はすでに試していまいた。
本当にすみません。
>>BitBlt(hBackDC,x,y,40,40,hBmpDC,0,0,SRCCOPY);
↑の方法では前回描画した絵が消えず
上に描画する画像がつながった様に表示されます。
なんとか画像のリフレッシュをすることができないでしょうか・・・
0732デフォルトの名無しさん
2011/08/06(土) 12:00:11.18という書き方について、自分としては使い捨てのインスタント変数を作ってその場で捨てれるので便利だと思うんですが
学校の先生は「メモリ確保→開放の分だけ処理が重くなるからなるべく使わないように」と説明していました
でも参考書などではwhile文の中身で変数を用意していることも多く、中にはこういう書き方を推奨してるようにも見えて少しこの説明に疑問を感じます
処理はどの程度重くなるのでしょうか、処理を軽くしたい時には変数のメモリ確保を減らすのはどの程度有効なのでしょうか
0733デフォルトの名無しさん
2011/08/06(土) 12:08:54.87毎回そこに全ての画像(背景から全て)を描画すればいいよ
重くなることは、真っ当なコンパイラなら全く有り得ない。
先ず第一に、ローカル変数は確保や解放に殆どコストが掛からない。
第二に、ソース上ではスコープを絞っても実コードがその通りのタイミングで確保されるわけではない。
だから安心して、変数スコープを絞って使え。
0735デフォルトの名無しさん
2011/08/06(土) 13:19:43.920736デフォルトの名無しさん
2011/08/06(土) 13:23:45.53関数呼び出しはコストが掛かるから、
全部mainで処理しなさいって言いそう
0737デフォルトの名無しさん
2011/08/06(土) 13:37:10.79先生は言いたかったんではないだろうか?
0738デフォルトの名無しさん
2011/08/06(土) 13:38:33.580739デフォルトの名無しさん
2011/08/06(土) 13:42:06.32int main() {for(int i = 0; i <10; i++){}} を gcc -S などでアセンブラに変換して先生に
見せてあげるといいんじゃないかな
>>735
自分の場合は、そもそも大きいデータをスタックに割り付ける様なコードは書かないなあ
再帰する関数の場合は流石に気にしますけど、計算はしません
Windows って使用するスタックサイズをプログラム実行時に変えられないんだっけ?
0740デフォルトの名無しさん
2011/08/06(土) 14:10:57.98理由がメモリ確保がどうとかだから、C++でもJavaでもfor(int i;…みたいな
書き方は禁止なんじゃないの。
この先生。
0741デフォルトの名無しさん
2011/08/06(土) 14:20:53.33for( int i = 0 ; i < 10 ; i++ );
この形が推奨されるべき形ってそう無いぞ
0742デフォルトの名無しさん
2011/08/06(土) 14:25:46.750743デフォルトの名無しさん
2011/08/06(土) 14:28:45.320744デフォルトの名無しさん
2011/08/06(土) 14:35:08.870745デフォルトの名無しさん
2011/08/06(土) 14:37:52.13先生云々置いとくなら、自分の意図した通りに動くコードならそれで充分
0746デフォルトの名無しさん
2011/08/06(土) 14:40:03.84安心してfor内に記述する事にします。
正直forとかで回す変数をいちいち最初に宣言してると段々「一回しか使われてない変数」とかが出現するのが嫌だったんですよね
けど一つの変数を色んな用途に使ってるとバグ出しそうで危なっかしいし
0747デフォルトの名無しさん
2011/08/06(土) 14:41:13.48俺もそう思うけど、
「長いブロックを書くから、ループ変数ごときでスコープを限定しないといけなくなるんだ」
とか言いだす人が居そう
0748デフォルトの名無しさん
2011/08/06(土) 14:44:03.95ループカウンタくらいまとめていいだろ
0749デフォルトの名無しさん
2011/08/06(土) 14:49:15.91C99とかC++とか、その書き方ができるなら普通、そう書くでしょ。
0750デフォルトの名無しさん
2011/08/06(土) 14:51:20.67for文出てくるたびにスタックフレーム伸ばしたり縮めたりする実装なんてないだろ。
0751デフォルトの名無しさん
2011/08/06(土) 14:56:27.67固定長だから無駄に宣言して良いと思ってんの?
0752デフォルトの名無しさん
2011/08/06(土) 14:59:17.33いいんじゃないの?
数バイトとかパフォーマンスを気にするより、コンパイラに最適化を
まかせてコードの質を優先すべきところ。
0753デフォルトの名無しさん
2011/08/06(土) 14:59:51.75スコープを制限するために変数宣言することを
無駄と考えるならお前はプログラマに向いてない
0754デフォルトの名無しさん
2011/08/06(土) 15:01:52.874バイトォォくらいの割り付けをケチるより、分かりやすいコードを書いた方が良いと思う
0755デフォルトの名無しさん
2011/08/06(土) 15:04:25.750756デフォルトの名無しさん
2011/08/06(土) 15:06:56.330757デフォルトの名無しさん
2011/08/06(土) 15:11:32.040758デフォルトの名無しさん
2011/08/06(土) 15:14:35.87gnuとか、20年くらいまえからintは32bit以上前提でコードを書いてるって
聞いてうらやましかった思い出がある。
0759デフォルトの名無しさん
2011/08/06(土) 15:17:06.76LL系こそ「メモリがもったいないから変数を使いまわそう」みたいな文化じゃないような気が。
富豪的っていうの?
0760デフォルトの名無しさん
2011/08/06(土) 15:37:26.00ActivePerlでは読んでるっぽいけど。
0761デフォルトの名無しさん
2011/08/06(土) 16:21:41.830762デフォルトの名無しさん
2011/08/06(土) 16:39:33.91そんなあなたに B 言語
0763デフォルトの名無しさん
2011/08/06(土) 17:54:53.27ん?
# cat foo.rb
#!/usr/bin/ruby
def foo
bar()
end
def bar
puts "bar"
end
foo
# ./foo.rb
bar
0764デフォルトの名無しさん
2011/08/06(土) 18:57:20.61今時、そんな言語はcとpascalくらいだよ。。。
(cはプロトタイプ宣言で回避)
0765デフォルトの名無しさん
2011/08/06(土) 19:05:47.53foo
def foo
puts "foo"
end
0766デフォルトの名無しさん
2011/08/06(土) 19:19:02.57その意味で C89 は K&R C より退化した
0767デフォルトの名無しさん
2011/08/06(土) 19:22:58.58mingw32-gccだと初期化してくれないんだな・・・
ヘッダーファイルが上手く動作してなくて4日くらい悩んだわ・・・
0768デフォルトの名無しさん
2011/08/06(土) 19:24:43.220769デフォルトの名無しさん
2011/08/06(土) 19:46:56.680770デフォルトの名無しさん
2011/08/06(土) 19:50:34.080771デフォルトの名無しさん
2011/08/06(土) 19:52:19.28評価されていないメソッドが呼び出せないのは当たり前じゃないの?
% cat foo.py
#!/usr/bin/python
foo()
def foo():
print("foo")
% ./foo.py
Traceback (most recent call last):
File "./foo.py", line 3, in <module>
foo()
NameError: name 'foo' is not defined
これはソースコードを読むかどうかとは全く別の話だよ
0772デフォルトの名無しさん
2011/08/06(土) 19:54:39.35コピペする時に行を詰めたのでエラー位置は気にしないで
0773デフォルトの名無しさん
2011/08/06(土) 20:01:57.19当たり前だと思うよ
ただ、ああいうことが言いたいんだろうなって
0774デフォルトの名無しさん
2011/08/06(土) 20:04:43.84Python はちょっと特殊だよ。
def とか class も実行文だから。
0775デフォルトの名無しさん
2011/08/06(土) 20:15:19.69了解した
>>774
% cat ../foo.lsp
(foo)
(defun foo () (print "foo"))
% ./dx86cl -l ../foo.lsp
> Error: Undefined function FOO called with arguments () .
一方 JavaScript さんは...
% cat foo.js
foo();
function foo() { print("foo"); };
% jsc -f foo.js
foo
0776デフォルトの名無しさん
2011/08/06(土) 20:18:13.68foo();
var foo = function() { print("foo"); };
スレ汚しスマソ
0777デフォルトの名無しさん
2011/08/06(土) 21:20:34.21どういう意味か分からずずっと考えていましたがやっと解決しました。
ありがとうございます。
0778デフォルトの名無しさん
2011/08/06(土) 21:39:11.00APIだと実際描画してるのはWM_PAINTのBIGINPAINT〜ENDPAINT内だけ
DCにはデータを用意するだけで描画してないと俺は思う
0779デフォルトの名無しさん
2011/08/06(土) 21:53:52.580780デフォルトの名無しさん
2011/08/06(土) 21:56:07.91抽象的すぎてよく分かりません。
0781デフォルトの名無しさん
2011/08/06(土) 22:26:52.480782デフォルトの名無しさん
2011/08/06(土) 22:36:02.09そもそもデバイスコンテキストが何なのかが理解できてないんじゃないか?
0783デフォルトの名無しさん
2011/08/06(土) 22:39:42.14Win32API質問箱 ってスレにいってらっしゃい
0784デフォルトの名無しさん
2011/08/06(土) 22:43:31.13あえて分かりやすくするために抽象的な表現にしたんじゃないか
0785デフォルトの名無しさん
2011/08/06(土) 22:49:10.99#ifdef __DEUBG__
#define DEBUGPRINT(format, ...) printf(format, ...)
#else
#define DEBUGPRINT(format, ...)
#endif
こういうことやりたいんですが、うまくいきません
何が悪いんでしょうか?
0786デフォルトの名無しさん
2011/08/06(土) 22:51:27.66typo
0787デフォルトの名無しさん
2011/08/06(土) 22:53:02.64そこにフレームバッファーを含めたとしても違和感は無いんじゃないの?
GTKしかしらないけど。
0788デフォルトの名無しさん
2011/08/06(土) 22:57:03.31あ、すいませんDEUBGになってましたね・・・
これを直しても...の部分がそのままになってしまいます
DEBUGPRINT("%d %d %d", 1, 2, 3)
を
printf("%d %d %d", 1, 2, 3)
にしてほしいです。無理なんでしょうか?
0789デフォルトの名無しさん
2011/08/06(土) 22:58:32.05gcc なら
__VA_ARGS__
0790デフォルトの名無しさん
2011/08/06(土) 22:59:32.740791デフォルトの名無しさん
2011/08/06(土) 23:01:26.72ありがとうございました
#define DEBUGPRINT(format, ...) printf(format, __VA_ARGS__)
これでいけました本当に助かります
0792デフォルトの名無しさん
2011/08/06(土) 23:03:18.85特定の升目で一回休みやマスを戻るという機能をつけたいのですが
どうすればできるか教えていただけませんか。
0793デフォルトの名無しさん
2011/08/06(土) 23:04:26.97if
0794デフォルトの名無しさん
2011/08/06(土) 23:04:31.32#include<stdlib.h>
#include<time.h>
int main(void)
{
int num,i,sai;
char ps[] = " \n";
char c;
srand((unsigned int)time(0));
num = i = sai = 0;
while(i != 8)
{
sai = rand()%6+1;
num = i;
i += sai;
printf("Your number =%d\n",sai);
printf("123456789\n");
printf("s G \n");
if(i > 8)
{
i = 8-(i-8);
}
ps[i] = '*';
printf("%s\n",ps);
ps[i] = ' ';
printf(">Dice try (N=end)\n");
c = getchar();
if(c == 'N' || c == 'n') return 1;}
printf("you win !\n");
return 0;
}
0795デフォルトの名無しさん
2011/08/06(土) 23:06:28.28つーかそれだと思えば解釈が簡単
0796デフォルトの名無しさん
2011/08/06(土) 23:10:07.49可変引数を取れる関数って、プロトタイプどうすんの?
0797デフォルトの名無しさん
2011/08/06(土) 23:13:33.390798デフォルトの名無しさん
2011/08/06(土) 23:34:08.56できなんだら、なんかプロトタイプの意味がねえ気もするが
0799デフォルトの名無しさん
2011/08/06(土) 23:47:47.300800デフォルトの名無しさん
2011/08/07(日) 00:14:49.55# define obstack_int_grow(h,datum) \
( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \
? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \
obstack_int_grow_fast (h, datum))
# define obstack_int_grow_fast(h,aint) \
(((int *) ((h)->next_free += sizeof (int)))[-1] = (aint))
このマクロを読んでみると
チャンクの範囲を超えてるなら_obstack_newchunkで新しいチャンクを割り当て
超えてないならobstack_int_grow_fastでintデータ(datnum)を書き込むという流れらしいが
3行目の三項演算子の2項目で、_obstack_newchunk関数に引数を渡した後カンマを打って0をつけたり、その後3項目も0にする理由が分からない。
0そのままだと警告でるよね?
それから、obstack_int_grow_fastもややこしいけど
next_freeが指すポインタをintサイズだけ進ませたものを代入し直して、それに配列アクセスで増やしたintサイズのスペースにaintを書き込む・・・
この理解で合ってるのかな?
0801デフォルトの名無しさん
2011/08/07(日) 00:16:10.61やっぱり解ってないのな。
0802デフォルトの名無しさん
2011/08/07(日) 02:11:57.91三項演算子は、条件と、条件が成立した場合に返す値と、条件が成立しない場合に返す値を、書かなければならない
例えその値に意味がないとしても、三項演算子である以上は、何か返す値を書かなければならない
別に1でも42でも-567でもいい
> 超えてないならobstack_int_grow_fastで
obstack_int_grow_fastは三項演算子を囲む括弧の外にあるから常に実行されるよ
どの括弧がどこに対応しているのかよく見てみるべき
あとは合ってると思うよ
0803デフォルトの名無しさん
2011/08/07(日) 02:25:56.35解説有り難う。
三項演算子の条件適合値については分かったんだけど
確認用にコード書いて試してみたら
statement with no effect
の警告でたんで0だけ置いたんではあんまり礼儀がよくないコーディングなのかなと…
後は
(_obstack_newchunk ((h), sizeof (int)), 0)
で_obstack_newchunk関数の後にカンマを打って0を置く意味がまだ分からない。
これは_obstack_newchunkが値を返さないから0を置いてるって事なのかな?
0804デフォルトの名無しさん
2011/08/07(日) 05:28:51.19その理解であってる。
後ろの,0はカンマ演算子で、ここだと()で括られた式の値として、
右辺値0を返したかったんだと思う。
そんな事は分かってる、というレベルの違う話だったらゴメン
0805デフォルトの名無しさん
2011/08/07(日) 10:04:12.650806デフォルトの名無しさん
2011/08/07(日) 10:30:22.23ああ、やっぱりそういう事だったんだね。
丁寧にありがとう。
0807デフォルトの名無しさん
2011/08/07(日) 10:34:22.57マス目配列作って、入ってる値で判断させれば?
0ならただのマス目
1なら1回休みのマス目
2ならスタートへ戻るのマス目
って具合で
0808デフォルトの名無しさん
2011/08/07(日) 10:35:13.48>これは_obstack_newchunkが値を返さないから0を置いてるって事なのかな?
他にどう解釈しろと?
試しに以下のコードをコンパイルしてみたら、
やっぱり通らなかった(Visual C++ 2008上で C2120 エラーが出る)。
void f(void) {}
int main(void) {int a = 1 ? f() : 2; return a;}
・・・でも、上のコードを
void f(void) {}
int main(void) {return 1 ? f() : 2;}
とすると、すんなり通ってしまったようだ。(警告レベル /W3)
警告レベルを /W4 にすると以下のような警告は出るけど、エラー扱いではないらしい。
warning C4053: '?:' 演算に void 型の式がオペランドとして使われています。
で、調べてみたら、http://msdn.microsoft.com/ja-jp/library/1e8z2ake(v=vs.90).aspx に、
?: 演算子には void 型の式が指定されています。void 型のオペランドの値は未定義です。
と書いてある。
つまり、"1 ? f() : 2" は未定義だが、エラーではないって事? 本当? 何故?
誰か偉い人、理由を教えてください。
0809デフォルトの名無しさん
2011/08/07(日) 14:01:29.07正しくないので、もしコンパイラがそれを通しても、おまえが自己責任で回避しろってことだ
# どこの規格で「未定義」とされているかとは、また別な話
0810803
2011/08/07(日) 14:05:15.75それ単に三項演算子の使い方を間違えてるだけじゃん
int a = 1 ? f() : 2;
だと、aに f()の結果(つまりvoid)を入れることになるから、エラー吐くの当たり前。
int型変数にvoid入れようとしてるんだよ。ところが
return 1 ? f() : 2;
はmain関数の戻り値にf()の結果を入れようとしてるからエラーにならない。
なんかVCはmain関数の場合はvoidを戻り値にしてもエラーにならんみたいだ。
試しに return f(); にしてもエラーにならん筈。
0811デフォルトの名無しさん
2011/08/07(日) 15:17:07.980812デフォルトの名無しさん
2011/08/07(日) 15:46:44.21>それ単に三項演算子の使い方を間違えてるだけじゃん
>>811
>だから「未定義」はコンパイラがはじく保証すらないんだってばさってばよー
そんな話はどうでもよくて、なぜこれが「未定義」なのか? を知りたい。
間違えてる事(? 以降の2つの式の型に互換性がない)は、
その後の代入演算とは無関係に判断出来そうなものだろ?
これは、規格上、どの項目に相当するの?
そして、それをわざわざ「未定義」としている理由って何?
普通、コンパイル時にエラーと判別するのが不可能とか
困難な場合に「未定義」って扱いにするものだと思っていたけど。
0813デフォルトの名無しさん
2011/08/07(日) 15:59:54.55定義されていないから未定義なだけで
未定義だと定義されてるわけじゃない
0814デフォルトの名無しさん
2011/08/07(日) 16:07:26.43C言語の仕様策定時の「考慮漏れ」ってこと?
0815デフォルトの名無しさん
2011/08/07(日) 16:12:12.31どうでもいいことは決めてないだけだよ
0816デフォルトの名無しさん
2011/08/07(日) 16:28:08.41コンパイラ作ってる人が好きにして良いよって、あえてそうしてる面もある
0817デフォルトの名無しさん
2011/08/07(日) 16:28:35.88GCCでは何もオプションつけずにコンパイルすると、>>808の下の奴もちゃんとエラーになるよ
error: void value not ignored as it ought to be (無視されるべきvoid値が無視されてないぞゴルァ!)
M$のコンパイラではエラーにしてないだけだろ。
0818デフォルトの名無しさん
2011/08/07(日) 16:30:33.77JIS では、やっぱりちゃんと規定されていた(6.5.15 条件演算子)。
制約 第2及び第3オペランドの型は、次のいずれかの条件を満たさなければならない。
− 両オペランドの型が算術型である。
− 両オペランドの型が同じ構造体又は共用体である。
− 両オペランドの型がvoid型である。
− 両オペランドが適合する型の修飾版又は非修飾版へのポインタである。
− 一方のオペランドがポインタであり、かつ他方が空ポインタ定数である。
− 一方のオペランドがオブジェクト型又は不完全型へのポインタであり、かつ他方がvoidの修飾版又は非修飾版へのポインタである。
今回のケースはどれにも当たらないと思うのだが?
要するに VC が規格に準拠していなかっただけってオチか。
勉強になりました。
>>803さん、ありがとう。
0819デフォルトの名無しさん
2011/08/07(日) 16:46:50.25第1を全く見てないのはわざと?
0820デフォルトの名無しさん
2011/08/07(日) 16:49:49.13<要するに VC が規格に準拠していなかっただけってオチか。
>要するに VC がタコだっただけってオチか。
ま、規格に準拠していなかったらエラーを出す必要があるとは、
謳ってないもんな・・・
その場合、確かに「未定義とする」と定義されているから、
準拠していると言えばしているが、VC がタコであることには間違いない。
0821デフォルトの名無しさん
2011/08/07(日) 16:53:13.19>第1を全く見てないのはわざと?
いや、見たよ。
引用する必要がないから、省いたけど。
0822デフォルトの名無しさん
2011/08/07(日) 16:57:22.50そもそも紙媒体のでもないような…
0823デフォルトの名無しさん
2011/08/07(日) 17:02:13.90そこが一番重要なのに?
0824デフォルトの名無しさん
2011/08/07(日) 17:07:22.82そこがどうして重要なのか、教えてください。
0825デフォルトの名無しさん
2011/08/07(日) 18:57:35.04> 「未定義とする」と定義されている
どこに?
0826デフォルトの名無しさん
2011/08/07(日) 19:13:21.974.規格合致性 に。
0827デフォルトの名無しさん
2011/08/07(日) 20:44:07.95i=i+1をしてからaにx[i]を代入するのですか?
それともaにx[i]を代入してからi++するという意味ですか?
よろしくお願いします。
0828デフォルトの名無しさん
2011/08/07(日) 20:53:47.15++i にすると意味が変わります
0829デフォルトの名無しさん
2011/08/07(日) 20:54:35.73それぐらい自分で検証してみろよ
というかインクリメントでググれ
0830デフォルトの名無しさん
2011/08/07(日) 20:59:28.15int check(int x, int y){
int k;
for (k=0;k<x;k++){
if(a[k]==y)
return 0;
}
return 1;
}
という関数が定義されていて、main関数の中でif(check(x,y))という部分があるのですが、check関数の返り値として何回も0が出てきて最後に絶対1が返り値となってしまいます。この場合はどうなるのですか?
0831デフォルトの名無しさん
2011/08/07(日) 21:01:15.89ありがとうございます
0832デフォルトの名無しさん
2011/08/07(日) 21:07:22.46>この場合はどうなるのですか?
★分からない事をなるべく詳しく書いて下さい。
0833デフォルトの名無しさん
2011/08/07(日) 21:14:20.62main関数の中のif(check(x,y))というのはcheck(x,y)が0だったらその後のものを実行せず、1だったら実行しますよね?
この場合、check(x,y)が返り値を何個も返してしまわないですか?
0834デフォルトの名無しさん
2011/08/07(日) 21:17:17.46main関数も載せてみてください
0835デフォルトの名無しさん
2011/08/07(日) 21:20:58.35(質問の意図が取れてるか分からないけど)
最初の return で check() 関数は終了するから返り値は一つだけ
return したら、もう続きの処理は実行されない
0836デフォルトの名無しさん
2011/08/07(日) 21:23:54.63読めますか?
http://beebee2see.appspot.com/i/azuY-O6xBAw.jpg
0837デフォルトの名無しさん
2011/08/07(日) 21:25:40.85ではこのcheck関数内のfor文は意味をなさないのですか?
0838デフォルトの名無しさん
2011/08/07(日) 21:25:52.42読めない。
長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/
0839デフォルトの名無しさん
2011/08/07(日) 21:26:19.37ソースを難読化するため、例えば
SteelArray[ARRAY1_MAX] を
ARRAY1_MAX[SteelArray] など、要素と配列名を逆にして書きたいのですが
そもそも何故これがちゃんと通るのですか。
0840デフォルトの名無しさん
2011/08/07(日) 21:27:40.22Cの構文規則に合致しているから。
0841デフォルトの名無しさん
2011/08/07(日) 21:32:58.09すみません。今iPhoneしかなくて全て打ち込むのは難しいので原本のpdfをうpします。
http://www.ss.titech.ac.jp/H23-gozen.pdf
これの7番です。よろしくお願いします。
0842デフォルトの名無しさん
2011/08/07(日) 21:33:17.650843デフォルトの名無しさん
2011/08/07(日) 21:33:47.48a[] の中に y と同じ値が含まれているかを一つひとつ確認していく為の for でしょ
無かったら困っちゃうよ
0844デフォルトの名無しさん
2011/08/07(日) 21:35:57.02すみません。読み間違えでした。ありがとうございました。
0845デフォルトの名無しさん
2011/08/07(日) 21:40:00.88それはオーバーフローにはならないのですか。
配列要素+1には書き込めないような予防措置があるなんて聞いたこともないのですが
0846デフォルトの名無しさん
2011/08/07(日) 21:45:03.35そもそもCには、配列外に書き込めないような予防装置なんか、元から全然ないだろ
a[-12] とか書いても余裕
0847デフォルトの名無しさん
2011/08/07(日) 21:49:02.777. 5) b)
利点:
・馬鹿よけ。
・直観的。だからバグが出にくい。
欠点:
・会社が馬鹿だと、A氏のような目にあう。
・そういう会社は、成果を LOC で見るので、自分の評価がやけに低くなる。
0848デフォルトの名無しさん
2011/08/07(日) 21:50:27.46このコードを gcc -S とかでアセンブラ出力してみれば分かるけど、
int main() { int foo[] = { 0, 1, 2, 3 }; }
余計なメモリは確保されないし、何の保証も無いよ
0849デフォルトの名無しさん
2011/08/07(日) 21:57:21.57printfなどで、そのポインタの値を見ても「割り当てられた本当のサイズ」ではないよな。
0850デフォルトの名無しさん
2011/08/07(日) 21:57:29.51>配列に対するポインタが指せる位置は配列要素+1まで保証しなければならない、という規則があったと思いますが
ある。その通り。
>それはオーバーフローにはならないのですか。
ポインタが指せる位置が保証されているだけ。
読み書きしなければ、オーバーフローにはならないだろ?
>配列要素+1には書き込めないような予防措置があるなんて聞いたこともないのですが
そんな措置はない。
0851デフォルトの名無しさん
2011/08/07(日) 21:57:41.81draft paperでも構わんのなら、ISO/IEC JTC1/SC22/WG14のページから拾ってこれると思うが。
0852デフォルトの名無しさん
2011/08/07(日) 21:58:49.79高々テスト問題でも、きちんと分かりやすいコードを書く事は大切だ
0853デフォルトの名無しさん
2011/08/07(日) 21:59:05.35分からんのー
0854デフォルトの名無しさん
2011/08/07(日) 21:59:39.78{
int num,i,sai;
char ps[] = " \n";
char c;
srand((unsigned int)time(0));
num = i = sai = 0;
while(i != 8)
{
sai = rand()%6+1;
num = i;
i += sai;
printf("Your number =%d\n",sai);
printf("123456789\n");
printf("s G \n");
if(i > 8)
{
i = 8-(i-8);
}
ps[i] = '*';
printf("%s\n",ps);
ps[i] = ' ';
printf(">Dice try (N=end)\n");
c = getchar();
if(c == 'N' || c == 'n') return 1;}
printf("you win !\n");
return 0;
}
これにます目を増やしてイベントをつけたいのですがうまくいきません。
誰か教えてください。(includeは省略してます。)
0855デフォルトの名無しさん
2011/08/07(日) 21:59:48.690856デフォルトの名無しさん
2011/08/07(日) 22:04:39.14>>848
>>850
よくわかりました。
0857デフォルトの名無しさん
2011/08/07(日) 22:19:41.06>mallocで確保したメモリの本当のサイズって誰が知っとんの?
特に決まっていない。
極端な話「誰も知らない」という実装もあり得ると思う。
0858デフォルトの名無しさん
2011/08/07(日) 22:22:12.620859デフォルトの名無しさん
2011/08/07(日) 22:23:23.84ポインタを進めていくといずれアドレスFFFFFFFFを超えて00000000に戻ってくるだろう
そうなるとポインタ同士の位置関係を < 演算子で正しく比較できなくなるだろう
最後の要素+1まではそのような問題が起きてはならない
つまり最後の要素+1でアドレスが00000000に戻るようなことになってはいけない
+1まで指せる保証というのは、そういった意味
0860デフォルトの名無しさん
2011/08/07(日) 22:23:46.86reallocするかどうかなら、呼び出し側でサイズを持ってればいいだけでは?
mallocで確保したメモリの「本当のサイズ」っていう話題とはまったく別じゃね?
0861デフォルトの名無しさん
2011/08/07(日) 22:27:45.95reallocで領域拡大したときに古いメモリの内容を
新しく確保したメモリ領域にコピー出来ないと思う
0862デフォルトの名無しさん
2011/08/07(日) 22:32:27.50改めて要求サイズを予約し、旧ブロックを解放する実装だとしても
元の領域の値を複写するのに利用サイズは暗に欲しいような気がする
0863デフォルトの名無しさん
2011/08/07(日) 22:37:06.34そうとも限らない。
領域拡大した際、拡大した領域に何が入るかは不定。
なので、古い領域から新しい領域へ、新しい領域のサイズ分、
(何も考えずに)コピーしてしまえばよい。
そこでSEGVが発生しないようにする等の話は、また別問題。
0864デフォルトの名無しさん
2011/08/07(日) 22:40:17.380865デフォルトの名無しさん
2011/08/07(日) 22:41:08.14あ
許されるなら同じポインタを返す
(領域拡大の際、既存領域の後続が空きで要求サイズに収まってれば、同じポインタを返す)
って実装をしたい場合じゃなければ大きさ知らなくてもいけるのか
0866デフォルトの名無しさん
2011/08/07(日) 22:43:12.90誰かに言われた気がしたけど妄想かな?
0867デフォルトの名無しさん
2011/08/07(日) 22:45:16.79フラグメント気にするような用途だと使わざるを得ない
最近は携帯電話でも、メインメモリ1GBとか贅沢になってきた
0868デフォルトの名無しさん
2011/08/07(日) 22:45:34.84mallocしたときどれだけの領域が使われたかわからないと、
次にmallocする時、どこからメモリを使えばよいかわからない。
確保領域サイズはmallocが管理しているはず。
freeする時も、mallocした分解放することになるので、
mallocが確保領域を管理しているのでは?
mallocが管理しているか、OSが管理しているかはまた別問題。
0869デフォルトの名無しさん
2011/08/07(日) 22:46:25.72妄想なんじゃないの。
0870デフォルトの名無しさん
2011/08/07(日) 22:46:50.85知ってるはずなのだが聞き出す方法がわからんと。
0871デフォルトの名無しさん
2011/08/07(日) 22:56:53.63>mallocしたときどれだけの領域が使われたかわからないと、
>次にmallocする時、どこからメモリを使えばよいかわからない。
>確保領域サイズはmallocが管理しているはず。
今まで確保した「合計サイズ」が必要だって事だね。
実際、必要そうだ。
けど、malloc の呼び出し毎に確保された
「個々のサイズ」は忘れても良さそうな気がする。
>freeする時も、mallocした分解放することになるので、
>mallocが確保領域を管理しているのでは?
昔の free は、実際には free していなかった
というのは有名な話。こんな実装でも筋は通る。
0872デフォルトの名無しさん
2011/08/07(日) 22:58:37.310873デフォルトの名無しさん
2011/08/07(日) 23:01:50.73実際には free しない free に依存したコードを書く
おまえの頭だけはどう見ても筋は通っていない
それで「標準」ライブラリを使っている気になっているんだろ(プゲラ
0874デフォルトの名無しさん
2011/08/07(日) 23:33:48.11でもするすごろくを作りたいのですが、さっぱりわかりません。
できればマスを戻ったり一回休みを作りたいです。
0875デフォルトの名無しさん
2011/08/07(日) 23:44:10.177行スレ向けのお題だね。
不幸にして、7行スレはもう無くなってしまったようだが。
0876デフォルトの名無しさん
2011/08/08(月) 00:11:16.65ほかに似たようなスレはありますか?
0877デフォルトの名無しさん
2011/08/08(月) 00:17:18.58失礼。>>875 は蛇足だね。
このスレでいいと思うよ。
ただし、たかが「すごろく」とはいえ、
色んな要素が絡むからね。
それなりに難しいのは仕方ないと思う。
0878デフォルトの名無しさん
2011/08/08(月) 00:18:52.96一人用、全自動、周回あり、一回休みあり、マス戻り無し
http://codepad.org/pq5wkKZm
コードチェックとかデバッグとかしてないです
7 行じゃなくてスマソw
0879デフォルトの名無しさん
2011/08/08(月) 00:28:45.81ありがとうございました。
ただ自分の作ろうとしてるのとは違いました。
0880デフォルトの名無しさん
2011/08/08(月) 00:33:16.40でも面白いお題でした
0881デフォルトの名無しさん
2011/08/08(月) 00:41:18.17現在の数を37マス(10+9+9+9)で割って余りでイベント決めるとかはどう?
入門ならこれでいいとおもふ
0882デフォルトの名無しさん
2011/08/08(月) 00:48:40.250883デフォルトの名無しさん
2011/08/08(月) 01:25:33.040884デフォルトの名無しさん
2011/08/08(月) 01:59:40.68イベントはめんど
http://codepad.org/WR42NDtN
0885デフォルトの名無しさん
2011/08/08(月) 02:12:46.43面白そうなので、俺も作ってみた。
複数人用、全自動、周回あり、一回休みあり、マス戻り有り
http://codepad.org/HsvACupM
7 行じゃなくてスマソw
0886デフォルトの名無しさん
2011/08/08(月) 02:53:17.25皆さんありがとうございました。
0887デフォルトの名無しさん
2011/08/08(月) 03:18:43.23これを正しくするにはどうすればいいですか?
初歩的なのかもしれませんが教えてください。
0888デフォルトの名無しさん
2011/08/08(月) 03:35:58.44「計算結果が0未満になったときは0にしたい」なら条件分岐(if文とか)を使え。
「計算すると0になるはずなのになぜか負の値が出てくる」ということなら
その情報だけでは、たぶんコードのどこかが間違っているのだろうから
よく確認してみてねとしか言えない。
0889デフォルトの名無しさん
2011/08/08(月) 03:43:27.93>aにx[i]を代入してからi++するという意味です
>++i にすると意味が変わります
処理系によってはa[i]を参照し記憶し、i++してから
aに代入(複製)することもあるでしょう。
こういう質問に関しては、例示に留めてください。
例
実行前 I=1 a=0 x[1]=3
実行後 i=2 a=3 x[i]=3
0890デフォルトの名無しさん
2011/08/08(月) 03:55:47.97混同しないようにするにはどうすればいいですか。
0891デフォルトの名無しさん
2011/08/08(月) 07:23:20.31mallocの実装例としては、ヒープをunionによるブロック単位で扱い、先頭をヘッダーとして用いて確保ブロックサイズを記録する方法がある。(あくまで実装方法のひとつ)
ヒープメモリー(□は未使用、■は使用中。□ひとつが16byte)
□■□□□□□■□□■■□□□□■■■□□■□□□
例:20byteを確保したい場合。
1.ヒープから20byte分を格納できる連続領域を捜す。
(20byteだから□2個分+ヘッダー用1個=3個以上連続して空いてる場所を捜す)
□■□□□□□■□□■■□□□□■■■□□■□□□
↑
ここが空いてる
そこをヘッダーとして、確保サイズの記憶に用いる。(ヘッダーに”確保サイズ20”をメモする)
□■20□□□□■□□■■□□□□■■■□□■□□□
↑
以降20byteが使用されてるという印
ヘッダーの次のアドレスをmallocの戻り値とする。(ユーザーは、ここ以降20byteを使用して良い)
□■20□□□□■□□■■□□□□■■■□□■□□□
↓
ヘッダーの次の□の位置を、mallocのリターンとして返す。
例:これを free()する場合
□■20□□□□■□□■■□□□□■■■□□■□□□
↓
free()には、malloc()の戻り値の先頭アドレスを渡す。
このアドレスを、□1つ分もどると、そこがヘッダーとして、malloc時に確保したサイズが記録されている。
この20を参考にして free()は動作する。(ヘッダーのリンクをリセットする)
備考:実際にはサイズの20だけではなく、次の空き領域へのポインターも同時に格納されてるかもしれない。(あくまで実装方法のひとつ)
a = malloc(20)で得たaを、適当に数バイト後ろに戻って、記録されてるデータを確認していけば、20という数字が見つかるかもしれない。
0892デフォルトの名無しさん
2011/08/08(月) 08:25:02.48コードを貼ってみて。
0893デフォルトの名無しさん
2011/08/08(月) 10:31:13.87もっと詳しく言うと、実際アライメントの調整するから20バイトきっかり確保される事は無いな。
アライメントが8だと24バイトになるね。
0894デフォルトの名無しさん
2011/08/08(月) 12:41:22.71一番重要なのは使用済みor未使用を区別する手段だろ。
0895デフォルトの名無しさん
2011/08/08(月) 13:54:50.930896デフォルトの名無しさん
2011/08/08(月) 14:07:15.265万回mallocはムリだったか。
0897デフォルトの名無しさん
2011/08/08(月) 15:53:58.31うっうっうっううー
0898デフォルトの名無しさん
2011/08/08(月) 16:08:53.9864bit 版を使うとか
0899デフォルトの名無しさん
2011/08/08(月) 16:49:40.470900デフォルトの名無しさん
2011/08/08(月) 16:51:36.030901デフォルトの名無しさん
2011/08/08(月) 16:51:53.040902デフォルトの名無しさん
2011/08/08(月) 16:56:47.630903デフォルトの名無しさん
2011/08/08(月) 17:03:39.725万回、楽勝でできたけど。
0904デフォルトの名無しさん
2011/08/08(月) 17:05:48.44>>896 がどう malloc() してるか知らんけど、1KB づつ malloc() しても、
高々 50MB 程度だから、32/64bit の問題じゃないと思う。
0905デフォルトの名無しさん
2011/08/08(月) 17:22:31.96VS2008でオプション→VC++ディレクトリ等で出てくる
$(VCInstallDir)のようなマクロを自分で作ることはできますか?
0906デフォルトの名無しさん
2011/08/08(月) 17:33:13.83まあな
昔 malloc の実装を作ったときも、そんなあたりに壁はなかった
小間切れ領域が足りなくなったときの処理がタコとか・・・まさかねw
おおかたパーミッションあたりか
0907デフォルトの名無しさん
2011/08/08(月) 17:35:53.72Cのプログラムの中での話?
もしかしてすれ違いならVisualStudioやVC++のスレあるよ
0908デフォルトの名無しさん
2011/08/08(月) 17:43:39.68ああスレ違いですね
失礼しました
0909デフォルトの名無しさん
2011/08/08(月) 19:15:21.87malloc にパーミッションなんてあったっけ?
0910デフォルトの名無しさん
2011/08/08(月) 19:55:50.81一番うしろ
0911デフォルトの名無しさん
2011/08/08(月) 20:27:48.04タコっつうか、実行速度最優先で断片化を防ぐことはあまり考えてない気がする。
断片化しちゃったら終わり。どうしようもない。
0912デフォルトの名無しさん
2011/08/08(月) 20:29:38.220913デフォルトの名無しさん
2011/08/08(月) 20:40:18.95他のアロケータを使ってみるという手もある
http://goog-perftools.sourceforge.net/doc/tcmalloc.html
0914デフォルトの名無しさん
2011/08/08(月) 20:42:46.00ファイルから数値を読み込みたいのですが,
数値の数を可変にしたいのです。
int dim;int *F;
を変数として,ファイル input に
3
14 2 7
の様に、一行目に 変数 dim の内容を、
二行目に dim個の数値(*F の内容)を記述してあって、
それを読み込みたいのです。
fgets(s,64,fp);
sscanf(s,"%d",&dim);
で、一行目の読み込みは出来るのですが、
二行目をどう読み込めばいいでしょうか?
0915デフォルトの名無しさん
2011/08/08(月) 21:45:00.42こっとりさん〜ことりさん♪
0916デフォルトの名無しさん
2011/08/08(月) 22:39:15.25Fの領域を確保してから
for(i=0;i<dim;i++) fscanf(fp, "%d", &F[i]);
0917デフォルトの名無しさん
2011/08/08(月) 23:24:08.78とりあえずコンパイラとnotepad++入れとけばいいんだろ?
0919デフォルトの名無しさん
2011/08/08(月) 23:37:16.69ありがとうございます!
0920デフォルトの名無しさん
2011/08/08(月) 23:39:38.49Turbo C 2.01 オススメ。
ライブラリは充実してるし、
統合開発環境も付いてるからインストールしてすぐ始められる。
LCC-Win32 もオススメ。
商用利用しなければ無償で使えるから経済的。
もろちん開発環境も付属。
VC++2010 も一応オススメ。
ただしこれは C コンパイラーじゃなくて
C++ のコンパイラーだね。
0921デフォルトの名無しさん
2011/08/08(月) 23:47:25.440922デフォルトの名無しさん
2011/08/08(月) 23:51:03.820923デフォルトの名無しさん
2011/08/08(月) 23:52:38.12とりあえずLCC入れとく
0924デフォルトの名無しさん
2011/08/09(火) 00:06:16.500925デフォルトの名無しさん
2011/08/09(火) 00:06:20.52両方使ってみて気に入ったほう使えばいい。
多分こっちがメインになる。
Turbo C は不要。これ16ビットだからな。
0926デフォルトの名無しさん
2011/08/09(火) 00:10:36.24Somehow::YOYOYOYO
こういうのがムカつく
Cの参考書に書いてないじゃないのさ。C++分からないのに
0927デフォルトの名無しさん
2011/08/09(火) 00:10:42.35一つのソースをいろんなコンパイラに通してみるのも
意外と楽しいし発見もあったりする
0928デフォルトの名無しさん
2011/08/09(火) 00:15:25.030929デフォルトの名無しさん
2011/08/09(火) 00:16:06.540930デフォルトの名無しさん
2011/08/09(火) 00:27:30.35linuxだと、モニターの表示映像もファイルだから、fopen("/dev/fb0", "rb")とかで適当にファイルを開いて、
そこにfwrite()で、各ピクセルの色を書きこめば、それだけで画面に絵を表示できる。
サウンドも、グラフィックと似たような方法で直接鳴らす方法もある。
windowsだと、こうはいかない。
windowsだと、手軽にできる画面出力なんてprintfくらいだから、
結果的に、「Cだとprintfで文字表示するくらいしかできない。グラフィックやサウンドは極端に面倒」的な、妙な認識になりがち。
0931デフォルトの名無しさん
2011/08/09(火) 00:43:02.78設定さえ済んでれば、これだけでキャプチャもできるもんな
cat /dev/video0 > capture.mpg
0932デフォルトの名無しさん
2011/08/09(火) 00:45:05.11御意
Lispみたいにシングルコロンとダブルコロンが意味的に繋がっていれば、まだわかるんだけどね
0933デフォルトの名無しさん
2011/08/09(火) 00:55:16.810934デフォルトの名無しさん
2011/08/09(火) 02:08:22.70変な仕様だな。
0935デフォルトの名無しさん
2011/08/09(火) 02:18:02.08http://doc.cat-v.org/plan_9/4th_edition/papers/812/
0936デフォルトの名無しさん
2011/08/09(火) 02:38:40.55あるものはchar*で代替できるかもしんね
でも全部がそういうふうに置き換えられるわけじゃない
やれやれだ
0937デフォルトの名無しさん
2011/08/09(火) 02:41:30.570938デフォルトの名無しさん
2011/08/09(火) 02:44:46.41はぁ?
このスレ何か分かってる?
0940デフォルトの名無しさん
2011/08/09(火) 11:04:03.06禿がやってたろ
0941デフォルトの名無しさん
2011/08/09(火) 18:06:25.05ライブラリはあるみたいけど、自作してOKなのかな?
0942デフォルトの名無しさん
2011/08/09(火) 18:16:32.82自作して悪い理由って、例えば何?
0943デフォルトの名無しさん
2011/08/09(火) 18:21:20.37/,.ァ、\
( ノo o ) )
)ヽ ◎/(.
(/.(・)(・)\
(/| x |\)
//\\
. (/ \)
0944デフォルトの名無しさん
2011/08/09(火) 20:15:01.00fopen64に直したんですがうまくいかないです。
ファイルポインタの宣言を別なものにする必要とかあるんでしょうか?
それとフォーマット指示子なんですがlongは%ld、floatは%fなんですが
doubleやlong doubleはどう指定すんでしょうか?
0945デフォルトの名無しさん
2011/08/09(火) 20:42:35.56環境は何よ?
> floatは%fなんですが
違う。
0946デフォルトの名無しさん
2011/08/09(火) 20:45:08.00環境はSolalisです。
%eとか%gとかもあるということです?
0947デフォルトの名無しさん
2011/08/09(火) 20:47:59.46#define _FILE_OFFSET_BITS 64
これ指定するだけで特にいじる必要ないってことであってます?
0948デフォルトの名無しさん
2011/08/09(火) 20:51:29.263x3、4x4とか小さい固定サイズのは自作してもいいけど大きいのはなあ
頑張って自作した後に有名なライブラリとパフォーマンス比べてみると死にたくなるよ
0949デフォルトの名無しさん
2011/08/09(火) 20:52:38.07longが32bitで、fseek()とかftell()みたいな関数つかってるとかは?
0950デフォルトの名無しさん
2011/08/09(火) 20:54:14.570951デフォルトの名無しさん
2011/08/09(火) 20:58:07.89fseekやftell使ってます。ダメですか?
0952デフォルトの名無しさん
2011/08/09(火) 21:05:30.34もしlongが32bitだったら2Gまでしか処理できないね。
0953デフォルトの名無しさん
2011/08/09(火) 21:07:57.420954デフォルトの名無しさん
2011/08/09(火) 21:15:20.170955デフォルトの名無しさん
2011/08/09(火) 21:15:27.910956デフォルトの名無しさん
2011/08/09(火) 21:38:24.16書き出すだけだから出来るんかな?
0957デフォルトの名無しさん
2011/08/09(火) 21:55:38.42その2. まず想定しないだろうけど
fprintf(fp, "%s", string) でフォーマットで参照する文字列 string が 2G 突破しちゃうようなでかいの
0958デフォルトの名無しさん
2011/08/09(火) 22:36:51.64物語だったらC言語は間違いなく悪役
0959デフォルトの名無しさん
2011/08/09(火) 22:42:26.840960デフォルトの名無しさん
2011/08/09(火) 22:46:14.830962デフォルトの名無しさん
2011/08/09(火) 23:01:16.81そりゃある程度の知識としては必要なんだろうけど
0963デフォルトの名無しさん
2011/08/09(火) 23:08:30.10それに飛びついたコバンザメたちの大漁にお堅いメーカーまでが寄らば大樹の陰と、ある意味の本末転倒
独創的でしかし新旧問わずフリークたちのツボを真に抑えた文化圏ができるまでの腰掛けに過ぎない
社の面子だけが最終課題の、無駄に複雑でいらんことを勝手にする、
その使いにくさのあげくがセキュリティ形骸化という馬鹿げた事態への
アンチテーゼではなかったのかという、絶望の向こうにあるまた絶望
http://ar.wikipedia.org/wiki/%D8%A5%D9%85_4 ですか?
信じられない‥‥‥。
0965デフォルトの名無しさん
2011/08/09(火) 23:11:09.03OCaml は C++ と同じくらい汚いと思う
Scala は VM で動く言語だから C とはレイヤーが違う
SML が栄えていたら C は要らなかったかも
C++ が C with Class のまま穏当な進化をしていたら C は要らなかったかも
C が要らないと思う人は、使わないという勇気を持てば良いだけ
0966デフォルトの名無しさん
2011/08/09(火) 23:14:02.86そうじゃないけどなんでアラビア語?なんだ
0967デフォルトの名無しさん
2011/08/09(火) 23:17:37.16ゴミ言語が乱立したせいで混乱を招いてる
0968デフォルトの名無しさん
2011/08/09(火) 23:20:38.170969デフォルトの名無しさん
2011/08/09(火) 23:31:37.15OCamlの汚さ - SMLの汚さ = C++の汚さ - Cの汚さ
であって、流石にOCamlがC++と同じくらい汚いってことはない
むしろMLベースでC++並みにカオスな言語とか使ってみたいわ
0970デフォルトの名無しさん
2011/08/09(火) 23:46:10.94マルチスレッドに関するいい資料とかあったら教えて下しあ
あとコレ便利だけど?みたいな関数とかも教えてくれたら神として崇める
ちなみに開発環境はVisual Studio 2008 c++です
開発環境もこっちのが良いんじゃねみたいなのあったら教えてください
0971デフォルトの名無しさん
2011/08/09(火) 23:52:59.67どんな移植性が良くたって、結局は生成されたモジュールが環境依存なんだからな。
Java みたいのは本末転倒だ、話にもならない。
ソースコードそのものがそのまま実行ファイルであり、
どんな環境でもそのまま使える
Perl や Ruby こそ本来の目指すべき未来だろう。
0972デフォルトの名無しさん
2011/08/09(火) 23:58:02.830973デフォルトの名無しさん
2011/08/09(火) 23:59:46.38icc は?
0974デフォルトの名無しさん
2011/08/10(水) 00:11:26.05そういうのはループの局所的な並列化だけでいいはずだからOpenMPが楽
0975デフォルトの名無しさん
2011/08/10(水) 00:26:26.84その位の理由ならJavaもPerl や Rubyも同じようなもんだろ
0976デフォルトの名無しさん
2011/08/10(水) 00:32:19.29そんな世界を一番喜ぶのは中国だろうな
0977デフォルトの名無しさん
2011/08/10(水) 01:07:41.71問題を再現出来るミニマムなコードを貼ってくれたら・・・
0978デフォルトの名無しさん
2011/08/10(水) 03:32:15.18神
行ける気がするありがとう
0979デフォルトの名無しさん
2011/08/10(水) 03:50:49.69マルチコア最強になっちゃう感じですか?
すみませんド素人なもんで
0980デフォルトの名無しさん
2011/08/10(水) 03:53:56.39なっちゃうかもしらんが、個人的にはシングルコアでも差が分からんかった
コンパイラオプションでON/OFF選べるよ
0981デフォルトの名無しさん
2011/08/10(水) 03:58:53.43返信はやくてびっくりしたわ
さんくす
いろいろ試してみるわ
0982デフォルトの名無しさん
2011/08/10(水) 06:43:58.070983デフォルトの名無しさん
2011/08/10(水) 06:45:02.34C言語なら俺に聞け(入門編)Part 88
http://hibari.2ch.net/test/read.cgi/tech/1312926287/
0984デフォルトの名無しさん
2011/08/10(水) 07:33:16.90乙
0985デフォルトの名無しさん
2011/08/10(水) 07:35:22.390986デフォルトの名無しさん
2011/08/10(水) 08:15:41.90IDE使わなきゃ余裕
0987デフォルトの名無しさん
2011/08/10(水) 09:13:39.85PCIのギガビットLAN+SATA増設は鬼門。
フルにアクセスするとマウスがワープしはじめる。
0988デフォルトの名無しさん
2011/08/10(水) 09:55:20.60PCIのバス幅ならSATAカードやNIC増設したらそうなるかw
0989デフォルトの名無しさん
2011/08/10(水) 11:32:24.400990デフォルトの名無しさん
2011/08/10(水) 11:50:37.89AGPがまだまだ主流の頃のM/Bのチップセットなら
ありえるかなと思ったけどそこまで調べるの面倒だ
0991デフォルトの名無しさん
2011/08/10(水) 12:32:56.37残り917727分
0992デフォルトの名無しさん
2011/08/10(水) 13:39:52.32{
double aaa = 5.552;
return aaa;
}
void main()
{
printf("[%lf]\n",aaa);
}
とすると、[0.00000]が表示されます。
なぜ?
doubleの戻り値が取れません。int型なら問題ないのですが。
0993デフォルトの名無しさん
2011/08/10(水) 13:41:39.81× printf("[%lf]\n",aaa);
○ printf("[%lf]\n",aaa());
0994デフォルトの名無しさん
2011/08/10(水) 13:44:20.10{
printf("[%p]\n",aaa);
}
こうしないと駄目だろ。
0995デフォルトの名無しさん
2011/08/10(水) 13:56:01.81aaa()
で呼んでました。
実際は、aaa()は別オブジェクトで静的にリンクしてるのですが、
double aaa();
とプロトタイプを書けば戻り値の取得をが出来ました。、
でも、
int aaa();
ならプロトタイプを書かなくても取得ができます。
これはなぜでしょうか?
0996デフォルトの名無しさん
2011/08/10(水) 13:58:44.920997デフォルトの名無しさん
2011/08/10(水) 13:59:42.87system("clear");
0998デフォルトの名無しさん
2011/08/10(水) 13:59:50.90Cの仕様
0999デフォルトの名無しさん
2011/08/10(水) 14:05:04.47有難うございます
1000デフォルトの名無しさん
2011/08/10(水) 14:18:35.0010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。