我对这个问题很好奇,也许我完全错了,但是当你将一个类型转换为另一个类型时,它是否会查看内存/值,然后将该内存/值视为新类型?
例如:
char Letter = 'A';
int iLetter = static_cast<int>(Letter);
//iLetter is 65
如果这是正确的,它会查看“Letter”的内存位置/值,然后将该值更改为您需要转换成的值吗?我通过将所有值想象成整数,然后被转换为char / struct / class等来形成这个理论。
希望这是一个完整的问题,我只是想深入了解如何使用值/信息进行类型转换以将其转换为新值等。
Letter
的值。如果你想知道Letter
的值是否在这里被改变了,答案是“不”。 - Sam Varshavchik=
运算符在运行时进行查看。 - user207421char
是一个小整数,除非原始值实际上超出了目标类型的范围,否则在这样的转换中不会改变值。 - M.Mint iLetter = static_cast<int>(Letter)
和int iLetter = Letter
都可能生成一个movsbl
指令 (https://godbolt.org/g/b3cBw5)。 - kfsone