*(uint16_t *)"200"
返回什么?据我所知,"200"
引用了一个指向字符数组的指针,所以指针指向'2'
字符,然后通过ascii字符转换为整数,但我不明白最终的*
字符所做的是什么。Dereencing a cast
回答
打破复杂的表达式成碎片:
char const* a = "200";
uint16_t* b = (uint16_t*)a;
uint16_t c = *b;
a
是指向字符串文字('2'
)的初始字符。
当我们通过浇铸获得b
,我们说“假装被指向的数据实际上是一个uint16_t
(或其阵列)。
当我们解引用b
获得c
,我们获得” uint16_t
在解决b
“。
所以,它重新解释前两个字符的字符串文字("20"
)的(两个字节,16个比特),作为uint16_t
。
因此,b将二进制数为20的00110010'00110000转换为16位十进制数,即12748? –
@JacobDenson实际上它的12338,假设你的计算机有很大的endian(非常可能),那么字节解释的顺序是相反的。 – this
应该提到的是,如果地址不适合'uint16_t',行为不是由C标准定义的。 –
- 1. Can not cast a generic type to list in C#
- 2. static cast或c style cast
- 3. Cast a hashtable.Keys into List <int> or other IEnumerable <int>
- 4. cast iqueryable
- 5. Cast FullTypeName
- 6. ListBoxItem Content Cast Impossible
- 7. Is cast castable to class
- 8. Cast String date
- 9. const char * to int cast?
- 10. Cast String to TextView
- 11. C cast和char signedity
- 12. cast float to wchar_t win32
- 13. boost :: shared_ptr和dynamic cast
- 14. “cast”GL_R8到GL_BGRA
- 15. Cast off_t到int
- 16. Cast char to short
- 17. cast Timespan.Ticks to varchar
- 18. CAST DataGridView错误
- 19. for-each syntax cast
- 20. cast bigint long
- 21. Google Cast和Android
- 22. JPA Cast Exception
- 23. cast Long to BigDecimal
- 24. Postgres的CAST MACADDR
- 25. Foreach cast skip?
- 26. Mysql Postgresql cast
- 27. TSQL - CAST AS PERCENT
- 28. C++ std :: array cast
- 29. Cast Type to Generic
- 30. java:dynamic class cast
铸造将CHAR阵列指针作为指向一个整数的指针,最后的星号将引用整数指针,并将其指向的值留给您。 –