gpt4 book ai didi

c - Borland C/C++ 将 short 转换为 unsigned int

转载 作者:太空宇宙 更新时间:2023-11-04 06:43:43 25 4
gpt4 key购买 nike

borland 如何将 short 转换为 unsigned int?

#include <stdio.h>

void main() {
short sNum = 57000;
unsigned short usNum = sNum;
unsigned int uiNum;

printf("\r\nsNum = %d", sNum);
printf("\r\nusNum = %u", usNum);

//cast 1: short -> unsigned int
uiNum = sNum;
printf("\r\nuiNum = %u", uiNum);

//cast 2: unsigned short -> unsigned int
uiNum = (unsigned short)sNum;
printf("\r\nuiNum = %u", uiNum);
}

给我输出:

sNum = -8536
usNum = 57000
uiNum = 4294958760
uiNum = 57000

为什么我在 cast 1: short to unsigned int 中没有得到 57000(在转换为 unsigned int 之前是否没有隐式转换为 unsigned short ?)?

最佳答案

您的代码中只有一个转换:

uiNum = (unsigned short)sNum;

您称为强制转换的其余部分在 C 语言中称为(隐式)转换。转换中没有隐藏的中间步骤。如果您想遍历中间类型,可以通过强制转换或赋值将其强制转换为该类型的变量。

其次,行:

short sNum = 57000;

具有实现定义的行为。您应该避免将值转换(隐式或通过转换)为值不适合的带符号类型的代码。

最后,你不应该问这样关于“C/C++”的问题。没有这样的语言,两种语言的类型系统(即使是普通整数类型)也有很大不同,因此许多问题的答案会因您实际使用的语言而异。

关于c - Borland C/C++ 将 short 转换为 unsigned int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4296565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com