一样的程序,不一样的结果

来源:百度知道 编辑:UC知道 时间:2024/05/31 13:37:29
#include<stdio.h>
#include<stdlib.h>
int main (void)
{
int ten =10;
int two =2;
printf("Doing it right:");
printf("%d minus %d is %d\n", ten, 2, ten-two);
printf("Doing it wrong:");
printf("%d minus %d is %d\n", ten);
system("pause");
}

我的结果是:
Doing it right:10 minus 2 is 8
Doing it wrong:10 minus 2 is 8

书上的正确结果是:
Doing it right:10 minus 2 is 8
Doing it wrong:10 minus 10 is 2

我对过了,没有什么不一样,唯一不一样的就是,我看的书是C(C Prinmer Plus),而我用的编绎器是Dev-c++
这个我知道,就是少了两个参数,书,就是少了两个参数,所以才错的,

这个可能是不同编译环境语法多少有些差异。
我在机上试过了。大概是这么个意思

当printf里数不够的话,自动覆盖上面的数,不够的用其后面的来填
所以你用10的时候,他会把第一个数覆盖, 后面两个照抄。
我试了一下
printf("%d minus %d is %d\n", 1);
1 2 8
printf("%d minus %d is %d\n", 1,3);
1 3 8

printf("%d minus %d is %d\n", ten);

这句是错的,少两个参数
====================================
少了两个参数这句话就是错的,输出的结果是不确定的,是内存中的一个废值.一般是-32534256...这种数字.
尽信书不如无书.