[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 06/11 11:18 / Filesize : 195 KB / Number-of Response : 805
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 21



1 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 06:24:18 ]
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 20
pc11.2ch.net/test/read.cgi/tech/1192455273/

教えて欲しいのではなく丸投げしたいならこちらへ
C/C++の宿題を片付けます 99代目
pc11.2ch.net/test/read.cgi/tech/1194262698/

367 名前:364 mailto:sage [2007/11/15(木) 18:35:18 ]
>>365
>>364>>361に対する皮肉のつもりなんだが

368 名前:デフォルトの名無しさん [2007/11/15(木) 18:36:04 ]
一応C言語を勉強していますが
いまいち理解できません
最初はこんなもんですか・・?

369 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 18:38:07 ]
>>366
時間のハンドリングの話じゃねーだろ。
なにを勉強すべきなんだって?

そもそも空いた時間で「再開発」やるって話じゃないのかね。
そんでそれは有用だよ、という。


370 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 18:39:09 ]
>>364

>>361にとっていい経験だ、て話で誰も「お前らもやるべき」なんて言ってないと思うけど。

371 名前:364 mailto:sage [2007/11/15(木) 18:46:07 ]
>>370
その解釈は誤り。
>>361の最後の文章は個人の経験の記述のように見せかけて最後の行で一般論に帰結させてる。
事実と意見を混同させる初歩的な手だ。

372 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 18:51:11 ]
>>368
いきなりスイスイ進めねーよ
よほどの天才でもなけりゃあさ
つうかさ、一応ってなに?普段は他の言語やってんの?
独り言じゃないならこっちが答えやすいように質問してよ

373 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 18:55:21 ]
「いちよう」とか言わないだけマシだと思え。

374 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 19:00:01 ]
だから無駄にならない学習方法を教えてくれよ。
有用なライブラリは何も考えずに利用すべきであって、中身を知ろうとはするなってことか?
きっとその人は一生理解出来ないだけだと思うが。

375 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 19:13:23 ]
ごめん俺エスパーじゃないから答えらんない



376 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 19:14:04 ]
自分のしたい事してれば良いじゃない
学習するって事に拘るなよ

377 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 20:22:46 ]
一応というかなんというか、
一日8時間みっちり学べば遅かれ早かれCの基礎はマスターできるんじゃないかね。

378 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 20:35:36 ]
>>374
何が無駄で何が無駄でないかは
その無駄かも知れない何かを学び
発展途上の途中で無駄だったな
と無駄に無駄と言ってしまっても
その先で無駄ではないと思った
時点で無駄も無駄では無かった
と学ぶことでしょう。

379 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 20:52:51 ]
文字列を仮想キーコードに変換するにはどうすればいいでしょうかv?

例:
string str="unk"

key( VK_U );
key( VK_N );
key( VK_K );


いっこいっこ調べるのが普通?しかしかなり面倒だ
if( str[0]=="a" ) key( VK_A );
if( str[0]=="b" ) key( VK_B );


if( str[0]=="z" ) key( VK_Z );

380 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 20:59:19 ]
配列に入れておけばいいんじゃないか?
for(i=0;c=str[i];i++)key( keycode[c-'a'] );

381 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:18:31 ]
ソートがわかるようでわからん・・・
配列に適当に数字おいて、一時的に保管しておく変数用意して、
ループの入れ子ループでカウントアップしつつ、
比較Aと比較Bで片方補完変数にいれてループ抜けて、
親ループでカウントアップさせて・・・ってやるんだけど、結果一番でかいのだけ連続して出力される('A`

382 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:19:34 ]
ソースうp

383 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:03:35 ]
ダメだ。アスタリスクを見るとポインタに見えてfor無限ループ(;;)を見ると顔文字に見えてしまったり
俺の頭はどうにかしてしまったのだろうか

384 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:05:00 ]
->も然り

385 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:08:42 ]
頼むから俺に聞くとき、変数 i を使わないでくれ
印刷したソース逆から見る俺の身にもなってくれ
なんでここで否定してんだって何度も思うじゃねえか



386 名前:デフォルトの名無しさん [2007/11/16(金) 00:12:28 ]
プログラムの仕事につくには英語を最低限身につけないといけないんですか?

387 名前:デフォルトの名無しさん [2007/11/16(金) 00:15:37 ]
>>386
最低限、英語で書かれた技術文書は、読める必要が必ずでてくる。
ただ、技術文書は平易な英語で書かれているから、すぐなれると
思うよ。

出世して、英語の契約書読む羽目になるとまた別だが。

388 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:19:20 ]
完全に読めなくても、だいたいの意味はわからないか?
見たこと無い単語が出てきたら辞書引く程度で間に合うよ。

389 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:31:24 ]
ときどき
printf("")のprintf文をいれなかったらセグメンテーションエラーでて
printf文をいれたらセグメンテーションエラー消えることがあるんですけど
これはどういうことなんでしょうか?

390 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:34:50 ]
バグです(多分バッファオーバフローの)

391 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:47:38 ]
>>381
ソートもアルゴリズムの分野だけど
理解できないんなら
有名どころのソート(6個くらい)
丸覚えしとけば良いじゃん。

まぁ、バブルソートぐらいは理解しといた
ほうが良いとは思うけど。

392 名前:392 [2007/11/16(金) 00:49:25 ]
ある処理の実行時間の測定を次のようにしました。

start = clock();
なんらかの処理
end = clock();

time = (float) (end - start) / CLOCKS_PAR_SEC;
pirntf("実行時間%d\n", time);

これでtimeを出力すると、
536870912, 2147483648, 1073741824, 1610612736, 0
のうちのどれかの値に-ついたりつかなかったりして、出力されます。
「なんらかの処理」を変えても 上記の値しかでません。
どうしてこうなるのか分かりません。教えてください。

393 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:55:20 ]
>>392
time という変数名がマズイ
time が実数型であるにもかかわらず %d で出力している
typo がある
の全てが原因でしょう

394 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:58:52 ]
clock()が返すのはclock_tだが、startとendの型は?

395 名前:392 mailto:sage [2007/11/16(金) 01:04:08 ]
>>393
timeという変数について調べてみます。
%fでしたね@@;
ありがとうございました!!

>>394
clock_tで宣言しています。
回答ありがとうございます!



396 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:18:02 ]
しかし深夜にならないとプログラム作る気おきないのはなぜなんだろう

397 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 07:14:36 ]
あるある

398 名前:デフォルトの名無しさん [2007/11/16(金) 16:49:36 ]
文字列を倍精度に変換する関数strtodにバグがあるようでうまく変換してくれません。

const char* pszInput = "9999999999999999999999999999999999999999999999999999999999999999999999999999999999";
char* pszStop;
double dOutput;
dOutput = ::strtod(pszInput, &pszStop);
::printf("input:%s\noutput:%f\nstop:%s\n", pszInput, dOutput, pszStop);

output:9999999999999999600000000000000000000000000000000000000000000000000000000
000000000.000000
となってしまいます。ERANGEも検出されません。
これはよく知られたバグなのでしょうか?また対策はあるのでしょうか?

よろしくお願いします。

399 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 16:51:47 ]
>>398
「有効桁数」でググってきな

400 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 17:12:46 ]
9999999999999999999999999999999999999999999999999999999999999999999999999999999999
約 10^83

有効桁数 83 桁の数値を扱うために最低限必要なビット数を x とすると
2^(x-1) < 10^83 < 2^x
x = ceil( 83 / log2 )
x = ceil( 83 / 0.301 )
x = 276
1 バイトを 8 ビットとして最低 35 バイトは必要

>>398 が自分で実装するのは無理だろうからライブラリを探した方がいいでしょう

401 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 17:14:01 ]
>>400 は83桁じゃなくて82桁だった

402 名前:デフォルトの名無しさん [2007/11/16(金) 19:18:42 ]
質問:C言語の「volatile」の名前の由来について

質問です。
C言語には「volatile」という記号が あります。
これを記入すると、該当部分でのコンパイル時の最適化を抑制できます。
しかし、なぜ volatile(移り気な、気まぐれな)なのでしょうか。
最適化を抑制しているのですから、むしろ「変化しない」という意味に なるはずです。
つまり、volatile では なく、「un-volatile(不揮発の、変化しない)」になるべきでは ないでしょうか。
教えてください。よろしくお願い致します。

403 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 19:29:20 ]
volatile 変数は移り気で勝手に変化するから、最適化せずに毎回ちゃんとメモリを読みにいかないと正しい結果を得られない、と考えてはいかが

404 名前:デフォルトの名無しさん [2007/11/16(金) 19:31:36 ]
快活に計算動作するから
最適化などで省略して定数になったり計算無効になったりしたらこちらは変化無い

405 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 20:57:33 ]
最初に名前を入力させ、5件分の入力が行われるか、endと入力されたら、その分だけ出力させる
ただし名前入力の最初にendが入力された場合は、その旨のメッセージを出力して再入力させてください
名前は最大15文字入力とする

