C语言表达式与类型转换详解
1. 操作数类型转换规则
在进行运算时,操作数的类型转换遵循以下规则:
- 若一个操作数为 long int ,另一个为 unsigned int ,其转换效果取决于 long int 能否表示 unsigned int 的所有值。若可以, unsigned int 操作数转换为 long int ;若不行,两者都转换为 unsigned long int 。
- 若一个操作数为 long int ,另一个操作数转换为 long int 。
- 若任一操作数为 unsigned int ,另一个操作数转换为 unsigned int 。
- 若以上情况都不满足,两个操作数都为 int 类型。
这里有两个变化:一是对 float 操作数的算术运算可以采用单精度,而非之前规定的双精度;二是较短的无符号类型与较大的有符号类型结合时,无符号属性不会传播到结果类型,之前无符号类型总是占主导。新规则虽稍复杂,但减少了无符号量与有符号量运算时可能出现的意外情况,不过在比较相同大小的无符号表达式和有符号表达式时仍可能出现意外结果。
2. 指针与整数的运算及转换
- 指针与整数的加减运算
超级会员免费看
订阅专栏 解锁全文
2141

被折叠的 条评论
为什么被折叠?



