簡體   English   中英

在進行輔助操作時,將類型轉換為比實際更長的數據類型時,c中的類型轉換的行為

[英]How typecasting in c behave when typecast it to longer data type than actual while doing assigenment operation

這里tv_sec是4字節長,但是正在將其類型轉換為8字節變量。 變量“ t”可能在8個字節中有一些垃圾值。 該值將如何填充剩余的4個字節。

{ 
    long long t;
    gettimeofday(&tv,NULL);
    t = (long long)(tv.tv_sec) * 1000 ;
    // Some Operation  
}

根據C標准:6.3.1.3(強調型):

將具有整數類型的值轉換為_Bool以外的其他整數類型時,如果該值可以由新類型表示,則該值不變

tv_sec的類型是否為整數類型? 是。

tv_sec的類型為time_t 但是,C標准未指定time_t in的基礎類型。 在符合POSIX的系統中, time_t表示秒數,通常以帶signed integer

強制轉換會導致轉化。 轉換數字類型時,如果新類型可以表示舊類型中的值,則結果將是該值,且保持不變。

因此,當轉換為較寬的數字類型時,C實現會產生需要任何位來表示輸入值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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