簡體   English   中英

在 function 調用中轉換類型如何工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM