想问下linux gcc编译和vc6.0编译过程的区别

我用一个while循环通过gcc编译后输出的结果和vc6.0输出的结果不一样.我想知道为什么比如下段代码:#include<stdio.h>intmain(void){i... 我用一个while循环 通过gcc编译后 输出的结果和vc6.0输出的结果不一样.我想知道为什么
比如下段代码:
#include <stdio.h>
int main (void)
{
int n,i,sum;
n=0;
sum=0;

while (i>10){
scanf("%d",&i);
if (i==0)
continue;
sum+=1;
n++;
printf("%d%d%d",n,sum,i);
}
}

比如说我在linux命令行输入13 那么此时n=13
结果
linux平台 :n=1 , sum=0 , i=13
vc平台: n=1, sum=1 , i=13 为什么sum=1??

就算vc采用ms标准库 就算vc和gcc有区别 但算法应该是一样的啊.. 为什么会出现这个情况啊??
说一下 上述代码是c代码..只不过我是想了解一下 调试过程所以在vc++中调试的.
展开
 我来答
帐号已注销
2011-11-23 · TA获得超过9901个赞
知道大有可为答主
回答量:4076
采纳率:0%
帮助的人:3605万
展开全部
二楼四楼都说得很明白了,你这个是 while 循环,即 "当" 型,do...while 是 "直到" 型。while 循环就是不满足就不执行了,而 do...while 则是执行一次完了再判断是否满足以决定是否继续执行。如二楼所说,你的 i 并没有赋初始值,它的值是未确定的,但是却直接用 while(i > 10) 来判断是否进入循环。不同编译器对于未赋值的初始变量处理方式是不一样的。分配一段内存空间,有可能这块内存并没有清零是分配之前的值,也有可能是某一个特定值,比如 0。我自己也测试过分配一个字符串,然后看每个字节的字符,结果是一堆乱七八糟的符号。
百度网友5803c9a
2011-11-23 · TA获得超过2162个赞
知道小有建树答主
回答量:891
采纳率:0%
帮助的人:1239万
展开全部
你的这个程序在linux下是不会出来n=1 , sum=0 , i=13吧
i没有初始化,gcc把它初始化成0,进不去while 循环
vc里它是个很大的随机值,可以进入循环
只要你进入了循环,i又没有输入0,那sum+=1;就会执行,sum的值当然是1了
更多追问追答
追问
老大  我都说了 比如 输入13  有没有认真看啊...
追答
老大,你输入13是在循环里面好不好,有没有认真分析自己的程序啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
free_kernel
2011-11-23
知道答主
回答量:18
采纳率:0%
帮助的人:13.2万
展开全部
i的初值是什么?这么写程序不规范。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-11-23
展开全部
千年
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式