Win10用DEV-C++纯C编写运行结果没出错但结果不对
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Win10用DEV-C++纯C编写运行结果没出错但结果不对相关的知识,希望对你有一定的参考价值。
是哪里有问题??
参考技术A 代码有问题,能通过编译,但运行就会有问题。。问题出现在scanf("%d",x);少了取地址符&
请改成scanf("%d",&x);追问
谢谢~!主要问题这个简单的代码运行的结果不应该是:
输入两个整数。
整数1:31
整数2:47
它们的和是78
这样的吗?可是请你看下截图,用了两个整数运行
改成:
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。。。
你的程序里,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++运行结果不一致!