C语言 变量 改变输出结果 溢出

2024-12-14 12:54:58
推荐回答(1个)
回答1:


c,d
定义为长整型(long)时,
在TC下每个变量占4个字节
正确输出时应用%ld格式(取4个字节)输出
若用%d(TC下,取2个字节)时
printf("c=x+a=%d,d=y+b=%d\n",c,d);
c在内在中的低16位(对应值十进制12)传给了第一个%d
c在内在中的高16位(值为0)传给了第二个%d
d的值未用上
所以出现了如你所说的情况.
VC6下正确,是因为VC6下
int

long
同样占4个字节,
%d

%ld
一样取4个字节输出.