小编Dan*_*ügt的帖子

带有浮点数的std :: cout

我正在使用visual studio 2015来打印两个浮动数字:

double d1 = 1.5;
double d2 = 123456.789;

std::cout << "value1: " << d1 << std::endl;
std::cout << "value2: " << d2 << std::endl;

std::cout << "maximum number of significant decimal digits (value1): " << -std::log10(std::nextafter(d1, std::numeric_limits<double>::max()) - d1) << std::endl;
std::cout << "maximum number of significant decimal digits (value2): " << -std::log10(std::nextafter(d2, std::numeric_limits<double>::max()) - d2) << std::endl;
Run Code Online (Sandbox Code Playgroud)

这打印出以下内容:

value1: 1.5
value2: 123457
maximum number of significant decimal digits (value1): 15.6536
maximum number of significant decimal digits …
Run Code Online (Sandbox Code Playgroud)

c++

6
推荐指数
2
解决办法
2万
查看次数

模板基类的调用方法

以下代码在 Visual Studio 2015 中编译(即使使用 /Za 选项)。它不能在 gcc 和 clang 上编译。

struct A
{
};

template<typename T>
struct B
{
  void f()
  {
  }
};

template<typename T>
struct C : B<T>
{
  void f()
  {
  }

  void g()
  {
    B::f();
  }
};

int main()
{
  C<A> c;
  c.g();

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

演示

gcc - 错误:“模板结构 B”在没有模板参数的情况下使用
clang - 错误:“B”不是类、命名空间或枚举

哪种编译器符合标准规范?规格中有任何含糊之处吗?

编辑
我添加了f()一个C更相关的示例。

c++ gcc clang visual-c++ visual-studio-2015

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

互斥锁如何在低级别等待解锁?

我想知道互斥锁(或其他锁定实现)如何实现锁定函数的wait functionallity.我的意思是,是一个将mutex.lock调用队列的cpu指令,是仅在OS中实现的还是什么?

在我做的测试中,我认为这个等待函数只在OS层完成,并且创建了某种旋转,检查是否可以继续锁定,如果没有让线程进入休眠状态.是对的吗?

非常感谢你.

c++ multithreading mutex locking

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