为啥输出时c=16,d=0
为什么输出时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;
}
------解决方案--------------------
不好意思,上面把大小端弄反了!
Turbo C++, 是16位的吧,这个就容易解释了, 由于int是16位,long是32位
看看栈的情况就知道了!
初学者,见谅
#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)-
------解决方案--------------------