前の月 / 次の月 / 最新

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2009-07-16 Thu

zip を暗号化したり復号したりしてみた [D言語]

zip を暗号化したり復号したりするコードを書いた。

std.zip と組み合わせて使えるかと思ったらだめっだった。

 import zip.crypt;
 ciphertext = encrypt(password,planetext,crc); //暗号化したり
 planetext  = decrypt(password,ciphertext,crc); //復号する

2009-07-07 Tue

条件演算子を含む式を左辺に [D言語]

条件演算子・・・厨?

おまけ:
   C++ では、条件演算子を含む式を左辺に持ってくることも可能なのは覚えておいても損はない。
でも使うなよ?絶対使うなよ?

(a < b ? a : b) = c;

a = 1, b = 2, c = 3 のとき a に c が代入される。

D では駄目だった。

(a < b ? a : b) = c; //Error: conditional expression a < b ? a : b is not a modifiable lvalue

無理やりやってみる。

import std.stdio;

ref T _(T)(ref T x)
{
    return x;
}

void main()
{
    int a=1,b=2,c=3;

    _(a < b ? a : b) = c;
    writefln("a = %d, b = %d, c = %d",a,b,c);
}

実行結果

a = 3, b = 2, c = 3

ref関数を使うと、それっぽくできた。

過去ログ

2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12