相关疑难解决方法(0)

C++中"long","long long","long int"和"long long int"有什么区别?

我正在从Java过渡到C++,并对long数据类型有一些疑问.在Java中,要保存大于2 32的整数,您只需编写long x;.但是,在C++中,它似乎long既是数据类型又是修饰符.

似乎有几种使用方法long:

long x;
long long x;
long int x;
long long int x;
Run Code Online (Sandbox Code Playgroud)

此外,似乎有一些事情,如:

long double x;
Run Code Online (Sandbox Code Playgroud)

等等.

所有这些不同的数据类型之间有什么区别,它们都有相同的目的吗?

c++ long-integer

176
推荐指数
5
解决办法
33万
查看次数

在C/C++中,混合型整数数学所需的最小类型上传是什么?

我的代码依赖于uint16_t,int32_t/uint32_t和int64_t值的混合数据.它还包括一些较大的位移位常数(例如,1 << 23,偶数1 << 33).

在计算int64_t值时,如果我仔细地转换每个子部分(例如,将uint16_t值向上转换为int64_t)它可以工作 - 如果我不这样做,计算通常会出错.

我最终得到的代码如下:

int64_t sensDT = (int64_t)sensD2-(int64_t)promV[PROM_C5]*(int64_t)(1<<8);
temperatureC = (double)((2000+sensDT*(int64_t)promV[PROM_C6]/(1<<23))/100.0);
Run Code Online (Sandbox Code Playgroud)

不过,我想知道,如果我在这里撒上类型的石膏太杂乱而且太慷慨了.我不确定1 << 8是否需要演员(虽然没有一个,1 << 23不会导致错误的计算),但也许他们也这样做.对于像这样的计算的上升值,多少钱太多了?

编辑:所以很清楚,我问的是最小适当的投射量是什么 - 正确功能需要什么(为了清晰起见,可以添加更多的投射或修改器,但从编译器的角度来看,确保正确计算的必要性是什么?)

EDIT2:我使用C-风格转换,因为这是从一个Arduino型嵌入代码库(其本身使用的铸件这种风格的话).从具有期望效果的角度来看,它们看起来是等效的,因此我使用了现有的编码风格.

c++

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

标签 统计

c++ ×2

long-integer ×1