- 论坛徽章:
- 17
|
回复 1# abcbuzhiming
位运算时会进行整型类型提升和常用算术转换:
算术转换规则:
1、如果一个操作数是long double那么另一个操作数也转换为long double
2、否则,如果一个操作数是double那么另一个操作数也转换为double
3、否则,如果一个操作数是float那么另一个操作数也转换为float
4、否则,在两个操作上执行整型类型提升
5、然后,如果一个操作数是unsigned long那么另一个操作数也转换为unsigned long
6、否则,如果一个操作数是long int另一个是unsigned int,如果long int能表示另一个操作数的值那么另一个操作数转换为long int,否则long int转换为unsigned long int。
7、否则,如果一个操作数是long那么另一个操作数也转换为long
7、否则,如果一个操作数是unsigned那么另一个操作数也转换为unsigned
整型类型提升:
1、char, signed char, unsigned char, short int, or unsigned short int类型如果可以就转为int,否则转为unsigned int.
2、wchar_t和枚举类型可以转换为int,unsigned int,long,unsigned long。
2、位域转换为int,如果其值int容不下则转为unsigned int
3、bool转换为int |
|