これのやり方を教えてください



406 名前:デフォルトの名無しさん [2007/11/16(金) 21:10:12 ]
初歩的な質問スミマセン

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
char *cp=NULL;
void *ptr=NULL;

if((ptr=(char*)calloc(10,sizeof(char)))==NULL){
printf("error\n");
exit(EXIT_FAILURE);}

if((cp=strchr(fgets(ptr,100,stdin),'\n'))!=NULL){
*cp='\0';}

printf("%s",ptr);

return EXIT_SUCCESS;
}

半角文字10文字分のメモリをcalloc関数で確保して
fgets関数で10文字以上入力しましたが
普通10バイト分の配列を用意しfgets関数でそれ以上の文字を入力すると
オーバーフローが起き、強制終了しますよね?
ですがこれでは起きないんです、何故でしょうか

407 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:13:04 ]
>>402
どっかで勝手に値が変えられる可能性があるから volatile だな。

408 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:56:34 ]
>>406
ひーぷに余裕があるからじゃね?

409 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 22:10:54 ]
>>405
丸投げは宿題スレへ
pc11.2ch.net/test/read.cgi/tech/1194262698/l50

410 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 22:12:14 ]
>>406
>オーバーフローが起き、強制終了しますよね? 

そうとは限らない
他のところで使ってるメモリ領域を黙って書き換えるだけの場合もある

411 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 22:16:27 ]
>>409
あっすいませんでした

412 名前:デフォルトの名無しさん [2007/11/16(金) 22:17:24 ]
>>408
あ、そういうことか!!
どうもありがとうございました

413 名前:デフォルトの名無しさん [2007/11/16(金) 22:37:56 ]
>>402
「最適化しないだって?」
「ああ、今日はそんな気分なんだ」
「まったく気まぐれな奴だよ」

414 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 22:52:46 ]
>>402
#define donotoptimize volatile

415 名前:デフォルトの名無しさん [2007/11/16(金) 22:56:56 ]
違うとおもいますよ。
綿密な計画と設計思想に基づいてボラタイルに したんです。
気まぐれで ボラッたわけでは ありません。



416 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:23:58 ]
なぜmainはmainという名前にしたんだろう、startの方がよくない?と思ったことはあります

417 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:25:04 ]
だったらstopも要ると思わないか

418 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:36:50 ]
多分main,subで分けて書いたからじゃないかな。

419 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:46:05 ]
>>417
関数の名前にしちゃうとその辺の理屈あわせが難しくなるよね
>>418
ああなるほど

関係ないけどmain"メソッド"には今でも違和感がある…

420 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:36:08 ]
mainメソッド……てJAVA?

421 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:07:26 ]
Cから始めた自分には違和感なかったけど、よくよく考えたら不思議な名前のメソッドだな。

422 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:17:27 ]
mainと言いつつ、主要な処理は他のところでやってるしね。

423 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:22:01 ]
主要な流れ、ということじゃないか?
主要な処理を他でやっていても、
全体通してのメインの流れを定めるのがmain関数

int main(){
first_step();
second_step();
third_step();
return 0;
}

424 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 03:51:36 ]
構造体のメンバの数って制限あるのですか?

425 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 09:08:36 ]
そりゃあるだろうが、限界まで使ったこと無いな。




426 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 09:18:17 ]
ハード側の限界にぶつかったことならあるが、規格の限界は知らないな

427 名前:デフォルトの名無しさん [2007/11/17(土) 19:17:14 ]
MFCって何?

428 名前:デフォルトの名無しさん [2007/11/17(土) 20:24:04 ]
>>427
ググれ

429 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:33:33 ]
HTMLのform解析をしたいのですが、
<form action="./int.php" method="post">
<input type="text" name="id" value="C">
<input type="submit" name="button" value="押す">actionは./int.php
methodはPOST
typeはtext、nameはbutton valueはC
というように<>内をそれぞれ抽出したいのですが、どのようにしたら出来ますでしょうか?

430 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 22:36:57 ]
オイラだったら perl でやる。rubyも好いらしい。


431 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 22:42:25 ]
字句解析はCよりPerlを勉強した方がはるかに楽だよ

432 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 23:01:25 ]
>402

volatileは「最適化抑制」という意味じゃない。
「値が外的要因(ハードウェアなど)によって変化しうる」という意味。


433 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 23:05:27 ]
>429

Win系だったらMFCや.NET Framework、UNIX系ならPerlを使ったほうがいいな。

