当我尝试使用static_cast将双精度数*转换为整型数*时,我得到以下错误:
invalid static_cast from type ‘double*’ to type ‘int*’
代码如下:
#include <iostream>
int main()
{
double* p = new double(2);
int* r;
r=static_cast<int*>(p);
std::cout << *r << std::endl;
}
我知道在double和int之间
在static_cast、dynamic_cast、reinterpret_cast和const_cast中,只有static_cast能够返回理想类型的对象,而另一种类型只能返回指针或对表示的引用。为什么会这样呢?
示例:
int y = 3;
double z = reinterpret_cast<double> (y);//error
double z = reinterpret_cast<double&> (y);//ok
double z = static_cast<double> (y);//but this is ok!!!
cons
它们之间的区别是什么
int a;
// a gets some value
double pi = static_cast<double>(a)/3;
和
int a;
// a gets some value
double pi = double(a)/3;
你见过后者吗?在我看来,我在Stroustrup编写的一些代码片段中看到了它,但我找不到参考资料。
从我所收集到的数据来看,将分数分配给一个双,将不能正常工作,除非分子或分母是一个浮点数(所谓“不正常工作”,我的意思是小数被切断,我知道数字当然不能作为分数存储)。但是,在将它们赋值给另一个双变量之前,我尝试过将it类型转换为double,但它仍然不起作用。这不是什么大问题,因为我只是做了一个小的工作,但为什么会这样呢?
我在测试时添加了一些代码。
#include <iostream>
using namespace std;
double convert(int v) {
return v;
}
int main() {
int a = 5;
in
在转换操作符中将类Int的成员数据转换为long double时,代码中出现了错误。但我不明白为什么会这样?
#include<iostream>
using namespace std;
class Int
{
private:
int number;
public:
Int() : number(0) // no argument constructor
{ }
Int( int i) : number(i)
以下代码将导致Visual中的CS0266:
double x = 1.23;
int y = x;
但是,下面的代码在Visual中编译,并导致隐式强制转换为int:
double x = 0;
ReadOnlyCollection<double> y = new ReadOnlyCollection<double>(new double[3] { 1.23, 2.34, 3.45 });
foreach (int z in y)
{
x += z;
}
为什么这会被区别对待?我能导致编译失败吗?
我预计,在IEnumerable上循环时,隐式强制转换为int将
我如何从一个双**转换为一个康斯特双**
我用的是根和反褶积函数。在运行时,我会收到一个错误:
无法初始化类型为'const Double_t **‘(又名'const Double_t **')的参数,其l值为'Double_t **’(又名'double **')
我将参数定义为:
Double_t ** resp = new Double_t * [ybins];
for (int f = 0; f < xbins ; f = f+1){
for (int i = 0; i < ybins; i = i+1)
我想在下面的代码中将整数转换为双精度:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a , b;
double c;
cout<<"Enter two integers: ";
cin>>a>>b;
try
{
if (b == 0)
throw 0;
}
catch (int a)
{
我想使用Qt的mappedReduced和lambda。 对Make QtConcurrent::mapped work with lambdas的回答似乎表明,这不可能直接实现,但可以通过使用std::function来实现。 但是,虽然我可以以这种方式构建编译器接受的mapped()调用,但我不知道如何以编译器希望编译的方式将该原则应用于mappedReduced()。这必须如何表述? 简单的例子: int cap = 1;
std::function<int(char)> mlf = [cap](char c){ return static_cast<
我正在进行自己的C++项目,并希望执行以下场景:
将一些值写入long int数组
从double数组中读取long int数组int double数组
因此,我编写了如下代码:
long int lArray [100];
double dArray[100];
for (int i = 0; i < 100; i ++)
lArray[i] = i * i;
double *dPointer = lArray;
for (int i = 0; i < 100; i ++)
dArray[i] = *(dPointer++ + 1);
但是,当我
可能重复:
我主要是一个C#开发人员,所以很多使用语法(如:(type)variable )进行显式转换,以(int)100.0004d为例。因此,在用C++编写代码时,我通常使用相同的语法。但是,在其他情况下,我看到(甚至使用)代码,使用语法type(variable)实现相同的强制转换,并以int(100.0004)为例。
我只是好奇这两种方法之间有什么区别,以及使用这两种方法是否有任何含意。
示例:
double someDouble = 100.00456;
// Cast the double using the (type)variable syntax
int first
C++11中是否存在这样的操作:
std::complex<int16_t> integer(42,42);
std::complex<double> doub(25.5,25.5);
std::complex<double> answer = integer*doub;
错误是
error: no match for ‘operator*’ (operand types are
‘std::complex<short int>’ and ‘std::complex<double>’)
std::complex&
我找到一个数组的中间位置,但是如果它是一个偶数数组,我必须找到两个中间数的平均值。我将变量初始化为double,但它仍然无法工作。我已经尝试过设置精度,并且正在找到正确的值。
void median (int *pScores, int numScores)
{
insertionSort(pScores, numScores);
int mid = 0;
int midRight = 0;
int midLeft = 0;
double midEven;
//if array is odd
if (numScores % 2 !=
我试图通过一个函数分配内存,并将正确的数据类型存储在该内存中,但如果没有(* int ),我的int就无法工作,如何将其应用于double?(*double)不能工作。
#include <stdio.h>
#include <stdlib.h>
int newInt ();
double newDouble ();
int main() {
int userChoice;
int userValue;
int *intPtr;
double *doublePt
下面的代码是我试图使用shared_ptr以多态形式使用的代码。
using namespace std;
class Base
{
public:
int ClassID; // Used only by derived classes
string Name;
shared_ptr<Base> Parent; // For TreeCtrl-like hierarchy
}
class DerivedA : public Base
{
public:
double Length;
double Width;
double Hei
我有一个类,它可以对一个原始指针定义一些操作。
例如,这个类被称为向量。
class Vector
{
public:
explicit Vector(double *ptr_, int size_)
:ptr(ptr_), size(size_)
{
}
// some operation change data in ptr
void notConstOperation()
{
ptr[0]=ptr[0]+1;
}
// some operation do not change
我有一个大小为M的矩阵[n_rows, n_cols]和一个x和y像素坐标的列表。我用这些坐标来画一个二值图像。这是我的代码:
std::vector<std::vector<double>> x;
std::vector<std::vector<double>> y;
// fill x and y
std::vector<std::vector<unsigned int>> M(n_rows, std::vector<unsigned int>(n_cols));
std::vector<std
d是double类型的数据,p是指向它的指针。当它们被显式地分别强制转换为int时,对于指针p的强制转换,会产生以下错误。:从double*到int的强制转换失去精度
#include<iostream>
using namespace std;
int main()
{
int i,j;
double d=3.5;
double* p=&d;
i=(int)d;
j=(int)p; // this line gives the error
cout<<i<<" "<<j