小编jpr*_*e14的帖子

抓取8字节字的高4字节

我在倍增0x1d400 * 0xE070381D.

当我在计算器上执行此操作时,结果是 0x00019A4D26950400

当我尝试在cpp中实现这个时,我就拥有了.

long long d;

d = 3765450781 * 1d400;
Run Code Online (Sandbox Code Playgroud)

这段代码给出的结果是d = 0x26950400.这只是底部的4个字节,其他一切都发生了什么?

我试图隔离上面的4个字节0x00019A4D并将它们保存到另一个变量中.如何才能做到这一点?

如果我可以得到乘法显示所有8个字节,我想要做的是隔离上面的4个字节是:

d = d & 0xFF00; //0xFF00 == (binary) 1111111100000000

d = d>>8;
Run Code Online (Sandbox Code Playgroud)

这会有用吗?

c c++ long-long

3
推荐指数
2
解决办法
2486
查看次数

从 if 语句中初始化 C++11 线程

我在 C++11 中实现线程,并且每当我从 if 语句中启动线程时都会遇到编译问题。

我收到的错误是:

file.cpp: In function ‘int main(int, char**)’:
file.cpp:16:2: error: ‘thread1’ was not declared in this scope
  thread1.join();
Run Code Online (Sandbox Code Playgroud)

当我将线程移到 if 语句之外时,一切都会编译并运行良好。

我正在使用 g++ 版本 4.8.2 并使用 -std=c++11 编译器选项。

这段代码不会编译

#include <unistd.h>
#include <thread>
#include <iostream>

void testthread() {
    std::cout << "Thread was run" << std::endl;
}

int main(int argc, char**argv) {

    if (true) {
        std::thread thread1(testthread);
    }
    sleep(1);
    thread1.join();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码按预期编译并运行

#include <unistd.h>
#include <thread>
#include <iostream>

void testthread() {
    std::cout << "Thread was …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading compiler-errors g++ c++11

0
推荐指数
1
解决办法
1827
查看次数

标签 统计

c++ ×2

c ×1

c++11 ×1

compiler-errors ×1

g++ ×1

long-long ×1

multithreading ×1