小编Dov*_*Dov的帖子

没有括号的函数sqrt()返回奇怪的值

我只是偶然在Octave中键入以下内容:

sqrt 25
Run Code Online (Sandbox Code Playgroud)

并回来了:

ans =
    7.0711   7.2801
Run Code Online (Sandbox Code Playgroud)

使用括号,sqrt(25)返回正确的结果.没有括号的情况会发生什么?MATLAB是否共享相同的行为或仅特定于Octave?我没有MATLAB所以我无法检查.

matlab octave

1
推荐指数
2
解决办法
333
查看次数

修改const值的"undefined-ness"机制

我已经读过,它在某些C标准(可能是99?)中未定义,当修改const时会发生什么.但是一位学生向我提供了一些我修改过的代码.

我看不出常量变量的地址有什么特别之处a.我验证了它&a并且b是相同的,因此编译器不会巧妙地指向其他位置.然而,当我分配时*b,const值不会改变.

我没有运行优化.当我使用-g标志进行编译以进行调试并进入代码时,我得到了我期望的结果(变量的内存位置发生了a变化).然而,下面提供的代码并未反映更新后的价值a.

即使在调试模式下,这个temp现在也被放在寄存器中,没有优化吗?

#include <iostream>

using namespace std;

int main(){
    const int a = 15;
    cout << a << '\n';
    int * b= (int*)&a;
    cout << &a << "\n";
    cout << b << "\n";
    *b = 20;
    cout << *b << '\n';
    cout << a << '\n';

    int x = a;
    cout << x << '\n';
    x = *b;
    cout << …
Run Code Online (Sandbox Code Playgroud)

c++ pointers const undefined-behavior constantfolding

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

使用rdtsc对intel进行汇编器基准测试给出了奇怪的答案,为什么?

前一段时间,我问了一个关于堆栈溢出的问题,并展示了如何在C++中执行rdtsc操作码.我最近使用rdtsc创建了一个基准函数,如下所示:

inline unsigned long long rdtsc() {
  unsigned int lo, hi;
  asm volatile (
     "cpuid \n"
     "rdtsc" 
   : "=a"(lo), "=d"(hi) /* outputs */
   : "a"(0)             /* inputs */
   : "%ebx", "%ecx");     /* clobbers*/
  return ((unsigned long long)lo) | (((unsigned long long)hi) << 32);
}

typedef uint64_t (*FuncOneInt)(uint32_t n);
/**
     time a function that takes an integer parameter and returns a 64 bit number
     Since this is capable of timing in clock cycles, we won't have to do it a
     huge …
Run Code Online (Sandbox Code Playgroud)

x86 assembly intel microbenchmark rdtsc

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

如何在C++中正确等待条件变量?

尝试在 Linux 下用 C++ 创建异步 I/O 文件读取器。我的例子有两个缓冲区。第一个读取块。然后,每次主循环时,我都会异步启动 IO 并调用process()它来运行当前块的模拟处理。处理完成后,我们等待条件变量。这个想法是异步处理程序应该通知条件变量。

不幸的是,这notify似乎发生在之前wait,而且这似乎不是条件变量wait()函数的工作方式。我应该如何重写代码,以便循环等待异步 io 完成?

#include <aio.h>
#include <fcntl.h>
#include <signal.h>
#include <unistd.h>

#include <condition_variable>
#include <cstring>
#include <iostream>
#include <thread>

using namespace std;
using namespace std::chrono_literals;

constexpr uint32_t blockSize = 512;

mutex readMutex;

condition_variable cv;

int fh;
int bytesRead;

void process(char* buf, uint32_t bytesRead) {
  cout << "processing..." << endl;
  usleep(100000);
}

void aio_completion_handler(sigval_t sigval) {
  struct aiocb* req = (struct aiocb*)sigval.sival_ptr;

  // check …
Run Code Online (Sandbox Code Playgroud)

c++ asynchronous condition-variable wait

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

为什么C++初始化列表不适用于this->

在C++中,我们可以在构造函数中使用赋值来初始化对象,或者我们可以使用初始化列表.对于const数据成员或作为对象的数据成员,初始化列表是唯一的方法.但是,当参数的名称与数据成员的名称匹配时,this-> name(name)不起作用.如果名称相同,有没有办法做到这一点?

class A {
private:
  int _x,y;
public:
  A(int x, int y) : _x(x), // this works
   this->y(y) // this does not work
  {}
};
Run Code Online (Sandbox Code Playgroud)

我想也许这是一个操作顺序问题所以我试过:

(这 - > Y)(y)的

但那也不对.

c++ initializer-list

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

错误地致力于本地掌握。如何将更改移到分支?

我进行了许多更改,可能会破坏代码。我以为自己在分行,但是当我下定决心时却是主。有什么方法可以将4个本地提交移动到本地分支然后再推送?

git branch

0
推荐指数
2
解决办法
2321
查看次数

Java应该与国际变量一起使用.为什么我不能让它运作?

我一直想使用希腊变量.我试过中文和希腊文.我曾尝试过emacs和Eclipse.保存在utf-8中.什么都行不通.

public class I18NTest {
    private static double ? = 3.14159265358979?
    public static void main(String args[]) {
        System.out.println(?);
    }

}
Run Code Online (Sandbox Code Playgroud)

pi的线路上存在编译器错误.

java unicode internationalization

-2
推荐指数
1
解决办法
54
查看次数