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


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

【高速化】ビット演算 0x02



1 名前:デフォルトの名無しさん [2006/09/16(土) 09:46:26 ]
前スレ
ビット演算
pc8.2ch.net/test/read.cgi/tech/1123918075/


関連スレ
アセンブラ… (゜□゜) ↑アッー!↓
pc8.2ch.net/test/read.cgi/tech/1148402614/


関連情報
Hacker's Delight
ttp://www.hackersdelight.org/

ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか
ttp://www.amazon.co.jp/exec/obidos/ASIN/4434046683

ビットを数える・探すアルゴリズム
ttp://www.nminoru.jp/~nminoru/programming/bitcount.html

Bitboard
ttp://en.wikipedia.org/wiki/Bitboard

736 名前:725 mailto:sage [2008/06/26(木) 19:15:01 ]
725です。

すいません。
皆さんにレスしていただいておいて申し訳ないのですが、
高速化について調べていたらGPGPUというのが見つかりました。

グラボに計算をさせるというものなのですが、上手くツボにはまれば
CPUの何十倍もの速度がでるそうです。

囲碁がはたしてグラボに計算させるのに向いてるのかどうかわかりませんが、
SSEは一旦忘れて、GPGPUについて調べてみようと思います。
グラボも3〜4万だせば結構いいのが買えるみたいです。

とりあえずGPGPUスレとCUDAスレにいって雰囲気つかんできます。

皆さんのレスには感謝しています。
失礼しました。


737 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 19:47:50 ]
そっち行ってもいいならFPGAっていうテもあるかもしれん。


738 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:47:07 ]
5年ほど前にFPGAでオセロの石を返す部分を作ったが
普通にCPUで計算するより遅かった


739 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 22:43:05 ]
>>736
CUDAするなら前もって、GPUに計算させたい部分
設計しておけ
わしは今日から3日でモンテカルロをCUDAで解けるように
勉強する

740 名前:725 mailto:sage [2008/06/27(金) 00:03:02 ]
>>739
どもです。

ところで最新ハイエンドGPUはピーク性能1TFLOPS超えるらしいですね。
HDDもテラバイトの物が出てるし、時代はもうテラなんですねぇ。

741 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 00:18:19 ]
>>740
Radeon HD3870とGeforce9800GTXもってるけど
両方とも労せず2000スレッド以上生成して並列に計算できるよ

742 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 00:32:16 ]
>>725
一命令ではできないが,シフトしたいビット数を n として n/8 と n%8
とに分けてシフト命令使って後で合成すれば可能

743 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 04:00:39 ]
>>738
enumの様に贅沢にintを丸々一つ石に配分した方が良かったかもしれないね。

744 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 07:18:19 ]
ベクトル演算を利用するなら 閉曲線の内側か外側の判定で巻付判定法を応用するといいように思うな

ビット演算じゃないけど



745 名前:デフォルトの名無しさん [2008/07/11(金) 01:01:51 ]
あげ

746 名前:デフォルトの名無しさん [2008/07/20(日) 15:56:27 ]


747 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 20:41:05 ]
今どきビット演算で高速化とかw

748 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:07:22 ]
プログラミングマニュアル1・基本仕様ガイド

・式

ってとこに詳しく書いてるだろ...読みもしないで不思議とか言うな

749 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:07:59 ]
誤爆すいません

750 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 10:17:23 ]
こやつめ!

751 名前:デフォルトの名無しさん [2008/08/01(金) 03:07:44 ]
2^a を渡されたときaを求める方法で何かいい物はありませんか?
なるべくループやlogを使わない物がいいです

752 名前:750 mailto:sage [2008/08/01(金) 03:26:58 ]
>>751
追記、1≦a≦9

753 名前:デフォルトの名無しさん [2008/08/01(金) 03:27:44 ]
>>752
自分の名前間違えた>>750じゃなくて>>751

754 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 04:04:46 ]
513個の配列持って、その中に1〜9を入れておく。[1]=なし、[2]=1、[3]=なし、[4]=2、・・・
[512]=9 演算はこれが最速。



