【问题标题】:C++ cout function printC++ cout 函数打印
【发布时间】:2016-05-13 17:27:25
【问题描述】:

为什么要使用这个函数:

uint64_t rot_xor(uint64_t a1, uint64_t a2) {
    int size = sizeof(a1)*4;
    cout<<" "<<"size:"<<bitset<8>(size).to_string()<<" "<<size;
    int shift;
    uint64_t output = 0;
    cout<<endl;
    for (shift = 0; shift < size; shift++)
        if(a1&(1<<shift)) {
            output ^= (a2 << shift) | (a2 >> (size - shift));
            cout << bitset<64>(output).to_string()<<endl;
        }
return output;
}

打印输出:


  1. :大小:00010000 20
  2. : 0000000000000000000000000000000010110000110000011111001011111001

【问题讨论】:

  • 为什么不呢?你期望它打印什么,你传递给它什么?
  • 你可以在那里看到ideone.com/zkqMPO
  • int size = sizeof(a1); cout(size).to_string()(size).to_string()
  • @AgentIvan:请查看您之前的评论。代码可读吗?请用代码编辑您的问题/帖子,使其更具可读性。
  • 你希望这个函数做什么?预期的行为是什么?

标签: c++ cout


【解决方案1】:

第 1 点

如果问题是为什么您的程序打印 20 是因为似乎是 sizeof(uint64_t) * 4 而不是 32,那是因为在调用 rot_xor 之前的几行有一个:

cout << hex

实际上,您发布的链接中可以看到的确切输出是

size:00100000 20

或 32 的二进制和十六进制表示。

第 2 点

我不知道您的预期输出应该是什么样的。

【讨论】:

    猜你喜欢
    • 2013-12-06
    • 2011-01-05
    • 2011-01-29
    • 1970-01-01
    相关资源
    最近更新 更多