簡體   English   中英

MISRA-C:強制轉換文字數字

[英]MISRA-C: cast literal number

我閱讀了源代碼,其中有一條語句:uint32 XYZ; ... XYZ =(uint32)0x0000000U。

我想知道是否需要強制轉換,XYZ = 0U是否可以?

謝謝

理論上,整數常數0U可以是64位的無符號整數。 如果是這樣,由於MISRA-C(2012 10.3)不允許隱式轉換為較窄的類型,因此必須進行強制轉換。 但是,在32位及以下的CPU上不需要強制轉換。

另一種方法是寫uint32_t XYZ = UINT32_C(0); 在這種情況下,編譯器會自動為整數常量選擇適當的類型。

暫無
暫無

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

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