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固定。谢谢。 –