[英]How does casting a type in a function call work?
假設我有類似以下的內容來調用 C 中的 function:
void test1(void) {
int a=7;
function((short) a);
}
編譯器是否將此(幾乎)視為創建臨時變量並將其傳遞給 function,例如:
void test1(void) {
int a=7;
short tmp_a=(short) a;
function(tmp_a);
}
或者演員們有什么不同的地方嗎?至少在概念層面上?
強制轉換只是運算符,如乘法或移位。 當 function 參數是一個表達式時,它像任何其他表達式一樣被計算。 所以function((short) a);
相當於:
short tmp_a = (short) a;
function(tmp_a);
與function(a*a);
相當於:
int tmp_a = a*a;
function(tmp_a);
請注意,function 調用中還涉及隱式轉換。 如果 function 有原型,則 arguments 被轉換為參數的聲明類型。 如果沒有原型,或者參數對應於原型的...
部分,則執行一些默認參數提升。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.