[問題] 解析順序問題

作者: 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