Cでやるしかない、という場合だったら、methodなどのキーワードの後の"...;"の中を一々抽出するしかないな。


434 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 23:08:04 ]
>>429
どっかから正規表現のライブラリ持ってくるのが楽じゃない?

435 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 23:11:01 ]
HTMLのライブラリだって、探せばありそう。



436 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 23:19:45 ]
>>435
たとえばWindowsならMSHTMLとかだな。

437 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 23:34:44 ]
レスありがとうございます。
まずはCだけで頑張ってみます。

438 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:04:55 ]
>>と>=で処理する式が違うんですけど、
プログラムを作るとき、どう区別すべきですか?

439 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:08:11 ]
違うってわかってるんなら、区別できてるってことじゃないか

440 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:20:31 ]
for(;i<10;)

for(;i<=9;)
の違いがわからんってこと?

441 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:23:01 ]
>>は非常に左が大きいだけど
>=は以上ってことだし。

442 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:29:57 ]
if(A>>B)    C=A
elseif(B>>A)   C=B
elseif(A>=B) C=A+1;
elseif(B>=A) C=B+1;

の条件分岐を作りたいんだけど
区別どうすればいいのかってね。




443 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:33:32 ]
>if(A>>B) C=A
 
AがBより非常に大きいってことを言いたいのなら、
コンピュータは 「非常に」 なんて曖昧な条件は理解できないので、
どのくらいかを具体的に指示してやらないとだめ。

if (A >= B + 1000) C = A;
とか
if (A >= B * 10000) C = A;
とか。

444 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:34:25 ]
>>>は非常に左が大きいだけど
C言語でそんな比較演算子は無い
単なる大小比較( > )にし問題を書き換えなさい

445 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:59:48 ]
きっとビットシフトだ



446 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 07:12:45 ]
良くも悪くもコンピュータは正直だから、命令されたことしかやらない。
「〜よりは大きいが常識の範囲内で」とか言われても判断できるわけがない。

447 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 07:37:40 ]
おれもビットシフトだと思って、何のことだか全然わからんかった。
「非常に左が大きい」て何だよw


448 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 07:38:50 ]
以前にも同じような質問してきた奴が居たから俺はわかった

449 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 08:23:39 ]
unsigned A; の下位 B ビット以外が0であることを
判別する関数をつくりなさい。(10点)


450 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 08:30:08 ]
int f(unsigned A, int B) { return !(A >> B); }

451 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 08:38:36 ]
bool func(unsigned A, unsigned B) {return A >= (1 << B);}

452 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 08:44:45 ]
後出しなのに・・・

453 名前:デフォルトの名無しさん [2007/11/18(日) 09:15:50 ]
すみません、まだC初めて一週間足らずの初心者ですが質問させてください。

課題で
void printIPAddress( unsigned int address )
{
printf("%d.%d.%d.%d",
(address & 『 @ 』 ) >> 24,
(address & 『 A 』 ) >> 16,
(address & 『 B 』 ) >> 8,
(address & 『 C 』 ));
}
ア.0x000000ff イ.0x0000ff00 ウ.0x00ff0000 エ.0xff000000

とありまして、@〜Cにア〜エから適切なものを選択して関数を完成させるというものです。
ネットなどで色々検索して、答はたぶん@:エ A:ウ B:イ C:アじゃないかと思ってるのですが
どうしてそれが正解?なのかがわかりません。(そもそも正解かどうかすらわかりません)

考え方としては例えば@:エなら0xff000000は11111111 00000000 00000000 00000000で
>>24というのが右に24bit(3byte)移動するという意味なんだろうか?と思ってるんですが
3byte移動したら11111111が一番→にきて後ろについてたたくさんの0は前に行くんでしょうか?
それがどうして正解?なんでしょうか?他のもの(例えば0x000000ffとか)が入ってはいけないんでしょうか?
&を使ってるという事は論理積を理解できてないとこの問題は理解できないんだと思うのですが
本や解説を見てる時はふんふんなるほどと思っても実際こうやって問題にされると全くわからなくてお手上げです…

長文すみませんがどなたかご教授お願いします。
もしスレチならどこか該当スレに誘導お願いします。
(最初ふらっとCスレに書き込もうとしたら1000スレ達成しちゃってました…)

454 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:27:51 ]
>>453
論理演算とビットシフトでググればわかりそうなもんだが…

&はand演算だから、左右どちらも1なら真=1になる。そうでなければ0になる。
例えば、11001100 & 11000000の結果は11000000になる。
これを右に6ビットシフトすれば00000011が得られる。

