fanzhihao 发表于 2016-3-23 16:09:16

字符运算问题

为什么int a=-1,转换成long int 变成65535?求指教~!

人造人 发表于 2016-3-23 17:04:46

编译环境不同吧

夜雨de街灯 发表于 2016-3-23 17:29:24

如果你的是16位编译器的话
int占2字节,范围为-32768~32767
long int占4字节,范围为-2147483648~2147483647
int强制转换为long int时
int=-1内存的二进制就是long int=65535内存的二进制
{:10_312:}
你去看一下原码 补码 反码 吧

32位编译器
int 和long均占4字节,范围均为-2147483648~2147483647
所以强制转换也不会变
{:10_256:}

人造人 发表于 2016-3-23 20:08:44

夜雨de街灯 发表于 2016-3-23 17:29
如果你的是16位编译器的话
int占2字节,范围为-32768~32767
long int占4字节,范围为-2147483648~2147483 ...

这个怎么解释?

夜雨de街灯 发表于 2016-3-23 23:44:43

人造人 发表于 2016-3-23 20:08
这个怎么解释?

什么怎么解释{:10_312:}


int main()
{

cout<<sizeof(char)<<endl;
cout<<sizeof(short)<<endl;
cout<<sizeof(int)<<endl;
cout<<sizeof(float)<<endl;
cout<<sizeof(long)<<endl;
cout<<sizeof(double)<<endl;

return 0;
}

结果为:
1
2
4
4
4
8
由此看出,32位系统,vc编译器中,
short占 2 字节,
int 、float、long 都占 4 字节,
只有double 占8 字节


你的是32位编译器很正常吧{:10_334:}

人造人 发表于 2016-3-24 17:25:37

夜雨de街灯 发表于 2016-3-23 23:44
什么怎么解释




这个

夜雨de街灯 发表于 2016-3-25 00:12:50

人造人 发表于 2016-3-24 17:25
这个

计算机就是这样解析{:10_256:}

夜雨de街灯 发表于 2016-3-25 00:19:10

人造人 发表于 2016-3-24 17:25
这个

再详细一点就是这样{:10_242:}

人造人 发表于 2016-3-25 18:36:56

夜雨de街灯 发表于 2016-3-25 00:19
再详细一点就是这样

恩,好了
页: [1]
查看完整版本: 字符运算问题