读书人

为啥输出时c=16,d=0

发布时间: 2013-03-04 17:22:12 作者: rapoo

为什么输出时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
[解决办法]
--

[解决办法]
------
[解决办法]

读书人网 >C语言

热点推荐