455 名前:デフォルトの名無しさん [2007/11/18(日) 09:38:37 ]
アドレスは、
11100010  上位ビット
01100011  
00100100  
11011100  下位ビット

のように格納されている

0ビットシフトさせてff = 11111111とand取れば下位ビットが出てくる
8ビットシフトさせてff = 11111111とand取れば下から二つ目が出てくる



456 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:42:04 ]
>>452
インライン展開するときに、Bが定数なら>451の方が効率がよくなる。

457 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:49:08 ]
効率とか言うレベルじゃなくて、単純に間違ってるだけだろw

458 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 10:03:48 ]
11000000 10101000 00000001 00000001 (3232235777 = 192.168.101.1)
11111111 00000000 00000000 00000000 (4278190080 = 0xff000000)
----------------------------------
11000000 00000000 00000000 00000000 (3221225472 = and後)
00000000 00000000 00000000 11000000 (192 = 24ビット右シフト後)

ビットシフトした後には0が入る。つまり1ビットシフトはx2か/2と同等。
これで理解できなければ諦めてくれ。

459 名前:453 mailto:sage [2007/11/18(日) 11:44:35 ]
なるほどっ!
すごくわかりやすい解説ありがとうございます。
ビットシフト自体は皆さんのご説明ですぐに理解できたのですが

「だからどうして@:エ、A:ウ・・・・・になるの?」というところが
なかなか理解できずレスに時間かかりました><

ただ少しばかり>>458さんに確認も含めた質問があるのですが
もしご覧になってたらお時間あればレスいただけませんか?
一行目の(192.168,101.1)というIPアドレスが最初はどこから出てきたのかさっぱり???だったのですが
これはわかりやすく例をあげるために適当?に書いてくれたのかな?と解釈しました。それでよろしいでしょうか?
あと、同じくカッコの中の3232235777や4278190080、3221225472という数字がイマイチピンとこないのですが
これはそれぞれ110000001010100000000010000001という2進法の数値を10進法で現してるものでしょうか?
(ググレ!でしたらすみません・・・ビット換算表はぐぐって今見てるのですが数字が大きすぎて・・・orz)

結局、最初の質問であった「どうして@:エA:ウ・・・になるのか?」という質問についてはやっと理解できました。
みなさんご親切にどうもありがとうございました^^


460 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 12:08:51 ]
>>459
ああ、スマン間違ってる。458の2進数表記だと192.168.1.1になるね。

IPアドレス自体は例として適当に書いただけ。
数字の部分は1バイトずつにそれぞれ192、168、1、1と当てはめたものを
4バイトのunsigned int型変数addressの10進数として表現したもの。

ちなみにこの処理は欲しい部分を切り取るのによく使われる方法で「マスク」等と呼ばれたりする。
まあ頑張ってや〜。

461 名前:デフォルトの名無しさん [2007/11/18(日) 12:51:48 ]
C言語によるリスト構造について質問させてください。

連結リストに末尾からデータを蓄えて指定した数字を削除し
削除後のリストを画面に表示するプログラムを作りたいのですが、
手元にある参考書を見たり、ネットで調べても分らなかったので
どなたかご教授お願いします。

462 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 12:58:05 ]
www.google.co.jp/search?q=%E3%81%94%E6%95%99%E6%8E%88
ネットで調べてわからなかったらここで聞いてもわからないんじゃない?

まずは指定した数字が何番目にあるか判定するプログラムを作ってみて、
それができたら一つ前のデータと一つ後ろのデータを連結するように書いてみればいいんじゃない?
宿題スレにいって丸投げするのが一番早いと思うけど。

463 名前:デフォルトの名無しさん [2007/11/18(日) 13:04:03 ]
>>462
ありがとうございます。宿題スレいってみます。

464 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:18:47 ]
www.uploda.org/uporg1118116.txt.html
こういうプログラムを作ったのですが
これに「平均点順に並び替えて表示する」という操作を加えたいのですがよくわかりません。
お願いします。

465 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 17:31:47 ]
>>464
そのプログラムを自分で作れるなら出来ると思うけな



466 名前:459 mailto:sage [2007/11/18(日) 17:32:31 ]
>>460さん、レスありがとうございました^^
マスクという処理方法については
名前だけ知ってたものの具体的にどういうものかまだ知りませんでした。
数字についてはまだピンときてないので引き続き2進数10進数16進数についても色々勉強してみます。


また何かわからない事ありましたら皆さんよろしくお願いします!

467 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 18:05:59 ]
>>465
よくわからないでございます






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<195KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef