望c++ primer几点类型求解
看c++ primer几点类型求解书中是这样说的编译器必须调整越界值使其满足条件,编译器会将改值对unsigned类型
看c++ primer几点类型求解
书中是这样说的
编译器必须调整越界值使其满足条件,编译器会将改值对unsigned类型的可能取值求模,然胡求其所值,比如8位的unsigned char 取值从0到255如果赋值超出这个范围,那么编译器会取改值对256求模,实际是336-256=80,也就是80
实在没明白这里,我按照理解,书写一下代码
#include<iostream>
using namespace std;
int main(){
unsigned char i="336";
cout<<i<<endl;
}
输出结果为p,这是怎么回事,求指点啊。
还有下面的一段求解释
如果在某机器上 short 类型占 16 位,那么可以赋给
short 类型的最大数是什么?unsigned short 类型的最
大数又是什么?
当给 16 位的 unsigned short 对象赋值 100 000 时,
赋的值是什么?
真心不懂 原来搞php 现在学c++一头雾水,谢谢大家指点。。。
[解决办法]
你要是 0xFFFF都不怎么明白的话,我在帖子里面也说不清啊,书上也有几页吧。
去搜索16进制和十进制的转换,二进制和16进制的转换吧。
100000 % 65536 就是取模。
[解决办法]short算16位的话,那么对于unsigned short最大就是1111 1111 1111 1111(16位应该懂的吧),十六进制就是0xFFFF
对于有符号的就是0111 111 111 111,最高位是符号位,正数最大就是这个了,十六进制就是0x7FFF
100000 % 65536就是取膜,可以简单认为是取余数。比如100000 % 65536 = 100000 - 65536=34464
200000 % 65536 = 100000 - 3*65536=3392