#include<stdio.h>int main(void){ printf("%lu\n",21);
system("pause");
}输出结果是4292542461.这个值应该是系统所能使用的一个最大的值.有两个问题想请教:1.为什么会是这个结果?2.%lu两个参数的顺序对程序有什么影响?
输出是21阿
我又证实了一下,还是那个结果.不知道跟编译器有没关系?
要深入分析理解```比较困难```我是不能帮你的```你现在是初学吗``这个问题`先留下吧````以后有机会再说```现在继续学下去```
在tc下
1. %lu 应该是按 无符号长整型输出
2. 4292542461不是系统中 unsigned long 所能表达的最大值
3. 在调用printf 的时候 会将21 压入栈,那么在栈中某个地址会有以int型解释值为21的连续2个字节
printf函数运行中,在输出字符串的时候碰到 %lu 会将刚才压入栈的 21 (占2个字节), 还有之后高地址的两个字 节,
这样是一共连续4个字节的内容 以lu 无符号长整型格式输出,因为高地址的2个字节内容是随机的,所以输出的值会不是21.
21被编译器默认为 int型 你在常量21后加上L就不会这样了把.