为什么输出时c=16,d=0?
初学者,见谅
#include<stdio.h>
int main()
{
long i=10,j=9;
int a=6,b=7;
printf("c=i+a=%d d=j+b=%d",i+a,j+b);
return 0;
} c 输出结果 类型
[解决办法]
不好意思,上面把大小端弄反了!
Turbo C++, 是16位的吧,这个就容易解释了, 由于int是16位,long是32位
看看栈的情况就知道了!
printf("c=i+a=%d d=j+b=%d",i+a,j+b);
[解决办法]
------
[解决办法]
-----栈顶
c(int )---
[解决办法]
0x0010
[解决办法]
--
[解决办法]
------
[解决办法]
[解决办法]
-- i + a = 16 (long)
d(int )---
[解决办法]
0x0000
[解决办法]
--
[解决办法]
------
[解决办法]
[解决办法]
0x0010
[解决办法]
--
[解决办法]
------
[解决办法]
[解决办法]
-- j + b = 16 (long)
[解决办法]
0x0000
[解决办法]
--
[解决办法]
------
[解决办法]
printf("c=i+a=%ld d=j+b=%ld",i+a,j+b);
[解决办法]
------
[解决办法]
-----栈顶
--
[解决办法]
0x0010
[解决办法]
--
c(long)-
------解决方案--------------------
[解决办法]
------
[解决办法]
[解决办法]
-- i + a = 16 (long)
--
[解决办法]
0x0000
[解决办法]
--
[解决办法]
------
[解决办法]
--
[解决办法]
0x0010
[解决办法]
--
d(long)-
[解决办法]
[解决办法]
------
[解决办法]
[解决办法]
-- j + b = 16 (long)
--
[解决办法]
0x0000
[解决办法]
--
[解决办法]
------
[解决办法]