755 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 04:06:47 ]
サイズが問題なら、
if( n & 0x200 ) return 9;
if( n & 0x100 ) return 8;
・・・
if( n & 0x002 ) return 1;

756 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 04:15:16 ]
x86ならBSF

757 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 04:39:50 ]
char bit[256] = {1,2,0,3,0,0,0,4, 略 };

bsf(int n) {
int r;
if ((r = bit[n&255])) return r;
n >>= 8;
if ((r = bit[n&255])) return r + 8;
n >>= 8;
if ((r = bit[n&255])) return r + 16;
n >>= 8;
if ((r = bit[n&255])) return r + 24;
return 0; //解なし
}

758 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 04:41:33 ]
こんなのどうよ?
bsf(bits){
bits-=1;
int num;
num = (bits >> 1) & 03333333333;
num = bits - num - ((num >> 1) & 03333333333);
num = ((num + (num >> 3)) & 0707070707) % 077;
return num;
}

759 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 04:52:26 ]
>>754-758
ありがとうございます。みんなカッコイイ

760 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 05:52:52 ]
>>757
char bit[256] = { 0,1,2,0,3,0,0,0, 4,0,0,0,0,0,0,0, 略 };
の間違いだった。
んで結果を-1すれば合うんじゃないかな。

761 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 06:23:57 ]
こんなんでどよ
int f(unsigned n){
    int a=1;
    unsigned b;
    n>>=2;
    b = n>>4;if(b)a+=4,n=b;
    b = n>>2;if(b)a+=2,n=b;
    return a+n;
}


762 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 10:45:43 ]
"_\0\5\1\10\6\2__\4\7_\3"[n*0xCA030FF>>28];


763 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 14:50:59 ]
お前頭いいなー、でも
"_\1\6\2\011\7\3__\5\010_\4"
じゃないか

もう少し小さいハッシュもあった
"\1\2\3\010\6\4\011__\7\5"[n*0x5300000>>28];

764 名前:762 mailto:sage [2008/08/01(金) 16:32:34 ]
あー間違えてたーthx
そしてそっちのハッシュのほうが優れているね。



765 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 16:55:45 ]
なるほど、ハッシュってそういう使い方するんだ。

766 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 17:47:48 ]
>>762-763
異次元過ぎてついて行けないのだが解説頼む

767 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 21:25:31 ]
俺もわかってないが
gperfとかで完全ハッシュ関数を作るのと同じように
(文字列ではなく)特定の数字から対応する特定の数値への完全ハッシュ関数を作っているんだと思う。
どうやって導いたかなんて知らん。

768 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 01:40:13 ]
へええ
左シフトしたときに
あるビット範囲(この例だと28ビット目から31ビット目)が
シフト回数ごとにバラけるようにしているのか

シフト回数  (n*0x5300000)のbit28〜31の値
  1        0
  2        1
  3        2
  4        5
  5        10
  6        4
  7        9
  8        3
  9        6

んで配列テーブルをlookupすると。

完全ハッシュ関数って、元が異なれば必ず先が異なる関数のことだっけ。
じゃないとこれ使えないよな。

小さいというのは先の範囲、つまり今回は28〜31の4ビットのことか。
確かに小さいほうがメモリとキャッシュに優しいですな。

という感じであってますか。

>どうやって導いたかなんて知らん。

俺も知りたい。

769 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 01:52:05 ]
頭良すぎる

770 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 01:56:27 ]
2chってすげーな

771 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 10:03:58 ]
ビット演算ってたしかにすごいけど、
ソースに組み込むときは、その演算の意味とメリットなど
ビット演算を導入した経緯や思想も書いてほしい・・・

ソース理解に時間がかかったり、修正が大変・・・
まあ、俺がお馬鹿なのかもしれないけど。

あと、763って751からの流れなんですか?
それとも別の流れ?

772 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 10:14:13 ]
最後の2行から見ても明らかに

>まあ、俺がお馬鹿なのかもしれないけど。

