如默 发表于 2020-3-3 10:02:52

求问同一段代码,为什么结果不一样

本帖最后由 如默 于 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);
}

输出结果是这样的:


有没有大神给解答一下!!!!!

qiuyouzhi 发表于 2020-3-3 10:03:47

不同的编译器有不同的结果

一个账号 发表于 2020-3-3 10:05:03

代码乱了

如默 发表于 2020-3-3 10:07:38

一个账号 发表于 2020-3-3 10:05
代码乱了

改好了,微信上复制过来之后有空格

如默 发表于 2020-3-3 10:08:11

我觉得应该是pow只能用浮点数的问题

qiuyouzhi 发表于 2020-3-3 10:20:12

如默 发表于 2020-3-3 10:08
我觉得应该是pow只能用浮点数的问题

可以定义一个double类型的变量,然后把pow的值放进去

一个账号 发表于 2020-3-3 10:23:23

如默 发表于 2020-3-3 10:07
改好了,微信上复制过来之后有空格

我觉得应该是不同编译器的结果不同

乘号 发表于 2020-3-3 13:13:59

应该是编译器不同

major_lyu 发表于 2020-3-3 13:29:05

本帖最后由 major_lyu 于 2020-3-3 13:41 编辑

我直接用mingw的gcc编译的结果是对的



而且,我vscode也用的这个编译器啊,结果一样的。

你vscode用的啥编译器?mingw?

珂乔乔 发表于 2020-3-3 17:21:24

我也觉得应该是不同编译器的结果不同

人造人 发表于 2020-3-3 18:27:27

我看到了 g++,把后缀改成 .c,用gcc试试

xhiddsasbmxi 发表于 2020-3-3 21:27:04

代码乱了

如默 发表于 2020-3-4 14:14:02

major_lyu 发表于 2020-3-3 13:29
我直接用mingw的gcc编译的结果是对的




用的就是这个编译器,我弄明白了,是pow函数的问题,pow函数的参数是浮点数

如默 发表于 2020-3-4 14:15:44

人造人 发表于 2020-3-3 18:27
我看到了 g++,把后缀改成 .c,用gcc试试

跟这个没关系

人造人 发表于 2020-3-4 14:21:18

如默 发表于 2020-3-4 14:15
跟这个没关系

看一下出问题的那个 g++ 的版本,g++ --version
还有,贴一下出问题的那个代码的反汇编代码

TCY 发表于 2020-3-4 15:55:47

不同的编译器,标准库定义也不一样

Oir88888 发表于 2020-3-4 19:38:07

学习围观{:5_109:}

wuqramy 发表于 2020-3-6 10:09:58

程序是干什么的

墨羽岚 发表于 2020-3-7 16:53:45

不同编译器对应的某些参数是不一样的{:10_260:}

X用户 发表于 2020-3-10 14:30:24

double类型?
页: [1] 2
查看完整版本: 求问同一段代码,为什么结果不一样