English 中文(简体)
这一双重点是什么?
原标题:What s the point of this double casting?
  • 时间:2023-12-29 23:26:41
  •  标签:
  • c
  • casting

I found these conversions from uint16_t to int32_t here https://gist.github.com/mux2000/5a0db5be900ca8b7f2d528fb37968b38.

int32_t ac6 = (int32_t)(int16_t)bmp180_cal_data[AC6], 
        ac5 = (int32_t)(int16_t)bmp180_cal_data[AC5],
        mc = (int32_t)(int16_t)bmp180_cal_data[MC],
        md = (int32_t)(int16_t)bmp180_cal_data[MD];

<代码>bmp180_cal_data is a range of uint16_t。 因此,在从不同大小的未签名和副手转换时,首先应投向原始价值的大小(bmp180_cal_data[x],然后投向新的尺寸。

这是否正确? 如果是,为什么?

问题回答

我认为,根据具体执行行为,如果<代码>bmp180_cal_data的数值高于INT16_>,就试图做“正确”的事情。 将这一编号改为int16_t在此情况下取决于执行,但共同行为是仅以两种补充形式解释借方,这样就可归纳为负数(在将签名改为未签名时如何处理负数)。 然后,它利用第二版扩大至32个轨道,从而保持负数。

如果它们直接投到<条码>int32_t,那么16倍的数值就只是保留其原有价值,因为它们符合32条轨道,而不是消极的。

因此,如果原始数值为65535,则该数值为-1。 当使用双重投射物时,将使用单一投射物的655

The single cast of (int16_t) is useful to map the values above INT16_MAX to negative values (in a common implementation defined manner): [32,768 ... 65,535] to [-32,768 ... -1].

<代码>(int32_t)的投放没有用途,使代码WET。 功能性的定义是明确的,与(没有)<代码>(int32_t)相同。

也许,作者们根本不认识到不需要<代码>(int32_t)?





相关问题
Fastest method for running a binary search on a file in C?

For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Tips for debugging a made-for-linux application on windows?

I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

Good, free, easy-to-use C graphics libraries? [closed]

I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...

Encoding, decoding an integer to a char array

Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...

热门标签