【发布时间】:2017-08-04 16:17:51
【问题描述】:
GCC 警告此代码:
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 的工作原理。由于历史原因以效率为目标,存在对字长有符号整数的隐式转换。
-
正确的说法是隐式转换。 Cast 表示程序员使用了运算符
(type),因此它始终是显式的。强制转换会强制转换,但在没有转换时也会发生转换。 -
@Lundin 已修复。谢谢。
标签: c integer-promotion compound-assignment