关于C++的一些基础有关问题

关于C++的一些基础问题。1.关于数值溢出的问题C++里面规定当数值发生溢出时,计算机会将结果一其补码表示出

关于C++的一些基础问题。
1.关于数值溢出的问题
C++里面规定当数值发生溢出时,计算机会将结果一其补码表示出来。
但是,这个是不是只是一种情况呢?
因为,我发现当结果所占的字节数没有超过其数据类型的时候,结果会按照上述规定显示。
然而,如果结果所占的字节数超过其数据类型时,结果是直接把超出部分舍弃,结果是留下的数的十进制数。
#include <iostream>
using namespace std;
void main()
{
short int i=20000,j=30000,k;
cout<<(k=i+j)<<endl;
short q=1000,p;
cout<<(p=q*q)<<endl;
}
这个里面上一个的结果是-15536,而下面的结果是16960。是不是数值溢出有不同的输出方案?
2,再一个问题。
VC++6.0的环境和VS08的是不是还是有区别?我是指在C++开发里面。
比如,我在VC6.0里面
#include <iostream>
using namespace std;
void main()
{
int a=1,b=2,c=3,d;
cout<<a==b<<endl;
cout<<a!=b<<endl;
cout<<a>=b<<endl;
cout<<a<b<<endl;
d=a>b==c>a+5;
cout<<d<<endl;
}会按照逻辑运算输出结果。
而在VS08里面,根本就无法编译成功。这是怎么回事呢?如果我在VS08里面想要按照逻辑输出结果又应该怎么修改?
望各位高手详细解答。我在此先行谢过。

[解决办法]
1. “然而,如果结果所占的字节数超过其数据类型时,结果是直接把超出部分舍弃”
 --- 你理解的对
2. 不同的开发环境当然是有些区别的,你可以查看编译不成功时的提示。