例如,当我将float转换为int时:int i = (int)f;
f的原始位不是直接复制到i中,而是表示32的位被复制到i中。如果int转换的工作方式不同,并且只将f的原始比特复制到i中,那么它是否仍然称为强制转换?或者,强制转换是否意味着必须复制可由指定类型表示的最少数量的信息(本例中为int)?
我有一个宏,它需要能够接受任意整数或指针类型并将它们转换为unsigned long long。这样做的自然方法就是转换,这是可行的,但在默认的GCC警告下,它会产生“从指针到不同大小的整数的转换”,我想避免这种情况。避免警告的自然方法是使用中间强制转换,就像在(unsigned long long)(uintptr_t)x中那样,但在我的情况下
我真的觉得转换的概念令人困惑。short b = (short)34;
这两种说法在语言上有什么不同?我认为,在第一个语句中,int文字34直接存储在短变量a中,导致int文字34到短文字34的转换。在第二个例子中,由于强制转换指令,int文本34似乎首先被转换为短文本34,然后存储在短变量b中。我是正确的<