求问同一段代码,为什么结果不一样
本帖最后由 如默 于 2020-3-3 10:07 编辑源码:
#include <math.h>
#include <stdio.h>
int main() {
int number;
printf("Input x:\n");
scanf("%d", &number);
number = abs(number);
int a = number / 1000;
int b = (number / 100) % 10;
int c = (number / 10) % 10;
int d = number % 10;
number = d * 1000 + c * 100 + b * 10 + a;
printf("y=%d\n", number);
printf("a=%d,b=%d\n", number / 100, number % 100);
a = pow((number / 100), 2);
b = pow((number % 100), 2);
printf("result=%d\n", a + b);
return 0;
}
在VS code上运行结果是这样的:
在codeblocks上运行结果是这样的:
在菜鸟上运行结果是这样的:
想问一下到底是什么情况,输入-1234,正确结果应该是2290
我觉得是pow函数的问题,再上一个测试代码
#include <math.h>
#include <stdio.h>
int main() {
int a = 21, b = 21;
a = pow(a, 2);
b = b * b;
printf("%d\n", a);
printf("%d\n", b);
}
输出结果是这样的:
有没有大神给解答一下!!!!! 不同的编译器有不同的结果 代码乱了 一个账号 发表于 2020-3-3 10:05
代码乱了
改好了,微信上复制过来之后有空格 我觉得应该是pow只能用浮点数的问题 如默 发表于 2020-3-3 10:08
我觉得应该是pow只能用浮点数的问题
可以定义一个double类型的变量,然后把pow的值放进去 如默 发表于 2020-3-3 10:07
改好了,微信上复制过来之后有空格
我觉得应该是不同编译器的结果不同 应该是编译器不同 本帖最后由 major_lyu 于 2020-3-3 13:41 编辑
我直接用mingw的gcc编译的结果是对的
而且,我vscode也用的这个编译器啊,结果一样的。
你vscode用的啥编译器?mingw? 我也觉得应该是不同编译器的结果不同 我看到了 g++,把后缀改成 .c,用gcc试试 代码乱了 major_lyu 发表于 2020-3-3 13:29
我直接用mingw的gcc编译的结果是对的
用的就是这个编译器,我弄明白了,是pow函数的问题,pow函数的参数是浮点数 人造人 发表于 2020-3-3 18:27
我看到了 g++,把后缀改成 .c,用gcc试试
跟这个没关系 如默 发表于 2020-3-4 14:15
跟这个没关系
看一下出问题的那个 g++ 的版本,g++ --version
还有,贴一下出问题的那个代码的反汇编代码
不同的编译器,标准库定义也不一样 学习围观{:5_109:} 程序是干什么的 不同编译器对应的某些参数是不一样的{:10_260:} double类型?
页:
[1]
2