[问题] 解析顺序问题

楼主: pujols05 (qq)   2014-06-16 17:52:46
请问第三行的(int*)是什么意思?(int*)和(vptr)的顺序是?
int var = 10;
void *vptr = &var ;
int *iptr = (int*)(vptr);
作者: IhateOGC (我讨厌)   2014-06-16 18:45:00
printf("0x%x\n",vptr);printf("0x%x\n",ptr);int *vptr; vptr = &var; google: pointer
作者: CaptainH (Cannon)   2014-06-16 18:54:00
意思是把 vptr 从 void* 强制转型成 int*
楼主: pujols05 (qq)   2014-06-16 20:38:00
请问()这个是一定要加的吗?
作者: LPH66 (-6.2598534e+18f)   2014-06-16 20:43:00
哪一个()? C 是规定第一个要加, 第二个没什么疑义的话可免C++ 则是加任一个即可, 但只加后面的严格说来并不是转型运算也就是说如果真的想表达转型的话就是第一个()加上去就对了第二个 () 纯粹只是用来表示谁拿来转型
作者: steve1012 (steve)   2014-06-16 21:50:00
C++ 用static_cast<>会不会比较好呢
作者: diabloevagto (wi)   2014-06-16 22:52:00
static_cast 跟 c 语法的强制转形是一样的,不检查的
作者: littleshan (我要加入剑道社!)   2014-06-16 23:03:00
static_cast绝不等于C式转型,他会在compile time检查
作者: Killercat (杀人猫™)   2014-06-16 23:17:00
这其实是一个很典型的“拿void*去装任何东西”的写法C就算了 C++请完全避免这种行为另外C式转型 像是这个 其实很大一部份都是reinterpretreinterpret_cast就是“完全不检查”的转法 请绝对避免在C++里面出现这种行为
作者: azureblaze (AzureBlaze)   2014-06-16 23:29:00
lib用void* userdata附加lib不需要知道的资料很正常吧
作者: diabloevagto (wi)   2014-06-17 02:29:00
请问static_cast 在 compiler 检查什么?
作者: LPH66 (-6.2598534e+18f)   2014-06-17 08:46:00
检查多形之类的吧, C++ 要检查的东西可多了
作者: Jockey66666 (往事已成追忆)   2014-06-17 10:18:00
多型是run-time的事情 static_cast无法检查..static_cast不能在指标与非指标间转换ex: int to int*比较常遇到不能转的例子还有const和non-const
作者: azureblaze (AzureBlaze)   2014-06-17 10:28:00
staic_cast会把完全不合理的转换挡掉像是完全不相干的两个class指标
作者: Jockey66666 (往事已成追忆)   2014-06-17 10:37:00
完全不相干的两个class没有方法直接转吧 用()也一样..基本型别例外
作者: azureblaze (AzureBlaze)   2014-06-17 10:59:00
http://ideone.com/m4LQMJ 可reinterpret_castC Style Cast的含意太多了所以c++才把他分开
作者: Jockey66666 (往事已成追忆)   2014-06-17 11:01:00
我误解了你的意思 sry
作者: Killercat (杀人猫™)   2014-06-17 11:06:00
C很常见是因为无奈 xd C++除了塞thread资料以及相容旧C Libs以外 实在没有什么理由去塞void*况且现在有std::thread了 更该避免这种行为我是认为 在仅使用四大转型的前提下,只要用到dynamic就代表这code设计有改进空间 用到const cast代表这code需要严格再检视 至于出现reinterpret...大概八成是哪里作错了才需要这样转
楼主: pujols05 (qq)   2014-06-18 17:08:00
所以是因为强制转型的关系int* 要变成(int *)这个意思吗?
作者: LPH66 (-6.2598534e+18f)   2014-06-19 01:41:00
强制转型的语法就是型别括起来放前面

Links booklink

Contact Us: admin [ a t ] ucptt.com