トップページ⇒tech
1001コメント280KB

C言語なら俺に聞け(入門編)Part 78

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/02/06(日) 18:33:49
C言語の*入門者*向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 77
http://hibari.2ch.net/test/read.cgi/tech/1295721606/
★過去スレ
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++の宿題片付けます 146代目
http://hibari.2ch.net/test/read.cgi/tech/1296387672/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0655デフォルトの名無しさん2011/02/12(土) 22:36:57
> (2)処理系依存がスレ違いであるという根拠がない。
> >>606で書いたとおり、最新の定義があるなら教えてくれ

君がスレ違いだと主張しているんだから
君が証明してやらねばいかんよw
0656デフォルトの名無しさん2011/02/12(土) 22:37:49
>>653
> (1)整数型からポインタ型への変換ができることは、処理系依存ではない。
> >>596で答えてる

答えているが、無関係。
整数型からポインタ型への変換ができることは、処理系依存ではない。
処理系依存なのは、変換の結果だ。

> (2)処理系依存がスレ違いであるという根拠がない。
> >>606で書いたとおり、最新の定義があるなら教えてくれ

>>1が最新の定義。
そこに処理系依存がスレ違いであるという定義はない。
0657デフォルトの名無しさん2011/02/12(土) 22:37:54
これ以上はこちらで
http://hibari.2ch.net/test/read.cgi/tech/1295273862/

あなたが解けないC言語/C++言語の問題を ◆QZaw55cn4c が有償で片付けるスレッドです。