が正解。

773 名前:デフォルトの名無しさん [2008/08/02(土) 10:17:05 ]
このスレって頭のいい奴もいるけど、
771みたいなバカもいる。
バカはROMっていろ!死ね771!!

774 名前:それは俺か (w mailto:sage [2008/08/02(土) 10:59:13 ]
まあ、バカにレスする奴はもっとバカだけどな。



775 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 11:02:09 ]
1、2、4、8、16、32、64、128、256、512の完全最小ハッシュ値を作る。
ttp://www.ic-net.or.jp/home/takaken/nt/slide/hash.html
これか?
>>762は本当に頭がいい。>>763の書き込みがなかったら
意味も解らずスルーするところだった。

776 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 12:58:48 ]
512の完全ハッシュを作ってそれを1〜9のテーブルに掛けるって事?
分かった気がする。

777 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 13:59:12 ]
>>775
でも、保守する奴が >>762 みたいに頭いいとは限らんから、
仕事のプログラムなら >>754-755 あたりのほうがいいと思う。

778 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 14:04:14 ]
当たり前。こんなのは所詮パズル。商用コードでこんなの書けない。
>>762みたいなのが許されるのは趣味のプログラミングだけだよ。

779 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 16:19:14 ]
後は極端に処理速度がネックになってるところとか、
ビックリするほど容量が無いプラットフォームとか、
コンパイラが準備されてなくてアセンブラで書かなきゃいけないような場合、
更にRISCみたいに見た目と実行順が違うような環境だと
読む量が少ない短いコードが逆に役に立つ。
自慢を理由に書くと間違いなく死を招く。

780 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 16:20:19 ]
コメントで書いておけば十分じゃないかな。
今でもまだまだ、速度やサイズ重視の分野はあるし。だいぶ少なくはなっているけど。


781 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 16:32:12 ]
現状、用途として大きそうなのはシェーダー周りか。

782 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 16:36:45 ]
画像処理ならいくらでも速度欲しいけどな

783 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 16:49:03 ]
昔、VUアセンブラの実装をしたが、ライブラリの増加により俺の約700byteのプログラムが
入らなくなり削りに削って「400byteだけ下さい!」と上司に嘆願したのは懐かしい思い出。

784 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 18:57:37 ]
>>777
それは同意だけど、 >>762 のエッセンスを抜き出して、わかりやすくすれば
いいんじゃないかな

おそらく、2^a を掛けると aビット左シフトする、というのは誰にも自明だけど
1〜9の値にマップするマジック定数がややトリッキーかと

なら、見た目にわかりやすいようシフト数を4倍にして、(ついでに右シフトにして)
こんな感じでどうだろうかね(64ビット整数が使えることが前提だけど^^)

/* assume that n is 2^a (1<=a<=9) */
 return (0x9876543210LL / ( n * n * n * n )) & 0xf;








785 名前:デフォルトの名無しさん [2008/08/03(日) 02:24:01 ]
一番右の1を探すとき~a&(a-1)でできますよね、じゃあ一番左の1を探すときは何かありませんか?

786 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 02:37:33 ]
掛け算が4回・割り算が1回ってのが、演算量的に・・・ 俺が8bitに慣れてるからかな?
64bit整数があるにしても、nが32bitならn*nで64bitでしょ。中間結果でbitが失われるんじゃ?

787 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 02:40:55 ]
>>785 754とか755じゃダメなの?もっと速い/小さいのってこと?

788 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 02:55:56 ]
>>785
関係ないがa&(-a)で右端の一ビットを得られるぞ、左端は無理じゃないか

789 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 03:17:47 ]
www.nminoru.jp/~nminoru/programming/bitcount.html

790 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 03:41:51 ]
>>787-789
どうもです、今見た資料に左端を操作する命令列は存在しないって書いてあったorz

791 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 03:56:21 ]
左右反転するビット演算子でもあればね

