Win10用DEV-C++纯C编写运行结果没出错但结果不对

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Win10用DEV-C++纯C编写运行结果没出错但结果不对相关的知识,希望对你有一定的参考价值。

是哪里有问题??

参考技术A 代码有问题,能通过编译,但运行就会有问题。。
问题出现在scanf("%d",x);少了取地址符&
请改成scanf("%d",&x);追问

谢谢~!主要问题这个简单的代码运行的结果不应该是:

输入两个整数。

整数1:31

整数2:47

它们的和是78

这样的吗?可是请你看下截图,用了两个整数运行

参考技术B 是这样的,printf输出的东西不能被读入。
改成:
printf("整数1:");scanf("%d",&n1);
printf("整数2:");scanf("%d",&n2);
运行的时候自己在控制台输入 31 44
还有,最后一句printf改成:printf("他们的和是%d",n1+n2);本回答被提问者采纳
参考技术C 你这个没写计算式,怎么输出和?最后的printf还缺参数了,至少在最后的printf里加上,n1+n2,另外scanf是读取键盘输入的值,不是读取printf里的值。追问

谢谢~!主要问题这个简单的代码运行的结果不应该是:

输入两个整数。

整数1:31

整数2:47

它们的和是78

这样的吗?可是请你看下截图,用了两个整数运行就

追答

不是,进行到scanf时,相当于暂停一下,直到你输入一个数字才会继续执行,前两个printf不用写要相加的数字

比如31,47这些应该是你通过键盘输入的

参考技术D printf("它们的和是%d。\n", n1+n2);追问

大神~~谢谢!

第5个回答  2019-07-10 肖朗、邱丽莉鹦鹉奇缘

C语言++符号的问题!vc++6.0和Dev-C++运行结果不一致!

#include<stdio.h>
int main(void)

int num=1;
while(num++<=2)
printf("%d",num);
getchar();
return 0;

VC里边是34,Dev-C里边是23。
我主要想知道那个++,出循环之后还加不加1了?++是判断条件,那它到底是不是属于循环的呢?!!!
to arongustc:
不好意思说错了,C primer plus里面关于后缀++的解释得到的也应该是3

原文: while(shoes++<18.5)这个表达式将达到19,因为shoe将在比较之后而不是之前增加
只到19。。。

自增符 i++
你的程序里,while里面的表达式可以用括号写出来,更明确一点。
while((num++)<=2)
注意:这里的num是变量。当num自增之后,值会发生变化。也就是说num++的值会发生变化。
标准C里面的这样的。
int num=1;
num++;//相当于num=num+1;
也就是说,运算之前的值num是1.运算之后的num值是2.
所以num++也是一个变量,所以你的问题也很明确了。一个变量的值和2做比较。显然是一个判断表达式。
至于不同编译器中为什么结果不同,具体情况是这样的,由于自增符在不同的编译器中是不同的表现方式。但是通用的编译器,还是按照++符号和变量的位置来判断的。(需要在熟悉编译器的情况下或者在汇编中查看代码。使用debug模式。)
下面说通常情况
例如
int i=0;时
++i和i++。的情况分别是:
++i 这时候,++在i的左边,就先自增,在赋值。也就是说。运算之前i的值是1,赋值之后的值是1.
i++ 则不同,++在i的右边,则先赋值,再自增。也就是说。运算之前i的值是0,赋值之后的值是1.
参考技术A 后缀++,也就是postfix ++,表达式的值就是num的值,但是num会++。
++当然属于循环,因为是出现while的条件表达式中,而条件表达式会在每次循环时求值,直到false为止。这里很显然,Dev-C++的输出是正确的。

VC6相对来说比较老,对标准的支持不是很好,建议使用vc2003以上的版本。

在vc2010中,得出与Dev-C中相同的结果。

楼主可以参考c++标准的文档中的6.5和6.4。追问

嗯,C primer plus里面关于后缀++的解释得到的也应该是3

原文: while(shoes++<18.5)这个表达式将达到19,因为shoe将在比较之后而不是之前增加
只到19。。。

那C等级考试用的什么标准?笔试也是和VC++6.0标准一样吗?那岂不是答案有歧义?

追答

等级考试的我就不清楚了,如果考试用vc6来验证结果,那我只能说遗憾。不用太在意这种考试的结果,因为没多大意义,只要自己心里明白就行。

参考技术B 找到这个问题的答案,还不如不写这种带歧异的表达式,估计这个根本在标准里没有定义追问

这是我们老师上课举例的一个问题,他给的答案是num最后是4,C primer plus里面关于后缀++的解释得到的也应该是4,而且里面并没有说这是不明确的定义,只有一个表达式里面有两个++才可能导致不同环境或编译器的差别把,比如y=n++ + n++;

现在我的问题就是到底怎么解释这个差异?两个编译器运行结果不一样?虽然我觉得前者应该是对的

追答

问题是它不一定解释得清楚,如果标准没有规定,它得值完全依赖编译器,根本没有道理可讲

参考技术C 百度一下 傻蛋

以上是关于Win10用DEV-C++纯C编写运行结果没出错但结果不对的主要内容,如果未能解决你的问题,请参考以下文章

DEV-C++中编写了一段C程序,其中设置了用文件进行输入输出。

Dev-C++ 5.11中文版软件下载和安装教程|兼容WIN10

Dev-C++ 5.11中文版软件下载和安装教程|兼容WIN10

C语言++符号的问题!vc++6.0和Dev-C++运行结果不一致!

DEV-C++中c语言的文件编译的时候自动生成makefile.win文件而且编译报错。

win10.10 激活