gcc vc++6.0-同样代码VC6.0结果正确,GCC编译运行结果不正确,原因是什么呢?谢谢!

问题描述

同样代码VC6.0结果正确,GCC编译运行结果不正确,原因是什么呢?谢谢!

#include

int main()
{
char deno[1000]={''},num,i=0,remain=0;
scanf("%s %d",deno,&num); //获取被除数、除数
if(!num) return (-1);

while(deno[i]!='')
    deno[i++]-='0'; //转换成数字
deno[i]='#';        //结束标志
i=0;
while(deno[i]!='#')
{
    deno[i]+=remain;            //低位+高位余数
    remain=10*(deno[i]%num);    //高位余数
    deno[i]=deno[i]/num+'0';    //商的ASCII码
    i++;
}
deno[i]='';   //串尾
remain/=10;     //最后余数

if(deno[0]=='0'&&deno[1]!='') //高位0不显示
    printf("%s %d",&deno[1],remain);
else
    printf("%s %d",deno,remain);
return 0;

}

VC++6.0下运行结果:



GCC编译后运行结果:

解决方案

(gdb) n
12 4

Breakpoint 1, main (argc=1, argv=0x7fffffffe288) at source.c:7
7 if(!num) return (-1);
(gdb) p deno
$1 = '00'
(gdb) p deno[0]
$2 = 0 '00'
(gdb)

解决方案二:

会不会是gcc大小端的问题?

解决方案三:

我也不知道为什么代码插入进去会这样子 - - 试过几次了 第一次发帖问

解决方案四:

我不想改下去了。在这里你有些概念不清。
这里跟小端大端的数据存储方式没有什么关系。数组本身就是连续存放的单元,不存在什么小端大端的存储问题。

解决方案五:

scanf(“%s %d”,deno,&num);
在这里,你给编译器出了一个难题!%s %d ,在这个输入中%s为字符串,那我问你——空格算不算字符?
vc强大,能替你解决这些问题,用空格来区分两个输入。
gcc个性,直接罢工。你输入的字符串永远不会被读入并存储到字符数组中,字符数组的每一项都是0,结果也就为0了。
所以,取决于你要用哪个!我还是建议你 改改自己的代码,注意编码风格!加上该加的空格!
言尽于此!

时间: 2024-09-14 18:16:19

gcc vc++6.0-同样代码VC6.0结果正确,GCC编译运行结果不正确,原因是什么呢?谢谢!的相关文章

VC项目配置基础 (VC6.0 和VC2005)

一.预处理宏 1. 通用宏 VC6.0 中: Project Setting à C/C++ à Preprocessor definitions VC2005 中: 项目属性 à 配置属性 à C/C++ à 预处理器定义   WIN32 :指明是 Window 32 位系统的编译器,一般用作平台识别. _MBCS/_UNICODE :指明该工程使用的字符集(多字节字符集 /UNICODE ). 在 VC6.0 的 "Project Setting à C/C++ à Project Opti

vc 文件关联-怎样用VC6.0让JPG与GIF图片的文件可以文件关联到我的程序,右键可以选择我的程序打开

问题描述 怎样用VC6.0让JPG与GIF图片的文件可以文件关联到我的程序,右键可以选择我的程序打开 请问一下怎样用VC6.0实现注册表代码让JPG与GIF图片的文件可以文件关联到我的程序,也就是右键可以选择我的程序打开,并且出现在"打开方式"的选择项里 以下是我在网络搜索的txt文件关联的代码,测试后可以用,可是改成JPG与GIF就无法用了,注册表里的项目很多,不知道JPG与GIF的代码怎么写,最好有测试后可以用的全代码发一下啊,我的是XP的系统 关联自己的应用程序到右键菜单中在Wi

枚举法 为什么电脑的vc6.0运行不了,而手机C4droid可以运行呢;j++出错了

问题描述 枚举法 为什么电脑的vc6.0运行不了,而手机C4droid可以运行呢:j++出错了 #includeint main(){ enum body {abcd}day[12]j; int i; for(i=0;i<=11;i++) { day[i]=j; j++; if(j>d) j=a; } for(i=1;i<=12;i++) { switch(day[i-1]) { case a:printf(""%2d %cn""i'a');bre

c语言-C++代码改成C语言代码,没学过C++好多看不懂啊(泪奔······)求大神指点,我用的VC6.0

问题描述 C++代码改成C语言代码,没学过C++好多看不懂啊(泪奔······)求大神指点,我用的VC6.0 代码如下, #include "winsock2.h" #include "Winsnmp.h" #include 这里是string以下都要用 < 和 > 括起来(不知为何不显示=,=) #include vector #include algorithm #include iostream #pragma comment(lib,"

vc60-问各位一下,VC6.0会因为代码执行的时间过长,而终止运行

问题描述 问各位一下,VC6.0会因为代码执行的时间过长,而终止运行 如下程序: #include #include struct PolyNode { float coef; int exp; PolyNode * next; }; //template class PolyLinkList { public: PolyLinkList(float a[],int n=0); ~PolyLinkList(); void ShowList(); void PolyAdd(PolyLinkList

vc6 0-再用VC6.0写代码的时候怎样让编辑窗口不要最大化

问题描述 再用VC6.0写代码的时候怎样让编辑窗口不要最大化 我想多打开几个头文件或者cpp文件,但是窗口都是最大化的,一次只能显示一个文件,想要点开另一个很麻烦,求问怎样才能让现在最大化的编辑窗口可以改变大小,并且再右上角出现最大化最小化和关闭的按钮 解决方案 选择windows--->Casecade 即可解决

vc++-VC6.0 microsoft基础类应用已停止工作

问题描述 VC6.0 microsoft基础类应用已停止工作 程序点击关闭后,就弹出这个提示,怎么解决呀,求帮忙!! 解决方案 0xC0000005, 指针越界了. 你用编译器断开,查看一下出错时的callstack.回溯到你的代码函数等. 解决方案二: vc6.0 关于"microsoft 基础类应用程序 已停止工作" 解决方案 解决方案三: 解决方案四: 反编译 解决方案五: 解决方案六: 没遇到过,之前怎么操作的 啊 解决方案七: 什么都没改,过了一天自己好了....

VC6.0编译建立好的程序,没办法调试,一调试就成汇编,点击变成代码形式就没执行的箭头了。

问题描述 VC6.0编译建立好的程序,没办法调试,一调试就成汇编,点击变成代码形式就没执行的箭头了. VC6.0编译建立好的程序,没办法调试,一调试就成汇编,点击变成代码形式就没执行的箭头了.用OD打开EXE,程序的开始,可以看到有垃圾代码···· 解决方案 其实是读到MFC的系统调用的代码 解决方案二: 你自己的程序代码可以调试,但是mfc代码就可能只有汇编了

vc6-初学者提问,为什么这段代码在VC6.0上会报错

问题描述 初学者提问,为什么这段代码在VC6.0上会报错 #include #include main() {int s; float n , t , pi; t = 1.0; pi = 0; n = 1.0; s = 1; while( fabs(t) >= 1e - 6) { pi = pi + t; n += 2.0; s = -s; t = s/n; } pi = pi*4; printf("pi = %fn", pi) } 就是这段代码,我个人看也觉得没什么错误,可就是