是否存在一个浮点数据类型(例如double)确保所有+, - ,*,/,%等数学运算都假定为双操作数?
如果故事比这更复杂,是否有描述这些规则的资源?我不应该问这样的问题,总是明确地转换int到double当公式的结果double.这是我正在考虑的一些方程式.我故意不在我的系统上编译和运行,因为这是可能依赖于编译器的类型.
int a(1), b(2), c(3);
double d(4.);
double result1 = a + b/d + c; // equal to 4 or to 4.5?
double result2 = (a + b)/d + c; // equal to 3 or to 3.75?
double result3 = a/b + d; // equal to 4 or to 4.5?
Run Code Online (Sandbox Code Playgroud) 我在不同的地方看过N3690,N4140和N4296.我猜它是N4140,因为它是在2014年底发布的.N4296似乎有不像C++ 14那样的东西,就像折叠表达式一样.
正如您从其他问题中可以看到的,许多人可能已经得到了答案.你能把这些知识分享给我吗?
这听起来可能是一个愚蠢的问题但是:以下链接是官方最终确定的c ++ 11标准吗?(或至少是最新版本) n3337
这是我第一次访问open-std.org,我不确定这是否是持有C++标准的官方网站.
只需仔细检查一下.(我最后一次引用一个不熟悉的网站(cplusplus.com)并不是一个愉快的体验.)
底层位是否被"重新解释"为浮点值?或者是否有运行时转换来产生最近的浮点值?
字节序是任何平台上的一个因素(即浮点数的字节顺序与整数不同)?
不同的宽度类型如何表现(例如,int to float与int to double)?
语言标准对这种演员表/转换的安全性有何保证?通过强制转换,我的意思是static_cast或C风格的演员.
反向浮点转换为int转换(或双转换为int)怎么样?如果浮点数保持小幅度值(例如,2),那么当解释为int时,位模式是否具有相同的含义?
我有以下代码,它工作得很好(除了它很慢的事实,但我并不在乎).将infile的全部内容写入outfile似乎并不直观.
// Returns 1 if failed and 0 if successful
int WriteFileContentsToNewFile(string inFilename, string outFilename)
{
ifstream infile(inFilename.c_str(), ios::binary);
ofstream outfile(outFilename.c_str(), ios::binary);
if( infile.is_open() && outfile.is_open() && infile.good() && outfile.good() )
{
outfile << infile.rdbuf();
outfile.close();
infile.close();
}
else
return 1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
任何见解?
我不确定在初始化后以下列方式在char数组中会出现什么:
char buf[5]={0,};
Run Code Online (Sandbox Code Playgroud)
这相当于
char buf[5]={0,0,0,0,0};
Run Code Online (Sandbox Code Playgroud)