・モリタポ(http://moritapo.jp/)により決済を行います。
・投稿にあたっては、トリップを使ってください。トリップがなければ決済の確認ができません。
 ◆QZaw55cn4c は、トリップ以外の質問者の情報を知ることができませんので安心です。

【回答掲示までの流れ】
1. 質問者がトリップを使って問題を投稿する。
2. ◆QZaw55cn4c が回答できる問題があれば、◆QZaw55cn4c が受諾レスを行う。
 受諾レスには決済日を基点とした回答猶予期間が示される。
3. 質問者が ◆QZaw55cn4c にモリタポを進呈する。
 進呈の際には、問題を投稿したときに表示されたトリップ(パスワードではない)をメッセージに記入する。
4. モリタポの進呈を確認したら、◆QZaw55cn4c は回答を掲示する。(http://codepad.org/, http://ideone.com を使用します。)

【料金】
・一問あたり 500円(5000モリタポ・手数料込み)です。
・一つのレスに記述できる内容を一問とします。アップローダーを使用してもかまいません。
・◆QZaw55cn4c が受諾レスを行い、受諾レスに回答期日を示したにも関わらず、回答期日に間に合わなかった場合には、モリタポを返還します。
それ以外の場合にはモリタポの返還はいたしません。

【修正】
・◆QZaw55cn4c が一度示した回答に対しては、明白な錯誤があった場合を除いては、◆QZaw55cn4c は修正は基本的に行いません。

ただし、最大限ご希望に応じたいと考えていますので、修正希望があれば、トリップを使用して投稿してください。
修正希望回数は、最大3回を目安としてください。3回を超えて修正を希望する場合は、新規に質問を投稿しなおしてください。
いずれも場合も、修正に応じることを保障するものではありません。
0658デフォルトの名無しさん2011/02/12(土) 22:39:34
>>645
そもそも未定義になるって話もよく判らんのよ
char a[] = "abc";
char* x;
x = a;
x--;
x の値は a のアドレス -1 でそのアドレスに何が有るかは不定だ、これは処理系依存ではない
では未定義という言葉は何処に適用するんだ?
0659デフォルトの名無しさん2011/02/12(土) 22:42:29
>>658
>>654
0660デフォルトの名無しさん2011/02/12(土) 22:43:13
>>658
x--; とすると鼻から悪魔が出るか、はたまたHDDがフォーマットされるかもしれないよって意味じゃね?
0661デフォルトの名無しさん2011/02/12(土) 22:43:16
>>658
アクセスしたときの動作だよ
馬鹿じゃないの
0662デフォルトの名無しさん2011/02/12(土) 22:44:28
ムバラク政権が崩壊したのもこのx--;のせいだしな。
0663デフォルトの名無しさん2011/02/12(土) 22:47:08
>>654
その 6.5.6 って意味がよく判らん記述だなぁ、解りやすく解説できる?

そもオーバーフローとは加算・乗算によって桁あふれを起こす場合だろ
減算によって引き起こされるのはアンダーフローって呼ぶのでは?
0664デフォルトの名無しさん2011/02/12(土) 22:47:49
規格ってのは、○○したら△△となる(ようにコンパイラ作れ)、という決め事なんだよ。
未定義ってのは、あなた(コンパイラ作る人)の自由にしてね、ってこと。
0665デフォルトの名無しさん2011/02/12(土) 22:48:04
>>655
>君がスレ違いだと主張しているんだから
>君が証明してやらねばいかんよw
知らんよ。
間違ってれば、間違ってると指摘すれば良いだけ
それが2chだろ?

>>656
>答えているが、無関係。
>整数型からポインタ型への変換ができることは、処理系依存ではない。
>処理系依存なのは、変換の結果だ。
どうぞ結果を伴わない処理でもやっててください

>>>1が最新の定義。
>そこに処理系依存がスレ違いであるという定義はない。
それは知らんかったよ
FAQも消えてるし、甘くなったのかな?
0666デフォルトの名無しさん2011/02/12(土) 22:49:19
>>663
抜き出しだから分かりにくいのはごめん
JISの該当箇所を読んでも分からないのか?

あとアンダーフローについての認識は間違ってるよ
0667デフォルトの名無しさん2011/02/12(土) 22:52:16
>>664
>あなた(コンパイラ作る人)の自由にしてね、ってこと。
それ、処理系定義
未定義は、それ以前の問題で考慮する必要すらないこと
0668デフォルトの名無しさん2011/02/12(土) 22:55:30
不定
未定義
処理系定義

文字通りそのままの意味だよね
0669デフォルトの名無しさん2011/02/12(土) 22:56:34
>>666
JISが何処に有るかも知らんので該当箇所を読んだことも無いよ、何処に有るか教えて

確かにアンダーフローの認識は誤ってたな、減算によって生じるのはなんて呼ぶのが正しいんだろ
0670デフォルトの名無しさん2011/02/12(土) 22:56:37
663 :デフォルトの名無しさん:2011/02/12(土) 22:47:08
>>654
その 6.5.6 って意味がよく判らん記述だなぁ、解りやすく解説できる?

そもオーバーフローとは加算・乗算によって桁あふれを起こす場合だろ
減算によって引き起こされるのはアンダーフローって呼ぶのでは?


釣りだろwwww
0671デフォルトの名無しさん2011/02/12(土) 22:58:28
>>661
アクセスした時に未定義になるのは、初期化してない領域にアクセスした場合、
>>658の未定義は、確保してない領域のポインタを作った場合の話
0672デフォルトの名無しさん2011/02/12(土) 22:59:15
>>669
>JISが何処に有るかも知らんので該当箇所を読んだことも無いよ、何処に有るか教えて
JISのページ行けばPDFで見れるよ

>確かにアンダーフローの認識は誤ってたな、減算によって生じるのはなんて呼ぶのが正しいんだろ
減算でもオーバーフロー
0673デフォルトの名無しさん2011/02/12(土) 23:03:04
> 減算によって引き起こされるのはアンダーフローって呼ぶのでは?

おそらくキャリーとボローのことがいいたいんだろうけど
・・・痛いなw
0674デフォルトの名無しさん2011/02/12(土) 23:05:10
>>667
違うよ。
処理系定義は「実装はあなたが決めてね」だが、何らかの結果を伴う必要がある「決め事」である。
未定義は考慮してもしなくてもいい、という意味。
0675デフォルトの名無しさん2011/02/12(土) 23:07:42
>>672
見られないな、chrome ではダメなんだろうか、まぁどうでも良い話だから手間かけてまで読もうとも思わんけどね
0676デフォルトの名無しさん2011/02/12(土) 23:09:47
アンダーフロー
Wikipediaですまんが

http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0#.E6.B5.AE.E5.8B.95.E5.B0.8F.E6.95.B0.E7.82.B9.E6.95.B0.E3.81.AE.E7.B2.BE.E5.BA.A6
0677デフォルトの名無しさん2011/02/12(土) 23:12:15
>>675
どうでも良い割には食いつきよかったね^^
0678デフォルトの名無しさん2011/02/12(土) 23:14:28
つ
ポインタオペランド(a[i])及びその結果(a+i)の両方が
同じ配列オブジェクトの要素(0=<i,i<(sizeof(a)/sizeof(a[0]))),
又は配列オブジェクトの最後の要素を 一つ越えたところを指している場合,
(i==(sizeof(a)/sizeof(a[0]))演算によって,
オーバフローを生じさせてはならない。
それ以外の場合,動作は未定義とする。
0679デフォルトの名無しさん2011/02/12(土) 23:15:31
>>675
そうか残念、でもCFAQでこんなの見つけた

6.17:
ほらこのトリック。下のように書けば

int realarray[10]; int *array = &realarray[-1];

"array"は1始まりの配列のように使える。

A:
このテクニックは魅力的だが(NUMERICAL RECIPES IN Cの古い版でも使われている)、
厳密にいえばC言語の規格に従っていない。ポインター演算は、一度に割り振られた領域と、
仮想的な"終端"を越えた1つめの要素にだけ定義されていて、それ以外では未定義である。
このことは、たとえポインターを参照に使っていないとしてもあてはまる。
上のコードはオフセットを引いた時に、とんでもないアドレスを作り出して(たぶんアドレスが
"ぐるっと回って"メモリセグメントの先頭を越えて他のセグメントと重なるからだろう)うまくいかなくなる可能性がある。

References:
K&R2 Sec. 5.3 p. 100, Sec. 5.4 pp. 102-3, Sec. A7.7 pp. 205-6; ANSI Sec. 3.3.6; ISO Sec. 6.3.6; Rationale Sec. 3.2.2.3.
0680デフォルトの名無しさん2011/02/12(土) 23:21:05
>>678
ポインタオペランドはaじゃない?
前後見てないから何だけど
0681デフォルトの名無しさん2011/02/12(土) 23:28:14
結局オーバーフローとアンダーフローの違いも分からない奴がJIS規格も知らずに
「減算で未定義動作の例がオーバーフローとか的外れワロスw」って騒いでただけかw
0682デフォルトの名無しさん2011/02/12(土) 23:30:17
意外と◆QZaw55cn4cだったりしてなw
0683デフォルトの名無しさん2011/02/12(土) 23:30:58
アクセスするならまだしも「演算も未定義動作を引き起こす」って割と罠だから
いらんこと考えすぎるのも分かる気がする
0684デフォルトの名無しさん2011/02/12(土) 23:33:55
なんかいろいろいわれているが
>>611の、
> --pでpがstrの一つ前を指した時点で
これがすでにありえないコードなんだけど。

>>612で終わらなかったことに驚いている。
0685デフォルトの名無しさん2011/02/12(土) 23:35:32
ループを抜けた時点で配列の先頭よりも前を指すポインタが生まれることがアウトなんだよ
0686デフォルトの名無しさん2011/02/12(土) 23:36:29
>>680
ここではaって見た方が意味が分かりやすいけど、全体を通してみると
ポインタオペランドって言葉が、ポインタに対する演算結果と言う意味で
使われているので多分a[i]で合ってると思う…
あとは、他の人にまかせた
ノ
0687デフォルトの名無しさん2011/02/12(土) 23:37:26
>>684
>これがすでにありえないコードなんだけど。
なんで?
0688デフォルトの名無しさん2011/02/12(土) 23:39:26
>>609も未定義になるんでしょ?
ループ抜けるときのpの値はstr-1なんだし
0689デフォルトの名無しさん2011/02/12(土) 23:41:11
>>685
「ループを抜けた時点で」←ダウト
配列の先頭よりも前を指すポインタと比較して、正しい結果が得られる保証がないため、ループを抜けないかもしれない
0690デフォルトの名無しさん2011/02/12(土) 23:46:44
>>689
「配列の先頭よりも前を指すポインタと比較して」←ダウト
未定義の処理なので、比較すらされないかもしれない
0691デフォルトの名無しさん2011/02/12(土) 23:49:31
え、配列の先頭よりも前を指すポインタを生んだ時点で未定義なの?
それは知らなかった。
初期化されていないポインタとか大丈夫なの
0692デフォルトの名無しさん2011/02/12(土) 23:52:48
>>691
>初期化されていないポインタとか大丈夫なの
不定値になるから大丈夫
そもそも「意図的な演算によって」不正なアドレスを生成するのと初期化で勝手に値が入るのは別
0693デフォルトの名無しさん2011/02/12(土) 23:54:31
>>691
>え、配列の先頭よりも前を指すポインタを生んだ時点で未定義なの?
違います。
演算結果が、配列の先頭よりも前を指すポインタを生んだ時点で未定義になります
初期化されてないポインタは演算されてないので、無問題です。
0694デフォルトの名無しさん2011/02/12(土) 23:55:29
>>692
不正なアドレスをポインタに代入することが未定義だってことなんだよね?
ついに規格を読む日が来たか
06956942011/02/12(土) 23:56:31
>>693
そのポインタに対して、何かしらのポインタ演算を行った場合に未定義になるのかと思ってた
06966922011/02/12(土) 23:59:56
>>694
>>693が書いてる通りで、「演算によって有効でないアドレスを生成する」と未定義の動作を引き起こす
んで、配列に関する「有効なアドレス」は「要素を指すアドレス」か「最後の要素を一つ越えたところ」
初期化はそもそも関係ない話
0697デフォルトの名無しさん2011/02/13(日) 00:01:00
>>695
初期化されてない変数等に対するアクセスと、ごっちゃになってない?
規格上のポインタに対する操作は厳しい
06986942011/02/13(日) 00:03:59
>>696
つまり、C FAQの
> ポインター演算は、一度に割り振られた領域と、
> 仮想的な"終端"を越えた1つめの要素にだけ定義されていて、それ以外では未定義である。
> このことは、たとえポインターを参照に使っていないとしてもあてはまる。
> 上のコードはオフセットを引いた時に、とんでもないアドレスを作り出して
というくだりは、
オフセットを引いたときは未定義であるため、とんでもないアドレスを作り出す可能性があり
ということ?

>>697
そこはごっちゃになってないです
0699デフォルトの名無しさん2011/02/13(日) 00:07:26
>>698
>オフセットを引いたときは未定義であるため、
未定義なのでアドレスを作り終える前に鼻から悪魔が出てくるかも知れない
0700デフォルトの名無しさん2011/02/13(日) 00:09:58
>>698
JIS規格読んで。上の方にある引用でもいいから。未定義と書いてあるから未定義なの。
CFAQは一例としてそういうアーキテクチャを挙げているだけ。
っていうか未定義の原因をあれこれ考えるのは考えすぎだよ。
07016942011/02/13(日) 00:15:17
>>700
ごめん、今引用されてることに気づかず、ちょうど6.5.6に到達してたところでした。
未定義になることを理解しました。
未定義の原因なんてものは考えてないです。なにをすることが未定義なのかを考えてました。

スレ汚しすみませんでしたー
0702デフォルトの名無しさん2011/02/13(日) 00:16:27
>>701
あぁ、純粋に普通の質問だったのか
きつく言い過ぎたよ、ごめんな
0703デフォルトの名無しさん2011/02/13(日) 00:44:06
ポインタ演算で配列の境界を越えてアクセスするような未定義の動作を行った場合、
それに続く比較の効果は未定義とする

比較されるかどうかもわからないのにわざわざ書いてるんだなぁ。
0704デフォルトの名無しさん2011/02/13(日) 01:15:43
>>703
???
0705デフォルトの名無しさん2011/02/13(日) 01:58:17
HSPの方がいいよね
0706デフォルトの名無しさん2011/02/13(日) 04:14:48
http://codepad.org/mnQqxE3E

これを実行しても、「test」に何もかかれないのですが、
なぜでしょうか?
0707デフォルトの名無しさん2011/02/13(日) 04:18:41
testを一度閉じてまた開いてみたら?
0708デフォルトの名無しさん2011/02/13(日) 04:20:27
>>707
何も起こりません・・・。
0709デフォルトの名無しさん2011/02/13(日) 04:26:00
自分の所では正常に実行出来たよ。環境は Mac OS X snow leopard。
0710デフォルトの名無しさん2011/02/13(日) 04:27:28
環境はWindows 7です。
テキストの名前は「test」なのか、「test.txt」なのかどっちでしょうか?
0711デフォルトの名無しさん2011/02/13(日) 04:30:11
test.txt だよ。プログラムに書いてある通り。
0712デフォルトの名無しさん2011/02/13(日) 04:50:30
>>711
あ、ありがとうございます!

できました^^
0713デフォルトの名無しさん2011/02/13(日) 05:15:41
とある配列のインデックス
0714デフォルトの名無しさん2011/02/13(日) 05:24:45
スーパーハカーさまにはかないませんなw
0715デフォルトの名無しさんNGNG?2BP(0)
この流れで質問出していいのかな?;;
include <stdio.h>
int main(void)
{
int vx, vy;
printf("国語\n数学\n英語");
printf("整数vx:"); scanf("%d",&vx);
printf("整数vy:"); scanf("%d",&vy);

printf("vx + vy = %d/n", vx + vy);
printf("vx - vy = %d/n", vx - vy);
printf("vx * vy = %d/n", vx * vy);
printf("vx / vy = %d/n", vx / vy);
printf("vx %% vy = %d/n", vx % vy);

return (0);
}

読み込んだ整数の和 差 積 商 剰余を表示するプログラムのはずなのですが、
うまく動作しません。  指摘お願いします。
0716デフォルトの名無しさんNGNG?2BP(0)
include <stdio.h>
int main(void)
{
int vx, vy;
printf("国語\n数学\n英語");
printf("整数vx:"); scanf("%d",&vx);
printf("整数vy:"); scanf("%d",&vy);

printf("vx + vy = %d/n", vx + vy);
printf("vx - vy = %d/n", vx - vy);
printf("vx * vy = %d/n", vx * vy);
printf("vx / vy = %d/n", vx / vy);
printf("vx %% vy = %d/n", vx % vy);

return (0);
}
読み込んだ整数の和 差 積 商 剰余を表示するプログラムがうまく動作しません
指摘お願いします。
0717デフォルトの名無しさん2011/02/13(日) 13:27:38
× /n
○ \n
0718 ◆QZaw55cn4c 2011/02/13(日) 13:37:30
状況(時刻に注目):
http://hibari.2ch.net/test/read.cgi/tech/1295273862/87-88
http://hibari.2ch.net/test/read.cgi/tech/1295273862/110-111
http://hibari.2ch.net/test/read.cgi/tech/1295273862/127-128
http://hibari.2ch.net/test/read.cgi/tech/1295273862/167-168

ここで燃料投下
http://hibari.2ch.net/test/read.cgi/tech/1295273862/169

釣果
http://hibari.2ch.net/test/read.cgi/tech/1295273862/170-186
http://hibari.2ch.net/test/read.cgi/tech/1296984829/453-469

さらに燃料追加
http://hibari.2ch.net/test/read.cgi/tech/1296984829/472,476

釣果
http://hibari.2ch.net/test/read.cgi/tech/1296984829/477-480,482-517,523,524,

総括
http://www.youtube.com/watch?v=_eA1l0vQFxE
0719デフォルトの名無しさんNGNG?2BP(0)
include <stdio.h>
int main(void)
{
int vx, vy;
printf("整数vx:"); scanf("%d",&vx);
printf("整数vy:"); scanf("%d",&vy);

printf("vx + vy = %d\n", vx + vy);
printf("vx - vy = %d\n", vx - vy);
printf("vx * vy = %d\n", vx * vy);
printf("vx / vy = %d\n", vx / vy);
printf("vx %% vy = %d\n", vx % vy);

return (0);
}
これでもうまくいきません;
0720デフォルトの名無しさん2011/02/13(日) 14:12:29
うまくって何なの?
0721デフォルトの名無しさん2011/02/13(日) 14:14:21
include <stdio.h>

#include <stdio.h>
0722デフォルトの名無しさん2011/02/13(日) 14:54:47
>>718
よう人格障害
事件を起こす前に精神科逝け
0723デフォルトの名無しさん2011/02/13(日) 15:00:37
吐いたエラー載せない奴ってなんなの?
0724デフォルトの名無しさん2011/02/13(日) 15:03:48
>燃料さらに投下言いい放題
言いい放題って日本語じゃねーだろw
0725デフォルトの名無しさん2011/02/13(日) 15:15:56
日本人じゃないから問題ない
0726デフォルトの名無しさん2011/02/13(日) 15:23:30
>>718
超キチガイ、それがどうスレのC言語に関係はるんだ
関係ないことを書いてスレを荒らしまくろうってしてるんだろ
さすが超キチガイ、荒らすことしかしないんだな
0727デフォルトの名無しさん2011/02/13(日) 15:26:23
すごくどうでもいい
0728デフォルトの名無しさん2011/02/13(日) 17:28:56
あの質問なんですけど、C言語の習得スピードって人によって違うのでしょうか?
友達は、明快C言語入門編を一週間で読破、次の一週間で中級編も読破しました。
でその次の二週間でアルゴリズムなどの入門書を読破していました。
今ではコンソールプログラムの基礎的なものなら大抵書けるようになってます。
結局一ヶ月でC言語きわめてますよね?これって普通ですか?
0729デフォルトの名無しさん2011/02/13(日) 17:34:06
>>728
>コンソールプログラムの基礎的なもの

これがおみくじプログラムとかテストの平均点を計算するプログラムとかなら
一ヶ月目としては普通じゃないの。

bc より高機能な電卓だったり、XML のパーサなんかだったらちょっと凄い。
0730デフォルトの名無しさん2011/02/13(日) 17:35:43
>>728
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int i;
char *str[] = {"普通","早い",遅い"}
0731デフォルトの名無しさん2011/02/13(日) 17:37:41
1ヶ月なら独自コンパイラ開発するレベルだろ常考
0732デフォルトの名無しさん2011/02/13(日) 17:47:11
普通より遅かったとして、一ヶ月目くらいで悲観的になる必要は全く無いよ。
プログラミングの分野なんて様々だから、半年もすれば得意分野・専門分野に別れて、
単純に能力の優劣を比較出来ないようになるもんだ。
0733デフォルトの名無しさん2011/02/13(日) 18:02:54
>>718
なんでお前スレ荒らしてるの?w
そんなに悔しいの?w
0734デフォルトの名無しさん2011/02/13(日) 18:06:06
自分が中学生で C 言語を勉強しようとした時は、
専門用語が読めなくて、一ヶ月を待たずして挫折したなあ

参考書高かったのに・・・
0735デフォルトの名無しさん2011/02/13(日) 18:26:21
て言うか、なんで他人が一ヶ月で極めたとか気にしてんの?
0736デフォルトの名無しさん2011/02/13(日) 18:27:14
#include<stdio.h>

int dainyu(int);
int main()
{
int a;
dainyu(a);
printf("aの値は%d",a);
return 0;
}
int dainyu(int)
{
int a;
scanf("a--%d",&a);
return 0;
}

sample.c(12): error C2055: 型リストではなく、仮パラメーター リストが必要です。
ってエラーが出るんですけど関数からaの中身変えるにはどうすればいいんでしょうか?
0737デフォルトの名無しさん2011/02/13(日) 18:34:10
>int dainyu(int)
>{
>int a;
>scanf("a--%d",&a);
>return 0;
>}
ひどすぎるw
0738デフォルトの名無しさん2011/02/13(日) 18:36:37
>>736
必要最低限の修正で
#include<stdio.h>

int dainyu(int *a);
int main()
{
int a;
dainyu(&a);
printf("aの値は%d",a);
return 0;
}
int dainyu(int *a)
{
scanf("a--%d",a);
return 0;
}
07397362011/02/13(日) 18:48:34
修正しました。これでどうですか?
#include<stdio.h>

int dainyu(void);
int main(void)
{
int a;
a = dainyu();
printf("aの値は%d",a);
return 0;
}
int dainyu()
{
int a;
scanf("a--%d",&a);
return return a;
}
0740デフォルトの名無しさん2011/02/13(日) 18:52:49
>>738
ありがとうございました、参考書読み直します
>>739
どなたですか?最後のreturnに式が必要ですとエラーが出ました
0741736、7402011/02/13(日) 18:56:27
よく見たらreturnが重なってましたね、消したら正常に走りました。
勉強になります
0742デフォルトの名無しさん2011/02/13(日) 22:41:02
すみません、ヒントでもいいので教えていただけると幸いです。

id = (year*100000) + (month*1000) + (day*10) + (jikan-8)
特定の入力した年月日と時間を関数化し、そのreturnとして、IDを発行することになりました。
時間は18時未満限定なので、これで通用するのですが、関数化する事になって復元化が必要になりました。

呼び出しも関数からなのですが、復元する方法、あるいは分けて表示する方法、
year 年 month 月 day 日 の jikan 時間としたいのですが、いい手はないでしょうか。
単純に割っていくことも考えましたが、いまいちでした。

参考になるような計算式や言葉などありましたら、よろしくお願いします。
0743デフォルトの名無しさん2011/02/13(日) 22:43:32
10で割ったあまりとか1000で割ったあまりとか
0744デフォルトの名無しさん2011/02/13(日) 22:55:36
ハッシュ関数、MD5
かける数値は素数がいいよ
0745デフォルトの名無しさん2011/02/13(日) 22:57:37
>>742
年4桁
月2桁
日2桁
時2桁
分2桁
秒2桁

合計14桁なのでintに収まらない。
こういうのは構造体を使うとラク。
0746デフォルトの名無しさん2011/02/13(日) 23:01:03
>>745
ああごめん、分秒までは要らないのか。
だったら大きい方から商と剰余を求めていけば出てくるよ。
0747 ◆QZaw55cn4c 2011/02/13(日) 23:02:07
>>742
http://codepad.org/p34BxNub

>>745
そうですね。見抜けませんでした。
0748デフォルトの名無しさん2011/02/13(日) 23:05:33
>>742
struct hoge{
0749デフォルトの名無しさん2011/02/13(日) 23:07:14
ミスった
struct hoge{
uint 64_t id;
union{
uint16_t y;
uint16_t m;
uint16_t d;
uint16_t h;
}u;
};
0750デフォルトの名無しさん2011/02/13(日) 23:23:44
変数に
'@@'とか、文字を二つ以上格納したいのですが、

 切り捨てられました

とか言って格納できません。
何かj方法はありませんか?
0751デフォルトの名無しさん2011/02/13(日) 23:27:06
>>743-749
そんなに時間がたっていないのにありがとうございます。
構造体か、余りを使うかはこれから検証します。本当にありがとうございました。
0752デフォルトの名無しさん2011/02/13(日) 23:39:15
>>744
復元したいんだからダメじゃね?更に復元以前にハッシュ値が衝突しない保障はある?
素数が良いとか言う前にハッシュ関数とかMD5が何者か勉強しなおせwww
0753デフォルトの名無しさん2011/02/13(日) 23:39:46
>>745 >>747
秒までいるなんて書いてない。
8時 <= jikan < 18時なんだろ
0754デフォルトの名無しさん2011/02/13(日) 23:41:01
>>750
文字列(文字配列)に入れてください。
■ このスレッドは過去ログ倉庫に格納されています