GCC警告說,這種代碼:爲什麼在unsigned char之間添加隱式轉換?
unsigned char i = 1;
unsigned char j = 2;
i += j;
說:
warning: conversion to 'unsigned char' from 'int' may alter its value [-Wconversion]
i += j;
^
似乎j
被隱式轉換爲int
。
爲何添加相同類型的變量會發生隱式轉換?
這就是C的工作原理。針對效率的歷史原因,存在對字符大小有符號整數的隱式轉換。 –
正確的術語是_implicit conversion_。 Cast意味着程序員使用了一個運算符'(type)',所以它總是顯式的。演員陣容將強制進行轉換,但轉換也可能發生在沒有演員陣容的情況下。 – Lundin
@Lundin固定。謝謝。 –