例如:
int a = 12;
cout << typeof(a) << endl;
Run Code Online (Sandbox Code Playgroud)
预期产量:
int
Run Code Online (Sandbox Code Playgroud) 我目前正在研究一个进行数值计算的C++项目.绝大多数代码使用单精度浮点值,并且完全可以正常工作.因此,我使用编译器标志来使基本浮点文字单精度而不是双精度,这是默认值.我发现这使得表达式更容易阅读,我不必担心在某个地方忘记'f'.但是,我时不时地需要双精度计算提供的额外精度,我的问题是如何将双精度文字输入到这样的表达式中.到目前为止,我尝试的每种方法都首先将值存储在单个精度变量中,并将截断值转换为双精度值.不是我想要的.
我到目前为止尝试过的一些方法如下.
#include <iostream>
int main()
{
std::cout << sizeof(1.0E200) << std::endl;
std::cout << 1.0E200 << std::endl;
std::cout << sizeof(1.0E200L) << std::endl;
std::cout << 1.0E200L << std::endl;
std::cout << sizeof(double(1.0E200)) << std::endl;
std::cout << double(1.0E200) << std::endl;
std::cout << sizeof(static_cast<double>(1.0E200)) << std::endl;
std::cout << static_cast<double>(1.0E200) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
具有单精度常量的运行会产生以下结果.
~/path$ g++ test.cpp -fsingle-precision-constant && ./a.out
test.cpp:6:3: warning: floating constant exceeds range of ‘float’ [-Woverflow]
test.cpp:7:3: warning: floating constant exceeds range of ‘float’ [-Woverflow]
test.cpp:12:3: warning: floating constant exceeds …Run Code Online (Sandbox Code Playgroud) 在这个回应中:
这个程序是给出的:
std::vector<int> vi{ 0, 2, 4 };
std::vector<std::string> vs{ "1", "3", "5", "7" };
for (auto i : redi::zip(vi, vs))
std::cout << i.get<0>() << ' ' << i.get<1>() << ' ';
Run Code Online (Sandbox Code Playgroud)
我不知道它的类型auto i是什么,使得重用专业知识和从示例中学习变得更加困难.以下是改变auto i成char i收益
In function ‘int main()’:|
/data/cbworkspace/TestZip/TestZip.cpp|14|error: cannot convert ‘boost::iterator_facade<boost::zip_iterator<boost::tuples::tuple<__gnu_cxx::__normal_iterator<int*, std::vector<int> >, __gnu_cxx::__normal_iterator<int*, std::vector<int> > > >, boost::tuples::cons<int&, boost::tuples::cons<int&, boost::tuples::null_type> >, boost::random_access_traversal_tag, boost::tuples::cons<int&, boost::tuples::cons<int&, boost::tuples::null_type> >, long int>::reference {aka boost::tuples::cons<int&, boost::tuples::cons<int&, boost::tuples::null_type> >}’ to ‘char’ in initialization|
/data/cbworkspace/TestZip/TestZip.cpp|14|warning: unused …Run Code Online (Sandbox Code Playgroud) 我有一些关于放在f文字值旁边的问题.我知道它将它定义为float但是我真的需要它吗?这是否2.0f * 2.0f更快或编译任何不同2.0 * 2.0?float a = 2.0;编译的方式是否与编译方式不同float a = 2.0f;?