90バイト
を使用できる場合stdio
、そのフォーマット機能を使用して比較を実行してみませんか?
main(a,b){scanf("%d%d",&a,&b);snprintf(&a,2,"%d",b-a);a&=63;putchar(51-!(a-45)-!!(a-48));}
ASCII互換のエンコーディングとリトルエンディアンを想定しています。
72バイト
指数はゼロに丸められますが、右シフトは(実際には)「切り捨てられます」。それは死んだ景品です。
main(a,b){scanf("%d%d",&a,&b);a-=b;putchar(a?a|=1,a/2-(a>>1)?60:62:61);}
65 79バイト
負の数の別の顕著な特性は、負のモジュロを生成することです。これは整数表現にまったく依存しません。それは私の8ビットexcess-127トースターでも動作します!ああ、そしてを使用できるconio
ので、2バイトを節約してみませんputch
か?今、TurboCのコピーしか見つけられなかったら...
main(a,b){scanf("%d%d",&a,&b);long long d=a;d-=b;putch(d?d|=1,d%2-1?60:62:61);}
編集:long long
よりも広いと仮定して大きな違いを処理しint
ます。
abs
を含めずに(コンパイラがそれを知っているため)のようなものを使用することも許可されていないのでしょうか。