792 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 03:59:50 ]
a = ( ( a >> 16 ) & 0x0000ffff ) | ( ( a << 16 ) & 0xffff0000 );
a = ( ( a >> 8 ) & 0x00ff00ff ) | ( ( a << 8 ) & 0xff00ff00 );
a = ( ( a >> 4 ) & 0x0f0f0f0f ) | ( ( a << 4 ) & 0xf0f0f0f0 );
a = ( ( a >> 2 ) & 0x33333333 ) | ( ( a << 2 ) & 0xCCCCCCCC );
a = ( ( a >> 1 ) & 0x55555555 ) | ( ( a << 1 ) & 0xAAAAAAAA );

793 名前:784 mailto:sage [2008/08/03(日) 17:00:12 ]
>>786
もちろん変数n は64ビット長
LP64なら long型だと思ってもらえばいいです

演算量については、いまどきの投機実行するCPUなら
下手に条件判定入るよりは速いと思うけど、・・・まあ状況次第ですね

794 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 17:25:07 ]
nが64bitでも、n*n*n*n の中間結果はbit失われるでそ。



795 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 18:31:31 ]
でも、仕事に使うとなると、
「シンプルにしようや」
で終わってしまうんですよね〜
そうすると、754や755に落ち着くのかな・・・

796 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 19:39:21 ]
そりゃそうだよ。

よほど特段の理由が無い限り、シンプルが一番。

797 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 19:51:28 ]
裸が一番いいのと一緒だ

798 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 21:10:39 ]
>>794
2^9まででしょ?

799 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 21:12:54 ]
は?

800 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 21:51:46 ]
0x1 * 0x1 => 1
0x3 * 0x3 => 9
0x7 * 0x7 => 0x31
0xf * 0xf => 0xe1
0xff * 0xff => 0xfe01
0xfff * 0xfff => 0xffe001
0xffff * 0xffff => 0xfffe0001
0xfffff * 0xfffff => 0xffffe00001

これに規則性みたいなものを感じるんですが、
何か法則があるんでしょうか?


801 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 21:54:51 ]
初めの3つはともかく、
9*9=81
99*99=9801
999*999=998001
と同じようなもんだろ

802 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 22:06:41 ]
よくわからんが、ビット演算とかって、日本人よりも
インド人のほうが面白い発想しそうだね

803 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 22:09:36 ]
>>800-801
2進数に考えれば、最初から綺麗に並ぶよ。

1 * 1 = 1
11 * 11 = 1001
111 * 111 = 11001
1111 * 1111 = 11100001
11111 * 1111 = 1111000001

804 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 22:16:49 ]
0xffff * 0x10000 => 0xffff0000
0xffff0000 - 0xffff => 0xfffe0001
特に面白い事実はなさそうだが



805 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 22:21:59 ]
99*99=9801
これが国民機ナンバーの正体かー
すると8801は?
93.8136 * 93.8136 = 8800.99
収束しないのか

806 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 22:22:36 ]
収束?

807 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 22:25:25 ]
ごめん適当言った

808 名前:デフォルトの名無しさん [2008/08/03(日) 22:34:48 ]
無理数ね。

809 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 23:10:51 ]
λ... PC-8001, PC8201, PC-6001, &c. ...

810 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 23:48:03 ]
獣の数字にまつわる屁理屈と同じようなもんだな
あえて8801に意味を見出すなら99*99-1100とかなんとか

811 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 23:49:53 ]
9801-1100 = 8701だな
俺頭大丈夫k

812 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 00:08:26 ]
PC9801が長いこと繁栄したのは99*99=9801
こういった力(ちから)を持つ数字が隠されていた影響に違いない。
その証拠に型番が9821に変わろうとしたとたん没落した。
きっと9801のままなら永遠の存在だったんだよ。

813 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 00:11:55 ]
>>798 そうか、9bitのハッシュのエレガントな解法だったのね。ごめん。
ハッシュって、必要の都度、bit数見極めて作らなきゃいけないんだな・・・

814 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 01:24:27 ]
実際に仕事でも使用可能な、
1.実用性がある
2.比較的わかりやすい
ビット演算のアルゴリズムって何だろうね・・・



