鱼C论坛

 找回密码
 立即注册
查看: 1534|回复: 22

[已解决]求问同一段代码,为什么结果不一样

[复制链接]
回帖奖励 30 鱼币 回复本帖可获得 10 鱼币奖励! 每人限 1 次(中奖概率 10%)
发表于 2020-3-3 10:02:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 如默 于 2020-3-3 10:07 编辑

源码:
  1. #include <math.h>
  2. #include <stdio.h>

  3. int main() {
  4.     int number;
  5.     printf("Input x:\n");
  6.     scanf("%d", &number);
  7.     number = abs(number);
  8.     int a = number / 1000;
  9.     int b = (number / 100) % 10;
  10.     int c = (number / 10) % 10;
  11.     int d = number % 10;
  12.     number = d * 1000 + c * 100 + b * 10 + a;
  13.     printf("y=%d\n", number);
  14.     printf("a=%d,b=%d\n", number / 100, number % 100);
  15.     a = pow((number / 100), 2);
  16.     b = pow((number % 100), 2);
  17.     printf("result=%d\n", a + b);
  18.     return 0;
  19. }
复制代码


在VS code上运行结果是这样的:
1.png

在codeblocks上运行结果是这样的:
2.png

在菜鸟上运行结果是这样的:
3.png

想问一下到底是什么情况,输入-1234,正确结果应该是2290

我觉得是pow函数的问题,再上一个测试代码
  1. #include <math.h>
  2. #include <stdio.h>

  3. int main() {
  4.     int a = 21, b = 21;
  5.     a = pow(a, 2);
  6.     b = b * b;
  7.     printf("%d\n", a);
  8.     printf("%d\n", b);
  9. }
复制代码


输出结果是这样的:
4.png

有没有大神给解答一下!!!!!
最佳答案
2020-3-10 14:30:24
double类型?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-3 10:03:47 | 显示全部楼层
不同的编译器有不同的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 10:05:03 | 显示全部楼层
代码乱了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 10:07:38 | 显示全部楼层

改好了,微信上复制过来之后有空格
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 10:08:11 | 显示全部楼层
我觉得应该是pow只能用浮点数的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 10:20:12 | 显示全部楼层
如默 发表于 2020-3-3 10:08
我觉得应该是pow只能用浮点数的问题

可以定义一个double类型的变量,然后把pow的值放进去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 10:23:23 | 显示全部楼层

回帖奖励 +10 鱼币

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

我觉得应该是不同编译器的结果不同
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 13:13:59 | 显示全部楼层
应该是编译器不同
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 13:29:05 | 显示全部楼层
本帖最后由 major_lyu 于 2020-3-3 13:41 编辑

我直接用mingw的gcc编译的结果是对的
微信截图_20200303132757.png

微信截图_20200303132757.png
而且,我vscode也用的这个编译器啊,结果一样的。

你vscode用的啥编译器?mingw?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 17:21:24 | 显示全部楼层
我也觉得应该是不同编译器的结果不同
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 18:27:27 | 显示全部楼层
我看到了 g++,把后缀改成 .c,用gcc试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 21:27:04 | 显示全部楼层
代码乱了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-4 14:14:02 | 显示全部楼层
major_lyu 发表于 2020-3-3 13:29
我直接用mingw的gcc编译的结果是对的

用的就是这个编译器,我弄明白了,是pow函数的问题,pow函数的参数是浮点数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-4 14:15:44 | 显示全部楼层
人造人 发表于 2020-3-3 18:27
我看到了 g++,把后缀改成 .c,用gcc试试

跟这个没关系
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 14:21:18 | 显示全部楼层

看一下出问题的那个 g++ 的版本,g++ --version
还有,贴一下出问题的那个代码的反汇编代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 15:55:47 | 显示全部楼层
不同的编译器,标准库定义也不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 19:38:07 | 显示全部楼层
学习围观
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-6 10:09:58 | 显示全部楼层

回帖奖励 +10 鱼币

程序是干什么的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-7 16:53:45 | 显示全部楼层
不同编译器对应的某些参数是不一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-10 14:30:24 | 显示全部楼层    本楼为最佳答案   
double类型?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-3 03:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表