读书人

一道面试题

发布时间: 2012-03-11 18:15:38 作者: rapoo

一道面试题,紧急求助。

C/C++ code
#include <stdio.h> int main() { long long z = 1744489229594965; int a, b, c, x; b = (z&1) << 4; a = b--; c = a - b; x = b - a; char o[32]; while (z) { x = x&a? a&b : c+x; if (!(z/a&b^x)) { o[z&b^x] = (char) x+6*a+b/5-c; z = z/a/a; } } printf("%sn", o); getchar();return 0; } 


被问到其中的 x = x&a? a&b : c+x; 这句可以怎么简化?(What does this do? Can you realize the same function with a simpler expression?)

比较着急,非常感谢。

[解决办法]
C/C++ code
//容易得到a,b,c,x的初始值:a = 15;  //a=0x0Fb = 16;  //b=0x10c = 1;   //c=0x01x = -1;  //x=0xFFFFFFFF//可知(a&b)是常数0, c是常数1x = x&a ? a&b : c+x;==>x = x&a ? 0 : x+1;==>x = x>15 ? 0 : x+1;//虽然第一次运算时,x+1的值为0,但并不表示x恒为0。
[解决办法]
x=x&a?0:1+x

读书人网 >C语言

热点推荐