815 名前:デフォルトの名無しさん [2008/08/04(月) 01:50:11 ]
名前がつくぐらい有名になればいいんじゃないかな。
例えばコメントに
// 762氏ハッシュ
とか書けるぐらいに。


816 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 01:56:23 ]
すみません、
>"\1\2\3\010\6\4\011__\7\5"[n*0x5300000>>28];
の頭の"\1\2\3\010\6\4\011__\7\5"がいまいち良くわかりません。


817 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 02:06:28 ]
ただの文字列リテラルだよ

818 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 02:06:59 ]
コメントに、「ハッシュがどうの」なんて書く奴ばっかだからダメなんだよ。
コメントに絶対に書かなきゃいけないのは、>>751-752だよ。
どういう実装をしたかのコメントなんて二の次三の次。

それなのに仕様のコメントを怠ったままで「すげーテクニック使ってるんだぜ」的なコメントを残しても意味なし。
そんなものを残すぐらいなら、(最低限の>>751-752の他に)assertでも使った範囲チェック入れとけ。

もちろん、>>762のやり方に対するコメント(完全ハッシュ関数とテーブル)はあった方が良い。
けど、仕様についてのコメントの方がはるかに重要。

819 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 03:06:57 ]
日本語でおk

820 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 03:45:03 ]
日本人でおk

821 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 04:32:52 ]
二本イレマスカ?

822 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 04:59:25 ]
イマレス

823 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 08:02:17 ]
#if 0 // オリジナルのロジック
...;
#else // 速度重視で書き換え
...;
#endif

824 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 08:15:04 ]
"..."[...]という書き方をこの流れで始めて知った

何でこのスレにいるかって?
知るために見ているのさ



825 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 09:53:07 ]
K&Rの頃のCをやってた人間からすれば常識

826 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 12:37:57 ]
>>816 文字リテラル "abc"とかならキャラ型の配列だって判るでしょ。
スペース(0x20)より小さい値のcharは 「\8進数」 で書く約束になってる。
"\1\2\3・・・"は、char xxx[ ]={ 1, 2, 3, ・・・, 0 };という配列が生成される。

827 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 13:33:40 ]
>>826
>スペース(0x20)より小さい値のcharは 「\8進数」 で書く約束になってる。
なってない。

828 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 17:24:05 ]
\001 \002 \017 とかだよ。 Hexの場合は \xhh と書く約束になってる。
俺のはLSIC85とか adUc51とか、クミコ系ばっかりで、ANSIは知らないけど。

829 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 18:13:00 ]
0x20以上の値で使ってはいけないという決まりもないわけで。

830 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 22:15:16 ]
最下位8bitについてなら左右を逆転するコードあった筈
こんな感じだったと思うけど、よく覚えてないや

x:src y:dest
s=(x*0x02020202)&0x84422010
t=(x<<3)&0x420
y=(s+t)%1023

831 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 22:49:39 ]
>>792で既出だべ。


832 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 23:59:20 ]
>>828
\n \t \r とかもあるわけで。

833 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 00:45:34 ]
>>832
は?

834 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 01:21:35 ]
文字リテラルが配列の名前???
どうも「文字リテラル+[]」が良くわからん。
ビット演算うんぬんではなく・・・
C言語でこれを書いてコンパイルが通るのか?

どうもこのスレに付き合うには、大学などできちんと学ぶか
元々、この手のことが好きじゃないとついていけませんね・・・

社会人になってから、プログラムを覚えたアホアホな俺の
プリンみたいな脳みそでは、だめかorz



835 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 01:37:17 ]
なんでワカラン??? 大学とか関係ないぞ。

char * buf = "01234567";
char a = buf[0];

が判れば、

char a = "01234567"[0];

だって判るだろ。


836 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 01:41:46 ]
char a = 0["01234567"];

こんなのもある。これが直感的に納得しづらいというのはワカランでもないけど、

char a = "01234567"[0];

こっちは普通だべ。







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

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

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